|
68304
|
1545
|
19
|
2026-04-21T16:52:33.927656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776790353927_m2.jpg...
|
PhpStorm
|
faVsco.js – console [PROD]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
8
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\Crm;
use Exception;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Connection;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Jobs\Job;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Repositories\ActivityRepository;
use Jiminny\Services\Crm\CrmActivityService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Throwable;
class MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use SerializesModels;
public int $tries = 3;
private int $activityId;
private ?Configuration $fromConfiguration;
private bool $remoteSearch;
public function __construct(
int $activityId,
?Configuration $fromConfiguration = null,
bool $remoteSearch = false,
) {
$this->activityId = $activityId;
$this->fromConfiguration = $fromConfiguration;
$this->remoteSearch = $remoteSearch;
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
$configId = $this->fromConfiguration?->getId() ?? 0;
$remote = $this->remoteSearch ? 'remote' : 'local';
return "$this->activityId:$configId:$remote";
}
public function timeout(): int
{
return 300; // 5 minutes max execution time
}
public function uniqueFor(): int
{
return $this->timeout() + 60; // timeout + 1 minute buffer
}
public function backoff(): array
{
return [30, 90, 180];
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws Exception|Throwable
*/
public function handle(
ActivityRepository $activityRepository,
CrmActivityService $crmActivityService,
Connection $connection,
): void {
$activity = $activityRepository->findById($this->activityId);
if ($activity === null) {
throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');
}
try {
$connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {
Log::info('[MatchActivityCrmData] Starting CRM data matching', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'set_configuration' => $this->fromConfiguration?->getId(),
'old_state' => [
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
],
]);
$this->resetCrmMappings($activity, $activityRepository);
$this->switchCrmConfigurationIfNeeded($activity);
$activity->refresh();
$crmActivityService->updateCrmData(
activity: $activity,
remoteSearch: $this->remoteSearch,
);
$hasMatch = $activity->getLead() !== null
|| $activity->getContact() !== null
|| $activity->getAccount() !== null
|| $activity->getOpportunity() !== null;
if ($hasMatch) {
Log::info('[MatchActivityCrmData] Successfully matched CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
]);
} else {
Log::info('[MatchActivityCrmData] No CRM match found', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
]);
}
});
} catch (Throwable $e) {
Log::error('[MatchActivityCrmData] Failed to match CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
throw $e;
}
}
public function failed(Throwable $exception): void
{
Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'from_configuration' => $this->fromConfiguration?->getId(),
'exception' => $exception->getMessage(),
'attempts' => $this->attempts(),
]);
}
private function resetCrmMappings(
Activity $activity,
ActivityRepository $activityRepository
): void {
$activity->update([
'lead_id' => null,
'contact_id' => null,
'account_id' => null,
'opportunity_id' => null,
'stage_id' => null,
]);
$participantsOldState = $activityRepository->getActivityParticipants($activity)
->map(function ($participant) {
return [
'id' => $participant->id,
'user_id' => $participant->user_id,
'contact_id' => $participant->contact_id,
'lead_id' => $participant->lead_id,
];
});
if ($participantsOldState->isNotEmpty()) {
Log::info('[MatchActivityCrmData] Participants old state', [
'activity' => $this->activityId,
'participants' => $participantsOldState->toArray(),
]);
}
$activity->participants()->update([
'user_id' => null,
'contact_id' => null,
'lead_id' => null,
]);
}
private function switchCrmConfigurationIfNeeded(Activity $activity): void
{
if ($this->fromConfiguration === null) {
return;
}
if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {
return;
}
Log::info('[MatchActivityCrmData] Switching CRM configuration', [
'activity' => $this->activityId,
'old_configuration' => $activity->getCrm()?->getId(),
'new_configuration' => $this->fromConfiguration->getId(),
]);
$activity->update([
'crm_configuration_id' => $this->fromConfiguration->getId(),
'crm_provider_id' => null,
]);
}
}
Execute
Explain Plan
Browse Query History...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.034242023,"height":0.025538707},"help_text":"Git Branch: master","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"bounds":{"left":0.36901596,"top":0.2490024,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.37865692,"top":0.24740623,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.38597074,"top":0.24740623,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Crm;\n\nuse Exception;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Database\\Connection;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Jobs\\Job;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Crm\\CrmActivityService;\nuse Psr\\Container\\ContainerExceptionInterface;\nuse Psr\\Container\\NotFoundExceptionInterface;\nuse Throwable;\n\nclass MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use SerializesModels;\n\n public int $tries = 3;\n\n private int $activityId;\n private ?Configuration $fromConfiguration;\n private bool $remoteSearch;\n\n public function __construct(\n int $activityId,\n ?Configuration $fromConfiguration = null,\n bool $remoteSearch = false,\n ) {\n $this->activityId = $activityId;\n $this->fromConfiguration = $fromConfiguration;\n $this->remoteSearch = $remoteSearch;\n\n $this->onQueue(Constants::QUEUE_ANALYTICS_LOW);\n }\n\n public function uniqueId(): string\n {\n $configId = $this->fromConfiguration?->getId() ?? 0;\n $remote = $this->remoteSearch ? 'remote' : 'local';\n\n return \"$this->activityId:$configId:$remote\";\n }\n\n public function timeout(): int\n {\n return 300; // 5 minutes max execution time\n }\n\n public function uniqueFor(): int\n {\n return $this->timeout() + 60; // timeout + 1 minute buffer\n }\n\n public function backoff(): array\n {\n return [30, 90, 180];\n }\n\n /**\n * @throws ContainerExceptionInterface\n * @throws NotFoundExceptionInterface\n * @throws Exception|Throwable\n */\n public function handle(\n ActivityRepository $activityRepository,\n CrmActivityService $crmActivityService,\n Connection $connection,\n ): void {\n $activity = $activityRepository->findById($this->activityId);\n if ($activity === null) {\n throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');\n }\n\n try {\n $connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {\n Log::info('[MatchActivityCrmData] Starting CRM data matching', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'set_configuration' => $this->fromConfiguration?->getId(),\n 'old_state' => [\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ],\n ]);\n\n $this->resetCrmMappings($activity, $activityRepository);\n\n $this->switchCrmConfigurationIfNeeded($activity);\n\n $activity->refresh();\n\n $crmActivityService->updateCrmData(\n activity: $activity,\n remoteSearch: $this->remoteSearch,\n );\n\n $hasMatch = $activity->getLead() !== null\n || $activity->getContact() !== null\n || $activity->getAccount() !== null\n || $activity->getOpportunity() !== null;\n\n if ($hasMatch) {\n Log::info('[MatchActivityCrmData] Successfully matched CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ]);\n } else {\n Log::info('[MatchActivityCrmData] No CRM match found', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n ]);\n }\n });\n } catch (Throwable $e) {\n Log::error('[MatchActivityCrmData] Failed to match CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'exception' => $e->getMessage(),\n 'trace' => $e->getTraceAsString(),\n ]);\n\n throw $e;\n }\n }\n\n public function failed(Throwable $exception): void\n {\n Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'from_configuration' => $this->fromConfiguration?->getId(),\n 'exception' => $exception->getMessage(),\n 'attempts' => $this->attempts(),\n ]);\n }\n\n private function resetCrmMappings(\n Activity $activity,\n ActivityRepository $activityRepository\n ): void {\n $activity->update([\n 'lead_id' => null,\n 'contact_id' => null,\n 'account_id' => null,\n 'opportunity_id' => null,\n 'stage_id' => null,\n ]);\n\n $participantsOldState = $activityRepository->getActivityParticipants($activity)\n ->map(function ($participant) {\n return [\n 'id' => $participant->id,\n 'user_id' => $participant->user_id,\n 'contact_id' => $participant->contact_id,\n 'lead_id' => $participant->lead_id,\n ];\n });\n\n if ($participantsOldState->isNotEmpty()) {\n Log::info('[MatchActivityCrmData] Participants old state', [\n 'activity' => $this->activityId,\n 'participants' => $participantsOldState->toArray(),\n ]);\n }\n\n $activity->participants()->update([\n 'user_id' => null,\n 'contact_id' => null,\n 'lead_id' => null,\n ]);\n }\n\n private function switchCrmConfigurationIfNeeded(Activity $activity): void\n {\n if ($this->fromConfiguration === null) {\n return;\n }\n\n if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {\n return;\n }\n\n Log::info('[MatchActivityCrmData] Switching CRM configuration', [\n 'activity' => $this->activityId,\n 'old_configuration' => $activity->getCrm()?->getId(),\n 'new_configuration' => $this->fromConfiguration->getId(),\n ]);\n\n $activity->update([\n 'crm_configuration_id' => $this->fromConfiguration->getId(),\n 'crm_provider_id' => null,\n ]);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\Crm;\n\nuse Exception;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Database\\Connection;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Jobs\\Job;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Repositories\\ActivityRepository;\nuse Jiminny\\Services\\Crm\\CrmActivityService;\nuse Psr\\Container\\ContainerExceptionInterface;\nuse Psr\\Container\\NotFoundExceptionInterface;\nuse Throwable;\n\nclass MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use SerializesModels;\n\n public int $tries = 3;\n\n private int $activityId;\n private ?Configuration $fromConfiguration;\n private bool $remoteSearch;\n\n public function __construct(\n int $activityId,\n ?Configuration $fromConfiguration = null,\n bool $remoteSearch = false,\n ) {\n $this->activityId = $activityId;\n $this->fromConfiguration = $fromConfiguration;\n $this->remoteSearch = $remoteSearch;\n\n $this->onQueue(Constants::QUEUE_ANALYTICS_LOW);\n }\n\n public function uniqueId(): string\n {\n $configId = $this->fromConfiguration?->getId() ?? 0;\n $remote = $this->remoteSearch ? 'remote' : 'local';\n\n return \"$this->activityId:$configId:$remote\";\n }\n\n public function timeout(): int\n {\n return 300; // 5 minutes max execution time\n }\n\n public function uniqueFor(): int\n {\n return $this->timeout() + 60; // timeout + 1 minute buffer\n }\n\n public function backoff(): array\n {\n return [30, 90, 180];\n }\n\n /**\n * @throws ContainerExceptionInterface\n * @throws NotFoundExceptionInterface\n * @throws Exception|Throwable\n */\n public function handle(\n ActivityRepository $activityRepository,\n CrmActivityService $crmActivityService,\n Connection $connection,\n ): void {\n $activity = $activityRepository->findById($this->activityId);\n if ($activity === null) {\n throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');\n }\n\n try {\n $connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {\n Log::info('[MatchActivityCrmData] Starting CRM data matching', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'set_configuration' => $this->fromConfiguration?->getId(),\n 'old_state' => [\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ],\n ]);\n\n $this->resetCrmMappings($activity, $activityRepository);\n\n $this->switchCrmConfigurationIfNeeded($activity);\n\n $activity->refresh();\n\n $crmActivityService->updateCrmData(\n activity: $activity,\n remoteSearch: $this->remoteSearch,\n );\n\n $hasMatch = $activity->getLead() !== null\n || $activity->getContact() !== null\n || $activity->getAccount() !== null\n || $activity->getOpportunity() !== null;\n\n if ($hasMatch) {\n Log::info('[MatchActivityCrmData] Successfully matched CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'lead_id' => $activity->getLead()?->getId(),\n 'contact_id' => $activity->getContact()?->getId(),\n 'account_id' => $activity->getAccount()?->getId(),\n 'opportunity_id' => $activity->getOpportunity()?->getId(),\n 'stage_id' => $activity->getStage()?->getId(),\n ]);\n } else {\n Log::info('[MatchActivityCrmData] No CRM match found', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n ]);\n }\n });\n } catch (Throwable $e) {\n Log::error('[MatchActivityCrmData] Failed to match CRM data', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'exception' => $e->getMessage(),\n 'trace' => $e->getTraceAsString(),\n ]);\n\n throw $e;\n }\n }\n\n public function failed(Throwable $exception): void\n {\n Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [\n 'activity' => $this->activityId,\n 'remote_search' => $this->remoteSearch,\n 'from_configuration' => $this->fromConfiguration?->getId(),\n 'exception' => $exception->getMessage(),\n 'attempts' => $this->attempts(),\n ]);\n }\n\n private function resetCrmMappings(\n Activity $activity,\n ActivityRepository $activityRepository\n ): void {\n $activity->update([\n 'lead_id' => null,\n 'contact_id' => null,\n 'account_id' => null,\n 'opportunity_id' => null,\n 'stage_id' => null,\n ]);\n\n $participantsOldState = $activityRepository->getActivityParticipants($activity)\n ->map(function ($participant) {\n return [\n 'id' => $participant->id,\n 'user_id' => $participant->user_id,\n 'contact_id' => $participant->contact_id,\n 'lead_id' => $participant->lead_id,\n ];\n });\n\n if ($participantsOldState->isNotEmpty()) {\n Log::info('[MatchActivityCrmData] Participants old state', [\n 'activity' => $this->activityId,\n 'participants' => $participantsOldState->toArray(),\n ]);\n }\n\n $activity->participants()->update([\n 'user_id' => null,\n 'contact_id' => null,\n 'lead_id' => null,\n ]);\n }\n\n private function switchCrmConfigurationIfNeeded(Activity $activity): void\n {\n if ($this->fromConfiguration === null) {\n return;\n }\n\n if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {\n return;\n }\n\n Log::info('[MatchActivityCrmData] Switching CRM configuration', [\n 'activity' => $this->activityId,\n 'old_configuration' => $activity->getCrm()?->getId(),\n 'new_configuration' => $this->fromConfiguration->getId(),\n ]);\n\n $activity->update([\n 'crm_configuration_id' => $this->fromConfiguration->getId(),\n 'crm_provider_id' => null,\n ]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.39461437,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.40325797,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.41422874,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8917837367493746366
|
5513615149297256852
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
8
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\Crm;
use Exception;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Connection;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Jobs\Job;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Repositories\ActivityRepository;
use Jiminny\Services\Crm\CrmActivityService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Throwable;
class MatchActivityCrmData extends Job implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use SerializesModels;
public int $tries = 3;
private int $activityId;
private ?Configuration $fromConfiguration;
private bool $remoteSearch;
public function __construct(
int $activityId,
?Configuration $fromConfiguration = null,
bool $remoteSearch = false,
) {
$this->activityId = $activityId;
$this->fromConfiguration = $fromConfiguration;
$this->remoteSearch = $remoteSearch;
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
$configId = $this->fromConfiguration?->getId() ?? 0;
$remote = $this->remoteSearch ? 'remote' : 'local';
return "$this->activityId:$configId:$remote";
}
public function timeout(): int
{
return 300; // 5 minutes max execution time
}
public function uniqueFor(): int
{
return $this->timeout() + 60; // timeout + 1 minute buffer
}
public function backoff(): array
{
return [30, 90, 180];
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws Exception|Throwable
*/
public function handle(
ActivityRepository $activityRepository,
CrmActivityService $crmActivityService,
Connection $connection,
): void {
$activity = $activityRepository->findById($this->activityId);
if ($activity === null) {
throw new InvalidArgumentException('[MatchActivityCrmData] Cannot find activity.');
}
try {
$connection->transaction(function () use ($activity, $crmActivityService, $activityRepository) {
Log::info('[MatchActivityCrmData] Starting CRM data matching', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'set_configuration' => $this->fromConfiguration?->getId(),
'old_state' => [
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
],
]);
$this->resetCrmMappings($activity, $activityRepository);
$this->switchCrmConfigurationIfNeeded($activity);
$activity->refresh();
$crmActivityService->updateCrmData(
activity: $activity,
remoteSearch: $this->remoteSearch,
);
$hasMatch = $activity->getLead() !== null
|| $activity->getContact() !== null
|| $activity->getAccount() !== null
|| $activity->getOpportunity() !== null;
if ($hasMatch) {
Log::info('[MatchActivityCrmData] Successfully matched CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'lead_id' => $activity->getLead()?->getId(),
'contact_id' => $activity->getContact()?->getId(),
'account_id' => $activity->getAccount()?->getId(),
'opportunity_id' => $activity->getOpportunity()?->getId(),
'stage_id' => $activity->getStage()?->getId(),
]);
} else {
Log::info('[MatchActivityCrmData] No CRM match found', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
]);
}
});
} catch (Throwable $e) {
Log::error('[MatchActivityCrmData] Failed to match CRM data', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
throw $e;
}
}
public function failed(Throwable $exception): void
{
Log::error('[MatchActivityCrmData] Job permanently failed after all retries', [
'activity' => $this->activityId,
'remote_search' => $this->remoteSearch,
'from_configuration' => $this->fromConfiguration?->getId(),
'exception' => $exception->getMessage(),
'attempts' => $this->attempts(),
]);
}
private function resetCrmMappings(
Activity $activity,
ActivityRepository $activityRepository
): void {
$activity->update([
'lead_id' => null,
'contact_id' => null,
'account_id' => null,
'opportunity_id' => null,
'stage_id' => null,
]);
$participantsOldState = $activityRepository->getActivityParticipants($activity)
->map(function ($participant) {
return [
'id' => $participant->id,
'user_id' => $participant->user_id,
'contact_id' => $participant->contact_id,
'lead_id' => $participant->lead_id,
];
});
if ($participantsOldState->isNotEmpty()) {
Log::info('[MatchActivityCrmData] Participants old state', [
'activity' => $this->activityId,
'participants' => $participantsOldState->toArray(),
]);
}
$activity->participants()->update([
'user_id' => null,
'contact_id' => null,
'lead_id' => null,
]);
}
private function switchCrmConfigurationIfNeeded(Activity $activity): void
{
if ($this->fromConfiguration === null) {
return;
}
if ($activity->getCrm()?->getId() === $this->fromConfiguration->getId()) {
return;
}
Log::info('[MatchActivityCrmData] Switching CRM configuration', [
'activity' => $this->activityId,
'old_configuration' => $activity->getCrm()?->getId(),
'new_configuration' => $this->fromConfiguration->getId(),
]);
$activity->update([
'crm_configuration_id' => $this->fromConfiguration->getId(),
'crm_provider_id' => null,
]);
}
}
Execute
Explain Plan
Browse Query History...
|
NULL
|
|
65338
|
1456
|
0
|
2026-04-21T12:27:43.404786+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776774463404_m2.jpg...
|
Slack
|
releases (Channel) - Jiminny Inc - 1 new item - Sl releases (Channel) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Gabriela Dureva
Aneliya Angelova
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Nikolay Ivanov
Ves
Toast
Jira Cloud
Messages
Messages
Files
Files
Bookmarks
Bookmarks
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
GitHub
APP
Today at 12:31:41 PM
12:31 PM
20 new commits
20 new commits
pushed to
master
master
by
yalokin-jiminny
yalokin-jiminny
c6b0e7bb
c6b0e7bb
- JY-20701 | safe crm check
25d76df9
25d76df9
- JY-20701 | null on first-time sync
cbc4edb7
cbc4edb7
- JY-20701 | minor improvement
2ce7c1a6
2ce7c1a6
- JY-20701 | improve filter by team
d069c735
d069c735
- JY-20701 | add scheduler comment
Show more
jiminny/app
jiminny/app
|
Added by
GitHub
GitHub
CircleCI
APP
Today at 12:54:33 PM
12:54 PM
Deployment Successful! tada emoji
Deployment Successful!
Project
: app
When
: 04/21/2026 09:54:32
Tag
:
View Job
View Job
New
CircleCI
APP
Today at 3:11:14 PM
3:11 PM
New commits deployed to Prophet Prod-EU:
[74e2564](
https://github.com/jiminny/prophet/commit/74e2564886483faee461cde7a86a8789e509519e
https://github.com/jiminny/prophet/commit/74e2564886483faee461cde7a86a8789e509519e
) - Jy 19798 evaluation for ai activity types data (#486) (Nikolay Ivanov)
[a3db1ce](
https://github.com/jiminny/prophet/commit/a3db1ced7e0d2659140afa3d02daac9a6afb7ab1
https://github.com/jiminny/prophet/commit/a3db1ced7e0d2659140afa3d02daac9a6afb7ab1
) - [JY-19798](
https://jiminny.atlassian.net/browse/JY-19798
https://jiminny.atlassian.net/browse/JY-19798
) | Activity type evaluation (#468) (Nikolay Ivanov)
[acf44b3](
https://github.com/jiminny/prophet/commit/acf44b3851a898dca040165a7cc1f8309e40e04e
https://github.com/jiminny/prophet/commit/acf44b3851a898dca040165a7cc1f8309e40e04e
) - [JY-19798](
https://jiminny.atlassian.net/browse/JY-19798
https://jiminny.atlassian.net/browse/JY-19798
) | change ai activity types llm priority (#475) (Nikolay Ivanov)
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel releases...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.0056515955,"top":0.058260176,"width":0.011968086,"height":0.028731046},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.0029920214,"top":0.10055866,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.0066489363,"top":0.13806863,"width":0.009973404,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.0029920214,"top":0.15482841,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.0076462766,"top":0.19233839,"width":0.007978723,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.0029920214,"top":0.20909816,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.004986702,"top":0.24660814,"width":0.012965426,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.0029920214,"top":0.26336792,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0076462766,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.0029920214,"top":0.31763768,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.00731383,"top":0.35514766,"width":0.008643617,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.0029920214,"top":0.3719074,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.006981383,"top":0.4094174,"width":0.008976064,"height":0.0103751},"role_description":"text"},{"role":"AXButton","text":"More unreads","depth":17,"bounds":{"left":0.038896278,"top":0.096568234,"width":0.041888297,"height":0.022346368},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"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":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"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,"bounds":{"left":0.042220745,"top":0.09177973,"width":0.029587766,"height":0.008778931},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.042220745,"top":0.10853951,"width":0.022938829,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"bounds":{"left":0.042220745,"top":0.13088587,"width":0.045212764,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"bounds":{"left":0.042220745,"top":0.15323225,"width":0.045877658,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"bounds":{"left":0.042220745,"top":0.17557861,"width":0.03125,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.042220745,"top":0.19792499,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.042220745,"top":0.22027135,"width":0.03856383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.24261771,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.26496407,"width":0.01761968,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.28731045,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.30965683,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.3320032,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.38467678,"width":0.03523936,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.40702313,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.4293695,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.4517159,"width":0.026263298,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.47406226,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.4964086,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.042220745,"top":0.51875496,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.54110134,"width":0.030585106,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.5634477,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.07945479,"top":0.5634477,"width":0.0063164895,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.08211436,"top":0.5634477,"width":0.014295213,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.09607713,"top":0.5810056,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.09607713,"top":0.5810056,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.042220745,"top":0.5857941,"width":0.028922873,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"bounds":{"left":0.042220745,"top":0.60814047,"width":0.031914894,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"bounds":{"left":0.042220745,"top":0.63048685,"width":0.0076462766,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.042220745,"top":0.6831604,"width":0.011968086,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.042220745,"top":0.7055068,"width":0.021609042,"height":0.003990423},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.10206117,"top":0.09177973,"width":0.030585106,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.111369684,"top":0.10055866,"width":0.01861702,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.020944148,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.008976064,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Bookmarks","depth":17,"bounds":{"left":0.15591756,"top":0.09177973,"width":0.033909574,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Bookmarks","depth":19,"bounds":{"left":0.16522606,"top":0.10055866,"width":0.021941489,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.19115691,"top":0.09177973,"width":0.010638298,"height":0.030327214},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.015625,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.0076462766,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.013962766,"height":0.0007980846},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":22,"bounds":{"left":0.15026596,"top":0.12689546,"width":0.025265958,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"GitHub","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Today at 12:31:41 PM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:31 PM","depth":24,"role_description":"text"},{"role":"AXLink","text":"20 new commits","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"20 new commits","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"pushed to","depth":23,"role_description":"text"},{"role":"AXLink","text":"master","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"master","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"by","depth":23,"role_description":"text"},{"role":"AXLink","text":"yalokin-jiminny","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":24,"role_description":"text"},{"role":"AXLink","text":"c6b0e7bb","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"c6b0e7bb","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"- JY-20701 | safe crm check","depth":25,"role_description":"text"},{"role":"AXLink","text":"25d76df9","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"25d76df9","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"- JY-20701 | null on first-time sync","depth":25,"role_description":"text"},{"role":"AXLink","text":"cbc4edb7","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"cbc4edb7","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"- JY-20701 | minor improvement","depth":25,"role_description":"text"},{"role":"AXLink","text":"2ce7c1a6","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2ce7c1a6","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"- JY-20701 | improve filter by team","depth":25,"role_description":"text"},{"role":"AXLink","text":"d069c735","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"d069c735","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"- JY-20701 | add scheduler comment","depth":25,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"jiminny/app","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"jiminny/app","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Added by","depth":25,"role_description":"text"},{"role":"AXLink","text":"GitHub","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"GitHub","depth":26,"role_description":"text"},{"role":"AXButton","text":"CircleCI","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Today at 12:54:33 PM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:54 PM","depth":24,"role_description":"text"},{"role":"AXHeading","text":"Deployment Successful! tada emoji","depth":23,"bounds":{"left":0.11801862,"top":0.11572227,"width":0.1043883,"height":0.0015961692},"role_description":"heading"},{"role":"AXStaticText","text":"Deployment Successful!","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Project","depth":24,"bounds":{"left":0.11801862,"top":0.12849163,"width":0.015957447,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":": app","depth":24,"bounds":{"left":0.13364361,"top":0.12849163,"width":0.010970744,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"When","depth":24,"bounds":{"left":0.15359043,"top":0.12849163,"width":0.013630319,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":": 04/21/2026 09:54:32","depth":24,"bounds":{"left":0.15359043,"top":0.12849163,"width":0.027593086,"height":0.049481247},"role_description":"text"},{"role":"AXStaticText","text":"Tag","depth":24,"bounds":{"left":0.11801862,"top":0.1811652,"width":0.0076462766,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":":","depth":24,"bounds":{"left":0.12533244,"top":0.1811652,"width":0.0016622341,"height":0.014365523},"role_description":"text"},{"role":"AXButton","text":"View Job","depth":24,"bounds":{"left":0.11801862,"top":0.20989625,"width":0.023271276,"height":0.022346368},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View Job","depth":26,"bounds":{"left":0.12101064,"top":0.21388668,"width":0.017287234,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"New","depth":21,"bounds":{"left":0.21343085,"top":0.23144454,"width":0.00930851,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"CircleCI","depth":23,"bounds":{"left":0.11801862,"top":0.24181964,"width":0.01761968,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":23,"bounds":{"left":0.13796543,"top":0.24581006,"width":0.0066489363,"height":0.009577015},"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.14527926,"top":0.2434158,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Today at 3:11:14 PM","depth":23,"bounds":{"left":0.14793883,"top":0.24581006,"width":0.015292553,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:11 PM","depth":24,"bounds":{"left":0.14793883,"top":0.24581006,"width":0.015292553,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"New commits deployed to Prophet Prod-EU:","depth":24,"bounds":{"left":0.11801862,"top":0.26097366,"width":0.09707447,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"[74e2564](","depth":24,"bounds":{"left":0.11801862,"top":0.27853152,"width":0.022938829,"height":0.031923383},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/74e2564886483faee461cde7a86a8789e509519e","depth":24,"bounds":{"left":0.11801862,"top":0.29608938,"width":0.102726065,"height":0.049481247},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/74e2564886483faee461cde7a86a8789e509519e","depth":25,"bounds":{"left":0.11801862,"top":0.29608938,"width":0.102726065,"height":0.049481247},"role_description":"text"},{"role":"AXStaticText","text":") - Jy 19798 evaluation for ai activity types data (#486) (Nikolay Ivanov)","depth":24,"bounds":{"left":0.11801862,"top":0.3312051,"width":0.098071806,"height":0.031923383},"role_description":"text"},{"role":"AXStaticText","text":"[a3db1ce](","depth":24,"bounds":{"left":0.11801862,"top":0.36632082,"width":0.021609042,"height":0.031923383},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/a3db1ced7e0d2659140afa3d02daac9a6afb7ab1","depth":24,"bounds":{"left":0.11801862,"top":0.38387868,"width":0.1043883,"height":0.031923383},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/a3db1ced7e0d2659140afa3d02daac9a6afb7ab1","depth":25,"bounds":{"left":0.11801862,"top":0.38387868,"width":0.1043883,"height":0.031923383},"role_description":"text"},{"role":"AXStaticText","text":") - [JY-19798](","depth":24,"bounds":{"left":0.11801862,"top":0.40143654,"width":0.10372341,"height":0.049481247},"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-19798","depth":24,"bounds":{"left":0.11934841,"top":0.4365523,"width":0.10106383,"height":0.014365523},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-19798","depth":25,"bounds":{"left":0.11934841,"top":0.4365523,"width":0.10106383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":") | Activity type evaluation (#468) (Nikolay Ivanov)","depth":24,"bounds":{"left":0.11801862,"top":0.4365523,"width":0.10372341,"height":0.049481247},"role_description":"text"},{"role":"AXStaticText","text":"[acf44b3](","depth":24,"bounds":{"left":0.11801862,"top":0.48922586,"width":0.020944148,"height":0.031923383},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/acf44b3851a898dca040165a7cc1f8309e40e04e","depth":24,"bounds":{"left":0.11801862,"top":0.5067837,"width":0.10372341,"height":0.031923383},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/acf44b3851a898dca040165a7cc1f8309e40e04e","depth":25,"bounds":{"left":0.11801862,"top":0.5067837,"width":0.10372341,"height":0.031923383},"role_description":"text"},{"role":"AXStaticText","text":") - [JY-19798](","depth":24,"bounds":{"left":0.11801862,"top":0.54189944,"width":0.029920213,"height":0.031923383},"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-19798","depth":24,"bounds":{"left":0.11934841,"top":0.5594573,"width":0.10106383,"height":0.014365523},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-19798","depth":25,"bounds":{"left":0.11934841,"top":0.5594573,"width":0.10106383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":") | change ai activity types llm priority (#475) (Nikolay Ivanov)","depth":24,"bounds":{"left":0.11801862,"top":0.5594573,"width":0.10372341,"height":0.049481247},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.22825219,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.22825219,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.22825219,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.22825219,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.22825219,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.22825219,"width":0.0003324468,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.22825219,"width":0.0003324468,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.22825219,"width":0.0003324468,"height":0.025538707},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"bounds":{"left":0.10372341,"top":0.6272945,"width":0.118351065,"height":0.030327214},"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.022606382,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Channel releases","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.017287234,"height":0.0007980846},"role_description":"text"}]...
|
8917012345798987530
|
-5786601238258609959
|
visual_change
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
support
thank-yous
the_people_of_jiminny
Gabriela Dureva
Aneliya Angelova
Petko Kashinski
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Nikolay Ivanov
Ves
Toast
Jira Cloud
Messages
Messages
Files
Files
Bookmarks
Bookmarks
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
GitHub
APP
Today at 12:31:41 PM
12:31 PM
20 new commits
20 new commits
pushed to
master
master
by
yalokin-jiminny
yalokin-jiminny
c6b0e7bb
c6b0e7bb
- JY-20701 | safe crm check
25d76df9
25d76df9
- JY-20701 | null on first-time sync
cbc4edb7
cbc4edb7
- JY-20701 | minor improvement
2ce7c1a6
2ce7c1a6
- JY-20701 | improve filter by team
d069c735
d069c735
- JY-20701 | add scheduler comment
Show more
jiminny/app
jiminny/app
|
Added by
GitHub
GitHub
CircleCI
APP
Today at 12:54:33 PM
12:54 PM
Deployment Successful! tada emoji
Deployment Successful!
Project
: app
When
: 04/21/2026 09:54:32
Tag
:
View Job
View Job
New
CircleCI
APP
Today at 3:11:14 PM
3:11 PM
New commits deployed to Prophet Prod-EU:
[74e2564](
https://github.com/jiminny/prophet/commit/74e2564886483faee461cde7a86a8789e509519e
https://github.com/jiminny/prophet/commit/74e2564886483faee461cde7a86a8789e509519e
) - Jy 19798 evaluation for ai activity types data (#486) (Nikolay Ivanov)
[a3db1ce](
https://github.com/jiminny/prophet/commit/a3db1ced7e0d2659140afa3d02daac9a6afb7ab1
https://github.com/jiminny/prophet/commit/a3db1ced7e0d2659140afa3d02daac9a6afb7ab1
) - [JY-19798](
https://jiminny.atlassian.net/browse/JY-19798
https://jiminny.atlassian.net/browse/JY-19798
) | Activity type evaluation (#468) (Nikolay Ivanov)
[acf44b3](
https://github.com/jiminny/prophet/commit/acf44b3851a898dca040165a7cc1f8309e40e04e
https://github.com/jiminny/prophet/commit/acf44b3851a898dca040165a7cc1f8309e40e04e
) - [JY-19798](
https://jiminny.atlassian.net/browse/JY-19798
https://jiminny.atlassian.net/browse/JY-19798
) | change ai activity types llm priority (#475) (Nikolay Ivanov)
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Processing uploaded file… complete! Message ready to be sent.
Channel releases
ActivityMoreSlackcalVIewMistonWindowhelpQ Search Jiminny IncJiminny...# intra-cnangesTMore unreads8 people-with-copilo...8 people-with-zoom-..# platform-team# platform-tickets# product_launchesic random# releasely# support# thank-yous# the people of jimi.^ Direct messagesP. Gabriela Dureva. Aneliya Angelova& Petko KashinskiwVasil VasilevP. Nikolay Nikolov. Galya DimitrovaA. Stefka Stoyanova8P. Stoyan Tomov3 Aneliya Angelova,...2. Stoyan Tanev. Nikolay IvanovVed#: Apps• ToastA STAGING# consoleDocker#releases8 22Messagese Files• BookmarksProject: appTodayy04/21/202609:54:32View JobCircleCI APP 3:11 PMNew commits deployed to Prophet Prod-EU:(74e2564]([URL_WITH_CREDENTIALS] custom_nameDactivity_search_id@Dask_anything_prompt_idMexpires atI created_byIcreated_atupdated_atI deleted_at100% SzTue 21 Apr 15:27:43dReportsRepository.phpx© Service.phpntroller.ong© JiminnyDebugCommand.php© CreateHeldActivityEvent.phpyListener.php© ActivityLogged.php© RequestGenerateAsk.© Field.php© FieldRepository.php© AutomatedReportsSendCommand.php© TrackProviderlnstalledEvent.php©) Automatedkeporiscallbackservice.ongortResult.pho(C) AutomatedReport.php;Scope(Builder $query, User $user): void( Se use Suserid, Soroypxa): o1d 1nContains('automated_reports.groups', $groupId);= custom.logA console (PROD]155A18 X911 A v 15%-159=160162v164— 165166167'— 168|#171L172— 173-174E laravel.logA console (EU]4 SF [iminny@localhost] xA HS_local [iminny@localhost]# report-not-generated.blade.phpA console [STAGING)Tx: AutoPlaygroundselect * trom teams where 1d=1select * from users where team_id = 1;select * from team_features where team_id = 1;select * from features;d8 jiminny~m 018 A14 V2 V4 A VSELECT * FROM activity_searches where id = 1982; # 1981SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;SELECT * FROM automated_reports where id = 68;UPDATE automated_reports set playbook, categocies = NULL where id = 68;SELECT * FROM automated_report_results where id = 275;SELECT * FROM automated_reports order by id desc;SELECT * FROM automated_report_results order by id desc;select * from activity_searches where user_id = 143;select x tron ask anychinooromots.SELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;select * from permissions: # 158select * trom roles:CascadeReview Planhat IntearSalestorce Lead ConviAutomated Report EmAutomated Reportswhere are recipients populated on automated_reports. Is creator always includednlelllelais60 Fast Context Where is the 'recipients' field of 'automated_reports' populated on create/update (AutomatedReportsService ….Thought for ss >Searched validateAndTransformData|validateAskJiminnyReportData|recipients in app/Services/Kiosk/AutomatedReports/AutomatedReportsSer…Thought for 19s>A This is takina a lona time. Click to retry if it seems stuck)CollectionTy: Auto vllAsk anything (84L)+ • CodeClaude Opus 4.7 MediumesVy<null>[1439]<null><null<null>("users": [143,2171}Monthly Ask J report19822026-06-3011432026-04-07 13•44-102026-04-07 13:44:10<null>Aenadad...
|
NULL
|
|
33563
|
677
|
18
|
2026-04-16T07:55:50.100904+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776326150100_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpSupport Daily - in 4h 5 m100% C8Thu 16 Apr 10:55:49-zshDOCKERO 8812026-04-16T10:42:54.234841Z\nFROM\nframes\nWHERE\nd=3.003346958sDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.₴84WARNsalx::query:summary="SELECT id,snapshot_path,device_name,snapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \n-zsh86-zsh₴7* Unable to acce...O 88db.statement="\n\nSELECT\nid, \nsnapshot_path, indevice_name, intimestamptimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=102 elapse2026-04-16T10:42:54.235674Z2026-04-16T10:43:05.429948Z2026-04-16T10:43:17.936694Z2026-04-16T10:43:26.520570ZnFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 102 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 15.6MB → 5.3MB (2.9x), 61 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames,WARNsqlx::query:summary="SELECT DISTINCT app_name, window_name,-"6.5MB → 3.2MB (2.0x),39 JPEGSdeleteddb.statement="\n\nSELECT\nDISTINCT app_name, \nwindow_name, \nbrowser_url\timestamp > datetime('now','-30seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0rows_returned=113 elapsed-1.076107s2026-04-16T10:43:53.468974ZINFOscreenpipe_engine::meeting_detector:meeting v2: Active -> Ending (no controls, app=Slack,id=1, grace=30s)2026-04-16T10:44:33.414298ZINFOscreenpipe_engine::meeting_detector:2026-04-16710:44:37.1284227WARNsqlx::query:meeting vZ: Ending -> Idle (timeout=30s, app=Slack, id=1)summary="SELECT COALESCE(text_content,'*)asdb.statement="\n\nSELECT\n'') as txt\nFR0M\n\nWHERE\ntimestamp>=?1\nANDtimestamp <=?2\nCOALESCE(text_content,ANDtext_contentIS NOT NULL\nAND text_content != ''\nANDevent_type = 'text'\nORDER BY\ntimestamp ASC\nLIMIT\nui_events5000\n"rows_affected=0rows_returned=34elapsed=3.3300345s2026-04-16T10:44:37.130610ZINFOscreenpipe_engine::meeting_detector: meeting v2: meetingended (id=1)2026-04-16T10:45:01.981635ZINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 22026-04-16T10:45:05.035761ZINFOChash=-394178939588870394,trigger=visual_change)screenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 2(hash=-394178939588870394,trigger=visual_change)2026-04-16T10:46:23.090024ZINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 22026-04-16T10:46:26.132195ZINFOscreenpipe_engine::event_driven_capture: contentChash=7149945076322576258,trigger=visual_change)dedup: skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:46:29.3220572INFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 2 (hash=7149945076322576258,2026-04-16T10:46:38.234229Ztrigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:46:47.284407ZINFO2026-04-16T10:46:56.326243ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7149945076322576258,trigger=visual_change)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:46:59.360561ZINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:48:22.094560ZWARNsqlx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestamp\nFROM\nframes\nWHERE\nsnapshot_path IS NOT NULL\nAND timestamp ‹ ?1\nORDER BY\nd-4.030937667sdevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=128 elapse2026-04-16T10:48:22.094697Z2026-04-16T10:48:27.509002Z2026-04-16T10:48:32.602076Z2026-04-16T10:49:02.801442Z2026-04-16T10:49:17.859487Z2026-04-16T10:49:44.085292Z2026-04-16T10:49:44.088203Z2026-04-16T10:50:11.573614Z2026-04-16110:50:11.57489222026-04-16T10:51:25.58151172026-04-16T10:51:29..527030Z2026-04-16T10:51:33.201063Z2026-04-16T10:51:57.237595Z2026-04-16T10:52:00.618858Z2026-04-16T10:53:33.489283Z2026-04-16T10:53:46.059596Z2026-04-16T10:53:52.475287ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 128eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 63 frames, 15.9MB → 7.9MB (2.0x), 63 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 63 frames,16.3MB → 4.5MB (3.6x), 63 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=6853170104847182325, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=594465382036229718, trigger=visual_change)screenpipe_engine::event_driven_capture: contentdedup: skippingcapture for monitor 1 (hash=594465382036229718, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=594465382036229718, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-6964644011425770241, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=-6964644011425770241, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=-2087341476805333889, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=6317338798093569418, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=6317338798093569418,INFOtrigger=click)screenpipe_engine::event_driven_capture: contentdedup:skippingcapture for monitor 2 (hash=-1884356785177423556, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 2 (hash=-1884356785177423556, trigger=visual_change)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 109 eligible framesscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 11.8MB → 6.OMB (2.0x), 61 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 46 frames, 13.1MB 1.5MB (8.6x), 46 JPEGs deleted...
|
NULL
|
8916489346375270318
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpSupport Daily - in 4h 5 m100% C8Thu 16 Apr 10:55:49-zshDOCKERO 8812026-04-16T10:42:54.234841Z\nFROM\nframes\nWHERE\nd=3.003346958sDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.₴84WARNsalx::query:summary="SELECT id,snapshot_path,device_name,snapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \n-zsh86-zsh₴7* Unable to acce...O 88db.statement="\n\nSELECT\nid, \nsnapshot_path, indevice_name, intimestamptimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=102 elapse2026-04-16T10:42:54.235674Z2026-04-16T10:43:05.429948Z2026-04-16T10:43:17.936694Z2026-04-16T10:43:26.520570ZnFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 102 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 15.6MB → 5.3MB (2.9x), 61 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames,WARNsqlx::query:summary="SELECT DISTINCT app_name, window_name,-"6.5MB → 3.2MB (2.0x),39 JPEGSdeleteddb.statement="\n\nSELECT\nDISTINCT app_name, \nwindow_name, \nbrowser_url\timestamp > datetime('now','-30seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0rows_returned=113 elapsed-1.076107s2026-04-16T10:43:53.468974ZINFOscreenpipe_engine::meeting_detector:meeting v2: Active -> Ending (no controls, app=Slack,id=1, grace=30s)2026-04-16T10:44:33.414298ZINFOscreenpipe_engine::meeting_detector:2026-04-16710:44:37.1284227WARNsqlx::query:meeting vZ: Ending -> Idle (timeout=30s, app=Slack, id=1)summary="SELECT COALESCE(text_content,'*)asdb.statement="\n\nSELECT\n'') as txt\nFR0M\n\nWHERE\ntimestamp>=?1\nANDtimestamp <=?2\nCOALESCE(text_content,ANDtext_contentIS NOT NULL\nAND text_content != ''\nANDevent_type = 'text'\nORDER BY\ntimestamp ASC\nLIMIT\nui_events5000\n"rows_affected=0rows_returned=34elapsed=3.3300345s2026-04-16T10:44:37.130610ZINFOscreenpipe_engine::meeting_detector: meeting v2: meetingended (id=1)2026-04-16T10:45:01.981635ZINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 22026-04-16T10:45:05.035761ZINFOChash=-394178939588870394,trigger=visual_change)screenpipe_engine:: event_driven_capture: content dedup:skipping capture for monitor 2(hash=-394178939588870394,trigger=visual_change)2026-04-16T10:46:23.090024ZINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 22026-04-16T10:46:26.132195ZINFOscreenpipe_engine::event_driven_capture: contentChash=7149945076322576258,trigger=visual_change)dedup: skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:46:29.3220572INFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 2 (hash=7149945076322576258,2026-04-16T10:46:38.234229Ztrigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:46:47.284407ZINFO2026-04-16T10:46:56.326243ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7149945076322576258,trigger=visual_change)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:46:59.360561ZINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=7149945076322576258, trigger=visual_change)2026-04-16T10:48:22.094560ZWARNsqlx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestamp\nFROM\nframes\nWHERE\nsnapshot_path IS NOT NULL\nAND timestamp ‹ ?1\nORDER BY\nd-4.030937667sdevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=128 elapse2026-04-16T10:48:22.094697Z2026-04-16T10:48:27.509002Z2026-04-16T10:48:32.602076Z2026-04-16T10:49:02.801442Z2026-04-16T10:49:17.859487Z2026-04-16T10:49:44.085292Z2026-04-16T10:49:44.088203Z2026-04-16T10:50:11.573614Z2026-04-16110:50:11.57489222026-04-16T10:51:25.58151172026-04-16T10:51:29..527030Z2026-04-16T10:51:33.201063Z2026-04-16T10:51:57.237595Z2026-04-16T10:52:00.618858Z2026-04-16T10:53:33.489283Z2026-04-16T10:53:46.059596Z2026-04-16T10:53:52.475287ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 128eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 63 frames, 15.9MB → 7.9MB (2.0x), 63 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 63 frames,16.3MB → 4.5MB (3.6x), 63 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=6853170104847182325, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=594465382036229718, trigger=visual_change)screenpipe_engine::event_driven_capture: contentdedup: skippingcapture for monitor 1 (hash=594465382036229718, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=594465382036229718, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-6964644011425770241, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=-6964644011425770241, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=-2087341476805333889, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=6317338798093569418, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=6317338798093569418,INFOtrigger=click)screenpipe_engine::event_driven_capture: contentdedup:skippingcapture for monitor 2 (hash=-1884356785177423556, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 2 (hash=-1884356785177423556, trigger=visual_change)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 109 eligible framesscreenpipe_engine::snapshot_compaction: snapshotcompaction: 61 frames, 11.8MB → 6.OMB (2.0x), 61 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 46 frames, 13.1MB 1.5MB (8.6x), 46 JPEGs deleted...
|
33559
|
|
48937
|
1040
|
26
|
2026-04-17T13:10:15.079253+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776431415079_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny k vToolsWindowHelpProject vO composer.jsonO composer.lockO dependency-checker.json0 dev.jsonEids.txtEinfection.ison.distM+INSIALL.mOM+ INTERNAL_WEBHOOK SETUPiminny storageM+ licenses.mdM Makefile0 package-lock.json= phpstan.neon.dist= phpstan-baseline.neon< phpunit.xmlTeraw_sqLquery.sqlM- KEADMEMOso sonar-proiect propertiesE test.py<> Untitled Diagram.xmlIs vetur.config.jsM+ WEBHOOK_FILTERING_IMPLE› ib External Librariesv E® Scratches and Consolesv D Database ConsolesVAEUA console [EU]A DEAL RISKS [EU]A DI [EU]Servicesv D DatabaseV A EU4, console 2 s 532 msv Ajiminny@localhost4 SFA HS_localV &PRODconsoe s3/msV L STAGINGc consoey Docker© PlaybookRepository.phpFieldRepository.php© JiminnyDebugCommand.php© AutomatedReportsRepository.phpC TrackProviderInstalledEvent.php© ImportActivityTypes.phpxC AskJiminnyReportActivityService.phg© AutomatedReportsSendCommand.php© AutomatedReportsService.php(c CrealeAcuivilyLocgedbvent.ono© Service.php© Field.php© ReportController.php© AutomatedReportsCommand.php© CreateHeldActivityEvent.phpC UserPilotActivityListener.php© ActivityLogged.php© RequestGenerateReportJob.php<?phpAutomatedReportsCallbackService.php© AutomatedReportResult.php© RequestGenerateAskJiminnyReportJob.php© AutomatedReport.phpnamespace Jiminny\Listeners\Crm;use Illuminate\Database\Eloquent\Collection;use Illuminate|Support\Str;use Jiminny\Events\Playbooks\PlaybookCreated;use Jiminny\Models\Crm\Field;use Jiminny Models crm FleLavalue,use Jaminny modetsr laydookасеgory.useJaminny repostcortes crunrlelakepostcory,useJiminny\Repositories\PlaybookCategoryRepository;use Illuminate\Contracts\Queue\ShouldQueue;luseIlluminate|Support\Facades\Log;use Jiminny\Services\ResolveTeamCrmConnection;use stdclass;Juse Throwable;19 ©class ImportActivitxTypes implements ShouldQueueT 1 of 2 edits +Accept File &~X Reject File +2a21Informationblalect Mariab:DBMS: MariaDB (ver. 11.4.9-MariaDB-log)Case sensitivity: plain=exact, delimited=exactDriver: MariaDB Connector/J (ver. 3.3.3, JDBC4.2)AccepuReiect= custom.logA HS_local [iminny@localhost]A console [PROD]console EUx160116021603160411605160716081609'I161016111612161316141615•161616171014= laravel.logA SF [jiminny@localhost]A console [STAGING]p osa.*,Tx: AutovMlaycroundvt.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJUIN teams T n<→>l: on t.1d = U.team_1dWHERE u.team_id = 459 and sa.provider = 'hubspat':Sa jiminny ~027 49 A22 X3 X 104 ^SELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cntFROM opportunity stages osJOIN stages s1..n<->1: ON s.id = os.stage_idWHERE os.opportunity_id = 7594349GROUP BY os.stage_id, s.crm_provider_id, s.nameORDER BY CHt DESCHSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_idFROM stages sJOIN business_process_stages bps 1<->1.n: ON bps.stage_id = s.idWHERE bps.business_process_id = 6024Any s.criorovoer 1o=contractsent':select * from stages where id IN (16352, 20612, 18281, 7344, 16378, 16309,5036, 15223, 14535, 6293, 12098,1621 vSELECT * FROM teams WHERE name LIKE '%Pulsar Group%':||CascadeAutomated Report Retinovonttoriskeao ImporLAcuvilylvoes.ongThouchtsImportActivityTypes.phpNavigating..g Tech Day Review - in 50 mARequestGenerateAskJiminnyReportJobTest v100% C•Fri 17 Apr 16:10:14C Playbook Activity Ty+D ..Implement fix and provide instructions for the client to enable FieldDefinitionCascade1flle +2>Ask anything (2AL)+ & COO€→AcaotiveReject allAccept allworksoace associated with branch Jy-log0g-autoriny nas been restorea // kollback // contigure... (36 minutes ago)w Windsunt leams1621:54uir-o4 spaces...
|
NULL
|
8916370482960161622
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny k vToolsWindowHelpProject vO composer.jsonO composer.lockO dependency-checker.json0 dev.jsonEids.txtEinfection.ison.distM+INSIALL.mOM+ INTERNAL_WEBHOOK SETUPiminny storageM+ licenses.mdM Makefile0 package-lock.json= phpstan.neon.dist= phpstan-baseline.neon< phpunit.xmlTeraw_sqLquery.sqlM- KEADMEMOso sonar-proiect propertiesE test.py<> Untitled Diagram.xmlIs vetur.config.jsM+ WEBHOOK_FILTERING_IMPLE› ib External Librariesv E® Scratches and Consolesv D Database ConsolesVAEUA console [EU]A DEAL RISKS [EU]A DI [EU]Servicesv D DatabaseV A EU4, console 2 s 532 msv Ajiminny@localhost4 SFA HS_localV &PRODconsoe s3/msV L STAGINGc consoey Docker© PlaybookRepository.phpFieldRepository.php© JiminnyDebugCommand.php© AutomatedReportsRepository.phpC TrackProviderInstalledEvent.php© ImportActivityTypes.phpxC AskJiminnyReportActivityService.phg© AutomatedReportsSendCommand.php© AutomatedReportsService.php(c CrealeAcuivilyLocgedbvent.ono© Service.php© Field.php© ReportController.php© AutomatedReportsCommand.php© CreateHeldActivityEvent.phpC UserPilotActivityListener.php© ActivityLogged.php© RequestGenerateReportJob.php<?phpAutomatedReportsCallbackService.php© AutomatedReportResult.php© RequestGenerateAskJiminnyReportJob.php© AutomatedReport.phpnamespace Jiminny\Listeners\Crm;use Illuminate\Database\Eloquent\Collection;use Illuminate|Support\Str;use Jiminny\Events\Playbooks\PlaybookCreated;use Jiminny\Models\Crm\Field;use Jiminny Models crm FleLavalue,use Jaminny modetsr laydookасеgory.useJaminny repostcortes crunrlelakepostcory,useJiminny\Repositories\PlaybookCategoryRepository;use Illuminate\Contracts\Queue\ShouldQueue;luseIlluminate|Support\Facades\Log;use Jiminny\Services\ResolveTeamCrmConnection;use stdclass;Juse Throwable;19 ©class ImportActivitxTypes implements ShouldQueueT 1 of 2 edits +Accept File &~X Reject File +2a21Informationblalect Mariab:DBMS: MariaDB (ver. 11.4.9-MariaDB-log)Case sensitivity: plain=exact, delimited=exactDriver: MariaDB Connector/J (ver. 3.3.3, JDBC4.2)AccepuReiect= custom.logA HS_local [iminny@localhost]A console [PROD]console EUx160116021603160411605160716081609'I161016111612161316141615•161616171014= laravel.logA SF [jiminny@localhost]A console [STAGING]p osa.*,Tx: AutovMlaycroundvt.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJUIN teams T n<→>l: on t.1d = U.team_1dWHERE u.team_id = 459 and sa.provider = 'hubspat':Sa jiminny ~027 49 A22 X3 X 104 ^SELECT os.stage_id, s.crm_provider_id, s.name, COUNT(*) as cntFROM opportunity stages osJOIN stages s1..n<->1: ON s.id = os.stage_idWHERE os.opportunity_id = 7594349GROUP BY os.stage_id, s.crm_provider_id, s.nameORDER BY CHt DESCHSELECT s.id, s.crm_provider_id, s.name, s.team_id, s.crm_configuration_idFROM stages sJOIN business_process_stages bps 1<->1.n: ON bps.stage_id = s.idWHERE bps.business_process_id = 6024Any s.criorovoer 1o=contractsent':select * from stages where id IN (16352, 20612, 18281, 7344, 16378, 16309,5036, 15223, 14535, 6293, 12098,1621 vSELECT * FROM teams WHERE name LIKE '%Pulsar Group%':||CascadeAutomated Report Retinovonttoriskeao ImporLAcuvilylvoes.ongThouchtsImportActivityTypes.phpNavigating..g Tech Day Review - in 50 mARequestGenerateAskJiminnyReportJobTest v100% C•Fri 17 Apr 16:10:14C Playbook Activity Ty+D ..Implement fix and provide instructions for the client to enable FieldDefinitionCascade1flle +2>Ask anything (2AL)+ & COO€→AcaotiveReject allAccept allworksoace associated with branch Jy-log0g-autoriny nas been restorea // kollback // contigure... (36 minutes ago)w Windsunt leams1621:54uir-o4 spaces...
|
NULL
|
|
65062
|
1441
|
47
|
2026-04-21T11:56:25.816283+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776772585816_m1.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com/ai-reports/
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Salesforce Pre-Authorization | Jiminny Help Center
Salesforce Pre-Authorization | Jiminny Help Center
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New chat
Gemini
PRO
PRO
Conversation with Gemini
Conversation with Gemini
Hi Lukas
Where should we start?
Where should we start?
🖼️ Create image, button, tap to use tool
🖼️ Create image
🎸 Create music, button, tap to use tool
🎸 Create music
Boost my day, button, tap to use tool
Boost my day
Help me learn, button, tap to use tool
Help me learn
Write anything, button, tap to use tool
Write anything
transfer to laravel que
transfer to laravel que
Open upload file menu
Tools
Open mode picker
Pro
Send message
Summarize page
Summarize page
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Report Type Report Type
Report Type
Report Type
Clear all
NAME
FREQUENCY
RECIPIENTS
DATE
ACTIONS
Monthly Ask J Report - Mar 2026
Monthly
Lukas Kovalik
Jiminny Mobile SA
+1
08/04/2026
You are currently impersonating Moni Georgieva...
|
[{"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":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"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":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Salesforce Pre-Authorization | Jiminny Help Center","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Salesforce Pre-Authorization | Jiminny Help Center","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.008680556,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.031944446,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"PRO","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PRO","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hi Lukas","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Where should we start?","depth":22,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Where should we start?","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"🖼️ Create image, button, tap to use tool","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🖼️ Create image","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"🎸 Create music, button, tap to use tool","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🎸 Create music","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Boost my day, button, tap to use tool","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Boost my day","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help me learn, button, tap to use tool","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help me learn","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Write anything, button, tap to use tool","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Write anything","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextArea","text":"transfer to laravel que","depth":20,"value":"transfer to laravel que","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"transfer to laravel que","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Send message","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Summarize page","depth":7,"bounds":{"left":0.11076389,"top":0.0,"width":0.11180556,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"bounds":{"left":0.12256944,"top":0.0,"width":0.088194445,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Reports","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Reports","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ask Jiminny reports","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny reports","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Report name","depth":12,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Period","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Report Type Report Type","depth":11,"value":"Report Type Report Type","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Report Type","depth":12,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Report Type","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"RECIPIENTS","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monthly Ask J Report - Mar 2026","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monthly","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Mobile SA","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+1","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"08/04/2026","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You are currently impersonating Moni Georgieva","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8916088394447262143
|
-5316514370939114221
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Salesforce Pre-Authorization | Jiminny Help Center
Salesforce Pre-Authorization | Jiminny Help Center
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New chat
Gemini
PRO
PRO
Conversation with Gemini
Conversation with Gemini
Hi Lukas
Where should we start?
Where should we start?
🖼️ Create image, button, tap to use tool
🖼️ Create image
🎸 Create music, button, tap to use tool
🎸 Create music
Boost my day, button, tap to use tool
Boost my day
Help me learn, button, tap to use tool
Help me learn
Write anything, button, tap to use tool
Write anything
transfer to laravel que
transfer to laravel que
Open upload file menu
Tools
Open mode picker
Pro
Send message
Summarize page
Summarize page
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Report Type Report Type
Report Type
Report Type
Clear all
NAME
FREQUENCY
RECIPIENTS
DATE
ACTIONS
Monthly Ask J Report - Mar 2026
Monthly
Lukas Kovalik
Jiminny Mobile SA
+1
08/04/2026
You are currently impersonating Moni Georgieva...
|
65059
|
|
40982
|
872
|
17
|
2026-04-17T05:58:07.801414+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776405487801_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpEU (ssh)-zsh(all* Review screenpipe U...100% 1478Fri 17 Apr 8:58:07181DOCKERDEV (-zsh)О 882APP (-zsh)883XI11 DOCKER (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parentsPoetry could not find a pyproject.toml/docker or its parentsin /Users/lukas/jiminny/infrastructure/dev*4-zsh®О885PROD (ssh)Run 'do-release-upgrade' to upgrade to it.•*6-zshPRODlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop)$Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop)$ 0*** System restart required ***Last login: Thu Apr 16 06:55:09 2026 from 212.39.71.189lukas@jiminny-prod-bastion:~$X L3 EU (ssh)New release '24.04.4 LTS' available.Run'do-release-upgrade'to upgrade to it.U*** System restart required ***login: Thu Apr 16 06:55:03 2026 from 212.39.71.189lukas@jiminny-eu-bastion:~$ |T4 STAGE (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$T5 QA (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsXT6 FE (-zsh)Last login: Thu Apr 16 15:48:07 on ttys004Poetry could not find a pyproject.toml file in /Users/lukas or its parents RONTENDPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX T7 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
NULL
|
8915854180015592062
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpEU (ssh)-zsh(all* Review screenpipe U...100% 1478Fri 17 Apr 8:58:07181DOCKERDEV (-zsh)О 882APP (-zsh)883XI11 DOCKER (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parentsPoetry could not find a pyproject.toml/docker or its parentsin /Users/lukas/jiminny/infrastructure/dev*4-zsh®О885PROD (ssh)Run 'do-release-upgrade' to upgrade to it.•*6-zshPRODlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop)$Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop)$ 0*** System restart required ***Last login: Thu Apr 16 06:55:09 2026 from 212.39.71.189lukas@jiminny-prod-bastion:~$X L3 EU (ssh)New release '24.04.4 LTS' available.Run'do-release-upgrade'to upgrade to it.U*** System restart required ***login: Thu Apr 16 06:55:03 2026 from 212.39.71.189lukas@jiminny-eu-bastion:~$ |T4 STAGE (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$T5 QA (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsXT6 FE (-zsh)Last login: Thu Apr 16 15:48:07 on ttys004Poetry could not find a pyproject.toml file in /Users/lukas or its parents RONTENDPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX T7 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
40979
|
|
61918
|
1332
|
58
|
2026-04-21T07:17:17.927469+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755837927_m1.jpg...
|
Activity Monitor
|
Activity Monitor – All Processes
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Physical Memory:
16,00 GB
Memory Used:
13,80 GB
Ca Physical Memory:
16,00 GB
Memory Used:
13,80 GB
Cached Files:
2,15 GB
Swap Used:
2,15 GB
4,07 GB
Wired Memory:
Compressed:
2,43 GB
6,74 GB
App Memory:
MEMORY PRESSURE
PhpStorm
3,27 GB
[PHONE]6
lukas
FirefoxCP Isolated Web Content
1,53 GB
24
123
20765
lukas
WindowServer
1,01 GB
21
3 197
404
_windowserver
Firefox GPU Helper
1 021,6 MB
32
249
20752
lukas
FirefoxCP Isolated Web Content
697,8 MB
28
126
21736
lukas
language_server_macos_arm
669,2 MB
24
74
23523
lukas
Firefox
536,3 MB
93
887
20737
lukas
Firefox GPU Helper
494,6 MB
30
229
10877
lukas
FirefoxCP Isolated Web Content
467,2 MB
23
121
20966
lukas
Firefox
429,1 MB
70
704
10868
lukas
FirefoxCP Isolated Web Content
422,9 MB
24
122
26198
lukas
FirefoxCP Isolated Web Content
418,5 MB
24
124
37425
lukas
claude.exe
379,5 MB
25
80
12929
lukas
Slack Helper (Renderer)
342,9 MB
15
162
11984
lukas
FirefoxCP Isolated Web Content
334,3 MB
23
119
10892
lukas
iTerm2
330,3 MB
7
476
718
lukas
java
306,6 MB
57
207
23228
lukas
FirefoxCP Isolated Web Content
303,6 MB
23
119
25036
lukas
Notion Calendar Helper (Renderer)
271,5 MB
16
185
31501
lukas
FirefoxCP Isolated Web Content
267,8 MB
25
127
15392
lukas
FirefoxCP Isolated Web Content
266,2 MB
26
124
20989
lukas
Claude Helper (Renderer)
264,7 MB
15
203
998
lukas
cef_server Helper (GPU)
250,5 MB
16
166
23570
lukas
Claude Helper
242,5 MB
18
200
891
lukas
FirefoxCP Isolated Web Content
205,7 MB
23
120
21298
lukas
FirefoxCP Isolated Web Content
192,5 MB
22
113
19852
lukas
Claude
186,8 MB
68
782
714
lukas
FirefoxCP Isolated Web Content
181,9 MB
23
119
11921
lukas
FirefoxCP Isolated Web Content
175,4 MB
25
124
20766
lukas
Notion Calendar Helper (GPU)
167,8 MB
15
171
31499
lukas
FirefoxCP Isolated Web Content
150,5 MB
24
121
10891
lukas
FirefoxCP Isolated Web Content
146,8 MB
23
120
20769
lukas
Slack Helper
145,1 MB
16
178
11982
lukas
FirefoxCP Isolated Web Content
141,7 MB
23
120
22480
lukas...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Physical Memory:","depth":3,"bounds":{"left":0.6826389,"top":0.8933333,"width":0.06701389,"height":0.015555556},"automation_id":"_NS:456","help_text":"Total amount of memory installed in this computer.","role_description":"text"},{"role":"AXStaticText","text":"16,00 GB","depth":3,"bounds":{"left":0.765625,"top":0.8933333,"width":0.03784722,"height":0.015555556},"automation_id":"_NS:448","help_text":"Total amount of memory installed in this computer.","role_description":"text"},{"role":"AXStaticText","text":"Memory Used:","depth":3,"bounds":{"left":0.6826389,"top":0.91555554,"width":0.05590278,"height":0.015555556},"automation_id":"_NS:441","help_text":"Amount of physical memory that is in use by apps or the system.","role_description":"text"},{"role":"AXStaticText","text":"13,80 GB","depth":3,"bounds":{"left":0.765625,"top":0.91555554,"width":0.03784722,"height":0.015555556},"automation_id":"_NS:435","help_text":"Amount of physical memory that is in use by apps or the system.","role_description":"text"},{"role":"AXStaticText","text":"Cached Files:","depth":3,"bounds":{"left":0.6826389,"top":0.93777776,"width":0.052083332,"height":0.015555556},"automation_id":"_NS:428","help_text":"Size of files cached by the system into unused memory to improve performance.","role_description":"text"},{"role":"AXStaticText","text":"2,15 GB","depth":3,"bounds":{"left":0.7704861,"top":0.93777776,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:422","help_text":"Size of files cached by the system into unused memory to improve performance.","role_description":"text"},{"role":"AXStaticText","text":"Swap Used:","depth":3,"bounds":{"left":0.6826389,"top":0.96,"width":0.046180554,"height":0.015555556},"automation_id":"_NS:415","help_text":"Amount of compressed data temporarily moved to disk to make room in memory for more recently used data.","role_description":"text"},{"role":"AXStaticText","text":"2,15 GB","depth":3,"bounds":{"left":0.7704861,"top":0.96,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:409","help_text":"Amount of compressed data temporarily moved to disk to make room in memory for more recently used data.","role_description":"text"},{"role":"AXStaticText","text":"4,07 GB","depth":3,"bounds":{"left":0.9045139,"top":0.9066667,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:400","help_text":"Physical memory allocated by apps and system processes.","role_description":"text"},{"role":"AXStaticText","text":"Wired Memory:","depth":3,"bounds":{"left":0.8173611,"top":0.9266667,"width":0.058333334,"height":0.015555556},"automation_id":"_NS:393","help_text":"Physical memory containing data that cannot be compressed or swapped to disk.","role_description":"text"},{"role":"AXStaticText","text":"Compressed:","depth":3,"bounds":{"left":0.8173611,"top":0.94666666,"width":0.051041666,"height":0.015555556},"automation_id":"_NS:386","help_text":"Physical memory used to store a compressed version of data that has not been used recently.","role_description":"text"},{"role":"AXStaticText","text":"2,43 GB","depth":3,"bounds":{"left":0.9045139,"top":0.9266667,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:380","help_text":"Physical memory containing data that cannot be compressed or swapped to disk.","role_description":"text"},{"role":"AXStaticText","text":"6,74 GB","depth":3,"bounds":{"left":0.9045139,"top":0.94666666,"width":0.032986112,"height":0.015555556},"automation_id":"_NS:374","help_text":"Physical memory used to store a compressed version of data that has not been used recently.","role_description":"text"},{"role":"AXStaticText","text":"App Memory:","depth":3,"bounds":{"left":0.8173611,"top":0.9066667,"width":0.051736113,"height":0.015555556},"automation_id":"_NS:367","help_text":"Physical memory allocated by apps and system processes.","role_description":"text"},{"role":"AXStaticText","text":"MEMORY PRESSURE","depth":3,"bounds":{"left":0.5416667,"top":0.89111114,"width":0.13402778,"height":0.02},"automation_id":"_NS:359","role_description":"text"},{"role":"AXStaticText","text":"PhpStorm","depth":5,"bounds":{"left":0.52013886,"top":0.12666667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"3,27 GB","depth":5,"bounds":{"left":0.70694447,"top":0.12666667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"221","depth":5,"bounds":{"left":0.76319444,"top":0.12666667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"934","depth":5,"bounds":{"left":0.81666666,"top":0.12666667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"22696","depth":5,"bounds":{"left":0.86180556,"top":0.12666667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.12666667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.15333334,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1,53 GB","depth":5,"bounds":{"left":0.70694447,"top":0.15333334,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.15333334,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"123","depth":5,"bounds":{"left":0.81666666,"top":0.15333334,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20765","depth":5,"bounds":{"left":0.86180556,"top":0.15333334,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.15333334,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"WindowServer","depth":5,"bounds":{"left":0.52013886,"top":0.18,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1,01 GB","depth":5,"bounds":{"left":0.70694447,"top":0.18,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21","depth":5,"bounds":{"left":0.76319444,"top":0.18,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"3 197","depth":5,"bounds":{"left":0.81666666,"top":0.18,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"404","depth":5,"bounds":{"left":0.86180556,"top":0.18,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"_windowserver","depth":5,"bounds":{"left":0.9013889,"top":0.18,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox GPU Helper","depth":5,"bounds":{"left":0.52013886,"top":0.20666666,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"1 021,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.20666666,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"32","depth":5,"bounds":{"left":0.76319444,"top":0.20666666,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"249","depth":5,"bounds":{"left":0.81666666,"top":0.20666666,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20752","depth":5,"bounds":{"left":0.86180556,"top":0.20666666,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.20666666,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.23333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"697,8 MB","depth":5,"bounds":{"left":0.70694447,"top":0.23333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"28","depth":5,"bounds":{"left":0.76319444,"top":0.23333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"126","depth":5,"bounds":{"left":0.81666666,"top":0.23333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21736","depth":5,"bounds":{"left":0.86180556,"top":0.23333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.23333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"language_server_macos_arm","depth":5,"bounds":{"left":0.52013886,"top":0.26,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"669,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.26,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.26,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"74","depth":5,"bounds":{"left":0.81666666,"top":0.26,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23523","depth":5,"bounds":{"left":0.86180556,"top":0.26,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.26,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"bounds":{"left":0.52013886,"top":0.28666666,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"536,3 MB","depth":5,"bounds":{"left":0.70694447,"top":0.28666666,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"93","depth":5,"bounds":{"left":0.76319444,"top":0.28666666,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"887","depth":5,"bounds":{"left":0.81666666,"top":0.28666666,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20737","depth":5,"bounds":{"left":0.86180556,"top":0.28666666,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.28666666,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox GPU Helper","depth":5,"bounds":{"left":0.52013886,"top":0.31333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"494,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.31333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"30","depth":5,"bounds":{"left":0.76319444,"top":0.31333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"229","depth":5,"bounds":{"left":0.81666666,"top":0.31333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10877","depth":5,"bounds":{"left":0.86180556,"top":0.31333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.31333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.34,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"467,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.34,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.34,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"bounds":{"left":0.81666666,"top":0.34,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20966","depth":5,"bounds":{"left":0.86180556,"top":0.34,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.34,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"bounds":{"left":0.52013886,"top":0.36666667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"429,1 MB","depth":5,"bounds":{"left":0.70694447,"top":0.36666667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"70","depth":5,"bounds":{"left":0.76319444,"top":0.36666667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"704","depth":5,"bounds":{"left":0.81666666,"top":0.36666667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10868","depth":5,"bounds":{"left":0.86180556,"top":0.36666667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.36666667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.39333335,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"422,9 MB","depth":5,"bounds":{"left":0.70694447,"top":0.39333335,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.39333335,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"122","depth":5,"bounds":{"left":0.81666666,"top":0.39333335,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"26198","depth":5,"bounds":{"left":0.86180556,"top":0.39333335,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.39333335,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.42,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"418,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.42,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.42,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"124","depth":5,"bounds":{"left":0.81666666,"top":0.42,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"37425","depth":5,"bounds":{"left":0.86180556,"top":0.42,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.42,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"claude.exe","depth":5,"bounds":{"left":0.52013886,"top":0.44666666,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"379,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.44666666,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"bounds":{"left":0.76319444,"top":0.44666666,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"80","depth":5,"bounds":{"left":0.81666666,"top":0.44666666,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"12929","depth":5,"bounds":{"left":0.86180556,"top":0.44666666,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.44666666,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Slack Helper (Renderer)","depth":5,"bounds":{"left":0.52013886,"top":0.47333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"342,9 MB","depth":5,"bounds":{"left":0.70694447,"top":0.47333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15","depth":5,"bounds":{"left":0.76319444,"top":0.47333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"162","depth":5,"bounds":{"left":0.81666666,"top":0.47333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11984","depth":5,"bounds":{"left":0.86180556,"top":0.47333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.47333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.5,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"334,3 MB","depth":5,"bounds":{"left":0.70694447,"top":0.5,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.5,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"bounds":{"left":0.81666666,"top":0.5,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10892","depth":5,"bounds":{"left":0.86180556,"top":0.5,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.5,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"iTerm2","depth":5,"bounds":{"left":0.52013886,"top":0.52666664,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"330,3 MB","depth":5,"bounds":{"left":0.70694447,"top":0.52666664,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"7","depth":5,"bounds":{"left":0.76319444,"top":0.52666664,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"476","depth":5,"bounds":{"left":0.81666666,"top":0.52666664,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"718","depth":5,"bounds":{"left":0.86180556,"top":0.52666664,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.52666664,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"java","depth":5,"bounds":{"left":0.52013886,"top":0.55333334,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"306,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.55333334,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"57","depth":5,"bounds":{"left":0.76319444,"top":0.55333334,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"207","depth":5,"bounds":{"left":0.81666666,"top":0.55333334,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23228","depth":5,"bounds":{"left":0.86180556,"top":0.55333334,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.55333334,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.58,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"303,6 MB","depth":5,"bounds":{"left":0.70694447,"top":0.58,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.58,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"bounds":{"left":0.81666666,"top":0.58,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25036","depth":5,"bounds":{"left":0.86180556,"top":0.58,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.58,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Notion Calendar Helper (Renderer)","depth":5,"bounds":{"left":0.52013886,"top":0.6066667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"271,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.6066667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"bounds":{"left":0.76319444,"top":0.6066667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"185","depth":5,"bounds":{"left":0.81666666,"top":0.6066667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"31501","depth":5,"bounds":{"left":0.86180556,"top":0.6066667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.6066667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.6333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"267,8 MB","depth":5,"bounds":{"left":0.70694447,"top":0.6333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"bounds":{"left":0.76319444,"top":0.6333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"127","depth":5,"bounds":{"left":0.81666666,"top":0.6333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15392","depth":5,"bounds":{"left":0.86180556,"top":0.6333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.6333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.66,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"266,2 MB","depth":5,"bounds":{"left":0.70694447,"top":0.66,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"26","depth":5,"bounds":{"left":0.76319444,"top":0.66,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"124","depth":5,"bounds":{"left":0.81666666,"top":0.66,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20989","depth":5,"bounds":{"left":0.86180556,"top":0.66,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.66,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude Helper (Renderer)","depth":5,"bounds":{"left":0.52013886,"top":0.68666667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"264,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.68666667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15","depth":5,"bounds":{"left":0.76319444,"top":0.68666667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"203","depth":5,"bounds":{"left":0.81666666,"top":0.68666667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"998","depth":5,"bounds":{"left":0.86180556,"top":0.68666667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.68666667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"cef_server Helper (GPU)","depth":5,"bounds":{"left":0.52013886,"top":0.7133333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"250,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.7133333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"bounds":{"left":0.76319444,"top":0.7133333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"166","depth":5,"bounds":{"left":0.81666666,"top":0.7133333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23570","depth":5,"bounds":{"left":0.86180556,"top":0.7133333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.7133333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude Helper","depth":5,"bounds":{"left":0.52013886,"top":0.74,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"242,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.74,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"18","depth":5,"bounds":{"left":0.76319444,"top":0.74,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"200","depth":5,"bounds":{"left":0.81666666,"top":0.74,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"891","depth":5,"bounds":{"left":0.86180556,"top":0.74,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.74,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.76666665,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"205,7 MB","depth":5,"bounds":{"left":0.70694447,"top":0.76666665,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.76666665,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"120","depth":5,"bounds":{"left":0.81666666,"top":0.76666665,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"21298","depth":5,"bounds":{"left":0.86180556,"top":0.76666665,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.76666665,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.79333335,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"192,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.79333335,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"22","depth":5,"bounds":{"left":0.76319444,"top":0.79333335,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"113","depth":5,"bounds":{"left":0.81666666,"top":0.79333335,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"19852","depth":5,"bounds":{"left":0.86180556,"top":0.79333335,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.79333335,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.52013886,"top":0.82,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"186,8 MB","depth":5,"bounds":{"left":0.70694447,"top":0.82,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"68","depth":5,"bounds":{"left":0.76319444,"top":0.82,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"782","depth":5,"bounds":{"left":0.81666666,"top":0.82,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"714","depth":5,"bounds":{"left":0.86180556,"top":0.82,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.82,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.8466667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"181,9 MB","depth":5,"bounds":{"left":0.70694447,"top":0.8466667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.8466667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"119","depth":5,"bounds":{"left":0.81666666,"top":0.8466667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11921","depth":5,"bounds":{"left":0.86180556,"top":0.8466667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.8466667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.87333333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"175,4 MB","depth":5,"bounds":{"left":0.70694447,"top":0.87333333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"25","depth":5,"bounds":{"left":0.76319444,"top":0.87333333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"124","depth":5,"bounds":{"left":0.81666666,"top":0.87333333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20766","depth":5,"bounds":{"left":0.86180556,"top":0.87333333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.87333333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Notion Calendar Helper (GPU)","depth":5,"bounds":{"left":0.52013886,"top":0.9,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"167,8 MB","depth":5,"bounds":{"left":0.70694447,"top":0.9,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"15","depth":5,"bounds":{"left":0.76319444,"top":0.9,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"171","depth":5,"bounds":{"left":0.81666666,"top":0.9,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"31499","depth":5,"bounds":{"left":0.86180556,"top":0.9,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.9,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.9266667,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"150,5 MB","depth":5,"bounds":{"left":0.70694447,"top":0.9266667,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.76319444,"top":0.9266667,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"121","depth":5,"bounds":{"left":0.81666666,"top":0.9266667,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"10891","depth":5,"bounds":{"left":0.86180556,"top":0.9266667,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.9266667,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":0.9533333,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"146,8 MB","depth":5,"bounds":{"left":0.70694447,"top":0.9533333,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":0.9533333,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"120","depth":5,"bounds":{"left":0.81666666,"top":0.9533333,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"20769","depth":5,"bounds":{"left":0.86180556,"top":0.9533333,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.9533333,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"Slack Helper","depth":5,"bounds":{"left":0.52013886,"top":0.98,"width":0.175,"height":0.015555556},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"145,1 MB","depth":5,"bounds":{"left":0.70694447,"top":0.98,"width":0.044444446,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"16","depth":5,"bounds":{"left":0.76319444,"top":0.98,"width":0.041666668,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"178","depth":5,"bounds":{"left":0.81666666,"top":0.98,"width":0.033333335,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"11982","depth":5,"bounds":{"left":0.86180556,"top":0.98,"width":0.027777778,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":0.98,"width":0.055555556,"height":0.015555556},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"FirefoxCP Isolated Web Content","depth":5,"bounds":{"left":0.52013886,"top":1.0,"width":0.175,"height":-0.0066666603},"automation_id":"_NS:31","role_description":"text"},{"role":"AXStaticText","text":"141,7 MB","depth":5,"bounds":{"left":0.70694447,"top":1.0,"width":0.044444446,"height":-0.0066666603},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"23","depth":5,"bounds":{"left":0.76319444,"top":1.0,"width":0.041666668,"height":-0.0066666603},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"120","depth":5,"bounds":{"left":0.81666666,"top":1.0,"width":0.033333335,"height":-0.0066666603},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"22480","depth":5,"bounds":{"left":0.86180556,"top":1.0,"width":0.027777778,"height":-0.0066666603},"automation_id":"_NS:9","role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":5,"bounds":{"left":0.9013889,"top":1.0,"width":0.055555556,"height":-0.0066666603},"automation_id":"_NS:9","role_description":"text"}]...
|
8915843203810871922
|
5186358875390121859
|
visual_change
|
accessibility
|
NULL
|
Physical Memory:
16,00 GB
Memory Used:
13,80 GB
Ca Physical Memory:
16,00 GB
Memory Used:
13,80 GB
Cached Files:
2,15 GB
Swap Used:
2,15 GB
4,07 GB
Wired Memory:
Compressed:
2,43 GB
6,74 GB
App Memory:
MEMORY PRESSURE
PhpStorm
3,27 GB
[PHONE]6
lukas
FirefoxCP Isolated Web Content
1,53 GB
24
123
20765
lukas
WindowServer
1,01 GB
21
3 197
404
_windowserver
Firefox GPU Helper
1 021,6 MB
32
249
20752
lukas
FirefoxCP Isolated Web Content
697,8 MB
28
126
21736
lukas
language_server_macos_arm
669,2 MB
24
74
23523
lukas
Firefox
536,3 MB
93
887
20737
lukas
Firefox GPU Helper
494,6 MB
30
229
10877
lukas
FirefoxCP Isolated Web Content
467,2 MB
23
121
20966
lukas
Firefox
429,1 MB
70
704
10868
lukas
FirefoxCP Isolated Web Content
422,9 MB
24
122
26198
lukas
FirefoxCP Isolated Web Content
418,5 MB
24
124
37425
lukas
claude.exe
379,5 MB
25
80
12929
lukas
Slack Helper (Renderer)
342,9 MB
15
162
11984
lukas
FirefoxCP Isolated Web Content
334,3 MB
23
119
10892
lukas
iTerm2
330,3 MB
7
476
718
lukas
java
306,6 MB
57
207
23228
lukas
FirefoxCP Isolated Web Content
303,6 MB
23
119
25036
lukas
Notion Calendar Helper (Renderer)
271,5 MB
16
185
31501
lukas
FirefoxCP Isolated Web Content
267,8 MB
25
127
15392
lukas
FirefoxCP Isolated Web Content
266,2 MB
26
124
20989
lukas
Claude Helper (Renderer)
264,7 MB
15
203
998
lukas
cef_server Helper (GPU)
250,5 MB
16
166
23570
lukas
Claude Helper
242,5 MB
18
200
891
lukas
FirefoxCP Isolated Web Content
205,7 MB
23
120
21298
lukas
FirefoxCP Isolated Web Content
192,5 MB
22
113
19852
lukas
Claude
186,8 MB
68
782
714
lukas
FirefoxCP Isolated Web Content
181,9 MB
23
119
11921
lukas
FirefoxCP Isolated Web Content
175,4 MB
25
124
20766
lukas
Notion Calendar Helper (GPU)
167,8 MB
15
171
31499
lukas
FirefoxCP Isolated Web Content
150,5 MB
24
121
10891
lukas
FirefoxCP Isolated Web Content
146,8 MB
23
120
20769
lukas
Slack Helper
145,1 MB
16
178
11982
lukas
FirefoxCP Isolated Web Content
141,7 MB
23
120
22480
lukas...
|
61917
|
|
31753
|
645
|
38
|
2026-04-16T06:31:27.866823+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321087866_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp11 Opengithub.com/jiminny/app/pull/11879/changes#diff-ad7d09d1369ba6814f9dec67c66ecf315ace7dc9ab3d9f3bff955260afdf98c1Jy 20541 cleanup stale purged crm objects #11879All commitsVasil-Jiminny Wants to merge 37 commits into master from JY-20541-cleanup-stale-purged-crm-objectsM°Q Filter files…..& For you - Confluencev F7 appapp/Listeners/Activities/Crm/MatchCrmObject.php M@a -1,41 +1,38 @sronp(6) Lukas Kovalik - Time Offh-vents/Crmu Product Growth Plattorm Userpilo" Userpilot• RemoteCrmRecordDeleted.phpListenersnamespace Jiminny\Listeners\Activities\Crm;• fix(security): composer dependendAcuiviuies/crmiMatchCrmObject.php• Crm- use Exception;use Illuminate\Contracts|QueuelShouldQueue;use Jiminny\Contracts\Services\Crm\ServiceInterface;New Tab+) RemoteCrmRecordDeletedLi…* Jy 20541 cleanup stale purged+ New Tab# ProvidersE EventServiceProvider.phpv = Services/Crmuse Jiminny\Exceptions\HttpSessionExpiredException;use Jiminny\Exceptions\SocialAccountTokenInvalidException;CrmObjects/ValidatorsD StaleRecordValidator.phpE CachedCrmServiceDecorator....E ProspectCache.php> tests/Unituse satlamly modetsruse Jiminny\Models\Stage;use Jiminny\Repositories\TeamRepository;use Jiminny\Services\Activity\CrmOwnerResolver;- use Jiminny\Services\Crm\BaseService;use Jiminny\Services|Crm\CachedCrmServiceDecorator;use Jiminny|Services\Crm\EmailHelper;use Jiminny\Services\Crm\ProspectSearchStrategyFactory;use Psr\Log\LoggerInterface;class MatchCrmObiect implements ShouldQueue/*** Match the remote CRM relations to the participant as they join.* @param mixed Sevent* ethrovs Exceptionpublic function handle($event): void$teamRepository = app (TeamRepository::class);$logger = app(LoggerInterface::class);/** @var Models\Participant $participant */$participant = $event->getParticipant();/** @var Models\Activity Sactivity */$activity = sevent->getActivity();// Don't bother if they are a team member.C -50,7 +47,6 @ public function handle($event): void203+prospectsearchstrategy-Prospectsearchstrdtegyraccory..matcntsteam,if ($prospectSearchStrategy->ignoreCrmMatchData()) {-C< →0 ll • | Daily - Platform • in 14mA100% CS•Thu 16 Apr 9:31:27O 1/12 viewed• Awallind aporovaliVomitrevew458 -680044• Viewed<?php+ declare(strict, typessa);namespace Jiminny\Listeners\Activities\Crm;use Letuninae contractsyueue onouavueue.use Jiminny\Contracts\Services\Crm\ServiceInterface;+ use Jiminny\Events\Activities\Participants\Joined;use Jiminny\Exceptions\HttpSessionExpiredException;use Jiminny\Exceptions\SocialAccountTokenInvalidException;+ use Jiminny\Listeners\Activities\Connections\0pened;use Jiminny\Models;use Jiminny\Models|Stage;use Jiminny\Repositories\TeamRepository;use Jiminny\Services\Activity\CrmownerResolver;use Jiminny|Services|Crm\CachedCrmServiceDecorator;use Jiminny|Services\Crm\EmailHelper;use Jiminny\Services\Crm\ProspectSearchStrategyFactory:+ use Psr\Container\ContainerExceptionInterface;+ use Psr\Container|NotFoundExceptionInterface;use Psr\Log|LoggerInterface;class MatchCrmObject implements ShouldQueue* Match the remote CRM relations to the participant as they join.17212223262729 +30313538puslic funetion handle(opened |Joined Sevent): voidsemailHelper = app(EmailHelper::class);steamRepository = app(TeamRepository::class);Slogger = app(LoggerInterface: :class);Sparticipant = $event->getParticipant();Sactivity = $event->getActivity();1l Don't bother if they are a team member.$prospectSearchStrategy = ProspectSearchStrategyFactory::match($team);if ($prospectSearchStrategy->ignoreCrmMatchData()) {...
|
NULL
|
8915548760605048162
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp11 Opengithub.com/jiminny/app/pull/11879/changes#diff-ad7d09d1369ba6814f9dec67c66ecf315ace7dc9ab3d9f3bff955260afdf98c1Jy 20541 cleanup stale purged crm objects #11879All commitsVasil-Jiminny Wants to merge 37 commits into master from JY-20541-cleanup-stale-purged-crm-objectsM°Q Filter files…..& For you - Confluencev F7 appapp/Listeners/Activities/Crm/MatchCrmObject.php M@a -1,41 +1,38 @sronp(6) Lukas Kovalik - Time Offh-vents/Crmu Product Growth Plattorm Userpilo" Userpilot• RemoteCrmRecordDeleted.phpListenersnamespace Jiminny\Listeners\Activities\Crm;• fix(security): composer dependendAcuiviuies/crmiMatchCrmObject.php• Crm- use Exception;use Illuminate\Contracts|QueuelShouldQueue;use Jiminny\Contracts\Services\Crm\ServiceInterface;New Tab+) RemoteCrmRecordDeletedLi…* Jy 20541 cleanup stale purged+ New Tab# ProvidersE EventServiceProvider.phpv = Services/Crmuse Jiminny\Exceptions\HttpSessionExpiredException;use Jiminny\Exceptions\SocialAccountTokenInvalidException;CrmObjects/ValidatorsD StaleRecordValidator.phpE CachedCrmServiceDecorator....E ProspectCache.php> tests/Unituse satlamly modetsruse Jiminny\Models\Stage;use Jiminny\Repositories\TeamRepository;use Jiminny\Services\Activity\CrmOwnerResolver;- use Jiminny\Services\Crm\BaseService;use Jiminny\Services|Crm\CachedCrmServiceDecorator;use Jiminny|Services\Crm\EmailHelper;use Jiminny\Services\Crm\ProspectSearchStrategyFactory;use Psr\Log\LoggerInterface;class MatchCrmObiect implements ShouldQueue/*** Match the remote CRM relations to the participant as they join.* @param mixed Sevent* ethrovs Exceptionpublic function handle($event): void$teamRepository = app (TeamRepository::class);$logger = app(LoggerInterface::class);/** @var Models\Participant $participant */$participant = $event->getParticipant();/** @var Models\Activity Sactivity */$activity = sevent->getActivity();// Don't bother if they are a team member.C -50,7 +47,6 @ public function handle($event): void203+prospectsearchstrategy-Prospectsearchstrdtegyraccory..matcntsteam,if ($prospectSearchStrategy->ignoreCrmMatchData()) {-C< →0 ll • | Daily - Platform • in 14mA100% CS•Thu 16 Apr 9:31:27O 1/12 viewed• Awallind aporovaliVomitrevew458 -680044• Viewed<?php+ declare(strict, typessa);namespace Jiminny\Listeners\Activities\Crm;use Letuninae contractsyueue onouavueue.use Jiminny\Contracts\Services\Crm\ServiceInterface;+ use Jiminny\Events\Activities\Participants\Joined;use Jiminny\Exceptions\HttpSessionExpiredException;use Jiminny\Exceptions\SocialAccountTokenInvalidException;+ use Jiminny\Listeners\Activities\Connections\0pened;use Jiminny\Models;use Jiminny\Models|Stage;use Jiminny\Repositories\TeamRepository;use Jiminny\Services\Activity\CrmownerResolver;use Jiminny|Services|Crm\CachedCrmServiceDecorator;use Jiminny|Services\Crm\EmailHelper;use Jiminny\Services\Crm\ProspectSearchStrategyFactory:+ use Psr\Container\ContainerExceptionInterface;+ use Psr\Container|NotFoundExceptionInterface;use Psr\Log|LoggerInterface;class MatchCrmObject implements ShouldQueue* Match the remote CRM relations to the participant as they join.17212223262729 +30313538puslic funetion handle(opened |Joined Sevent): voidsemailHelper = app(EmailHelper::class);steamRepository = app(TeamRepository::class);Slogger = app(LoggerInterface: :class);Sparticipant = $event->getParticipant();Sactivity = $event->getActivity();1l Don't bother if they are a team member.$prospectSearchStrategy = ProspectSearchStrategyFactory::match($team);if ($prospectSearchStrategy->ignoreCrmMatchData()) {...
|
NULL
|
|
30992
|
628
|
80
|
2026-04-15T15:16:33.357395+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776266193357_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
19218178384221064401158186/200Imperial AgePlayer 8 19218178384221064401158186/200Imperial AgePlayer 8 Almish Yiltawar!!!--Halberdier Created--Monk Created----Elite Longbowman Created---Light Cavalry Created-Game Paused (P)Right-click to attack this unit!1 kovaliklukas: 52997/52997E Magnus Olafason: 40786/40786 3 IV8 Almish Yiltawar: 39772/39772 GIVRajyapala: 23275/23275NV6LAca16 I: 12440/12440 2 NVE Maximilian of Habsbung: 6531/6531 H IV3 HuaseÁn: 5931/50314 Lowig VI: 5792/5702 0...
|
NULL
|
8915450945214275301
|
NULL
|
click
|
ocr
|
NULL
|
19218178384221064401158186/200Imperial AgePlayer 8 19218178384221064401158186/200Imperial AgePlayer 8 Almish Yiltawar!!!--Halberdier Created--Monk Created----Elite Longbowman Created---Light Cavalry Created-Game Paused (P)Right-click to attack this unit!1 kovaliklukas: 52997/52997E Magnus Olafason: 40786/40786 3 IV8 Almish Yiltawar: 39772/39772 GIVRajyapala: 23275/23275NV6LAca16 I: 12440/12440 2 NVE Maximilian of Habsbung: 6531/6531 H IV3 HuaseÁn: 5931/50314 Lowig VI: 5792/5702 0...
|
NULL
|
|
7141
|
127
|
1
|
2026-04-13T14:37:30.260815+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-13/1776 /Users/lukas/.screenpipe/data/data/2026-04-13/1776091050260_m1.jpg...
|
Code
|
Getting started with Cla… — screenpipe [SSH: 100.7 Getting started with Cla… — screenpipe [SSH: 100.73.206.126]...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧ Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update Extensions (⇧⌘X) - 2 require update
2
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
Untitled-2, Editor Group 1
docker-compose.yml, preview, Editor Group 1
services:
screenpipe-app:
build: .
container_name: screenpipe-app
restart: unless-stopped
ports:
- "8766:8000"
volumes:
- /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro
- /volume1/screenpipe/data:/data/data:ro
env_file:
- .env
environment:
TZ: Europe/Sofia
services:
screenpipe-app:
build: .
container_name: screenpipe-app
restart: unless-stopped
ports:
- "8766:8000"
volumes:
- /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro
- /volume1/screenpipe/data:/data/data:ro
env_file:
- .env
environment:
TZ: Europe/Sofia
Getting started with Cla…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Notifications
Sign In
Sign In
Screen Reader Optimized
expanded
Command Succeeded
Getting started with Claude agent SDK
Session history
New session
Message actions
how to start it
Thinking
Thinking
Let me check what's in your working directory to understand what you're referring to.
Bash
IN
ls /volume1/screenpipe
Copy code to clipboard
OUT
app
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
IN
ls /volume1/screenpipe/app && ls /volume1/screenpipe/pipes
Copy code to clipboard
OUT
cli.py
consumers
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
static
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Read
docker-compose.yml
docker-compose.yml
This is a Screenpipe app with a Docker Compose setup. To start it:
Copy code to clipboard
cd /volume1/screenpipe/app
docker compose up -d
This builds the image (first run) and starts the container in the background
The app will be accessible at
[URL_WITH_CREDENTIALS]
sudo docker compose -f /volume1/screenpipe/app/docker-compose.yml up -d
Once running, the dashboard will be at
http://your-nas-ip:8766
http://your-nas-ip:8766
and it will query the data you already copied — the database has 6,923 frames and 5,464 OCR records ready to go.
Message actions
docker-compose.yml
docker-compose.yml
I have ugos ugreen nas. I can see the ui but it is empty. No data. Also when I open it there is defsault today, lets make default yesterday.
✢
Concocting...
Queue another message…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Explorer (⇧⌘E)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Search (⇧⌘F)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Source Control (⌃⇧G)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Run and Debug (⇧⌘D)","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Remote Explorer","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Extensions (⇧⌘X) - 2 require update Extensions (⇧⌘X) - 2 require update","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Claude Code","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Containers","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"EXPLORER","depth":17,"role_description":"heading"},{"role":"AXStaticText","text":"EXPLORER","depth":18,"role_description":"text"},{"role":"AXButton","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"Explorer Section: screenpipe [SSH: 100.73.206.126]","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"SCREENPIPE [SSH: 100.73.206.126]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"#recycle","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"consumers","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"static","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":".env","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"cli.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"docker-compose.yml","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"main.py","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"requirements.txt","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"data","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"pipes","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite","depth":27,"role_description":"text"},{"role":"AXButton","text":"Outline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"OUTLINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"OUTLINE","depth":23,"role_description":"text"},{"role":"AXButton","text":"Timeline Section","depth":21,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXHeading","text":"TIMELINE","depth":22,"role_description":"heading"},{"role":"AXStaticText","text":"TIMELINE","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"pipe.md, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Untitled-2, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"docker-compose.yml, preview, Editor Group 1","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"","depth":29,"role_description":"text"},{"role":"AXTextArea","text":"services:\n screenpipe-app:\n build: .\n container_name: screenpipe-app\n restart: unless-stopped\n ports:\n - \"8766:8000\"\n volumes:\n - /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro\n - /volume1/screenpipe/data:/data/data:ro\n env_file:\n - .env\n environment:\n TZ: Europe/Sofia","depth":28,"value":"services:\n screenpipe-app:\n build: .\n container_name: screenpipe-app\n restart: unless-stopped\n ports:\n - \"8766:8000\"\n volumes:\n - /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro\n - /volume1/screenpipe/data:/data/data:ro\n env_file:\n - .env\n environment:\n TZ: Europe/Sofia","role_description":"editor","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"services:\n screenpipe-app:\n build: .\n container_name: screenpipe-app\n restart: unless-stopped\n ports:\n - \"8766:8000\"\n volumes:\n - /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro\n - /volume1/screenpipe/data:/data/data:ro\n env_file:\n - .env\n environment:\n TZ: Europe/Sofia","depth":29,"role_description":"text"},{"role":"AXRadioButton","text":"Getting started with Cla…, Editor Group 2","depth":28,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Problems (⇧⌘M)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PROBLEMS","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Output (⇧⌘U)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUTPUT","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Debug Console (⇧⌘Y)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DEBUG CONSOLE","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Terminal (⌃`)","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":true},{"role":"AXStaticText","text":"TERMINAL","depth":24,"role_description":"text"},{"role":"AXRadioButton","text":"Ports","depth":22,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"PORTS","depth":24,"role_description":"text"},{"role":"AXButton","text":"remote SSH: 100.73.206.126","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"SSH: 100.73.206.126","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Problems","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"No Ports Forwarded","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"0","depth":17,"role_description":"text"},{"role":"AXButton","text":"Notifications","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sign In","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Sign In","depth":17,"role_description":"text"},{"role":"AXButton","text":"Screen Reader Optimized","depth":16,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"expanded","depth":12,"role_description":"text"},{"role":"AXStaticText","text":"Command Succeeded","depth":12,"role_description":"text"},{"role":"AXButton","text":"Getting started with Claude agent SDK","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Session history","depth":18,"help_text":"Session history","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New session","depth":18,"help_text":"New session","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"how to start it","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Let me check what's in your working directory to understand what you're referring to.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"app\ndata\ndb.sqlite\npipes\n#recycle\n[rerun: b1]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/app && ls /volume1/screenpipe/pipes","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"cli.py\nconsumers\ndb.py\ndocker-compose.yml\nDockerfile\nmain.py\nrequirements.txt\nstatic\nai-habits\nday-recap\nmeeting-summary\nstandup-update\ntime-breakdown\nvideo-export\n[rerun: b2]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":23,"role_description":"text"},{"role":"AXLink","text":"docker-compose.yml","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"docker-compose.yml","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"This is a Screenpipe app with a Docker Compose setup. To start it:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"cd /volume1/screenpipe/app\ndocker compose up -d","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"This builds the image (first run) and starts the container in the background","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"The app will be accessible at","depth":23,"role_description":"text"},{"role":"AXLink","text":"http://your-server-ip:8766","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"http://your-server-ip:8766","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"To check if it's running:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"docker compose ps","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"To view logs:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"docker compose logs -f","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Make sure an","depth":22,"role_description":"text"},{"role":"AXStaticText","text":".env","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"file exists in","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/app/","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"before starting — the compose file references one (","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"env_file: .env","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"). If it's missing, the container will fail to start.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls /volume1/screenpipe/app/.env 2>/dev/null && echo \"exists\" || echo \"MISSING\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/app/.env\nexists\n[rerun: b3]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"The","depth":22,"role_description":"text"},{"role":"AXStaticText","text":".env","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"file exists, so you're good to go. Just run:","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"cd /volume1/screenpipe/app && docker compose up -d","depth":24,"role_description":"text"},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"docker-compose.yml","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"docker-compose.yml","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"I opened it but there are no data after I coppied it there. the idea behind this app is to have the data pasted form screenpipe mac app and only query it and work with it","depth":24,"role_description":"text"},{"role":"AXButton","text":"Thinking","depth":22,"role_description":"disclosure triangle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thinking","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Let me check the current state of the data.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ls -lh /volume1/screenpipe/db.sqlite && ls /volume1/screenpipe/data/ | head -20","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"-rwxrwxrwx 1 Adm1n admin 423M Apr 13 17:20 /volume1/screenpipe/db.sqlite\n2026-04-09\n2026-04-11\n2026-04-12\n[rerun: b1]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \".tables\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx\n[rerun: b2]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 /volume1/screenpipe/db.sqlite \"SELECT COUNT(*) FROM frames; SELECT COUNT(*) FROM ocr_text; SELECT COUNT(*) FROM audio_transcriptions;\"","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"6923\n5464\n3\n[rerun: b3]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"The data is there — 423MB database with 6,923 frames and 5,464 OCR records. The app just isn't running yet. Let me check what the app actually does and whether it can query this data properly.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":23,"role_description":"text"},{"role":"AXLink","text":"main.py","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"main.py","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Read","depth":23,"role_description":"text"},{"role":"AXLink","text":"db.py","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"db.py","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"The data is actually there — the database has 423MB of data. The app just needs to be started. Let me start it:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume1/screenpipe/app && docker compose up -d 2>&1","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Exit code 1\npermission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get \"http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Dapp%22%3Atrue%7D%7D\": dial unix /var/run/docker.sock: connect: permission denied\n[rerun: b4]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sudo docker compose -f /volume1/screenpipe/app/docker-compose.yml up -d 2>&1","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Exit code 1\nsudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper\nsudo: a password is required\n[rerun: b5]","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Bash","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"IN","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"groups && id","depth":24,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":23,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"OUT","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"admin users ughomeusers Media Social\nuid=1000(Adm1n) gid=10(admin) groups=10(admin),100(users),133(ughomeusers),1001(Media),1002(Social)\n[rerun: b6]","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"You need to run Docker with elevated privileges. You're not in the","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"docker","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"group. There are two options:","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Option 1 — Run via Synology's Container Manager (DSM GUI)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Open DSM → Container Manager → Project → Create project → point it to","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"/volume1/screenpipe/app/docker-compose.yml","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Option 2 — Add yourself to the docker group (requires admin/root once)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Open an SSH terminal as root (or via DSM terminal with admin):","depth":22,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"sudo synogroup --add docker Adm1n\n# then log out and back in, then:\ncd /volume1/screenpipe/app && docker compose up -d","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Option 3 — Run it directly from an SSH session with sudo","depth":23,"role_description":"text"},{"role":"AXButton","text":"Copy code to clipboard","depth":22,"help_text":"Copy code","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"ssh admin@your-nas-ip\nsudo docker compose -f /volume1/screenpipe/app/docker-compose.yml up -d","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Once running, the dashboard will be at","depth":22,"role_description":"text"},{"role":"AXLink","text":"http://your-nas-ip:8766","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"http://your-nas-ip:8766","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"and it will query the data you already copied — the database has 6,923 frames and 5,464 OCR records ready to go.","depth":22,"role_description":"text"},{"role":"AXButton","text":"Message actions","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"docker-compose.yml","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"docker-compose.yml","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"I have ugos ugreen nas. I can see the ui but it is empty. No data. Also when I open it there is defsault today, lets make default yesterday.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"✢","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Concocting...","depth":21,"role_description":"text"},{"role":"AXTextArea","text":"Queue another message…","depth":23,"value":"Queue another message…","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
8915180362668837734
|
-8844610703549884911
|
idle
|
accessibility
|
NULL
|
Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧ Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧G)
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update Extensions (⇧⌘X) - 2 require update
2
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
Explorer Section: screenpipe [SSH: [IP_ADDRESS]]
SCREENPIPE [SSH: [IP_ADDRESS]]
#recycle
app
consumers
static
.env
cli.py
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
data
pipes
db.sqlite
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
pipe.md, Editor Group 1
Untitled-2, Editor Group 1
docker-compose.yml, preview, Editor Group 1
services:
screenpipe-app:
build: .
container_name: screenpipe-app
restart: unless-stopped
ports:
- "8766:8000"
volumes:
- /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro
- /volume1/screenpipe/data:/data/data:ro
env_file:
- .env
environment:
TZ: Europe/Sofia
services:
screenpipe-app:
build: .
container_name: screenpipe-app
restart: unless-stopped
ports:
- "8766:8000"
volumes:
- /volume1/screenpipe/db.sqlite:/data/db.sqlite:ro
- /volume1/screenpipe/data:/data/data:ro
env_file:
- .env
environment:
TZ: Europe/Sofia
Getting started with Cla…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: [IP_ADDRESS]
SSH: [IP_ADDRESS]
No Problems
0
0
No Ports Forwarded
0
Notifications
Sign In
Sign In
Screen Reader Optimized
expanded
Command Succeeded
Getting started with Claude agent SDK
Session history
New session
Message actions
how to start it
Thinking
Thinking
Let me check what's in your working directory to understand what you're referring to.
Bash
IN
ls /volume1/screenpipe
Copy code to clipboard
OUT
app
data
db.sqlite
pipes
#recycle
[rerun: b1]
Bash
IN
ls /volume1/screenpipe/app && ls /volume1/screenpipe/pipes
Copy code to clipboard
OUT
cli.py
consumers
db.py
docker-compose.yml
Dockerfile
main.py
requirements.txt
static
ai-habits
day-recap
meeting-summary
standup-update
time-breakdown
video-export
[rerun: b2]
Read
docker-compose.yml
docker-compose.yml
This is a Screenpipe app with a Docker Compose setup. To start it:
Copy code to clipboard
cd /volume1/screenpipe/app
docker compose up -d
This builds the image (first run) and starts the container in the background
The app will be accessible at
[URL_WITH_CREDENTIALS]
sudo docker compose -f /volume1/screenpipe/app/docker-compose.yml up -d
Once running, the dashboard will be at
http://your-nas-ip:8766
http://your-nas-ip:8766
and it will query the data you already copied — the database has 6,923 frames and 5,464 OCR records ready to go.
Message actions
docker-compose.yml
docker-compose.yml
I have ugos ugreen nas. I can see the ui but it is empty. No data. Also when I open it there is defsault today, lets make default yesterday.
✢
Concocting...
Queue another message…...
|
NULL
|
|
39711
|
808
|
10
|
2026-04-16T14:03:07.686541+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776348187686_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
System Settings File Edit ViewWindowHelp‹$0(ah)100 System Settings File Edit ViewWindowHelp‹$0(ah)100% <478Thu 16 Apr 17:03:07181-zshAPP (-zsh)DOCKERO ₴1--sync-token <SYNC_TOKEN>API token for cloud syncDEV (-zsh)0 82• *3-zsh• x4-zsh[env: [ENV_SECRET] <SYNC_PASSWORD>Password for encrypting synced data[env: [ENV_SECRET] <SYNC_INTERVAL_SECS>Interval between sync cycles in seconds[default: 300]--sync-machine-id <SYNC_MACHINE_ID>Override the machine ID for this device--pause-on-drm-contentPause screen and audio capture when DRM content (Netflix, Disney+, etc.) is detected--api-authRequire authentication for remote API access. When enabled, non-localhost requests must include Authorization: Bearer «SCREENPIPE_API_KEY>. Localhost requests are always allowed--encrypt-secretsEncrypt secrets (API keys, OAuth tokens) at rest using the OS keychain. Creates a keychain key if one doesn't exist. Without this flag, the CLI will use an existing key (created by the desktop app) but won't create one--retention-days <RETENTION_DAYS>Local data retention in days. Old screen/audio data is auto-deleted after this period. Set to 0 to disable retention (keep data forever)[default: 14]-h, --helpPrint help (see a summary with '-h')lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe®latest record --disable-audio --ignored-apps "Boosteroid"error: unexpected argument '--ignored-apps' foundtip: a similar argument exists: '--ignored-urls'Usage: screenpipe record --disable-audio --ignored-urls <IGNORED_URLS>For more information, try '--help'.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
8915172812569467681
|
NULL
|
click
|
ocr
|
NULL
|
System Settings File Edit ViewWindowHelp‹$0(ah)100 System Settings File Edit ViewWindowHelp‹$0(ah)100% <478Thu 16 Apr 17:03:07181-zshAPP (-zsh)DOCKERO ₴1--sync-token <SYNC_TOKEN>API token for cloud syncDEV (-zsh)0 82• *3-zsh• x4-zsh[env: [ENV_SECRET] <SYNC_PASSWORD>Password for encrypting synced data[env: [ENV_SECRET] <SYNC_INTERVAL_SECS>Interval between sync cycles in seconds[default: 300]--sync-machine-id <SYNC_MACHINE_ID>Override the machine ID for this device--pause-on-drm-contentPause screen and audio capture when DRM content (Netflix, Disney+, etc.) is detected--api-authRequire authentication for remote API access. When enabled, non-localhost requests must include Authorization: Bearer «SCREENPIPE_API_KEY>. Localhost requests are always allowed--encrypt-secretsEncrypt secrets (API keys, OAuth tokens) at rest using the OS keychain. Creates a keychain key if one doesn't exist. Without this flag, the CLI will use an existing key (created by the desktop app) but won't create one--retention-days <RETENTION_DAYS>Local data retention in days. Old screen/audio data is auto-deleted after this period. Set to 0 to disable retention (keep data forever)[default: 14]-h, --helpPrint help (see a summary with '-h')lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe®latest record --disable-audio --ignored-apps "Boosteroid"error: unexpected argument '--ignored-apps' foundtip: a similar argument exists: '--ignored-urls'Usage: screenpipe record --disable-audio --ignored-urls <IGNORED_URLS>For more information, try '--help'.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
39710
|
|
76858
|
1928
|
33
|
2026-04-24T08:30:20.415130+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777019420415_m2.jpg...
|
PhpStorm
|
faVsco.js – ReportController.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\Webhook;
use Carbon\Carbon;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Http\Controllers\AbstractController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class ReportController extends AbstractController
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[Report Ready]';
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly BusDispatcher $dispatcher,
private readonly LoggerInterface $logger,
private readonly AutomatedReportsCallbackService $callbackService,
private readonly EventDispatcher $eventDispatcher,
) {
}
public function ready(Request $request): JsonResponse
{
$payload = $request->all();
$now = Carbon::now();
$this->logger->info(self::LOG_PREFIX . ' Webhook received', [
'payload' => $payload,
]);
// validate
$reportUuid = $this->callbackService->getResultUuid($payload);
if (empty($reportUuid)) {
return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);
}
try {
$report = $this->automatedReportsService->getReportResult($reportUuid);
// validate
if ($this->callbackService->isProcessed($report)) {
$this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [
'uuid' => $reportUuid,
'currentStatus' => $report->getStatusLabel(),
]);
return response()->json(['status' => 'already_processed']);
}
// always try to get a child podcast cause report configuration cannot be trusted
$reportPodcast = $this->automatedReportsService->findChildResult(
result: $report,
type: AutomatedReportsService::MEDIA_TYPE_PODCAST
);
// update results
$report->update([
'status' => $this->callbackService->getPrimaryStatus($report, $payload),
'response' => $payload,
'generated_at' => $now,
]);
// if a podcast is set, update it
$reportPodcast?->update([
'status' => $this->callbackService->getPodcastStatus($payload),
'response' => $payload,
'generated_at' => $now,
]);
$this->logger->info(self::LOG_PREFIX . ' Report has been processed', [
'uuid' => $reportUuid,
'child_uuid' => $reportPodcast?->getUuid(),
]);
if (! $this->callbackService->isSuccess($payload)) {
$this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);
return response()->json(['status' => 'ok']);
}
// If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)
if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {
// send the primary report
$this->dispatcher->dispatch(new SendReportJob($reportUuid));
// send the podcast report if it set and generated
if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {
$this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));
}
}
// Track Datadog metrics for automated reports
$automatedReport = $report->getReport();
$this->callbackService->pushToDatadog($automatedReport, $report);
if ($reportPodcast) {
$this->callbackService->pushToDatadog($automatedReport, $reportPodcast);
}
// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [
// 'report_uuid' => $automatedReport->getUuid(),
// 'result_uuid' => $reportUuid,
// ]);
$this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));
} catch (ModelNotFoundException $exception) {
$this->logger->error(self::LOG_PREFIX . ' Report not found', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);
} catch (Throwable $exception) {
$this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);
}
return response()->json(['status' => 'ok']);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20738-debug-AJ-tracking-UP, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.08510638,"height":0.025538707},"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8400931,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"ReportControllerTest","depth":6,"bounds":{"left":0.85538566,"top":0.019952115,"width":0.06017287,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'ReportControllerTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\Webhook;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Http\\Controllers\\AbstractController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass ReportController extends AbstractController\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[Report Ready]';\n\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly BusDispatcher $dispatcher,\n private readonly LoggerInterface $logger,\n private readonly AutomatedReportsCallbackService $callbackService,\n private readonly EventDispatcher $eventDispatcher,\n ) {\n }\n\n public function ready(Request $request): JsonResponse\n {\n $payload = $request->all();\n $now = Carbon::now();\n\n $this->logger->info(self::LOG_PREFIX . ' Webhook received', [\n 'payload' => $payload,\n ]);\n\n // validate\n $reportUuid = $this->callbackService->getResultUuid($payload);\n if (empty($reportUuid)) {\n return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);\n }\n\n try {\n $report = $this->automatedReportsService->getReportResult($reportUuid);\n\n // validate\n if ($this->callbackService->isProcessed($report)) {\n $this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [\n 'uuid' => $reportUuid,\n 'currentStatus' => $report->getStatusLabel(),\n ]);\n\n return response()->json(['status' => 'already_processed']);\n }\n\n // always try to get a child podcast cause report configuration cannot be trusted\n $reportPodcast = $this->automatedReportsService->findChildResult(\n result: $report,\n type: AutomatedReportsService::MEDIA_TYPE_PODCAST\n );\n\n // update results\n $report->update([\n 'status' => $this->callbackService->getPrimaryStatus($report, $payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n // if a podcast is set, update it\n $reportPodcast?->update([\n 'status' => $this->callbackService->getPodcastStatus($payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n\n $this->logger->info(self::LOG_PREFIX . ' Report has been processed', [\n 'uuid' => $reportUuid,\n 'child_uuid' => $reportPodcast?->getUuid(),\n ]);\n\n if (! $this->callbackService->isSuccess($payload)) {\n $this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);\n\n return response()->json(['status' => 'ok']);\n }\n\n // If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)\n if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {\n // send the primary report\n $this->dispatcher->dispatch(new SendReportJob($reportUuid));\n\n // send the podcast report if it set and generated\n if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {\n $this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));\n }\n }\n\n // Track Datadog metrics for automated reports\n $automatedReport = $report->getReport();\n $this->callbackService->pushToDatadog($automatedReport, $report);\n\n if ($reportPodcast) {\n $this->callbackService->pushToDatadog($automatedReport, $reportPodcast);\n }\n\n// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [\n// 'report_uuid' => $automatedReport->getUuid(),\n// 'result_uuid' => $reportUuid,\n// ]);\n $this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));\n } catch (ModelNotFoundException $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Report not found', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);\n } catch (Throwable $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);\n }\n\n return response()->json(['status' => 'ok']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\Webhook;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Http\\Controllers\\AbstractController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass ReportController extends AbstractController\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[Report Ready]';\n\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly BusDispatcher $dispatcher,\n private readonly LoggerInterface $logger,\n private readonly AutomatedReportsCallbackService $callbackService,\n private readonly EventDispatcher $eventDispatcher,\n ) {\n }\n\n public function ready(Request $request): JsonResponse\n {\n $payload = $request->all();\n $now = Carbon::now();\n\n $this->logger->info(self::LOG_PREFIX . ' Webhook received', [\n 'payload' => $payload,\n ]);\n\n // validate\n $reportUuid = $this->callbackService->getResultUuid($payload);\n if (empty($reportUuid)) {\n return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);\n }\n\n try {\n $report = $this->automatedReportsService->getReportResult($reportUuid);\n\n // validate\n if ($this->callbackService->isProcessed($report)) {\n $this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [\n 'uuid' => $reportUuid,\n 'currentStatus' => $report->getStatusLabel(),\n ]);\n\n return response()->json(['status' => 'already_processed']);\n }\n\n // always try to get a child podcast cause report configuration cannot be trusted\n $reportPodcast = $this->automatedReportsService->findChildResult(\n result: $report,\n type: AutomatedReportsService::MEDIA_TYPE_PODCAST\n );\n\n // update results\n $report->update([\n 'status' => $this->callbackService->getPrimaryStatus($report, $payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n // if a podcast is set, update it\n $reportPodcast?->update([\n 'status' => $this->callbackService->getPodcastStatus($payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n\n $this->logger->info(self::LOG_PREFIX . ' Report has been processed', [\n 'uuid' => $reportUuid,\n 'child_uuid' => $reportPodcast?->getUuid(),\n ]);\n\n if (! $this->callbackService->isSuccess($payload)) {\n $this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);\n\n return response()->json(['status' => 'ok']);\n }\n\n // If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)\n if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {\n // send the primary report\n $this->dispatcher->dispatch(new SendReportJob($reportUuid));\n\n // send the podcast report if it set and generated\n if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {\n $this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));\n }\n }\n\n // Track Datadog metrics for automated reports\n $automatedReport = $report->getReport();\n $this->callbackService->pushToDatadog($automatedReport, $report);\n\n if ($reportPodcast) {\n $this->callbackService->pushToDatadog($automatedReport, $reportPodcast);\n }\n\n// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [\n// 'report_uuid' => $automatedReport->getUuid(),\n// 'result_uuid' => $reportUuid,\n// ]);\n $this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));\n } catch (ModelNotFoundException $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Report not found', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);\n } catch (Throwable $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);\n }\n\n return response()->json(['status' => 'ok']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"bounds":{"left":0.96210104,"top":0.10055866,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09896249,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8915078219557232385
|
-168143141547558144
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\Webhook;
use Carbon\Carbon;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Http\Controllers\AbstractController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class ReportController extends AbstractController
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[Report Ready]';
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly BusDispatcher $dispatcher,
private readonly LoggerInterface $logger,
private readonly AutomatedReportsCallbackService $callbackService,
private readonly EventDispatcher $eventDispatcher,
) {
}
public function ready(Request $request): JsonResponse
{
$payload = $request->all();
$now = Carbon::now();
$this->logger->info(self::LOG_PREFIX . ' Webhook received', [
'payload' => $payload,
]);
// validate
$reportUuid = $this->callbackService->getResultUuid($payload);
if (empty($reportUuid)) {
return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);
}
try {
$report = $this->automatedReportsService->getReportResult($reportUuid);
// validate
if ($this->callbackService->isProcessed($report)) {
$this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [
'uuid' => $reportUuid,
'currentStatus' => $report->getStatusLabel(),
]);
return response()->json(['status' => 'already_processed']);
}
// always try to get a child podcast cause report configuration cannot be trusted
$reportPodcast = $this->automatedReportsService->findChildResult(
result: $report,
type: AutomatedReportsService::MEDIA_TYPE_PODCAST
);
// update results
$report->update([
'status' => $this->callbackService->getPrimaryStatus($report, $payload),
'response' => $payload,
'generated_at' => $now,
]);
// if a podcast is set, update it
$reportPodcast?->update([
'status' => $this->callbackService->getPodcastStatus($payload),
'response' => $payload,
'generated_at' => $now,
]);
$this->logger->info(self::LOG_PREFIX . ' Report has been processed', [
'uuid' => $reportUuid,
'child_uuid' => $reportPodcast?->getUuid(),
]);
if (! $this->callbackService->isSuccess($payload)) {
$this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);
return response()->json(['status' => 'ok']);
}
// If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)
if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {
// send the primary report
$this->dispatcher->dispatch(new SendReportJob($reportUuid));
// send the podcast report if it set and generated
if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {
$this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));
}
}
// Track Datadog metrics for automated reports
$automatedReport = $report->getReport();
$this->callbackService->pushToDatadog($automatedReport, $report);
if ($reportPodcast) {
$this->callbackService->pushToDatadog($automatedReport, $reportPodcast);
}
// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [
// 'report_uuid' => $automatedReport->getUuid(),
// 'result_uuid' => $reportUuid,
// ]);
$this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));
} catch (ModelNotFoundException $exception) {
$this->logger->error(self::LOG_PREFIX . ' Report not found', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);
} catch (Throwable $exception) {
$this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);
}
return response()->json(['status' => 'ok']);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
76859
|
1927
|
35
|
2026-04-24T08:30:20.608139+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777019420608_m1.jpg...
|
PhpStorm
|
faVsco.js – ReportController.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\Webhook;
use Carbon\Carbon;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Http\Controllers\AbstractController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class ReportController extends AbstractController
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[Report Ready]';
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly BusDispatcher $dispatcher,
private readonly LoggerInterface $logger,
private readonly AutomatedReportsCallbackService $callbackService,
private readonly EventDispatcher $eventDispatcher,
) {
}
public function ready(Request $request): JsonResponse
{
$payload = $request->all();
$now = Carbon::now();
$this->logger->info(self::LOG_PREFIX . ' Webhook received', [
'payload' => $payload,
]);
// validate
$reportUuid = $this->callbackService->getResultUuid($payload);
if (empty($reportUuid)) {
return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);
}
try {
$report = $this->automatedReportsService->getReportResult($reportUuid);
// validate
if ($this->callbackService->isProcessed($report)) {
$this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [
'uuid' => $reportUuid,
'currentStatus' => $report->getStatusLabel(),
]);
return response()->json(['status' => 'already_processed']);
}
// always try to get a child podcast cause report configuration cannot be trusted
$reportPodcast = $this->automatedReportsService->findChildResult(
result: $report,
type: AutomatedReportsService::MEDIA_TYPE_PODCAST
);
// update results
$report->update([
'status' => $this->callbackService->getPrimaryStatus($report, $payload),
'response' => $payload,
'generated_at' => $now,
]);
// if a podcast is set, update it
$reportPodcast?->update([
'status' => $this->callbackService->getPodcastStatus($payload),
'response' => $payload,
'generated_at' => $now,
]);
$this->logger->info(self::LOG_PREFIX . ' Report has been processed', [
'uuid' => $reportUuid,
'child_uuid' => $reportPodcast?->getUuid(),
]);
if (! $this->callbackService->isSuccess($payload)) {
$this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);
return response()->json(['status' => 'ok']);
}
// If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)
if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {
// send the primary report
$this->dispatcher->dispatch(new SendReportJob($reportUuid));
// send the podcast report if it set and generated
if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {
$this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));
}
}
// Track Datadog metrics for automated reports
$automatedReport = $report->getReport();
$this->callbackService->pushToDatadog($automatedReport, $report);
if ($reportPodcast) {
$this->callbackService->pushToDatadog($automatedReport, $reportPodcast);
}
// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [
// 'report_uuid' => $automatedReport->getUuid(),
// 'result_uuid' => $reportUuid,
// ]);
$this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));
} catch (ModelNotFoundException $exception) {
$this->logger->error(self::LOG_PREFIX . ' Report not found', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);
} catch (Throwable $exception) {
$this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);
}
return response()->json(['status' => 'ok']);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
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":"JY-20738-debug-AJ-tracking-UP, menu","depth":5,"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"ReportControllerTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'ReportControllerTest'","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":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\Webhook;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Http\\Controllers\\AbstractController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass ReportController extends AbstractController\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[Report Ready]';\n\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly BusDispatcher $dispatcher,\n private readonly LoggerInterface $logger,\n private readonly AutomatedReportsCallbackService $callbackService,\n private readonly EventDispatcher $eventDispatcher,\n ) {\n }\n\n public function ready(Request $request): JsonResponse\n {\n $payload = $request->all();\n $now = Carbon::now();\n\n $this->logger->info(self::LOG_PREFIX . ' Webhook received', [\n 'payload' => $payload,\n ]);\n\n // validate\n $reportUuid = $this->callbackService->getResultUuid($payload);\n if (empty($reportUuid)) {\n return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);\n }\n\n try {\n $report = $this->automatedReportsService->getReportResult($reportUuid);\n\n // validate\n if ($this->callbackService->isProcessed($report)) {\n $this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [\n 'uuid' => $reportUuid,\n 'currentStatus' => $report->getStatusLabel(),\n ]);\n\n return response()->json(['status' => 'already_processed']);\n }\n\n // always try to get a child podcast cause report configuration cannot be trusted\n $reportPodcast = $this->automatedReportsService->findChildResult(\n result: $report,\n type: AutomatedReportsService::MEDIA_TYPE_PODCAST\n );\n\n // update results\n $report->update([\n 'status' => $this->callbackService->getPrimaryStatus($report, $payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n // if a podcast is set, update it\n $reportPodcast?->update([\n 'status' => $this->callbackService->getPodcastStatus($payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n\n $this->logger->info(self::LOG_PREFIX . ' Report has been processed', [\n 'uuid' => $reportUuid,\n 'child_uuid' => $reportPodcast?->getUuid(),\n ]);\n\n if (! $this->callbackService->isSuccess($payload)) {\n $this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);\n\n return response()->json(['status' => 'ok']);\n }\n\n // If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)\n if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {\n // send the primary report\n $this->dispatcher->dispatch(new SendReportJob($reportUuid));\n\n // send the podcast report if it set and generated\n if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {\n $this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));\n }\n }\n\n // Track Datadog metrics for automated reports\n $automatedReport = $report->getReport();\n $this->callbackService->pushToDatadog($automatedReport, $report);\n\n if ($reportPodcast) {\n $this->callbackService->pushToDatadog($automatedReport, $reportPodcast);\n }\n\n// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [\n// 'report_uuid' => $automatedReport->getUuid(),\n// 'result_uuid' => $reportUuid,\n// ]);\n $this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));\n } catch (ModelNotFoundException $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Report not found', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);\n } catch (Throwable $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);\n }\n\n return response()->json(['status' => 'ok']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\Webhook;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Http\\Controllers\\AbstractController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass ReportController extends AbstractController\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[Report Ready]';\n\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly BusDispatcher $dispatcher,\n private readonly LoggerInterface $logger,\n private readonly AutomatedReportsCallbackService $callbackService,\n private readonly EventDispatcher $eventDispatcher,\n ) {\n }\n\n public function ready(Request $request): JsonResponse\n {\n $payload = $request->all();\n $now = Carbon::now();\n\n $this->logger->info(self::LOG_PREFIX . ' Webhook received', [\n 'payload' => $payload,\n ]);\n\n // validate\n $reportUuid = $this->callbackService->getResultUuid($payload);\n if (empty($reportUuid)) {\n return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);\n }\n\n try {\n $report = $this->automatedReportsService->getReportResult($reportUuid);\n\n // validate\n if ($this->callbackService->isProcessed($report)) {\n $this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [\n 'uuid' => $reportUuid,\n 'currentStatus' => $report->getStatusLabel(),\n ]);\n\n return response()->json(['status' => 'already_processed']);\n }\n\n // always try to get a child podcast cause report configuration cannot be trusted\n $reportPodcast = $this->automatedReportsService->findChildResult(\n result: $report,\n type: AutomatedReportsService::MEDIA_TYPE_PODCAST\n );\n\n // update results\n $report->update([\n 'status' => $this->callbackService->getPrimaryStatus($report, $payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n // if a podcast is set, update it\n $reportPodcast?->update([\n 'status' => $this->callbackService->getPodcastStatus($payload),\n 'response' => $payload,\n 'generated_at' => $now,\n ]);\n\n $this->logger->info(self::LOG_PREFIX . ' Report has been processed', [\n 'uuid' => $reportUuid,\n 'child_uuid' => $reportPodcast?->getUuid(),\n ]);\n\n if (! $this->callbackService->isSuccess($payload)) {\n $this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);\n\n return response()->json(['status' => 'ok']);\n }\n\n // If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)\n if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {\n // send the primary report\n $this->dispatcher->dispatch(new SendReportJob($reportUuid));\n\n // send the podcast report if it set and generated\n if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {\n $this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));\n }\n }\n\n // Track Datadog metrics for automated reports\n $automatedReport = $report->getReport();\n $this->callbackService->pushToDatadog($automatedReport, $report);\n\n if ($reportPodcast) {\n $this->callbackService->pushToDatadog($automatedReport, $reportPodcast);\n }\n\n// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [\n// 'report_uuid' => $automatedReport->getUuid(),\n// 'result_uuid' => $reportUuid,\n// ]);\n $this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));\n } catch (ModelNotFoundException $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Report not found', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);\n } catch (Throwable $exception) {\n $this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [\n 'uuid' => $reportUuid,\n 'error' => $exception->getMessage(),\n ]);\n\n return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);\n }\n\n return response()->json(['status' => 'ok']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.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":"43","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\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"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}]...
|
8915078219557232385
|
-168143141547558144
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\Webhook;
use Carbon\Carbon;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Http\Controllers\AbstractController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class ReportController extends AbstractController
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[Report Ready]';
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly BusDispatcher $dispatcher,
private readonly LoggerInterface $logger,
private readonly AutomatedReportsCallbackService $callbackService,
private readonly EventDispatcher $eventDispatcher,
) {
}
public function ready(Request $request): JsonResponse
{
$payload = $request->all();
$now = Carbon::now();
$this->logger->info(self::LOG_PREFIX . ' Webhook received', [
'payload' => $payload,
]);
// validate
$reportUuid = $this->callbackService->getResultUuid($payload);
if (empty($reportUuid)) {
return response()->json(['status' => 'error', 'message' => 'Request ID is empty'], status: 400);
}
try {
$report = $this->automatedReportsService->getReportResult($reportUuid);
// validate
if ($this->callbackService->isProcessed($report)) {
$this->logger->warning(self::LOG_PREFIX . ' Report has been already processed', [
'uuid' => $reportUuid,
'currentStatus' => $report->getStatusLabel(),
]);
return response()->json(['status' => 'already_processed']);
}
// always try to get a child podcast cause report configuration cannot be trusted
$reportPodcast = $this->automatedReportsService->findChildResult(
result: $report,
type: AutomatedReportsService::MEDIA_TYPE_PODCAST
);
// update results
$report->update([
'status' => $this->callbackService->getPrimaryStatus($report, $payload),
'response' => $payload,
'generated_at' => $now,
]);
// if a podcast is set, update it
$reportPodcast?->update([
'status' => $this->callbackService->getPodcastStatus($payload),
'response' => $payload,
'generated_at' => $now,
]);
$this->logger->info(self::LOG_PREFIX . ' Report has been processed', [
'uuid' => $reportUuid,
'child_uuid' => $reportPodcast?->getUuid(),
]);
if (! $this->callbackService->isSuccess($payload)) {
$this->logger->warning(self::LOG_PREFIX . ' Error creating report', $payload);
return response()->json(['status' => 'ok']);
}
// If one-off, send the report immediately, if not leave it for the scheduler (automated-reports:send)
if ($report->getReport()->getFrequency() === AutomatedReportsService::FREQUENCY_ONE_OFF) {
// send the primary report
$this->dispatcher->dispatch(new SendReportJob($reportUuid));
// send the podcast report if it set and generated
if ($reportPodcast && $reportPodcast->getStatus() === AutomatedReportResult::STATUS_GENERATED) {
$this->dispatcher->dispatch(new SendReportJob(reportUuid: $reportPodcast->getUuid()));
}
}
// Track Datadog metrics for automated reports
$automatedReport = $report->getReport();
$this->callbackService->pushToDatadog($automatedReport, $report);
if ($reportPodcast) {
$this->callbackService->pushToDatadog($automatedReport, $reportPodcast);
}
// $this->logger->info(self::LOG_PREFIX . ' Triggering Event for UserPilot tracking', [
// 'report_uuid' => $automatedReport->getUuid(),
// 'result_uuid' => $reportUuid,
// ]);
$this->eventDispatcher->dispatch(new AutomatedReportGenerated($automatedReport));
} catch (ModelNotFoundException $exception) {
$this->logger->error(self::LOG_PREFIX . ' Report not found', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Report not found'], status: 404);
} catch (Throwable $exception) {
$this->logger->error(self::LOG_PREFIX . ' Failed to update report status', [
'uuid' => $reportUuid,
'error' => $exception->getMessage(),
]);
return response()->json(['status' => 'error', 'message' => 'Failed to update report status'], status: 500);
}
return response()->json(['status' => 'ok']);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
76856
|
|
58819
|
1262
|
57
|
2026-04-20T13:03:50.438606+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776690230438_m1.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp→Cmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)Miostorislahl100% <78• Mon 20 Apr 16:03:50=8D.q8.Mon 20 Apr 16:03U SyncHubspotObjectsTest.testHandLSyncedAt~Project vmportContactBatch.php© ImportOpportunityBatch.phpCascade© SyncObjects. php 20.04.26, M.M, 2.21k© SyncOpportunitiesMissingFieldDataC© SyncOpportunity php 23.03.26, 1059.© SyncProfieMetadata.php 20.04.26,14© SyncTeamMetadata. php 23.03.26, 101UpdateOpportunitySpecilfications.phgDealinsightsD Dev© SyncContact.phpSyncCrmÊntities Trait.phpService. phpSyncObjects. phpbSpot Webhook DiPurenoomelcapoeSalesforce Batch Con+0 .mSyncOpportunity.phpx© SyncAccount.phpAnswer: Batching in syncOpportunities()orousponionaroo.o# OpportunitySyncTrait.phpProviderEb ElusticsearchEngagementStatsE GeckoExport› D Uvestream› 0 Mallboxes› E Migrate->syncOpportunitiespxw.class SyncOpportunity extends Connandprivate function syncOpportunitiesByDateC1f (Sto) KSdataMessage .* ' to '• Sto:SopportunitySyncParaneters['to'] = $to;++7 3A PartialProcesses in batches of 800 (BATOY, PROCESS,512E)In-memory, but stil ooe-by-one import within eachSalesforceX NoOne-by-one: fereach (Ssfüpportunities as Ssfoppnity);>1f (Sstrategy a OpportunitySyncStrategyResolver::LAST_CREATED_SYNC_OPPORTUNITY_ST.Sthis->info(strng: 'Syncing opportunities created since • . Sdatalessage . SoffsJ else 1Sthis->info( string: 'Syncing opportunities nodified since * . SdataMessage . SoffHubSipot (lines 66-80)0 phoch (SsyncStrategy→fetchOpportunities(...) as ShsOpportunity) €buffer[l = ShsOpportunity:1 (count(Sbuffer) » self::BATOHLPROCESS_SIZE) & 1/ 800SsyncCount + Sthis-sprocessOpportunityßatch(Sbuffer):v J Taet Dasultev 1 test passed 1 test total, 24 ms/opt/homebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann a34me(SopportunitySyncParameters, Sstrategy):Buftfers 800 opportunities before processingWhere and how do we sync initial|Sthis->conment( string: 'Synced" . Scount. ' opportunities.*):Tatton VonorVome1oeT0.0syncOpportunitiesByDateDapp/Console/Commands/Crm S resultsmands/../SyncOpportunity.php 3 resuts->syncOpportunitiesByDate(ScrService, Strom, Sto, Soffset):222 Scolunt • ScrmService»›syncOpportunities(SopportunitySyncParameters, Satrategyl:254 Scount « ScrmService-›syncOpportunities(SopportunitySyncParameters, Sstrategy):› © SyncHubspotActiveDeals.php 1 resultSyncOpportunitiesMissing/FieidDataCommand. php 1 resultapp/Console/Commands/Dealinsights 1 resultapp/3001/0rm 4 results~ D app/Listeners/Crm 1 result• ©LayoutUpdatedListener.php 1 result70 Sthis->sync Opportunities (Siayout);ands › Crm › © SyncOpportunity.php › ® SyncOpportunity › ® o?string Scraid,): void {1f (Scrmid) ‹J else <Sthis->syncProfileOpportunities(ScraService, Scraid, Sfron, Sto, Soffset);Sthis->syncOpportunities8yDate(ScrnService, Sfron, Sto, Soffset):199me0t00eoomo Snornoe sorcenprivate function syncProfileOpportunities(nterface ScraService,PHP.8.3254:43LF UTF-8 G 4 spacesAneliya AngelovaStefka Stoyanova3 othersNikolay Nikolov4:03 PM | [Platform] Refinement'Lukas Kovalik1:02:01...
|
NULL
|
8914769895031012179
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp→Cmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)Miostorislahl100% <78• Mon 20 Apr 16:03:50=8D.q8.Mon 20 Apr 16:03U SyncHubspotObjectsTest.testHandLSyncedAt~Project vmportContactBatch.php© ImportOpportunityBatch.phpCascade© SyncObjects. php 20.04.26, M.M, 2.21k© SyncOpportunitiesMissingFieldDataC© SyncOpportunity php 23.03.26, 1059.© SyncProfieMetadata.php 20.04.26,14© SyncTeamMetadata. php 23.03.26, 101UpdateOpportunitySpecilfications.phgDealinsightsD Dev© SyncContact.phpSyncCrmÊntities Trait.phpService. phpSyncObjects. phpbSpot Webhook DiPurenoomelcapoeSalesforce Batch Con+0 .mSyncOpportunity.phpx© SyncAccount.phpAnswer: Batching in syncOpportunities()orousponionaroo.o# OpportunitySyncTrait.phpProviderEb ElusticsearchEngagementStatsE GeckoExport› D Uvestream› 0 Mallboxes› E Migrate->syncOpportunitiespxw.class SyncOpportunity extends Connandprivate function syncOpportunitiesByDateC1f (Sto) KSdataMessage .* ' to '• Sto:SopportunitySyncParaneters['to'] = $to;++7 3A PartialProcesses in batches of 800 (BATOY, PROCESS,512E)In-memory, but stil ooe-by-one import within eachSalesforceX NoOne-by-one: fereach (Ssfüpportunities as Ssfoppnity);>1f (Sstrategy a OpportunitySyncStrategyResolver::LAST_CREATED_SYNC_OPPORTUNITY_ST.Sthis->info(strng: 'Syncing opportunities created since • . Sdatalessage . SoffsJ else 1Sthis->info( string: 'Syncing opportunities nodified since * . SdataMessage . SoffHubSipot (lines 66-80)0 phoch (SsyncStrategy→fetchOpportunities(...) as ShsOpportunity) €buffer[l = ShsOpportunity:1 (count(Sbuffer) » self::BATOHLPROCESS_SIZE) & 1/ 800SsyncCount + Sthis-sprocessOpportunityßatch(Sbuffer):v J Taet Dasultev 1 test passed 1 test total, 24 ms/opt/homebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann a34me(SopportunitySyncParameters, Sstrategy):Buftfers 800 opportunities before processingWhere and how do we sync initial|Sthis->conment( string: 'Synced" . Scount. ' opportunities.*):Tatton VonorVome1oeT0.0syncOpportunitiesByDateDapp/Console/Commands/Crm S resultsmands/../SyncOpportunity.php 3 resuts->syncOpportunitiesByDate(ScrService, Strom, Sto, Soffset):222 Scolunt • ScrmService»›syncOpportunities(SopportunitySyncParameters, Satrategyl:254 Scount « ScrmService-›syncOpportunities(SopportunitySyncParameters, Sstrategy):› © SyncHubspotActiveDeals.php 1 resultSyncOpportunitiesMissing/FieidDataCommand. php 1 resultapp/Console/Commands/Dealinsights 1 resultapp/3001/0rm 4 results~ D app/Listeners/Crm 1 result• ©LayoutUpdatedListener.php 1 result70 Sthis->sync Opportunities (Siayout);ands › Crm › © SyncOpportunity.php › ® SyncOpportunity › ® o?string Scraid,): void {1f (Scrmid) ‹J else <Sthis->syncProfileOpportunities(ScraService, Scraid, Sfron, Sto, Soffset);Sthis->syncOpportunities8yDate(ScrnService, Sfron, Sto, Soffset):199me0t00eoomo Snornoe sorcenprivate function syncProfileOpportunities(nterface ScraService,PHP.8.3254:43LF UTF-8 G 4 spacesAneliya AngelovaStefka Stoyanova3 othersNikolay Nikolov4:03 PM | [Platform] Refinement'Lukas Kovalik1:02:01...
|
NULL
|
|
30786
|
621
|
82
|
2026-04-15T15:11:52.266116+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776265912266_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditEDHome1DMsActivityFilesLater..•More+ +SlackFileEditEDHome1DMsActivityFilesLater..•More+ViewGo→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of _jimi...Direct messagesVasil VasilevAneliya Angelova, ...Stoyan TanevVesGalya DimitrovaR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesO Files• Bookmarks19-620201T 3 new messages+Tag:View JobGitHub APP 5:54 PM10 new commits pushed to master by yalokin-jiminny630fd8f9 - SRD-6779 |JY-20632 | Unableto log in to Sidekick with SSO0f38589b - SRD-6779 |JY-20632 | Add log4dd5718e - SRD-6779 |JY-20632 | minorimprovementb1e544db - SRD-6779 |JY-20632 | addtests8bd0ef70 - SRD-6779 |JY-20632 | addtestsShow more( jiminny/app Added by GitHubCircleCl APP5:56 PMDeployment Successful!Project:extension-appTag:When:04/15/202614:56:29View JobMessage #releases+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)claudeClaude Helper (Renderer)Notion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentscreenpipeMEMORY PRESSURERMem...2,05 GB1,21 GB1,01 GB963,1 MB856,4 MB826,5 MB794,5 MB547,7 MB544,3 MB543,9 MB516,0 MB500,9 MB482,6 MB422,6 MB420,1 MB398,8 MB395,3 MB392,8 MB372,6 MB342,6 MB326,3 MB325,9 MB322,0 MB305,2 MB277,4 MB269,9 MB240,3 MB214,9 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 18:11:51CPUMemoryDiskThreads4023742685292429271123152624262427231513152127272660EnergyPorts60019 8077261261 20313120 047126242253165120185125123127122126121172722193281241271833123522PID93892407801442974146644203084236713801914673938993548041863358313527643016368984365248173265485091060519114835833482984878561384287616,00 GB14,30 GB<1,65 GB3,18 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,98 GB2,89 GB6,89 GB...
|
NULL
|
8914554430521535745
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditEDHome1DMsActivityFilesLater..•More+ +SlackFileEditEDHome1DMsActivityFilesLater..•More+ViewGo→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of _jimi...Direct messagesVasil VasilevAneliya Angelova, ...Stoyan TanevVesGalya DimitrovaR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesO Files• Bookmarks19-620201T 3 new messages+Tag:View JobGitHub APP 5:54 PM10 new commits pushed to master by yalokin-jiminny630fd8f9 - SRD-6779 |JY-20632 | Unableto log in to Sidekick with SSO0f38589b - SRD-6779 |JY-20632 | Add log4dd5718e - SRD-6779 |JY-20632 | minorimprovementb1e544db - SRD-6779 |JY-20632 | addtests8bd0ef70 - SRD-6779 |JY-20632 | addtestsShow more( jiminny/app Added by GitHubCircleCl APP5:56 PMDeployment Successful!Project:extension-appTag:When:04/15/202614:56:29View JobMessage #releases+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)claudeClaude Helper (Renderer)Notion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentscreenpipeMEMORY PRESSURERMem...2,05 GB1,21 GB1,01 GB963,1 MB856,4 MB826,5 MB794,5 MB547,7 MB544,3 MB543,9 MB516,0 MB500,9 MB482,6 MB422,6 MB420,1 MB398,8 MB395,3 MB392,8 MB372,6 MB342,6 MB326,3 MB325,9 MB322,0 MB305,2 MB277,4 MB269,9 MB240,3 MB214,9 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 18:11:51CPUMemoryDiskThreads4023742685292429271123152624262427231513152127272660EnergyPorts60019 8077261261 20313120 047126242253165120185125123127122126121172722193281241271833123522PID93892407801442974146644203084236713801914673938993548041863358313527643016368984365248173265485091060519114835833482984878561384287616,00 GB14,30 GB<1,65 GB3,18 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,98 GB2,89 GB6,89 GB...
|
NULL
|
|
55100
|
1189
|
18
|
2026-04-20T09:34:45.775786+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776677685775_m1.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com/ai-reports/manage
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Close tab
Jiminny
Jiminny
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Ask Jiminny Reports
Ask Jiminny Reports
Create
Report name
Prompt Prompt
Prompt
Prompt
Saved search Saved search
Saved search
Saved search
All statuses All statuses
All statuses
All statuses
Clear all
NAME
FREQUENCY
SHARED
EXPIRING
ACTIONS
Test
Daily
21/04/2026
Exp
Weekly
20/04/2027
Monthly Ask J Report
Monthly
Jiminny Mobile SA
30/06/2026
Search One
Daily
Jiminny Mobile SA
30/04/2026
Report definition saved
Close notification
Edit
Clear
Filter URLs
Pause/Resume recording network log
New Request
Search
Request Blocking
All
HTML
CSS
JS
XHR
Fonts
Images
Media
WS
Other
Disable Cache
Disable Cache
No Throttling
Network Settings
Status
Status
Method
Method
Domain
Domain
File
File
Initiator
Initiator
Type
Type
Transferred
Transferred
Size
Size
200
GET
app.dev.jiminny.com
form-data
xhr
json
7.56 kB
10.67 kB
200
POST
app.dev.jiminny.com
aj-reports
xhr
json
3.03 kB
493 B
200
GET
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
7.57 kB
10.83 kB
422
PUT
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
2.73 kB
63 B
200
GET
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
7.57 kB
10.83 kB
422
PUT
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
2.73 kB
63 B
200
GET
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
7.57 kB
10.83 kB
200
PUT
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
3.03 kB
495 B
200
GET
app.dev.jiminny.com
form-data
xhr
json
7.56 kB
10.67 kB
200
POST
app.dev.jiminny.com
aj-reports
xhr
json
3.03 kB
493 B
GET
app.dev.jiminny.com
17109f0c-08b1-4df6-b429-dc9be966187d
xhr
Status
Status
200
Method
Method
GET
Domain
Domain
app.dev.jiminny.com
File
File
form-data
Initiator
Initiator
xhr
Type
Type
json
Transferred
Transferred
7.56 kB
Size
Size
10.67 kB
Start performance analysis
11 requests
55.44 kB / 52.39 kB transferred
Finish: 13.73 min
Hide request details
Headers
Headers
Cookies
Cookies
Request
Request
Response
Response
Timings
Timings
Security
Security...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":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":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Ask Jiminny Reports","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Reports","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Report name","depth":11,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Prompt Prompt","depth":10,"value":"Prompt Prompt","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Prompt","depth":11,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Prompt","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Saved search Saved search","depth":10,"value":"Saved search Saved search","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved search","depth":11,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"All statuses All statuses","depth":10,"value":"All statuses All statuses","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"All statuses","depth":11,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All statuses","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EXPIRING","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Test","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21/04/2026","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exp","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20/04/2027","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monthly Ask J Report","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Monthly","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Mobile SA","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/06/2026","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search One","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Mobile SA","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Report definition saved","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close notification","depth":10,"bounds":{"left":0.0,"top":0.0,"width":0.013888889,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Filter URLs","depth":16,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Pause/Resume recording network log","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"New Request","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Search","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Request Blocking","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"All","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"HTML","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"CSS","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"JS","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"XHR","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Fonts","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Images","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Media","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"WS","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Other","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Disable Cache","depth":17,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Disable Cache","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"No Throttling","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Network Settings","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Status","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Method","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Method","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Domain","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Domain","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"File","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"File","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Initiator","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Initiator","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Type","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Transferred","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transferred","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Size","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Size","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"form-data","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7.56 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10.67 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"aj-reports","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.03 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"493 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7361706f-ffbe-4d3d-a22b-9fab33d05094","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7.57 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10.83 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"422","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PUT","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7361706f-ffbe-4d3d-a22b-9fab33d05094","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2.73 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"63 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7361706f-ffbe-4d3d-a22b-9fab33d05094","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7.57 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10.83 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"422","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PUT","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7361706f-ffbe-4d3d-a22b-9fab33d05094","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2.73 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"63 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7361706f-ffbe-4d3d-a22b-9fab33d05094","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7.57 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10.83 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PUT","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7361706f-ffbe-4d3d-a22b-9fab33d05094","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.03 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"495 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"form-data","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7.56 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10.67 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"aj-reports","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.03 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"493 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17109f0c-08b1-4df6-b429-dc9be966187d","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Status","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Method","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Method","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Domain","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Domain","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"File","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"File","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"form-data","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Initiator","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Initiator","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Type","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Transferred","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transferred","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7.56 kB","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Size","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Size","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10.67 kB","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start performance analysis","depth":20,"bounds":{"left":0.5694444,"top":0.0,"width":0.016666668,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 requests","depth":21,"bounds":{"left":0.59375,"top":0.0,"width":0.043402776,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"55.44 kB / 52.39 kB transferred","depth":21,"bounds":{"left":0.65173614,"top":0.0,"width":0.11597222,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finish: 13.73 min","depth":21,"bounds":{"left":0.78229165,"top":0.0,"width":0.063194446,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hide request details","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Headers","depth":20,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Headers","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Cookies","depth":20,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cookies","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Request","depth":20,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Request","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Response","depth":20,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Response","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Timings","depth":20,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timings","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Security","depth":20,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8914094639085383965
|
6797163610855351986
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Close tab
Jiminny
Jiminny
Jiminny
Jiminny
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Ask Jiminny Reports
Ask Jiminny Reports
Create
Report name
Prompt Prompt
Prompt
Prompt
Saved search Saved search
Saved search
Saved search
All statuses All statuses
All statuses
All statuses
Clear all
NAME
FREQUENCY
SHARED
EXPIRING
ACTIONS
Test
Daily
21/04/2026
Exp
Weekly
20/04/2027
Monthly Ask J Report
Monthly
Jiminny Mobile SA
30/06/2026
Search One
Daily
Jiminny Mobile SA
30/04/2026
Report definition saved
Close notification
Edit
Clear
Filter URLs
Pause/Resume recording network log
New Request
Search
Request Blocking
All
HTML
CSS
JS
XHR
Fonts
Images
Media
WS
Other
Disable Cache
Disable Cache
No Throttling
Network Settings
Status
Status
Method
Method
Domain
Domain
File
File
Initiator
Initiator
Type
Type
Transferred
Transferred
Size
Size
200
GET
app.dev.jiminny.com
form-data
xhr
json
7.56 kB
10.67 kB
200
POST
app.dev.jiminny.com
aj-reports
xhr
json
3.03 kB
493 B
200
GET
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
7.57 kB
10.83 kB
422
PUT
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
2.73 kB
63 B
200
GET
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
7.57 kB
10.83 kB
422
PUT
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
2.73 kB
63 B
200
GET
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
7.57 kB
10.83 kB
200
PUT
app.dev.jiminny.com
7361706f-ffbe-4d3d-a22b-9fab33d05094
xhr
json
3.03 kB
495 B
200
GET
app.dev.jiminny.com
form-data
xhr
json
7.56 kB
10.67 kB
200
POST
app.dev.jiminny.com
aj-reports
xhr
json
3.03 kB
493 B
GET
app.dev.jiminny.com
17109f0c-08b1-4df6-b429-dc9be966187d
xhr
Status
Status
200
Method
Method
GET
Domain
Domain
app.dev.jiminny.com
File
File
form-data
Initiator
Initiator
xhr
Type
Type
json
Transferred
Transferred
7.56 kB
Size
Size
10.67 kB
Start performance analysis
11 requests
55.44 kB / 52.39 kB transferred
Finish: 13.73 min
Hide request details
Headers
Headers
Cookies
Cookies
Request
Request
Response
Response
Timings
Timings
Security
Security...
|
55097
|
|
46143
|
976
|
21
|
2026-04-17T10:23:05.784348+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776421385784_m2.jpg...
|
iTerm2
|
APP (-zsh)
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 16 15:48:08 on ttys007
Poetry Last login: Thu Apr 16 15:48:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 2343, done.
remote: Counting objects: 100% (1306/1306), done.
remote: Compressing objects: 100% (422/422), done.
remote: Total 2343 (delta 1041), reused 1034 (delta 874), pack-reused 1037 (from 3)
Receiving objects: 100% (2343/2343), 1.13 MiB | 2.75 MiB/s, done.
Resolving deltas: 100% (1585/1585), completed with 176 local objects.
From github.com:jiminny/app
a0a9685c0d..08ed383c5b JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
* [new branch] JY-20291-datadog-processing-states -> origin/JY-20291-datadog-processing-states
* [new branch] JY-20485-enable-ai-call-scoring -> origin/JY-20485-enable-ai-call-scoring
* [new branch] JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
* [new branch] JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
* [new branch] JY-20553-debug-crm-sync-delays -> origin/JY-20553-debug-crm-sync-delays
* [new branch] JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
* [new branch] JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
* [new branch] JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns -> origin/JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns
* [new branch] feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
* [new branch] fix-cache-for-business-processes -> origin/fix-cache-for-business-processes
09c3f776ad..5bb8fefcba master -> origin/master
* [new branch] secfix/composer-20260415 -> origin/secfix/composer-20260415
* [new branch] secfix/npm-20260416 -> origin/secfix/npm-20260416
Updating a0a9685c0d..08ed383c5b
error: Your local changes to the following files would be overwritten by merge:
app/Http/Controllers/Webhook/ReportController.php
Please commit your changes or stash them before you merge.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master
error: Your local changes to the following files would be overwritten by checkout:
app/Jobs/AutomatedReports/SendReportJob.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Http/Controllers/Webhook/ReportController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
M front-end/src/components/connect/connect.vue
M front-end/src/components/onboard/Onboard.vue
M routes/web.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 459 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Updating 4b5aaaed8d..5bb8fefcba
Fast-forward
.env.production | 2 +-
.env.production-eu | 2 +-
.github/actions/fetch-dependabot-alerts/action.yml | 36 +
.github/secfix/README.md | 283 ++++++
.github/secfix/SECFIX_PROMPT.md | 439 +++++++++
.github/secfix/bin/composer | 18 +
.github/secfix/claude-secfix-settings.json | 21 +
.github/secfix/scripts/fetch-alerts.mjs | 163 ++++
.github/secfix/scripts/secfix-append-pr-metrics.mjs | 140 +++
.github/secfix/scripts/secfix-pr-window.mjs | 65 ++
.github/secfix/scripts/secfix-should-skip.mjs | 180 ++++
.github/secfix/scripts/secfix-slack-notify.mjs | 126 +++
.github/secfix/scripts/secfix-supported-ecosystems.mjs | 16 +
.github/secfix/scripts/secfix-update-covered-alerts.mjs | 187 ++++
.github/secfix/scripts/verify-claude-execution.mjs | 56 ++
.github/workflows/claude.yml | 1 +
.github/workflows/secfix.yml | 454 +++++++++
.gitignore | 1 +
app/Component/Activity/ActivityProcessingStateManager.php | 4 +
app/Component/ActivityAnalytics/Service/ActivityAnalyticsService.php | 68 +-
app/Component/ActivityAnalytics/Service/LocalTriggerMatcherService.php | 40 +-
app/Component/ActivityAnalytics/Service/QuestionService.php | 137 +--
app/Component/ActivityAnalytics/Service/SentenceBreaker.php | 110 ---
app/Component/ActivityAnalytics/VO/TopicTriggerMatch.php | 4 +-
app/Component/ActivitySearch/FilterDefinition/AutoScoreFilter.php | 4 +-
app/Component/AiAutomation/Actions/UpdateCrmFieldAction.php | 14 +-
app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php | 92 ++
app/Component/DealRisks/DealRisk.php | 5 +
app/Component/DealRisks/DealRiskType.php | 40 +-
app/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRisk.php | 34 +
app/Component/DealRisks/DealRisksRepository.php | 67 +-
app/Component/DealRisks/DealRisksService.php | 20 +-
app/Component/DealRisks/GroupDealRiskType.php | 23 +
app/Component/Kiosk/Services/GetTranscriptionComparisonService.php | 61 +-
app/Component/LanguageDetection/Services/DetectLanguageService.php | 74 +-
app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php | 37 +
app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php | 45 +
app/Component/MediaPipeline/MediaPipelineOrchestrator.php | 2 +
app/Component/MediaPipeline/MediaPipelineServiceProvider.php | 8 +
app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php | 46 +
app/Component/ParagraphBreaker/Services/ParagraphBuilder.php | 29 +-
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 179 ++++
app/Component/ParagraphBreaker/Services/UtteranceBuilder.php | 192 ++--
app/Component/PlaybackPage/Snapshots/Listeners/GenerateSnapshotsListener.php | 6 +
app/Component/Transcription/Formatter/TranscriptionFormatter.php | 11 +-
app/Component/Transcription/Job/FinishTranscriptionJob.php | 17 +-
app/Component/Transcription/Job/StartTranscriptDiarizationJob.php | 2 +-
app/Component/Transcription/Job/TranscriptSegmentsCompileJob.php | 43 +-
app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php | 16 -
app/Component/Transcription/Service/SearchService.php | 180 ++--
app/Component/Transcription/Service/TranscriptSegmentsService.php | 396 --------
app/Component/Transcription/Service/TranscriptionPdfService.php | 132 +++
app/Component/Transcription/Service/TranscriptionService.php | 142 +--
app/Component/Transcription/Service/TranslationService.php | 59 +-
app/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAI.php | 172 +---
app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php | 48 +
.../Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php | 111 +++
app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileService.php | 16 +-
app/Component/Transcription/VO/TranscriptSegmentTransformer.php | 37 -
app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php | 751 +++++++++++++++
app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php | 254 ++++++
app/Console/Commands/EngagementStats/JiminnyEngagementStatsExplainCommand.php | 76 +-
app/Console/Commands/Mailboxes/BatchCreate.php | 9 +
app/Console/Commands/Mailboxes/BatchProcess.php | 18 +-
app/Console/Commands/Mailboxes/InboxSync.php | 23 +-
app/Console/Kernel.php | 4 +
app/Contracts/Crm/ProspectInterface.php | 14 +-
app/Contracts/Crm/SyncableCrmObjectInterface.php | 33 +
app/Contracts/Services/Crm/SyncCrmEntitiesInterface.php | 11 +-
app/Events/Crm/RemoteCrmRecordDeleted.php | 45 +
app/Exceptions/HttpBadRequestException.php | 4 +-
app/Exceptions/HttpForbiddenException.php | 4 +-
app/Exceptions/HttpMethodNotAllowedException.php | 4 +-
app/Exceptions/HttpNotFoundException.php | 4 +-
app/Exceptions/HttpSessionExpiredException.php | 8 +-
app/Exceptions/HttpUnauthorizedException.php | 4 +-
app/Exceptions/HttpUnsupportedFormatException.php | 4 +-
app/Guards/Sso.php | 35 +-
app/Http/Controllers/API/TranscriptionController.php | 21 +-
app/Http/Controllers/Auth/SocialController.php | 2 +-
app/Http/Controllers/Auth/SsoController.php | 12 +-
app/Jobs/Activity/DeleteTeamChurnData.php | 4 +-
app/Jobs/Activity/Import/MatchCrmData.php | 6 +-
app/Jobs/Calendar/SetupCalendarSync.php | 30 +-
app/Jobs/Calendar/SyncCalendarEvents.php | 21 +-
app/Jobs/DealRisks/RecalculateDealRisksOnCronJob.php | 17 +-
app/Jobs/Mailbox/SyncInbox.php | 51 +-
app/Listeners/Activities/Coaching/Intercom/CreateActivitySummarizedEvent.php | 6 +
app/Listeners/Activities/Coaching/Intercom/CreateCommentedEvent.php | 6 +
app/Listeners/Activities/Coaching/Intercom/CreateManagerCoachedEvent.php | 6 +
app/Listeners/Activities/Coaching/Intercom/CreatePlayedEvent.php | 6 +
app/Listeners/Activities/Conferences/Intercom/CreateHeldActivityEvent.php | 6 +
app/Listeners/Activities/Crm/MatchCrmObject.php | 126 ++-
app/Listeners/Activities/Crm/Summary/AbstractSummaryListener.php | 5 +-
app/Listeners/Activities/Sms/Intercom/CreateSmsReceivedEvent.php | 6 +
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php | 111 +++
app/Models/Account.php | 6 +-
app/Models/Activity.php | 42 +-
app/Models/Activity/TopicTrigger.php | 2 +-
app/Models/Activity/Transcription.php | 29 +-
app/Models/Contact.php | 6 +-
app/Models/Inbox.php | 3 +-
app/Models/InboxEmail.php | 1 +
app/Models/Lead.php | 6 +-
app/Models/Opportunity.php | 15 +-
app/Models/Participant.php | 20 +
app/Providers/EventServiceProvider.php | 6 +-
app/Providers/JiminnyServiceProvider.php | 23 -
app/Providers/RouteServiceProvider.php | 26 +-
app/Repositories/QuestionRepository.php | 32 +-
app/Services/Activity/Gmail/Service.php | 13 +-
app/Services/Activity/HubSpot/AuthenticatedHttpClient.php | 75 +-
app/Services/Activity/HubSpot/RedirectUrlResolver.php | 91 ++
app/Services/Activity/HubSpot/Service.php | 17 +-
app/Services/Activity/HubSpot/ZoomRecordingDetector.php | 27 +
app/Services/Activity/MeetingBotService.php | 5 +-
app/Services/Calendar/GoogleCalendarService.php | 36 +-
app/Services/Calendar/OfficeCalendarService.php | 39 +-
app/Services/Crm/CachedCrmServiceDecorator.php | 11 +-
app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php | 128 +++
app/Services/Crm/Hubspot/ServiceTraits/WriteCrmTrait.php | 51 +-
app/Services/Crm/Hubspot/SyncRelatedActivityManager.php | 9 +-
app/Services/Crm/ProspectCache.php | 38 +-
app/Services/Mail/InboxService.php | 10 +
app/Services/Mail/InboxServiceInterface.php | 2 +-
app/Services/Mail/Repositories/EmailServiceRepository.php | 16 +
composer.json | 3 +-
composer.lock | 420 ++-------
contrib/tmp/hubspot-associations-US/2026-02-02.json | 2254 +++++++++++++++++++++++++++++++++++++++++++++
contrib/tmp/hubspot-associations-US/2026-02-18.json | 1398 ++++++++++++++++++++++++++++
contrib/tmp/hubspot-associations-US/2026-03-05.json | 2214 ++++++++++++++++++++++++++++++++++++++++++++
contrib/tmp/hubspot-associations-US/2026-03-20.json | 2786 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
database/migrations/2026_04_05_090000_drop_unique_index_from_activity_topic_triggers.php | 12 +-
database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php | 91 ++
front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 1 -
front-end/src/components/Settings/Kiosk/ActivitiesSearch/ActivityTranscription.vue | 12 +-
.../components/Settings/OrgSettings/AiAutomation/CallScoring/callScoringTemplates/useCallScoringTemplates.js | 7 +-
front-end/src/components/Settings/OrgSettings/AiAutomation/__test__/__snapshots__/AiAutomation.spec.js.snap | 4 +-
front-end/src/components/Settings/OrgSettings/AiContext/__test__/__snapshots__/AiContext.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/DealInsights/__tests__/__snapshots__/DealInsights.spec.js.snap | 2 +-
.../src/components/Settings/OrgSettings/Organization/__tests__/__snapshots__/OrganizationSettings.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Playbooks/__test__/__snapshots__/Playbooks.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Recording/__tests__/__snapshots__/Recording.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Topics/__tests__/__snapshots__/Topics.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Topics/__tests__/confirmationDialogs.spec.js | 6 +-
front-end/src/components/Settings/OrgSettings/Topics/confirmationDialogs.js | 4 +-
front-end/src/components/Settings/shared/Navigation/OrgSettingsNavigation.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AutomatedCallScoring/AutomatedCallScoring.vue | 4 +-
front-end/src/components/TeamInsights/CoachingFrameworks/index.vue | 2 +-
front-end/src/components/TeamInsights/Conversations/__mocks__/data.js | 2 +-
front-end/src/components/TeamInsights/Dashboard/ChartHeader.vue | 10 +-
front-end/src/components/TeamInsights/Dashboard/CoachingOverTime.vue | 2 +-
front-end/src/components/TeamInsights/Deals/__mocks__/topicsOverview.js | 2 +-
front-end/src/components/TeamInsights/Themes/__mocks__/data.js | 2 +-
front-end/src/components/dashboard/__mocks__/data.js | 2 +-
front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.less | 8 +
front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.vue | 80 +-
front-end/src/components/layout/Sidebar/QuickSearch/useRecentlyVisited.js | 10 +-
front-end/src/components/layout/Sidebar/__tests__/__snapshots__/QuickSearch.spec.js.snap | 36 +-
front-end/src/components/ondemand/__mocks__/activity-list.js | 6 +-
front-end/src/components/ondemand/__mocks__/on-demand.js | 2 +-
front-end/src/components/ondemand/__tests__/__snapshots__/Ondemand.spec.js.snap | 2 +-
front-end/src/components/playback/Transcripts/useTranscriptsActions.js | 2 +-
front-end/src/components/playback/__tests__/__snapshots__/Playback.spec.js.snap | 44 +-
front-end/src/components/playback/media-player/player-main/Waveform/ActivityWaveform.vue | 3 +
front-end/src/components/playback/media-player/player-main/Waveform/WaveformTimeline.vue | 63 +-
front-end/src/components/shared/Filters/InputText.vue | 2 +
front-end/src/components/shared/autoscore-rating/AutoscoreStars.vue | 2 +-
front-end/src/helpers/constants.js | 7 +
front-end/src/locales/en-US.js | 2 +-
front-end/src/store/modules/playback/actions.js | 39 +-
phpstan-baseline.neon | 40 -
resources/views/pdf/transcription.blade.php | 51 --
routes/api.php | 5 +-
tests/Feature/ServiceProviders/SsoTest.php | 191 ++++
tests/Unit/Component/Activity/ActivityProcessingStateManagerTest.php | 17 +-
tests/Unit/Component/ActivityAnalytics/Service/ActivityAnalyticsServiceTest.php | 137 ++-
tests/Unit/Component/ActivityAnalytics/Service/LocalTriggerMatcherServiceTest.php | 135 +--
tests/Unit/Component/ActivityAnalytics/Service/QuestionServiceTest.php | 610 +++----------
tests/Unit/Component/ActivityAnalytics/VO/TopicTriggerMatchTest.php | 15 +
tests/Unit/Component/ActivitySearch/FilterDefinition/AutoScoreFilterTest.php | 4 +-
tests/Unit/Component/AiAutomation/Actions/UpdateCrmFieldActionTest.php | 66 ++
tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php | 282 ++++++
tests/Unit/Component/DealInsights/DealContactServiceTest.php | 12 +-
tests/Unit/Component/DealInsights/DealServiceTest.php | 4 +-
tests/Unit/Component/DealRisks/DealRiskTest.php | 29 +-
tests/Unit/Component/DealRisks/DealRiskTypeTest.php | 24 +-
tests/Unit/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRiskTest.php | 141 ++-
tests/Unit/Component/DealRisks/DealRisksServiceTest.php | 18 +-
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 +-
tests/Unit/Component/Kiosk/Services/GetTranscriptionComparisonServiceTest.php | 79 +-
tests/Unit/Component/LanguageDetection/Services/DetectLanguageServiceTest.php | 132 ++-
tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php | 97 ++
tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php | 100 ++
tests/Unit/Component/MediaPipeline/Services/GetMediaPipelineStatesServiceTest.php | 6 +
tests/Unit/Component/ParagraphBreaker/Services/ParagraphBuilderTest.php | 53 +-
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 547 +++++++++++
tests/Unit/Component/ParagraphBreaker/Services/UtteranceBuilderTest.php | 73 +-
tests/Unit/Component/Transcription/Formatter/TranscriptionFormatterTest.php | 8 +-
tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php | 101 --
tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php | 220 +++++
tests/Unit/Component/Transcription/Service/SearchServiceTest.php | 193 ++++
tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php | 465 ----------
tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php | 116 +++
tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 61 +-
tests/Unit/Component/Transcription/Service/TranslationServiceTest.php | 31 +-
tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAITest.php | 355 +-------
.../TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php | 220 +++++
tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/SubmitAudioFileServiceTest.php | 135 +--
tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php | 68 --
tests/Unit/Guards/SsoTest.php | 114 +++
tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 124 ++-
tests/Unit/Jobs/Calendar/SyncCalendarEventsTest.php | 147 +++
tests/Unit/Jobs/DealRisks/RecalculateDealRisksOnCronJobTest.php | 17 +-
tests/Unit/Jobs/Mailbox/SyncInboxTest.php | 272 ++++++
tests/Unit/Listeners/Activities/Crm/MatchCrmObjectTest.php | 788 ++++++----------
tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php | 276 ++++++
tests/Unit/Services/Activity/HubSpot/AuthenticatedHttpClientTest.php | 207 +----
tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php | 184 ++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 205 ++++-
tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php | 196 ++++
tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 88 ++
tests/Unit/Services/Crm/CachedCrmServiceDecoratorTest.php | 9 +-
tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php | 260 ++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/WriteCrmTraitTest.php | 148 ++-
tests/Unit/Services/Crm/Hubspot/SyncRelatedActivityManagerTest.php | 105 +++
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/MatchProspectsTraitTest.php | 19 +-
tests/Unit/Services/Crm/ProspectCacheTest.php | 11 +-
tests/Unit/Services/Mail/InboxServiceTest.php | 4 +-
229 files changed, 20231 insertions(+), 4791 deletions(-)
create mode 100644 .github/actions/fetch-dependabot-alerts/action.yml
create mode 100644 .github/secfix/README.md
create mode 100644 .github/secfix/SECFIX_PROMPT.md
create mode 100755 .github/secfix/bin/composer
create mode 100644 .github/secfix/claude-secfix-settings.json
create mode 100644 .github/secfix/scripts/fetch-alerts.mjs
create mode 100644 .github/secfix/scripts/secfix-append-pr-metrics.mjs
create mode 100644 .github/secfix/scripts/secfix-pr-window.mjs
create mode 100644 .github/secfix/scripts/secfix-should-skip.mjs
create mode 100644 .github/secfix/scripts/secfix-slack-notify.mjs
create mode 100644 .github/secfix/scripts/secfix-supported-ecosystems.mjs
create mode 100644 .github/secfix/scripts/secfix-update-covered-alerts.mjs
create mode 100644 .github/secfix/scripts/verify-claude-execution.mjs
create mode 100644 .github/workflows/secfix.yml
delete mode 100644 app/Component/ActivityAnalytics/Service/SentenceBreaker.php
create mode 100644 app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php
create mode 100644 app/Component/DealRisks/GroupDealRiskType.php
create mode 100644 app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php
create mode 100644 app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php
create mode 100644 app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php
create mode 100644 app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php
delete mode 100644 app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php
delete mode 100644 app/Component/Transcription/Service/TranscriptSegmentsService.php
create mode 100644 app/Component/Transcription/Service/TranscriptionPdfService.php
create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php
create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php
delete mode 100644 app/Component/Transcription/VO/TranscriptSegmentTransformer.php
create mode 100644 app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php
create mode 100644 app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php
create mode 100644 app/Contracts/Crm/SyncableCrmObjectInterface.php
create mode 100644 app/Events/Crm/RemoteCrmRecordDeleted.php
create mode 100644 app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
create mode 100644 app/Services/Activity/HubSpot/RedirectUrlResolver.php
create mode 100644 app/Services/Activity/HubSpot/ZoomRecordingDetector.php
create mode 100644 app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php
create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-02.json
create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-18.json
create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-05.json
create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-20.json
create mode 100644 database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php
delete mode 100644 resources/views/pdf/transcription.blade.php
create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php
create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php
create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php
create mode 100644 tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php
delete mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php
create mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php
delete mode 100644 tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php
create mode 100644 tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php
create mode 100644 tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php
delete mode 100644 tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php
create mode 100644 tests/Unit/Guards/SsoTest.php
create mode 100644 tests/Unit/Jobs/Mailbox/SyncInboxTest.php
create mode 100644 tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php
create mode 100644 tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php
create mode 100644 tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php
create mode 100644 tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20692-fix-integration-app-[API_KEY]
Switched to a new branch 'JY-20692-fix-integration-app-[API_KEY]'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20692-fix-integration-app-[API_KEY]) $ cd front-end
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-[API_KEY]) $ yarn build
yarn run v1.22.10
error @: The engine "node" is incompatible with this module. Expected version ">=24.11.1". Got "14.15.4"
error @: The engine "yarn" is incompatible with this module. Expected version ">=4.12.0". Got "1.22.10"
error Commands cannot run with an incompatible environment.
info Visit [URL_WITH_CREDENTIALS] (nc)
Close Tab
⌥⌘1
APP (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:48:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\n\nremote: Enumerating objects: 2343, done.\nremote: Counting objects: 100% (1306/1306), done.\nremote: Compressing objects: 100% (422/422), done.\nremote: Total 2343 (delta 1041), reused 1034 (delta 874), pack-reused 1037 (from 3)\nReceiving objects: 100% (2343/2343), 1.13 MiB | 2.75 MiB/s, done.\nResolving deltas: 100% (1585/1585), completed with 176 local objects.\nFrom github.com:jiminny/app\n a0a9685c0d..08ed383c5b JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n * [new branch] JY-20291-datadog-processing-states -> origin/JY-20291-datadog-processing-states\n * [new branch] JY-20485-enable-ai-call-scoring -> origin/JY-20485-enable-ai-call-scoring\n * [new branch] JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n * [new branch] JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n * [new branch] JY-20553-debug-crm-sync-delays -> origin/JY-20553-debug-crm-sync-delays\n * [new branch] JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n * [new branch] JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n * [new branch] JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns -> origin/JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns\n * [new branch] feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n * [new branch] fix-cache-for-business-processes -> origin/fix-cache-for-business-processes\n 09c3f776ad..5bb8fefcba master -> origin/master\n * [new branch] secfix/composer-20260415 -> origin/secfix/composer-20260415\n * [new branch] secfix/npm-20260416 -> origin/secfix/npm-20260416\nUpdating a0a9685c0d..08ed383c5b\nerror: Your local changes to the following files would be overwritten by merge:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/Webhook/ReportController.php\nPlease commit your changes or stash them before you merge.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportJob.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/Webhook/ReportController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tfront-end/src/components/connect/connect.vue\nM\u0000\u0000\u0000\u0000\u0000\u0000\tfront-end/src/components/onboard/Onboard.vue\nM\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nSwitched to branch 'master'\nYour branch is behind 'origin/master' by 459 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nUpdating 4b5aaaed8d..5bb8fefcba\nFast-forward\n .env.production | 2 +-\n .env.production-eu | 2 +-\n .github/actions/fetch-dependabot-alerts/action.yml | 36 +\n .github/secfix/README.md | 283 ++++++\n .github/secfix/SECFIX_PROMPT.md | 439 +++++++++\n .github/secfix/bin/composer | 18 +\n .github/secfix/claude-secfix-settings.json | 21 +\n .github/secfix/scripts/fetch-alerts.mjs | 163 ++++\n .github/secfix/scripts/secfix-append-pr-metrics.mjs | 140 +++\n .github/secfix/scripts/secfix-pr-window.mjs | 65 ++\n .github/secfix/scripts/secfix-should-skip.mjs | 180 ++++\n .github/secfix/scripts/secfix-slack-notify.mjs | 126 +++\n .github/secfix/scripts/secfix-supported-ecosystems.mjs | 16 +\n .github/secfix/scripts/secfix-update-covered-alerts.mjs | 187 ++++\n .github/secfix/scripts/verify-claude-execution.mjs | 56 ++\n .github/workflows/claude.yml | 1 +\n .github/workflows/secfix.yml | 454 +++++++++\n .gitignore | 1 +\n app/Component/Activity/ActivityProcessingStateManager.php | 4 +\n app/Component/ActivityAnalytics/Service/ActivityAnalyticsService.php | 68 +-\n app/Component/ActivityAnalytics/Service/LocalTriggerMatcherService.php | 40 +-\n app/Component/ActivityAnalytics/Service/QuestionService.php | 137 +--\n app/Component/ActivityAnalytics/Service/SentenceBreaker.php | 110 ---\n app/Component/ActivityAnalytics/VO/TopicTriggerMatch.php | 4 +-\n app/Component/ActivitySearch/FilterDefinition/AutoScoreFilter.php | 4 +-\n app/Component/AiAutomation/Actions/UpdateCrmFieldAction.php | 14 +-\n app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php | 92 ++\n app/Component/DealRisks/DealRisk.php | 5 +\n app/Component/DealRisks/DealRiskType.php | 40 +-\n app/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRisk.php | 34 +\n app/Component/DealRisks/DealRisksRepository.php | 67 +-\n app/Component/DealRisks/DealRisksService.php | 20 +-\n app/Component/DealRisks/GroupDealRiskType.php | 23 +\n app/Component/Kiosk/Services/GetTranscriptionComparisonService.php | 61 +-\n app/Component/LanguageDetection/Services/DetectLanguageService.php | 74 +-\n app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php | 37 +\n app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php | 45 +\n app/Component/MediaPipeline/MediaPipelineOrchestrator.php | 2 +\n app/Component/MediaPipeline/MediaPipelineServiceProvider.php | 8 +\n app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php | 46 +\n app/Component/ParagraphBreaker/Services/ParagraphBuilder.php | 29 +-\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 179 ++++\n app/Component/ParagraphBreaker/Services/UtteranceBuilder.php | 192 ++--\n app/Component/PlaybackPage/Snapshots/Listeners/GenerateSnapshotsListener.php | 6 +\n app/Component/Transcription/Formatter/TranscriptionFormatter.php | 11 +-\n app/Component/Transcription/Job/FinishTranscriptionJob.php | 17 +-\n app/Component/Transcription/Job/StartTranscriptDiarizationJob.php | 2 +-\n app/Component/Transcription/Job/TranscriptSegmentsCompileJob.php | 43 +-\n app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php | 16 -\n app/Component/Transcription/Service/SearchService.php | 180 ++--\n app/Component/Transcription/Service/TranscriptSegmentsService.php | 396 --------\n app/Component/Transcription/Service/TranscriptionPdfService.php | 132 +++\n app/Component/Transcription/Service/TranscriptionService.php | 142 +--\n app/Component/Transcription/Service/TranslationService.php | 59 +-\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAI.php | 172 +---\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php | 48 +\n .../Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php | 111 +++\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileService.php | 16 +-\n app/Component/Transcription/VO/TranscriptSegmentTransformer.php | 37 -\n app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php | 751 +++++++++++++++\n app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php | 254 ++++++\n app/Console/Commands/EngagementStats/JiminnyEngagementStatsExplainCommand.php | 76 +-\n app/Console/Commands/Mailboxes/BatchCreate.php | 9 +\n app/Console/Commands/Mailboxes/BatchProcess.php | 18 +-\n app/Console/Commands/Mailboxes/InboxSync.php | 23 +-\n app/Console/Kernel.php | 4 +\n app/Contracts/Crm/ProspectInterface.php | 14 +-\n app/Contracts/Crm/SyncableCrmObjectInterface.php | 33 +\n app/Contracts/Services/Crm/SyncCrmEntitiesInterface.php | 11 +-\n app/Events/Crm/RemoteCrmRecordDeleted.php | 45 +\n app/Exceptions/HttpBadRequestException.php | 4 +-\n app/Exceptions/HttpForbiddenException.php | 4 +-\n app/Exceptions/HttpMethodNotAllowedException.php | 4 +-\n app/Exceptions/HttpNotFoundException.php | 4 +-\n app/Exceptions/HttpSessionExpiredException.php | 8 +-\n app/Exceptions/HttpUnauthorizedException.php | 4 +-\n app/Exceptions/HttpUnsupportedFormatException.php | 4 +-\n app/Guards/Sso.php | 35 +-\n app/Http/Controllers/API/TranscriptionController.php | 21 +-\n app/Http/Controllers/Auth/SocialController.php | 2 +-\n app/Http/Controllers/Auth/SsoController.php | 12 +-\n app/Jobs/Activity/DeleteTeamChurnData.php | 4 +-\n app/Jobs/Activity/Import/MatchCrmData.php | 6 +-\n app/Jobs/Calendar/SetupCalendarSync.php | 30 +-\n app/Jobs/Calendar/SyncCalendarEvents.php | 21 +-\n app/Jobs/DealRisks/RecalculateDealRisksOnCronJob.php | 17 +-\n app/Jobs/Mailbox/SyncInbox.php | 51 +-\n app/Listeners/Activities/Coaching/Intercom/CreateActivitySummarizedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateCommentedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateManagerCoachedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreatePlayedEvent.php | 6 +\n app/Listeners/Activities/Conferences/Intercom/CreateHeldActivityEvent.php | 6 +\n app/Listeners/Activities/Crm/MatchCrmObject.php | 126 ++-\n app/Listeners/Activities/Crm/Summary/AbstractSummaryListener.php | 5 +-\n app/Listeners/Activities/Sms/Intercom/CreateSmsReceivedEvent.php | 6 +\n app/Listeners/Crm/RemoteCrmRecordDeletedListener.php | 111 +++\n app/Models/Account.php | 6 +-\n app/Models/Activity.php | 42 +-\n app/Models/Activity/TopicTrigger.php | 2 +-\n app/Models/Activity/Transcription.php | 29 +-\n app/Models/Contact.php | 6 +-\n app/Models/Inbox.php | 3 +-\n app/Models/InboxEmail.php | 1 +\n app/Models/Lead.php | 6 +-\n app/Models/Opportunity.php | 15 +-\n app/Models/Participant.php | 20 +\n app/Providers/EventServiceProvider.php | 6 +-\n app/Providers/JiminnyServiceProvider.php | 23 -\n app/Providers/RouteServiceProvider.php | 26 +-\n app/Repositories/QuestionRepository.php | 32 +-\n app/Services/Activity/Gmail/Service.php | 13 +-\n app/Services/Activity/HubSpot/AuthenticatedHttpClient.php | 75 +-\n app/Services/Activity/HubSpot/RedirectUrlResolver.php | 91 ++\n app/Services/Activity/HubSpot/Service.php | 17 +-\n app/Services/Activity/HubSpot/ZoomRecordingDetector.php | 27 +\n app/Services/Activity/MeetingBotService.php | 5 +-\n app/Services/Calendar/GoogleCalendarService.php | 36 +-\n app/Services/Calendar/OfficeCalendarService.php | 39 +-\n app/Services/Crm/CachedCrmServiceDecorator.php | 11 +-\n app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php | 128 +++\n app/Services/Crm/Hubspot/ServiceTraits/WriteCrmTrait.php | 51 +-\n app/Services/Crm/Hubspot/SyncRelatedActivityManager.php | 9 +-\n app/Services/Crm/ProspectCache.php | 38 +-\n app/Services/Mail/InboxService.php | 10 +\n app/Services/Mail/InboxServiceInterface.php | 2 +-\n app/Services/Mail/Repositories/EmailServiceRepository.php | 16 +\n composer.json | 3 +-\n composer.lock | 420 ++-------\n contrib/tmp/hubspot-associations-US/2026-02-02.json | 2254 +++++++++++++++++++++++++++++++++++++++++++++\n contrib/tmp/hubspot-associations-US/2026-02-18.json | 1398 ++++++++++++++++++++++++++++\n contrib/tmp/hubspot-associations-US/2026-03-05.json | 2214 ++++++++++++++++++++++++++++++++++++++++++++\n contrib/tmp/hubspot-associations-US/2026-03-20.json | 2786 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n database/migrations/2026_04_05_090000_drop_unique_index_from_activity_topic_triggers.php | 12 +-\n database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php | 91 ++\n front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 1 -\n front-end/src/components/Settings/Kiosk/ActivitiesSearch/ActivityTranscription.vue | 12 +-\n .../components/Settings/OrgSettings/AiAutomation/CallScoring/callScoringTemplates/useCallScoringTemplates.js | 7 +-\n front-end/src/components/Settings/OrgSettings/AiAutomation/__test__/__snapshots__/AiAutomation.spec.js.snap | 4 +-\n front-end/src/components/Settings/OrgSettings/AiContext/__test__/__snapshots__/AiContext.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/DealInsights/__tests__/__snapshots__/DealInsights.spec.js.snap | 2 +-\n .../src/components/Settings/OrgSettings/Organization/__tests__/__snapshots__/OrganizationSettings.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Playbooks/__test__/__snapshots__/Playbooks.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Recording/__tests__/__snapshots__/Recording.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Topics/__tests__/__snapshots__/Topics.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Topics/__tests__/confirmationDialogs.spec.js | 6 +-\n front-end/src/components/Settings/OrgSettings/Topics/confirmationDialogs.js | 4 +-\n front-end/src/components/Settings/shared/Navigation/OrgSettingsNavigation.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AutomatedCallScoring/AutomatedCallScoring.vue | 4 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/index.vue | 2 +-\n front-end/src/components/TeamInsights/Conversations/__mocks__/data.js | 2 +-\n front-end/src/components/TeamInsights/Dashboard/ChartHeader.vue | 10 +-\n front-end/src/components/TeamInsights/Dashboard/CoachingOverTime.vue | 2 +-\n front-end/src/components/TeamInsights/Deals/__mocks__/topicsOverview.js | 2 +-\n front-end/src/components/TeamInsights/Themes/__mocks__/data.js | 2 +-\n front-end/src/components/dashboard/__mocks__/data.js | 2 +-\n front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.less | 8 +\n front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.vue | 80 +-\n front-end/src/components/layout/Sidebar/QuickSearch/useRecentlyVisited.js | 10 +-\n front-end/src/components/layout/Sidebar/__tests__/__snapshots__/QuickSearch.spec.js.snap | 36 +-\n front-end/src/components/ondemand/__mocks__/activity-list.js | 6 +-\n front-end/src/components/ondemand/__mocks__/on-demand.js | 2 +-\n front-end/src/components/ondemand/__tests__/__snapshots__/Ondemand.spec.js.snap | 2 +-\n front-end/src/components/playback/Transcripts/useTranscriptsActions.js | 2 +-\n front-end/src/components/playback/__tests__/__snapshots__/Playback.spec.js.snap | 44 +-\n front-end/src/components/playback/media-player/player-main/Waveform/ActivityWaveform.vue | 3 +\n front-end/src/components/playback/media-player/player-main/Waveform/WaveformTimeline.vue | 63 +-\n front-end/src/components/shared/Filters/InputText.vue | 2 +\n front-end/src/components/shared/autoscore-rating/AutoscoreStars.vue | 2 +-\n front-end/src/helpers/constants.js | 7 +\n front-end/src/locales/en-US.js | 2 +-\n front-end/src/store/modules/playback/actions.js | 39 +-\n phpstan-baseline.neon | 40 -\n resources/views/pdf/transcription.blade.php | 51 --\n routes/api.php | 5 +-\n tests/Feature/ServiceProviders/SsoTest.php | 191 ++++\n tests/Unit/Component/Activity/ActivityProcessingStateManagerTest.php | 17 +-\n tests/Unit/Component/ActivityAnalytics/Service/ActivityAnalyticsServiceTest.php | 137 ++-\n tests/Unit/Component/ActivityAnalytics/Service/LocalTriggerMatcherServiceTest.php | 135 +--\n tests/Unit/Component/ActivityAnalytics/Service/QuestionServiceTest.php | 610 +++----------\n tests/Unit/Component/ActivityAnalytics/VO/TopicTriggerMatchTest.php | 15 +\n tests/Unit/Component/ActivitySearch/FilterDefinition/AutoScoreFilterTest.php | 4 +-\n tests/Unit/Component/AiAutomation/Actions/UpdateCrmFieldActionTest.php | 66 ++\n tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php | 282 ++++++\n tests/Unit/Component/DealInsights/DealContactServiceTest.php | 12 +-\n tests/Unit/Component/DealInsights/DealServiceTest.php | 4 +-\n tests/Unit/Component/DealRisks/DealRiskTest.php | 29 +-\n tests/Unit/Component/DealRisks/DealRiskTypeTest.php | 24 +-\n tests/Unit/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRiskTest.php | 141 ++-\n tests/Unit/Component/DealRisks/DealRisksServiceTest.php | 18 +-\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 +-\n tests/Unit/Component/Kiosk/Services/GetTranscriptionComparisonServiceTest.php | 79 +-\n tests/Unit/Component/LanguageDetection/Services/DetectLanguageServiceTest.php | 132 ++-\n tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php | 97 ++\n tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php | 100 ++\n tests/Unit/Component/MediaPipeline/Services/GetMediaPipelineStatesServiceTest.php | 6 +\n tests/Unit/Component/ParagraphBreaker/Services/ParagraphBuilderTest.php | 53 +-\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 547 +++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/UtteranceBuilderTest.php | 73 +-\n tests/Unit/Component/Transcription/Formatter/TranscriptionFormatterTest.php | 8 +-\n tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php | 101 --\n tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php | 220 +++++\n tests/Unit/Component/Transcription/Service/SearchServiceTest.php | 193 ++++\n tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php | 465 ----------\n tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php | 116 +++\n tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 61 +-\n tests/Unit/Component/Transcription/Service/TranslationServiceTest.php | 31 +-\n tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAITest.php | 355 +-------\n .../TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php | 220 +++++\n tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/SubmitAudioFileServiceTest.php | 135 +--\n tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php | 68 --\n tests/Unit/Guards/SsoTest.php | 114 +++\n tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 124 ++-\n tests/Unit/Jobs/Calendar/SyncCalendarEventsTest.php | 147 +++\n tests/Unit/Jobs/DealRisks/RecalculateDealRisksOnCronJobTest.php | 17 +-\n tests/Unit/Jobs/Mailbox/SyncInboxTest.php | 272 ++++++\n tests/Unit/Listeners/Activities/Crm/MatchCrmObjectTest.php | 788 ++++++----------\n tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php | 276 ++++++\n tests/Unit/Services/Activity/HubSpot/AuthenticatedHttpClientTest.php | 207 +----\n tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php | 184 ++++\n tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 205 ++++-\n tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php | 196 ++++\n tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 88 ++\n tests/Unit/Services/Crm/CachedCrmServiceDecoratorTest.php | 9 +-\n tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php | 260 ++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/WriteCrmTraitTest.php | 148 ++-\n tests/Unit/Services/Crm/Hubspot/SyncRelatedActivityManagerTest.php | 105 +++\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/MatchProspectsTraitTest.php | 19 +-\n tests/Unit/Services/Crm/ProspectCacheTest.php | 11 +-\n tests/Unit/Services/Mail/InboxServiceTest.php | 4 +-\n 229 files changed, 20231 insertions(+), 4791 deletions(-)\n create mode 100644 .github/actions/fetch-dependabot-alerts/action.yml\n create mode 100644 .github/secfix/README.md\n create mode 100644 .github/secfix/SECFIX_PROMPT.md\n create mode 100755 .github/secfix/bin/composer\n create mode 100644 .github/secfix/claude-secfix-settings.json\n create mode 100644 .github/secfix/scripts/fetch-alerts.mjs\n create mode 100644 .github/secfix/scripts/secfix-append-pr-metrics.mjs\n create mode 100644 .github/secfix/scripts/secfix-pr-window.mjs\n create mode 100644 .github/secfix/scripts/secfix-should-skip.mjs\n create mode 100644 .github/secfix/scripts/secfix-slack-notify.mjs\n create mode 100644 .github/secfix/scripts/secfix-supported-ecosystems.mjs\n create mode 100644 .github/secfix/scripts/secfix-update-covered-alerts.mjs\n create mode 100644 .github/secfix/scripts/verify-claude-execution.mjs\n create mode 100644 .github/workflows/secfix.yml\n delete mode 100644 app/Component/ActivityAnalytics/Service/SentenceBreaker.php\n create mode 100644 app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php\n create mode 100644 app/Component/DealRisks/GroupDealRiskType.php\n create mode 100644 app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php\n create mode 100644 app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php\n create mode 100644 app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php\n create mode 100644 app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php\n delete mode 100644 app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php\n delete mode 100644 app/Component/Transcription/Service/TranscriptSegmentsService.php\n create mode 100644 app/Component/Transcription/Service/TranscriptionPdfService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php\n delete mode 100644 app/Component/Transcription/VO/TranscriptSegmentTransformer.php\n create mode 100644 app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php\n create mode 100644 app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php\n create mode 100644 app/Contracts/Crm/SyncableCrmObjectInterface.php\n create mode 100644 app/Events/Crm/RemoteCrmRecordDeleted.php\n create mode 100644 app/Listeners/Crm/RemoteCrmRecordDeletedListener.php\n create mode 100644 app/Services/Activity/HubSpot/RedirectUrlResolver.php\n create mode 100644 app/Services/Activity/HubSpot/ZoomRecordingDetector.php\n create mode 100644 app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-02.json\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-18.json\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-05.json\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-20.json\n create mode 100644 database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php\n delete mode 100644 resources/views/pdf/transcription.blade.php\n create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php\n create mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php\n create mode 100644 tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php\n create mode 100644 tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php\n create mode 100644 tests/Unit/Guards/SsoTest.php\n create mode 100644 tests/Unit/Jobs/Mailbox/SyncInboxTest.php\n create mode 100644 tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php\n create mode 100644 tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php\n create mode 100644 tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php\n create mode 100644 tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20692-fix-integration-app-token-auth-response-change\nSwitched to a new branch 'JY-20692-fix-integration-app-token-auth-response-change'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20692-fix-integration-app-token-auth-response-change) $ cd front-end \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-token-auth-response-change) $ yarn build\nyarn run v1.22.10\nerror @: The engine \"node\" is incompatible with this module. Expected version \">=24.11.1\". Got \"14.15.4\"\nerror @: The engine \"yarn\" is incompatible with this module. Expected version \">=4.12.0\". Got \"1.22.10\"\nerror Commands cannot run with an incompatible environment.\ninfo Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-token-auth-response-change) $ nvm use","depth":4,"value":"Last login: Thu Apr 16 15:48:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\n\nremote: Enumerating objects: 2343, done.\nremote: Counting objects: 100% (1306/1306), done.\nremote: Compressing objects: 100% (422/422), done.\nremote: Total 2343 (delta 1041), reused 1034 (delta 874), pack-reused 1037 (from 3)\nReceiving objects: 100% (2343/2343), 1.13 MiB | 2.75 MiB/s, done.\nResolving deltas: 100% (1585/1585), completed with 176 local objects.\nFrom github.com:jiminny/app\n a0a9685c0d..08ed383c5b JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n * [new branch] JY-20291-datadog-processing-states -> origin/JY-20291-datadog-processing-states\n * [new branch] JY-20485-enable-ai-call-scoring -> origin/JY-20485-enable-ai-call-scoring\n * [new branch] JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n * [new branch] JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n * [new branch] JY-20553-debug-crm-sync-delays -> origin/JY-20553-debug-crm-sync-delays\n * [new branch] JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n * [new branch] JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n * [new branch] JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns -> origin/JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns\n * [new branch] feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n * [new branch] fix-cache-for-business-processes -> origin/fix-cache-for-business-processes\n 09c3f776ad..5bb8fefcba master -> origin/master\n * [new branch] secfix/composer-20260415 -> origin/secfix/composer-20260415\n * [new branch] secfix/npm-20260416 -> origin/secfix/npm-20260416\nUpdating a0a9685c0d..08ed383c5b\nerror: Your local changes to the following files would be overwritten by merge:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/Webhook/ReportController.php\nPlease commit your changes or stash them before you merge.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportJob.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/Webhook/ReportController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tfront-end/src/components/connect/connect.vue\nM\u0000\u0000\u0000\u0000\u0000\u0000\tfront-end/src/components/onboard/Onboard.vue\nM\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nSwitched to branch 'master'\nYour branch is behind 'origin/master' by 459 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nUpdating 4b5aaaed8d..5bb8fefcba\nFast-forward\n .env.production | 2 +-\n .env.production-eu | 2 +-\n .github/actions/fetch-dependabot-alerts/action.yml | 36 +\n .github/secfix/README.md | 283 ++++++\n .github/secfix/SECFIX_PROMPT.md | 439 +++++++++\n .github/secfix/bin/composer | 18 +\n .github/secfix/claude-secfix-settings.json | 21 +\n .github/secfix/scripts/fetch-alerts.mjs | 163 ++++\n .github/secfix/scripts/secfix-append-pr-metrics.mjs | 140 +++\n .github/secfix/scripts/secfix-pr-window.mjs | 65 ++\n .github/secfix/scripts/secfix-should-skip.mjs | 180 ++++\n .github/secfix/scripts/secfix-slack-notify.mjs | 126 +++\n .github/secfix/scripts/secfix-supported-ecosystems.mjs | 16 +\n .github/secfix/scripts/secfix-update-covered-alerts.mjs | 187 ++++\n .github/secfix/scripts/verify-claude-execution.mjs | 56 ++\n .github/workflows/claude.yml | 1 +\n .github/workflows/secfix.yml | 454 +++++++++\n .gitignore | 1 +\n app/Component/Activity/ActivityProcessingStateManager.php | 4 +\n app/Component/ActivityAnalytics/Service/ActivityAnalyticsService.php | 68 +-\n app/Component/ActivityAnalytics/Service/LocalTriggerMatcherService.php | 40 +-\n app/Component/ActivityAnalytics/Service/QuestionService.php | 137 +--\n app/Component/ActivityAnalytics/Service/SentenceBreaker.php | 110 ---\n app/Component/ActivityAnalytics/VO/TopicTriggerMatch.php | 4 +-\n app/Component/ActivitySearch/FilterDefinition/AutoScoreFilter.php | 4 +-\n app/Component/AiAutomation/Actions/UpdateCrmFieldAction.php | 14 +-\n app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php | 92 ++\n app/Component/DealRisks/DealRisk.php | 5 +\n app/Component/DealRisks/DealRiskType.php | 40 +-\n app/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRisk.php | 34 +\n app/Component/DealRisks/DealRisksRepository.php | 67 +-\n app/Component/DealRisks/DealRisksService.php | 20 +-\n app/Component/DealRisks/GroupDealRiskType.php | 23 +\n app/Component/Kiosk/Services/GetTranscriptionComparisonService.php | 61 +-\n app/Component/LanguageDetection/Services/DetectLanguageService.php | 74 +-\n app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php | 37 +\n app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php | 45 +\n app/Component/MediaPipeline/MediaPipelineOrchestrator.php | 2 +\n app/Component/MediaPipeline/MediaPipelineServiceProvider.php | 8 +\n app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php | 46 +\n app/Component/ParagraphBreaker/Services/ParagraphBuilder.php | 29 +-\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 179 ++++\n app/Component/ParagraphBreaker/Services/UtteranceBuilder.php | 192 ++--\n app/Component/PlaybackPage/Snapshots/Listeners/GenerateSnapshotsListener.php | 6 +\n app/Component/Transcription/Formatter/TranscriptionFormatter.php | 11 +-\n app/Component/Transcription/Job/FinishTranscriptionJob.php | 17 +-\n app/Component/Transcription/Job/StartTranscriptDiarizationJob.php | 2 +-\n app/Component/Transcription/Job/TranscriptSegmentsCompileJob.php | 43 +-\n app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php | 16 -\n app/Component/Transcription/Service/SearchService.php | 180 ++--\n app/Component/Transcription/Service/TranscriptSegmentsService.php | 396 --------\n app/Component/Transcription/Service/TranscriptionPdfService.php | 132 +++\n app/Component/Transcription/Service/TranscriptionService.php | 142 +--\n app/Component/Transcription/Service/TranslationService.php | 59 +-\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAI.php | 172 +---\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php | 48 +\n .../Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php | 111 +++\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileService.php | 16 +-\n app/Component/Transcription/VO/TranscriptSegmentTransformer.php | 37 -\n app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php | 751 +++++++++++++++\n app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php | 254 ++++++\n app/Console/Commands/EngagementStats/JiminnyEngagementStatsExplainCommand.php | 76 +-\n app/Console/Commands/Mailboxes/BatchCreate.php | 9 +\n app/Console/Commands/Mailboxes/BatchProcess.php | 18 +-\n app/Console/Commands/Mailboxes/InboxSync.php | 23 +-\n app/Console/Kernel.php | 4 +\n app/Contracts/Crm/ProspectInterface.php | 14 +-\n app/Contracts/Crm/SyncableCrmObjectInterface.php | 33 +\n app/Contracts/Services/Crm/SyncCrmEntitiesInterface.php | 11 +-\n app/Events/Crm/RemoteCrmRecordDeleted.php | 45 +\n app/Exceptions/HttpBadRequestException.php | 4 +-\n app/Exceptions/HttpForbiddenException.php | 4 +-\n app/Exceptions/HttpMethodNotAllowedException.php | 4 +-\n app/Exceptions/HttpNotFoundException.php | 4 +-\n app/Exceptions/HttpSessionExpiredException.php | 8 +-\n app/Exceptions/HttpUnauthorizedException.php | 4 +-\n app/Exceptions/HttpUnsupportedFormatException.php | 4 +-\n app/Guards/Sso.php | 35 +-\n app/Http/Controllers/API/TranscriptionController.php | 21 +-\n app/Http/Controllers/Auth/SocialController.php | 2 +-\n app/Http/Controllers/Auth/SsoController.php | 12 +-\n app/Jobs/Activity/DeleteTeamChurnData.php | 4 +-\n app/Jobs/Activity/Import/MatchCrmData.php | 6 +-\n app/Jobs/Calendar/SetupCalendarSync.php | 30 +-\n app/Jobs/Calendar/SyncCalendarEvents.php | 21 +-\n app/Jobs/DealRisks/RecalculateDealRisksOnCronJob.php | 17 +-\n app/Jobs/Mailbox/SyncInbox.php | 51 +-\n app/Listeners/Activities/Coaching/Intercom/CreateActivitySummarizedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateCommentedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateManagerCoachedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreatePlayedEvent.php | 6 +\n app/Listeners/Activities/Conferences/Intercom/CreateHeldActivityEvent.php | 6 +\n app/Listeners/Activities/Crm/MatchCrmObject.php | 126 ++-\n app/Listeners/Activities/Crm/Summary/AbstractSummaryListener.php | 5 +-\n app/Listeners/Activities/Sms/Intercom/CreateSmsReceivedEvent.php | 6 +\n app/Listeners/Crm/RemoteCrmRecordDeletedListener.php | 111 +++\n app/Models/Account.php | 6 +-\n app/Models/Activity.php | 42 +-\n app/Models/Activity/TopicTrigger.php | 2 +-\n app/Models/Activity/Transcription.php | 29 +-\n app/Models/Contact.php | 6 +-\n app/Models/Inbox.php | 3 +-\n app/Models/InboxEmail.php | 1 +\n app/Models/Lead.php | 6 +-\n app/Models/Opportunity.php | 15 +-\n app/Models/Participant.php | 20 +\n app/Providers/EventServiceProvider.php | 6 +-\n app/Providers/JiminnyServiceProvider.php | 23 -\n app/Providers/RouteServiceProvider.php | 26 +-\n app/Repositories/QuestionRepository.php | 32 +-\n app/Services/Activity/Gmail/Service.php | 13 +-\n app/Services/Activity/HubSpot/AuthenticatedHttpClient.php | 75 +-\n app/Services/Activity/HubSpot/RedirectUrlResolver.php | 91 ++\n app/Services/Activity/HubSpot/Service.php | 17 +-\n app/Services/Activity/HubSpot/ZoomRecordingDetector.php | 27 +\n app/Services/Activity/MeetingBotService.php | 5 +-\n app/Services/Calendar/GoogleCalendarService.php | 36 +-\n app/Services/Calendar/OfficeCalendarService.php | 39 +-\n app/Services/Crm/CachedCrmServiceDecorator.php | 11 +-\n app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php | 128 +++\n app/Services/Crm/Hubspot/ServiceTraits/WriteCrmTrait.php | 51 +-\n app/Services/Crm/Hubspot/SyncRelatedActivityManager.php | 9 +-\n app/Services/Crm/ProspectCache.php | 38 +-\n app/Services/Mail/InboxService.php | 10 +\n app/Services/Mail/InboxServiceInterface.php | 2 +-\n app/Services/Mail/Repositories/EmailServiceRepository.php | 16 +\n composer.json | 3 +-\n composer.lock | 420 ++-------\n contrib/tmp/hubspot-associations-US/2026-02-02.json | 2254 +++++++++++++++++++++++++++++++++++++++++++++\n contrib/tmp/hubspot-associations-US/2026-02-18.json | 1398 ++++++++++++++++++++++++++++\n contrib/tmp/hubspot-associations-US/2026-03-05.json | 2214 ++++++++++++++++++++++++++++++++++++++++++++\n contrib/tmp/hubspot-associations-US/2026-03-20.json | 2786 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n database/migrations/2026_04_05_090000_drop_unique_index_from_activity_topic_triggers.php | 12 +-\n database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php | 91 ++\n front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 1 -\n front-end/src/components/Settings/Kiosk/ActivitiesSearch/ActivityTranscription.vue | 12 +-\n .../components/Settings/OrgSettings/AiAutomation/CallScoring/callScoringTemplates/useCallScoringTemplates.js | 7 +-\n front-end/src/components/Settings/OrgSettings/AiAutomation/__test__/__snapshots__/AiAutomation.spec.js.snap | 4 +-\n front-end/src/components/Settings/OrgSettings/AiContext/__test__/__snapshots__/AiContext.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/DealInsights/__tests__/__snapshots__/DealInsights.spec.js.snap | 2 +-\n .../src/components/Settings/OrgSettings/Organization/__tests__/__snapshots__/OrganizationSettings.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Playbooks/__test__/__snapshots__/Playbooks.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Recording/__tests__/__snapshots__/Recording.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Topics/__tests__/__snapshots__/Topics.spec.js.snap | 2 +-\n front-end/src/components/Settings/OrgSettings/Topics/__tests__/confirmationDialogs.spec.js | 6 +-\n front-end/src/components/Settings/OrgSettings/Topics/confirmationDialogs.js | 4 +-\n front-end/src/components/Settings/shared/Navigation/OrgSettingsNavigation.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AutomatedCallScoring/AutomatedCallScoring.vue | 4 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/index.vue | 2 +-\n front-end/src/components/TeamInsights/Conversations/__mocks__/data.js | 2 +-\n front-end/src/components/TeamInsights/Dashboard/ChartHeader.vue | 10 +-\n front-end/src/components/TeamInsights/Dashboard/CoachingOverTime.vue | 2 +-\n front-end/src/components/TeamInsights/Deals/__mocks__/topicsOverview.js | 2 +-\n front-end/src/components/TeamInsights/Themes/__mocks__/data.js | 2 +-\n front-end/src/components/dashboard/__mocks__/data.js | 2 +-\n front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.less | 8 +\n front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.vue | 80 +-\n front-end/src/components/layout/Sidebar/QuickSearch/useRecentlyVisited.js | 10 +-\n front-end/src/components/layout/Sidebar/__tests__/__snapshots__/QuickSearch.spec.js.snap | 36 +-\n front-end/src/components/ondemand/__mocks__/activity-list.js | 6 +-\n front-end/src/components/ondemand/__mocks__/on-demand.js | 2 +-\n front-end/src/components/ondemand/__tests__/__snapshots__/Ondemand.spec.js.snap | 2 +-\n front-end/src/components/playback/Transcripts/useTranscriptsActions.js | 2 +-\n front-end/src/components/playback/__tests__/__snapshots__/Playback.spec.js.snap | 44 +-\n front-end/src/components/playback/media-player/player-main/Waveform/ActivityWaveform.vue | 3 +\n front-end/src/components/playback/media-player/player-main/Waveform/WaveformTimeline.vue | 63 +-\n front-end/src/components/shared/Filters/InputText.vue | 2 +\n front-end/src/components/shared/autoscore-rating/AutoscoreStars.vue | 2 +-\n front-end/src/helpers/constants.js | 7 +\n front-end/src/locales/en-US.js | 2 +-\n front-end/src/store/modules/playback/actions.js | 39 +-\n phpstan-baseline.neon | 40 -\n resources/views/pdf/transcription.blade.php | 51 --\n routes/api.php | 5 +-\n tests/Feature/ServiceProviders/SsoTest.php | 191 ++++\n tests/Unit/Component/Activity/ActivityProcessingStateManagerTest.php | 17 +-\n tests/Unit/Component/ActivityAnalytics/Service/ActivityAnalyticsServiceTest.php | 137 ++-\n tests/Unit/Component/ActivityAnalytics/Service/LocalTriggerMatcherServiceTest.php | 135 +--\n tests/Unit/Component/ActivityAnalytics/Service/QuestionServiceTest.php | 610 +++----------\n tests/Unit/Component/ActivityAnalytics/VO/TopicTriggerMatchTest.php | 15 +\n tests/Unit/Component/ActivitySearch/FilterDefinition/AutoScoreFilterTest.php | 4 +-\n tests/Unit/Component/AiAutomation/Actions/UpdateCrmFieldActionTest.php | 66 ++\n tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php | 282 ++++++\n tests/Unit/Component/DealInsights/DealContactServiceTest.php | 12 +-\n tests/Unit/Component/DealInsights/DealServiceTest.php | 4 +-\n tests/Unit/Component/DealRisks/DealRiskTest.php | 29 +-\n tests/Unit/Component/DealRisks/DealRiskTypeTest.php | 24 +-\n tests/Unit/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRiskTest.php | 141 ++-\n tests/Unit/Component/DealRisks/DealRisksServiceTest.php | 18 +-\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 +-\n tests/Unit/Component/Kiosk/Services/GetTranscriptionComparisonServiceTest.php | 79 +-\n tests/Unit/Component/LanguageDetection/Services/DetectLanguageServiceTest.php | 132 ++-\n tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php | 97 ++\n tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php | 100 ++\n tests/Unit/Component/MediaPipeline/Services/GetMediaPipelineStatesServiceTest.php | 6 +\n tests/Unit/Component/ParagraphBreaker/Services/ParagraphBuilderTest.php | 53 +-\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 547 +++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/UtteranceBuilderTest.php | 73 +-\n tests/Unit/Component/Transcription/Formatter/TranscriptionFormatterTest.php | 8 +-\n tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php | 101 --\n tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php | 220 +++++\n tests/Unit/Component/Transcription/Service/SearchServiceTest.php | 193 ++++\n tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php | 465 ----------\n tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php | 116 +++\n tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 61 +-\n tests/Unit/Component/Transcription/Service/TranslationServiceTest.php | 31 +-\n tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAITest.php | 355 +-------\n .../TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php | 220 +++++\n tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/SubmitAudioFileServiceTest.php | 135 +--\n tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php | 68 --\n tests/Unit/Guards/SsoTest.php | 114 +++\n tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 124 ++-\n tests/Unit/Jobs/Calendar/SyncCalendarEventsTest.php | 147 +++\n tests/Unit/Jobs/DealRisks/RecalculateDealRisksOnCronJobTest.php | 17 +-\n tests/Unit/Jobs/Mailbox/SyncInboxTest.php | 272 ++++++\n tests/Unit/Listeners/Activities/Crm/MatchCrmObjectTest.php | 788 ++++++----------\n tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php | 276 ++++++\n tests/Unit/Services/Activity/HubSpot/AuthenticatedHttpClientTest.php | 207 +----\n tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php | 184 ++++\n tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 205 ++++-\n tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php | 196 ++++\n tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 88 ++\n tests/Unit/Services/Crm/CachedCrmServiceDecoratorTest.php | 9 +-\n tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php | 260 ++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/WriteCrmTraitTest.php | 148 ++-\n tests/Unit/Services/Crm/Hubspot/SyncRelatedActivityManagerTest.php | 105 +++\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/MatchProspectsTraitTest.php | 19 +-\n tests/Unit/Services/Crm/ProspectCacheTest.php | 11 +-\n tests/Unit/Services/Mail/InboxServiceTest.php | 4 +-\n 229 files changed, 20231 insertions(+), 4791 deletions(-)\n create mode 100644 .github/actions/fetch-dependabot-alerts/action.yml\n create mode 100644 .github/secfix/README.md\n create mode 100644 .github/secfix/SECFIX_PROMPT.md\n create mode 100755 .github/secfix/bin/composer\n create mode 100644 .github/secfix/claude-secfix-settings.json\n create mode 100644 .github/secfix/scripts/fetch-alerts.mjs\n create mode 100644 .github/secfix/scripts/secfix-append-pr-metrics.mjs\n create mode 100644 .github/secfix/scripts/secfix-pr-window.mjs\n create mode 100644 .github/secfix/scripts/secfix-should-skip.mjs\n create mode 100644 .github/secfix/scripts/secfix-slack-notify.mjs\n create mode 100644 .github/secfix/scripts/secfix-supported-ecosystems.mjs\n create mode 100644 .github/secfix/scripts/secfix-update-covered-alerts.mjs\n create mode 100644 .github/secfix/scripts/verify-claude-execution.mjs\n create mode 100644 .github/workflows/secfix.yml\n delete mode 100644 app/Component/ActivityAnalytics/Service/SentenceBreaker.php\n create mode 100644 app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php\n create mode 100644 app/Component/DealRisks/GroupDealRiskType.php\n create mode 100644 app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php\n create mode 100644 app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php\n create mode 100644 app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php\n create mode 100644 app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php\n delete mode 100644 app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php\n delete mode 100644 app/Component/Transcription/Service/TranscriptSegmentsService.php\n create mode 100644 app/Component/Transcription/Service/TranscriptionPdfService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php\n delete mode 100644 app/Component/Transcription/VO/TranscriptSegmentTransformer.php\n create mode 100644 app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php\n create mode 100644 app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php\n create mode 100644 app/Contracts/Crm/SyncableCrmObjectInterface.php\n create mode 100644 app/Events/Crm/RemoteCrmRecordDeleted.php\n create mode 100644 app/Listeners/Crm/RemoteCrmRecordDeletedListener.php\n create mode 100644 app/Services/Activity/HubSpot/RedirectUrlResolver.php\n create mode 100644 app/Services/Activity/HubSpot/ZoomRecordingDetector.php\n create mode 100644 app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-02.json\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-18.json\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-05.json\n create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-20.json\n create mode 100644 database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php\n delete mode 100644 resources/views/pdf/transcription.blade.php\n create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php\n create mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php\n create mode 100644 tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php\n create mode 100644 tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php\n create mode 100644 tests/Unit/Guards/SsoTest.php\n create mode 100644 tests/Unit/Jobs/Mailbox/SyncInboxTest.php\n create mode 100644 tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php\n create mode 100644 tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php\n create mode 100644 tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php\n create mode 100644 tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20692-fix-integration-app-token-auth-response-change\nSwitched to a new branch 'JY-20692-fix-integration-app-token-auth-response-change'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20692-fix-integration-app-token-auth-response-change) $ cd front-end \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-token-auth-response-change) $ yarn build\nyarn run v1.22.10\nerror @: The engine \"node\" is incompatible with this module. Expected version \">=24.11.1\". Got \"14.15.4\"\nerror @: The engine \"yarn\" is incompatible with this module. Expected version \">=4.12.0\". Got \"1.22.10\"\nerror Commands cannot run with an incompatible environment.\ninfo Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-token-auth-response-change) $ nvm use","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.23359375,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2359375,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.30273438,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.30507812,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.371875,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37421876,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.44101563,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.44335938,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5101563,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5125,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Review screenpipe usage and Boosteroid integration (claude)","depth":2,"bounds":{"left":0.5792969,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5816406,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6484375,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6507813,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-20-6-111:~ (nc)","depth":2,"bounds":{"left":0.7175781,"top":1.0,"width":0.06914063,"height":-0.037500024},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7199219,"top":1.0,"width":0.00625,"height":-0.04027772},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.77070314,"top":1.0,"width":0.021875,"height":-0.020833373},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"APP (-zsh)","depth":1,"bounds":{"left":0.50039065,"top":1.0,"width":0.02890625,"height":-0.021527767},"role_description":"text"}]...
|
8913992115161059671
|
2671448303982839888
|
visual_change
|
accessibility
|
NULL
|
Last login: Thu Apr 16 15:48:08 on ttys007
Poetry Last login: Thu Apr 16 15:48:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 2343, done.
remote: Counting objects: 100% (1306/1306), done.
remote: Compressing objects: 100% (422/422), done.
remote: Total 2343 (delta 1041), reused 1034 (delta 874), pack-reused 1037 (from 3)
Receiving objects: 100% (2343/2343), 1.13 MiB | 2.75 MiB/s, done.
Resolving deltas: 100% (1585/1585), completed with 176 local objects.
From github.com:jiminny/app
a0a9685c0d..08ed383c5b JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
* [new branch] JY-20291-datadog-processing-states -> origin/JY-20291-datadog-processing-states
* [new branch] JY-20485-enable-ai-call-scoring -> origin/JY-20485-enable-ai-call-scoring
* [new branch] JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
* [new branch] JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
* [new branch] JY-20553-debug-crm-sync-delays -> origin/JY-20553-debug-crm-sync-delays
* [new branch] JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
* [new branch] JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
* [new branch] JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns -> origin/JY-9712-change-forever-nudges-to-1-year-expiration-drop-columns
* [new branch] feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
* [new branch] fix-cache-for-business-processes -> origin/fix-cache-for-business-processes
09c3f776ad..5bb8fefcba master -> origin/master
* [new branch] secfix/composer-20260415 -> origin/secfix/composer-20260415
* [new branch] secfix/npm-20260416 -> origin/secfix/npm-20260416
Updating a0a9685c0d..08ed383c5b
error: Your local changes to the following files would be overwritten by merge:
app/Http/Controllers/Webhook/ReportController.php
Please commit your changes or stash them before you merge.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master
error: Your local changes to the following files would be overwritten by checkout:
app/Jobs/AutomatedReports/SendReportJob.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Http/Controllers/Webhook/ReportController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
M front-end/src/components/connect/connect.vue
M front-end/src/components/onboard/Onboard.vue
M routes/web.php
Switched to branch 'master'
Your branch is behind 'origin/master' by 459 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
Updating 4b5aaaed8d..5bb8fefcba
Fast-forward
.env.production | 2 +-
.env.production-eu | 2 +-
.github/actions/fetch-dependabot-alerts/action.yml | 36 +
.github/secfix/README.md | 283 ++++++
.github/secfix/SECFIX_PROMPT.md | 439 +++++++++
.github/secfix/bin/composer | 18 +
.github/secfix/claude-secfix-settings.json | 21 +
.github/secfix/scripts/fetch-alerts.mjs | 163 ++++
.github/secfix/scripts/secfix-append-pr-metrics.mjs | 140 +++
.github/secfix/scripts/secfix-pr-window.mjs | 65 ++
.github/secfix/scripts/secfix-should-skip.mjs | 180 ++++
.github/secfix/scripts/secfix-slack-notify.mjs | 126 +++
.github/secfix/scripts/secfix-supported-ecosystems.mjs | 16 +
.github/secfix/scripts/secfix-update-covered-alerts.mjs | 187 ++++
.github/secfix/scripts/verify-claude-execution.mjs | 56 ++
.github/workflows/claude.yml | 1 +
.github/workflows/secfix.yml | 454 +++++++++
.gitignore | 1 +
app/Component/Activity/ActivityProcessingStateManager.php | 4 +
app/Component/ActivityAnalytics/Service/ActivityAnalyticsService.php | 68 +-
app/Component/ActivityAnalytics/Service/LocalTriggerMatcherService.php | 40 +-
app/Component/ActivityAnalytics/Service/QuestionService.php | 137 +--
app/Component/ActivityAnalytics/Service/SentenceBreaker.php | 110 ---
app/Component/ActivityAnalytics/VO/TopicTriggerMatch.php | 4 +-
app/Component/ActivitySearch/FilterDefinition/AutoScoreFilter.php | 4 +-
app/Component/AiAutomation/Actions/UpdateCrmFieldAction.php | 14 +-
app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php | 92 ++
app/Component/DealRisks/DealRisk.php | 5 +
app/Component/DealRisks/DealRiskType.php | 40 +-
app/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRisk.php | 34 +
app/Component/DealRisks/DealRisksRepository.php | 67 +-
app/Component/DealRisks/DealRisksService.php | 20 +-
app/Component/DealRisks/GroupDealRiskType.php | 23 +
app/Component/Kiosk/Services/GetTranscriptionComparisonService.php | 61 +-
app/Component/LanguageDetection/Services/DetectLanguageService.php | 74 +-
app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php | 37 +
app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php | 45 +
app/Component/MediaPipeline/MediaPipelineOrchestrator.php | 2 +
app/Component/MediaPipeline/MediaPipelineServiceProvider.php | 8 +
app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php | 46 +
app/Component/ParagraphBreaker/Services/ParagraphBuilder.php | 29 +-
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 179 ++++
app/Component/ParagraphBreaker/Services/UtteranceBuilder.php | 192 ++--
app/Component/PlaybackPage/Snapshots/Listeners/GenerateSnapshotsListener.php | 6 +
app/Component/Transcription/Formatter/TranscriptionFormatter.php | 11 +-
app/Component/Transcription/Job/FinishTranscriptionJob.php | 17 +-
app/Component/Transcription/Job/StartTranscriptDiarizationJob.php | 2 +-
app/Component/Transcription/Job/TranscriptSegmentsCompileJob.php | 43 +-
app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php | 16 -
app/Component/Transcription/Service/SearchService.php | 180 ++--
app/Component/Transcription/Service/TranscriptSegmentsService.php | 396 --------
app/Component/Transcription/Service/TranscriptionPdfService.php | 132 +++
app/Component/Transcription/Service/TranscriptionService.php | 142 +--
app/Component/Transcription/Service/TranslationService.php | 59 +-
app/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAI.php | 172 +---
app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php | 48 +
.../Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php | 111 +++
app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileService.php | 16 +-
app/Component/Transcription/VO/TranscriptSegmentTransformer.php | 37 -
app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php | 751 +++++++++++++++
app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php | 254 ++++++
app/Console/Commands/EngagementStats/JiminnyEngagementStatsExplainCommand.php | 76 +-
app/Console/Commands/Mailboxes/BatchCreate.php | 9 +
app/Console/Commands/Mailboxes/BatchProcess.php | 18 +-
app/Console/Commands/Mailboxes/InboxSync.php | 23 +-
app/Console/Kernel.php | 4 +
app/Contracts/Crm/ProspectInterface.php | 14 +-
app/Contracts/Crm/SyncableCrmObjectInterface.php | 33 +
app/Contracts/Services/Crm/SyncCrmEntitiesInterface.php | 11 +-
app/Events/Crm/RemoteCrmRecordDeleted.php | 45 +
app/Exceptions/HttpBadRequestException.php | 4 +-
app/Exceptions/HttpForbiddenException.php | 4 +-
app/Exceptions/HttpMethodNotAllowedException.php | 4 +-
app/Exceptions/HttpNotFoundException.php | 4 +-
app/Exceptions/HttpSessionExpiredException.php | 8 +-
app/Exceptions/HttpUnauthorizedException.php | 4 +-
app/Exceptions/HttpUnsupportedFormatException.php | 4 +-
app/Guards/Sso.php | 35 +-
app/Http/Controllers/API/TranscriptionController.php | 21 +-
app/Http/Controllers/Auth/SocialController.php | 2 +-
app/Http/Controllers/Auth/SsoController.php | 12 +-
app/Jobs/Activity/DeleteTeamChurnData.php | 4 +-
app/Jobs/Activity/Import/MatchCrmData.php | 6 +-
app/Jobs/Calendar/SetupCalendarSync.php | 30 +-
app/Jobs/Calendar/SyncCalendarEvents.php | 21 +-
app/Jobs/DealRisks/RecalculateDealRisksOnCronJob.php | 17 +-
app/Jobs/Mailbox/SyncInbox.php | 51 +-
app/Listeners/Activities/Coaching/Intercom/CreateActivitySummarizedEvent.php | 6 +
app/Listeners/Activities/Coaching/Intercom/CreateCommentedEvent.php | 6 +
app/Listeners/Activities/Coaching/Intercom/CreateManagerCoachedEvent.php | 6 +
app/Listeners/Activities/Coaching/Intercom/CreatePlayedEvent.php | 6 +
app/Listeners/Activities/Conferences/Intercom/CreateHeldActivityEvent.php | 6 +
app/Listeners/Activities/Crm/MatchCrmObject.php | 126 ++-
app/Listeners/Activities/Crm/Summary/AbstractSummaryListener.php | 5 +-
app/Listeners/Activities/Sms/Intercom/CreateSmsReceivedEvent.php | 6 +
app/Listeners/Crm/RemoteCrmRecordDeletedListener.php | 111 +++
app/Models/Account.php | 6 +-
app/Models/Activity.php | 42 +-
app/Models/Activity/TopicTrigger.php | 2 +-
app/Models/Activity/Transcription.php | 29 +-
app/Models/Contact.php | 6 +-
app/Models/Inbox.php | 3 +-
app/Models/InboxEmail.php | 1 +
app/Models/Lead.php | 6 +-
app/Models/Opportunity.php | 15 +-
app/Models/Participant.php | 20 +
app/Providers/EventServiceProvider.php | 6 +-
app/Providers/JiminnyServiceProvider.php | 23 -
app/Providers/RouteServiceProvider.php | 26 +-
app/Repositories/QuestionRepository.php | 32 +-
app/Services/Activity/Gmail/Service.php | 13 +-
app/Services/Activity/HubSpot/AuthenticatedHttpClient.php | 75 +-
app/Services/Activity/HubSpot/RedirectUrlResolver.php | 91 ++
app/Services/Activity/HubSpot/Service.php | 17 +-
app/Services/Activity/HubSpot/ZoomRecordingDetector.php | 27 +
app/Services/Activity/MeetingBotService.php | 5 +-
app/Services/Calendar/GoogleCalendarService.php | 36 +-
app/Services/Calendar/OfficeCalendarService.php | 39 +-
app/Services/Crm/CachedCrmServiceDecorator.php | 11 +-
app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php | 128 +++
app/Services/Crm/Hubspot/ServiceTraits/WriteCrmTrait.php | 51 +-
app/Services/Crm/Hubspot/SyncRelatedActivityManager.php | 9 +-
app/Services/Crm/ProspectCache.php | 38 +-
app/Services/Mail/InboxService.php | 10 +
app/Services/Mail/InboxServiceInterface.php | 2 +-
app/Services/Mail/Repositories/EmailServiceRepository.php | 16 +
composer.json | 3 +-
composer.lock | 420 ++-------
contrib/tmp/hubspot-associations-US/2026-02-02.json | 2254 +++++++++++++++++++++++++++++++++++++++++++++
contrib/tmp/hubspot-associations-US/2026-02-18.json | 1398 ++++++++++++++++++++++++++++
contrib/tmp/hubspot-associations-US/2026-03-05.json | 2214 ++++++++++++++++++++++++++++++++++++++++++++
contrib/tmp/hubspot-associations-US/2026-03-20.json | 2786 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
database/migrations/2026_04_05_090000_drop_unique_index_from_activity_topic_triggers.php | 12 +-
database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php | 91 ++
front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 1 -
front-end/src/components/Settings/Kiosk/ActivitiesSearch/ActivityTranscription.vue | 12 +-
.../components/Settings/OrgSettings/AiAutomation/CallScoring/callScoringTemplates/useCallScoringTemplates.js | 7 +-
front-end/src/components/Settings/OrgSettings/AiAutomation/__test__/__snapshots__/AiAutomation.spec.js.snap | 4 +-
front-end/src/components/Settings/OrgSettings/AiContext/__test__/__snapshots__/AiContext.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/DealInsights/__tests__/__snapshots__/DealInsights.spec.js.snap | 2 +-
.../src/components/Settings/OrgSettings/Organization/__tests__/__snapshots__/OrganizationSettings.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Playbooks/__test__/__snapshots__/Playbooks.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Recording/__tests__/__snapshots__/Recording.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Topics/__tests__/__snapshots__/Topics.spec.js.snap | 2 +-
front-end/src/components/Settings/OrgSettings/Topics/__tests__/confirmationDialogs.spec.js | 6 +-
front-end/src/components/Settings/OrgSettings/Topics/confirmationDialogs.js | 4 +-
front-end/src/components/Settings/shared/Navigation/OrgSettingsNavigation.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AutomatedCallScoring/AutomatedCallScoring.vue | 4 +-
front-end/src/components/TeamInsights/CoachingFrameworks/index.vue | 2 +-
front-end/src/components/TeamInsights/Conversations/__mocks__/data.js | 2 +-
front-end/src/components/TeamInsights/Dashboard/ChartHeader.vue | 10 +-
front-end/src/components/TeamInsights/Dashboard/CoachingOverTime.vue | 2 +-
front-end/src/components/TeamInsights/Deals/__mocks__/topicsOverview.js | 2 +-
front-end/src/components/TeamInsights/Themes/__mocks__/data.js | 2 +-
front-end/src/components/dashboard/__mocks__/data.js | 2 +-
front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.less | 8 +
front-end/src/components/layout/Sidebar/QuickSearch/QuickSearchItem.vue | 80 +-
front-end/src/components/layout/Sidebar/QuickSearch/useRecentlyVisited.js | 10 +-
front-end/src/components/layout/Sidebar/__tests__/__snapshots__/QuickSearch.spec.js.snap | 36 +-
front-end/src/components/ondemand/__mocks__/activity-list.js | 6 +-
front-end/src/components/ondemand/__mocks__/on-demand.js | 2 +-
front-end/src/components/ondemand/__tests__/__snapshots__/Ondemand.spec.js.snap | 2 +-
front-end/src/components/playback/Transcripts/useTranscriptsActions.js | 2 +-
front-end/src/components/playback/__tests__/__snapshots__/Playback.spec.js.snap | 44 +-
front-end/src/components/playback/media-player/player-main/Waveform/ActivityWaveform.vue | 3 +
front-end/src/components/playback/media-player/player-main/Waveform/WaveformTimeline.vue | 63 +-
front-end/src/components/shared/Filters/InputText.vue | 2 +
front-end/src/components/shared/autoscore-rating/AutoscoreStars.vue | 2 +-
front-end/src/helpers/constants.js | 7 +
front-end/src/locales/en-US.js | 2 +-
front-end/src/store/modules/playback/actions.js | 39 +-
phpstan-baseline.neon | 40 -
resources/views/pdf/transcription.blade.php | 51 --
routes/api.php | 5 +-
tests/Feature/ServiceProviders/SsoTest.php | 191 ++++
tests/Unit/Component/Activity/ActivityProcessingStateManagerTest.php | 17 +-
tests/Unit/Component/ActivityAnalytics/Service/ActivityAnalyticsServiceTest.php | 137 ++-
tests/Unit/Component/ActivityAnalytics/Service/LocalTriggerMatcherServiceTest.php | 135 +--
tests/Unit/Component/ActivityAnalytics/Service/QuestionServiceTest.php | 610 +++----------
tests/Unit/Component/ActivityAnalytics/VO/TopicTriggerMatchTest.php | 15 +
tests/Unit/Component/ActivitySearch/FilterDefinition/AutoScoreFilterTest.php | 4 +-
tests/Unit/Component/AiAutomation/Actions/UpdateCrmFieldActionTest.php | 66 ++
tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php | 282 ++++++
tests/Unit/Component/DealInsights/DealContactServiceTest.php | 12 +-
tests/Unit/Component/DealInsights/DealServiceTest.php | 4 +-
tests/Unit/Component/DealRisks/DealRiskTest.php | 29 +-
tests/Unit/Component/DealRisks/DealRiskTypeTest.php | 24 +-
tests/Unit/Component/DealRisks/DealRiskTypes/CloseDatePassedDealRiskTest.php | 141 ++-
tests/Unit/Component/DealRisks/DealRisksServiceTest.php | 18 +-
tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 +-
tests/Unit/Component/Kiosk/Services/GetTranscriptionComparisonServiceTest.php | 79 +-
tests/Unit/Component/LanguageDetection/Services/DetectLanguageServiceTest.php | 132 ++-
tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php | 97 ++
tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php | 100 ++
tests/Unit/Component/MediaPipeline/Services/GetMediaPipelineStatesServiceTest.php | 6 +
tests/Unit/Component/ParagraphBreaker/Services/ParagraphBuilderTest.php | 53 +-
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 547 +++++++++++
tests/Unit/Component/ParagraphBreaker/Services/UtteranceBuilderTest.php | 73 +-
tests/Unit/Component/Transcription/Formatter/TranscriptionFormatterTest.php | 8 +-
tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php | 101 --
tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php | 220 +++++
tests/Unit/Component/Transcription/Service/SearchServiceTest.php | 193 ++++
tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php | 465 ----------
tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php | 116 +++
tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 61 +-
tests/Unit/Component/Transcription/Service/TranslationServiceTest.php | 31 +-
tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAITest.php | 355 +-------
.../TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php | 220 +++++
tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/SubmitAudioFileServiceTest.php | 135 +--
tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php | 68 --
tests/Unit/Guards/SsoTest.php | 114 +++
tests/Unit/Jobs/Calendar/SetupCalendarSyncTest.php | 124 ++-
tests/Unit/Jobs/Calendar/SyncCalendarEventsTest.php | 147 +++
tests/Unit/Jobs/DealRisks/RecalculateDealRisksOnCronJobTest.php | 17 +-
tests/Unit/Jobs/Mailbox/SyncInboxTest.php | 272 ++++++
tests/Unit/Listeners/Activities/Crm/MatchCrmObjectTest.php | 788 ++++++----------
tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php | 276 ++++++
tests/Unit/Services/Activity/HubSpot/AuthenticatedHttpClientTest.php | 207 +----
tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php | 184 ++++
tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 205 ++++-
tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php | 196 ++++
tests/Unit/Services/Calendar/GoogleCalendarServiceTest.php | 88 ++
tests/Unit/Services/Crm/CachedCrmServiceDecoratorTest.php | 9 +-
tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php | 260 ++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/WriteCrmTraitTest.php | 148 ++-
tests/Unit/Services/Crm/Hubspot/SyncRelatedActivityManagerTest.php | 105 +++
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/MatchProspectsTraitTest.php | 19 +-
tests/Unit/Services/Crm/ProspectCacheTest.php | 11 +-
tests/Unit/Services/Mail/InboxServiceTest.php | 4 +-
229 files changed, 20231 insertions(+), 4791 deletions(-)
create mode 100644 .github/actions/fetch-dependabot-alerts/action.yml
create mode 100644 .github/secfix/README.md
create mode 100644 .github/secfix/SECFIX_PROMPT.md
create mode 100755 .github/secfix/bin/composer
create mode 100644 .github/secfix/claude-secfix-settings.json
create mode 100644 .github/secfix/scripts/fetch-alerts.mjs
create mode 100644 .github/secfix/scripts/secfix-append-pr-metrics.mjs
create mode 100644 .github/secfix/scripts/secfix-pr-window.mjs
create mode 100644 .github/secfix/scripts/secfix-should-skip.mjs
create mode 100644 .github/secfix/scripts/secfix-slack-notify.mjs
create mode 100644 .github/secfix/scripts/secfix-supported-ecosystems.mjs
create mode 100644 .github/secfix/scripts/secfix-update-covered-alerts.mjs
create mode 100644 .github/secfix/scripts/verify-claude-execution.mjs
create mode 100644 .github/workflows/secfix.yml
delete mode 100644 app/Component/ActivityAnalytics/Service/SentenceBreaker.php
create mode 100644 app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php
create mode 100644 app/Component/DealRisks/GroupDealRiskType.php
create mode 100644 app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php
create mode 100644 app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php
create mode 100644 app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php
create mode 100644 app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php
delete mode 100644 app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php
delete mode 100644 app/Component/Transcription/Service/TranscriptSegmentsService.php
create mode 100644 app/Component/Transcription/Service/TranscriptionPdfService.php
create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php
create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php
delete mode 100644 app/Component/Transcription/VO/TranscriptSegmentTransformer.php
create mode 100644 app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php
create mode 100644 app/Console/Commands/Crm/SyncOpportunitiesMissingFieldDataCommand.php
create mode 100644 app/Contracts/Crm/SyncableCrmObjectInterface.php
create mode 100644 app/Events/Crm/RemoteCrmRecordDeleted.php
create mode 100644 app/Listeners/Crm/RemoteCrmRecordDeletedListener.php
create mode 100644 app/Services/Activity/HubSpot/RedirectUrlResolver.php
create mode 100644 app/Services/Activity/HubSpot/ZoomRecordingDetector.php
create mode 100644 app/Services/Crm/CrmObjects/Validators/StaleRecordValidator.php
create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-02.json
create mode 100644 contrib/tmp/hubspot-associations-US/2026-02-18.json
create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-05.json
create mode 100644 contrib/tmp/hubspot-associations-US/2026-03-20.json
create mode 100644 database/migrations/2026_04_14_140000_move_acs_to_add_on_and_keep_active_customers.php
delete mode 100644 resources/views/pdf/transcription.blade.php
create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php
create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php
create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php
create mode 100644 tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php
delete mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php
create mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php
delete mode 100644 tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php
create mode 100644 tests/Unit/Component/Transcription/Service/TranscriptionPdfServiceTest.php
create mode 100644 tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php
delete mode 100644 tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php
create mode 100644 tests/Unit/Guards/SsoTest.php
create mode 100644 tests/Unit/Jobs/Mailbox/SyncInboxTest.php
create mode 100644 tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php
create mode 100644 tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php
create mode 100644 tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php
create mode 100644 tests/Unit/Services/Crm/CrmObjects/Validators/StaleRecordValidatorTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20692-fix-integration-app-[API_KEY]
Switched to a new branch 'JY-20692-fix-integration-app-[API_KEY]'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20692-fix-integration-app-[API_KEY]) $ cd front-end
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-[API_KEY]) $ yarn build
yarn run v1.22.10
error @: The engine "node" is incompatible with this module. Expected version ">=24.11.1". Got "14.15.4"
error @: The engine "yarn" is incompatible with this module. Expected version ">=4.12.0". Got "1.22.10"
error Commands cannot run with an incompatible environment.
info Visit [URL_WITH_CREDENTIALS] (nc)
Close Tab
⌥⌘1
APP (-zsh)...
|
NULL
|
|
12162
|
259
|
40
|
2026-04-14T10:53:29.723783+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776164009723_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactorToolsWindow#11894 on JY-18909-automated-reports-ask-iminny ~HelpProjectv© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.phpInboxEmailBatchRepositoryInboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.phpNotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php© PlaylistActivityRepository.f© PlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.phpC) RoleChangeEventReposito© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.© TaskRepository.php© TeamAiContextRepository.© TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php©TopicRepository.php© TopicTriggerRepository.ph©TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.ph©TranscriptionSummaryRepr© UserRepository.php© VocabularyRepository.php› D Rulesv _ Services> D Activity> D AjReports> D AvatarCalendarC ConferenceD Crm› D Import> MInternalv MKioskv M AutomatedReports(C) ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsS:© DealStagesService.p© RecipientsService.ph© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsRepository.phpC AutomatedReportsService.php X© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCommand.phpCreateHeldActivityEvent.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass Aucomareareporcsservice760772773774775public function getReportTeamsName(AutomatedReportResult $report): stringif ($group) {$groupNames[] = $group->getName();l/utomatecRenorissenoCommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.phpA 102 X3 X 3478979079179279379579679777080080680780880Y810O11812813814815816817if (count($groupNames) === 1) {// Single team format$teamsName = $groupNames[0];felse {// Multiple teams format$teamsName = implode( separator:$groupNames);return sreanstane.15 usagespublic function getReportFileName(AutomatedReportResult $report): string$customName = $report->getReport()->getCustomName();$periodName = $this->getReportPeriodName($report);$filenameSuffix = $this->getFilenameSuffix($report);if ($customName) {if ($filenameSuffix) {ncus counalle .="{$[E LenameSuffix}";return $this->sanitizeFileName( fileName: "{$customName} - {$periodName}");$baseName = $this->getReportTypeName($report);if ($filenameSuffix) {"Dasename .=" ipf1lenamesuttix";return $this->sanitizeFileName(fileName: "($baseName} - {$periodName} - {$this->getReportTeamsName($report)}");Lusagespublic function getReportFileNameWithExtension(AutomatedReportResult $result): string$extension = $this->getMediaTypeMetadata($result) ['extension'];return $this->getReportFileName($result)'' . $extension;4 usagesououc runcmion santezert eraie sumno nlerale, scrunoreturn str_replace(['/', '|\'], (replace:'-', $fileName);> 0lablf Support Daily • in 1h 7 mAAutomatedRenortsCommandTest100% [45)Tue 14 Apr 13:53:29= custom.log= laravel.logA SF ljiminny@localhost]A console [STAGING] X© AskJiminnyReportActivityService.php4 HS_local [jiminny@localhost]© ActivitySearch.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.phpX:Auto vPlavaroundvAl console [PROD]A console [EU]cOnbemanavzcontroller.oneC HistoryService.php© RequestGenerateAskJiminnyReportJobTest.phpMa lminnv v521-522523524525526527152815305315325335345355365375381557540541-542543544546=547548fsc9-550551554553554555556557558559560561562563_564565566-567568569JOIN users u on u.id = sa.sociable_idJOIN teams t 1..n<->1: on t.id = u.team_idWHERE u.team_id = 1 and sa.provider = 'salesforce':016 A13 V.13 л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 = 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, uvid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage.# crm_configuration_id, crm_provider_id, transcription_id, statusfrom activities where crm_configuration_id = 1 and type = 'conference'# and crm_provider_id IS NOT NULLand provider != 'uploader' and actual_start_time IS NOT NULLORDER by id desc;select * from activities where id = 54747783; # 00U0400000pCzojMACselect p.id, p.activity_type,pc.id, pc.nameFROM playbooks pjoin playbook_categories pc1<->1..n: on p.id = pc.playbook_idwhere p.team_id = 1 and p.activity_type = 'event';SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts pl 1<-›1.n: on cl.id = pl. layout_idwhere crm_configuration_id = 1 and pl.playbook_id = 175;select * from teams;SELECT r.* FROM automated_reports rjoin teams t on r.team.id = t.idWHERE r.freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRires.at >= now() OR r.expires.at IS NULL):select * from automated_report_results where ceRontaid IN (18, 33);select * from activity_searches where id = 10932;W Windsurf Teams 790:37UTF-84 spaces...
|
NULL
|
8913593683244175976
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactorToolsWindow#11894 on JY-18909-automated-reports-ask-iminny ~HelpProjectv© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.phpInboxEmailBatchRepositoryInboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.phpNotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php© PlaylistActivityRepository.f© PlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.phpC) RoleChangeEventReposito© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.© TaskRepository.php© TeamAiContextRepository.© TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php©TopicRepository.php© TopicTriggerRepository.ph©TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.ph©TranscriptionSummaryRepr© UserRepository.php© VocabularyRepository.php› D Rulesv _ Services> D Activity> D AjReports> D AvatarCalendarC ConferenceD Crm› D Import> MInternalv MKioskv M AutomatedReports(C) ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsS:© DealStagesService.p© RecipientsService.ph© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsRepository.phpC AutomatedReportsService.php X© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCommand.phpCreateHeldActivityEvent.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass Aucomareareporcsservice760772773774775public function getReportTeamsName(AutomatedReportResult $report): stringif ($group) {$groupNames[] = $group->getName();l/utomatecRenorissenoCommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.phpA 102 X3 X 3478979079179279379579679777080080680780880Y810O11812813814815816817if (count($groupNames) === 1) {// Single team format$teamsName = $groupNames[0];felse {// Multiple teams format$teamsName = implode( separator:$groupNames);return sreanstane.15 usagespublic function getReportFileName(AutomatedReportResult $report): string$customName = $report->getReport()->getCustomName();$periodName = $this->getReportPeriodName($report);$filenameSuffix = $this->getFilenameSuffix($report);if ($customName) {if ($filenameSuffix) {ncus counalle .="{$[E LenameSuffix}";return $this->sanitizeFileName( fileName: "{$customName} - {$periodName}");$baseName = $this->getReportTypeName($report);if ($filenameSuffix) {"Dasename .=" ipf1lenamesuttix";return $this->sanitizeFileName(fileName: "($baseName} - {$periodName} - {$this->getReportTeamsName($report)}");Lusagespublic function getReportFileNameWithExtension(AutomatedReportResult $result): string$extension = $this->getMediaTypeMetadata($result) ['extension'];return $this->getReportFileName($result)'' . $extension;4 usagesououc runcmion santezert eraie sumno nlerale, scrunoreturn str_replace(['/', '|\'], (replace:'-', $fileName);> 0lablf Support Daily • in 1h 7 mAAutomatedRenortsCommandTest100% [45)Tue 14 Apr 13:53:29= custom.log= laravel.logA SF ljiminny@localhost]A console [STAGING] X© AskJiminnyReportActivityService.php4 HS_local [jiminny@localhost]© ActivitySearch.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.phpX:Auto vPlavaroundvAl console [PROD]A console [EU]cOnbemanavzcontroller.oneC HistoryService.php© RequestGenerateAskJiminnyReportJobTest.phpMa lminnv v521-522523524525526527152815305315325335345355365375381557540541-542543544546=547548fsc9-550551554553554555556557558559560561562563_564565566-567568569JOIN users u on u.id = sa.sociable_idJOIN teams t 1..n<->1: on t.id = u.team_idWHERE u.team_id = 1 and sa.provider = 'salesforce':016 A13 V.13 л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 = 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, uvid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage.# crm_configuration_id, crm_provider_id, transcription_id, statusfrom activities where crm_configuration_id = 1 and type = 'conference'# and crm_provider_id IS NOT NULLand provider != 'uploader' and actual_start_time IS NOT NULLORDER by id desc;select * from activities where id = 54747783; # 00U0400000pCzojMACselect p.id, p.activity_type,pc.id, pc.nameFROM playbooks pjoin playbook_categories pc1<->1..n: on p.id = pc.playbook_idwhere p.team_id = 1 and p.activity_type = 'event';SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts pl 1<-›1.n: on cl.id = pl. layout_idwhere crm_configuration_id = 1 and pl.playbook_id = 175;select * from teams;SELECT r.* FROM automated_reports rjoin teams t on r.team.id = t.idWHERE r.freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRires.at >= now() OR r.expires.at IS NULL):select * from automated_report_results where ceRontaid IN (18, 33);select * from activity_searches where id = 10932;W Windsurf Teams 790:37UTF-84 spaces...
|
NULL
|
|
61034
|
1316
|
9
|
2026-04-21T06:33:27.514935+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776753207514_m1.jpg...
|
Firefox
|
[SRD-6793] Les Mills activity types not pulling in [SRD-6793] Les Mills activity types not pulling in - Jira — Work...
|
True
|
jiminny.atlassian.net/jira/servicedesk/projects/SR jiminny.atlassian.net/jira/servicedesk/projects/SRD/queues/custom/37/SRD-6793...
|
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
[SRD-6793] Les Mills activity types not pulling in - Jira
Close tab
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Close bookmarks (⌘B)
Bookmarks
Bookmarks
Close sidebar
Search bookmarks
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Team Priority
Team Priority
All open tickets
All open tickets
Star All open tickets
12
Unassigned tickets
Unassigned tickets
Star Unassigned tickets
2
Support team Queue
Support team Queue
Star Support team Queue
4
Raised by me
Raised by me
Star Raised by me
0
Assigned to me
Assigned to me
Star Assigned to me
1
Service requests
Service requests
Star Service requests
4
Platform team
Platform team
Star Platform team
1
Processing team
Processing team
Star Processing team
9
Site reliability team
Site reliability team
Star Site reliability team
0
New features requests
New features requests
Star New features requests
0
InfoSec issues
InfoSec issues
Star InfoSec issues
0
Ready for Customer
Ready for Customer
Star Ready for Customer
0
Resolved tickets
Resolved tickets
Star Resolved tickets
999+
View all queues
View all queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Back
Back
Bug - Change work type
SRD-6793
SRD-6793
Copy link
Les Mills activity types not pulling in- edit summary, edit
Les Mills activity types not pulling in
Les Mills activity types not pulling in
Link work item
Link work item
Link web pages and more
Link web pages and more
Add form
Add form
Add design
Add design
Create
Create
Add app
Stoyan Tomov
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal
Description
Description
Edit Description, edit
Hey team,
While testing something on Les Mills’s instance, I saw that we are not pulling in their activity types when a new Playbook is created.
I tried creating “
LMUS
CX
Playbook test” Playbook (ID 5515), but no activity types got pulled in.
When I tried reproducing the same on our Jiminny instance, the activity types appeared.
Can someone please check why we are not pulling the activity types for Les Mills?
Data Centre
More information about
Edit Data Centre
US
Steps to reproduce
Steps to reproduce
More information about...
|
[{"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":true},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"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":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Bookmarks","depth":5,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bookmarks","depth":6,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close sidebar","depth":6,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Search bookmarks","depth":7,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Queues","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for queues","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for queues","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Team Priority","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Team Priority","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All open tickets","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All open tickets","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star All open tickets","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Unassigned tickets","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Unassigned tickets","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Unassigned tickets","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Support team Queue","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Support team Queue","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Support team Queue","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Raised by me","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Raised by me","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Raised by me","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Assigned to me","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Assigned to me","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Assigned to me","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Service requests","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service requests","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Service requests","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform team","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform team","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Platform team","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing team","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing team","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Processing team","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Site reliability team","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Site reliability team","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Site reliability team","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"New features requests","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New features requests","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star New features requests","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"InfoSec issues","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"InfoSec issues","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star InfoSec issues","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ready for Customer","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ready for Customer","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Ready for Customer","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Resolved tickets","depth":25,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Resolved tickets","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Star Resolved tickets","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"999+","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View all queues","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View all queues","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service requests","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for service requests","depth":22,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for service requests","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Incidents","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More for incidents","depth":23,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More for incidents","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for reports","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for reports","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Operations","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for operations","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for operations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Knowledge Base","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Knowledge Base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for knowledge base","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for knowledge base","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Customers","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customers","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customers","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Channels","depth":19,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channels","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email logs","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Email logs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for customer notification logs","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for customer notification logs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer escalations","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Slack integration","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Slack integration","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Reporting Center","depth":20,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Reporting Center","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add shortcut","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shortcut","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for developer escalations","depth":20,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for developer escalations","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for archived work items","depth":20,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for archived work items","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.0,"top":0.031111112,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.0,"top":0.031111112,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"bounds":{"left":0.0,"top":0.10222222,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"bounds":{"left":0.0,"top":0.13777778,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"bounds":{"left":0.0,"top":0.13777778,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"bounds":{"left":0.0,"top":0.17333333,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"bounds":{"left":0.0,"top":0.25777778,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Back","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Bug - Change work type","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"SRD-6793","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6793","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Les Mills activity types not pulling in- edit summary, edit","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Les Mills activity types not pulling in","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Les Mills activity types not pulling in","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link work item","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Link work item","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Link web pages and more","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Link web pages and more","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add form","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add form","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add design","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add design","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add app","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stoyan Tomov","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"raised this request","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jira","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hide details","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide details","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View request in portal","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View request in portal","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Description","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Description, edit","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey team,","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"While testing something on Les Mills’s instance, I saw that we are not pulling in their activity types when a new Playbook is created.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I tried creating “","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LMUS","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CX","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Playbook test” Playbook (ID 5515), but no activity types got pulled in.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When I tried reproducing the same on our Jiminny instance, the activity types appeared.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Can someone please check why we are not pulling the activity types for Les Mills?","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Data Centre","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit Data Centre","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"US","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Steps to reproduce","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steps to reproduce","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8913554987775027117
|
221790930945889452
|
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
[SRD-6793] Les Mills activity types not pulling in - Jira
Close tab
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Close bookmarks (⌘B)
Bookmarks
Bookmarks
Close sidebar
Search bookmarks
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
Queues
Queues
Create
Create
More for queues
More for queues
Team Priority
Team Priority
All open tickets
All open tickets
Star All open tickets
12
Unassigned tickets
Unassigned tickets
Star Unassigned tickets
2
Support team Queue
Support team Queue
Star Support team Queue
4
Raised by me
Raised by me
Star Raised by me
0
Assigned to me
Assigned to me
Star Assigned to me
1
Service requests
Service requests
Star Service requests
4
Platform team
Platform team
Star Platform team
1
Processing team
Processing team
Star Processing team
9
Site reliability team
Site reliability team
Star Site reliability team
0
New features requests
New features requests
Star New features requests
0
InfoSec issues
InfoSec issues
Star InfoSec issues
0
Ready for Customer
Ready for Customer
Star Ready for Customer
0
Resolved tickets
Resolved tickets
Star Resolved tickets
999+
View all queues
View all queues
Service requests
Service requests
Create
Create
More for service requests
More for service requests
Incidents
Incidents
Create
Create
More for incidents
More for incidents
Reports
Reports
More actions for reports
More actions for reports
Operations
Operations
More actions for operations
More actions for operations
Knowledge Base
Knowledge Base
More actions for knowledge base
More actions for knowledge base
Customers
Customers
More actions for customers
More actions for customers
Channels
Channels
Email logs
Email logs
More actions for customer notification logs
More actions for customer notification logs
Developer escalations
Developer escalations
More actions for developer escalations
More actions for developer escalations
Slack integration
Slack integration
More actions for Slack integration
More actions for Slack integration
Reporting Center
Reporting Center
More actions for Reporting Center
More actions for Reporting Center
Add shortcut
Add shortcut
More actions for developer escalations
More actions for developer escalations
Archived work items
Archived work items
More actions for archived work items
More actions for archived work items
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Back
Back
Bug - Change work type
SRD-6793
SRD-6793
Copy link
Les Mills activity types not pulling in- edit summary, edit
Les Mills activity types not pulling in
Les Mills activity types not pulling in
Link work item
Link work item
Link web pages and more
Link web pages and more
Add form
Add form
Add design
Add design
Create
Create
Add app
Stoyan Tomov
raised this request
via
Jira
Hide details
Hide details
View request in portal
View request in portal
Description
Description
Edit Description, edit
Hey team,
While testing something on Les Mills’s instance, I saw that we are not pulling in their activity types when a new Playbook is created.
I tried creating “
LMUS
CX
Playbook test” Playbook (ID 5515), but no activity types got pulled in.
When I tried reproducing the same on our Jiminny instance, the activity types appeared.
Can someone please check why we are not pulling the activity types for Les Mills?
Data Centre
More information about
Edit Data Centre
US
Steps to reproduce
Steps to reproduce
More information about...
|
61032
|
|
43813
|
930
|
57
|
2026-04-17T08:22:28.626028+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776414148626_m2.jpg...
|
Firefox
|
Inbox (1,574) - lukas.kovalik@jiminny.com - Jiminn Inbox (1,574) - lukas.kovalik@jiminny.com - Jiminny Mail — Work...
|
True
|
mail.google.com/mail/u/0/#inbox
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
HubSpot Login and Sign in
HubSpo Workers | Datadog
HubSpot Login and Sign in
HubSpot Login and Sign in
Inbox (1,574) - [EMAIL] - Jiminny Mail
Inbox (1,574) - [EMAIL] - Jiminny Mail
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
None selected
Skip to content
Skip to content
Using Jiminny Mail with screen readers
Using Jiminny Mail with screen readers
Main menu
Gmail
Search mail
Search mail
Ask Gmail
Advanced search options
Search mail
Status: Active
Settings
Ask Gemini
Google apps
Google Account: [EMAIL]
Google Account: [EMAIL]
Close
[EMAIL]
Managed by jiminny.com (opens a new tab)
Managed by jiminny.com
(opens a new tab)
Change profile picture
Hi,
Lukas
!
Manage your Google Account (opens a new tab)
Manage your Google Account
Hide more accounts
Hide more accounts
Integration Account [EMAIL] (opens a new tab)
Integration Account
[EMAIL]
(opens a new tab)
Add another account (opens a new tab)
Add another account
Sign out of all accounts
Sign out of all accounts
Privacy Policy (opens a new tab)
Privacy Policy
●
Terms of Service (opens a new tab)
Terms of Service
Mail, 1574 unread messages
Mail
Mail
Chat
Chat
Chat
Meet
Meet
Meet
Compose
Labels
Labels
Inbox 1574 unread
Inbox
1,574
Starred
Starred
Snoozed
Snoozed
Sent
Sent
Drafts 2 unread
Drafts
2
Collapse label: Categories
Categories expanded
Categories
Purchases 2 unread has menu
Purchases
2
More labels
More
Labels
Labels
Create new label
Labels
Labels
App emails has menu
App emails
Collapse label: Github
Github 738 unread expanded has menu
Github
738
app 5485 unread has menu
app
5,485
extension 216 unread has menu
extension
216
vuejs has menu
vuejs
JIRA has menu
JIRA
Collapse label: Notes
Notes expanded has menu
Notes
Shared has menu
Shared
Sentry 101012 unread has menu
Sentry
101,012
Utilities has menu
Utilities
New chat
New chat
Shortcuts
Shortcuts
Home
Mentions
star
Starred
Direct messages
Direct messages...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"HubSpot Login and Sign in","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HubSpot Login and Sign in","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.054296874,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,574) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Inbox (1,574) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.11445312,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.11736111,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.14097223,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"None selected","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Skip to content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Using Jiminny Mail with screen readers","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Using Jiminny Mail with screen readers","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Main menu","depth":11,"bounds":{"left":0.09765625,"top":0.050694443,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Gmail","depth":12,"bounds":{"left":0.1203125,"top":0.05347222,"width":0.051171876,"height":0.030555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Search mail","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search mail","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Ask Gmail","depth":13,"bounds":{"left":0.24179688,"top":0.050694443,"width":0.22226563,"height":0.031944446},"help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Advanced search options","depth":12,"bounds":{"left":0.4796875,"top":0.050694443,"width":0.021875,"height":0.031944446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search mail","depth":12,"bounds":{"left":0.2203125,"top":0.050694443,"width":0.021875,"height":0.031944446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Status: Active","depth":12,"bounds":{"left":0.6191406,"top":0.050694443,"width":0.039453126,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Settings","depth":13,"bounds":{"left":0.68125,"top":0.05347222,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ask Gemini","depth":13,"bounds":{"left":0.6976563,"top":0.05347222,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google apps","depth":14,"bounds":{"left":0.7140625,"top":0.05347222,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Google Account: lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.734375,"top":0.050694443,"width":0.05546875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Google Account: lukas.kovalik@jiminny.com","depth":15,"bounds":{"left":0.7734375,"top":0.05625,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close","depth":18,"bounds":{"left":0.7710937,"top":0.10069445,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":20,"bounds":{"left":0.67578125,"top":0.108333334,"width":0.0671875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Managed by jiminny.com (opens a new tab)","depth":20,"bounds":{"left":0.6820313,"top":0.121527776,"width":0.0546875,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Managed by jiminny.com","depth":21,"bounds":{"left":0.6828125,"top":0.12291667,"width":0.053125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(opens a new tab)","depth":22,"bounds":{"left":0.7359375,"top":0.12291667,"width":0.0390625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Change profile picture","depth":19,"bounds":{"left":0.69375,"top":0.15069444,"width":0.03125,"height":0.055555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hi,","depth":20,"bounds":{"left":0.6910156,"top":0.21180555,"width":0.012109375,"height":0.02013889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas","depth":20,"bounds":{"left":0.703125,"top":0.21180555,"width":0.02265625,"height":0.02013889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"!","depth":20,"bounds":{"left":0.72578126,"top":0.21180555,"width":0.001953125,"height":0.02013889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Manage your Google Account (opens a new tab)","depth":20,"bounds":{"left":0.6617187,"top":0.23680556,"width":0.0953125,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage your Google Account","depth":22,"bounds":{"left":0.67109376,"top":0.24444444,"width":0.0765625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Hide more accounts","depth":20,"bounds":{"left":0.6351563,"top":0.27569443,"width":0.1484375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Hide more accounts","depth":24,"bounds":{"left":0.64453125,"top":0.2888889,"width":0.051171876,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Integration Account integration-account@jiminny.com (opens a new tab)","depth":21,"bounds":{"left":0.6351563,"top":0.3159722,"width":0.1484375,"height":0.03888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Integration Account","depth":25,"bounds":{"left":0.6617187,"top":0.3236111,"width":0.05078125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"integration-account@jiminny.com","depth":24,"bounds":{"left":0.6617187,"top":0.33680555,"width":0.072265625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(opens a new tab)","depth":23,"bounds":{"left":0.7109375,"top":0.31666666,"width":0.049609374,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add another account (opens a new tab)","depth":21,"bounds":{"left":0.6351563,"top":0.35625,"width":0.1484375,"height":0.03888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add another account","depth":24,"bounds":{"left":0.6617187,"top":0.36944443,"width":0.05390625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign out of all accounts","depth":21,"bounds":{"left":0.6351563,"top":0.39652777,"width":0.1484375,"height":0.03888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign out of all accounts","depth":24,"bounds":{"left":0.6617187,"top":0.4097222,"width":0.06015625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy (opens a new tab)","depth":23,"bounds":{"left":0.67265624,"top":0.44722223,"width":0.03359375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":24,"bounds":{"left":0.67460936,"top":0.4513889,"width":0.0296875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"●","depth":23,"bounds":{"left":0.7085937,"top":0.45416668,"width":0.0015625,"height":0.0055555557},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service (opens a new tab)","depth":23,"bounds":{"left":0.7125,"top":0.44722223,"width":0.03984375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":24,"bounds":{"left":0.7144531,"top":0.4513889,"width":0.0359375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Mail, 1574 unread messages","depth":9,"bounds":{"left":0.0984375,"top":0.10208333,"width":0.0171875,"height":0.020833334},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Mail","depth":9,"bounds":{"left":0.09375,"top":0.124305554,"width":0.0265625,"height":0.011111111},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mail","depth":10,"bounds":{"left":0.10234375,"top":0.124305554,"width":0.009375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat","depth":9,"bounds":{"left":0.0984375,"top":0.14652778,"width":0.0171875,"height":0.020833334},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Chat","depth":9,"bounds":{"left":0.09375,"top":0.16875,"width":0.0265625,"height":0.011111111},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Chat","depth":10,"bounds":{"left":0.10195313,"top":0.16875,"width":0.01015625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meet","depth":9,"bounds":{"left":0.0984375,"top":0.19097222,"width":0.0171875,"height":0.020833334},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Meet","depth":9,"bounds":{"left":0.09375,"top":0.21319444,"width":0.0265625,"height":0.011111111},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Meet","depth":10,"bounds":{"left":0.1015625,"top":0.21319444,"width":0.0109375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Compose","depth":9,"bounds":{"left":0.125,"top":0.09513889,"width":0.05390625,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Labels","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Inbox 1574 unread","depth":16,"bounds":{"left":0.1453125,"top":0.15,"width":0.01484375,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox","depth":17,"bounds":{"left":0.1453125,"top":0.15,"width":0.01484375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,574","depth":16,"bounds":{"left":0.196875,"top":0.15069444,"width":0.011328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Starred","depth":16,"bounds":{"left":0.1453125,"top":0.17222223,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Starred","depth":17,"bounds":{"left":0.1453125,"top":0.17222223,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Snoozed","depth":16,"bounds":{"left":0.1453125,"top":0.19444445,"width":0.021484375,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Snoozed","depth":17,"bounds":{"left":0.1453125,"top":0.19444445,"width":0.021484375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sent","depth":16,"bounds":{"left":0.1453125,"top":0.21666667,"width":0.011328125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sent","depth":17,"bounds":{"left":0.1453125,"top":0.21666667,"width":0.011328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Drafts 2 unread","depth":16,"bounds":{"left":0.1453125,"top":0.23888889,"width":0.01640625,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drafts","depth":17,"bounds":{"left":0.1453125,"top":0.23888889,"width":0.01640625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"bounds":{"left":0.20585938,"top":0.23958333,"width":0.00234375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Collapse label: Categories","depth":14,"bounds":{"left":0.12460937,"top":0.26041666,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Categories expanded","depth":16,"bounds":{"left":0.1453125,"top":0.2611111,"width":0.026953125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Categories","depth":17,"bounds":{"left":0.1453125,"top":0.2611111,"width":0.026953125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Purchases 2 unread has menu","depth":16,"bounds":{"left":0.1484375,"top":0.28333333,"width":0.027734375,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Purchases","depth":17,"bounds":{"left":0.1484375,"top":0.28333333,"width":0.027734375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"bounds":{"left":0.20585938,"top":0.28402779,"width":0.00234375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More labels","depth":12,"bounds":{"left":0.125,"top":0.30069444,"width":0.087890625,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More","depth":14,"bounds":{"left":0.1453125,"top":0.30555555,"width":0.012890625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Labels","depth":11,"bounds":{"left":0.13046876,"top":0.34236112,"width":0.07148437,"height":0.014583333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":12,"bounds":{"left":0.13046876,"top":0.34236112,"width":0.019140625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create new label","depth":11,"bounds":{"left":0.20195313,"top":0.34305555,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Labels","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"App emails has menu","depth":16,"bounds":{"left":0.1453125,"top":0.37013888,"width":0.02734375,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App emails","depth":17,"bounds":{"left":0.1453125,"top":0.37013888,"width":0.02734375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Collapse label: Github","depth":14,"bounds":{"left":0.12460937,"top":0.39166668,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Github 738 unread expanded has menu","depth":16,"bounds":{"left":0.1453125,"top":0.3923611,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Github","depth":17,"bounds":{"left":0.1453125,"top":0.3923611,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"738","depth":16,"bounds":{"left":0.20078126,"top":0.39305556,"width":0.007421875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app 5485 unread has menu","depth":16,"bounds":{"left":0.1484375,"top":0.41458333,"width":0.01015625,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":17,"bounds":{"left":0.1484375,"top":0.41458333,"width":0.01015625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5,485","depth":16,"bounds":{"left":0.19648437,"top":0.41527778,"width":0.01171875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"extension 216 unread has menu","depth":16,"bounds":{"left":0.1484375,"top":0.43680555,"width":0.02578125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"extension","depth":17,"bounds":{"left":0.1484375,"top":0.43680555,"width":0.02578125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"216","depth":16,"bounds":{"left":0.20117188,"top":0.4375,"width":0.00703125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"vuejs has menu","depth":16,"bounds":{"left":0.1484375,"top":0.45902777,"width":0.012890625,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vuejs","depth":17,"bounds":{"left":0.1484375,"top":0.45902777,"width":0.012890625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JIRA has menu","depth":16,"bounds":{"left":0.1453125,"top":0.48125,"width":0.011328125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JIRA","depth":17,"bounds":{"left":0.1453125,"top":0.48125,"width":0.011328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Collapse label: Notes","depth":14,"bounds":{"left":0.12460937,"top":0.50277776,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Notes expanded has menu","depth":16,"bounds":{"left":0.1453125,"top":0.5034722,"width":0.014453125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notes","depth":17,"bounds":{"left":0.1453125,"top":0.5034722,"width":0.014453125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Shared has menu","depth":16,"bounds":{"left":0.1484375,"top":0.52569443,"width":0.017578125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shared","depth":17,"bounds":{"left":0.1484375,"top":0.52569443,"width":0.017578125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sentry 101012 unread has menu","depth":16,"bounds":{"left":0.1453125,"top":0.54791665,"width":0.017578125,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sentry","depth":17,"bounds":{"left":0.1453125,"top":0.54791665,"width":0.017578125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"101,012","depth":16,"bounds":{"left":0.1921875,"top":0.5486111,"width":0.016015625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Utilities has menu","depth":16,"bounds":{"left":0.1453125,"top":0.5701389,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Utilities","depth":17,"bounds":{"left":0.1453125,"top":0.5701389,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":15,"bounds":{"left":0.0984375,"top":0.09513889,"width":0.05390625,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New chat","depth":17,"bounds":{"left":0.11875,"top":0.108333334,"width":0.02421875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Shortcuts","depth":17,"bounds":{"left":0.0984375,"top":0.14652778,"width":0.00703125,"height":0.011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Shortcuts","depth":18,"bounds":{"left":0.10546875,"top":0.14375,"width":0.07578125,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":19,"bounds":{"left":0.11796875,"top":0.16527778,"width":0.014453125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mentions","depth":19,"bounds":{"left":0.11796875,"top":0.18472221,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"star","depth":19,"bounds":{"left":0.103515625,"top":0.20208333,"width":0.0078125,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Starred","depth":19,"bounds":{"left":0.11796875,"top":0.20416667,"width":0.018359374,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Direct messages","depth":17,"bounds":{"left":0.0984375,"top":0.22986111,"width":0.00703125,"height":0.011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Direct messages","depth":18,"bounds":{"left":0.10546875,"top":0.22708334,"width":0.07578125,"height":0.016666668},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8913407320137214632
|
-4860171281785817393
|
click
|
accessibility
|
NULL
|
Workers | Datadog
HubSpot Login and Sign in
HubSpo Workers | Datadog
HubSpot Login and Sign in
HubSpot Login and Sign in
Inbox (1,574) - [EMAIL] - Jiminny Mail
Inbox (1,574) - [EMAIL] - Jiminny Mail
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
None selected
Skip to content
Skip to content
Using Jiminny Mail with screen readers
Using Jiminny Mail with screen readers
Main menu
Gmail
Search mail
Search mail
Ask Gmail
Advanced search options
Search mail
Status: Active
Settings
Ask Gemini
Google apps
Google Account: [EMAIL]
Google Account: [EMAIL]
Close
[EMAIL]
Managed by jiminny.com (opens a new tab)
Managed by jiminny.com
(opens a new tab)
Change profile picture
Hi,
Lukas
!
Manage your Google Account (opens a new tab)
Manage your Google Account
Hide more accounts
Hide more accounts
Integration Account [EMAIL] (opens a new tab)
Integration Account
[EMAIL]
(opens a new tab)
Add another account (opens a new tab)
Add another account
Sign out of all accounts
Sign out of all accounts
Privacy Policy (opens a new tab)
Privacy Policy
●
Terms of Service (opens a new tab)
Terms of Service
Mail, 1574 unread messages
Mail
Mail
Chat
Chat
Chat
Meet
Meet
Meet
Compose
Labels
Labels
Inbox 1574 unread
Inbox
1,574
Starred
Starred
Snoozed
Snoozed
Sent
Sent
Drafts 2 unread
Drafts
2
Collapse label: Categories
Categories expanded
Categories
Purchases 2 unread has menu
Purchases
2
More labels
More
Labels
Labels
Create new label
Labels
Labels
App emails has menu
App emails
Collapse label: Github
Github 738 unread expanded has menu
Github
738
app 5485 unread has menu
app
5,485
extension 216 unread has menu
extension
216
vuejs has menu
vuejs
JIRA has menu
JIRA
Collapse label: Notes
Notes expanded has menu
Notes
Shared has menu
Shared
Sentry 101012 unread has menu
Sentry
101,012
Utilities has menu
Utilities
New chat
New chat
Shortcuts
Shortcuts
Home
Mentions
star
Starred
Direct messages
Direct messages...
|
43810
|
|
10610
|
211
|
30
|
2026-04-14T08:50:09.257587+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776156609257_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpoearen wiin voogle or enter doureseImport bookmarks..Sprint BoardT SRD QueueGithuh~ Google GeminiPlatform Sprint 1 Q2 - Platform TeaC JY-20543 add AJ reports User pilo2 Configure SSH access to multiple© Console Home | Console Home | usSecurityGroup | EC2 | us-east-2© JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity t8 Jiminny3 Ask Jiminny test report - 8 Apr 202- Service-Desk - Queues - PlatformJY-20543 add AJ reports User piloZ Configure SSH access to multipleCa CloudWatch | us-east-2* New Tab+ New labwhy I can't see speakerdata on meemt in firefox.ho wto set it upShow thinking vDealing with missing features right when youneed them is incredibly frustrating. Assuming"meemt" means Google Meet, the reason youcan't see your speaker data comes down tohow Firefox interacts with Google's platformcompared to Chrome.Since "speaker data" can mean a couple ofdifferent things in a meeting, here are the twomost likely causes for your issue and exactlyhow to get things working.1. You Need "Speaker Notes" for GoogleSlidesThe Reality: Google Meet has a native featurethat lets you see your presentation's speakernotes right inside the video call interface.However, this relies on a specific "Present aTab" technology built exclusively for GoogleChrome. Firefox handles screen sharingdifferently, so that native integration simplywon't load.How to set it up (The Firefox Workaround):You can still present and read your notes inFirefox by manually managing your windows.I men in dia (arc) | can see myheadphones in both microphone andspeakersProvYour Jiminny chats aren't used to improve our models. Gemini is Alane can make mistakes, Inciualne aoout peodleYour privacy & GeminiSummarize pageFirefoxSearch with Google or enter addressPlatform Sprint1 Q2 - Platfor...JY-20543 addMInbox (1,540) -CloudWatchIus-east-2JiminnyMeet - Daily -Platform50 lal{ Support Daily - in 3h 10 mA100% CS•Tue 14 Apr 11:50:0822°CNew York CityWikipediaYouTube...
|
NULL
|
8913396555599292273
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpoearen wiin voogle or enter doureseImport bookmarks..Sprint BoardT SRD QueueGithuh~ Google GeminiPlatform Sprint 1 Q2 - Platform TeaC JY-20543 add AJ reports User pilo2 Configure SSH access to multiple© Console Home | Console Home | usSecurityGroup | EC2 | us-east-2© JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity t8 Jiminny3 Ask Jiminny test report - 8 Apr 202- Service-Desk - Queues - PlatformJY-20543 add AJ reports User piloZ Configure SSH access to multipleCa CloudWatch | us-east-2* New Tab+ New labwhy I can't see speakerdata on meemt in firefox.ho wto set it upShow thinking vDealing with missing features right when youneed them is incredibly frustrating. Assuming"meemt" means Google Meet, the reason youcan't see your speaker data comes down tohow Firefox interacts with Google's platformcompared to Chrome.Since "speaker data" can mean a couple ofdifferent things in a meeting, here are the twomost likely causes for your issue and exactlyhow to get things working.1. You Need "Speaker Notes" for GoogleSlidesThe Reality: Google Meet has a native featurethat lets you see your presentation's speakernotes right inside the video call interface.However, this relies on a specific "Present aTab" technology built exclusively for GoogleChrome. Firefox handles screen sharingdifferently, so that native integration simplywon't load.How to set it up (The Firefox Workaround):You can still present and read your notes inFirefox by manually managing your windows.I men in dia (arc) | can see myheadphones in both microphone andspeakersProvYour Jiminny chats aren't used to improve our models. Gemini is Alane can make mistakes, Inciualne aoout peodleYour privacy & GeminiSummarize pageFirefoxSearch with Google or enter addressPlatform Sprint1 Q2 - Platfor...JY-20543 addMInbox (1,540) -CloudWatchIus-east-2JiminnyMeet - Daily -Platform50 lal{ Support Daily - in 3h 10 mA100% CS•Tue 14 Apr 11:50:0822°CNew York CityWikipediaYouTube...
|
10609
|
|
57311
|
1233
|
31
|
2026-04-20T11:48:52.651791+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776685732651_m1.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp‹ $0 lil100% C47 8 Mon 20 Apr 14:48:52DEV (docker)APP (-zsh)T₴1|DOCKERDEV (docker)jiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00:stoppedworker-nudges:worker-nudges_00: stoppedworker-emails:worker-emails_00: stoppedworker:worker_00: stoppedworker-conferences:worker-conferences_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1: jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan activity:update-esYou are about to work on activities:willinclude soft-deleted activitiesAre you sure? (yes/no) [no]:• yesAbout to work on 63813 activities with chunk size 50! Are you sure? (yes/no) [no]:> noX3-zsh*4screenpipe"• *5DEV...
|
NULL
|
8913265860484765857
|
NULL
|
app_switch
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp‹ $0 lil100% C47 8 Mon 20 Apr 14:48:52DEV (docker)APP (-zsh)T₴1|DOCKERDEV (docker)jiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00:stoppedworker-nudges:worker-nudges_00: stoppedworker-emails:worker-emails_00: stoppedworker:worker_00: stoppedworker-conferences:worker-conferences_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1: jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan activity:update-esYou are about to work on activities:willinclude soft-deleted activitiesAre you sure? (yes/no) [no]:• yesAbout to work on 63813 activities with chunk size 50! Are you sure? (yes/no) [no]:> noX3-zsh*4screenpipe"• *5DEV...
|
NULL
|
|
43381
|
923
|
30
|
2026-04-17T08:04:56.557495+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776413096557_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 kProjectvVJUNTILIGIUIIN© Language.php© LanguageDialect.php© Lead.php© MobileSetting.php© Model.php© AutomatedReportsService.php© SendReportJob.php© SendReportMailJob.php© ReportController.php© TokenBuilder.php© TeamSetupController.phppnp apl.onp• Filesystem.phpAutomatedReportsCommand.phpAskJiminnykeponscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php© CreateHeldActivityEvent.phpUserPilotActivityListener.php© ActivityLogged.phpC AutomatedReportsCallbackService.phpC RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php© Moment.php© Nudge.php© NudgeRun.phpc) Opportunity.php© Participant.php© Partner.php© Permission.php15501551© SyncOpportunity.php© OpportunitySyncTrait.php© Opportunity.php x© OpportunityStageUpdated.phpEventServiceProvider.php1552€ HasAttributes.php© Service.phpC AutomatedReportResult.php© AutomatedReport.phpclass Opportunity extends Model implementsA18 K1 ^v 1555protected $appends = [];'id_string',© PhoneNumber.php© PlaybackTheme.php165 Ct© Playbook.php© PlaybookCategory.php© Playlist.php(C) RateLimit.php© Region.php168169170 G >protected $hidden = ["UUILO"'id',protected static function newFactory(): Factory{...}© Role.php© RoleChangeEvent.php175 Gprotected static function boot()© ScopeGroup.php© Session.phpparent::boot();© SlackBot.php© SocialAccount.phpstatic::created(static function (Opportunity $opportunity): void {..F);© Stage.php© Task.php©Team.phpceamacontext.one© TeamDomain.phpstatic: :updating(static function (Opportunity $opportunity): void {if ($opportunity->isDirty( attributes:'stage_id')) {$opportunity->stage_updated_at = Carbon: :now();$opportunity->stages()->attach($opportunity->stage_id);[CREDIT_CARD]=1562-15631564=15651566156719081569157015711572157315741575© TeamFeature.php© TeamSettings.php7):© TextRelay.php© Track.php© TranscriptionModel.php© TranscriptionModelLocale.php© TranscriptionProvider.php© User.php©UserSettings.php© Vocabulary.php©) VocabularyPronunciation.ohpC VoiceAccess.pnpVoiceConsentPrefix.php> → NotificationsObserversC PoliciesProviders© ActivityServiceProvider.php190192193195196197198199208209 CT >220221static::updated(static function (Opportunity $opportunity): void {event(new OpportunityUpdated($opportunity));if (Sopportunity->wasChggged ( attributes:'stage_id')) {event(new OpportunityStageUpdated(Sopportunity));Cascade & XICommand&l115807):/** @deprecated */no usagespublic function deleteExistingAjPrompt(): voidf...}protected function casts(): arrayf...}© ApiServiceProvider.php/** @deprecated */public function getOpportunitySuggestAttribute(): stringf...}© AppServiceProvider.phpAuthServiceProvider.phppublic function getFormattedValueAttribute(): stringf...}broadcastservicerrovider.pnpC) CalendarServiceProvider.phpLOJL04public function getCurrencyCode(): stringf...}158815891570159110Y41593159415951596159715981599© CreateParticipantsServiceProvid© CrmServiceProvider.phppublic function getName(): stringf...}© EncryptionServiceProvider.php© EventServiceProvider.phppublic function isClosed(): boolf...}© HubspotJournalServiceProvider.© HubspotWebhookServiceProvidipublic function isWon(): boolf...}libd# Backend Chapter • 26 m leftAutomatedReportsCommandTestv100% C•8 • Fri 17 Apr 11:04:56= custom.log= laravel.logA SF ljiminny@localhost]C" scratch_1.jsonV connect.vueV Onboard.vuefii crm_configurations (EU]console PRODL console [STAGING]Ix. Aulo vFlaycroundvselect * from contacts cwhere c.crm_configuration_id = 370 order by c.updated_at desc;A HS_local [iminny@localhost]Al console [EU] XHelper Code will help IDE to understand your Laravel app code. // Generate // Don't Show Anymore (today 8:59)Eajiminny v026 49 422 Х 3 X103 ^SELECT * FROM participants where activity_id = 38833541;SELECT * FROM participants where activity_id = 39216301;SELECT * FROM activity_summary_logs where activity_id = 39216301;SELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541,|CrIl 470.11090410SELECT * FROM activitiesYnckr vure to onnceontuon-y1ad-44a-doceyacoe4doonae = Uulo #074100014CMII 400.1000900select * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;select * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;select * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;select * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856','742723347700');# owner 13236 525785080# contact 116779180 665587441856 - activity - Alex Howes [EMAIL] created 2026-01-26# contact 219247563 742723347700 - [EMAIL] 2026-03-24# company 4176133 47150650569# deal 7100953 410150124747SELECTCONCAT(u.id, CASE WHEN U.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,U.ellan tosa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teams t 1.n<->1: on t.id = u.team_idWHERE U.team_id = 400 and sa.provider = 'hubspot':=select * from features;select * from team_features where feature_id = 40;select * from teams where id = 556; # owner: 18101, crm: 477select * from crm_configurations where id = 477;SELECT * FROM users WHERE id = 18101;SELECTCONCAT(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 saJOIN users u on u.id = sa.sociable_idJOIN teams tI.n<->I: on t.1d = U.team_1dWHERE U.team_id = 556 and sa.provider = 'integration-app';select * from opportunities where id = 7594349;select * from stages where team_id = 459;select * from teams where id = 459;SELECTCONCAT(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 saJOIN users u on u.id = sa.sociable_idJOIN teams tI.n<→>I: on t.1d = U.ceam_1dWHERE U.team_1d = 45% and Sa.provider = 'nupspor id M1111W Windsurf Teams 193:50 (23 chars) UTF-8 ( 4 spaces...
|
NULL
|
8913032238281823283
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProjectvVJUNTILIGIUIIN© Language.php© LanguageDialect.php© Lead.php© MobileSetting.php© Model.php© AutomatedReportsService.php© SendReportJob.php© SendReportMailJob.php© ReportController.php© TokenBuilder.php© TeamSetupController.phppnp apl.onp• Filesystem.phpAutomatedReportsCommand.phpAskJiminnykeponscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php© CreateHeldActivityEvent.phpUserPilotActivityListener.php© ActivityLogged.phpC AutomatedReportsCallbackService.phpC RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php© Moment.php© Nudge.php© NudgeRun.phpc) Opportunity.php© Participant.php© Partner.php© Permission.php15501551© SyncOpportunity.php© OpportunitySyncTrait.php© Opportunity.php x© OpportunityStageUpdated.phpEventServiceProvider.php1552€ HasAttributes.php© Service.phpC AutomatedReportResult.php© AutomatedReport.phpclass Opportunity extends Model implementsA18 K1 ^v 1555protected $appends = [];'id_string',© PhoneNumber.php© PlaybackTheme.php165 Ct© Playbook.php© PlaybookCategory.php© Playlist.php(C) RateLimit.php© Region.php168169170 G >protected $hidden = ["UUILO"'id',protected static function newFactory(): Factory{...}© Role.php© RoleChangeEvent.php175 Gprotected static function boot()© ScopeGroup.php© Session.phpparent::boot();© SlackBot.php© SocialAccount.phpstatic::created(static function (Opportunity $opportunity): void {..F);© Stage.php© Task.php©Team.phpceamacontext.one© TeamDomain.phpstatic: :updating(static function (Opportunity $opportunity): void {if ($opportunity->isDirty( attributes:'stage_id')) {$opportunity->stage_updated_at = Carbon: :now();$opportunity->stages()->attach($opportunity->stage_id);[CREDIT_CARD]=1562-15631564=15651566156719081569157015711572157315741575© TeamFeature.php© TeamSettings.php7):© TextRelay.php© Track.php© TranscriptionModel.php© TranscriptionModelLocale.php© TranscriptionProvider.php© User.php©UserSettings.php© Vocabulary.php©) VocabularyPronunciation.ohpC VoiceAccess.pnpVoiceConsentPrefix.php> → NotificationsObserversC PoliciesProviders© ActivityServiceProvider.php190192193195196197198199208209 CT >220221static::updated(static function (Opportunity $opportunity): void {event(new OpportunityUpdated($opportunity));if (Sopportunity->wasChggged ( attributes:'stage_id')) {event(new OpportunityStageUpdated(Sopportunity));Cascade & XICommand&l115807):/** @deprecated */no usagespublic function deleteExistingAjPrompt(): voidf...}protected function casts(): arrayf...}© ApiServiceProvider.php/** @deprecated */public function getOpportunitySuggestAttribute(): stringf...}© AppServiceProvider.phpAuthServiceProvider.phppublic function getFormattedValueAttribute(): stringf...}broadcastservicerrovider.pnpC) CalendarServiceProvider.phpLOJL04public function getCurrencyCode(): stringf...}158815891570159110Y41593159415951596159715981599© CreateParticipantsServiceProvid© CrmServiceProvider.phppublic function getName(): stringf...}© EncryptionServiceProvider.php© EventServiceProvider.phppublic function isClosed(): boolf...}© HubspotJournalServiceProvider.© HubspotWebhookServiceProvidipublic function isWon(): boolf...}libd# Backend Chapter • 26 m leftAutomatedReportsCommandTestv100% C•8 • Fri 17 Apr 11:04:56= custom.log= laravel.logA SF ljiminny@localhost]C" scratch_1.jsonV connect.vueV Onboard.vuefii crm_configurations (EU]console PRODL console [STAGING]Ix. Aulo vFlaycroundvselect * from contacts cwhere c.crm_configuration_id = 370 order by c.updated_at desc;A HS_local [iminny@localhost]Al console [EU] XHelper Code will help IDE to understand your Laravel app code. // Generate // Don't Show Anymore (today 8:59)Eajiminny v026 49 422 Х 3 X103 ^SELECT * FROM participants where activity_id = 38833541;SELECT * FROM participants where activity_id = 39216301;SELECT * FROM activity_summary_logs where activity_id = 39216301;SELECT * FROM activities WHERE uuid_to_bin('c7d99fbe-1fb1-41f2-8f4d-52e2bf70e1e9') = uuid; # 38833541,|CrIl 470.11090410SELECT * FROM activitiesYnckr vure to onnceontuon-y1ad-44a-doceyacoe4doonae = Uulo #074100014CMII 400.1000900select * from crm_profiles where crm_configuration_id = 319 and crm_provider_id = 525785080;select * from opportunities where crm_configuration_id = 319 and crm_provider_id = 410150124747;select * from accounts where crm_configuration_id = 319 and crm_provider_id = 47150650569;select * from contacts where crm_configuration_id = 319 and crm_provider_id IN ('665587441856','742723347700');# owner 13236 525785080# contact 116779180 665587441856 - activity - Alex Howes [EMAIL] created 2026-01-26# contact 219247563 742723347700 - [EMAIL] 2026-03-24# company 4176133 47150650569# deal 7100953 410150124747SELECTCONCAT(u.id, CASE WHEN U.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,U.ellan tosa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teams t 1.n<->1: on t.id = u.team_idWHERE U.team_id = 400 and sa.provider = 'hubspot':=select * from features;select * from team_features where feature_id = 40;select * from teams where id = 556; # owner: 18101, crm: 477select * from crm_configurations where id = 477;SELECT * FROM users WHERE id = 18101;SELECTCONCAT(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 saJOIN users u on u.id = sa.sociable_idJOIN teams tI.n<->I: on t.1d = U.team_1dWHERE U.team_id = 556 and sa.provider = 'integration-app';select * from opportunities where id = 7594349;select * from stages where team_id = 459;select * from teams where id = 459;SELECTCONCAT(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 saJOIN users u on u.id = sa.sociable_idJOIN teams tI.n<→>I: on t.1d = U.ceam_1dWHERE U.team_1d = 45% and Sa.provider = 'nupspor id M1111W Windsurf Teams 193:50 (23 chars) UTF-8 ( 4 spaces...
|
43379
|
|
50303
|
1076
|
25
|
2026-04-17T14:42:03.010824+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776436923010_m2.jpg...
|
PhpStorm
|
faVsco.js – Group.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20698-fix-SF-activity- Project: faVsco.js, menu
JY-20698-fix-SF-activity-types-on-new-playbook, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Carbon\CarbonInterface;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache;
use Jiminny\Component\DealRisks\DealRiskType;
use Jiminny\Component\Eloquent\Builder;
use Jiminny\Models\Contracts\GroupContract;
use Jiminny\Models\Scorecard\Scorecard;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Locale;
/**
* Jiminny\Models\Group
*
* @property int $id
* @property mixed $uuid
* @property string $name
* @property string|null $slug
* @property int $team_id
* @property int $user_id
* @property int $scope
* @property int|null $playbook_id
* @property string $conference_record_announce
* @property string|null $conference_invite_template
* @property int|null $conference_timer_enabled
* @property string $conference_lead_ownership_rule
* @property string $conference_account_ownership_rule
* @property string $conference_opportunity_ownership_rule
* @property int|null $transcription_model_locale_id
* @property string $default_timezone
* @property string $default_language
* @property string $country_code
* @property int $required_sidekick
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read string $country_name
* @property-read string $id_string
* @property-read string $photo_url
* @property-read Collection<int, \Jiminny\Models\Invitation> $invitations
* @property-read int|null $invitations_count
* @property-read Collection<int, \Jiminny\Models\User> $members
* @property-read int|null $members_count
* @property-read Collection<int, \Jiminny\Models\User> $membersActive
* @property-read int|null $members_active_count
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Jiminny\Models\Playbook|null $playbook
* @property-read Collection<int, \Jiminny\Models\Playlist\Share> $playlistShares
* @property-read int|null $playlist_shares_count
* @property-read Collection<int, Scorecard> $scorecards
* @property-read int|null $scorecards_count
* @property-read \Jiminny\Models\Team $team
* @property-read \Jiminny\Models\TranscriptionModelLocale|null $transcriptionModelLocale
* @property-read \Jiminny\Models\User $user
*
* @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\GroupFactory factory(...$parameters)
* @method static Builder|Group groups()
* @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)
* @method static Builder|Group newModelQuery()
* @method static Builder|Group newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Group onlyTrashed()
* @method static Builder|Group query()
* @method static Builder|Group uuid(string $uuid, bool $first = true)
* @method static Builder|Group whereColor($value)
* @method static Builder|Group whereConferenceAccountOwnershipRule($value)
* @method static Builder|Group whereConferenceInviteTemplate($value)
* @method static Builder|Group whereConferenceLeadOwnershipRule($value)
* @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)
* @method static Builder|Group whereConferenceRecordAnnounce($value)
* @method static Builder|Group whereConferenceTimerEnabled($value)
* @method static Builder|Group whereCountryCode($value)
* @method static Builder|Group whereCreatedAt($value)
* @method static Builder|Group whereDefaultLanguage($value)
* @method static Builder|Group whereDefaultTimezone($value)
* @method static Builder|Group whereDeletedAt($value)
* @method static Builder|Group whereId($value)
* @method static Builder|Group whereName($value)
* @method static Builder|Group wherePlaybookId($value)
* @method static Builder|Group whereRequiredSidekick($value)
* @method static Builder|Group whereScope($value)
* @method static Builder|Group whereSlug($value)
* @method static Builder|Group whereTeamId($value)
* @method static Builder|Group whereTranscriptionModelLocaleId($value)
* @method static Builder|Group whereUpdatedAt($value)
* @method static Builder|Group whereUserId($value)
* @method static Builder|Group whereUuid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Group withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Group withoutTrashed()
*
* @mixin \Eloquent
*/
class Group extends Model implements GroupContract
{
use HasFactory;
use SoftDeletes;
use RequiresUUID;
use Notifiable;
use Enums;
public const SCOPE_ORGANIZATION = 0;
public const SCOPE_OWN_TEAM = 1;
public const SCOPE_TEAMS = 2;
public const SCOPE_INDIVIDUAL = 4;
public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';
public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';
protected $table = 'groups';
protected $fillable = [
'name',
'slug',
'team_id',
'user_id',
'scope',
'playbook_id',
'default_timezone',
'default_language',
'country_code',
'conference_lead_ownership_rule',
'conference_account_ownership_rule',
'conference_opportunity_ownership_rule',
'transcription_model_locale_id',
'required_sidekick',
];
protected $appends = [
'id_string',
];
protected $hidden = [
'uuid',
'id',
];
protected function casts(): array
{
return [
'scope' => 'integer',
];
}
public function getIndexableAttributes(): array
{
return [
'name' => $this->name,
'slug' => $this->slug,
'team_id' => $this->team_id,
'user_id' => $this->user_id,
'scope' => $this->scope,
'playbook_id' => $this->playbook_id,
'transcription_model_locale_id' => $this->transcription_model_locale_id,
'default_timezone' => $this->default_timezone,
'default_language' => $this->default_language,
'country_code' => $this->country_code,
'created_at' => $this->created_at instanceof CarbonInterface
? $this->created_at->toDateTimeString()
: null,
'updated_at' => $this->updated_at instanceof CarbonInterface
? $this->updated_at->toDateTimeString()
: null,
'deleted_at' => $this->deleted_at instanceof CarbonInterface
? $this->deleted_at->toDateTimeString()
: null,
'id_string' => $this->id_string,
];
}
/**
* Always uppercase the country code when we save it to the database.
*/
public function setCountryCodeAttribute($value)
{
$this->attributes['country_code'] = strtoupper($value);
}
public function getCountryNameAttribute(): string
{
return Locale::getDisplayRegion($this->country_code);
}
public function getCountryName(): string
{
/** @var string */
return $this->getAttribute('country_name');
}
public function getCountryCode(): string
{
/** @var string */
return $this->getAttribute('country_code');
}
public function getDefaultLanguage(): string
{
/** @var string */
return $this->getAttribute('default_language');
}
public function getDefaultTimezone(): string
{
/** @var string */
return $this->getAttribute('default_timezone');
}
public function getPhotoUrlAttribute(): string
{
return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');
}
public function getPhotoUrl(): string
{
/** @var string */
return $this->getAttribute('photo_url');
}
/**
* The channels the user receives notification broadcasts on.
*/
public function receivesBroadcastNotificationsOn(): string
{
return 'group.' . $this->id_string;
}
/** @return BelongsTo<User, self> */
public function user(): BelongsTo
{
/** @var BelongsTo<User, self> */
return $this->belongsTo(User::class);
}
public function getOwner(): User
{
/** @var User */
return $this->getAttribute('user');
}
public function members(): HasMany
{
return $this->hasMany(User::class);
}
public function membersActive(): HasMany
{
return $this->members()
->where(static fn (Eloquent\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));
}
public function playbook()
{
return $this->belongsTo(Playbook::class);
}
public function team()
{
return $this->belongsTo(Team::class);
}
public function scorecards(): HasMany
{
return $this->hasMany(Scorecard::class);
}
public function invitations()
{
return $this->hasMany(Invitation::class);
}
public function transcriptionModelLocale()
{
return $this->belongsTo(TranscriptionModelLocale::class);
}
/** @return HasMany<ScopeGroup> */
public function scopeGroups(): HasMany
{
return $this->hasMany(ScopeGroup::class);
}
/** @return BelongsToMany<self> */
public function scopedGroups(): BelongsToMany
{
return $this->belongsToMany(
self::class,
'scope_groups',
'scope_group_id',
'group_id',
);
}
/** @return Collection<int, self> */
public function getScopedGroups(): Collection
{
/** @var Collection<int, self> */
return $this->getAttribute('scopedGroups');
}
public function playlistShares()
{
return $this->hasMany(Playlist\Share::class);
}
/**
* GETTERS AND SETTERS FOLLOW BELOW THIS LINE
*/
public function getId(): int
{
return $this->getAttribute('id');
}
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
public function getTeam(): Team
{
return $this->getAttribute('team');
}
public function hasPlaybook(): bool
{
return $this->getAttribute('playbook') !== null;
}
public function getPlaybook(): ?Playbook
{
return $this->getAttribute('playbook');
}
public function getPlaybookId(): int
{
return $this->getAttribute('playbook_id');
}
public function getTeamId(): int
{
return $this->getAttribute('team_id');
}
public function getTranscriptionModelLocale(): TranscriptionModelLocale
{
return $this->getAttribute('transcriptionModelLocale');
}
public function hasTranscriptionModelLocale(): bool
{
return $this->getAttribute('transcriptionModelLocale') !== null;
}
public function getName(): string
{
return $this->getAttribute('name');
}
/**
* @return Collection<User>
*/
public function getMembers(): Collection
{
return $this->getAttribute('members');
}
public function isScope(int $scope): bool
{
return $this->getScope() === $scope;
}
public function getScope(): int
{
return $this->getAttribute('scope');
}
public function setScope(int $scope): self
{
return $this->setAttribute('scope', $scope);
}
/** @return Collection<int, ScopeGroup> */
public function getScopeGroups(): Collection
{
return $this->getAttribute('scopeGroups');
}
/** @return array<array<string, int|string|null>> */
public function getDealRisksTypes(): array
{
return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);
}
public function getConferenceLeadOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_lead_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceLeadOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_lead_ownership_rule', $rule);
}
public function getConferenceAccountOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_account_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceAccountOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_account_ownership_rule', $rule);
}
public function getConferenceOpportunityOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_opportunity_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceOpportunityOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_opportunity_ownership_rule', $rule);
}
public function getMembersActiveCount(): int
{
return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {
return $this->membersActive()->count();
});
}
public function isSame(self $group): bool
{
return $this->getId() === $group->getId();
}
public function doesExist(): bool
{
return $this->exists;
}
public function getSidekickRequired()
{
return $this->getAttribute('required_sidekick');
}
public function getPlaylistShares(): Collection
{
return $this->getAttribute('playlistShares');
}
}
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:...
|
[{"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":"JY-20698-fix-SF-activity-types-on-new-playbook, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.13710937,"height":0.022222223},"help_text":"Git Branch: JY-20698-fix-SF-activity-types-on-new-playbook","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.76171875,"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.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 'RequestGenerateAskJiminnyReportJobTest'","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":"43","depth":4,"bounds":{"left":0.36171874,"top":0.19513889,"width":0.012109375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.3761719,"top":0.19513889,"width":0.00859375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.38671875,"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.3953125,"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\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Carbon\\CarbonInterface;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Notifications\\Notifiable;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Jiminny\\Component\\DealRisks\\DealRiskType;\nuse Jiminny\\Component\\Eloquent\\Builder;\nuse Jiminny\\Models\\Contracts\\GroupContract;\nuse Jiminny\\Models\\Scorecard\\Scorecard;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Locale;\n\n/**\n * Jiminny\\Models\\Group\n *\n * @property int $id\n * @property mixed $uuid\n * @property string $name\n * @property string|null $slug\n * @property int $team_id\n * @property int $user_id\n * @property int $scope\n * @property int|null $playbook_id\n * @property string $conference_record_announce\n * @property string|null $conference_invite_template\n * @property int|null $conference_timer_enabled\n * @property string $conference_lead_ownership_rule\n * @property string $conference_account_ownership_rule\n * @property string $conference_opportunity_ownership_rule\n * @property int|null $transcription_model_locale_id\n * @property string $default_timezone\n * @property string $default_language\n * @property string $country_code\n * @property int $required_sidekick\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property-read string $country_name\n * @property-read string $id_string\n * @property-read string $photo_url\n * @property-read Collection<int, \\Jiminny\\Models\\Invitation> $invitations\n * @property-read int|null $invitations_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $members\n * @property-read int|null $members_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $membersActive\n * @property-read int|null $members_active_count\n * @property-read \\Illuminate\\Notifications\\DatabaseNotificationCollection<int, \\Illuminate\\Notifications\\DatabaseNotification> $notifications\n * @property-read int|null $notifications_count\n * @property-read \\Jiminny\\Models\\Playbook|null $playbook\n * @property-read Collection<int, \\Jiminny\\Models\\Playlist\\Share> $playlistShares\n * @property-read int|null $playlist_shares_count\n * @property-read Collection<int, Scorecard> $scorecards\n * @property-read int|null $scorecards_count\n * @property-read \\Jiminny\\Models\\Team $team\n * @property-read \\Jiminny\\Models\\TranscriptionModelLocale|null $transcriptionModelLocale\n * @property-read \\Jiminny\\Models\\User $user\n *\n * @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\GroupFactory factory(...$parameters)\n * @method static Builder|Group groups()\n * @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)\n * @method static Builder|Group newModelQuery()\n * @method static Builder|Group newQuery()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group onlyTrashed()\n * @method static Builder|Group query()\n * @method static Builder|Group uuid(string $uuid, bool $first = true)\n * @method static Builder|Group whereColor($value)\n * @method static Builder|Group whereConferenceAccountOwnershipRule($value)\n * @method static Builder|Group whereConferenceInviteTemplate($value)\n * @method static Builder|Group whereConferenceLeadOwnershipRule($value)\n * @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)\n * @method static Builder|Group whereConferenceRecordAnnounce($value)\n * @method static Builder|Group whereConferenceTimerEnabled($value)\n * @method static Builder|Group whereCountryCode($value)\n * @method static Builder|Group whereCreatedAt($value)\n * @method static Builder|Group whereDefaultLanguage($value)\n * @method static Builder|Group whereDefaultTimezone($value)\n * @method static Builder|Group whereDeletedAt($value)\n * @method static Builder|Group whereId($value)\n * @method static Builder|Group whereName($value)\n * @method static Builder|Group wherePlaybookId($value)\n * @method static Builder|Group whereRequiredSidekick($value)\n * @method static Builder|Group whereScope($value)\n * @method static Builder|Group whereSlug($value)\n * @method static Builder|Group whereTeamId($value)\n * @method static Builder|Group whereTranscriptionModelLocaleId($value)\n * @method static Builder|Group whereUpdatedAt($value)\n * @method static Builder|Group whereUserId($value)\n * @method static Builder|Group whereUuid($value)\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withTrashed()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Group extends Model implements GroupContract\n{\n use HasFactory;\n\n use SoftDeletes;\n use RequiresUUID;\n use Notifiable;\n use Enums;\n\n public const SCOPE_ORGANIZATION = 0;\n public const SCOPE_OWN_TEAM = 1;\n public const SCOPE_TEAMS = 2;\n public const SCOPE_INDIVIDUAL = 4;\n\n public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';\n public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';\n\n protected $table = 'groups';\n\n protected $fillable = [\n 'name',\n 'slug',\n 'team_id',\n 'user_id',\n 'scope',\n 'playbook_id',\n 'default_timezone',\n 'default_language',\n 'country_code',\n 'conference_lead_ownership_rule',\n 'conference_account_ownership_rule',\n 'conference_opportunity_ownership_rule',\n 'transcription_model_locale_id',\n 'required_sidekick',\n ];\n\n protected $appends = [\n 'id_string',\n ];\n\n protected $hidden = [\n 'uuid',\n 'id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scope' => 'integer',\n ];\n }\n\n public function getIndexableAttributes(): array\n {\n return [\n 'name' => $this->name,\n 'slug' => $this->slug,\n 'team_id' => $this->team_id,\n 'user_id' => $this->user_id,\n 'scope' => $this->scope,\n 'playbook_id' => $this->playbook_id,\n 'transcription_model_locale_id' => $this->transcription_model_locale_id,\n 'default_timezone' => $this->default_timezone,\n 'default_language' => $this->default_language,\n 'country_code' => $this->country_code,\n 'created_at' => $this->created_at instanceof CarbonInterface\n ? $this->created_at->toDateTimeString()\n : null,\n 'updated_at' => $this->updated_at instanceof CarbonInterface\n ? $this->updated_at->toDateTimeString()\n : null,\n 'deleted_at' => $this->deleted_at instanceof CarbonInterface\n ? $this->deleted_at->toDateTimeString()\n : null,\n 'id_string' => $this->id_string,\n ];\n }\n\n /**\n * Always uppercase the country code when we save it to the database.\n */\n public function setCountryCodeAttribute($value)\n {\n $this->attributes['country_code'] = strtoupper($value);\n }\n\n public function getCountryNameAttribute(): string\n {\n return Locale::getDisplayRegion($this->country_code);\n }\n\n public function getCountryName(): string\n {\n /** @var string */\n return $this->getAttribute('country_name');\n }\n\n public function getCountryCode(): string\n {\n /** @var string */\n return $this->getAttribute('country_code');\n }\n\n public function getDefaultLanguage(): string\n {\n /** @var string */\n return $this->getAttribute('default_language');\n }\n\n public function getDefaultTimezone(): string\n {\n /** @var string */\n return $this->getAttribute('default_timezone');\n }\n\n public function getPhotoUrlAttribute(): string\n {\n return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');\n }\n\n public function getPhotoUrl(): string\n {\n /** @var string */\n return $this->getAttribute('photo_url');\n }\n\n /**\n * The channels the user receives notification broadcasts on.\n */\n public function receivesBroadcastNotificationsOn(): string\n {\n return 'group.' . $this->id_string;\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n /** @var BelongsTo<User, self> */\n return $this->belongsTo(User::class);\n }\n\n public function getOwner(): User\n {\n /** @var User */\n return $this->getAttribute('user');\n }\n\n public function members(): HasMany\n {\n return $this->hasMany(User::class);\n }\n\n public function membersActive(): HasMany\n {\n return $this->members()\n ->where(static fn (Eloquent\\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));\n }\n\n public function playbook()\n {\n return $this->belongsTo(Playbook::class);\n }\n\n public function team()\n {\n return $this->belongsTo(Team::class);\n }\n\n public function scorecards(): HasMany\n {\n return $this->hasMany(Scorecard::class);\n }\n\n public function invitations()\n {\n return $this->hasMany(Invitation::class);\n }\n\n public function transcriptionModelLocale()\n {\n return $this->belongsTo(TranscriptionModelLocale::class);\n }\n\n /** @return HasMany<ScopeGroup> */\n public function scopeGroups(): HasMany\n {\n return $this->hasMany(ScopeGroup::class);\n }\n\n /** @return BelongsToMany<self> */\n public function scopedGroups(): BelongsToMany\n {\n return $this->belongsToMany(\n self::class,\n 'scope_groups',\n 'scope_group_id',\n 'group_id',\n );\n }\n\n /** @return Collection<int, self> */\n public function getScopedGroups(): Collection\n {\n /** @var Collection<int, self> */\n return $this->getAttribute('scopedGroups');\n }\n\n public function playlistShares()\n {\n return $this->hasMany(Playlist\\Share::class);\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW THIS LINE\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getTeam(): Team\n {\n return $this->getAttribute('team');\n }\n\n public function hasPlaybook(): bool\n {\n return $this->getAttribute('playbook') !== null;\n }\n\n public function getPlaybook(): ?Playbook\n {\n return $this->getAttribute('playbook');\n }\n\n public function getPlaybookId(): int\n {\n return $this->getAttribute('playbook_id');\n }\n\n public function getTeamId(): int\n {\n return $this->getAttribute('team_id');\n }\n\n public function getTranscriptionModelLocale(): TranscriptionModelLocale\n {\n return $this->getAttribute('transcriptionModelLocale');\n }\n\n public function hasTranscriptionModelLocale(): bool\n {\n return $this->getAttribute('transcriptionModelLocale') !== null;\n }\n\n public function getName(): string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * @return Collection<User>\n */\n public function getMembers(): Collection\n {\n return $this->getAttribute('members');\n }\n\n public function isScope(int $scope): bool\n {\n return $this->getScope() === $scope;\n }\n\n public function getScope(): int\n {\n return $this->getAttribute('scope');\n }\n\n public function setScope(int $scope): self\n {\n return $this->setAttribute('scope', $scope);\n }\n\n /** @return Collection<int, ScopeGroup> */\n public function getScopeGroups(): Collection\n {\n return $this->getAttribute('scopeGroups');\n }\n\n /** @return array<array<string, int|string|null>> */\n public function getDealRisksTypes(): array\n {\n return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);\n }\n\n public function getConferenceLeadOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_lead_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceLeadOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_lead_ownership_rule', $rule);\n }\n\n public function getConferenceAccountOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_account_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceAccountOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_account_ownership_rule', $rule);\n }\n\n public function getConferenceOpportunityOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_opportunity_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceOpportunityOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_opportunity_ownership_rule', $rule);\n }\n\n public function getMembersActiveCount(): int\n {\n return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {\n return $this->membersActive()->count();\n });\n }\n\n public function isSame(self $group): bool\n {\n return $this->getId() === $group->getId();\n }\n\n public function doesExist(): bool\n {\n return $this->exists;\n }\n\n public function getSidekickRequired()\n {\n return $this->getAttribute('required_sidekick');\n }\n\n public function getPlaylistShares(): Collection\n {\n return $this->getAttribute('playlistShares');\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Carbon\\CarbonInterface;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Notifications\\Notifiable;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Jiminny\\Component\\DealRisks\\DealRiskType;\nuse Jiminny\\Component\\Eloquent\\Builder;\nuse Jiminny\\Models\\Contracts\\GroupContract;\nuse Jiminny\\Models\\Scorecard\\Scorecard;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Locale;\n\n/**\n * Jiminny\\Models\\Group\n *\n * @property int $id\n * @property mixed $uuid\n * @property string $name\n * @property string|null $slug\n * @property int $team_id\n * @property int $user_id\n * @property int $scope\n * @property int|null $playbook_id\n * @property string $conference_record_announce\n * @property string|null $conference_invite_template\n * @property int|null $conference_timer_enabled\n * @property string $conference_lead_ownership_rule\n * @property string $conference_account_ownership_rule\n * @property string $conference_opportunity_ownership_rule\n * @property int|null $transcription_model_locale_id\n * @property string $default_timezone\n * @property string $default_language\n * @property string $country_code\n * @property int $required_sidekick\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property-read string $country_name\n * @property-read string $id_string\n * @property-read string $photo_url\n * @property-read Collection<int, \\Jiminny\\Models\\Invitation> $invitations\n * @property-read int|null $invitations_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $members\n * @property-read int|null $members_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $membersActive\n * @property-read int|null $members_active_count\n * @property-read \\Illuminate\\Notifications\\DatabaseNotificationCollection<int, \\Illuminate\\Notifications\\DatabaseNotification> $notifications\n * @property-read int|null $notifications_count\n * @property-read \\Jiminny\\Models\\Playbook|null $playbook\n * @property-read Collection<int, \\Jiminny\\Models\\Playlist\\Share> $playlistShares\n * @property-read int|null $playlist_shares_count\n * @property-read Collection<int, Scorecard> $scorecards\n * @property-read int|null $scorecards_count\n * @property-read \\Jiminny\\Models\\Team $team\n * @property-read \\Jiminny\\Models\\TranscriptionModelLocale|null $transcriptionModelLocale\n * @property-read \\Jiminny\\Models\\User $user\n *\n * @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\GroupFactory factory(...$parameters)\n * @method static Builder|Group groups()\n * @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)\n * @method static Builder|Group newModelQuery()\n * @method static Builder|Group newQuery()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group onlyTrashed()\n * @method static Builder|Group query()\n * @method static Builder|Group uuid(string $uuid, bool $first = true)\n * @method static Builder|Group whereColor($value)\n * @method static Builder|Group whereConferenceAccountOwnershipRule($value)\n * @method static Builder|Group whereConferenceInviteTemplate($value)\n * @method static Builder|Group whereConferenceLeadOwnershipRule($value)\n * @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)\n * @method static Builder|Group whereConferenceRecordAnnounce($value)\n * @method static Builder|Group whereConferenceTimerEnabled($value)\n * @method static Builder|Group whereCountryCode($value)\n * @method static Builder|Group whereCreatedAt($value)\n * @method static Builder|Group whereDefaultLanguage($value)\n * @method static Builder|Group whereDefaultTimezone($value)\n * @method static Builder|Group whereDeletedAt($value)\n * @method static Builder|Group whereId($value)\n * @method static Builder|Group whereName($value)\n * @method static Builder|Group wherePlaybookId($value)\n * @method static Builder|Group whereRequiredSidekick($value)\n * @method static Builder|Group whereScope($value)\n * @method static Builder|Group whereSlug($value)\n * @method static Builder|Group whereTeamId($value)\n * @method static Builder|Group whereTranscriptionModelLocaleId($value)\n * @method static Builder|Group whereUpdatedAt($value)\n * @method static Builder|Group whereUserId($value)\n * @method static Builder|Group whereUuid($value)\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withTrashed()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Group extends Model implements GroupContract\n{\n use HasFactory;\n\n use SoftDeletes;\n use RequiresUUID;\n use Notifiable;\n use Enums;\n\n public const SCOPE_ORGANIZATION = 0;\n public const SCOPE_OWN_TEAM = 1;\n public const SCOPE_TEAMS = 2;\n public const SCOPE_INDIVIDUAL = 4;\n\n public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';\n public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';\n\n protected $table = 'groups';\n\n protected $fillable = [\n 'name',\n 'slug',\n 'team_id',\n 'user_id',\n 'scope',\n 'playbook_id',\n 'default_timezone',\n 'default_language',\n 'country_code',\n 'conference_lead_ownership_rule',\n 'conference_account_ownership_rule',\n 'conference_opportunity_ownership_rule',\n 'transcription_model_locale_id',\n 'required_sidekick',\n ];\n\n protected $appends = [\n 'id_string',\n ];\n\n protected $hidden = [\n 'uuid',\n 'id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scope' => 'integer',\n ];\n }\n\n public function getIndexableAttributes(): array\n {\n return [\n 'name' => $this->name,\n 'slug' => $this->slug,\n 'team_id' => $this->team_id,\n 'user_id' => $this->user_id,\n 'scope' => $this->scope,\n 'playbook_id' => $this->playbook_id,\n 'transcription_model_locale_id' => $this->transcription_model_locale_id,\n 'default_timezone' => $this->default_timezone,\n 'default_language' => $this->default_language,\n 'country_code' => $this->country_code,\n 'created_at' => $this->created_at instanceof CarbonInterface\n ? $this->created_at->toDateTimeString()\n : null,\n 'updated_at' => $this->updated_at instanceof CarbonInterface\n ? $this->updated_at->toDateTimeString()\n : null,\n 'deleted_at' => $this->deleted_at instanceof CarbonInterface\n ? $this->deleted_at->toDateTimeString()\n : null,\n 'id_string' => $this->id_string,\n ];\n }\n\n /**\n * Always uppercase the country code when we save it to the database.\n */\n public function setCountryCodeAttribute($value)\n {\n $this->attributes['country_code'] = strtoupper($value);\n }\n\n public function getCountryNameAttribute(): string\n {\n return Locale::getDisplayRegion($this->country_code);\n }\n\n public function getCountryName(): string\n {\n /** @var string */\n return $this->getAttribute('country_name');\n }\n\n public function getCountryCode(): string\n {\n /** @var string */\n return $this->getAttribute('country_code');\n }\n\n public function getDefaultLanguage(): string\n {\n /** @var string */\n return $this->getAttribute('default_language');\n }\n\n public function getDefaultTimezone(): string\n {\n /** @var string */\n return $this->getAttribute('default_timezone');\n }\n\n public function getPhotoUrlAttribute(): string\n {\n return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');\n }\n\n public function getPhotoUrl(): string\n {\n /** @var string */\n return $this->getAttribute('photo_url');\n }\n\n /**\n * The channels the user receives notification broadcasts on.\n */\n public function receivesBroadcastNotificationsOn(): string\n {\n return 'group.' . $this->id_string;\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n /** @var BelongsTo<User, self> */\n return $this->belongsTo(User::class);\n }\n\n public function getOwner(): User\n {\n /** @var User */\n return $this->getAttribute('user');\n }\n\n public function members(): HasMany\n {\n return $this->hasMany(User::class);\n }\n\n public function membersActive(): HasMany\n {\n return $this->members()\n ->where(static fn (Eloquent\\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));\n }\n\n public function playbook()\n {\n return $this->belongsTo(Playbook::class);\n }\n\n public function team()\n {\n return $this->belongsTo(Team::class);\n }\n\n public function scorecards(): HasMany\n {\n return $this->hasMany(Scorecard::class);\n }\n\n public function invitations()\n {\n return $this->hasMany(Invitation::class);\n }\n\n public function transcriptionModelLocale()\n {\n return $this->belongsTo(TranscriptionModelLocale::class);\n }\n\n /** @return HasMany<ScopeGroup> */\n public function scopeGroups(): HasMany\n {\n return $this->hasMany(ScopeGroup::class);\n }\n\n /** @return BelongsToMany<self> */\n public function scopedGroups(): BelongsToMany\n {\n return $this->belongsToMany(\n self::class,\n 'scope_groups',\n 'scope_group_id',\n 'group_id',\n );\n }\n\n /** @return Collection<int, self> */\n public function getScopedGroups(): Collection\n {\n /** @var Collection<int, self> */\n return $this->getAttribute('scopedGroups');\n }\n\n public function playlistShares()\n {\n return $this->hasMany(Playlist\\Share::class);\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW THIS LINE\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getTeam(): Team\n {\n return $this->getAttribute('team');\n }\n\n public function hasPlaybook(): bool\n {\n return $this->getAttribute('playbook') !== null;\n }\n\n public function getPlaybook(): ?Playbook\n {\n return $this->getAttribute('playbook');\n }\n\n public function getPlaybookId(): int\n {\n return $this->getAttribute('playbook_id');\n }\n\n public function getTeamId(): int\n {\n return $this->getAttribute('team_id');\n }\n\n public function getTranscriptionModelLocale(): TranscriptionModelLocale\n {\n return $this->getAttribute('transcriptionModelLocale');\n }\n\n public function hasTranscriptionModelLocale(): bool\n {\n return $this->getAttribute('transcriptionModelLocale') !== null;\n }\n\n public function getName(): string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * @return Collection<User>\n */\n public function getMembers(): Collection\n {\n return $this->getAttribute('members');\n }\n\n public function isScope(int $scope): bool\n {\n return $this->getScope() === $scope;\n }\n\n public function getScope(): int\n {\n return $this->getAttribute('scope');\n }\n\n public function setScope(int $scope): self\n {\n return $this->setAttribute('scope', $scope);\n }\n\n /** @return Collection<int, ScopeGroup> */\n public function getScopeGroups(): Collection\n {\n return $this->getAttribute('scopeGroups');\n }\n\n /** @return array<array<string, int|string|null>> */\n public function getDealRisksTypes(): array\n {\n return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);\n }\n\n public function getConferenceLeadOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_lead_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceLeadOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_lead_ownership_rule', $rule);\n }\n\n public function getConferenceAccountOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_account_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceAccountOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_account_ownership_rule', $rule);\n }\n\n public function getConferenceOpportunityOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_opportunity_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceOpportunityOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_opportunity_ownership_rule', $rule);\n }\n\n public function getMembersActiveCount(): int\n {\n return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {\n return $this->membersActive()->count();\n });\n }\n\n public function isSame(self $group): bool\n {\n return $this->getId() === $group->getId();\n }\n\n public function doesExist(): bool\n {\n return $this->exists;\n }\n\n public function getSidekickRequired()\n {\n return $this->getAttribute('required_sidekick');\n }\n\n public function getPlaylistShares(): Collection\n {\n return $this->getAttribute('playlistShares');\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.40546876,"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.415625,"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.4285156,"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.4386719,"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.44882813,"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.46171874,"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.47460938,"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.5058594,"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.51875,"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.6917969,"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}]...
|
8912885280097805493
|
-4561315345140042051
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20698-fix-SF-activity- Project: faVsco.js, menu
JY-20698-fix-SF-activity-types-on-new-playbook, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Carbon\CarbonInterface;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache;
use Jiminny\Component\DealRisks\DealRiskType;
use Jiminny\Component\Eloquent\Builder;
use Jiminny\Models\Contracts\GroupContract;
use Jiminny\Models\Scorecard\Scorecard;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Locale;
/**
* Jiminny\Models\Group
*
* @property int $id
* @property mixed $uuid
* @property string $name
* @property string|null $slug
* @property int $team_id
* @property int $user_id
* @property int $scope
* @property int|null $playbook_id
* @property string $conference_record_announce
* @property string|null $conference_invite_template
* @property int|null $conference_timer_enabled
* @property string $conference_lead_ownership_rule
* @property string $conference_account_ownership_rule
* @property string $conference_opportunity_ownership_rule
* @property int|null $transcription_model_locale_id
* @property string $default_timezone
* @property string $default_language
* @property string $country_code
* @property int $required_sidekick
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read string $country_name
* @property-read string $id_string
* @property-read string $photo_url
* @property-read Collection<int, \Jiminny\Models\Invitation> $invitations
* @property-read int|null $invitations_count
* @property-read Collection<int, \Jiminny\Models\User> $members
* @property-read int|null $members_count
* @property-read Collection<int, \Jiminny\Models\User> $membersActive
* @property-read int|null $members_active_count
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Jiminny\Models\Playbook|null $playbook
* @property-read Collection<int, \Jiminny\Models\Playlist\Share> $playlistShares
* @property-read int|null $playlist_shares_count
* @property-read Collection<int, Scorecard> $scorecards
* @property-read int|null $scorecards_count
* @property-read \Jiminny\Models\Team $team
* @property-read \Jiminny\Models\TranscriptionModelLocale|null $transcriptionModelLocale
* @property-read \Jiminny\Models\User $user
*
* @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\GroupFactory factory(...$parameters)
* @method static Builder|Group groups()
* @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)
* @method static Builder|Group newModelQuery()
* @method static Builder|Group newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Group onlyTrashed()
* @method static Builder|Group query()
* @method static Builder|Group uuid(string $uuid, bool $first = true)
* @method static Builder|Group whereColor($value)
* @method static Builder|Group whereConferenceAccountOwnershipRule($value)
* @method static Builder|Group whereConferenceInviteTemplate($value)
* @method static Builder|Group whereConferenceLeadOwnershipRule($value)
* @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)
* @method static Builder|Group whereConferenceRecordAnnounce($value)
* @method static Builder|Group whereConferenceTimerEnabled($value)
* @method static Builder|Group whereCountryCode($value)
* @method static Builder|Group whereCreatedAt($value)
* @method static Builder|Group whereDefaultLanguage($value)
* @method static Builder|Group whereDefaultTimezone($value)
* @method static Builder|Group whereDeletedAt($value)
* @method static Builder|Group whereId($value)
* @method static Builder|Group whereName($value)
* @method static Builder|Group wherePlaybookId($value)
* @method static Builder|Group whereRequiredSidekick($value)
* @method static Builder|Group whereScope($value)
* @method static Builder|Group whereSlug($value)
* @method static Builder|Group whereTeamId($value)
* @method static Builder|Group whereTranscriptionModelLocaleId($value)
* @method static Builder|Group whereUpdatedAt($value)
* @method static Builder|Group whereUserId($value)
* @method static Builder|Group whereUuid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Group withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Group withoutTrashed()
*
* @mixin \Eloquent
*/
class Group extends Model implements GroupContract
{
use HasFactory;
use SoftDeletes;
use RequiresUUID;
use Notifiable;
use Enums;
public const SCOPE_ORGANIZATION = 0;
public const SCOPE_OWN_TEAM = 1;
public const SCOPE_TEAMS = 2;
public const SCOPE_INDIVIDUAL = 4;
public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';
public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';
protected $table = 'groups';
protected $fillable = [
'name',
'slug',
'team_id',
'user_id',
'scope',
'playbook_id',
'default_timezone',
'default_language',
'country_code',
'conference_lead_ownership_rule',
'conference_account_ownership_rule',
'conference_opportunity_ownership_rule',
'transcription_model_locale_id',
'required_sidekick',
];
protected $appends = [
'id_string',
];
protected $hidden = [
'uuid',
'id',
];
protected function casts(): array
{
return [
'scope' => 'integer',
];
}
public function getIndexableAttributes(): array
{
return [
'name' => $this->name,
'slug' => $this->slug,
'team_id' => $this->team_id,
'user_id' => $this->user_id,
'scope' => $this->scope,
'playbook_id' => $this->playbook_id,
'transcription_model_locale_id' => $this->transcription_model_locale_id,
'default_timezone' => $this->default_timezone,
'default_language' => $this->default_language,
'country_code' => $this->country_code,
'created_at' => $this->created_at instanceof CarbonInterface
? $this->created_at->toDateTimeString()
: null,
'updated_at' => $this->updated_at instanceof CarbonInterface
? $this->updated_at->toDateTimeString()
: null,
'deleted_at' => $this->deleted_at instanceof CarbonInterface
? $this->deleted_at->toDateTimeString()
: null,
'id_string' => $this->id_string,
];
}
/**
* Always uppercase the country code when we save it to the database.
*/
public function setCountryCodeAttribute($value)
{
$this->attributes['country_code'] = strtoupper($value);
}
public function getCountryNameAttribute(): string
{
return Locale::getDisplayRegion($this->country_code);
}
public function getCountryName(): string
{
/** @var string */
return $this->getAttribute('country_name');
}
public function getCountryCode(): string
{
/** @var string */
return $this->getAttribute('country_code');
}
public function getDefaultLanguage(): string
{
/** @var string */
return $this->getAttribute('default_language');
}
public function getDefaultTimezone(): string
{
/** @var string */
return $this->getAttribute('default_timezone');
}
public function getPhotoUrlAttribute(): string
{
return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');
}
public function getPhotoUrl(): string
{
/** @var string */
return $this->getAttribute('photo_url');
}
/**
* The channels the user receives notification broadcasts on.
*/
public function receivesBroadcastNotificationsOn(): string
{
return 'group.' . $this->id_string;
}
/** @return BelongsTo<User, self> */
public function user(): BelongsTo
{
/** @var BelongsTo<User, self> */
return $this->belongsTo(User::class);
}
public function getOwner(): User
{
/** @var User */
return $this->getAttribute('user');
}
public function members(): HasMany
{
return $this->hasMany(User::class);
}
public function membersActive(): HasMany
{
return $this->members()
->where(static fn (Eloquent\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));
}
public function playbook()
{
return $this->belongsTo(Playbook::class);
}
public function team()
{
return $this->belongsTo(Team::class);
}
public function scorecards(): HasMany
{
return $this->hasMany(Scorecard::class);
}
public function invitations()
{
return $this->hasMany(Invitation::class);
}
public function transcriptionModelLocale()
{
return $this->belongsTo(TranscriptionModelLocale::class);
}
/** @return HasMany<ScopeGroup> */
public function scopeGroups(): HasMany
{
return $this->hasMany(ScopeGroup::class);
}
/** @return BelongsToMany<self> */
public function scopedGroups(): BelongsToMany
{
return $this->belongsToMany(
self::class,
'scope_groups',
'scope_group_id',
'group_id',
);
}
/** @return Collection<int, self> */
public function getScopedGroups(): Collection
{
/** @var Collection<int, self> */
return $this->getAttribute('scopedGroups');
}
public function playlistShares()
{
return $this->hasMany(Playlist\Share::class);
}
/**
* GETTERS AND SETTERS FOLLOW BELOW THIS LINE
*/
public function getId(): int
{
return $this->getAttribute('id');
}
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
public function getTeam(): Team
{
return $this->getAttribute('team');
}
public function hasPlaybook(): bool
{
return $this->getAttribute('playbook') !== null;
}
public function getPlaybook(): ?Playbook
{
return $this->getAttribute('playbook');
}
public function getPlaybookId(): int
{
return $this->getAttribute('playbook_id');
}
public function getTeamId(): int
{
return $this->getAttribute('team_id');
}
public function getTranscriptionModelLocale(): TranscriptionModelLocale
{
return $this->getAttribute('transcriptionModelLocale');
}
public function hasTranscriptionModelLocale(): bool
{
return $this->getAttribute('transcriptionModelLocale') !== null;
}
public function getName(): string
{
return $this->getAttribute('name');
}
/**
* @return Collection<User>
*/
public function getMembers(): Collection
{
return $this->getAttribute('members');
}
public function isScope(int $scope): bool
{
return $this->getScope() === $scope;
}
public function getScope(): int
{
return $this->getAttribute('scope');
}
public function setScope(int $scope): self
{
return $this->setAttribute('scope', $scope);
}
/** @return Collection<int, ScopeGroup> */
public function getScopeGroups(): Collection
{
return $this->getAttribute('scopeGroups');
}
/** @return array<array<string, int|string|null>> */
public function getDealRisksTypes(): array
{
return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);
}
public function getConferenceLeadOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_lead_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceLeadOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_lead_ownership_rule', $rule);
}
public function getConferenceAccountOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_account_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceAccountOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_account_ownership_rule', $rule);
}
public function getConferenceOpportunityOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_opportunity_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceOpportunityOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_opportunity_ownership_rule', $rule);
}
public function getMembersActiveCount(): int
{
return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {
return $this->membersActive()->count();
});
}
public function isSame(self $group): bool
{
return $this->getId() === $group->getId();
}
public function doesExist(): bool
{
return $this->exists;
}
public function getSidekickRequired()
{
return $this->getAttribute('required_sidekick');
}
public function getPlaylistShares(): Collection
{
return $this->getAttribute('playlistShares');
}
}
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:...
|
50302
|
|
50441
|
1080
|
21
|
2026-04-17T14:51:46.037651+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776437506037_m2.jpg...
|
PhpStorm
|
faVsco.js – Group.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20698-fix-SF-activity- Project: faVsco.js, menu
JY-20698-fix-SF-activity-types-on-new-playbook, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Carbon\CarbonInterface;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache;
use Jiminny\Component\DealRisks\DealRiskType;
use Jiminny\Component\Eloquent\Builder;
use Jiminny\Models\Contracts\GroupContract;
use Jiminny\Models\Scorecard\Scorecard;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Locale;
/**
* Jiminny\Models\Group
*
* @property int $id
* @property mixed $uuid
* @property string $name
* @property string|null $slug
* @property int $team_id
* @property int $user_id
* @property int $scope
* @property int|null $playbook_id
* @property string $conference_record_announce
* @property string|null $conference_invite_template
* @property int|null $conference_timer_enabled
* @property string $conference_lead_ownership_rule
* @property string $conference_account_ownership_rule
* @property string $conference_opportunity_ownership_rule
* @property int|null $transcription_model_locale_id
* @property string $default_timezone
* @property string $default_language
* @property string $country_code
* @property int $required_sidekick
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read string $country_name
* @property-read string $id_string
* @property-read string $photo_url
* @property-read Collection<int, \Jiminny\Models\Invitation> $invitations
* @property-read int|null $invitations_count
* @property-read Collection<int, \Jiminny\Models\User> $members
* @property-read int|null $members_count
* @property-read Collection<int, \Jiminny\Models\User> $membersActive
* @property-read int|null $members_active_count
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Jiminny\Models\Playbook|null $playbook
* @property-read Collection<int, \Jiminny\Models\Playlist\Share> $playlistShares
* @property-read int|null $playlist_shares_count
* @property-read Collection<int, Scorecard> $scorecards
* @property-read int|null $scorecards_count
* @property-read \Jiminny\Models\Team $team
* @property-read \Jiminny\Models\TranscriptionModelLocale|null $transcriptionModelLocale
* @property-read \Jiminny\Models\User $user
*
* @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\GroupFactory factory(...$parameters)
* @method static Builder|Group groups()
* @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)
* @method static Builder|Group newModelQuery()
* @method static Builder|Group newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Group onlyTrashed()
* @method static Builder|Group query()
* @method static Builder|Group uuid(string $uuid, bool $first = true)
* @method static Builder|Group whereColor($value)
* @method static Builder|Group whereConferenceAccountOwnershipRule($value)
* @method static Builder|Group whereConferenceInviteTemplate($value)
* @method static Builder|Group whereConferenceLeadOwnershipRule($value)
* @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)
* @method static Builder|Group whereConferenceRecordAnnounce($value)
* @method static Builder|Group whereConferenceTimerEnabled($value)
* @method static Builder|Group whereCountryCode($value)
* @method static Builder|Group whereCreatedAt($value)
* @method static Builder|Group whereDefaultLanguage($value)
* @method static Builder|Group whereDefaultTimezone($value)
* @method static Builder|Group whereDeletedAt($value)
* @method static Builder|Group whereId($value)
* @method static Builder|Group whereName($value)
* @method static Builder|Group wherePlaybookId($value)
* @method static Builder|Group whereRequiredSidekick($value)
* @method static Builder|Group whereScope($value)
* @method static Builder|Group whereSlug($value)
* @method static Builder|Group whereTeamId($value)
* @method static Builder|Group whereTranscriptionModelLocaleId($value)
* @method static Builder|Group whereUpdatedAt($value)
* @method static Builder|Group whereUserId($value)
* @method static Builder|Group whereUuid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Group withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Group withoutTrashed()
*
* @mixin \Eloquent
*/
class Group extends Model implements GroupContract
{
use HasFactory;
use SoftDeletes;
use RequiresUUID;
use Notifiable;
use Enums;
public const SCOPE_ORGANIZATION = 0;
public const SCOPE_OWN_TEAM = 1;
public const SCOPE_TEAMS = 2;
public const SCOPE_INDIVIDUAL = 4;
public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';
public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';
protected $table = 'groups';
protected $fillable = [
'name',
'slug',
'team_id',
'user_id',
'scope',
'playbook_id',
'default_timezone',
'default_language',
'country_code',
'conference_lead_ownership_rule',
'conference_account_ownership_rule',
'conference_opportunity_ownership_rule',
'transcription_model_locale_id',
'required_sidekick',
];
protected $appends = [
'id_string',
];
protected $hidden = [
'uuid',
'id',
];
protected function casts(): array
{
return [
'scope' => 'integer',
];
}
public function getIndexableAttributes(): array
{
return [
'name' => $this->name,
'slug' => $this->slug,
'team_id' => $this->team_id,
'user_id' => $this->user_id,
'scope' => $this->scope,
'playbook_id' => $this->playbook_id,
'transcription_model_locale_id' => $this->transcription_model_locale_id,
'default_timezone' => $this->default_timezone,
'default_language' => $this->default_language,
'country_code' => $this->country_code,
'created_at' => $this->created_at instanceof CarbonInterface
? $this->created_at->toDateTimeString()
: null,
'updated_at' => $this->updated_at instanceof CarbonInterface
? $this->updated_at->toDateTimeString()
: null,
'deleted_at' => $this->deleted_at instanceof CarbonInterface
? $this->deleted_at->toDateTimeString()
: null,
'id_string' => $this->id_string,
];
}
/**
* Always uppercase the country code when we save it to the database.
*/
public function setCountryCodeAttribute($value)
{
$this->attributes['country_code'] = strtoupper($value);
}
public function getCountryNameAttribute(): string
{
return Locale::getDisplayRegion($this->country_code);
}
public function getCountryName(): string
{
/** @var string */
return $this->getAttribute('country_name');
}
public function getCountryCode(): string
{
/** @var string */
return $this->getAttribute('country_code');
}
public function getDefaultLanguage(): string
{
/** @var string */
return $this->getAttribute('default_language');
}
public function getDefaultTimezone(): string
{
/** @var string */
return $this->getAttribute('default_timezone');
}
public function getPhotoUrlAttribute(): string
{
return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');
}
public function getPhotoUrl(): string
{
/** @var string */
return $this->getAttribute('photo_url');
}
/**
* The channels the user receives notification broadcasts on.
*/
public function receivesBroadcastNotificationsOn(): string
{
return 'group.' . $this->id_string;
}
/** @return BelongsTo<User, self> */
public function user(): BelongsTo
{
/** @var BelongsTo<User, self> */
return $this->belongsTo(User::class);
}
public function getOwner(): User
{
/** @var User */
return $this->getAttribute('user');
}
public function members(): HasMany
{
return $this->hasMany(User::class);
}
public function membersActive(): HasMany
{
return $this->members()
->where(static fn (Eloquent\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));
}
public function playbook()
{
return $this->belongsTo(Playbook::class);
}
public function team()
{
return $this->belongsTo(Team::class);
}
public function scorecards(): HasMany
{
return $this->hasMany(Scorecard::class);
}
public function invitations()
{
return $this->hasMany(Invitation::class);
}
public function transcriptionModelLocale()
{
return $this->belongsTo(TranscriptionModelLocale::class);
}
/** @return HasMany<ScopeGroup> */
public function scopeGroups(): HasMany
{
return $this->hasMany(ScopeGroup::class);
}
/** @return BelongsToMany<self> */
public function scopedGroups(): BelongsToMany
{
return $this->belongsToMany(
self::class,
'scope_groups',
'scope_group_id',
'group_id',
);
}
/** @return Collection<int, self> */
public function getScopedGroups(): Collection
{
/** @var Collection<int, self> */
return $this->getAttribute('scopedGroups');
}
public function playlistShares()
{
return $this->hasMany(Playlist\Share::class);
}
/**
* GETTERS AND SETTERS FOLLOW BELOW THIS LINE
*/
public function getId(): int
{
return $this->getAttribute('id');
}
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
public function getTeam(): Team
{
return $this->getAttribute('team');
}
public function hasPlaybook(): bool
{
return $this->getAttribute('playbook') !== null;
}
public function getPlaybook(): ?Playbook
{
return $this->getAttribute('playbook');
}
public function getPlaybookId(): int
{
return $this->getAttribute('playbook_id');
}
public function getTeamId(): int
{
return $this->getAttribute('team_id');
}
public function getTranscriptionModelLocale(): TranscriptionModelLocale
{
return $this->getAttribute('transcriptionModelLocale');
}
public function hasTranscriptionModelLocale(): bool
{
return $this->getAttribute('transcriptionModelLocale') !== null;
}
public function getName(): string
{
return $this->getAttribute('name');
}
/**
* @return Collection<User>
*/
public function getMembers(): Collection
{
return $this->getAttribute('members');
}
public function isScope(int $scope): bool
{
return $this->getScope() === $scope;
}
public function getScope(): int
{
return $this->getAttribute('scope');
}
public function setScope(int $scope): self
{
return $this->setAttribute('scope', $scope);
}
/** @return Collection<int, ScopeGroup> */
public function getScopeGroups(): Collection
{
return $this->getAttribute('scopeGroups');
}
/** @return array<array<string, int|string|null>> */
public function getDealRisksTypes(): array
{
return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);
}
public function getConferenceLeadOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_lead_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceLeadOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_lead_ownership_rule', $rule);
}
public function getConferenceAccountOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_account_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceAccountOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_account_ownership_rule', $rule);
}
public function getConferenceOpportunityOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_opportunity_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceOpportunityOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_opportunity_ownership_rule', $rule);
}
public function getMembersActiveCount(): int
{
return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {
return $this->membersActive()->count();
});
}
public function isSame(self $group): bool
{
return $this->getId() === $group->getId();
}
public function doesExist(): bool
{
return $this->exists;
}
public function getSidekickRequired()
{
return $this->getAttribute('required_sidekick');
}
public function getPlaylistShares(): Collection
{
return $this->getAttribute('playlistShares');
}
}
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:...
|
[{"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":"JY-20698-fix-SF-activity-types-on-new-playbook, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.13710937,"height":0.022222223},"help_text":"Git Branch: JY-20698-fix-SF-activity-types-on-new-playbook","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.76171875,"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.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 'RequestGenerateAskJiminnyReportJobTest'","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":"43","depth":4,"bounds":{"left":0.36171874,"top":0.19513889,"width":0.012109375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.3761719,"top":0.19513889,"width":0.00859375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.38671875,"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.3953125,"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\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Carbon\\CarbonInterface;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Notifications\\Notifiable;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Jiminny\\Component\\DealRisks\\DealRiskType;\nuse Jiminny\\Component\\Eloquent\\Builder;\nuse Jiminny\\Models\\Contracts\\GroupContract;\nuse Jiminny\\Models\\Scorecard\\Scorecard;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Locale;\n\n/**\n * Jiminny\\Models\\Group\n *\n * @property int $id\n * @property mixed $uuid\n * @property string $name\n * @property string|null $slug\n * @property int $team_id\n * @property int $user_id\n * @property int $scope\n * @property int|null $playbook_id\n * @property string $conference_record_announce\n * @property string|null $conference_invite_template\n * @property int|null $conference_timer_enabled\n * @property string $conference_lead_ownership_rule\n * @property string $conference_account_ownership_rule\n * @property string $conference_opportunity_ownership_rule\n * @property int|null $transcription_model_locale_id\n * @property string $default_timezone\n * @property string $default_language\n * @property string $country_code\n * @property int $required_sidekick\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property-read string $country_name\n * @property-read string $id_string\n * @property-read string $photo_url\n * @property-read Collection<int, \\Jiminny\\Models\\Invitation> $invitations\n * @property-read int|null $invitations_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $members\n * @property-read int|null $members_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $membersActive\n * @property-read int|null $members_active_count\n * @property-read \\Illuminate\\Notifications\\DatabaseNotificationCollection<int, \\Illuminate\\Notifications\\DatabaseNotification> $notifications\n * @property-read int|null $notifications_count\n * @property-read \\Jiminny\\Models\\Playbook|null $playbook\n * @property-read Collection<int, \\Jiminny\\Models\\Playlist\\Share> $playlistShares\n * @property-read int|null $playlist_shares_count\n * @property-read Collection<int, Scorecard> $scorecards\n * @property-read int|null $scorecards_count\n * @property-read \\Jiminny\\Models\\Team $team\n * @property-read \\Jiminny\\Models\\TranscriptionModelLocale|null $transcriptionModelLocale\n * @property-read \\Jiminny\\Models\\User $user\n *\n * @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\GroupFactory factory(...$parameters)\n * @method static Builder|Group groups()\n * @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)\n * @method static Builder|Group newModelQuery()\n * @method static Builder|Group newQuery()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group onlyTrashed()\n * @method static Builder|Group query()\n * @method static Builder|Group uuid(string $uuid, bool $first = true)\n * @method static Builder|Group whereColor($value)\n * @method static Builder|Group whereConferenceAccountOwnershipRule($value)\n * @method static Builder|Group whereConferenceInviteTemplate($value)\n * @method static Builder|Group whereConferenceLeadOwnershipRule($value)\n * @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)\n * @method static Builder|Group whereConferenceRecordAnnounce($value)\n * @method static Builder|Group whereConferenceTimerEnabled($value)\n * @method static Builder|Group whereCountryCode($value)\n * @method static Builder|Group whereCreatedAt($value)\n * @method static Builder|Group whereDefaultLanguage($value)\n * @method static Builder|Group whereDefaultTimezone($value)\n * @method static Builder|Group whereDeletedAt($value)\n * @method static Builder|Group whereId($value)\n * @method static Builder|Group whereName($value)\n * @method static Builder|Group wherePlaybookId($value)\n * @method static Builder|Group whereRequiredSidekick($value)\n * @method static Builder|Group whereScope($value)\n * @method static Builder|Group whereSlug($value)\n * @method static Builder|Group whereTeamId($value)\n * @method static Builder|Group whereTranscriptionModelLocaleId($value)\n * @method static Builder|Group whereUpdatedAt($value)\n * @method static Builder|Group whereUserId($value)\n * @method static Builder|Group whereUuid($value)\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withTrashed()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Group extends Model implements GroupContract\n{\n use HasFactory;\n\n use SoftDeletes;\n use RequiresUUID;\n use Notifiable;\n use Enums;\n\n public const SCOPE_ORGANIZATION = 0;\n public const SCOPE_OWN_TEAM = 1;\n public const SCOPE_TEAMS = 2;\n public const SCOPE_INDIVIDUAL = 4;\n\n public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';\n public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';\n\n protected $table = 'groups';\n\n protected $fillable = [\n 'name',\n 'slug',\n 'team_id',\n 'user_id',\n 'scope',\n 'playbook_id',\n 'default_timezone',\n 'default_language',\n 'country_code',\n 'conference_lead_ownership_rule',\n 'conference_account_ownership_rule',\n 'conference_opportunity_ownership_rule',\n 'transcription_model_locale_id',\n 'required_sidekick',\n ];\n\n protected $appends = [\n 'id_string',\n ];\n\n protected $hidden = [\n 'uuid',\n 'id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scope' => 'integer',\n ];\n }\n\n public function getIndexableAttributes(): array\n {\n return [\n 'name' => $this->name,\n 'slug' => $this->slug,\n 'team_id' => $this->team_id,\n 'user_id' => $this->user_id,\n 'scope' => $this->scope,\n 'playbook_id' => $this->playbook_id,\n 'transcription_model_locale_id' => $this->transcription_model_locale_id,\n 'default_timezone' => $this->default_timezone,\n 'default_language' => $this->default_language,\n 'country_code' => $this->country_code,\n 'created_at' => $this->created_at instanceof CarbonInterface\n ? $this->created_at->toDateTimeString()\n : null,\n 'updated_at' => $this->updated_at instanceof CarbonInterface\n ? $this->updated_at->toDateTimeString()\n : null,\n 'deleted_at' => $this->deleted_at instanceof CarbonInterface\n ? $this->deleted_at->toDateTimeString()\n : null,\n 'id_string' => $this->id_string,\n ];\n }\n\n /**\n * Always uppercase the country code when we save it to the database.\n */\n public function setCountryCodeAttribute($value)\n {\n $this->attributes['country_code'] = strtoupper($value);\n }\n\n public function getCountryNameAttribute(): string\n {\n return Locale::getDisplayRegion($this->country_code);\n }\n\n public function getCountryName(): string\n {\n /** @var string */\n return $this->getAttribute('country_name');\n }\n\n public function getCountryCode(): string\n {\n /** @var string */\n return $this->getAttribute('country_code');\n }\n\n public function getDefaultLanguage(): string\n {\n /** @var string */\n return $this->getAttribute('default_language');\n }\n\n public function getDefaultTimezone(): string\n {\n /** @var string */\n return $this->getAttribute('default_timezone');\n }\n\n public function getPhotoUrlAttribute(): string\n {\n return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');\n }\n\n public function getPhotoUrl(): string\n {\n /** @var string */\n return $this->getAttribute('photo_url');\n }\n\n /**\n * The channels the user receives notification broadcasts on.\n */\n public function receivesBroadcastNotificationsOn(): string\n {\n return 'group.' . $this->id_string;\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n /** @var BelongsTo<User, self> */\n return $this->belongsTo(User::class);\n }\n\n public function getOwner(): User\n {\n /** @var User */\n return $this->getAttribute('user');\n }\n\n public function members(): HasMany\n {\n return $this->hasMany(User::class);\n }\n\n public function membersActive(): HasMany\n {\n return $this->members()\n ->where(static fn (Eloquent\\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));\n }\n\n public function playbook()\n {\n return $this->belongsTo(Playbook::class);\n }\n\n public function team()\n {\n return $this->belongsTo(Team::class);\n }\n\n public function scorecards(): HasMany\n {\n return $this->hasMany(Scorecard::class);\n }\n\n public function invitations()\n {\n return $this->hasMany(Invitation::class);\n }\n\n public function transcriptionModelLocale()\n {\n return $this->belongsTo(TranscriptionModelLocale::class);\n }\n\n /** @return HasMany<ScopeGroup> */\n public function scopeGroups(): HasMany\n {\n return $this->hasMany(ScopeGroup::class);\n }\n\n /** @return BelongsToMany<self> */\n public function scopedGroups(): BelongsToMany\n {\n return $this->belongsToMany(\n self::class,\n 'scope_groups',\n 'scope_group_id',\n 'group_id',\n );\n }\n\n /** @return Collection<int, self> */\n public function getScopedGroups(): Collection\n {\n /** @var Collection<int, self> */\n return $this->getAttribute('scopedGroups');\n }\n\n public function playlistShares()\n {\n return $this->hasMany(Playlist\\Share::class);\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW THIS LINE\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getTeam(): Team\n {\n return $this->getAttribute('team');\n }\n\n public function hasPlaybook(): bool\n {\n return $this->getAttribute('playbook') !== null;\n }\n\n public function getPlaybook(): ?Playbook\n {\n return $this->getAttribute('playbook');\n }\n\n public function getPlaybookId(): int\n {\n return $this->getAttribute('playbook_id');\n }\n\n public function getTeamId(): int\n {\n return $this->getAttribute('team_id');\n }\n\n public function getTranscriptionModelLocale(): TranscriptionModelLocale\n {\n return $this->getAttribute('transcriptionModelLocale');\n }\n\n public function hasTranscriptionModelLocale(): bool\n {\n return $this->getAttribute('transcriptionModelLocale') !== null;\n }\n\n public function getName(): string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * @return Collection<User>\n */\n public function getMembers(): Collection\n {\n return $this->getAttribute('members');\n }\n\n public function isScope(int $scope): bool\n {\n return $this->getScope() === $scope;\n }\n\n public function getScope(): int\n {\n return $this->getAttribute('scope');\n }\n\n public function setScope(int $scope): self\n {\n return $this->setAttribute('scope', $scope);\n }\n\n /** @return Collection<int, ScopeGroup> */\n public function getScopeGroups(): Collection\n {\n return $this->getAttribute('scopeGroups');\n }\n\n /** @return array<array<string, int|string|null>> */\n public function getDealRisksTypes(): array\n {\n return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);\n }\n\n public function getConferenceLeadOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_lead_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceLeadOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_lead_ownership_rule', $rule);\n }\n\n public function getConferenceAccountOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_account_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceAccountOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_account_ownership_rule', $rule);\n }\n\n public function getConferenceOpportunityOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_opportunity_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceOpportunityOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_opportunity_ownership_rule', $rule);\n }\n\n public function getMembersActiveCount(): int\n {\n return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {\n return $this->membersActive()->count();\n });\n }\n\n public function isSame(self $group): bool\n {\n return $this->getId() === $group->getId();\n }\n\n public function doesExist(): bool\n {\n return $this->exists;\n }\n\n public function getSidekickRequired()\n {\n return $this->getAttribute('required_sidekick');\n }\n\n public function getPlaylistShares(): Collection\n {\n return $this->getAttribute('playlistShares');\n }\n}","depth":4,"value":"<?php\n\nnamespace Jiminny\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Carbon\\CarbonInterface;\nuse Illuminate\\Database\\Eloquent;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsTo;\nuse Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany;\nuse Illuminate\\Database\\Eloquent\\Relations\\HasMany;\nuse Illuminate\\Notifications\\Notifiable;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Jiminny\\Component\\DealRisks\\DealRiskType;\nuse Jiminny\\Component\\Eloquent\\Builder;\nuse Jiminny\\Models\\Contracts\\GroupContract;\nuse Jiminny\\Models\\Scorecard\\Scorecard;\nuse Jiminny\\Traits\\Enums;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Locale;\n\n/**\n * Jiminny\\Models\\Group\n *\n * @property int $id\n * @property mixed $uuid\n * @property string $name\n * @property string|null $slug\n * @property int $team_id\n * @property int $user_id\n * @property int $scope\n * @property int|null $playbook_id\n * @property string $conference_record_announce\n * @property string|null $conference_invite_template\n * @property int|null $conference_timer_enabled\n * @property string $conference_lead_ownership_rule\n * @property string $conference_account_ownership_rule\n * @property string $conference_opportunity_ownership_rule\n * @property int|null $transcription_model_locale_id\n * @property string $default_timezone\n * @property string $default_language\n * @property string $country_code\n * @property int $required_sidekick\n * @property \\Illuminate\\Support\\Carbon|null $deleted_at\n * @property \\Illuminate\\Support\\Carbon|null $created_at\n * @property \\Illuminate\\Support\\Carbon|null $updated_at\n * @property-read string $country_name\n * @property-read string $id_string\n * @property-read string $photo_url\n * @property-read Collection<int, \\Jiminny\\Models\\Invitation> $invitations\n * @property-read int|null $invitations_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $members\n * @property-read int|null $members_count\n * @property-read Collection<int, \\Jiminny\\Models\\User> $membersActive\n * @property-read int|null $members_active_count\n * @property-read \\Illuminate\\Notifications\\DatabaseNotificationCollection<int, \\Illuminate\\Notifications\\DatabaseNotification> $notifications\n * @property-read int|null $notifications_count\n * @property-read \\Jiminny\\Models\\Playbook|null $playbook\n * @property-read Collection<int, \\Jiminny\\Models\\Playlist\\Share> $playlistShares\n * @property-read int|null $playlist_shares_count\n * @property-read Collection<int, Scorecard> $scorecards\n * @property-read int|null $scorecards_count\n * @property-read \\Jiminny\\Models\\Team $team\n * @property-read \\Jiminny\\Models\\TranscriptionModelLocale|null $transcriptionModelLocale\n * @property-read \\Jiminny\\Models\\User $user\n *\n * @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)\n * @method static \\Database\\Factories\\GroupFactory factory(...$parameters)\n * @method static Builder|Group groups()\n * @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)\n * @method static Builder|Group newModelQuery()\n * @method static Builder|Group newQuery()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group onlyTrashed()\n * @method static Builder|Group query()\n * @method static Builder|Group uuid(string $uuid, bool $first = true)\n * @method static Builder|Group whereColor($value)\n * @method static Builder|Group whereConferenceAccountOwnershipRule($value)\n * @method static Builder|Group whereConferenceInviteTemplate($value)\n * @method static Builder|Group whereConferenceLeadOwnershipRule($value)\n * @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)\n * @method static Builder|Group whereConferenceRecordAnnounce($value)\n * @method static Builder|Group whereConferenceTimerEnabled($value)\n * @method static Builder|Group whereCountryCode($value)\n * @method static Builder|Group whereCreatedAt($value)\n * @method static Builder|Group whereDefaultLanguage($value)\n * @method static Builder|Group whereDefaultTimezone($value)\n * @method static Builder|Group whereDeletedAt($value)\n * @method static Builder|Group whereId($value)\n * @method static Builder|Group whereName($value)\n * @method static Builder|Group wherePlaybookId($value)\n * @method static Builder|Group whereRequiredSidekick($value)\n * @method static Builder|Group whereScope($value)\n * @method static Builder|Group whereSlug($value)\n * @method static Builder|Group whereTeamId($value)\n * @method static Builder|Group whereTranscriptionModelLocaleId($value)\n * @method static Builder|Group whereUpdatedAt($value)\n * @method static Builder|Group whereUserId($value)\n * @method static Builder|Group whereUuid($value)\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withTrashed()\n * @method static \\Illuminate\\Database\\Eloquent\\Builder|Group withoutTrashed()\n *\n * @mixin \\Eloquent\n */\nclass Group extends Model implements GroupContract\n{\n use HasFactory;\n\n use SoftDeletes;\n use RequiresUUID;\n use Notifiable;\n use Enums;\n\n public const SCOPE_ORGANIZATION = 0;\n public const SCOPE_OWN_TEAM = 1;\n public const SCOPE_TEAMS = 2;\n public const SCOPE_INDIVIDUAL = 4;\n\n public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';\n public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';\n\n protected $table = 'groups';\n\n protected $fillable = [\n 'name',\n 'slug',\n 'team_id',\n 'user_id',\n 'scope',\n 'playbook_id',\n 'default_timezone',\n 'default_language',\n 'country_code',\n 'conference_lead_ownership_rule',\n 'conference_account_ownership_rule',\n 'conference_opportunity_ownership_rule',\n 'transcription_model_locale_id',\n 'required_sidekick',\n ];\n\n protected $appends = [\n 'id_string',\n ];\n\n protected $hidden = [\n 'uuid',\n 'id',\n ];\n\n protected function casts(): array\n {\n return [\n 'scope' => 'integer',\n ];\n }\n\n public function getIndexableAttributes(): array\n {\n return [\n 'name' => $this->name,\n 'slug' => $this->slug,\n 'team_id' => $this->team_id,\n 'user_id' => $this->user_id,\n 'scope' => $this->scope,\n 'playbook_id' => $this->playbook_id,\n 'transcription_model_locale_id' => $this->transcription_model_locale_id,\n 'default_timezone' => $this->default_timezone,\n 'default_language' => $this->default_language,\n 'country_code' => $this->country_code,\n 'created_at' => $this->created_at instanceof CarbonInterface\n ? $this->created_at->toDateTimeString()\n : null,\n 'updated_at' => $this->updated_at instanceof CarbonInterface\n ? $this->updated_at->toDateTimeString()\n : null,\n 'deleted_at' => $this->deleted_at instanceof CarbonInterface\n ? $this->deleted_at->toDateTimeString()\n : null,\n 'id_string' => $this->id_string,\n ];\n }\n\n /**\n * Always uppercase the country code when we save it to the database.\n */\n public function setCountryCodeAttribute($value)\n {\n $this->attributes['country_code'] = strtoupper($value);\n }\n\n public function getCountryNameAttribute(): string\n {\n return Locale::getDisplayRegion($this->country_code);\n }\n\n public function getCountryName(): string\n {\n /** @var string */\n return $this->getAttribute('country_name');\n }\n\n public function getCountryCode(): string\n {\n /** @var string */\n return $this->getAttribute('country_code');\n }\n\n public function getDefaultLanguage(): string\n {\n /** @var string */\n return $this->getAttribute('default_language');\n }\n\n public function getDefaultTimezone(): string\n {\n /** @var string */\n return $this->getAttribute('default_timezone');\n }\n\n public function getPhotoUrlAttribute(): string\n {\n return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');\n }\n\n public function getPhotoUrl(): string\n {\n /** @var string */\n return $this->getAttribute('photo_url');\n }\n\n /**\n * The channels the user receives notification broadcasts on.\n */\n public function receivesBroadcastNotificationsOn(): string\n {\n return 'group.' . $this->id_string;\n }\n\n /** @return BelongsTo<User, self> */\n public function user(): BelongsTo\n {\n /** @var BelongsTo<User, self> */\n return $this->belongsTo(User::class);\n }\n\n public function getOwner(): User\n {\n /** @var User */\n return $this->getAttribute('user');\n }\n\n public function members(): HasMany\n {\n return $this->hasMany(User::class);\n }\n\n public function membersActive(): HasMany\n {\n return $this->members()\n ->where(static fn (Eloquent\\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));\n }\n\n public function playbook()\n {\n return $this->belongsTo(Playbook::class);\n }\n\n public function team()\n {\n return $this->belongsTo(Team::class);\n }\n\n public function scorecards(): HasMany\n {\n return $this->hasMany(Scorecard::class);\n }\n\n public function invitations()\n {\n return $this->hasMany(Invitation::class);\n }\n\n public function transcriptionModelLocale()\n {\n return $this->belongsTo(TranscriptionModelLocale::class);\n }\n\n /** @return HasMany<ScopeGroup> */\n public function scopeGroups(): HasMany\n {\n return $this->hasMany(ScopeGroup::class);\n }\n\n /** @return BelongsToMany<self> */\n public function scopedGroups(): BelongsToMany\n {\n return $this->belongsToMany(\n self::class,\n 'scope_groups',\n 'scope_group_id',\n 'group_id',\n );\n }\n\n /** @return Collection<int, self> */\n public function getScopedGroups(): Collection\n {\n /** @var Collection<int, self> */\n return $this->getAttribute('scopedGroups');\n }\n\n public function playlistShares()\n {\n return $this->hasMany(Playlist\\Share::class);\n }\n\n /**\n * GETTERS AND SETTERS FOLLOW BELOW THIS LINE\n */\n public function getId(): int\n {\n return $this->getAttribute('id');\n }\n\n public function getUuid(): string\n {\n return $this->getAttribute('id_string');\n }\n\n public function getTeam(): Team\n {\n return $this->getAttribute('team');\n }\n\n public function hasPlaybook(): bool\n {\n return $this->getAttribute('playbook') !== null;\n }\n\n public function getPlaybook(): ?Playbook\n {\n return $this->getAttribute('playbook');\n }\n\n public function getPlaybookId(): int\n {\n return $this->getAttribute('playbook_id');\n }\n\n public function getTeamId(): int\n {\n return $this->getAttribute('team_id');\n }\n\n public function getTranscriptionModelLocale(): TranscriptionModelLocale\n {\n return $this->getAttribute('transcriptionModelLocale');\n }\n\n public function hasTranscriptionModelLocale(): bool\n {\n return $this->getAttribute('transcriptionModelLocale') !== null;\n }\n\n public function getName(): string\n {\n return $this->getAttribute('name');\n }\n\n /**\n * @return Collection<User>\n */\n public function getMembers(): Collection\n {\n return $this->getAttribute('members');\n }\n\n public function isScope(int $scope): bool\n {\n return $this->getScope() === $scope;\n }\n\n public function getScope(): int\n {\n return $this->getAttribute('scope');\n }\n\n public function setScope(int $scope): self\n {\n return $this->setAttribute('scope', $scope);\n }\n\n /** @return Collection<int, ScopeGroup> */\n public function getScopeGroups(): Collection\n {\n return $this->getAttribute('scopeGroups');\n }\n\n /** @return array<array<string, int|string|null>> */\n public function getDealRisksTypes(): array\n {\n return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);\n }\n\n public function getConferenceLeadOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_lead_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceLeadOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_lead_ownership_rule', $rule);\n }\n\n public function getConferenceAccountOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_account_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceAccountOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_account_ownership_rule', $rule);\n }\n\n public function getConferenceOpportunityOwnershipRule(): string\n {\n // Enforce a default value as this is sometimes null in ElasticSearch\n return $this->getAttribute('conference_opportunity_ownership_rule')\n ?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;\n }\n\n public function setConferenceOpportunityOwnershipRule(string $rule): self\n {\n return $this->setAttribute('conference_opportunity_ownership_rule', $rule);\n }\n\n public function getMembersActiveCount(): int\n {\n return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {\n return $this->membersActive()->count();\n });\n }\n\n public function isSame(self $group): bool\n {\n return $this->getId() === $group->getId();\n }\n\n public function doesExist(): bool\n {\n return $this->exists;\n }\n\n public function getSidekickRequired()\n {\n return $this->getAttribute('required_sidekick');\n }\n\n public function getPlaylistShares(): Collection\n {\n return $this->getAttribute('playlistShares');\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.40546876,"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.415625,"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.4285156,"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.4386719,"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.44882813,"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.46171874,"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.47460938,"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.5058594,"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.51875,"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.6917969,"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}]...
|
8912885280097805493
|
-4561315345140042051
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20698-fix-SF-activity- Project: faVsco.js, menu
JY-20698-fix-SF-activity-types-on-new-playbook, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
43
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Carbon\CarbonInterface;
use Illuminate\Database\Eloquent;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache;
use Jiminny\Component\DealRisks\DealRiskType;
use Jiminny\Component\Eloquent\Builder;
use Jiminny\Models\Contracts\GroupContract;
use Jiminny\Models\Scorecard\Scorecard;
use Jiminny\Traits\Enums;
use Jiminny\Traits\RequiresUUID;
use Locale;
/**
* Jiminny\Models\Group
*
* @property int $id
* @property mixed $uuid
* @property string $name
* @property string|null $slug
* @property int $team_id
* @property int $user_id
* @property int $scope
* @property int|null $playbook_id
* @property string $conference_record_announce
* @property string|null $conference_invite_template
* @property int|null $conference_timer_enabled
* @property string $conference_lead_ownership_rule
* @property string $conference_account_ownership_rule
* @property string $conference_opportunity_ownership_rule
* @property int|null $transcription_model_locale_id
* @property string $default_timezone
* @property string $default_language
* @property string $country_code
* @property int $required_sidekick
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read string $country_name
* @property-read string $id_string
* @property-read string $photo_url
* @property-read Collection<int, \Jiminny\Models\Invitation> $invitations
* @property-read int|null $invitations_count
* @property-read Collection<int, \Jiminny\Models\User> $members
* @property-read int|null $members_count
* @property-read Collection<int, \Jiminny\Models\User> $membersActive
* @property-read int|null $members_active_count
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Jiminny\Models\Playbook|null $playbook
* @property-read Collection<int, \Jiminny\Models\Playlist\Share> $playlistShares
* @property-read int|null $playlist_shares_count
* @property-read Collection<int, Scorecard> $scorecards
* @property-read int|null $scorecards_count
* @property-read \Jiminny\Models\Team $team
* @property-read \Jiminny\Models\TranscriptionModelLocale|null $transcriptionModelLocale
* @property-read \Jiminny\Models\User $user
*
* @method static Builder|Group chunkByIdDesc($count, callable $callback, $column = null, $alias = null)
* @method static \Database\Factories\GroupFactory factory(...$parameters)
* @method static Builder|Group groups()
* @method static Builder|Group idOrUuId($idOrUuid, bool $first = true)
* @method static Builder|Group newModelQuery()
* @method static Builder|Group newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Group onlyTrashed()
* @method static Builder|Group query()
* @method static Builder|Group uuid(string $uuid, bool $first = true)
* @method static Builder|Group whereColor($value)
* @method static Builder|Group whereConferenceAccountOwnershipRule($value)
* @method static Builder|Group whereConferenceInviteTemplate($value)
* @method static Builder|Group whereConferenceLeadOwnershipRule($value)
* @method static Builder|Group whereConferenceOpportunityOwnershipRule($value)
* @method static Builder|Group whereConferenceRecordAnnounce($value)
* @method static Builder|Group whereConferenceTimerEnabled($value)
* @method static Builder|Group whereCountryCode($value)
* @method static Builder|Group whereCreatedAt($value)
* @method static Builder|Group whereDefaultLanguage($value)
* @method static Builder|Group whereDefaultTimezone($value)
* @method static Builder|Group whereDeletedAt($value)
* @method static Builder|Group whereId($value)
* @method static Builder|Group whereName($value)
* @method static Builder|Group wherePlaybookId($value)
* @method static Builder|Group whereRequiredSidekick($value)
* @method static Builder|Group whereScope($value)
* @method static Builder|Group whereSlug($value)
* @method static Builder|Group whereTeamId($value)
* @method static Builder|Group whereTranscriptionModelLocaleId($value)
* @method static Builder|Group whereUpdatedAt($value)
* @method static Builder|Group whereUserId($value)
* @method static Builder|Group whereUuid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Group withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Group withoutTrashed()
*
* @mixin \Eloquent
*/
class Group extends Model implements GroupContract
{
use HasFactory;
use SoftDeletes;
use RequiresUUID;
use Notifiable;
use Enums;
public const SCOPE_ORGANIZATION = 0;
public const SCOPE_OWN_TEAM = 1;
public const SCOPE_TEAMS = 2;
public const SCOPE_INDIVIDUAL = 4;
public const CONFERENCE_OWNERSHIP_RULE_CALENDAR = 'calendar';
public const CONFERENCE_OWNERSHIP_RULE_CRM = 'crm';
protected $table = 'groups';
protected $fillable = [
'name',
'slug',
'team_id',
'user_id',
'scope',
'playbook_id',
'default_timezone',
'default_language',
'country_code',
'conference_lead_ownership_rule',
'conference_account_ownership_rule',
'conference_opportunity_ownership_rule',
'transcription_model_locale_id',
'required_sidekick',
];
protected $appends = [
'id_string',
];
protected $hidden = [
'uuid',
'id',
];
protected function casts(): array
{
return [
'scope' => 'integer',
];
}
public function getIndexableAttributes(): array
{
return [
'name' => $this->name,
'slug' => $this->slug,
'team_id' => $this->team_id,
'user_id' => $this->user_id,
'scope' => $this->scope,
'playbook_id' => $this->playbook_id,
'transcription_model_locale_id' => $this->transcription_model_locale_id,
'default_timezone' => $this->default_timezone,
'default_language' => $this->default_language,
'country_code' => $this->country_code,
'created_at' => $this->created_at instanceof CarbonInterface
? $this->created_at->toDateTimeString()
: null,
'updated_at' => $this->updated_at instanceof CarbonInterface
? $this->updated_at->toDateTimeString()
: null,
'deleted_at' => $this->deleted_at instanceof CarbonInterface
? $this->deleted_at->toDateTimeString()
: null,
'id_string' => $this->id_string,
];
}
/**
* Always uppercase the country code when we save it to the database.
*/
public function setCountryCodeAttribute($value)
{
$this->attributes['country_code'] = strtoupper($value);
}
public function getCountryNameAttribute(): string
{
return Locale::getDisplayRegion($this->country_code);
}
public function getCountryName(): string
{
/** @var string */
return $this->getAttribute('country_name');
}
public function getCountryCode(): string
{
/** @var string */
return $this->getAttribute('country_code');
}
public function getDefaultLanguage(): string
{
/** @var string */
return $this->getAttribute('default_language');
}
public function getDefaultTimezone(): string
{
/** @var string */
return $this->getAttribute('default_timezone');
}
public function getPhotoUrlAttribute(): string
{
return cdn('img/flags/1x1/' . strtolower($this->country_code) . '.svg');
}
public function getPhotoUrl(): string
{
/** @var string */
return $this->getAttribute('photo_url');
}
/**
* The channels the user receives notification broadcasts on.
*/
public function receivesBroadcastNotificationsOn(): string
{
return 'group.' . $this->id_string;
}
/** @return BelongsTo<User, self> */
public function user(): BelongsTo
{
/** @var BelongsTo<User, self> */
return $this->belongsTo(User::class);
}
public function getOwner(): User
{
/** @var User */
return $this->getAttribute('user');
}
public function members(): HasMany
{
return $this->hasMany(User::class);
}
public function membersActive(): HasMany
{
return $this->members()
->where(static fn (Eloquent\Builder $builder) => $builder->where('status', User::STATUS_ACTIVE));
}
public function playbook()
{
return $this->belongsTo(Playbook::class);
}
public function team()
{
return $this->belongsTo(Team::class);
}
public function scorecards(): HasMany
{
return $this->hasMany(Scorecard::class);
}
public function invitations()
{
return $this->hasMany(Invitation::class);
}
public function transcriptionModelLocale()
{
return $this->belongsTo(TranscriptionModelLocale::class);
}
/** @return HasMany<ScopeGroup> */
public function scopeGroups(): HasMany
{
return $this->hasMany(ScopeGroup::class);
}
/** @return BelongsToMany<self> */
public function scopedGroups(): BelongsToMany
{
return $this->belongsToMany(
self::class,
'scope_groups',
'scope_group_id',
'group_id',
);
}
/** @return Collection<int, self> */
public function getScopedGroups(): Collection
{
/** @var Collection<int, self> */
return $this->getAttribute('scopedGroups');
}
public function playlistShares()
{
return $this->hasMany(Playlist\Share::class);
}
/**
* GETTERS AND SETTERS FOLLOW BELOW THIS LINE
*/
public function getId(): int
{
return $this->getAttribute('id');
}
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
public function getTeam(): Team
{
return $this->getAttribute('team');
}
public function hasPlaybook(): bool
{
return $this->getAttribute('playbook') !== null;
}
public function getPlaybook(): ?Playbook
{
return $this->getAttribute('playbook');
}
public function getPlaybookId(): int
{
return $this->getAttribute('playbook_id');
}
public function getTeamId(): int
{
return $this->getAttribute('team_id');
}
public function getTranscriptionModelLocale(): TranscriptionModelLocale
{
return $this->getAttribute('transcriptionModelLocale');
}
public function hasTranscriptionModelLocale(): bool
{
return $this->getAttribute('transcriptionModelLocale') !== null;
}
public function getName(): string
{
return $this->getAttribute('name');
}
/**
* @return Collection<User>
*/
public function getMembers(): Collection
{
return $this->getAttribute('members');
}
public function isScope(int $scope): bool
{
return $this->getScope() === $scope;
}
public function getScope(): int
{
return $this->getAttribute('scope');
}
public function setScope(int $scope): self
{
return $this->setAttribute('scope', $scope);
}
/** @return Collection<int, ScopeGroup> */
public function getScopeGroups(): Collection
{
return $this->getAttribute('scopeGroups');
}
/** @return array<array<string, int|string|null>> */
public function getDealRisksTypes(): array
{
return DealRiskType::getDealRiskTypesForSettingsByGroupId($this->id);
}
public function getConferenceLeadOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_lead_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceLeadOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_lead_ownership_rule', $rule);
}
public function getConferenceAccountOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_account_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceAccountOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_account_ownership_rule', $rule);
}
public function getConferenceOpportunityOwnershipRule(): string
{
// Enforce a default value as this is sometimes null in ElasticSearch
return $this->getAttribute('conference_opportunity_ownership_rule')
?? Group::CONFERENCE_OWNERSHIP_RULE_CALENDAR;
}
public function setConferenceOpportunityOwnershipRule(string $rule): self
{
return $this->setAttribute('conference_opportunity_ownership_rule', $rule);
}
public function getMembersActiveCount(): int
{
return Cache::remember('groupMembersCount-' . $this->getUuid(), 60, function () {
return $this->membersActive()->count();
});
}
public function isSame(self $group): bool
{
return $this->getId() === $group->getId();
}
public function doesExist(): bool
{
return $this->exists;
}
public function getSidekickRequired()
{
return $this->getAttribute('required_sidekick');
}
public function getPlaylistShares(): Collection
{
return $this->getAttribute('playlistShares');
}
}
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:...
|
NULL
|
|
66883
|
1505
|
16
|
2026-04-21T15:12:55.709426+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776784375709_m1.jpg...
|
Firefox
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira — Work...
|
True
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedIssue=JY-18909...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Edit - Calendar - Engineering - Confluence
Edit - Calendar - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:...
|
[{"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":true},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"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":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Edit - Calendar - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit - Calendar - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8912390621173398591
|
-5316523273315801855
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Edit - Calendar - Engineering - Confluence
Edit - Calendar - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:...
|
66878
|
|
8194
|
161
|
1
|
2026-04-14T06:39:40.245361+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776148780245_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedlssue=JY-18909T Platform Sprint 1 Q2 - Platform *88O JIMINNYQ Search |C JY-20543 add AJ reports User pilo+ New Tab® For you• Recentw Starred09 AppsO, SpacesRecent2) Jiminny (New)1 D Platform TeamSpaces / Jiminny (New)Platform Team 88# JY-19240 / [ JY-18909# Summary& TimelineB Ba[Part2] Automated reports with Ask JiminnyQ Search boardREADY FOR DEV 1T ***Investigate and fix why exceedFontawesome package limitslu s= KanbanMAINTENANCEID Capture TeamReady for DevCD Enterprise Stability I...• JY-2056400 •000=II Processing TeamQ Service-Desk= More spaces= FiltersB Dashboards@ Operations2 Confluence8? Teams= Customise sidebarv DescriptionWe want to allow our users to automate the execution of their AJA prompts in order to save time and havethem ready when they need them.Create the reports:• admins and manages should be able to automate reports based on their Panorama prompts and savedsearcnes• the report should be generated in a pdf - use a lightly branded one this time - 8 https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7ZTI4xBsQ-1[Connect your Figma account• if the customer hasn't added a brand logo then use the Jiminny logo• once the report is ready it should be shared with the users over email - g https://www.figma.com/desig]n/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRY(R-1 Connect your Figma account• If no one is selected then the report will only be shared with the person who created it• ensure the reports has a proper structure and formatting - headings, bold etc. - take examples from thecxec keoorls• ensure the report has links to playback when examples are used• in the beginning of each report have a brief section for 'Data Srouce' and 'Objective' - take the Execsummary report for example• data source should cover what data has been analysed• objective should be a short paragraph that explains the goalShow the reports in Jiminny:• show the report in the AI Reports page with a special logo - Project Phoenix• only the creator of the reports and the users it is shared with should be able to see it in the list• users should be able to preview the report and download it• the creator of the report should be able to delete it - deleting it will delete only this specific pdf• 'Ask Jiminny Report' should be added as an option to the Report type filter so users can filter the list forsuch reports• when a report is shared with a user then show who shared it in the 'Shared' column - 8 https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4 [Connect your Figma accountv Subtasks...[ -66% DoneWorkPri...stor...Srarus[FE) Prepare HTML Template for PDF% JY-20570reportDONE V+ Create2In Dey v* Improve StoryDetailsAssigneeReporterDevelopmentneleasesComponentsSub-ProductLabelsStory pointestimareStoryPointsOrganisatioPriorityFix versionsSprintDaysINeeo WArarentCanny LinksQ. Steliyan GeorgievAssign to meGalya Dimitrova@ Open with VS Code• Orancnes32 commits1 pull request1 build failingo aays age(OPEN]A Production7 See all deploymentsPlatformAdd optionsAI) (BE) (FE) (QA)None13Ivone= MediumNonePlattorm Sorint 1 02Yes4 JY-19240 AJ ReportsOpen Canny Links> More fields Original estimate, Time trackinglibdA100% CDTue 14 Apr 9:39:39Ask RovoDeploymentsE Archived work itemsMore 4Complete sprintGroup: QueriesDEPLOY 8Fix downtime during to featureflag release(SUPPORT TICKETSDeployed** JY-20565Al Review - O1GROWTH - MAINTAIN OUR COMPETITI...Deployed# JY-199820..00=ino suen column Iyoe on enuuy"-Vent"PLATFORM STABILITYDeployedy JY-203840.5. •ee.=Missed deletion of stale dealsISKSREDUCE CHURNClosedX* JY-206191 . •00e=[Pipedrive] DI > status notlabeled, date data missingREDUCE CHURNDeployed[ JY-206140.5. 0000=OD/TI > Refresh the resultswnen une tiele s clearee wunthe 'x'FE IMPROVEMENTSDeployedIJY-Z05/"o.s eeee=Fix [HubSpot] Updatingassociations(REDUCE CHURN)Closed1HK JY-206212 ф•00=...
|
NULL
|
8912359069970424971
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedlssue=JY-18909T Platform Sprint 1 Q2 - Platform *88O JIMINNYQ Search |C JY-20543 add AJ reports User pilo+ New Tab® For you• Recentw Starred09 AppsO, SpacesRecent2) Jiminny (New)1 D Platform TeamSpaces / Jiminny (New)Platform Team 88# JY-19240 / [ JY-18909# Summary& TimelineB Ba[Part2] Automated reports with Ask JiminnyQ Search boardREADY FOR DEV 1T ***Investigate and fix why exceedFontawesome package limitslu s= KanbanMAINTENANCEID Capture TeamReady for DevCD Enterprise Stability I...• JY-2056400 •000=II Processing TeamQ Service-Desk= More spaces= FiltersB Dashboards@ Operations2 Confluence8? Teams= Customise sidebarv DescriptionWe want to allow our users to automate the execution of their AJA prompts in order to save time and havethem ready when they need them.Create the reports:• admins and manages should be able to automate reports based on their Panorama prompts and savedsearcnes• the report should be generated in a pdf - use a lightly branded one this time - 8 https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7ZTI4xBsQ-1[Connect your Figma account• if the customer hasn't added a brand logo then use the Jiminny logo• once the report is ready it should be shared with the users over email - g https://www.figma.com/desig]n/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRY(R-1 Connect your Figma account• If no one is selected then the report will only be shared with the person who created it• ensure the reports has a proper structure and formatting - headings, bold etc. - take examples from thecxec keoorls• ensure the report has links to playback when examples are used• in the beginning of each report have a brief section for 'Data Srouce' and 'Objective' - take the Execsummary report for example• data source should cover what data has been analysed• objective should be a short paragraph that explains the goalShow the reports in Jiminny:• show the report in the AI Reports page with a special logo - Project Phoenix• only the creator of the reports and the users it is shared with should be able to see it in the list• users should be able to preview the report and download it• the creator of the report should be able to delete it - deleting it will delete only this specific pdf• 'Ask Jiminny Report' should be added as an option to the Report type filter so users can filter the list forsuch reports• when a report is shared with a user then show who shared it in the 'Shared' column - 8 https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4 [Connect your Figma accountv Subtasks...[ -66% DoneWorkPri...stor...Srarus[FE) Prepare HTML Template for PDF% JY-20570reportDONE V+ Create2In Dey v* Improve StoryDetailsAssigneeReporterDevelopmentneleasesComponentsSub-ProductLabelsStory pointestimareStoryPointsOrganisatioPriorityFix versionsSprintDaysINeeo WArarentCanny LinksQ. Steliyan GeorgievAssign to meGalya Dimitrova@ Open with VS Code• Orancnes32 commits1 pull request1 build failingo aays age(OPEN]A Production7 See all deploymentsPlatformAdd optionsAI) (BE) (FE) (QA)None13Ivone= MediumNonePlattorm Sorint 1 02Yes4 JY-19240 AJ ReportsOpen Canny Links> More fields Original estimate, Time trackinglibdA100% CDTue 14 Apr 9:39:39Ask RovoDeploymentsE Archived work itemsMore 4Complete sprintGroup: QueriesDEPLOY 8Fix downtime during to featureflag release(SUPPORT TICKETSDeployed** JY-20565Al Review - O1GROWTH - MAINTAIN OUR COMPETITI...Deployed# JY-199820..00=ino suen column Iyoe on enuuy"-Vent"PLATFORM STABILITYDeployedy JY-203840.5. •ee.=Missed deletion of stale dealsISKSREDUCE CHURNClosedX* JY-206191 . •00e=[Pipedrive] DI > status notlabeled, date data missingREDUCE CHURNDeployed[ JY-206140.5. 0000=OD/TI > Refresh the resultswnen une tiele s clearee wunthe 'x'FE IMPROVEMENTSDeployedIJY-Z05/"o.s eeee=Fix [HubSpot] Updatingassociations(REDUCE CHURN)Closed1HK JY-206212 ф•00=...
|
NULL
|
|
11886
|
249
|
2
|
2026-04-14T10:26:46.122357+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776162406122_m2.jpg...
|
iTerm2
|
APP (docker)
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Sat Apr 11 12:38:35 on ttys007
Poetry Last login: Sat Apr 11 12:38:35 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5579/5579 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php (trailing_comma_in_multiline)
---------- begin diff ----------
--- /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
+++ /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
@@ -51,7 +51,7 @@
array_merge($requestParams, [
'limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT,
'page' => 1,
- 'sequence_number' => 1
+ 'sequence_number' => 1,
]),
$user->getTimezone()
);
----------- end diff -----------
Fixed 1 of 5579 files in 108.308 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is ahead of 'origin/JY-18909-automated-reports-ask-jiminny' by 2 commits.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/Webhook/ReportController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git push
Enumerating objects: 63, done.
Counting objects: 100% (55/55), done.
Delta compression using up to 8 threads
Compressing objects: 100% (28/28), done.
Writing objects: 100% (29/29), 3.77 KiB | 3.77 MiB/s, done.
Total 29 (delta 22), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (22/22), completed with 20 local objects.
remote:
remote: GitHub found 24 vulnerabilities on jiminny/app's default branch (2 critical, 12 high, 9 moderate, 1 low). To find out more, visit:
remote: [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
559/5589 [▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░] 10%
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (docker)
Close Tab
ec2-user@ip-10-30-93-249:~ (nc)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Unable to access screenpipe activity data (claude)
Close Tab
⌥⌘1
APP (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Sat Apr 11 12:38:35 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5579/5579 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php (trailing_comma_in_multiline)\n ---------- begin diff ----------\n--- /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n+++ /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n@@ -51,7 +51,7 @@\n array_merge($requestParams, [\n 'limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT,\n 'page' => 1,\n- 'sequence_number' => 1\n+ 'sequence_number' => 1,\n ]),\n $user->getTimezone()\n );\n\n ----------- end diff -----------\n\n\nFixed 1 of 5579 files in 108.308 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 185, done.\nremote: Counting objects: 100% (185/185), done.\nremote: Compressing objects: 100% (53/53), done.\nremote: Total 185 (delta 138), reused 176 (delta 130), pack-reused 0 (from 0)\nReceiving objects: 100% (185/185), 168.96 KiB | 1.05 MiB/s, done.\nResolving deltas: 100% (138/138), completed with 74 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20255-quick-search-show-duration-and-call-conference-type -> origin/JY-20255-quick-search-show-duration-and-call-conference-type\n * [new branch] JY-20297-reposition-the-old-acs-feature -> origin/JY-20297-reposition-the-old-acs-feature\n * [new branch] JY-20541-stale-records-pr-1 -> origin/JY-20541-stale-records-pr-1\nMerge made by the 'ort' strategy.\n .env.production | 2 +-\n .env.production-eu | 2 +-\n .github/workflows/secfix.yml | 10 +\n app/Component/Activity/ActivityProcessingStateManager.php | 4 +\n app/Component/ActivityAnalytics/Service/ActivityAnalyticsService.php | 68 +++----\n app/Component/ActivityAnalytics/Service/LocalTriggerMatcherService.php | 40 ++--\n app/Component/ActivityAnalytics/Service/QuestionService.php | 137 +++++++------\n app/Component/ActivityAnalytics/Service/SentenceBreaker.php | 110 -----------\n app/Component/ActivityAnalytics/VO/TopicTriggerMatch.php | 4 +-\n app/Component/AiAutomation/Actions/UpdateCrmFieldAction.php | 14 +-\n app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php | 92 +++++++++\n app/Component/Kiosk/Services/GetTranscriptionComparisonService.php | 61 +-----\n app/Component/LanguageDetection/Services/DetectLanguageService.php | 74 ++++++-\n app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php | 37 ++++\n app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php | 45 +++++\n app/Component/MediaPipeline/MediaPipelineOrchestrator.php | 2 +\n app/Component/MediaPipeline/MediaPipelineServiceProvider.php | 8 +\n app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php | 46 +++++\n app/Component/ParagraphBreaker/Services/ParagraphBuilder.php | 29 ++-\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 179 +++++++++++++++++\n app/Component/ParagraphBreaker/Services/UtteranceBuilder.php | 192 ++++++++----------\n app/Component/PlaybackPage/Snapshots/Listeners/GenerateSnapshotsListener.php | 6 +\n app/Component/Transcription/Formatter/TranscriptionFormatter.php | 11 +-\n app/Component/Transcription/Job/StartTranscriptDiarizationJob.php | 2 +-\n app/Component/Transcription/Job/TranscriptSegmentsCompileJob.php | 43 +++-\n app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php | 16 --\n app/Component/Transcription/Service/SearchService.php | 179 ++++++++++-------\n app/Component/Transcription/Service/TranscriptSegmentsService.php | 396 -------------------------------------\n app/Component/Transcription/Service/TranscriptionService.php | 142 ++------------\n app/Component/Transcription/Service/TranslationService.php | 59 ++----\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAI.php | 172 +---------------\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php | 48 +++++\n .../Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php | 111 +++++++++++\n app/Component/Transcription/VO/TranscriptSegmentTransformer.php | 37 ----\n app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php | 344 ++++++++++++++++++++++++--------\n app/Console/Commands/EngagementStats/JiminnyEngagementStatsExplainCommand.php | 76 ++++---\n app/Console/Commands/Mailboxes/InboxSync.php | 9 +-\n app/Http/Controllers/Auth/SocialController.php | 2 +-\n app/Jobs/Mailbox/SyncInbox.php | 2 +-\n app/Listeners/Activities/Coaching/Intercom/CreateActivitySummarizedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateCommentedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateManagerCoachedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreatePlayedEvent.php | 6 +\n app/Listeners/Activities/Conferences/Intercom/CreateHeldActivityEvent.php | 6 +\n app/Listeners/Activities/Crm/Summary/AbstractSummaryListener.php | 5 +-\n app/Listeners/Activities/Sms/Intercom/CreateSmsReceivedEvent.php | 6 +\n app/Models/Activity/TopicTrigger.php | 2 +-\n app/Models/Activity/Transcription.php | 29 +--\n app/Providers/EventServiceProvider.php | 1 -\n app/Providers/JiminnyServiceProvider.php | 23 ---\n app/Repositories/QuestionRepository.php | 32 +--\n app/Services/Activity/HubSpot/AuthenticatedHttpClient.php | 75 +------\n app/Services/Activity/HubSpot/RedirectUrlResolver.php | 91 +++++++++\n app/Services/Activity/HubSpot/Service.php | 17 +-\n app/Services/Activity/HubSpot/ZoomRecordingDetector.php | 27 +++\n app/Services/Activity/MeetingBotService.php | 5 +-\n app/Services/Calendar/GoogleCalendarService.php | 3 +\n app/Services/Calendar/OfficeCalendarService.php | 25 +--\n app/Services/Crm/Hubspot/SyncRelatedActivityManager.php | 9 +-\n composer.json | 1 -\n composer.lock | 51 +----\n front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 1 -\n front-end/src/components/Settings/Kiosk/ActivitiesSearch/ActivityTranscription.vue | 12 +-\n front-end/src/components/shared/Filters/InputText.vue | 2 +\n tests/Unit/Component/Activity/ActivityProcessingStateManagerTest.php | 17 +-\n tests/Unit/Component/ActivityAnalytics/Service/ActivityAnalyticsServiceTest.php | 137 ++++++++++++-\n tests/Unit/Component/ActivityAnalytics/Service/LocalTriggerMatcherServiceTest.php | 135 +++++++------\n tests/Unit/Component/ActivityAnalytics/Service/QuestionServiceTest.php | 610 ++++++++++++---------------------------------------------\n tests/Unit/Component/ActivityAnalytics/VO/TopicTriggerMatchTest.php | 15 ++\n tests/Unit/Component/AiAutomation/Actions/UpdateCrmFieldActionTest.php | 66 +++++++\n tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php | 282 ++++++++++++++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 +-\n tests/Unit/Component/Kiosk/Services/GetTranscriptionComparisonServiceTest.php | 79 +++-----\n tests/Unit/Component/LanguageDetection/Services/DetectLanguageServiceTest.php | 132 +++++++++----\n tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php | 97 +++++++++\n tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php | 100 ++++++++++\n tests/Unit/Component/MediaPipeline/Services/GetMediaPipelineStatesServiceTest.php | 6 +\n tests/Unit/Component/ParagraphBreaker/Services/ParagraphBuilderTest.php | 53 ++---\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 547 +++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/UtteranceBuilderTest.php | 73 ++++---\n tests/Unit/Component/Transcription/Formatter/TranscriptionFormatterTest.php | 8 +-\n tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php | 101 ----------\n tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php | 220 +++++++++++++++++++++\n tests/Unit/Component/Transcription/Service/SearchServiceTest.php | 193 ++++++++++++++++++\n tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php | 465 -------------------------------------------\n tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 61 ++----\n tests/Unit/Component/Transcription/Service/TranslationServiceTest.php | 31 +--\n tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAITest.php | 355 ++-------------------------------\n .../TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php | 220 +++++++++++++++++++++\n tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php | 68 -------\n tests/Unit/Jobs/Mailbox/SyncInboxTest.php | 2 +-\n tests/Unit/Services/Activity/HubSpot/AuthenticatedHttpClientTest.php | 207 ++------------------\n tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php | 184 +++++++++++++++++\n tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 205 ++++++++++++++++++-\n tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php | 196 ++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/SyncRelatedActivityManagerTest.php | 105 ++++++++++\n 96 files changed, 4708 insertions(+), 3522 deletions(-)\n create mode 100644 .github/workflows/secfix.yml\n delete mode 100644 app/Component/ActivityAnalytics/Service/SentenceBreaker.php\n create mode 100644 app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php\n create mode 100644 app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php\n create mode 100644 app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php\n create mode 100644 app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php\n create mode 100644 app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php\n delete mode 100644 app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php\n delete mode 100644 app/Component/Transcription/Service/TranscriptSegmentsService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php\n delete mode 100644 app/Component/Transcription/VO/TranscriptSegmentTransformer.php\n create mode 100644 app/Services/Activity/HubSpot/RedirectUrlResolver.php\n create mode 100644 app/Services/Activity/HubSpot/ZoomRecordingDetector.php\n create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php\n create mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php\n create mode 100644 tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php\n create mode 100644 tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php\n create mode 100644 tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is ahead of 'origin/JY-18909-automated-reports-ask-jiminny' by 2 commits.\n (use \"git push\" to publish your local commits)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/Webhook/ReportController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git push\nEnumerating objects: 63, done.\nCounting objects: 100% (55/55), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (28/28), done.\nWriting objects: 100% (29/29), 3.77 KiB | 3.77 MiB/s, done.\nTotal 29 (delta 22), reused 0 (delta 0), pack-reused 0\nremote: Resolving deltas: 100% (22/22), completed with 20 local objects.\nremote: \nremote: GitHub found 24 vulnerabilities on jiminny/app's default branch (2 critical, 12 high, 9 moderate, 1 low). To find out more, visit:\nremote: https://github.com/jiminny/app/security/dependabot\nremote: \nTo github.com:jiminny/app.git\n e5eb1c8958..42e3e90859 JY-18909-automated-reports-ask-jiminny -> JY-18909-automated-reports-ask-jiminny\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 559/5589 [▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░] 10%","depth":4,"value":"Last login: Sat Apr 11 12:38:35 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5579/5579 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php (trailing_comma_in_multiline)\n ---------- begin diff ----------\n--- /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n+++ /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n@@ -51,7 +51,7 @@\n array_merge($requestParams, [\n 'limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT,\n 'page' => 1,\n- 'sequence_number' => 1\n+ 'sequence_number' => 1,\n ]),\n $user->getTimezone()\n );\n\n ----------- end diff -----------\n\n\nFixed 1 of 5579 files in 108.308 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 185, done.\nremote: Counting objects: 100% (185/185), done.\nremote: Compressing objects: 100% (53/53), done.\nremote: Total 185 (delta 138), reused 176 (delta 130), pack-reused 0 (from 0)\nReceiving objects: 100% (185/185), 168.96 KiB | 1.05 MiB/s, done.\nResolving deltas: 100% (138/138), completed with 74 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20255-quick-search-show-duration-and-call-conference-type -> origin/JY-20255-quick-search-show-duration-and-call-conference-type\n * [new branch] JY-20297-reposition-the-old-acs-feature -> origin/JY-20297-reposition-the-old-acs-feature\n * [new branch] JY-20541-stale-records-pr-1 -> origin/JY-20541-stale-records-pr-1\nMerge made by the 'ort' strategy.\n .env.production | 2 +-\n .env.production-eu | 2 +-\n .github/workflows/secfix.yml | 10 +\n app/Component/Activity/ActivityProcessingStateManager.php | 4 +\n app/Component/ActivityAnalytics/Service/ActivityAnalyticsService.php | 68 +++----\n app/Component/ActivityAnalytics/Service/LocalTriggerMatcherService.php | 40 ++--\n app/Component/ActivityAnalytics/Service/QuestionService.php | 137 +++++++------\n app/Component/ActivityAnalytics/Service/SentenceBreaker.php | 110 -----------\n app/Component/ActivityAnalytics/VO/TopicTriggerMatch.php | 4 +-\n app/Component/AiAutomation/Actions/UpdateCrmFieldAction.php | 14 +-\n app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php | 92 +++++++++\n app/Component/Kiosk/Services/GetTranscriptionComparisonService.php | 61 +-----\n app/Component/LanguageDetection/Services/DetectLanguageService.php | 74 ++++++-\n app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php | 37 ++++\n app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php | 45 +++++\n app/Component/MediaPipeline/MediaPipelineOrchestrator.php | 2 +\n app/Component/MediaPipeline/MediaPipelineServiceProvider.php | 8 +\n app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php | 46 +++++\n app/Component/ParagraphBreaker/Services/ParagraphBuilder.php | 29 ++-\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 179 +++++++++++++++++\n app/Component/ParagraphBreaker/Services/UtteranceBuilder.php | 192 ++++++++----------\n app/Component/PlaybackPage/Snapshots/Listeners/GenerateSnapshotsListener.php | 6 +\n app/Component/Transcription/Formatter/TranscriptionFormatter.php | 11 +-\n app/Component/Transcription/Job/StartTranscriptDiarizationJob.php | 2 +-\n app/Component/Transcription/Job/TranscriptSegmentsCompileJob.php | 43 +++-\n app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php | 16 --\n app/Component/Transcription/Service/SearchService.php | 179 ++++++++++-------\n app/Component/Transcription/Service/TranscriptSegmentsService.php | 396 -------------------------------------\n app/Component/Transcription/Service/TranscriptionService.php | 142 ++------------\n app/Component/Transcription/Service/TranslationService.php | 59 ++----\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAI.php | 172 +---------------\n app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php | 48 +++++\n .../Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php | 111 +++++++++++\n app/Component/Transcription/VO/TranscriptSegmentTransformer.php | 37 ----\n app/Console/Commands/Crm/Hubspot/RestoreDealAssociationsCommand.php | 344 ++++++++++++++++++++++++--------\n app/Console/Commands/EngagementStats/JiminnyEngagementStatsExplainCommand.php | 76 ++++---\n app/Console/Commands/Mailboxes/InboxSync.php | 9 +-\n app/Http/Controllers/Auth/SocialController.php | 2 +-\n app/Jobs/Mailbox/SyncInbox.php | 2 +-\n app/Listeners/Activities/Coaching/Intercom/CreateActivitySummarizedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateCommentedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreateManagerCoachedEvent.php | 6 +\n app/Listeners/Activities/Coaching/Intercom/CreatePlayedEvent.php | 6 +\n app/Listeners/Activities/Conferences/Intercom/CreateHeldActivityEvent.php | 6 +\n app/Listeners/Activities/Crm/Summary/AbstractSummaryListener.php | 5 +-\n app/Listeners/Activities/Sms/Intercom/CreateSmsReceivedEvent.php | 6 +\n app/Models/Activity/TopicTrigger.php | 2 +-\n app/Models/Activity/Transcription.php | 29 +--\n app/Providers/EventServiceProvider.php | 1 -\n app/Providers/JiminnyServiceProvider.php | 23 ---\n app/Repositories/QuestionRepository.php | 32 +--\n app/Services/Activity/HubSpot/AuthenticatedHttpClient.php | 75 +------\n app/Services/Activity/HubSpot/RedirectUrlResolver.php | 91 +++++++++\n app/Services/Activity/HubSpot/Service.php | 17 +-\n app/Services/Activity/HubSpot/ZoomRecordingDetector.php | 27 +++\n app/Services/Activity/MeetingBotService.php | 5 +-\n app/Services/Calendar/GoogleCalendarService.php | 3 +\n app/Services/Calendar/OfficeCalendarService.php | 25 +--\n app/Services/Crm/Hubspot/SyncRelatedActivityManager.php | 9 +-\n composer.json | 1 -\n composer.lock | 51 +----\n front-end/src/components/DealInsights/Modals/AskAnythingModal.vue | 1 -\n front-end/src/components/Settings/Kiosk/ActivitiesSearch/ActivityTranscription.vue | 12 +-\n front-end/src/components/shared/Filters/InputText.vue | 2 +\n tests/Unit/Component/Activity/ActivityProcessingStateManagerTest.php | 17 +-\n tests/Unit/Component/ActivityAnalytics/Service/ActivityAnalyticsServiceTest.php | 137 ++++++++++++-\n tests/Unit/Component/ActivityAnalytics/Service/LocalTriggerMatcherServiceTest.php | 135 +++++++------\n tests/Unit/Component/ActivityAnalytics/Service/QuestionServiceTest.php | 610 ++++++++++++---------------------------------------------\n tests/Unit/Component/ActivityAnalytics/VO/TopicTriggerMatchTest.php | 15 ++\n tests/Unit/Component/AiAutomation/Actions/UpdateCrmFieldActionTest.php | 66 +++++++\n tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php | 282 ++++++++++++++++++++++++++\n tests/Unit/Component/ES/UpdateProcessManagerTest.php | 2 +-\n tests/Unit/Component/Kiosk/Services/GetTranscriptionComparisonServiceTest.php | 79 +++-----\n tests/Unit/Component/LanguageDetection/Services/DetectLanguageServiceTest.php | 132 +++++++++----\n tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php | 97 +++++++++\n tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php | 100 ++++++++++\n tests/Unit/Component/MediaPipeline/Services/GetMediaPipelineStatesServiceTest.php | 6 +\n tests/Unit/Component/ParagraphBreaker/Services/ParagraphBuilderTest.php | 53 ++---\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 547 +++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/UtteranceBuilderTest.php | 73 ++++---\n tests/Unit/Component/Transcription/Formatter/TranscriptionFormatterTest.php | 8 +-\n tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php | 101 ----------\n tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php | 220 +++++++++++++++++++++\n tests/Unit/Component/Transcription/Service/SearchServiceTest.php | 193 ++++++++++++++++++\n tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php | 465 -------------------------------------------\n tests/Unit/Component/Transcription/Service/TranscriptionServiceTest.php | 61 ++----\n tests/Unit/Component/Transcription/Service/TranslationServiceTest.php | 31 +--\n tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/AssemblyAITest.php | 355 ++-------------------------------\n .../TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php | 220 +++++++++++++++++++++\n tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php | 68 -------\n tests/Unit/Jobs/Mailbox/SyncInboxTest.php | 2 +-\n tests/Unit/Services/Activity/HubSpot/AuthenticatedHttpClientTest.php | 207 ++------------------\n tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php | 184 +++++++++++++++++\n tests/Unit/Services/Activity/HubSpot/ServiceTest.php | 205 ++++++++++++++++++-\n tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php | 196 ++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/SyncRelatedActivityManagerTest.php | 105 ++++++++++\n 96 files changed, 4708 insertions(+), 3522 deletions(-)\n create mode 100644 .github/workflows/secfix.yml\n delete mode 100644 app/Component/ActivityAnalytics/Service/SentenceBreaker.php\n create mode 100644 app/Component/AiAutomation/Services/CrmFieldContentTrimmer.php\n create mode 100644 app/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandler.php\n create mode 100644 app/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandler.php\n create mode 100644 app/Component/ParagraphBreaker/DTOs/TranscriptParagraph.php\n create mode 100644 app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php\n delete mode 100644 app/Component/Transcription/Listener/TranscriptSegmentsCompileListener.php\n delete mode 100644 app/Component/Transcription/Service/TranscriptSegmentsService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/FetchTranscriptService.php\n create mode 100644 app/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionService.php\n delete mode 100644 app/Component/Transcription/VO/TranscriptSegmentTransformer.php\n create mode 100644 app/Services/Activity/HubSpot/RedirectUrlResolver.php\n create mode 100644 app/Services/Activity/HubSpot/ZoomRecordingDetector.php\n create mode 100644 tests/Unit/Component/AiAutomation/Services/CrmFieldContentTrimmerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/LanguageDetectionPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/MediaPipeline/Handlers/TranscriptionParagraphsPipeHandlerTest.php\n create mode 100644 tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentCompileJobTest.php\n create mode 100644 tests/Unit/Component/Transcription/Job/TranscriptSegmentsCompileJobTest.php\n delete mode 100644 tests/Unit/Component/Transcription/Service/TranscriptSegmentsServiceTest.php\n create mode 100644 tests/Unit/Component/Transcription/TranscriptionProcessor/AssemblyAI/Services/SubmitAudioFileForLanguageDetectionServiceTest.php\n delete mode 100644 tests/Unit/Component/Transcription/VO/TranscriptSegmentTransformerTest.php\n create mode 100644 tests/Unit/Services/Activity/HubSpot/RedirectUrlResolverTest.php\n create mode 100644 tests/Unit/Services/Activity/MeetingBotServiceOnSharingDataTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is ahead of 'origin/JY-18909-automated-reports-ask-jiminny' by 2 commits.\n (use \"git push\" to publish your local commits)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/Webhook/ReportController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git push\nEnumerating objects: 63, done.\nCounting objects: 100% (55/55), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (28/28), done.\nWriting objects: 100% (29/29), 3.77 KiB | 3.77 MiB/s, done.\nTotal 29 (delta 22), reused 0 (delta 0), pack-reused 0\nremote: Resolving deltas: 100% (22/22), completed with 20 local objects.\nremote: \nremote: GitHub found 24 vulnerabilities on jiminny/app's default branch (2 critical, 12 high, 9 moderate, 1 low). To find out more, visit:\nremote: https://github.com/jiminny/app/security/dependabot\nremote: \nTo github.com:jiminny/app.git\n e5eb1c8958..42e3e90859 JY-18909-automated-reports-ask-jiminny -> JY-18909-automated-reports-ask-jiminny\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 559/5589 [▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░] 10%","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.23320313,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.23554687,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.30234376,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3046875,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (docker)","depth":2,"bounds":{"left":0.37148437,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3738281,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-93-249:~ (nc)","depth":2,"bounds":{"left":0.440625,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.44296876,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5097656,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5121094,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.57890624,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.58125,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.64804685,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6503906,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Unable to access screenpipe activity data (claude)","depth":2,"bounds":{"left":0.7171875,"top":1.0,"width":0.06914063,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.71953124,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7703125,"top":1.0,"width":0.021875,"height":-0.02013886},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"APP (docker)","depth":1,"bounds":{"left":0.496875,"top":1.0,"width":0.03515625,"height":-0.020833373},"role_description":"text"}]...
|
8912243691270876165
|
557314106390756060
|
idle
|
accessibility
|
NULL
|
Last login: Sat Apr 11 12:38:35 on ttys007
Poetry Last login: Sat Apr 11 12:38:35 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5579/5579 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php (trailing_comma_in_multiline)
---------- begin diff ----------
--- /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
+++ /home/jiminny/app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
@@ -51,7 +51,7 @@
array_merge($requestParams, [
'limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT,
'page' => 1,
- 'sequence_number' => 1
+ 'sequence_number' => 1,
]),
$user->getTimezone()
);
----------- end diff -----------
Fixed 1 of 5579 files in 108.308 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is ahead of 'origin/JY-18909-automated-reports-ask-jiminny' by 2 commits.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/Webhook/ReportController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git push
Enumerating objects: 63, done.
Counting objects: 100% (55/55), done.
Delta compression using up to 8 threads
Compressing objects: 100% (28/28), done.
Writing objects: 100% (29/29), 3.77 KiB | 3.77 MiB/s, done.
Total 29 (delta 22), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (22/22), completed with 20 local objects.
remote:
remote: GitHub found 24 vulnerabilities on jiminny/app's default branch (2 critical, 12 high, 9 moderate, 1 low). To find out more, visit:
remote: [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
559/5589 [▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░] 10%
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (docker)
Close Tab
ec2-user@ip-10-30-93-249:~ (nc)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Unable to access screenpipe activity data (claude)
Close Tab
⌥⌘1
APP (docker)...
|
11884
|
|
59996
|
1294
|
19
|
2026-04-20T15:19:44.871059+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776698384871_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanFile EditViewWindowHelp100% C8Mon 20 Apr 18 PostmanFile EditViewWindowHelp100% C8Mon 20 Apr 18:19:44DOCKER381DEV (-zsh)$82ec2-user@ip-10-30-159-186:~APP (-zsh)83screenpipe"• ₴4ec2-user@ip-10-30-159-186:~ (nc)*5[2026-04-20 15:17:08]production.INFO: [SocialAccountService] Fetchingtoken {"socialAccountId":45478, "provider": "salesforce"}212", "trace_id" : "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"'}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1[2026-04-20 15:17:08] production.INF0: [SocialAccountService] Token retrieved {"socialAccountId":45478, "provider":"salesforce"}1212", "trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a[2026-04-20 15:17:08] production.INF0: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212" /,"trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08]production.INFO:[EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08]production.INFO:[EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212""trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [Crm0wnerResolver] Integration owner matched as CRM Owner {"crm_provider": "salesforce", "crm_owner":16067, "team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [SyncTeamMetadata] Begin syncing metadata {"provider":"Salesforce", "team_name": "Les Mills","team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INF0: Syncing organization... {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-abc8-1c319cb13da9"}[2026-04-20 15:17:08] production.INF0: [Salesforce] Sending request {"endpoint":"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName, OrganizationType,IsSandbox GET", "team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-abc8-1c319cb13da9"}[2026-04-20 15:17:08] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist {"url":"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType, IsSandbox","data" : {"headers" : {"Authorization" : "Bearer 00D90000000fUsz!AQEAQKRIt62MP50BhF0_SPMdUfRNQaX22hSEy4ww1vkWOy7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d"}},"response":{"GuzzleHttp\\Psr7\|Stream": "[{\"errorCode)": \"NOT_FOUND\", \"message)":\"The requested resource doesnot exist\"3]"}, "fields": []} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:09] production.ERROR: The requested resource does not exist {"exception":"[object] (Jiminny\\Exceptions\\HttpNotFoundException(code: 404): The requested resourcedoes not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php: 573)[stacktrace]#0 /home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\Services|\Crm\\Salesforce\\Client->request('GET',https://lesmill...', Array)#1/home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny|\Services|\Crm\\Salesforcel\Client->requestWithAutomaticReauthorize('GET',https://lesmill...', Array)#2 /home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny\(Services\\Crm\\Salesforce\\Client->get(https://lesmill...'?#3#4/home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny|\Services|\Crm\\Salesforcel|Service->getRecord('Organization', '00D90000000fUsz...', Array)/home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\\Services\\Crm\\Salesforce\\Service->syncOrganizationO#5/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny|\Jobs\\Crm\\SyncTeamMetadata->handle(Object(Jiminny\\Services\\ResolveTeamCrmConnection), Object(Jiminny\(Repositories\\TeamRepository), Object(Illuminate\\Log\\LogManager))...
|
NULL
|
8911796125372558369
|
NULL
|
click
|
ocr
|
NULL
|
PostmanFile EditViewWindowHelp100% C8Mon 20 Apr 18 PostmanFile EditViewWindowHelp100% C8Mon 20 Apr 18:19:44DOCKER381DEV (-zsh)$82ec2-user@ip-10-30-159-186:~APP (-zsh)83screenpipe"• ₴4ec2-user@ip-10-30-159-186:~ (nc)*5[2026-04-20 15:17:08]production.INFO: [SocialAccountService] Fetchingtoken {"socialAccountId":45478, "provider": "salesforce"}212", "trace_id" : "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"'}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1[2026-04-20 15:17:08] production.INF0: [SocialAccountService] Token retrieved {"socialAccountId":45478, "provider":"salesforce"}1212", "trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a[2026-04-20 15:17:08] production.INF0: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212" /,"trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08]production.INFO:[EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08]production.INFO:[EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212""trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [Crm0wnerResolver] Integration owner matched as CRM Owner {"crm_provider": "salesforce", "crm_owner":16067, "team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [SyncTeamMetadata] Begin syncing metadata {"provider":"Salesforce", "team_name": "Les Mills","team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INF0: Syncing organization... {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-abc8-1c319cb13da9"}[2026-04-20 15:17:08] production.INF0: [Salesforce] Sending request {"endpoint":"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName, OrganizationType,IsSandbox GET", "team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-abc8-1c319cb13da9"}[2026-04-20 15:17:08] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist {"url":"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType, IsSandbox","data" : {"headers" : {"Authorization" : "Bearer 00D90000000fUsz!AQEAQKRIt62MP50BhF0_SPMdUfRNQaX22hSEy4ww1vkWOy7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d"}},"response":{"GuzzleHttp\\Psr7\|Stream": "[{\"errorCode)": \"NOT_FOUND\", \"message)":\"The requested resource doesnot exist\"3]"}, "fields": []} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:09] production.ERROR: The requested resource does not exist {"exception":"[object] (Jiminny\\Exceptions\\HttpNotFoundException(code: 404): The requested resourcedoes not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php: 573)[stacktrace]#0 /home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\Services|\Crm\\Salesforce\\Client->request('GET',https://lesmill...', Array)#1/home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny|\Services|\Crm\\Salesforcel\Client->requestWithAutomaticReauthorize('GET',https://lesmill...', Array)#2 /home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny\(Services\\Crm\\Salesforce\\Client->get(https://lesmill...'?#3#4/home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny|\Services|\Crm\\Salesforcel|Service->getRecord('Organization', '00D90000000fUsz...', Array)/home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\\Services\\Crm\\Salesforce\\Service->syncOrganizationO#5/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny|\Jobs\\Crm\\SyncTeamMetadata->handle(Object(Jiminny\\Services\\ResolveTeamCrmConnection), Object(Jiminny\(Repositories\\TeamRepository), Object(Illuminate\\Log\\LogManager))...
|
NULL
|
|
25283
|
543
|
12
|
2026-04-15T12:47:53.796294+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776257273796_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpED→CSearch Ji +SlackFileEditViewGoHistoryWindowHelpED→CSearch Jiminny IncHomeJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...# releases8 22Messages© FilesBookmarks+Tjiminny/appAddod hu GitHubToday ~CircleCl APP2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobNew..•GitHub APP 3:28 PM7 new commits pushed to master by nikolay-yankovMoreDirect messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow morejiminny/app| Added by GitHubii: Apps+ToastMessage #releasesJira Cloud+Aa...Sprint Review - in 13 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentCode Helper (Renderer)Mem...2,04 GB1,16 GB962,5 MB956,1 MB836,7 MB796,8 MB793,1 MB547,0 MB544,3 MB538,3 MB516,0 MB468,8 MB447,8 MB438,3 MB408,1 MB402,7 MB387,2 MB386,1 MB372,3 MB346,6 MB330,4 MB326,1 MB302,3 MB287,9 MB271,4 MB235,4 MB223,7 MB211,6 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 15:47:53CPUMemoryDiskThreads38212674842524262911152325242626232215211315278272819EnergyPorts59819 7771257301 20012520 015126250241167186119122123124126119119172328722161231 833125128199PID93892407429748014146644203084236713146738019938994186335480358313527643652430163689848173265481148509106051935833487856138482988534016,00 GB14,20 GB<1,75 GB2,99 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,02 GB2,87 GB6,75 GB...
|
NULL
|
8911454825923312955
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpED→CSearch Ji +SlackFileEditViewGoHistoryWindowHelpED→CSearch Jiminny IncHomeJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...# releases8 22Messages© FilesBookmarks+Tjiminny/appAddod hu GitHubToday ~CircleCl APP2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobNew..•GitHub APP 3:28 PM7 new commits pushed to master by nikolay-yankovMoreDirect messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow morejiminny/app| Added by GitHubii: Apps+ToastMessage #releasesJira Cloud+Aa...Sprint Review - in 13 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentCode Helper (Renderer)Mem...2,04 GB1,16 GB962,5 MB956,1 MB836,7 MB796,8 MB793,1 MB547,0 MB544,3 MB538,3 MB516,0 MB468,8 MB447,8 MB438,3 MB408,1 MB402,7 MB387,2 MB386,1 MB372,3 MB346,6 MB330,4 MB326,1 MB302,3 MB287,9 MB271,4 MB235,4 MB223,7 MB211,6 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 15:47:53CPUMemoryDiskThreads38212674842524262911152325242626232215211315278272819EnergyPorts59819 7771257301 20012520 015126250241167186119122123124126119119172328722161231 833125128199PID93892407429748014146644203084236713146738019938994186335480358313527643652430163689848173265481148509106051935833487856138482988534016,00 GB14,20 GB<1,75 GB2,99 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,02 GB2,87 GB6,75 GB...
|
25280
|
|
32729
|
662
|
31
|
2026-04-16T07:18:31.133705+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776323911133_m1.jpg...
|
Firefox
|
Sign in to continue to Gmail — Work
|
True
|
accounts.google.com/v3/signin/identifier?authuser= accounts.google.com/v3/signin/identifier?authuser=0&continue=https%3A%2F%2Fmail.google.com%2Fmail&ec=GAlAFw&hl=en&service=mail&flowName=GlifWebSignIn&flowEntry=AddSession&dsh=S959363990%3A1776323854760180...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sandbox: Verify your identity in Salesforce - [EMAIL] - Jiminny Mail
Sign in to continue to Gmail
Sign in to continue to Gmail
Close tab
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
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in
Sign in
to continue to Gmail
[EMAIL]
Forgot email?
Not your computer? Use a Private Window to sign in.
Learn more about using Guest mode
Learn more about using Guest mode
Next
Next
Create account
Create account
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
[{"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-6787] Issue with reconnecting Zoho - 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":"Sandbox: Verify your identity in Salesforce - 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":"Sign in to continue to Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Sign in to continue to Gmail","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":"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":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Sign in","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sign in","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to Gmail","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"integration-account@jiminny.com","depth":14,"value":"integration-account@jiminny.com","help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Forgot email?","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Not your computer? Use a Private Window to sign in.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more about using Guest mode","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more about using Guest mode","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Next","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Next","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create account","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create account","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United States)","depth":10,"value":"English (United States)","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United States)","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8911123136521275738
|
-5036642003927744277
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sandbox: Verify your identity in Salesforce - [EMAIL] - Jiminny Mail
Sign in to continue to Gmail
Sign in to continue to Gmail
Close tab
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
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in
Sign in
to continue to Gmail
[EMAIL]
Forgot email?
Not your computer? Use a Private Window to sign in.
Learn more about using Guest mode
Learn more about using Guest mode
Next
Next
Create account
Create account
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
32727
|
|
32730
|
663
|
45
|
2026-04-16T07:18:31.157131+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776323911157_m2.jpg...
|
Firefox
|
Sign in to continue to Gmail — Work
|
True
|
accounts.google.com/v3/signin/identifier?authuser= accounts.google.com/v3/signin/identifier?authuser=0&continue=https%3A%2F%2Fmail.google.com%2Fmail&ec=GAlAFw&hl=en&service=mail&flowName=GlifWebSignIn&flowEntry=AddSession&dsh=S959363990%3A1776323854760180...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sandbox: Verify your identity in Salesforce - [EMAIL] - Jiminny Mail
Sign in to continue to Gmail
Sign in to continue to Gmail
Close tab
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
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in
Sign in
to continue to Gmail
[EMAIL]
Forgot email?
Not your computer? Use a Private Window to sign in.
Learn more about using Guest mode
Learn more about using Guest mode
Next
Next
Create account
Create account
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
[{"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-6787] Issue with reconnecting Zoho - 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":"Sandbox: Verify your identity in Salesforce - 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":"Sign in to continue to Gmail","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Sign in to continue to Gmail","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.05625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.11736111,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","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":"Jiminny x Shiji - Reconnecting the platform","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"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.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":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"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.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":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.20625,"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.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":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"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.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":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"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.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":"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.29166666,"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.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":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"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.33888888,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.34861112,"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.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":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.37708333,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.39722222,"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":11,"bounds":{"left":0.3582031,"top":0.43611112,"width":0.1796875,"height":0.036111113},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sign in","depth":12,"bounds":{"left":0.3582031,"top":0.43472221,"width":0.0515625,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to Gmail","depth":12,"bounds":{"left":0.3582031,"top":0.48402777,"width":0.056640625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"integration-account@jiminny.com","depth":14,"bounds":{"left":0.5570313,"top":0.44236112,"width":0.17890625,"height":0.0375},"value":"integration-account@jiminny.com","help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Forgot email?","depth":15,"bounds":{"left":0.5566406,"top":0.48680556,"width":0.0359375,"height":0.013194445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Not your computer? Use a Private Window to sign in.","depth":12,"bounds":{"left":0.5566406,"top":0.53125,"width":0.13046876,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more about using Guest mode","depth":12,"bounds":{"left":0.5566406,"top":0.53125,"width":0.17773438,"height":0.027083334},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more about using Guest mode","depth":13,"bounds":{"left":0.5566406,"top":0.53125,"width":0.17773438,"height":0.027083334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Next","depth":12,"bounds":{"left":0.7054688,"top":0.5875,"width":0.030859375,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Next","depth":14,"bounds":{"left":0.71484375,"top":0.59444445,"width":0.012109375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create account","depth":12,"bounds":{"left":0.6441406,"top":0.5875,"width":0.051953126,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create account","depth":14,"bounds":{"left":0.6503906,"top":0.59444445,"width":0.039453126,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United States)","depth":10,"bounds":{"left":0.34414062,"top":0.6513889,"width":0.072265625,"height":0.022222223},"value":"English (United States)","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United States)","depth":12,"bounds":{"left":0.3503906,"top":0.65694445,"width":0.048828125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"bounds":{"left":0.67578125,"top":0.6458333,"width":0.019140625,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"bounds":{"left":0.68046874,"top":0.65694445,"width":0.009765625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"bounds":{"left":0.69804686,"top":0.6458333,"width":0.025,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"bounds":{"left":0.70273435,"top":0.65694445,"width":0.015625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"bounds":{"left":0.72617185,"top":0.6458333,"width":0.02265625,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"bounds":{"left":0.7308594,"top":0.65694445,"width":0.01328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8911123136521275738
|
-5036642003927744277
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sandbox: Verify your identity in Salesforce - [EMAIL] - Jiminny Mail
Sign in to continue to Gmail
Sign in to continue to Gmail
Close tab
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
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in
Sign in
to continue to Gmail
[EMAIL]
Forgot email?
Not your computer? Use a Private Window to sign in.
Learn more about using Guest mode
Learn more about using Guest mode
Next
Next
Create account
Create account
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
32728
|
|
13544
|
295
|
12
|
2026-04-14T12:31:22.027869+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776169882027_m2.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (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
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Toast
Jira Cloud
Google Calendar
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 1:47:44 PM
1:47 PM
ок готово, оправх го, и тоз път мина успешно
1 reaction, react with eyes emoji
1
Add reaction…
Nikolay Yankov
Today at 1:49:38 PM
1:49 PM
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
12 replies
Last reply today at 3:31 PM
View thread
Nikolay Yankov
Today at 1:49:55 PM
1:49 PM
TimeZone на моя user е Sofia
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
Today at 1:50:33 PM
1:50 PM
смених и команда сега може да се пуска и със id или uuid na report като --report-id …
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 1:51:43 PM
1:51 PM
Стели, има неокей линкове
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
6 replies
Last reply today at 2:58 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
loading…
loading…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.5066406,"top":1.0,"width":0.0125,"height":-0.05486107},"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.5066406,"top":1.0,"width":0.0125,"height":-0.090972185},"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,"bounds":{"left":0.52851564,"top":1.0,"width":0.0203125,"height":-0.048611164},"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.5328125,"top":1.0,"width":0.01171875,"height":-0.08124995},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.52851564,"top":1.0,"width":0.0203125,"height":-0.0958333},"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":"AXButton","text":"More unreads","depth":17,"bounds":{"left":0.57070315,"top":1.0,"width":0.04921875,"height":-0.08402777},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.022265624,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.034375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.028515626,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.05234375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.026171874,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.014453125,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.040625,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.032421876,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.03046875,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.02265625,"height":-0.094444394},"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":"Vasil Vasilev","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":"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":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","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":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.64453125,"top":1.0,"width":0.036328126,"height":-0.079861164},"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.65546876,"top":1.0,"width":0.022265624,"height":-0.087499976},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.6820313,"top":1.0,"width":0.040234376,"height":-0.079861164},"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.6929687,"top":1.0,"width":0.026171874,"height":-0.087499976},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.7234375,"top":1.0,"width":0.024609376,"height":-0.079861164},"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.734375,"top":1.0,"width":0.010546875,"height":-0.087499976},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.74960935,"top":1.0,"width":0.0125,"height":-0.079861164},"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":"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 1:47:44 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":"AXCheckBox","text":"1 reaction, react with eyes 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":"Nikolay Yankov","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 1:49:38 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":"Добре, 2 неща:","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"в името на генерирания репорт е дата вчера, не днес","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"и имейл не дойде","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":27,"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"12 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 3:31 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","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 1:49:55 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":"TimeZone на моя user е Sofia","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":"Today at 1:50:33 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"смених и команда сега може да се пуска и със id или uuid na report като --report-id …","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":"Nikolay Yankov","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 1:51:43 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:51 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Стели, има неокей линкове","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":27,"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download image.png","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: image.png","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":28,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"6 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 2:58 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":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"}]...
|
8910956755424362080
|
-1749344343122323376
|
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
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Toast
Jira Cloud
Google Calendar
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 1:47:44 PM
1:47 PM
ок готово, оправх го, и тоз път мина успешно
1 reaction, react with eyes emoji
1
Add reaction…
Nikolay Yankov
Today at 1:49:38 PM
1:49 PM
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
12 replies
Last reply today at 3:31 PM
View thread
Nikolay Yankov
Today at 1:49:55 PM
1:49 PM
TimeZone на моя user е Sofia
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
Today at 1:50:33 PM
1:50 PM
смених и команда сега може да се пуска и със id или uuid na report като --report-id …
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 1:51:43 PM
1:51 PM
Стели, има неокей линкове
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
6 replies
Last reply today at 2:58 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
loading…
loading…
PhpStormFV faVsco.js~Project vViewNavigateCodeLaravelRefactonWindow• #11894 on JY-18909-automated-reports-ask-jiminny~© ReportController.php© SendReportJob.php© AutomatedReportsCommand.php© AutomatedReportsCi• AddLayoutEntities.phpC Team.php© AutomatedReportsRepository.php© AutomatedReportsRr© AutomatedReportsS:© TrackProviderInstalledEvent.php© CreateActivityLoggedEvent.php© CreateMockAskJimirRequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php© AutomatedReportsSendCommand.php© Stage.phpAutomatedReportsService.php© CreateHeldActivityEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.php© DeleteReportCommamnalnesoace salunny console collianos reoorts.© GenerateMarketingR© Team.php› use ...© Usage.phpIsackeams16 Dclass AutomatedReportsSendCommand extends CommandD TracksD TranscriptionD Twilioprivate const string LOG_PREFIX = '[automated-reports:send]';O UsersVocabularyD Zoom* The name and sianature of the console command.© CoachingFeedbacksUpr© Command.php* @var string© CreateDatabaseUsers.pDatabaseTableCount.ptc DelereoeAcimnorescprotected $signature ='automated-reports:send{--result-id= : Force send a specific AutomatedReportResult by ID, bypassing the scheduled time check}';c Deleress eroverscom® DevPostmanCommand./© DiarizeViaAiParticipantke* The console command description.Servicesv D DatabaseV AEUA consolev Ajiminny@localhostA HS_local4, SF 1 s 140 msV A PROD4 console 3 sV ASTAGINGA consoley Docker# Output38 rowsvDid YI jiminny.automated._report.results x+uvid (UUID with time-Low a...51 cfd6bb99-4853-4c13-9f8e-a6af43e1727b50 5c9d7b33-b582-47d9-8770-a9fa31ffd68d49 d20bfefe-ccac-4bb7-ab50-c8bb8919997348 28ae7d39-16a4-4fb5-81fc-78732676b56a47 cc985e96-105b-4491-9a94-b9a72ddedd4246 8f89a4ef-d9e4-42c7-8920-e0a2ab72361f45 38817a7e-954d-41a2-822a-6c01f7f000734herhfoan-055-409h-20ch-715425h6212643 3fa7c4c9-9714-474a-adf8-4e5f30417ddd42 ecdc1b3c-0a02-4d79-aa56-9fadc94f8d2041 e2f4890a-d097-495b-8dfd-d4c25a5e884340X0094006-1904-4699-9061-50729820665639 058c1c38-4f61-4b06-8ede-5fb73f8942e738 a481a12f-84a1-4f9a-8da2-6281b011e36937 b38edf7d-7629-44e7-8fad-c08bf5cf11da3oc-5h1919-6009-4244-9145-9h799609666235 edc47759-160a-4f61-82fc-c8cdf5e5546434 6e3eed26-e7be-4019-b430-3f252aaa0d2c33 4703bf4d-a8b3-476d-a287-dcbf3c33e88b22 17+65112-a648-4294-8Fc4-F15691c8deatQEOA®ID report_id TI name T36 Tuesday report - 13 Apr 202635 Test 6 - 13 Apr 202635 Test 6 - 13 Apr 202634 <null>33 Ask Jiminny test report - 13 Apr 2026Jo shuLl33 Ask Jiminny test report - 13 Apr 202634 <null>33 Ask Jiminny test report - 13 Apr 2026J4 SIULL71 [CREDIT_CARD]-0n04_ZLLacAhhchog30 f13e12c9-a95f-43c2-8a9b-16b0320951e116 [CREDIT_CARD]-2001-020566552620S5 ASK Jiminny test report - o Apr 202633 Ask Jiminny test report - 8 Apr 202633 Ask Jiminnytest report - 8 Apr 202632 Shared with group - 1 Jul 2025 - 15 Apr 20265<nuu>32 <null>2 Exec Summary - 1 - 28 Feb 2026 - ALl3 Product Feedback - 1 Jan - 28 Feb 2026 - UK Sales, Engineering4 Product Feedback - 1 Feb - 31 Mar 2026 - All29 Jiminny recipient -1 Dec 2025 - 14 May 202629 Jiminny recipient - 1 Dec 2025 - 14 May 202629 Jiminny recipient - 1 Dec 2025 - 14 May 202624 Exec Summary -9 Nov 2024 - 12 Man 2026 -ALU10 Мan 20s.labolRetro - Platform • in 1h 29 mL AutomatedReportsCommandTest~100% CTue 14 Apr 15:31:21E custom.logA HS_local [jiminny@localhost]Al console [EU]A console [STAGING] X556557× Q 558559560561504564565566567568569570571= laravel.logA SF [jiminny@localhost]Tx: Auto vPlaygroundvselect * from teams;SELECT r.* FROM automated_reports rjoin teams t on r.team.id = t.idWHERE r. frequency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRines.at >= now() OR r.expires.at IS NULL);Gajiminny vm 017 A15 X13 ^select * from automated_report_results where repontaid 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 cepont.id IN (36);I media_type Tpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfparent_id TIO status T<null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null<null><null>ID reason TCSVvI payLoad 7• ("user_question":"test", "call_ids": ["54214348", "54747783", "547)• ("user_question": "Please make a summary for all calls", "call_io ("user_question":"Please make a summary for all calls", "call_i1 <null>0 {"user_question":"test", "call_ids":["54964443", "54964442", "5421 <null>o ("user_question": "test", "call_ids": ["54964443", "54964442", "542'<nulils0 {"user_question":"test", "call_ids":["54964443", "54964442", "5421 <null>o {"user_question": "test", "call_ids":["54964443","54964442", "5422 1"user_question":"test", "call_1dS":1"54964443""54964442","5422 "user question":"test" "call_ids":"54964443""54964442""542• {"team_id":1, "request_id":"a481a12f-84a1-4f9a-8da2-6281b011e3€1 {"team_id":1, "request_id":"b38edf7d-7629-44e7-8fad-c08bf5cf11c1 {"team_id":1, "request_id":"cf5b1219-6dc2-4854-9333-9bf0e6c96c€• {"team_id":1, "request_id":"edc47759-160a-4f61-82fc-c8cdf5e554€• {"team_id":1, "request_id":"6e3eed26-e7be-4019-b430-3f252aaa0d2o {"team_id":1, "request_id":"4703bf4d-a8b3-476d-a287-dcbf3c33e880 {"team_id":1, "request_id":"17fc5112-acf8-4384-8fc4-f15691c8dea0 {"team_id":1,"request id":"7055e5b7-529a-4241-9a0f-364ac0bbcbeo {"team_id":1, "request_id":"f13e12c9-a95f-43c2-8a9b-16b0320951eo {"team_id":1, "request_id":"54c23fbb-1655-4e12-adb1-d2b56c55ac24 spaces...
|
13542
|
|
13545
|
294
|
19
|
2026-04-14T12:31:26.844416+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776169886844_m1.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (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
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Toast
Jira Cloud
Google Calendar
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 1:47:44 PM
1:47 PM
ок готово, оправх го, и тоз път мина успешно
1 reaction, react with eyes emoji
1
Add reaction…
Nikolay Yankov
Today at 1:49:38 PM
1:49 PM
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
12 replies
Last reply today at 3:31 PM
View thread
Nikolay Yankov
Today at 1:49:55 PM
1:49 PM
TimeZone на моя user е Sofia
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
Today at 1:50:33 PM
1:50 PM
смених и команда сега може да се пуска и със id или uuid na report като --report-id …
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 1:51:43 PM
1:51 PM
Стели, има неокей линкове
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
6 replies
Last reply today at 2:58 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
loading…
loading…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.4861111,"top":0.08777778,"width":0.022222223,"height":0.035555556},"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.4861111,"top":0.14555556,"width":0.022222223,"height":0.035555556},"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.4861111,"top":0.20333333,"width":0.022222223,"height":0.035555556},"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.525,"top":0.07777778,"width":0.036111113,"height":0.075555556},"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.5326389,"top":0.13,"width":0.020833334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.525,"top":0.15333334,"width":0.036111113,"height":0.075555556},"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.5347222,"top":0.20555556,"width":0.016666668,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.525,"top":0.22888888,"width":0.036111113,"height":0.075555556},"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.52916664,"top":0.28111112,"width":0.027083334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.525,"top":0.30444443,"width":0.036111113,"height":0.075555556},"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.5347222,"top":0.35666665,"width":0.015972223,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.525,"top":0.38,"width":0.036111113,"height":0.075555556},"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.53402776,"top":0.43222222,"width":0.018055556,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.525,"top":0.45555556,"width":0.036111113,"height":0.075555556},"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.53333336,"top":0.50777775,"width":0.01875,"height":0.015555556},"role_description":"text"},{"role":"AXButton","text":"More unreads","depth":17,"bounds":{"left":0.6,"top":0.13444445,"width":0.0875,"height":0.031111112},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5951389,"top":0.12777779,"width":0.039583333,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5951389,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5951389,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5951389,"top":0.12777779,"width":0.06111111,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5951389,"top":0.12777779,"width":0.050694443,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.093055554,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.046527777,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.025694445,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.038194444,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.072222225,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.057638887,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.60625,"top":0.12777779,"width":0.054166667,"height":0.012222222},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.60625,"top":0.15111111,"width":0.04027778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.60625,"top":0.18222222,"width":0.034027778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.60625,"top":0.21333334,"width":0.061805554,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.60625,"top":0.24444444,"width":0.048611112,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.60625,"top":0.27555555,"width":0.072916664,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.60625,"top":0.30666667,"width":0.08055556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.60625,"top":0.33777776,"width":0.035416666,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.60625,"top":0.36888888,"width":0.038194444,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.60625,"top":0.4,"width":0.05138889,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.60625,"top":0.4311111,"width":0.036111113,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.60625,"top":0.46222222,"width":0.05138889,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.60625,"top":0.49333334,"width":0.094444446,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.60625,"top":0.56666666,"width":0.055555556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.60625,"top":0.5977778,"width":0.07847222,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.68472224,"top":0.5977778,"width":0.013194445,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.68958336,"top":0.5977778,"width":0.029861111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.60625,"top":0.6288889,"width":0.07986111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.60625,"top":0.66,"width":0.072222225,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.67777777,"top":0.66,"width":0.0055555557,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"bounds":{"left":0.68333334,"top":0.66,"width":0.015972223,"height":0.02},"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,"bounds":{"left":0.60625,"top":0.6911111,"width":0.072222225,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.60625,"top":0.7222222,"width":0.07361111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.60625,"top":0.75333333,"width":0.07152778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.60625,"top":0.78444445,"width":0.07361111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.6791667,"top":0.78444445,"width":0.0055555557,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.68472224,"top":0.78444445,"width":0.018055556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.60625,"top":0.8155556,"width":0.07361111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.6791667,"top":0.8155556,"width":0.0055555557,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.68472224,"top":0.8155556,"width":0.018055556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.60625,"top":0.8466667,"width":0.06875,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.60625,"top":0.92,"width":0.025694445,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.60625,"top":0.95111114,"width":0.045833334,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"bounds":{"left":0.60625,"top":0.9822222,"width":0.06388889,"height":0.012222222},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.73125,"top":0.12777779,"width":0.06458333,"height":0.04222222},"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.75069445,"top":0.14,"width":0.039583333,"height":0.017777778},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.79791665,"top":0.12777779,"width":0.07152778,"height":0.04222222},"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.8173611,"top":0.14,"width":0.046527777,"height":0.017777778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.8715278,"top":0.12777779,"width":0.04375,"height":0.04222222},"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.8909722,"top":0.14,"width":0.01875,"height":0.017777778},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.91805553,"top":0.12777779,"width":0.022222223,"height":0.04222222},"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,"bounds":{"left":0.83194447,"top":0.17666666,"width":0.05277778,"height":0.031111112},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.06458333,"height":0.0011111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.82916665,"top":0.16111112,"width":0.0055555557,"height":0.0011111111},"role_description":"text"},{"role":"AXLink","text":"Today at 1:47:44 PM","depth":24,"bounds":{"left":0.8347222,"top":0.16111112,"width":0.03125,"height":0.0011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47 PM","depth":25,"bounds":{"left":0.8347222,"top":0.16111112,"width":0.03125,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"ок готово, оправх го, и тоз път мина успешно","depth":25,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.21666667,"height":0.0011111111},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with eyes emoji","depth":25,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.029861111,"height":0.0011111111},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"bounds":{"left":0.78402776,"top":0.16111112,"width":0.0048611113,"height":0.0011111111},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.7972222,"top":0.16111112,"width":0.023611112,"height":0.0011111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.072222225,"height":0.0011111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8361111,"top":0.16111112,"width":0.00625,"height":0.0011111111},"role_description":"text"},{"role":"AXLink","text":"Today at 1:49:38 PM","depth":24,"bounds":{"left":0.84166664,"top":0.16111112,"width":0.031944446,"height":0.0011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:49 PM","depth":25,"bounds":{"left":0.84166664,"top":0.16111112,"width":0.031944446,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"Добре, 2 неща:","depth":25,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.07361111,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.7673611,"top":0.16111112,"width":0.010416667,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"в името на генерирания репорт е дата вчера, не днес","depth":26,"bounds":{"left":0.78402776,"top":0.16111112,"width":0.18472221,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"bounds":{"left":0.7673611,"top":0.16111112,"width":0.010416667,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"и имейл не дойде","depth":26,"bounds":{"left":0.78402776,"top":0.16111112,"width":0.08680555,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":25,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.04097222,"height":0.0011111111},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8048611,"top":0.16111112,"width":0.0034722222,"height":0.0011111111},"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"bounds":{"left":0.8076389,"top":0.16111112,"width":0.014583333,"height":0.0011111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":27,"bounds":{"left":0.76458335,"top":0.16111112,"width":0.21805556,"height":0.04777778},"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"12 replies","depth":24,"bounds":{"left":0.8055556,"top":0.2211111,"width":0.039583333,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply today at 3:31 PM","depth":25,"bounds":{"left":0.85,"top":0.22222222,"width":0.10972222,"height":0.018888889},"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"bounds":{"left":0.85,"top":0.22222222,"width":0.048611112,"height":0.018888889},"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"bounds":{"left":0.76458335,"top":0.2588889,"width":0.072222225,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8361111,"top":0.2611111,"width":0.00625,"height":0.02111111},"role_description":"text"},{"role":"AXLink","text":"Today at 1:49:55 PM","depth":24,"bounds":{"left":0.84166664,"top":0.26444444,"width":0.031944446,"height":0.016666668},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:49 PM","depth":25,"bounds":{"left":0.84166664,"top":0.26444444,"width":0.031944446,"height":0.016666668},"role_description":"text"},{"role":"AXStaticText","text":"TimeZone на моя user е Sofia","depth":25,"bounds":{"left":0.76458335,"top":0.28555554,"width":0.13611111,"height":0.02111111},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.8048611,"top":0.24,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.82708335,"top":0.24,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.84930557,"top":0.24,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.8715278,"top":0.24,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.89375,"top":0.24,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.76458335,"top":0.31666666,"width":0.06458333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.82916665,"top":0.3188889,"width":0.0055555557,"height":0.02111111},"role_description":"text"},{"role":"AXLink","text":"Today at 1:50:33 PM","depth":24,"bounds":{"left":0.8347222,"top":0.32222223,"width":0.03125,"height":0.016666668},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50 PM","depth":25,"bounds":{"left":0.8347222,"top":0.32222223,"width":0.03125,"height":0.016666668},"role_description":"text"},{"role":"AXStaticText","text":"смених и команда сега може да се пуска и със id или uuid na report като --report-id …","depth":25,"bounds":{"left":0.76458335,"top":0.34333333,"width":0.2048611,"height":0.045555554},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.8048611,"top":0.29777777,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.82708335,"top":0.29777777,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.84930557,"top":0.29777777,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.8715278,"top":0.29777777,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.89375,"top":0.29777777,"width":0.022222223,"height":0.036666665},"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":"Nikolay Yankov","depth":24,"bounds":{"left":0.76458335,"top":0.3988889,"width":0.072222225,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.8361111,"top":0.40111113,"width":0.00625,"height":0.02111111},"role_description":"text"},{"role":"AXLink","text":"Today at 1:51:43 PM","depth":24,"bounds":{"left":0.84166664,"top":0.40444446,"width":0.031944446,"height":0.016666668},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:51 PM","depth":25,"bounds":{"left":0.84166664,"top":0.40444446,"width":0.031944446,"height":0.016666668},"role_description":"text"},{"role":"AXStaticText","text":"Стели, има неокей линкове","depth":25,"bounds":{"left":0.76458335,"top":0.42555556,"width":0.13194445,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":25,"bounds":{"left":0.76458335,"top":0.45555556,"width":0.04097222,"height":0.018888889},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.8048611,"top":0.45444444,"width":0.0034722222,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"bounds":{"left":0.8076389,"top":0.45333335,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":27,"bounds":{"left":0.76458335,"top":0.4811111,"width":0.21805556,"height":0.33444443},"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download image.png","depth":28,"bounds":{"left":0.8840278,"top":0.49666667,"width":0.022222223,"height":0.036666665},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: image.png","depth":28,"bounds":{"left":0.90625,"top":0.49666667,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":28,"bounds":{"left":0.9284722,"top":0.49666667,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":28,"bounds":{"left":0.95069444,"top":0.49666667,"width":0.022222223,"height":0.036666665},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"6 replies","depth":24,"bounds":{"left":0.8055556,"top":0.8277778,"width":0.034027778,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply today at 2:58 PM","depth":25,"bounds":{"left":0.8451389,"top":0.8288889,"width":0.10902778,"height":0.018888889},"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"bounds":{"left":0.8451389,"top":0.8288889,"width":0.047916666,"height":0.018888889},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.78194445,"top":0.38111112,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.8041667,"top":0.38111112,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.8263889,"top":0.38111112,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.8486111,"top":0.38111112,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply to thread","depth":26,"bounds":{"left":0.87083334,"top":0.38111112,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.89305556,"top":0.38111112,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.9152778,"top":0.38111112,"width":0.022222223,"height":0.036666665},"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,"bounds":{"left":0.9375,"top":0.38111112,"width":0.022222223,"height":0.036666665},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.9597222,"top":0.38111112,"width":0.022222223,"height":0.036666665},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"bounds":{"left":0.7347222,"top":0.88,"width":0.24722221,"height":0.04222222},"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"}]...
|
8910956755424362080
|
-1749344343122323376
|
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
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Toast
Jira Cloud
Google Calendar
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 1:47:44 PM
1:47 PM
ок готово, оправх го, и тоз път мина успешно
1 reaction, react with eyes emoji
1
Add reaction…
Nikolay Yankov
Today at 1:49:38 PM
1:49 PM
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
12 replies
Last reply today at 3:31 PM
View thread
Nikolay Yankov
Today at 1:49:55 PM
1:49 PM
TimeZone на моя user е Sofia
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
Today at 1:50:33 PM
1:50 PM
смених и команда сега може да се пуска и със id или uuid na report като --report-id …
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 1:51:43 PM
1:51 PM
Стели, има неокей линкове
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
6 replies
Last reply today at 2:58 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
loading…
loading…
SlackFileEditViewGoHistoryWindowHelp(MySQL 11.4.9-MariaDB-log) PROD/jiminny/leads• leaFieldTABLES_ lead_stagesleadsiduuidteam_idcrm_conf...stage_idstage_up...record_ty...converte...converte...converte...converte...crm_prov...user_idowner_idcompanydomaincountry_..nametitleemailphoneext+INDEXESTypeINTBINARYINTINTINTDATETIMEINTTIMESTAMPINTINTINTVARCHARINTIVARCHARVARCHARVARCHARCHARVARCHARVARCHARVARCHARVARCHARCHARLength101610101010101010128101281911912191128802510Non_unique11Key_namePRIMARYleads_u...leads_c...leads_c...leads_t...leads_S...leads_c...leads_c...leads_c...leads_r...leads_u...ІаSнC nSeq_in_ind….Column_nameiduuidcrm_config...crm_provid...team_idstage_idconverted_...converted_...converted_...record_typ...user_iderm sanfin+EDHomeD-DMsActivityFilesLater.*•MoreCollationCardin875688756883875686869779607583791250982292Q1+@vRetro - Platform • in 1h 29 m100% <7Tue 14 Apr 15:31:26→Search Jiminny IncJiminny ...pnginepringT More unreads## general# infra-changes# jiminny-bg# platform-tickets# product_ launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messages€. Vasil Vasilev3Aneliya Angelova, ...Ro Steliyan Georgiev3Adelina Petrova, Ili...% Adelina Petrova% Galya Dimitrova **8& Nikolay Nikolov "2Galya Dimitrova, Ni...2Galya Dimitrova, Ni...Nikolay Yankova:: AppsToastJira CloudCanalo CalaAneliya Angelova, ...• MessagesAdd canvasC Files+Today12 replies Last reply today at 3:31 PMNikolay Yankov 1:49 PMTimeZone на моя user e SofiaLukas Kovalik 1:50 PMсмених и команда сега може да се пуска иСЪСNikСтели, има неокей линковеimage.png6 replies Last reply today at 2:58 PMMessage Aneliya Angelova, Nikolay Yankov, Steli...Aa...
|
NULL
|
|
13546
|
295
|
13
|
2026-04-14T12:31:53.648251+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776169913648_m2.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (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
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Toast
Jira Cloud
Google Calendar
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 1:47:44 PM
1:47 PM
ок готово, оправх го, и тоз път мина успешно
1 reaction, react with eyes emoji
1
Add reaction…
Nikolay Yankov
Today at 1:49:38 PM
1:49 PM
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
12 replies
Last reply today at 3:31 PM
View thread
Nikolay Yankov
Today at 1:49:55 PM
1:49 PM
TimeZone на моя user е Sofia
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
Today at 1:50:33 PM
1:50 PM
смених и команда сега може да се пуска и със id или uuid na report като --report-id …
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 1:51:43 PM
1:51 PM
Стели, има неокей линкове
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
6 replies
Last reply today at 2:58 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
loading…
loading…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.5066406,"top":1.0,"width":0.0125,"height":-0.05486107},"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.5066406,"top":1.0,"width":0.0125,"height":-0.090972185},"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,"bounds":{"left":0.52851564,"top":1.0,"width":0.0203125,"height":-0.048611164},"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.5328125,"top":1.0,"width":0.01171875,"height":-0.08124995},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.52851564,"top":1.0,"width":0.0203125,"height":-0.0958333},"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":"AXButton","text":"More unreads","depth":17,"bounds":{"left":0.57070315,"top":1.0,"width":0.04921875,"height":-0.08402777},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.022265624,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.034375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.028515626,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.05234375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.026171874,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.014453125,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.040625,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.032421876,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.03046875,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.02265625,"height":-0.094444394},"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":"Vasil Vasilev","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":"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":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","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":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.64453125,"top":1.0,"width":0.036328126,"height":-0.079861164},"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.65546876,"top":1.0,"width":0.022265624,"height":-0.087499976},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.6820313,"top":1.0,"width":0.040234376,"height":-0.079861164},"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.6929687,"top":1.0,"width":0.026171874,"height":-0.087499976},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.7234375,"top":1.0,"width":0.024609376,"height":-0.079861164},"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.734375,"top":1.0,"width":0.010546875,"height":-0.087499976},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.74960935,"top":1.0,"width":0.0125,"height":-0.079861164},"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":"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 1:47:44 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":"AXCheckBox","text":"1 reaction, react with eyes 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":"Nikolay Yankov","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 1:49:38 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":"Добре, 2 неща:","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"в името на генерирания репорт е дата вчера, не днес","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"и имейл не дойде","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":27,"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"12 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 3:31 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","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 1:49:55 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":"TimeZone на моя user е Sofia","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":"Today at 1:50:33 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"смених и команда сега може да се пуска и със id или uuid na report като --report-id …","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":"Nikolay Yankov","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 1:51:43 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:51 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Стели, има неокей линкове","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":27,"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download image.png","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: image.png","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":28,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":28,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"6 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 2:58 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":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"}]...
|
8910956755424362080
|
-1749344343122323376
|
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
More unreads
Unreads
Threads
Huddles
Drafts & sent
Directories
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Toast
Jira Cloud
Google Calendar
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 1:47:44 PM
1:47 PM
ок готово, оправх го, и тоз път мина успешно
1 reaction, react with eyes emoji
1
Add reaction…
Nikolay Yankov
Today at 1:49:38 PM
1:49 PM
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
12 replies
Last reply today at 3:31 PM
View thread
Nikolay Yankov
Today at 1:49:55 PM
1:49 PM
TimeZone на моя user е Sofia
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
Today at 1:50:33 PM
1:50 PM
смених и команда сега може да се пуска и със id или uuid na report като --report-id …
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 1:51:43 PM
1:51 PM
Стели, има неокей линкове
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
6 replies
Last reply today at 2:58 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
loading…
loading…
PhpStormFV faVsco.js~Project vViewNavigateCodeLaravelRefactonWindow• #11894 on JY-18909-automated-reports-ask-jiminny~© ReportController.php© SendReportJob.phpAutomatedReportsCommand.php© AutomatedReportsCi• AddLayoutEntities.phpC Team.php© AutomatedReportsRepository.php© AutomatedReportsRr© AutomatedReportsS:© TrackProviderInstalledEvent.php© CreateActivityLoggedEvent.php© CreateMockAskJimirRequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php© AutomatedReportsSendCommand.php© Stage.phpAutomatedReportsService.php© CreateHeldActivityEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.php© DeleteReportCommamnalnesoace salunny console collianos reoorts.© GenerateMarketingR© Team.php› use ...© Usage.phpIsackeams16 Dclass AutomatedReportsSendCommand extends CommandD TracksD TranscriptionD Twilioprivate const string LOG_PREFIX = '[automated-reports:send]';O UsersVocabularyD Zoom* The name and sianature of the console command.© CoachingFeedbacksUpr© Command.php* @var string© CreateDatabaseUsers.pDatabaseTableCount.ptc DelereoeAcimnorescprotected $signature ='automated-reports:send{--result-id= : Force send a specific AutomatedReportResult by ID, bypassing the scheduled time check}';c Deleress eroverscom® DevPostmanCommand./© DiarizeViaAiParticipantke* The console command description.Servicesv D DatabaseV AEUA consolev Ajiminny@localhostA HS_local4, SF 1 s 140 msV A PROD4 console 3 sV ASTAGINGA consoley Docker# Output38 rowsvDid YI jiminny.automated._report.results x+uvid (UUID with time-Low a...51 cfd6bb99-4853-4c13-9f8e-a6af43e1727b50 5c9d7b33-b582-47d9-8770-a9fa31ffd68d49 d20bfefe-ccac-4bb7-ab50-c8bb8919997348 28ae7d39-16a4-4fb5-81fc-78732676b56a47 cc985e96-105b-4491-9a94-b9a72ddedd4246 8f89a4ef-d9e4-42c7-8920-e0a2ab72361f45 38817a7e-954d-41a2-822a-6c01f7f000734herhfoan-055-409h-20ch-715425h6212643 3fa7c4c9-9714-474a-adf8-4e5f30417ddd42 ecdc1b3c-0a02-4d79-aa56-9fadc94f8d2041 e2f4890a-d097-495b-8dfd-d4c25a5e884340X0094006-1904-4699-9061-50729820665639 058c1c38-4f61-4b06-8ede-5fb73f8942e738 a481a12f-84a1-4f9a-8da2-6281b011e36937 b38edf7d-7629-44e7-8fad-c08bf5cf11da3oc-5h1919-6009-4244-9145-9h799609666235 edc47759-160a-4f61-82fc-c8cdf5e5546434 6e3eed26-e7be-4019-b430-3f252aaa0d2c33 4703bf4d-a8b3-476d-a287-dcbf3c33e88b22 17+65112-a648-4294-8Fc4-F15691c8deatQEOA®ID report_id TI name T36 Tuesday report - 13 Apr 202635 Test 6 - 13 Apr 202635 Test 6 - 13 Apr 202634 <null>33 Ask Jiminny test report - 13 Apr 2026Jo shuLl33 Ask Jiminny test report - 13 Apr 202634 <null>33 Ask Jiminny test report - 13 Apr 2026J4 SIULL71 [CREDIT_CARD]-0n04_ZLLacAhhchog30 f13e12c9-a95f-43c2-8a9b-16b0320951e116 [CREDIT_CARD]-2001-020566552620S5 ASK Jiminny test report - o Apr 202633 Ask Jiminny test report - 8 Apr 202633 Ask Jiminnytest report - 8 Apr 202632 Shared with group - 1 Jul 2025 - 15 Apr 20265<nuu>32 <null>2 Exec Summary - 1 - 28 Feb 2026 - ALl3 Product Feedback - 1 Jan - 28 Feb 2026 - UK Sales, Engineering4 Product Feedback - 1 Feb - 31 Mar 2026 - All29 Jiminny recipient -1 Dec 2025 - 14 May 202629 Jiminny recipient - 1 Dec 2025 - 14 May 202629 Jiminny recipient - 1 Dec 2025 - 14 May 202624 Exec Summary -9 Nov 2024 - 12 Man 2026 -ALU10 Мan 20s.labolRetro - Platform • in 1h 29 mL AutomatedReportsCommandTest~100% CTue 14 Apr 15:31:53E custom.logA HS_local [jiminny@localhost]Al console [EU]A console [STAGING] X556557× Q 558559560561504564565566567568569570571= laravel.logA SF [jiminny@localhost]Tx: Auto vPlaygroundvselect * from teams;SELECT r.* FROM automated_reports rjoin teams t on r.team.id = t.idWHERE r. frequency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRines.at >= now() OR r.expires.at IS NULL);Gajiminny vm | 017 A15 X 13select * from automated_report_results where repontaid 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 cepont.id IN (36);I media_type Tpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfpdfparent_id TIO status T<null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null><null<null><null>ID reason TCSVvI payLoad 7• ("user_question":"test", "call_ids": ["54214348", "54747783", "547)• ("user_question": "Please make a summary for all calls", "call_io ("user_question":"Please make a summary for all calls", "call_i1 <null>0 {"user_question":"test", "call_ids":["54964443", "54964442", "5421 <null>o ("user_question": "test", "call_ids": ["54964443", "54964442", "542'<nulils0 {"user_question":"test", "call_ids":["54964443", "54964442", "5421 <null>o {"user_question": "test", "call_ids":["54964443","54964442", "5422 1"user_question":"test", "call_1dS":1"54964443""54964442","5422 "user question":"test" "call_ids":"54964443""54964442""542• {"team_id":1, "request_id":"a481a12f-84a1-4f9a-8da2-6281b011e3€1 {"team_id":1, "request_id":"b38edf7d-7629-44e7-8fad-c08bf5cf11c1 {"team_id":1, "request_id":"cf5b1219-6dc2-4854-9333-9bf0e6c96c€• {"team_id":1, "request_id":"edc47759-160a-4f61-82fc-c8cdf5e554€• {"team_id":1, "request_id":"6e3eed26-e7be-4019-b430-3f252aaa0d2o {"team_id":1, "request_id":"4703bf4d-a8b3-476d-a287-dcbf3c33e880 {"team_id":1, "request_id":"17fc5112-acf8-4384-8fc4-f15691c8dea0 {"team_id":1,"request id":"7055e5b7-529a-4241-9a0f-364ac0bbcbeo {"team_id":1, "request_id":"f13e12c9-a95f-43c2-8a9b-16b0320951eo {"team_id":1, "request_id":"54c23fbb-1655-4e12-adb1-d2b56c55ac24 spaces...
|
NULL
|
|
56329
|
1218
|
25
|
2026-04-20T11:06:48.979223+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776683208979_m2.jpg...
|
Firefox
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Docker DesktopcaltVIewdop.clrcieci.com/oloellnes/c Docker DesktopcaltVIewdop.clrcieci.com/oloellnes/cltnuo/iminny.dBookmarkso circleci •Jy 19798 evaluation for ai activityQ Search bookmarksJY-20553 | Improve crm-sync delaSRD-6793) Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackinav a bookmarks loolbar• Sprint Board# SRD QueueGithubJiminny DEVAsk Jiminny Reports by nikolay-yankov• ...© Circle CI& PROD US> = Bookmarks MenuHomePipelines(UY-18909) (Part2) Automated rep/Other BookmarksProjectsAsk Jiminny Reports by nikolay-ya- New TabDeploysu Product Growth Plattorm UserpilgInsights(fix(security): composer dependerPipelines - jiminny/appRunners) Feed - jiminny - Sentry8 JiminnyOrg8Jiminny8 JiminnyPlant(JY-20692] Issue with reconnect• Jy-20692 change confirmation pa# (UY-20692) Issue with reconnectin19 ISRD-67871 Issue with reconnect*) Jiminny MCP Connector - Product* (UY-20676] Notify the user if a Pano Pipelines - jiminy/app- New TaoEi All Pipelines / E app• appOverview Settings Deploys& All pipelinesO appPipelineapp57483app57482ge All branchesJobsJobsJobsChunko Cutoff dateAll statusesWorkflowo Running12m 14c remainbuild_accept_deploy• checkout-code 8732708 build-frontend 8732748 test-frontend 873277build-backend 873271ohostan 873273setup o/sz/stest 873276Xtest-backend-lint 8732728 sonar_cloud 873278setup-worktlowsetup 873269@ Running16m 3s remainbuild accent deplovcheckout-code 872250.build-frontend 873254test-frontend 873260haahanhandoradc,tile docker.desktop PERSONALAsk GordonBETAContainersImagesVolumesKuberneresBulldsModelsMCP Toolkit BETADocker HubDocker ScoutFxtensionsManage• Resource usage. Resource Saver modeContainersGive feedbackContainer CPU usage ©No containers are runninaSearchNameContainer D1229ffe7ed37KibanaД А 7с3ес7911304narokA AN 00a86edb2f8dhlacktire.f3fa652b7054iiminny ext- 58754608d3e0elasticsearch eR02ad472a4fdatadog-10727543fa332natrtlainetb7e64079c3c3RAM 0.00 GB CPU 0.00% Disk: 40.87 GB used (limit 58.37 GB)JY-18909-automated-reports-ask-jiminny752fb7a Merge branch 'master' into JY-18909-automated-renortc-ack_liminnv c7Q SearchContainer memory usage ONo containers are runninaOnlv show runnina containersmagePort(s)ease6379:6379kibana/kibana:7.10.2 5601:56014040:4040blackfire/blackfire:1.: 8707:8707node:8.12-alpine9200:9200elasticsearch/elasticshow alllpors Acalacog lageno.lamariadb:11.4.53306:3306A Push Commit pushed100% S2Mon 20 AOr 14.00.40Show charts1 Manage triggerseturanton46SCPU(% ActionsN/A DN/AN/AN/AN/AN/A DN/A DShowing 16 items>_ O Update available8m ago38s37s7m 58s1m 11c1m 49s1m 44S1m 1AcS Trigger Pipeline= Display optionsActionsCG@&.GGOS.....
|
NULL
|
8910480674314971833
|
NULL
|
visual_change
|
ocr
|
NULL
|
Docker DesktopcaltVIewdop.clrcieci.com/oloellnes/c Docker DesktopcaltVIewdop.clrcieci.com/oloellnes/cltnuo/iminny.dBookmarkso circleci •Jy 19798 evaluation for ai activityQ Search bookmarksJY-20553 | Improve crm-sync delaSRD-6793) Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackinav a bookmarks loolbar• Sprint Board# SRD QueueGithubJiminny DEVAsk Jiminny Reports by nikolay-yankov• ...© Circle CI& PROD US> = Bookmarks MenuHomePipelines(UY-18909) (Part2) Automated rep/Other BookmarksProjectsAsk Jiminny Reports by nikolay-ya- New TabDeploysu Product Growth Plattorm UserpilgInsights(fix(security): composer dependerPipelines - jiminny/appRunners) Feed - jiminny - Sentry8 JiminnyOrg8Jiminny8 JiminnyPlant(JY-20692] Issue with reconnect• Jy-20692 change confirmation pa# (UY-20692) Issue with reconnectin19 ISRD-67871 Issue with reconnect*) Jiminny MCP Connector - Product* (UY-20676] Notify the user if a Pano Pipelines - jiminy/app- New TaoEi All Pipelines / E app• appOverview Settings Deploys& All pipelinesO appPipelineapp57483app57482ge All branchesJobsJobsJobsChunko Cutoff dateAll statusesWorkflowo Running12m 14c remainbuild_accept_deploy• checkout-code 8732708 build-frontend 8732748 test-frontend 873277build-backend 873271ohostan 873273setup o/sz/stest 873276Xtest-backend-lint 8732728 sonar_cloud 873278setup-worktlowsetup 873269@ Running16m 3s remainbuild accent deplovcheckout-code 872250.build-frontend 873254test-frontend 873260haahanhandoradc,tile docker.desktop PERSONALAsk GordonBETAContainersImagesVolumesKuberneresBulldsModelsMCP Toolkit BETADocker HubDocker ScoutFxtensionsManage• Resource usage. Resource Saver modeContainersGive feedbackContainer CPU usage ©No containers are runninaSearchNameContainer D1229ffe7ed37KibanaД А 7с3ес7911304narokA AN 00a86edb2f8dhlacktire.f3fa652b7054iiminny ext- 58754608d3e0elasticsearch eR02ad472a4fdatadog-10727543fa332natrtlainetb7e64079c3c3RAM 0.00 GB CPU 0.00% Disk: 40.87 GB used (limit 58.37 GB)JY-18909-automated-reports-ask-jiminny752fb7a Merge branch 'master' into JY-18909-automated-renortc-ack_liminnv c7Q SearchContainer memory usage ONo containers are runninaOnlv show runnina containersmagePort(s)ease6379:6379kibana/kibana:7.10.2 5601:56014040:4040blackfire/blackfire:1.: 8707:8707node:8.12-alpine9200:9200elasticsearch/elasticshow alllpors Acalacog lageno.lamariadb:11.4.53306:3306A Push Commit pushed100% S2Mon 20 AOr 14.00.40Show charts1 Manage triggerseturanton46SCPU(% ActionsN/A DN/AN/AN/AN/AN/A DN/A DShowing 16 items>_ O Update available8m ago38s37s7m 58s1m 11c1m 49s1m 44S1m 1AcS Trigger Pipeline= Display optionsActionsCG@&.GGOS.....
|
NULL
|
|
54103
|
1166
|
63
|
2026-04-20T08:38:56.113400+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776674336113_m1.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.staging.jiminny.com/ai-reports
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 873114
75
75
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Report Type Report Type
Report Type
Report Type
Clear all
NAME
FREQUENCY
SHARED
DATE
ACTIONS
Health - 9 - 15 Apr 2026
Weekly
Kamren Schulist
+1
16/04/2026
Tuesday Report - 15 Apr 2026
Daily
16/04/2026
Ask Jiminny Test Report - 15 Apr 2026
Daily
Kamren Schulist
16/04/2026
Eastern Summary - 7 - 13 Apr 2026
Weekly
14/04/2026
Tuesday Report - 13 Apr 2026
Daily
14/04/2026
Ask Jiminny Test Report - 13 Apr 2026
Daily
Kamren Schulist
14/04/2026
Ask Jiminny Test Report - 13 Apr 2026
Daily
Kamren Schulist
14/04/2026
Open Intercom Messenger
app.staging.jiminny.com/ai-reports/manage...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0038194444,"top":0.072222225,"width":0.15868056,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.13222222,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.14777778,"width":0.32951388,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.17777778,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.027777778,"top":0.19333333,"width":0.19895834,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.22333333,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.23888889,"width":0.41701388,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2688889,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.28444445,"width":0.32430556,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"bounds":{"left":0.0,"top":0.31444445,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":5,"bounds":{"left":0.027777778,"top":0.33,"width":0.14583333,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"bounds":{"left":0.0,"top":0.36,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"bounds":{"left":0.027777778,"top":0.37555555,"width":0.22326389,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.40555555,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.4211111,"width":0.26979166,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.4511111,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.027777778,"top":0.46666667,"width":0.03125,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.49666667,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.027777778,"top":0.51222223,"width":0.12951389,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"bounds":{"left":0.0,"top":0.5422222,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"bounds":{"left":0.027777778,"top":0.55777776,"width":0.096875,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.5877778,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.60333335,"width":0.42881945,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.6333333,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.6488889,"width":0.08194444,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.6788889,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.027777778,"top":0.6944444,"width":0.08923611,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.72444445,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.74,"width":0.42881945,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.77,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.027777778,"top":0.78555554,"width":0.027430555,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.8155556,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.027777778,"top":0.83111113,"width":0.027430555,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.140625,"top":0.82555556,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.86333334,"width":0.15486111,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.005902778,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.028819444,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.052083332,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.07534722,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.09861111,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 873114","depth":9,"bounds":{"left":0.16770834,"top":0.98055553,"width":0.21006945,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"75","depth":12,"bounds":{"left":0.171875,"top":0.88,"width":0.033333335,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"75","depth":14,"bounds":{"left":0.1892361,"top":0.885,"width":0.009722223,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Reports","depth":13,"bounds":{"left":0.22743055,"top":0.096666664,"width":0.065625,"height":0.027222222},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Reports","depth":14,"bounds":{"left":0.22743055,"top":0.096666664,"width":0.065625,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ask Jiminny reports","depth":13,"bounds":{"left":0.859375,"top":0.09,"width":0.123958334,"height":0.04},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny reports","depth":14,"bounds":{"left":0.88784724,"top":0.100555554,"width":0.08576389,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Report name","depth":17,"bounds":{"left":0.2534722,"top":0.15222222,"width":0.12118056,"height":0.027777778},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Period","depth":20,"bounds":{"left":0.41631943,"top":0.16,"width":0.02673611,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Report Type Report Type","depth":16,"bounds":{"left":0.5621528,"top":0.15222222,"width":0.13819444,"height":0.027777778},"value":"Report Type Report Type","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Report Type","depth":18,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Report Type","depth":19,"bounds":{"left":0.5621528,"top":0.15722223,"width":0.048958335,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":13,"bounds":{"left":0.7135417,"top":0.15666667,"width":0.059375,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":16,"bounds":{"left":0.22673611,"top":0.23333333,"width":0.027083334,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":16,"bounds":{"left":0.5486111,"top":0.23333333,"width":0.05451389,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":16,"bounds":{"left":0.6736111,"top":0.23333333,"width":0.036458332,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE","depth":16,"bounds":{"left":0.78055555,"top":0.23333333,"width":0.023263888,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":16,"bounds":{"left":0.88784724,"top":0.23333333,"width":0.039930556,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Health - 9 - 15 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.29555556,"width":0.105902776,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"bounds":{"left":0.5486111,"top":0.2961111,"width":0.03125,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"bounds":{"left":0.70416665,"top":0.28611112,"width":0.034722224,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+1","depth":17,"bounds":{"left":0.73125,"top":0.29666665,"width":0.009722223,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.2961111,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tuesday Report - 15 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.3611111,"width":0.13159722,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.5486111,"top":0.36166668,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.36166668,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Test Report - 15 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.42666668,"width":0.16875,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.5486111,"top":0.42722222,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"bounds":{"left":0.70416665,"top":0.41722223,"width":0.034722224,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.42722222,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Eastern Summary - 7 - 13 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.49222222,"width":0.15381944,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"bounds":{"left":0.5486111,"top":0.49277776,"width":0.03125,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.49277776,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tuesday Report - 13 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.55777776,"width":0.13159722,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.5486111,"top":0.55833334,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.55833334,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Test Report - 13 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.62333333,"width":0.16875,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.5486111,"top":0.6238889,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"bounds":{"left":0.70416665,"top":0.61388886,"width":0.034722224,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.6238889,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Test Report - 13 Apr 2026","depth":17,"bounds":{"left":0.2545139,"top":0.6888889,"width":0.16875,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.5486111,"top":0.6894444,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"bounds":{"left":0.70416665,"top":0.67944443,"width":0.034722224,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14/04/2026","depth":17,"bounds":{"left":0.78055555,"top":0.6894444,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open Intercom Messenger","depth":7,"bounds":{"left":0.9527778,"top":0.92444444,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app.staging.jiminny.com/ai-reports/manage","depth":5,"bounds":{"left":0.16909721,"top":0.9827778,"width":0.15763889,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8910331250964242974
|
-3006869605476015566
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 873114
75
75
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Report Type Report Type
Report Type
Report Type
Clear all
NAME
FREQUENCY
SHARED
DATE
ACTIONS
Health - 9 - 15 Apr 2026
Weekly
Kamren Schulist
+1
16/04/2026
Tuesday Report - 15 Apr 2026
Daily
16/04/2026
Ask Jiminny Test Report - 15 Apr 2026
Daily
Kamren Schulist
16/04/2026
Eastern Summary - 7 - 13 Apr 2026
Weekly
14/04/2026
Tuesday Report - 13 Apr 2026
Daily
14/04/2026
Ask Jiminny Test Report - 13 Apr 2026
Daily
Kamren Schulist
14/04/2026
Ask Jiminny Test Report - 13 Apr 2026
Daily
Kamren Schulist
14/04/2026
Open Intercom Messenger
app.staging.jiminny.com/ai-reports/manage...
|
54100
|
|
13035
|
282
|
14
|
2026-04-14T11:58:21.241456+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776167901241_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(all= Support Daily • in 2 mAPP (-zsh)DOCKER981DEV (docker)882APP (-zsh)83ec2-user@ip-10-30-... 284-zshdocker exec-itdocker_lamp_1•/vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime:8.3.30Runninganalysison 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfigdefault from-php-cs-fixer.dist.php".5589/558980 100%-zsh86-zsh®100% <47O &7Tue 14 Apr 14:58:21181* Unable to acce...2-88APPFixed 0 of 5589 files in 39.991 seconds, 67.00 MB memory usedWhat's next:Try DockerDebug forseamless,persistentdebugging tools in any container or image → docker debug docker_lamp_1Learn moreat [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHPCS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfig default from".php-cs-fixer.dist.php".5589/5589100%Fixed 0 of 5589 files in 52.171 seconds, 67.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image » docker debug docker_1amp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ||...
|
NULL
|
8909714698384324498
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(all= Support Daily • in 2 mAPP (-zsh)DOCKER981DEV (docker)882APP (-zsh)83ec2-user@ip-10-30-... 284-zshdocker exec-itdocker_lamp_1•/vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHPruntime:8.3.30Runninganalysison 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfigdefault from-php-cs-fixer.dist.php".5589/558980 100%-zsh86-zsh®100% <47O &7Tue 14 Apr 14:58:21181* Unable to acce...2-88APPFixed 0 of 5589 files in 39.991 seconds, 67.00 MB memory usedWhat's next:Try DockerDebug forseamless,persistentdebugging tools in any container or image → docker debug docker_lamp_1Learn moreat [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHPCS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfig default from".php-cs-fixer.dist.php".5589/5589100%Fixed 0 of 5589 files in 52.171 seconds, 67.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image » docker debug docker_1amp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ||...
|
13033
|
|
46014
|
974
|
0
|
2026-04-17T10:16:04.386344+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776420964386_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
support
thank-yous
the_people_of_jiminny
Nikolay Nikolov
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
Steliyan Georgiev
Jira Cloud
Toast
Google Calendar
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
Yesterday 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
11 replies
Last reply today at 1:15 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
Lukas Kovalik
Yesterday at 1:47:49 PM
Yesterday at 1:47 PM
Here is the response GET
https://api.getmembrane.com/integrations/zohocrm
https://api.getmembrane.com/integrations/zohocrm
{
"id": "66fe6c913202f3a165e3c14d",
"name": "Zoho CRM",
"uuid": "e02598b1-2f23-4f88-8fa8-8d9f9d420f89",
"key": "zohocrm",
"state": "READY",
"errors": [],
"revision": "8d27bda5-8eca-46d9-90bd-70f98efd970d",
"createdAt": "2024-10-03T10:06:09.911Z",
"updatedAt": "2026-04-16T10:24:19.276Z",
"isDeactivated": false,
"logoUri": "
https://static.integration.app/connectors/zoho-crm/logo.png
https://static.integration.app/connectors/zoho-crm/logo.png
",
"connectorId": "64a158e7d2605720d232e07b",
"connectorVersion": "3.0.3",
"oAuthCallbackUri": "
https://api.integration.app/oauth-callback
https://api.integration.app/oauth-callback
",
"hasMissingParameters": false,
"hasDocumentation": false,
"hasOperations": true,
"operationsCount": 569,
"hasData": true,
"dataCollectionsCount": 20,
"hasEvents": false,
"eventsCount": 0,
"hasGlobalWebhooks": false,
"hasUdm": true,
"authType": "client-credentials",
"connection": {
"id": "69e0b983da98fa74f98aebfb",
"name": "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client",
"userId": "1ece66c8-feb1-4df1-b321-21607daf4623",
"tenantId": "69e0b3faef3e7b6248189289",
"isTest": false,
"connected": true,
"state": "READY",
"errors": [],
"integrationId": "66fe6c913202f3a165e3c14d",
"externalAppId": "6671653e7e2d642e4e41b0fa",
"authOptionKey": "oauth",
"createdAt": "2026-04-16T10:27:15.579Z",
"updatedAt": "2026-04-16T10:34:08.702Z",
"retryAttempts": 0,
"isDeactivated": false
},
"authOptions": [
{
"key": "auth-proxy",
"type": "proxy",
"title": "Connect via Membrane",
"inputSchema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
},
"ui": {
"schema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
}
}
},
{
"key": "oauth",
"type": "oauth2",
"title": "OAuth 2.0",
"inputSchema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
},
"ui": {
"schema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
}
}
}
]
}
Membrane AI Assistant
APP
Yesterday at 1:49:27 PM
Yesterday at 1:49 PM
Ah, I see now! You're referring to the connection object field in the API response, not webhook events. You're right - there's been a change from
disconnected
to
connected
in the API response.
Looking at your API response:
Old field:
"disconnected": false
New field:
"connected": true
This is a breaking change that affects the logic you built around checking connection status. The boolean logic is also inverted (
disconnected: false
= connection is active, while
connected: true
= connection is active).
Let me escalate this to the team to confirm when this change was introduced and whether both fields are temporarily supported during a transition period, or if you need to update your code immediately to use the
connected
field instead of
disconnected
.
Yesterday at 1:50:02 PM
1:50
I've escalated this to our engineering team to get clarification on the API change. They'll get back to you shortly with details about when this change was introduced and guidance on how to handle it in your code.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Forward message…
Save for later
More actions
Membrane AI Assistant
APP
Yesterday at 2:26:57 PM
Yesterday at 2:26 PM
Good news! I've investigated the API change and here's what I found:
Both fields are still returned - no breaking change!
The API response now includes both:
connected: true
(new canonical field)
disconnected: false
(deprecated but still returned for backward compatibility)
What happened:
On April 3, 2026, we updated the platform to use
connected...
|
[{"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.03046875,"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.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":20,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":20,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":20,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":20,"bounds":{"left":0.07304688,"top":0.66944444,"width":0.040234376,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":20,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.11679687,"top":0.6888889,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":20,"bounds":{"left":0.11992188,"top":0.6888889,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.13632813,"top":0.70416665,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.13632813,"top":0.70416665,"width":0.000390625,"height":0.00069444446},"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":"Stoyan Tanev","depth":20,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":20,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":20,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":20,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.044140626,"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":"Jira Cloud","depth":20,"bounds":{"left":0.07304688,"top":0.87083334,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":20,"bounds":{"left":0.07304688,"top":0.8902778,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":20,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.0359375,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"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":20,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.18085937,"top":0.07986111,"width":0.023828125,"height":0.02638889},"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":18,"bounds":{"left":0.20429687,"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":18,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.1625,"top":0.10069445,"width":0.06640625,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.02890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"bounds":{"left":0.19335938,"top":0.10069445,"width":0.008203125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20234375,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Nov 11th, 2025 at 12:38:55 AM","depth":24,"bounds":{"left":0.20507812,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:38 AM","depth":25,"bounds":{"left":0.20507812,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"Heads up – we’re moving to a new domain and legal name!","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.084375,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"Heads up – we’re moving to a new domain and legal name!","depth":26,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.07773437,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"In the coming days and weeks, we’ll be transitioning from","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.078125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"integration.app","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.0390625,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"integration.app","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.0390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"domain to","depth":24,"bounds":{"left":0.20078126,"top":0.10069445,"width":0.027734375,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"getmembrane.com","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.048046876,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"getmembrane.com","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.048046876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":". You’ll start seeing our website, docs, and console automatically redirect to the new domain.","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.083984375,"height":0.00069444446},"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,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.083984375,"height":0.00069444446},"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,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.084375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"We’ll share the official launch announcement in the next couple of weeks.","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.075,"height":0.00069444446},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.016796876,"height":0.00069444446},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"bounds":{"left":0.17304687,"top":0.10069445,"width":0.002734375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.18007812,"top":0.10069445,"width":0.013671875,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.16289063,"top":0.110416666,"width":0.065625,"height":0.019444445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.02890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"bounds":{"left":0.19335938,"top":0.10069445,"width":0.008203125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20234375,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Dec 15th, 2025 at 7:29:37 PM","depth":24,"bounds":{"left":0.20507812,"top":0.10069445,"width":0.018359374,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:29 PM","depth":25,"bounds":{"left":0.20507812,"top":0.10069445,"width":0.018359374,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Exclusive access","depth":24,"bounds":{"left":0.171875,"top":0.10069445,"width":0.04296875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"We’ve been working on a new capability at","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.07734375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Membrane","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.03046875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"called","depth":24,"bounds":{"left":0.22421876,"top":0.10069445,"width":0.015234375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"self-integration.","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.039453126,"height":0.00069444446},"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,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.08085938,"height":0.00069444446},"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,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.08046875,"height":0.00069444446},"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,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.08164062,"height":0.035416666},"role_description":"text"},{"role":"AXStaticText","text":"Founding Cohort for Self-Integrations","depth":24,"bounds":{"left":0.16210938,"top":0.12291667,"width":0.08320312,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":".","depth":24,"bounds":{"left":0.23398438,"top":0.13819444,"width":0.0015625,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"Read more here:","depth":24,"bounds":{"left":0.16210938,"top":0.15902779,"width":0.04375,"height":0.013194445},"role_description":"text"},{"role":"AXLink","text":"https://self-integration.getmembrane.com","depth":24,"bounds":{"left":0.16210938,"top":0.15902779,"width":0.07734375,"height":0.028472222},"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,"bounds":{"left":0.16210938,"top":0.15902779,"width":0.07734375,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":". Check out","depth":24,"bounds":{"left":0.16210938,"top":0.17430556,"width":0.07890625,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":"self-integration manifesto","depth":24,"bounds":{"left":0.16210938,"top":0.18958333,"width":0.06484375,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":"once in, if you’re interested in the vision and why we are working on this.","depth":24,"bounds":{"left":0.16210938,"top":0.2048611,"width":0.08164062,"height":0.04375},"role_description":"text"},{"role":"AXStaticText","text":"Reply or react a","depth":24,"bounds":{"left":0.16210938,"top":0.25625,"width":0.041796874,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"if you’re interested","depth":24,"bounds":{"left":0.16210938,"top":0.25625,"width":0.07304688,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":"— we’re happy to walk you through it over a very short call.","depth":24,"bounds":{"left":0.16210938,"top":0.27152777,"width":0.07929687,"height":0.04375},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.1765625,"top":0.32847223,"width":0.03828125,"height":0.02013889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.35555556,"width":0.036328126,"height":0.015972223},"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.35694444,"width":0.003515625,"height":0.013194445},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 11:04:11 AM","depth":24,"bounds":{"left":0.20117188,"top":0.35902777,"width":0.02109375,"height":0.011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:04 AM","depth":25,"bounds":{"left":0.20117188,"top":0.35902777,"width":0.02109375,"height":0.011111111},"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,"bounds":{"left":0.16210938,"top":0.37222221,"width":0.08359375,"height":0.12013889},"role_description":"text"},{"role":"AXLink","text":"https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919","depth":25,"bounds":{"left":0.16210938,"top":0.49444443,"width":0.083984375,"height":0.04375},"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,"bounds":{"left":0.16210938,"top":0.49444443,"width":0.083984375,"height":0.04375},"role_description":"text"},{"role":"AXStaticText","text":". Could you please have a look if there is any change?","depth":25,"bounds":{"left":0.16210938,"top":0.525,"width":0.084375,"height":0.028472222},"role_description":"text"},{"role":"AXButton","text":"Remove preview","depth":26,"bounds":{"left":0.15429688,"top":0.55694443,"width":0.0078125,"height":0.020833334},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":26,"bounds":{"left":0.17773438,"top":0.55694443,"width":0.037109375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":28,"bounds":{"left":0.17773438,"top":0.55833334,"width":0.035546876,"height":0.013194445},"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,"bounds":{"left":0.17929688,"top":0.57430553,"width":0.06328125,"height":0.12013889},"role_description":"text"},{"role":"AXLink","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":27,"bounds":{"left":0.17929688,"top":0.68125,"width":0.06289063,"height":0.059027776},"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,"bounds":{"left":0.17929688,"top":0.68125,"width":0.06289063,"height":0.059027776},"role_description":"text"},{"role":"AXStaticText","text":") upon successful login. This functionality was working just a few weeks ago.","depth":27,"bounds":{"left":0.17929688,"top":0.7270833,"width":0.059765626,"height":0.07430556},"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":26,"bounds":{"left":0.16835937,"top":0.8048611,"width":0.016796876,"height":0.011805556},"role_description":"text"},{"role":"AXLink","text":"Thread in jiminny-x-integration-app","depth":26,"bounds":{"left":0.16835937,"top":0.8208333,"width":0.07070313,"height":0.02638889},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thread in","depth":27,"bounds":{"left":0.16835937,"top":0.8208333,"width":0.020703126,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":27,"bounds":{"left":0.16835937,"top":0.8208333,"width":0.07070313,"height":0.02638889},"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"bounds":{"left":0.17578125,"top":0.8361111,"width":0.00390625,"height":0.011111111},"role_description":"text"},{"role":"AXLink","text":"Jun 3rd, 2025","depth":26,"bounds":{"left":0.17929688,"top":0.8361111,"width":0.02890625,"height":0.011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jun 3rd, 2025","depth":27,"bounds":{"left":0.17929688,"top":0.8361111,"width":0.02890625,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"bounds":{"left":0.2078125,"top":0.8361111,"width":0.003515625,"height":0.011111111},"role_description":"text"},{"role":"AXLink","text":"View message","depth":26,"bounds":{"left":0.2109375,"top":0.8361111,"width":0.0296875,"height":0.011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View message","depth":27,"bounds":{"left":0.2109375,"top":0.8361111,"width":0.0296875,"height":0.011111111},"role_description":"text"},{"role":"AXButton","text":"11 replies","depth":24,"bounds":{"left":0.18515626,"top":0.85555553,"width":0.022265624,"height":0.013888889},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply today at 1:15 PM","depth":25,"bounds":{"left":0.21015625,"top":0.85625,"width":0.026953125,"height":0.011805556},"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"bounds":{"left":0.21015625,"top":0.85625,"width":0.02734375,"height":0.011805556},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.13710937,"top":0.34375,"width":0.009375,"height":0.022916667},"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,"bounds":{"left":0.14648438,"top":0.34375,"width":0.0125,"height":0.022916667},"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,"bounds":{"left":0.15898438,"top":0.34375,"width":0.0125,"height":0.022916667},"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,"bounds":{"left":0.17148438,"top":0.34375,"width":0.0125,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply to thread","depth":26,"bounds":{"left":0.18398437,"top":0.34375,"width":0.0125,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.19648437,"top":0.34375,"width":0.0125,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.20898438,"top":0.34375,"width":0.0125,"height":0.022916667},"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,"bounds":{"left":0.22148438,"top":0.34375,"width":0.0125,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.23398438,"top":0.34375,"width":0.0125,"height":0.022916667},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"10 external people","depth":23,"bounds":{"left":0.16054687,"top":0.8909722,"width":0.042578124,"height":0.0125},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"are from","depth":23,"bounds":{"left":0.20273438,"top":0.89166665,"width":0.0203125,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"Membrane","depth":23,"bounds":{"left":0.16054687,"top":0.90416664,"width":0.02421875,"height":0.011111111},"role_description":"text"},{"role":"AXTextArea","text":"","depth":24,"bounds":{"left":0.1453125,"top":0.925,"width":0.10078125,"height":0.02638889},"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.278125,"top":0.07986111,"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":23,"bounds":{"left":0.3140625,"top":0.07986111,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:47:49 PM","depth":23,"bounds":{"left":0.3171875,"top":0.07986111,"width":0.04453125,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Yesterday at 1:47 PM","depth":24,"bounds":{"left":0.3171875,"top":0.07986111,"width":0.04453125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Here is the response GET","depth":24,"bounds":{"left":0.278125,"top":0.07986111,"width":0.06679688,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://api.getmembrane.com/integrations/zohocrm","depth":24,"bounds":{"left":0.34453124,"top":0.07986111,"width":0.13359375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://api.getmembrane.com/integrations/zohocrm","depth":25,"bounds":{"left":0.34453124,"top":0.07986111,"width":0.13359375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"{\n\t\"id\": \"66fe6c913202f3a165e3c14d\",\n\t\"name\": \"Zoho CRM\",\n\t\"uuid\": \"e02598b1-2f23-4f88-8fa8-8d9f9d420f89\",\n\t\"key\": \"zohocrm\",\n\t\"state\": \"READY\",\n\t\"errors\": [],\n\t\"revision\": \"8d27bda5-8eca-46d9-90bd-70f98efd970d\",\n\t\"createdAt\": \"2024-10-03T10:06:09.911Z\",\n\t\"updatedAt\": \"2026-04-16T10:24:19.276Z\",\n\t\"isDeactivated\": false,\n\t\"logoUri\": \"","depth":24,"bounds":{"left":0.28164062,"top":0.07986111,"width":0.15507813,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://static.integration.app/connectors/zoho-crm/logo.png","depth":24,"bounds":{"left":0.28164062,"top":0.07986111,"width":0.17734376,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://static.integration.app/connectors/zoho-crm/logo.png","depth":25,"bounds":{"left":0.28164062,"top":0.07986111,"width":0.17734376,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\",\n\t\"connectorId\": \"64a158e7d2605720d232e07b\",\n\t\"connectorVersion\": \"3.0.3\",\n\t\"oAuthCallbackUri\": \"","depth":24,"bounds":{"left":0.28164062,"top":0.07986111,"width":0.1296875,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://api.integration.app/oauth-callback","depth":24,"bounds":{"left":0.35195312,"top":0.07986111,"width":0.11835937,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://api.integration.app/oauth-callback","depth":25,"bounds":{"left":0.35195312,"top":0.07986111,"width":0.11835937,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\",\n\t\"hasMissingParameters\": false,\n\t\"hasDocumentation\": false,\n\t\"hasOperations\": true,\n\t\"operationsCount\": 569,\n\t\"hasData\": true,\n\t\"dataCollectionsCount\": 20,\n\t\"hasEvents\": false,\n\t\"eventsCount\": 0,\n\t\"hasGlobalWebhooks\": false,\n\t\"hasUdm\": true,\n\t\"authType\": \"client-credentials\",\n\t\"connection\": {\n\t\t\"id\": \"69e0b983da98fa74f98aebfb\",\n\t\t\"name\": \"Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client\",\n\t\t\"userId\": \"1ece66c8-feb1-4df1-b321-21607daf4623\",\n\t\t\"tenantId\": \"69e0b3faef3e7b6248189289\",\n\t\t\"isTest\": false,\n\t\t\"connected\": true,\n\t\t\"state\": \"READY\",\n\t\t\"errors\": [],\n\t\t\"integrationId\": \"66fe6c913202f3a165e3c14d\",\n\t\t\"externalAppId\": \"6671653e7e2d642e4e41b0fa\",\n\t\t\"authOptionKey\": \"oauth\",\n\t\t\"createdAt\": \"2026-04-16T10:27:15.579Z\",\n\t\t\"updatedAt\": \"2026-04-16T10:34:08.702Z\",\n\t\t\"retryAttempts\": 0,\n\t\t\"isDeactivated\": false\n\t},\n\t\"authOptions\": [\n\t\t{\n\t\t\t\"key\": \"auth-proxy\",\n\t\t\t\"type\": \"proxy\",\n\t\t\t\"title\": \"Connect via Membrane\",\n\t\t\t\"inputSchema\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"account_type\": {\n\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\t\"developer\",\n\t\t\t\t\t\t\t\"sandbox\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"description\": \"What is the type of your Zoho account you want to connect to?\",\n\t\t\t\t\t\t\"default\": \"production\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"ui\": {\n\t\t\t\t\"schema\": {\n\t\t\t\t\t\"type\": \"object\",\n\t\t\t\t\t\"properties\": {\n\t\t\t\t\t\t\"account_type\": {\n\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\t\t\"developer\",\n\t\t\t\t\t\t\t\t\"sandbox\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"description\": \"What is the type of your Zoho account you want to connect to?\",\n\t\t\t\t\t\t\t\"default\": \"production\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"key\": \"oauth\",\n\t\t\t\"type\": \"oauth2\",\n\t\t\t\"title\": \"OAuth 2.0\",\n\t\t\t\"inputSchema\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"account_type\": {\n\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\t\"developer\",\n\t\t\t\t\t\t\t\"sandbox\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"description\": \"What is the type of your Zoho account you want to connect to?\",\n\t\t\t\t\t\t\"default\": \"production\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"ui\": {\n\t\t\t\t\"schema\": {\n\t\t\t\t\t\"type\": \"object\",\n\t\t\t\t\t\"properties\": {\n\t\t\t\t\t\t\"account_type\": {\n\t\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\t\"enum\": [\n\t\t\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\t\t\"developer\",\n\t\t\t\t\t\t\t\t\"sandbox\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"description\": \"What is the type of your Zoho account you want to connect to?\",\n\t\t\t\t\t\t\t\"default\": \"production\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}","depth":24,"bounds":{"left":0.28164062,"top":0.07986111,"width":0.20742187,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Membrane AI Assistant","depth":23,"bounds":{"left":0.278125,"top":0.07986111,"width":0.06171875,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":23,"bounds":{"left":0.3421875,"top":0.07986111,"width":0.0078125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.35078126,"top":0.07986111,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:49:27 PM","depth":23,"bounds":{"left":0.35390624,"top":0.07986111,"width":0.044140626,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Yesterday at 1:49 PM","depth":24,"bounds":{"left":0.35390624,"top":0.07986111,"width":0.044140626,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Ah, I see now! You're referring to the connection object field in the API response, not webhook events. You're right - there's been a change from","depth":23,"bounds":{"left":0.278125,"top":0.07986111,"width":0.20703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"disconnected","depth":24,"bounds":{"left":0.43984374,"top":0.07986111,"width":0.033984374,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"to","depth":23,"bounds":{"left":0.475,"top":0.07986111,"width":0.007421875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"connected","depth":24,"bounds":{"left":0.2796875,"top":0.07986111,"width":0.025390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"in the API response.","depth":23,"bounds":{"left":0.30625,"top":0.07986111,"width":0.053125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Looking at your API response:","depth":23,"bounds":{"left":0.278125,"top":0.0875,"width":0.076171875,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.27929688,"top":0.104166664,"width":0.00625,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"Old field:","depth":25,"bounds":{"left":0.2890625,"top":0.10277778,"width":0.025,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"\"disconnected\": false","depth":26,"bounds":{"left":0.31523436,"top":0.10486111,"width":0.059375,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.27929688,"top":0.119444445,"width":0.00625,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"New field:","depth":25,"bounds":{"left":0.2890625,"top":0.11805555,"width":0.027734375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"\"connected\": true","depth":26,"bounds":{"left":0.31796876,"top":0.12013889,"width":0.048046876,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"This is a breaking change that affects the logic you built around checking connection status. The boolean logic is also inverted (","depth":23,"bounds":{"left":0.278125,"top":0.13333334,"width":0.18554688,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":"disconnected: false","depth":24,"bounds":{"left":0.41601562,"top":0.15069444,"width":0.05390625,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"= connection is active, while","depth":23,"bounds":{"left":0.278125,"top":0.14861111,"width":0.19804688,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":"connected: true","depth":24,"bounds":{"left":0.3484375,"top":0.16597222,"width":0.042578124,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"= connection is active).","depth":23,"bounds":{"left":0.3921875,"top":0.16388889,"width":0.060546875,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"Let me escalate this to the team to confirm when this change was introduced and whether both fields are temporarily supported during a transition period, or if you need to update your code immediately to use the","depth":23,"bounds":{"left":0.278125,"top":0.18472221,"width":0.20859376,"height":0.04375},"role_description":"text"},{"role":"AXStaticText","text":"connected","depth":24,"bounds":{"left":0.40664062,"top":0.21736111,"width":0.02578125,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"field instead of","depth":23,"bounds":{"left":0.43359375,"top":0.21527778,"width":0.03984375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"disconnected","depth":24,"bounds":{"left":0.2796875,"top":0.2326389,"width":0.033984374,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":".","depth":23,"bounds":{"left":0.31484374,"top":0.23055555,"width":0.0015625,"height":0.013194445},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:50:02 PM","depth":24,"bounds":{"left":0.265625,"top":0.2534722,"width":0.009375,"height":0.011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50","depth":25,"bounds":{"left":0.265625,"top":0.2534722,"width":0.009375,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"I've escalated this to our engineering team to get clarification on the API change. They'll get back to you shortly with details about when this change was introduced and guidance on how to handle it in your code.","depth":24,"bounds":{"left":0.278125,"top":0.25138888,"width":0.21132812,"height":0.04375},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.4921875,"top":0.22986111,"width":0.000390625,"height":0.022916667},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane AI Assistant","depth":23,"bounds":{"left":0.278125,"top":0.3013889,"width":0.06171875,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":23,"bounds":{"left":0.3421875,"top":0.3048611,"width":0.0078125,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.35078126,"top":0.30277777,"width":0.003515625,"height":0.013194445},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 2:26:57 PM","depth":23,"bounds":{"left":0.35390624,"top":0.3048611,"width":0.044140626,"height":0.011111111},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Yesterday at 2:26 PM","depth":24,"bounds":{"left":0.35390624,"top":0.3048611,"width":0.044140626,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"Good news! I've investigated the API change and here's what I found:","depth":23,"bounds":{"left":0.278125,"top":0.31805557,"width":0.17695312,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"Both fields are still returned - no breaking change!","depth":23,"bounds":{"left":0.278125,"top":0.33888888,"width":0.13007812,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"The API response now includes both:","depth":23,"bounds":{"left":0.278125,"top":0.35972223,"width":0.09492187,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.27929688,"top":0.37638888,"width":0.00625,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"connected: true","depth":26,"bounds":{"left":0.290625,"top":0.37708333,"width":0.042578124,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"(new canonical field)","depth":25,"bounds":{"left":0.334375,"top":0.375,"width":0.05390625,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.27929688,"top":0.39166668,"width":0.00625,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"disconnected: false","depth":26,"bounds":{"left":0.290625,"top":0.3923611,"width":0.053515624,"height":0.011111111},"role_description":"text"},{"role":"AXStaticText","text":"(deprecated but still returned for backward compatibility)","depth":25,"bounds":{"left":0.2890625,"top":0.39027777,"width":0.16796875,"height":0.028472222},"role_description":"text"},{"role":"AXStaticText","text":"What happened:","depth":23,"bounds":{"left":0.278125,"top":0.4263889,"width":0.043359376,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"On April 3, 2026, we updated the platform to use","depth":23,"bounds":{"left":0.278125,"top":0.44166666,"width":0.128125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"connected","depth":24,"bounds":{"left":0.4074219,"top":0.44375,"width":0.025390625,"height":0.011111111},"role_description":"text"}]...
|
8909469404650655808
|
-3507682511467611958
|
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
support
thank-yous
the_people_of_jiminny
Nikolay Nikolov
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
Steliyan Georgiev
Jira Cloud
Toast
Google Calendar
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
Yesterday 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
11 replies
Last reply today at 1:15 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
Lukas Kovalik
Yesterday at 1:47:49 PM
Yesterday at 1:47 PM
Here is the response GET
https://api.getmembrane.com/integrations/zohocrm
https://api.getmembrane.com/integrations/zohocrm
{
"id": "66fe6c913202f3a165e3c14d",
"name": "Zoho CRM",
"uuid": "e02598b1-2f23-4f88-8fa8-8d9f9d420f89",
"key": "zohocrm",
"state": "READY",
"errors": [],
"revision": "8d27bda5-8eca-46d9-90bd-70f98efd970d",
"createdAt": "2024-10-03T10:06:09.911Z",
"updatedAt": "2026-04-16T10:24:19.276Z",
"isDeactivated": false,
"logoUri": "
https://static.integration.app/connectors/zoho-crm/logo.png
https://static.integration.app/connectors/zoho-crm/logo.png
",
"connectorId": "64a158e7d2605720d232e07b",
"connectorVersion": "3.0.3",
"oAuthCallbackUri": "
https://api.integration.app/oauth-callback
https://api.integration.app/oauth-callback
",
"hasMissingParameters": false,
"hasDocumentation": false,
"hasOperations": true,
"operationsCount": 569,
"hasData": true,
"dataCollectionsCount": 20,
"hasEvents": false,
"eventsCount": 0,
"hasGlobalWebhooks": false,
"hasUdm": true,
"authType": "client-credentials",
"connection": {
"id": "69e0b983da98fa74f98aebfb",
"name": "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client",
"userId": "1ece66c8-feb1-4df1-b321-21607daf4623",
"tenantId": "69e0b3faef3e7b6248189289",
"isTest": false,
"connected": true,
"state": "READY",
"errors": [],
"integrationId": "66fe6c913202f3a165e3c14d",
"externalAppId": "6671653e7e2d642e4e41b0fa",
"authOptionKey": "oauth",
"createdAt": "2026-04-16T10:27:15.579Z",
"updatedAt": "2026-04-16T10:34:08.702Z",
"retryAttempts": 0,
"isDeactivated": false
},
"authOptions": [
{
"key": "auth-proxy",
"type": "proxy",
"title": "Connect via Membrane",
"inputSchema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
},
"ui": {
"schema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
}
}
},
{
"key": "oauth",
"type": "oauth2",
"title": "OAuth 2.0",
"inputSchema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
},
"ui": {
"schema": {
"type": "object",
"properties": {
"account_type": {
"type": "string",
"enum": [
"production",
"developer",
"sandbox"
],
"description": "What is the type of your Zoho account you want to connect to?",
"default": "production"
}
}
}
}
}
]
}
Membrane AI Assistant
APP
Yesterday at 1:49:27 PM
Yesterday at 1:49 PM
Ah, I see now! You're referring to the connection object field in the API response, not webhook events. You're right - there's been a change from
disconnected
to
connected
in the API response.
Looking at your API response:
Old field:
"disconnected": false
New field:
"connected": true
This is a breaking change that affects the logic you built around checking connection status. The boolean logic is also inverted (
disconnected: false
= connection is active, while
connected: true
= connection is active).
Let me escalate this to the team to confirm when this change was introduced and whether both fields are temporarily supported during a transition period, or if you need to update your code immediately to use the
connected
field instead of
disconnected
.
Yesterday at 1:50:02 PM
1:50
I've escalated this to our engineering team to get clarification on the API change. They'll get back to you shortly with details about when this change was introduced and guidance on how to handle it in your code.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Forward message…
Save for later
More actions
Membrane AI Assistant
APP
Yesterday at 2:26:57 PM
Yesterday at 2:26 PM
Good news! I've investigated the API change and here's what I found:
Both fields are still returned - no breaking change!
The API response now includes both:
connected: true
(new canonical field)
disconnected: false
(deprecated but still returned for backward compatibility)
What happened:
On April 3, 2026, we updated the platform to use
connected
SlackFile A EditViewJiminny ...DMs= Unreads@ Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMoreohannes# ai-chapter# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platrorm-uckets# product_launchesac random* releases# support# thank-yous# the people of jimi...•- Direct messages0. Nikolav Nikolov(3 Aneliya Angelova, ...®. Galya Dimitrova lio Stoyan TanevC. Vasil Vasilev. Nikolay Ivanov®. Aneliya Angelovae VesR. Steliyan GeorgievApps# Jira CloudToastGoogle Cale…..HistoryWindowHelpQ Search Jiminny Inc& jiminn... & 18•MessagesDecember 15th, 2025crosePartrers as vart ur vur roundingCohort for Self-Integrations.Read more here: https://self-integration.getmembrane.com.Check out self-integrationmanifesto once in, if you'reinterested in the vision and whywe are working on thisReply or react a if you'reinterested - we're happy towalk vou throuen it over a vervSnon calllYesterdavyLukas Kovalik 11:04 AMHi guys, we have one issue weusea to nave derore regarainginecutnorsarontor cono ckv.When the clients go through allsteps and login it just returnshim back to the login screen. Ibelieve this is the reference tothe previous conversationhttps://jiminny.slack.com/archives/CO7RAC4U86M/p1748957897141919. Could you please havea look if there is any change?e Lukas Kovalik1. There appears to be arecent change in theSUK OAuth mechanism.Wnen a new clientconnees to ine da.rormnusine cono, we nelonger receive a Promise(https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection)upon successful login.This functionality wasworking just a fewweeks ago.edlledThread in uminnv-x-integraton.app Jun sra. 2025 View messageĐ11 replies Last reply...10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadLooking at your API response:• Old neld: "aisconnected: falseNew neler connected"trueThis is a breaking change that affects the logic you built around checkingconnection status. The boolean logic is also inverted (discofalse=connection is active, while [connected: true] = connection is active).Let me escalate this to the team to confirm when this change was introduced andwhether both fields are temporarily supported during a transition period, or if youneed to update your code immediately to use the connected field instead ofdisconnected.I've escalated this to our engineering team to get clarification on the API change.They'll get back to you shortly with details about when this change was introducedand guidance on how to handle it in your code.Membrane Al Assistant APP Yesterday at 2:26 PMGood news! I've investigated the API change and here's what I found:Both nelds are still returned - no breaking change!The API response now includes both:connected: true (new canonical field)disconnected: false (deprecated but still returned for backwardcompatibility)What happened:On April 3, 2026, we updated the platform to use (connected as the primary fieldinstead of disconnected for better code readability. However, to ensure backwardcompatibility, the API automatically derives and includes the (disconnected field inallresponses alsconnected = connectea.What this means for you:rour exisuing code using ausconnectea will conunue to work• No immediate code changes are required• You can migrate to using |connected whenever convenient• The (disconnected field is marked as deprecated but there's no removaltimeline announcedWhen you do migrate, remember the logic is inverted:disconnected: false = connected: true (connection is active)disconnected: true = connected: false (connection needs re-authentication)Lukas Kovalik Just nowIf you look at the payload above there is no disconnected so it is not backwardcompatible. Is there scenario where I would receive disconnected instead ofconnected? Also can we revert the connection window back that was there before Iupgraded the connector? We don't want to show Connect via Membrane.3 files -8 Download all1010 external people are from MembraneReply…Also send to jiminny-x-integration-app, 50 ll{ Support Daily • in 1h 44 mA100% C4Fri 17 Apr 13:16:04AX Translate to English XnShareve and delete global picklisteM Object Query Language COQL¡ccess tne aoove cala Trom my Lono account.neleCLiв 0=xing your Zoho CRM accounting your Zoho CRM account...
|
NULL
|
|
44833
|
947
|
9
|
2026-04-17T09:08:31.102914+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776416911102_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsW FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpmeet.google.com/xpx-omah-rknllian Kyuchukov (Presenting, annotating)‹$0la6lSupport Daily - in 2h 52 m100% <478 • Fri 17 Apr 12:08:30+18HelpJY-13296: Retry AJ when some ouestions fall vmyDebugCommand> ® a handie© DetermineUpdateOperationAction© UpdateCrmTargetDto© RunActivityAiAnalysisListenerOHuoooneenooeeneehorewebnooktvertprooesson© OpportunityStageUpdated© Opportunity@ DebugCommand© JiminnyDebugCommand >4 442213 20<?phpdectare(strict_types=1);|use ..-9 1410 13* Class JininnyOebugConnand12 1113 1014 g* Bnackase Jininny|Console\Comeands1 usage & Nikola Peokansii +1 *15 BDclass Jaainnyocou coccano exteoos concano16 2117 669protected Ssignature = "Jininny:debug";18 $..•0O• • 0 A P д 8• F17r 1208U SubmitAudioFileServiceTest - D OCascadeNew Cascadellian KyuchukovNikolay NikolovWCascade Code M 0Kick off a new project. Make changeacross your entire codebase.Sopportunity • |Jininny|Models|Opportunity:: find( ld: 115):Sopportunity-›stage_id = '100':Sopportunity-snane = 'Loren Ipsun2:Sopportunity-›saveO):Vasil VasilevMihail MihaylovAsk anything (XOL)•Ocoov* Windsurf Teams (Pre-Retease) Symfony 23:44 LF UTF-8 C 4 spaces|master ©17Lukas Kovalik12:08 PM|Daily - ProcessingLộ3...
|
NULL
|
8909281507502439332
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsW FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpmeet.google.com/xpx-omah-rknllian Kyuchukov (Presenting, annotating)‹$0la6lSupport Daily - in 2h 52 m100% <478 • Fri 17 Apr 12:08:30+18HelpJY-13296: Retry AJ when some ouestions fall vmyDebugCommand> ® a handie© DetermineUpdateOperationAction© UpdateCrmTargetDto© RunActivityAiAnalysisListenerOHuoooneenooeeneehorewebnooktvertprooesson© OpportunityStageUpdated© Opportunity@ DebugCommand© JiminnyDebugCommand >4 442213 20<?phpdectare(strict_types=1);|use ..-9 1410 13* Class JininnyOebugConnand12 1113 1014 g* Bnackase Jininny|Console\Comeands1 usage & Nikola Peokansii +1 *15 BDclass Jaainnyocou coccano exteoos concano16 2117 669protected Ssignature = "Jininny:debug";18 $..•0O• • 0 A P д 8• F17r 1208U SubmitAudioFileServiceTest - D OCascadeNew Cascadellian KyuchukovNikolay NikolovWCascade Code M 0Kick off a new project. Make changeacross your entire codebase.Sopportunity • |Jininny|Models|Opportunity:: find( ld: 115):Sopportunity-›stage_id = '100':Sopportunity-snane = 'Loren Ipsun2:Sopportunity-›saveO):Vasil VasilevMihail MihaylovAsk anything (XOL)•Ocoov* Windsurf Teams (Pre-Retease) Symfony 23:44 LF UTF-8 C 4 spaces|master ©17Lukas Kovalik12:08 PM|Daily - ProcessingLộ3...
|
NULL
|
|
16783
|
367
|
70
|
2026-04-14T15:28:28.004956+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776180508004_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
3199221710031/45toCastle Age--Villager Created-Gam 3199221710031/45toCastle Age--Villager Created-Game Paused (P)Click to select this villager.Town Center0/159 5/7kovalfklukas (Britons))Creating 7%Villager2400/24002 Yekuno Amlak: 1593/15936 Prithviraj Chauhan: 1544/15448 Ellac the Hun: 1543/15433 Mari Djata I: 1523/15235 Danylo Kobiakovych: 1509/15097 Vikramaditya I: 1506/1506kovaliklukas: 1490/14904 Wen Tianxiang: 1468/1468BEE...
|
NULL
|
8909242543427023724
|
NULL
|
click
|
ocr
|
NULL
|
3199221710031/45toCastle Age--Villager Created-Gam 3199221710031/45toCastle Age--Villager Created-Game Paused (P)Click to select this villager.Town Center0/159 5/7kovalfklukas (Britons))Creating 7%Villager2400/24002 Yekuno Amlak: 1593/15936 Prithviraj Chauhan: 1544/15448 Ellac the Hun: 1543/15433 Mari Djata I: 1523/15235 Danylo Kobiakovych: 1509/15097 Vikramaditya I: 1506/1506kovaliklukas: 1490/14904 Wen Tianxiang: 1468/1468BEE...
|
16781
|
|
22393
|
488
|
9
|
2026-04-15T10:40:20.848744+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776249620848_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpEDHomeDMsActi +SlackFileEditViewGoHistoryWindowHelpEDHomeDMsActivityFilesLater..•More+→CSearch Jiminny IncJiminny ...abExternal connections# Starred& platform-inner-teamChannels# 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 jimi...Direct messagesStoyan Tanev• Ves@ Cala DimitravoStoyan Tanev6 0• MessagesAdd canvasO Filesstoyan tanevT'SZ PIMДобре,Thursday, March 26thcrm: sync-opportunity--teamId+php artisan--fromLukas Kovalik 1:53 PMда и добави стратегия ако искаш на задH1Today ~NewStoyan Tanev E1:24 PMЗдрасти, имаме ли логове от конектвания наинтеграция?понеже сега бях на среща с клиент итръгнахме да вързваме Зохо, и просто серефрешва страницатаи пак ни врьща в началотоhttps://app.jiminny.com/export/wmbfq6UIOHluXIRatejU6t6PHzAhyVUdNiObCr2tOHy6fLwooNJTALukas Kovalik 1:33 PMздрасти, трябва да го прегледам, но почтисьм сигурен че не е при нас, ако се наложище пиша на intergration-appможе ли да отвориш тикет?Stoyan Tanev |Да пускам го1:34 PMMessage Stoyan TanevIn a meeting • Googl...+Aa= Support Daily - in 1h 20 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentVTDecoderXPCServiceFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)claudeFirefoxCP Isolated Web ContentNotion Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentClaude Helper (Renderer)ClaudeFirefoxCP Isolated Web ContentMEMORY PRESSUREMem...2,15 GB1,13 GB957,9 MB882,9 MB841,9 MB760,8 MB726,8 MB593,5 MB524,5 MB476,0 MB448,5 MB439,9 MB426,1 MB425,5 MB422,4 MB390,3 MB377,7 MB370,5 MB337,5 MB327,9 MB320,6 MB311,7 MB293,6 MB280,5 MB239,5 MB238,9 MB190,0 MB184,1 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 13:40:20CPUMemoryDiskThreads38232677842512262523152330262726221513242128726156027EnergyPorts60219 1361257421 20319 350124167251127120185118245124125126119172721203281261 789122207718126PID74060407429748014146648424203074065146733671335276418633548080193583143652430164817326548509103689811483583348785613860519604914829816,00 GB13,67 GB<2,31 GB3,53 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,56 GB3,00 GB5,52 GB...
|
NULL
|
8908995093601638980
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpEDHomeDMsActi +SlackFileEditViewGoHistoryWindowHelpEDHomeDMsActivityFilesLater..•More+→CSearch Jiminny IncJiminny ...abExternal connections# Starred& platform-inner-teamChannels# 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 jimi...Direct messagesStoyan Tanev• Ves@ Cala DimitravoStoyan Tanev6 0• MessagesAdd canvasO Filesstoyan tanevT'SZ PIMДобре,Thursday, March 26thcrm: sync-opportunity--teamId+php artisan--fromLukas Kovalik 1:53 PMда и добави стратегия ако искаш на задH1Today ~NewStoyan Tanev E1:24 PMЗдрасти, имаме ли логове от конектвания наинтеграция?понеже сега бях на среща с клиент итръгнахме да вързваме Зохо, и просто серефрешва страницатаи пак ни врьща в началотоhttps://app.jiminny.com/export/wmbfq6UIOHluXIRatejU6t6PHzAhyVUdNiObCr2tOHy6fLwooNJTALukas Kovalik 1:33 PMздрасти, трябва да го прегледам, но почтисьм сигурен че не е при нас, ако се наложище пиша на intergration-appможе ли да отвориш тикет?Stoyan Tanev |Да пускам го1:34 PMMessage Stoyan TanevIn a meeting • Googl...+Aa= Support Daily - in 1h 20 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentVTDecoderXPCServiceFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)claudeFirefoxCP Isolated Web ContentNotion Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentClaude Helper (Renderer)ClaudeFirefoxCP Isolated Web ContentMEMORY PRESSUREMem...2,15 GB1,13 GB957,9 MB882,9 MB841,9 MB760,8 MB726,8 MB593,5 MB524,5 MB476,0 MB448,5 MB439,9 MB426,1 MB425,5 MB422,4 MB390,3 MB377,7 MB370,5 MB337,5 MB327,9 MB320,6 MB311,7 MB293,6 MB280,5 MB239,5 MB238,9 MB190,0 MB184,1 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 13:40:20CPUMemoryDiskThreads38232677842512262523152330262726221513242128726156027EnergyPorts60219 1361257421 20319 350124167251127120185118245124125126119172721203281261 789122207718126PID74060407429748014146648424203074065146733671335276418633548080193583143652430164817326548509103689811483583348785613860519604914829816,00 GB13,67 GB<2,31 GB3,53 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,56 GB3,00 GB5,52 GB...
|
22391
|
|
51219
|
1106
|
3
|
2026-04-18T10:50:50.302915+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-18/1776 /Users/lukas/.screenpipe/data/data/2026-04-18/1776509450302_m2.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Customize
Artifacts
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
Reviewing recent conversation highlights
More options for Reviewing recent conversation highlights
Screenpipe WAL processing when stopped
More options for Screenpipe WAL processing when stopped
Mac aliases not recognized
More options for Mac aliases not recognized
Boosteroid still recording despite ignored windows setting
More options for Boosteroid still recording despite ignored windows setting
Missing JavaScript promise in authorization response
More options for Missing JavaScript promise in authorization response
Linux SQLite UI for NAS
More options for Linux SQLite UI for NAS
Claude API 500 internal server error
More options for Claude API 500 internal server error
Screenpipe query capabilities and usage
More options for Screenpipe query capabilities and usage
eGPU compatibility with Mac mini and Studio
More options for eGPU compatibility with Mac mini and Studio
Understanding OpenRouter API gateway
More options for Understanding OpenRouter API gateway
Screenpipe 14-day retention explained
More options for Screenpipe 14-day retention explained
Reddit homepage feed overview
More options for Reddit homepage feed overview
Docker container not visible in console
More options for Docker container not visible in console
DIA browser RAM configuration
More options for DIA browser RAM configuration
Screenpipe company background
More options for Screenpipe company background
DSK Bank Bulgaria secure investing explained
More options for DSK Bank Bulgaria secure investing explained
Building a comprehensive personal homelab system
More options for Building a comprehensive personal homelab system
Importing Google Timeline data to Owntracks
More options for Importing Google Timeline data to Owntracks
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Screenpipe free version guide
More options for Screenpipe free version guide
Updated to 1.3109.0
Relaunch to apply
Relaunch
Lukas Kovalik
Lukas Kovalik
Get apps and extensions
Screenpipe WAL processing when stopped
Screenpipe WAL processing when stopped
More options for Screenpipe WAL processing when stopped
Open sidebar
Share chat
how to make the screenpipe wal being processed. It seems it is not working when the screenpipe is stopped
17 Apr
Retry
Edit
Copy
WAL (Write-Ahead Log) in SQLite needs to be checkpointed to merge pending data into the main database file. When Screenpipe stops, the WAL may not be fully checkpointed.
The issue
The issue
SQLite WAL mode keeps a separate
.sqlite-wal
file. Data there is "pending" until a checkpoint runs. Screenpipe normally handles this while running, but if it stops abruptly or you query while it's stopped, the WAL data may appear missing to external readers.
Solutions
Solutions
Option 1: Force a checkpoint manually (safest)
Copy to clipboard
bash
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
This flushes all WAL data into the main DB file and truncates the WAL. Run this after Screenpipe stops.
Option 2: Make your queries WAL-aware
When querying with
sqlite3
directly, open in WAL mode explicitly so it reads both the DB and WAL together:
Copy to clipboard
bash
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA journal_mode=WAL; SELECT ..."
Actually,
sqlite3
already reads WAL automatically — but only if the WAL file is present and not corrupted. The real fix is ensuring the connection sees both files.
Option 3: Add to your
spq
alias
Update the alias to always checkpoint first:
Copy to clipboard
bash
alias
spq
=
'sqlite3 -json ~/.screenpipe/db.sqlite'
alias
spqcheckpoint
=
'sqlite3 ~/.screenpipe/db.sqlite "PRAGMA wal_checkpoint(TRUNCATE);" && echo "WAL checkpointed"'
Option 4: Checkpoint on Screenpipe shutdown (via a wrapper script)
If you start Screenpipe via a script, wrap it:
Copy to clipboard
bash
#!/bin/bash
screenpipe
"
$@
"
# On exit (Ctrl+C or normal stop), checkpoint WAL
echo
"Screenpipe stopped. Checkpointing WAL..."
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
echo
"Done."
Quick diagnosis
Quick diagnosis
Check if a WAL file exists and its size:
Copy to clipboard
bash
ls
-lh ~/.screenpipe/db.sqlite*
If
db.sqlite-wal
is large (MBs), that's unprocessed data. After checkpointing it should shrink to near 0.
Recommended approach:
Use Option 1 whenever you want to query after stopping Screenpipe, and optionally wrap it in your
screenpipe-day.sh
report script at the top.
Copy
Give positive feedback
Give negative feedback
Retry
what about jpg to mp4 conversion
17 Apr
Retry
Edit
Copy
That's unrelated to Screenpipe — are you asking about a general tool/command for converting a sequence of JPG images into an MP4 video?
If so,
FFmpeg
is the standard tool:
Image sequence (e.g. frame001.jpg, frame002.jpg...):
Copy to clipboard
bash
ffmpeg -framerate
24
-i frame%03d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4
Single JPG as a still video (e.g. 5 seconds):
Copy to clipboard
bash
ffmpeg -loop
1
-i input.jpg -t
5
-c:v libx264 -pix_fmt yuv420p output.mp4
All JPGs in a folder (sorted by name):
Copy to clipboard
bash
ffmpeg -framerate
24
-pattern_type glob -i
'*.jpg'
-c:v libx264 -pix_fmt yuv420p output.mp4
Install on Mac:
Copy to clipboard
bash
brew
install
ffmpeg
Let me know the actual use case (slideshow, timelapse, Screenpipe frames, something else?) and I can tailor the command.
Copy
Give positive feedback
Give negative feedback
Retry
but this seems to also happen automatically when the screenpipe is running
17 Apr
Retry
Edit
Copy
Yes, exactly — SQLite automatically checkpoints the WAL when:
The WAL reaches
1000 pages
(default threshold)
A connection closes cleanly
You explicitly call
PRAGMA wal_checkpoint
So when Screenpipe is
running
, the WAL gets checkpointed automatically in the background and you never notice it. The problem only surfaces when Screenpipe is
stopped abruptly
(Ctrl+C, crash, system sleep) and the WAL hasn't been flushed yet at that moment.
The real-world impact
The real-world impact
If you run your
screenpipe-day.sh
or
spq
queries
while Screenpipe is stopped
, you may be missing the last chunk of data that was buffered in the WAL but never checkpointed.
Practical fix
Practical fix
Just prepend the checkpoint to your query script:
Copy to clipboard
bash
# In screenpipe-day.sh or before any spq usage after stopping screenpipe
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
2
>
/dev/null
Or as a shell function in your
.zshrc
:
Copy to clipboard
bash
spqready
(
)
{
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
>
/dev/null
2
>
&1
echo
"WAL checkpointed, DB ready."
}
Then just run
spqready
once after stopping Screenpipe before querying.
Copy
Give positive feedback
Give negative feedback
Retry
how to stop screenpipe but make sure that jpg to mp4 is converted
17 Apr
Retry
Edit
Copy
These two things aren't connected — where does JPG to MP4 come into your Screenpipe setup? Are you thinking of:
Screenpipe's frame captures
(it stores screenshots as JPGs) that you want converted into a timelapse MP4 when stopping?
Something else entirely?
Copy
Give positive feedback
Give negative feedback
Retry
No I mean there are /data/data/{date} with jpgs that are converted to mp4. It seems that if stopped via sp-stop='pkill -f screenpipe && echo '\''screenpipe stopped'\' then these are not converted unless I staert it again
17 Apr
Retry
Edit
Copy
Ah, got it — Screenpipe has an internal process that converts the captured JPG frames into MP4 chunks. When you
pkill -f screenpipe
hard, that conversion pipeline gets killed mid-flight, leaving unconverted JPGs behind.
The fix
The fix
You need to let Screenpipe finish its current conversion before killing it. The cleanest approach is to
send SIGTERM first, then wait
, instead of SIGKILL-equivalent
pkill
:
Copy to clipboard
bash
# Graceful stop — sends SIGTERM and waits
alias
sp-stop
=
'pkill -SIGTERM -f screenpipe && while pgrep -f screenpipe > /dev/null; do sleep 1; done && echo "screenpipe stopped"'
This gives Screenpipe time to finish in-flight conversions before actually dying.
If that's not enough — convert remaining JPGs manually
If that's not enough — convert remaining JPGs manually
After stopping, find any unconverted JPG sequences and process them:
Copy to clipboard
bash
find
~/.screenpipe/data -type d
|
while
read
dir
;
do
jpgs
=
$(...
|
[{"role":"AXLink","text":& [{"role":"AXLink","text":"Skip to content","depth":14,"bounds":{"left":0.034765624,"top":0.033333335,"width":0.000390625,"height":0.0013888889},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Skip to content","depth":15,"bounds":{"left":0.034765624,"top":0.033333335,"width":0.044921875,"height":0.0013888889},"role_description":"text"},{"role":"AXStaticText","text":"Click to collapse","depth":16,"bounds":{"left":0.1203125,"top":0.072916664,"width":0.036328126,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"⌘B","depth":16,"bounds":{"left":0.15859374,"top":0.072916664,"width":0.0078125,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"Drag to resize","depth":16,"bounds":{"left":0.1203125,"top":0.083333336,"width":0.03046875,"height":0.010416667},"role_description":"text"},{"role":"AXButton","text":"Open sidebar","depth":14,"bounds":{"left":0.03515625,"top":0.024305556,"width":0.0109375,"height":0.019444445},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat","depth":16,"bounds":{"left":0.005859375,"top":0.047916666,"width":0.02578125,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cowork","depth":16,"bounds":{"left":0.03203125,"top":0.047916666,"width":0.0109375,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code","depth":16,"bounds":{"left":0.043359376,"top":0.047916666,"width":0.0109375,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New chat ⌘N","depth":16,"bounds":{"left":0.00546875,"top":0.07361111,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":17,"bounds":{"left":0.016796876,"top":0.07638889,"width":0.02265625,"height":0.011805556},"role_description":"text"},{"role":"AXStaticText","text":"⌘N","depth":18,"bounds":{"left":0.091796875,"top":0.077083334,"width":0.008203125,"height":0.011111111},"role_description":"text"},{"role":"AXButton","text":"Projects","depth":16,"bounds":{"left":0.00546875,"top":0.09166667,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Customize","depth":16,"bounds":{"left":0.00546875,"top":0.10902778,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Artifacts","depth":16,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pinned","depth":16,"bounds":{"left":0.0078125,"top":0.16111112,"width":0.09375,"height":0.011111111},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Bulgarian citizenship application process for EU residents","depth":17,"bounds":{"left":0.00546875,"top":0.175,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Bulgarian citizenship application process for EU residents","depth":18,"bounds":{"left":0.09335937,"top":0.17777778,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Dawarich location tracking project","depth":17,"bounds":{"left":0.00546875,"top":0.19375,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Dawarich location tracking project","depth":18,"bounds":{"left":0.09335937,"top":0.19652778,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Recents","depth":16,"bounds":{"left":0.0078125,"top":0.21944444,"width":0.06992187,"height":0.011805556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"View all","depth":16,"bounds":{"left":0.07890625,"top":0.21944444,"width":0.02265625,"height":0.011805556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reviewing recent conversation highlights","depth":17,"bounds":{"left":0.00546875,"top":0.23333333,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Reviewing recent conversation highlights","depth":18,"bounds":{"left":0.09335937,"top":0.2361111,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe WAL processing when stopped","depth":17,"bounds":{"left":0.00546875,"top":0.25208333,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe WAL processing when stopped","depth":18,"bounds":{"left":0.09335937,"top":0.25486112,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mac aliases not recognized","depth":17,"bounds":{"left":0.00546875,"top":0.2701389,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Mac aliases not recognized","depth":18,"bounds":{"left":0.09335937,"top":0.27291667,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Boosteroid still recording despite ignored windows setting","depth":17,"bounds":{"left":0.00546875,"top":0.2888889,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Boosteroid still recording despite ignored windows setting","depth":18,"bounds":{"left":0.09335937,"top":0.29166666,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Missing JavaScript promise in authorization response","depth":17,"bounds":{"left":0.00546875,"top":0.30694443,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Missing JavaScript promise in authorization response","depth":18,"bounds":{"left":0.09335937,"top":0.30972221,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Linux SQLite UI for NAS","depth":17,"bounds":{"left":0.00546875,"top":0.32569444,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Linux SQLite UI for NAS","depth":18,"bounds":{"left":0.09335937,"top":0.32847223,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Claude API 500 internal server error","depth":17,"bounds":{"left":0.00546875,"top":0.34375,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Claude API 500 internal server error","depth":18,"bounds":{"left":0.09335937,"top":0.34652779,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe query capabilities and usage","depth":17,"bounds":{"left":0.00546875,"top":0.3625,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe query capabilities and usage","depth":18,"bounds":{"left":0.09335937,"top":0.36527777,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"eGPU compatibility with Mac mini and Studio","depth":17,"bounds":{"left":0.00546875,"top":0.38055557,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for eGPU compatibility with Mac mini and Studio","depth":18,"bounds":{"left":0.09335937,"top":0.38333333,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Understanding OpenRouter API gateway","depth":17,"bounds":{"left":0.00546875,"top":0.39930555,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Understanding OpenRouter API gateway","depth":18,"bounds":{"left":0.09335937,"top":0.40208334,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe 14-day retention explained","depth":17,"bounds":{"left":0.00546875,"top":0.4173611,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe 14-day retention explained","depth":18,"bounds":{"left":0.09335937,"top":0.4201389,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reddit homepage feed overview","depth":17,"bounds":{"left":0.00546875,"top":0.43611112,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Reddit homepage feed overview","depth":18,"bounds":{"left":0.09335937,"top":0.43819445,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Docker container not visible in console","depth":17,"bounds":{"left":0.00546875,"top":0.45416668,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Docker container not visible in console","depth":18,"bounds":{"left":0.09335937,"top":0.45694444,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DIA browser RAM configuration","depth":17,"bounds":{"left":0.00546875,"top":0.4722222,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for DIA browser RAM configuration","depth":18,"bounds":{"left":0.09335937,"top":0.475,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe company background","depth":17,"bounds":{"left":0.00546875,"top":0.49097222,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe company background","depth":18,"bounds":{"left":0.09335937,"top":0.49375,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DSK Bank Bulgaria secure investing explained","depth":17,"bounds":{"left":0.00546875,"top":0.5090278,"width":0.096875,"height":0.01875},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for DSK Bank Bulgaria secure investing explained","depth":18,"bounds":{"left":0.09335937,"top":0.51180553,"width":0.007421875,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Building a comprehensive personal homelab system","depth":17,"bounds":{"left":0.00546875,"top":0.5277778,"width":0.096875,"height":0.018055556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Building a comprehensive personal homelab system","depth":18,"bounds":{"left":0.09335937,"top":0.53055555,"width":0.007421875,"height":0.0125},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Importing Google Timeline data to Owntracks","depth":17,"bounds":{"left":0.00546875,"top":0.54583335,"width":0.096875,"height":0.0048611113},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Importing Google Timeline data to Owntracks","depth":18,"bounds":{"left":0.09335937,"top":0.5486111,"width":0.007421875,"height":0.0020833334},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chromecast remote volume buttons not working","depth":17,"bounds":{"left":0.00546875,"top":0.54930556,"width":0.096875,"height":0.0013888889},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Chromecast remote volume buttons not working","depth":18,"bounds":{"left":0.09335937,"top":0.54930556,"width":0.007421875,"height":0.0013888889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe free version guide","depth":17,"bounds":{"left":0.00546875,"top":0.54930556,"width":0.096875,"height":0.0013888889},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More options for Screenpipe free version guide","depth":18,"bounds":{"left":0.09335937,"top":0.54930556,"width":0.007421875,"height":0.0013888889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Updated to 1.3109.0","depth":16,"bounds":{"left":0.03125,"top":0.61388886,"width":0.049609374,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"Relaunch to apply","depth":16,"bounds":{"left":0.036328126,"top":0.6284722,"width":0.0390625,"height":0.011111111},"role_description":"text"},{"role":"AXButton","text":"Relaunch","depth":16,"bounds":{"left":0.010546875,"top":0.6472222,"width":0.09101562,"height":0.022916667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Lukas Kovalik","depth":16,"bounds":{"left":0.00546875,"top":0.69166666,"width":0.044140626,"height":0.017361112},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.016796876,"top":0.6944444,"width":0.0296875,"height":0.011111111},"role_description":"text"},{"role":"AXButton","text":"Get apps and extensions","depth":15,"bounds":{"left":0.096875,"top":0.6923611,"width":0.009765625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Screenpipe WAL processing when stopped","depth":19,"bounds":{"left":0.04921875,"top":0.024305556,"width":0.1171875,"height":0.019444445},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Screenpipe WAL processing when stopped","depth":21,"bounds":{"left":0.05234375,"top":0.027083334,"width":0.1109375,"height":0.013194445},"role_description":"text"},{"role":"AXPopUpButton","text":"More options for Screenpipe WAL processing when stopped","depth":19,"bounds":{"left":0.16679688,"top":0.024305556,"width":0.011328125,"height":0.019444445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open sidebar","depth":21,"bounds":{"left":0.96875,"top":0.022916667,"width":0.0125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share chat","depth":21,"bounds":{"left":0.9828125,"top":0.022916667,"width":0.0125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"how to make the screenpipe wal being processed. It seems it is not working when the screenpipe is stopped","depth":24,"bounds":{"left":0.403125,"top":0.017361112,"width":0.22109374,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"17 Apr","depth":22,"bounds":{"left":0.5875,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.6039063,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"bounds":{"left":0.61640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.62890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"WAL (Write-Ahead Log) in SQLite needs to be checkpointed to merge pending data into the main database file. When Screenpipe stops, the WAL may not be fully checkpointed.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.26367188,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"The issue","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"The issue","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.032421876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"SQLite WAL mode keeps a separate","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.10390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":".sqlite-wal","depth":24,"bounds":{"left":0.4625,"top":0.017361112,"width":0.0375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"file. Data there is \"pending\" until a checkpoint runs. Screenpipe normally handles this while running, but if it stops abruptly or you query while it's stopped, the WAL data may appear missing to external readers.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.26210937,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"Solutions","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"Solutions","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.032421876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Option 1: Force a checkpoint manually (safest)","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.13828126,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 ~/.screenpipe/db.sqlite","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.10546875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"PRAGMA wal_checkpoint(TRUNCATE);\"","depth":25,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.11171875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"This flushes all WAL data into the main DB file and truncates the WAL. Run this after Screenpipe stops.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.24296875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Option 2: Make your queries WAL-aware","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.12070312,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"When querying with","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.061328124,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.41992188,"top":0.017361112,"width":0.02421875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"directly, open in WAL mode explicitly so it reads both the DB and WAL together:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.2640625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 ~/.screenpipe/db.sqlite","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.10546875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"PRAGMA journal_mode=WAL; SELECT ...\"","depth":25,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.121875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Actually,","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.02734375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":24,"bounds":{"left":0.3859375,"top":0.017361112,"width":0.023828125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"already reads WAL automatically — but only if the WAL file is present and not corrupted. The real fix is ensuring the connection sees both files.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.26757812,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Option 3: Add to your","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.06484375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"spq","depth":25,"bounds":{"left":0.4234375,"top":0.017361112,"width":0.010546875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"alias","depth":24,"bounds":{"left":0.43554688,"top":0.017361112,"width":0.015625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Update the alias to always checkpoint first:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.12265625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"alias","depth":26,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.016796876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.3761719,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"spq","depth":26,"bounds":{"left":0.37929687,"top":0.017361112,"width":0.010546875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"=","depth":26,"bounds":{"left":0.3894531,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"'sqlite3 -json ~/.screenpipe/db.sqlite'","depth":26,"bounds":{"left":0.39257812,"top":0.017361112,"width":0.12851563,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.640625,"top":0.017361112,"width":0.00078125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"alias","depth":26,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.016796876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.3761719,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"spqcheckpoint","depth":26,"bounds":{"left":0.37929687,"top":0.017361112,"width":0.043359376,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"=","depth":26,"bounds":{"left":0.42226562,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"'sqlite3 ~/.screenpipe/db.sqlite \"PRAGMA wal_checkpoint(TRUNCATE);\" && echo \"WAL checkpointed\"'","depth":26,"bounds":{"left":0.42539063,"top":0.017361112,"width":0.21601562,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Option 4: Checkpoint on Screenpipe shutdown (via a wrapper script)","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.20507812,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"If you start Screenpipe via a script, wrap it:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.12226562,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"#!/bin/bash","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.036328126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"screenpipe","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.036328126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":25,"bounds":{"left":0.39570314,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"$@","depth":25,"bounds":{"left":0.39921874,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"","depth":25,"bounds":{"left":0.40585938,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"# On exit (Ctrl+C or normal stop), checkpoint WAL","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.16132812,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.37304688,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"Screenpipe stopped. Checkpointing WAL...\"","depth":25,"bounds":{"left":0.3761719,"top":0.017361112,"width":0.13828126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 ~/.screenpipe/db.sqlite","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.10546875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"PRAGMA wal_checkpoint(TRUNCATE);\"","depth":25,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.11171875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.37304688,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"Done.\"","depth":25,"bounds":{"left":0.3761719,"top":0.017361112,"width":0.0234375,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"Quick diagnosis","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"Quick diagnosis","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.054296874,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Check if a WAL file exists and its size:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.1078125,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"ls","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"-lh ~/.screenpipe/db.sqlite*","depth":25,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.0953125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"If","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.005859375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"db.sqlite-wal","depth":24,"bounds":{"left":0.36445314,"top":0.017361112,"width":0.04453125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"is large (MBs), that's unprocessed data. After checkpointing it should shrink to near 0.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.25351563,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Recommended approach:","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.07695313,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Use Option 1 whenever you want to query after stopping Screenpipe, and optionally wrap it in your","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.24023438,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"screenpipe-day.sh","depth":24,"bounds":{"left":0.48046875,"top":0.017361112,"width":0.0578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"report script at the top.","depth":23,"bounds":{"left":0.53984374,"top":0.017361112,"width":0.06679688,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"bounds":{"left":0.37890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.39140624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"what about jpg to mp4 conversion","depth":24,"bounds":{"left":0.5359375,"top":0.017361112,"width":0.099609375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"17 Apr","depth":22,"bounds":{"left":0.5875,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.6039063,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"bounds":{"left":0.61640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.62890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"That's unrelated to Screenpipe — are you asking about a general tool/command for converting a sequence of JPG images into an MP4 video?","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.27070314,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"If so,","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.01484375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"FFmpeg","depth":24,"bounds":{"left":0.37148437,"top":0.017361112,"width":0.02578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"is the standard tool:","depth":23,"bounds":{"left":0.396875,"top":0.017361112,"width":0.0578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Image sequence (e.g. frame001.jpg, frame002.jpg...):","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.15585938,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"ffmpeg -framerate","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.059375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"24","depth":25,"bounds":{"left":0.41875,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"-i frame%03d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4","depth":25,"bounds":{"left":0.42539063,"top":0.017361112,"width":0.190625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Single JPG as a still video (e.g. 5 seconds):","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.12421875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"ffmpeg -loop","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.04296875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":25,"bounds":{"left":0.40234375,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"-i input.jpg -t","depth":25,"bounds":{"left":0.40585938,"top":0.017361112,"width":0.055859376,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"5","depth":25,"bounds":{"left":0.46132812,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"-c:v libx264 -pix_fmt yuv420p output.mp4","depth":25,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.13476562,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"All JPGs in a folder (sorted by name):","depth":24,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.1109375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"ffmpeg -framerate","depth":26,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.059375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"24","depth":26,"bounds":{"left":0.41875,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"-pattern_type glob -i","depth":26,"bounds":{"left":0.42539063,"top":0.017361112,"width":0.07578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"'*.jpg'","depth":26,"bounds":{"left":0.50078124,"top":0.017361112,"width":0.0234375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"-c:v libx264 -pix_fmt yuv420p output.mp4","depth":26,"bounds":{"left":0.52382815,"top":0.017361112,"width":0.11757813,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Install on Mac:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.042578124,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"brew","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.016796876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"install","depth":25,"bounds":{"left":0.3761719,"top":0.017361112,"width":0.0234375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"ffmpeg","depth":25,"bounds":{"left":0.39921874,"top":0.017361112,"width":0.0234375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Let me know the actual use case (slideshow, timelapse, Screenpipe frames, something else?) and I can tailor the command.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.26484376,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"bounds":{"left":0.37890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.39140624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"but this seems to also happen automatically when the screenpipe is running","depth":24,"bounds":{"left":0.41328126,"top":0.017361112,"width":0.22226563,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"17 Apr","depth":22,"bounds":{"left":0.5875,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.6039063,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"bounds":{"left":0.61640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.62890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Yes, exactly — SQLite automatically checkpoints the WAL when:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.1859375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"The WAL reaches","depth":24,"bounds":{"left":0.36953124,"top":0.017361112,"width":0.05234375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"1000 pages","depth":25,"bounds":{"left":0.42148438,"top":0.017361112,"width":0.034375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"(default threshold)","depth":24,"bounds":{"left":0.45546874,"top":0.017361112,"width":0.056640625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"A connection closes cleanly","depth":24,"bounds":{"left":0.36953124,"top":0.017361112,"width":0.08046875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"You explicitly call","depth":24,"bounds":{"left":0.36953124,"top":0.017361112,"width":0.05234375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"PRAGMA wal_checkpoint","depth":25,"bounds":{"left":0.4234375,"top":0.017361112,"width":0.07148437,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"So when Screenpipe is","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.06679688,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"running","depth":24,"bounds":{"left":0.4234375,"top":0.017361112,"width":0.025,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":", the WAL gets checkpointed automatically in the background and you never notice it. The problem only surfaces when Screenpipe is","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.26835936,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"stopped abruptly","depth":24,"bounds":{"left":0.5609375,"top":0.017361112,"width":0.0515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"(Ctrl+C, crash, system sleep) and the WAL hasn't been flushed yet at that moment.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.2375,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"The real-world impact","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"The real-world impact","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.075,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"If you run your","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.04453125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"screenpipe-day.sh","depth":24,"bounds":{"left":0.403125,"top":0.017361112,"width":0.0578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"or","depth":23,"bounds":{"left":0.4625,"top":0.017361112,"width":0.008984375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"spq","depth":24,"bounds":{"left":0.47304687,"top":0.017361112,"width":0.01015625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"queries","depth":23,"bounds":{"left":0.48476562,"top":0.017361112,"width":0.02421875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"while Screenpipe is stopped","depth":24,"bounds":{"left":0.50859374,"top":0.017361112,"width":0.083984375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":", you may be missing the last chunk of data that was buffered in the WAL but never checkpointed.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.27109376,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"Practical fix","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"Practical fix","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.040625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Just prepend the checkpoint to your query script:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.14179687,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"# In screenpipe-day.sh or before any spq usage after stopping screenpipe","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.23671874,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 ~/.screenpipe/db.sqlite","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.10546875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"PRAGMA wal_checkpoint(TRUNCATE);\"","depth":25,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.11171875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.5761719,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":25,"bounds":{"left":0.5796875,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":">","depth":25,"bounds":{"left":0.5828125,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"/dev/null","depth":25,"bounds":{"left":0.58632815,"top":0.017361112,"width":0.0296875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Or as a shell function in your","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.083984375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":".zshrc","depth":24,"bounds":{"left":0.44257814,"top":0.017361112,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":":","depth":23,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.0015625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"spqready","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0265625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"(","depth":25,"bounds":{"left":0.3859375,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":")","depth":25,"bounds":{"left":0.3894531,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.39257812,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"{","depth":25,"bounds":{"left":0.39570314,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"sqlite3 ~/.screenpipe/db.sqlite","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.11210938,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"PRAGMA wal_checkpoint(TRUNCATE);\"","depth":25,"bounds":{"left":0.47148436,"top":0.017361112,"width":0.11171875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.5828125,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":">","depth":25,"bounds":{"left":0.58632815,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"/dev/null","depth":25,"bounds":{"left":0.5894531,"top":0.017361112,"width":0.036328126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":">","depth":25,"bounds":{"left":0.62890625,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"&1","depth":25,"bounds":{"left":0.63203126,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"echo","depth":25,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.01328125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.37929687,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"\"WAL checkpointed, DB ready.\"","depth":25,"bounds":{"left":0.3828125,"top":0.017361112,"width":0.0953125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"}","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Then just run","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.040625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"spqready","depth":24,"bounds":{"left":0.39921874,"top":0.017361112,"width":0.02734375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"once after stopping Screenpipe before querying.","depth":23,"bounds":{"left":0.428125,"top":0.017361112,"width":0.14023438,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"bounds":{"left":0.37890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.39140624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"how to stop screenpipe but make sure that jpg to mp4 is converted","depth":24,"bounds":{"left":0.43984374,"top":0.017361112,"width":0.19570312,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"17 Apr","depth":22,"bounds":{"left":0.5875,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.6039063,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"bounds":{"left":0.61640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.62890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"These two things aren't connected — where does JPG to MP4 come into your Screenpipe setup? Are you thinking of:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.25546876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Screenpipe's frame captures","depth":25,"bounds":{"left":0.36953124,"top":0.017361112,"width":0.08554687,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"(it stores screenshots as JPGs) that you want converted into a timelapse MP4 when stopping?","depth":24,"bounds":{"left":0.36953124,"top":0.017361112,"width":0.2578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Something else entirely?","depth":24,"bounds":{"left":0.36953124,"top":0.017361112,"width":0.072265625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give positive feedback","depth":22,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give negative feedback","depth":22,"bounds":{"left":0.37890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.39140624,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"No I mean there are /data/data/{date} with jpgs that are converted to mp4. It seems that if stopped via sp-stop='pkill -f screenpipe && echo '\\''screenpipe stopped'\\' then these are not converted unless I staert it again","depth":24,"bounds":{"left":0.403125,"top":0.017361112,"width":0.22460938,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"17 Apr","depth":22,"bounds":{"left":0.5875,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Retry","depth":22,"bounds":{"left":0.6039063,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":22,"bounds":{"left":0.61640626,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy","depth":22,"bounds":{"left":0.62890625,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Ah, got it — Screenpipe has an internal process that converts the captured JPG frames into MP4 chunks. When you","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.26054686,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"pkill -f screenpipe","depth":24,"bounds":{"left":0.42890626,"top":0.017361112,"width":0.06484375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"hard, that conversion pipeline gets killed mid-flight, leaving unconverted JPGs behind.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.271875,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"The fix","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"The fix","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.023828125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"You need to let Screenpipe finish its current conversion before killing it. The cleanest approach is to","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.2722656,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"send SIGTERM first, then wait","depth":24,"bounds":{"left":0.36992186,"top":0.017361112,"width":0.09140625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":", instead of SIGKILL-equivalent","depth":23,"bounds":{"left":0.4609375,"top":0.017361112,"width":0.091796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"pkill","depth":24,"bounds":{"left":0.55429685,"top":0.017361112,"width":0.017578125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":":","depth":23,"bounds":{"left":0.5734375,"top":0.017361112,"width":0.0015625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"# Graceful stop — sends SIGTERM and waits","depth":26,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.13476562,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.640625,"top":0.017361112,"width":0.00078125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"alias","depth":26,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.016796876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"sp-stop","depth":26,"bounds":{"left":0.3761719,"top":0.017361112,"width":0.0265625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"=","depth":26,"bounds":{"left":0.40234375,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"'pkill -SIGTERM -f screenpipe && while pgrep -f screenpipe > /dev/null; do sleep 1; done && echo \"screenpipe stopped\"'","depth":26,"bounds":{"left":0.40585938,"top":0.017361112,"width":0.23554687,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"This gives Screenpipe time to finish in-flight conversions before actually dying.","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.22773437,"height":0.00069444446},"role_description":"text"},{"role":"AXHeading","text":"If that's not enough — convert remaining JPGs manually","depth":22,"bounds":{"left":0.35390624,"top":0.017361112,"width":0.2878906,"height":0.00069444446},"role_description":"heading"},{"role":"AXStaticText","text":"If that's not enough — convert remaining JPGs manually","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.19023438,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"After stopping, find any unconverted JPG sequences and process them:","depth":23,"bounds":{"left":0.35703126,"top":0.017361112,"width":0.20546874,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Copy to clipboard","depth":25,"bounds":{"left":0.62539065,"top":0.017361112,"width":0.012890625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bash","depth":24,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.0109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"find","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"~/.screenpipe/data -type d","depth":25,"bounds":{"left":0.37304688,"top":0.017361112,"width":0.0921875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"|","depth":25,"bounds":{"left":0.46484375,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.46796876,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"while","depth":25,"bounds":{"left":0.47148436,"top":0.017361112,"width":0.016796876,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.48789063,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"read","depth":25,"bounds":{"left":0.4910156,"top":0.017361112,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.5042969,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"dir","depth":25,"bounds":{"left":0.50742185,"top":0.017361112,"width":0.01015625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":";","depth":25,"bounds":{"left":0.5171875,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.52070314,"top":0.017361112,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"do","depth":25,"bounds":{"left":0.52382815,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.35976562,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"jpgs","depth":25,"bounds":{"left":0.36640626,"top":0.017361112,"width":0.01328125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"=","depth":25,"bounds":{"left":0.37929687,"top":0.017361112,"width":0.00390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"$(","depth":25,"bounds":{"left":0.3828125,"top":0.017361112,"width":0.00703125,"height":0.00069444446},"role_description":"text"}]...
|
8908685829869912710
|
-8124746210566382350
|
click
|
accessibility
|
NULL
|
Skip to content
Skip to content
Click to collapse
Skip to content
Skip to content
Click to collapse
⌘B
Drag to resize
Open sidebar
Chat
Cowork
Code
New chat ⌘N
New chat
⌘N
Projects
Customize
Artifacts
Pinned
Bulgarian citizenship application process for EU residents
More options for Bulgarian citizenship application process for EU residents
Dawarich location tracking project
More options for Dawarich location tracking project
Recents
View all
Reviewing recent conversation highlights
More options for Reviewing recent conversation highlights
Screenpipe WAL processing when stopped
More options for Screenpipe WAL processing when stopped
Mac aliases not recognized
More options for Mac aliases not recognized
Boosteroid still recording despite ignored windows setting
More options for Boosteroid still recording despite ignored windows setting
Missing JavaScript promise in authorization response
More options for Missing JavaScript promise in authorization response
Linux SQLite UI for NAS
More options for Linux SQLite UI for NAS
Claude API 500 internal server error
More options for Claude API 500 internal server error
Screenpipe query capabilities and usage
More options for Screenpipe query capabilities and usage
eGPU compatibility with Mac mini and Studio
More options for eGPU compatibility with Mac mini and Studio
Understanding OpenRouter API gateway
More options for Understanding OpenRouter API gateway
Screenpipe 14-day retention explained
More options for Screenpipe 14-day retention explained
Reddit homepage feed overview
More options for Reddit homepage feed overview
Docker container not visible in console
More options for Docker container not visible in console
DIA browser RAM configuration
More options for DIA browser RAM configuration
Screenpipe company background
More options for Screenpipe company background
DSK Bank Bulgaria secure investing explained
More options for DSK Bank Bulgaria secure investing explained
Building a comprehensive personal homelab system
More options for Building a comprehensive personal homelab system
Importing Google Timeline data to Owntracks
More options for Importing Google Timeline data to Owntracks
Chromecast remote volume buttons not working
More options for Chromecast remote volume buttons not working
Screenpipe free version guide
More options for Screenpipe free version guide
Updated to 1.3109.0
Relaunch to apply
Relaunch
Lukas Kovalik
Lukas Kovalik
Get apps and extensions
Screenpipe WAL processing when stopped
Screenpipe WAL processing when stopped
More options for Screenpipe WAL processing when stopped
Open sidebar
Share chat
how to make the screenpipe wal being processed. It seems it is not working when the screenpipe is stopped
17 Apr
Retry
Edit
Copy
WAL (Write-Ahead Log) in SQLite needs to be checkpointed to merge pending data into the main database file. When Screenpipe stops, the WAL may not be fully checkpointed.
The issue
The issue
SQLite WAL mode keeps a separate
.sqlite-wal
file. Data there is "pending" until a checkpoint runs. Screenpipe normally handles this while running, but if it stops abruptly or you query while it's stopped, the WAL data may appear missing to external readers.
Solutions
Solutions
Option 1: Force a checkpoint manually (safest)
Copy to clipboard
bash
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
This flushes all WAL data into the main DB file and truncates the WAL. Run this after Screenpipe stops.
Option 2: Make your queries WAL-aware
When querying with
sqlite3
directly, open in WAL mode explicitly so it reads both the DB and WAL together:
Copy to clipboard
bash
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA journal_mode=WAL; SELECT ..."
Actually,
sqlite3
already reads WAL automatically — but only if the WAL file is present and not corrupted. The real fix is ensuring the connection sees both files.
Option 3: Add to your
spq
alias
Update the alias to always checkpoint first:
Copy to clipboard
bash
alias
spq
=
'sqlite3 -json ~/.screenpipe/db.sqlite'
alias
spqcheckpoint
=
'sqlite3 ~/.screenpipe/db.sqlite "PRAGMA wal_checkpoint(TRUNCATE);" && echo "WAL checkpointed"'
Option 4: Checkpoint on Screenpipe shutdown (via a wrapper script)
If you start Screenpipe via a script, wrap it:
Copy to clipboard
bash
#!/bin/bash
screenpipe
"
$@
"
# On exit (Ctrl+C or normal stop), checkpoint WAL
echo
"Screenpipe stopped. Checkpointing WAL..."
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
echo
"Done."
Quick diagnosis
Quick diagnosis
Check if a WAL file exists and its size:
Copy to clipboard
bash
ls
-lh ~/.screenpipe/db.sqlite*
If
db.sqlite-wal
is large (MBs), that's unprocessed data. After checkpointing it should shrink to near 0.
Recommended approach:
Use Option 1 whenever you want to query after stopping Screenpipe, and optionally wrap it in your
screenpipe-day.sh
report script at the top.
Copy
Give positive feedback
Give negative feedback
Retry
what about jpg to mp4 conversion
17 Apr
Retry
Edit
Copy
That's unrelated to Screenpipe — are you asking about a general tool/command for converting a sequence of JPG images into an MP4 video?
If so,
FFmpeg
is the standard tool:
Image sequence (e.g. frame001.jpg, frame002.jpg...):
Copy to clipboard
bash
ffmpeg -framerate
24
-i frame%03d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4
Single JPG as a still video (e.g. 5 seconds):
Copy to clipboard
bash
ffmpeg -loop
1
-i input.jpg -t
5
-c:v libx264 -pix_fmt yuv420p output.mp4
All JPGs in a folder (sorted by name):
Copy to clipboard
bash
ffmpeg -framerate
24
-pattern_type glob -i
'*.jpg'
-c:v libx264 -pix_fmt yuv420p output.mp4
Install on Mac:
Copy to clipboard
bash
brew
install
ffmpeg
Let me know the actual use case (slideshow, timelapse, Screenpipe frames, something else?) and I can tailor the command.
Copy
Give positive feedback
Give negative feedback
Retry
but this seems to also happen automatically when the screenpipe is running
17 Apr
Retry
Edit
Copy
Yes, exactly — SQLite automatically checkpoints the WAL when:
The WAL reaches
1000 pages
(default threshold)
A connection closes cleanly
You explicitly call
PRAGMA wal_checkpoint
So when Screenpipe is
running
, the WAL gets checkpointed automatically in the background and you never notice it. The problem only surfaces when Screenpipe is
stopped abruptly
(Ctrl+C, crash, system sleep) and the WAL hasn't been flushed yet at that moment.
The real-world impact
The real-world impact
If you run your
screenpipe-day.sh
or
spq
queries
while Screenpipe is stopped
, you may be missing the last chunk of data that was buffered in the WAL but never checkpointed.
Practical fix
Practical fix
Just prepend the checkpoint to your query script:
Copy to clipboard
bash
# In screenpipe-day.sh or before any spq usage after stopping screenpipe
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
2
>
/dev/null
Or as a shell function in your
.zshrc
:
Copy to clipboard
bash
spqready
(
)
{
sqlite3 ~/.screenpipe/db.sqlite
"PRAGMA wal_checkpoint(TRUNCATE);"
>
/dev/null
2
>
&1
echo
"WAL checkpointed, DB ready."
}
Then just run
spqready
once after stopping Screenpipe before querying.
Copy
Give positive feedback
Give negative feedback
Retry
how to stop screenpipe but make sure that jpg to mp4 is converted
17 Apr
Retry
Edit
Copy
These two things aren't connected — where does JPG to MP4 come into your Screenpipe setup? Are you thinking of:
Screenpipe's frame captures
(it stores screenshots as JPGs) that you want converted into a timelapse MP4 when stopping?
Something else entirely?
Copy
Give positive feedback
Give negative feedback
Retry
No I mean there are /data/data/{date} with jpgs that are converted to mp4. It seems that if stopped via sp-stop='pkill -f screenpipe && echo '\''screenpipe stopped'\' then these are not converted unless I staert it again
17 Apr
Retry
Edit
Copy
Ah, got it — Screenpipe has an internal process that converts the captured JPG frames into MP4 chunks. When you
pkill -f screenpipe
hard, that conversion pipeline gets killed mid-flight, leaving unconverted JPGs behind.
The fix
The fix
You need to let Screenpipe finish its current conversion before killing it. The cleanest approach is to
send SIGTERM first, then wait
, instead of SIGKILL-equivalent
pkill
:
Copy to clipboard
bash
# Graceful stop — sends SIGTERM and waits
alias
sp-stop
=
'pkill -SIGTERM -f screenpipe && while pgrep -f screenpipe > /dev/null; do sleep 1; done && echo "screenpipe stopped"'
This gives Screenpipe time to finish in-flight conversions before actually dying.
If that's not enough — convert remaining JPGs manually
If that's not enough — convert remaining JPGs manually
After stopping, find any unconverted JPG sequences and process them:
Copy to clipboard
bash
find
~/.screenpipe/data -type d
|
while
read
dir
;
do
jpgs
=
$(...
|
51218
|
|
46545
|
982
|
44
|
2026-04-17T10:39:18.614416+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776422358614_m2.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com/onboard
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Developers | HubSpot
Developers Workers | Datadog
Developers | HubSpot
Developers | HubSpot
Inbox (1,576) - [EMAIL] - Jiminny Mail
Inbox (1,576) - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
New Tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
[JY-20692] Issue with reconnecting Zoho - Jira
[JY-20692] Issue with reconnecting Zoho - Jira
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Update your information
Update your information
GENERAL
TIMEZONE
Select option Europe/Sofia (UTC +03:00)
Select option
Europe/Sofia (UTC +03:00)
*
LANGUAGES SPOKEN DURING CALLS
DEFAULT SPOKEN LANGUAGE
Select option English (United Kingdom)
Select option
English (United Kingdom)
*
If the language isn't detected we'll default to this one
Add language
CONNECT/SYNC SETTINGS
Connect Zoho CRM
zohocrm Connected
Connected
Import Calendar Meetings
*
google Sign in with Google
Sign in with Google
Let's Get Started!
Clear the Web Console output (⌘K, Ctrl+L)
Filter Output
Errors
Warnings
Info
Logs
Debug
CSS
XHR
Requests
Console Settings
Show/hide message details.
Content-Security-Policy warnings
2
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAUi-qNiXg7eU0.woff2
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAUi-qNiXg7eU0.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAXC-qNiXg7Q.woff2
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAXC-qNiXg7Q.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_FQftx9897sxZ.woff2
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_FQftx9897sxZ.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_Gwftx9897g.woff2
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_Gwftx9897g.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwaPGQ3q5d0N7w.woff2
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwaPGQ3q5d0N7w.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmZiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmZiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmQiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmQiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmYiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmYiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmXiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmXiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVnoiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVnoiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVn6iAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVn6iAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmbiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmbiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmaiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmaiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAz0klQmz24&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAz0klQmz24&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Referrer Policy: Ignoring the less restricted referrer policy “no-referrer-when-downgrade” for the cross-site request:
https://cdn.logr-in.com/logger-1.min.js
https://cdn.logr-in.com/logger-1.min.js
logger-1.min.js
logger-1.min.js
[env]
LOGROCKET_ID has a falsy value
=>
string
<empty string>
_plugin-vue_export-helper-DD3s5456.js:123:3974
_plugin-vue_export-helper-DD3s5456.js
:123:3974
[env]
SENTRY_DSN has a falsy value
=>
string
<empty string>
_plugin-vue_export-helper-DD3s5456.js:123:3974
_plugin-vue_export-helper-DD3s5456.js
:123:3974
[env]
BRANCH has a falsy value
=>
object
null
_plugin-vue_export-helper-DD3s5456.js:123:3974
_plugin-vue_export-helper-DD3s5456.js
:123:3974
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block a script (script-src-elem) at
https://cdn.logr-in.com/logger-1.min.js
https://cdn.logr-in.com/logger-1.min.js
from being executed because it violates the following directive: “script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://ajax.googleapis.com
https://ajax.googleapis.com
https://www.googletagmanager.com
https://www.googletagmanager.com
https://www.google-analytics.com...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Developers | HubSpot","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developers | HubSpot","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.04453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,576) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,576) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.11445312,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"120216 is your HubSpot Log In Code - integration-account@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"120216 is your HubSpot Log In Code - integration-account@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.17734376,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | eu-west-1","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.048828125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.17421874,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20692] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20692] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.09726562,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Update your information","depth":9,"bounds":{"left":0.29335937,"top":0.33888888,"width":0.15273437,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Update your information","depth":10,"bounds":{"left":0.31796876,"top":0.33680555,"width":0.103515625,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GENERAL","depth":10,"bounds":{"left":0.29335937,"top":0.37083334,"width":0.025,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TIMEZONE","depth":12,"bounds":{"left":0.2984375,"top":0.3986111,"width":0.0203125,"height":0.009027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Europe/Sofia (UTC +03:00)","depth":10,"bounds":{"left":0.2984375,"top":0.40763888,"width":0.14726563,"height":0.017361112},"value":"Select option Europe/Sofia (UTC +03:00)","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":11,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Europe/Sofia (UTC +03:00)","depth":12,"bounds":{"left":0.2984375,"top":0.41041666,"width":0.061328124,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.44023436,"top":0.39375,"width":0.003125,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LANGUAGES SPOKEN DURING CALLS","depth":10,"bounds":{"left":0.29335937,"top":0.44930556,"width":0.09609375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DEFAULT SPOKEN LANGUAGE","depth":12,"bounds":{"left":0.2984375,"top":0.47708333,"width":0.05546875,"height":0.009027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option English (United Kingdom)","depth":10,"bounds":{"left":0.2984375,"top":0.4861111,"width":0.14726563,"height":0.017361112},"value":"Select option English (United Kingdom)","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":11,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"bounds":{"left":0.2984375,"top":0.4888889,"width":0.057421874,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":11,"bounds":{"left":0.44023436,"top":0.4722222,"width":0.003125,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If the language isn't detected we'll default to this one","depth":11,"bounds":{"left":0.29335937,"top":0.5090278,"width":0.109375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add language","depth":11,"bounds":{"left":0.29335937,"top":0.5298611,"width":0.037890624,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CONNECT/SYNC SETTINGS","depth":10,"bounds":{"left":0.29335937,"top":0.5659722,"width":0.06992187,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Connect Zoho CRM","depth":11,"bounds":{"left":0.29335937,"top":0.59166664,"width":0.0546875,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"zohocrm Connected","depth":10,"bounds":{"left":0.3765625,"top":0.5861111,"width":0.06953125,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Connected","depth":11,"bounds":{"left":0.40429688,"top":0.5923611,"width":0.026171874,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Import Calendar Meetings","depth":11,"bounds":{"left":0.29335937,"top":0.62777776,"width":0.07304688,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":12,"bounds":{"left":0.365625,"top":0.62430555,"width":0.003515625,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"google Sign in with Google","depth":10,"bounds":{"left":0.3765625,"top":0.62222224,"width":0.06953125,"height":0.025},"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.39414063,"top":0.6284722,"width":0.046484374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Let's Get Started!","depth":9,"bounds":{"left":0.3347656,"top":0.68194443,"width":0.06992187,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear the Web Console output (⌘K, Ctrl+L)","depth":15,"bounds":{"left":0.46328124,"top":0.068055555,"width":0.01015625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Filter Output","depth":15,"bounds":{"left":0.47578126,"top":0.065972224,"width":0.36132812,"height":0.018055556},"role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Errors","depth":15,"bounds":{"left":0.8417969,"top":0.068055555,"width":0.0171875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Warnings","depth":15,"bounds":{"left":0.85976565,"top":0.068055555,"width":0.023828125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Info","depth":15,"bounds":{"left":0.884375,"top":0.068055555,"width":0.0125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Logs","depth":15,"bounds":{"left":0.89765626,"top":0.068055555,"width":0.014453125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Debug","depth":15,"bounds":{"left":0.9128906,"top":0.068055555,"width":0.01796875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"CSS","depth":15,"bounds":{"left":0.9359375,"top":0.068055555,"width":0.01328125,"height":0.013888889},"help_text":"Stylesheets will be reparsed to check for errors. Refresh the page to also see errors from stylesheets modified from Javascript.","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"XHR","depth":15,"bounds":{"left":0.95,"top":0.068055555,"width":0.013671875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Requests","depth":15,"bounds":{"left":0.9644531,"top":0.068055555,"width":0.023828125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Console Settings","depth":15,"bounds":{"left":0.9898437,"top":0.06527778,"width":0.01015625,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show/hide message details.","depth":17,"bounds":{"left":0.4703125,"top":0.08680555,"width":0.00625,"height":0.011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Content-Security-Policy warnings","depth":20,"bounds":{"left":0.4765625,"top":0.0875,"width":0.0828125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.5660156,"top":0.08888889,"width":0.00234375,"height":0.007638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.10208333,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAUi-qNiXg7eU0.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.10208333,"width":0.18320313,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAUi-qNiXg7eU0.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.10208333,"width":0.18320313,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.10208333,"width":0.4910156,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.63203126,"top":0.11180556,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.63203126,"top":0.11180556,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7042969,"top":0.11180556,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7042969,"top":0.11180556,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7792969,"top":0.11180556,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7792969,"top":0.11180556,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.84648436,"top":0.11180556,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.10208333,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.10208333,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.12638889,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAXC-qNiXg7Q.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.12638889,"width":0.178125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAXC-qNiXg7Q.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.12638889,"width":0.178125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.12638889,"width":0.4859375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.63203126,"top":0.13611111,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.63203126,"top":0.13611111,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7042969,"top":0.13611111,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7042969,"top":0.13611111,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7792969,"top":0.13611111,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7792969,"top":0.13611111,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.84648436,"top":0.13611111,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.12638889,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.12638889,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.15069444,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_FQftx9897sxZ.woff2","depth":21,"bounds":{"left":0.471875,"top":0.15069444,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_FQftx9897sxZ.woff2","depth":22,"bounds":{"left":0.471875,"top":0.15069444,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.47460938,"top":0.16041666,"width":0.1625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.6371094,"top":0.16041666,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.6371094,"top":0.16041666,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7097656,"top":0.16041666,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7097656,"top":0.16041666,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7847656,"top":0.16041666,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7847656,"top":0.16041666,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.85195315,"top":0.16041666,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.15069444,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.15069444,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.175,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_Gwftx9897g.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.175,"width":0.18867187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_Gwftx9897g.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.175,"width":0.18867187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.175,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.63203126,"top":0.18472221,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.63203126,"top":0.18472221,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7042969,"top":0.18472221,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7042969,"top":0.18472221,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7792969,"top":0.18472221,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7792969,"top":0.18472221,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.84648436,"top":0.18472221,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.175,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.175,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.19930555,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.19930555,"width":0.178125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.19930555,"width":0.178125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.19930555,"width":0.4859375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.63203126,"top":0.20902778,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.63203126,"top":0.20902778,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7042969,"top":0.20902778,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7042969,"top":0.20902778,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7792969,"top":0.20902778,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7792969,"top":0.20902778,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.84648436,"top":0.20902778,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.19930555,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.19930555,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.22361112,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.22361112,"width":0.1703125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.22361112,"width":0.1703125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.22361112,"width":0.496875,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.6113281,"top":0.23333333,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.6113281,"top":0.23333333,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.68359375,"top":0.23333333,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.68359375,"top":0.23333333,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.75859374,"top":0.23333333,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.75859374,"top":0.23333333,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.8257812,"top":0.23333333,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.22361112,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.22361112,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.24791667,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwaPGQ3q5d0N7w.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.24791667,"width":0.18867187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwaPGQ3q5d0N7w.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.24791667,"width":0.18867187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.24791667,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.63203126,"top":0.2576389,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.63203126,"top":0.2576389,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7042969,"top":0.2576389,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7042969,"top":0.2576389,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7792969,"top":0.2576389,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7792969,"top":0.2576389,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.84648436,"top":0.2576389,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.24791667,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.24791667,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.27222222,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.27222222,"width":0.18085937,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.27222222,"width":0.18085937,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.27222222,"width":0.48828125,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.63203126,"top":0.28194445,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.63203126,"top":0.28194445,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.7042969,"top":0.28194445,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.7042969,"top":0.28194445,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.7792969,"top":0.28194445,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.7792969,"top":0.28194445,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.84648436,"top":0.28194445,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.27222222,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.27222222,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.29652777,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmZiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.29652777,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmZiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.29652777,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.30625,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.30625,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.30625,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.30625,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.30625,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.30625,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.30625,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.3159722,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.29652777,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.29652777,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.33055556,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmQiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.33055556,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmQiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.33055556,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.3402778,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.3402778,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.3402778,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.3402778,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.3402778,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.3402778,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.3402778,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.35,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.33055556,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.33055556,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.36458334,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmYiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.36458334,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmYiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.36458334,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.37430555,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.37430555,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.37430555,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.37430555,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.37430555,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.37430555,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.37430555,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.38402778,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.36458334,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.36458334,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.3986111,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmXiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.3986111,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmXiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.3986111,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.40833333,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.40833333,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.40833333,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.40833333,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.40833333,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.40833333,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.40833333,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.41805556,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.3986111,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.3986111,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.43263888,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVnoiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.43263888,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVnoiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.43263888,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.44236112,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.44236112,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.44236112,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.44236112,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.44236112,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.44236112,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.44236112,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.45208332,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.43263888,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.43263888,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.46666667,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVn6iAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.46666667,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVn6iAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.46666667,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.4763889,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.4763889,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.4763889,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.4763889,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.4763889,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.4763889,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.4763889,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.4861111,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.46666667,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.46666667,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.50069445,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmbiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.50069445,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmbiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.50069445,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.5104167,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.5104167,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.5104167,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.5104167,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.5104167,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.5104167,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.5104167,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.52013886,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.50069445,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.50069445,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.5347222,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmaiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.5347222,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmaiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.5347222,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6191406,"top":0.54444444,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.78203124,"top":0.54444444,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.78203124,"top":0.54444444,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.85429686,"top":0.54444444,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.85429686,"top":0.54444444,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.54444444,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.54444444,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.50039065,"top":0.5541667,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.5347222,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.5347222,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.56875,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAz0klQmz24&skey=a0a0114a1dcab3ac&v=v51","depth":21,"bounds":{"left":0.471875,"top":0.56875,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAz0klQmz24&skey=a0a0114a1dcab3ac&v=v51","depth":22,"bounds":{"left":0.471875,"top":0.56875,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.6113281,"top":0.5784722,"width":0.16289063,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.77421874,"top":0.5784722,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.77421874,"top":0.5784722,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.84648436,"top":0.5784722,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.84648436,"top":0.5784722,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.471875,"top":0.5784722,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.471875,"top":0.5784722,"width":0.49609375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.49257812,"top":0.58819443,"width":0.00234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.56875,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.56875,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Referrer Policy: Ignoring the less restricted referrer policy “no-referrer-when-downgrade” for the cross-site request:","depth":21,"bounds":{"left":0.471875,"top":0.6027778,"width":0.30742186,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://cdn.logr-in.com/logger-1.min.js","depth":21,"bounds":{"left":0.7792969,"top":0.6027778,"width":0.10078125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://cdn.logr-in.com/logger-1.min.js","depth":22,"bounds":{"left":0.7792969,"top":0.6027778,"width":0.10078125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logger-1.min.js","depth":20,"bounds":{"left":0.9507812,"top":0.6027778,"width":0.038671874,"height":0.009722223},"help_text":"View source in Debugger → https://cdn.logr-in.com/logger-1.min.js","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logger-1.min.js","depth":22,"bounds":{"left":0.9507812,"top":0.6027778,"width":0.038671874,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[env]","depth":21,"bounds":{"left":0.471875,"top":0.6173611,"width":0.012890625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LOGROCKET_ID has a falsy value","depth":21,"bounds":{"left":0.4875,"top":0.6173611,"width":0.07734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":21,"bounds":{"left":0.56757814,"top":0.6173611,"width":0.005078125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"string","depth":21,"bounds":{"left":0.57539064,"top":0.6173611,"width":0.015234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<empty string>","depth":21,"bounds":{"left":0.59335935,"top":0.6173611,"width":0.036328126,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"_plugin-vue_export-helper-DD3s5456.js:123:3974","depth":20,"bounds":{"left":0.8707031,"top":0.6173611,"width":0.11875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/vue-assets/assets/_plugin-vue_export-helper-DD3s5456.js:123:3974","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"_plugin-vue_export-helper-DD3s5456.js","depth":22,"bounds":{"left":0.8707031,"top":0.6173611,"width":0.0953125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":123:3974","depth":22,"bounds":{"left":0.96601564,"top":0.6173611,"width":0.0234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[env]","depth":21,"bounds":{"left":0.471875,"top":0.6319444,"width":0.012890625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SENTRY_DSN has a falsy value","depth":21,"bounds":{"left":0.4875,"top":0.6319444,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":21,"bounds":{"left":0.56210935,"top":0.6319444,"width":0.00546875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"string","depth":21,"bounds":{"left":0.56992185,"top":0.6319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<empty string>","depth":21,"bounds":{"left":0.5882813,"top":0.6319444,"width":0.0359375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"_plugin-vue_export-helper-DD3s5456.js:123:3974","depth":20,"bounds":{"left":0.8707031,"top":0.6319444,"width":0.11875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/vue-assets/assets/_plugin-vue_export-helper-DD3s5456.js:123:3974","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"_plugin-vue_export-helper-DD3s5456.js","depth":22,"bounds":{"left":0.8707031,"top":0.6319444,"width":0.0953125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":123:3974","depth":22,"bounds":{"left":0.96601564,"top":0.6319444,"width":0.0234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[env]","depth":21,"bounds":{"left":0.471875,"top":0.64652777,"width":0.012890625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BRANCH has a falsy value","depth":21,"bounds":{"left":0.4875,"top":0.64652777,"width":0.06171875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":21,"bounds":{"left":0.55195314,"top":0.64652777,"width":0.005078125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"object","depth":21,"bounds":{"left":0.55976564,"top":0.64652777,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":21,"bounds":{"left":0.57773435,"top":0.64652777,"width":0.010546875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"_plugin-vue_export-helper-DD3s5456.js:123:3974","depth":20,"bounds":{"left":0.8707031,"top":0.64652777,"width":0.11875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/vue-assets/assets/_plugin-vue_export-helper-DD3s5456.js:123:3974","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"_plugin-vue_export-helper-DD3s5456.js","depth":22,"bounds":{"left":0.8707031,"top":0.64652777,"width":0.0953125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":123:3974","depth":22,"bounds":{"left":0.96601564,"top":0.64652777,"width":0.0234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at","depth":21,"bounds":{"left":0.471875,"top":0.6611111,"width":0.30507812,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2","depth":21,"bounds":{"left":0.7769531,"top":0.6611111,"width":0.1703125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2","depth":22,"bounds":{"left":0.7769531,"top":0.6611111,"width":0.1703125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"because it violates the following directive: “font-src 'self'","depth":21,"bounds":{"left":0.471875,"top":0.6611111,"width":0.496875,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"bounds":{"left":0.6113281,"top":0.67083335,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"bounds":{"left":0.6113281,"top":0.67083335,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.68359375,"top":0.67083335,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.68359375,"top":0.67083335,"width":0.07265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://js.intercomcdn.com","depth":21,"bounds":{"left":0.75859374,"top":0.67083335,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://js.intercomcdn.com","depth":22,"bounds":{"left":0.75859374,"top":0.67083335,"width":0.0671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”","depth":21,"bounds":{"left":0.8257812,"top":0.67083335,"width":0.002734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"onboard","depth":20,"bounds":{"left":0.97148436,"top":0.6611111,"width":0.01796875,"height":0.009722223},"help_text":"View source in Debugger → https://app.dev.jiminny.com/onboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"onboard","depth":22,"bounds":{"left":0.97148436,"top":0.6611111,"width":0.01796875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Content-Security-Policy: (Report-Only policy) The page’s settings would block a script (script-src-elem) at","depth":21,"bounds":{"left":0.471875,"top":0.68541664,"width":0.27929688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://cdn.logr-in.com/logger-1.min.js","depth":21,"bounds":{"left":0.7511719,"top":0.68541664,"width":0.10078125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://cdn.logr-in.com/logger-1.min.js","depth":22,"bounds":{"left":0.7511719,"top":0.68541664,"width":0.10078125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from being executed because it violates the following directive: “script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:","depth":21,"bounds":{"left":0.471875,"top":0.68541664,"width":0.434375,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/","depth":21,"bounds":{"left":0.73046875,"top":0.6951389,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/","depth":22,"bounds":{"left":0.73046875,"top":0.6951389,"width":0.072265625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://ajax.googleapis.com","depth":21,"bounds":{"left":0.80507815,"top":0.6951389,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://ajax.googleapis.com","depth":22,"bounds":{"left":0.80507815,"top":0.6951389,"width":0.06992187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://www.googletagmanager.com","depth":21,"bounds":{"left":0.471875,"top":0.6951389,"width":0.44726562,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://www.googletagmanager.com","depth":22,"bounds":{"left":0.471875,"top":0.6951389,"width":0.44726562,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://www.google-analytics.com","depth":21,"bounds":{"left":0.515625,"top":0.7048611,"width":0.0828125,"height":0.009722223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8908398808363697279
|
3536163785331158497
|
visual_change
|
accessibility
|
NULL
|
Workers | Datadog
Developers | HubSpot
Developers Workers | Datadog
Developers | HubSpot
Developers | HubSpot
Inbox (1,576) - [EMAIL] - Jiminny Mail
Inbox (1,576) - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
New Tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
[JY-20692] Issue with reconnecting Zoho - Jira
[JY-20692] Issue with reconnecting Zoho - Jira
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Update your information
Update your information
GENERAL
TIMEZONE
Select option Europe/Sofia (UTC +03:00)
Select option
Europe/Sofia (UTC +03:00)
*
LANGUAGES SPOKEN DURING CALLS
DEFAULT SPOKEN LANGUAGE
Select option English (United Kingdom)
Select option
English (United Kingdom)
*
If the language isn't detected we'll default to this one
Add language
CONNECT/SYNC SETTINGS
Connect Zoho CRM
zohocrm Connected
Connected
Import Calendar Meetings
*
google Sign in with Google
Sign in with Google
Let's Get Started!
Clear the Web Console output (⌘K, Ctrl+L)
Filter Output
Errors
Warnings
Info
Logs
Debug
CSS
XHR
Requests
Console Settings
Show/hide message details.
Content-Security-Policy warnings
2
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAUi-qNiXg7eU0.woff2
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAUi-qNiXg7eU0.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAXC-qNiXg7Q.woff2
https://fonts.gstatic.com/s/lato/v25/S6u8w4BMUTPHjxsAXC-qNiXg7Q.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_FQftx9897sxZ.woff2
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_FQftx9897sxZ.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_Gwftx9897g.woff2
https://fonts.gstatic.com/s/lato/v25/S6u_w4BMUTPHjxsI5wq_Gwftx9897g.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwaPGQ3q5d0N7w.woff2
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwaPGQ3q5d0N7w.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2
https://fonts.gstatic.com/s/lato/v25/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmZiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmZiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmQiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmQiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmYiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmYiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmXiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmXiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVnoiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVnoiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVn6iAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVn6iAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmbiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmbiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmaiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmaiAz0klQmz24O0g&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAz0klQmz24&skey=a0a0114a1dcab3ac&v=v51
https://fonts.gstatic.com/l/font?kit=KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAz0klQmz24&skey=a0a0114a1dcab3ac&v=v51
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Referrer Policy: Ignoring the less restricted referrer policy “no-referrer-when-downgrade” for the cross-site request:
https://cdn.logr-in.com/logger-1.min.js
https://cdn.logr-in.com/logger-1.min.js
logger-1.min.js
logger-1.min.js
[env]
LOGROCKET_ID has a falsy value
=>
string
<empty string>
_plugin-vue_export-helper-DD3s5456.js:123:3974
_plugin-vue_export-helper-DD3s5456.js
:123:3974
[env]
SENTRY_DSN has a falsy value
=>
string
<empty string>
_plugin-vue_export-helper-DD3s5456.js:123:3974
_plugin-vue_export-helper-DD3s5456.js
:123:3974
[env]
BRANCH has a falsy value
=>
object
null
_plugin-vue_export-helper-DD3s5456.js:123:3974
_plugin-vue_export-helper-DD3s5456.js
:123:3974
Content-Security-Policy: (Report-Only policy) The page’s settings would block the loading of a resource (font-src) at
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2
because it violates the following directive: “font-src 'self'
https://app.dev.jiminny.com
https://app.dev.jiminny.com
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://js.intercomcdn.com
https://js.intercomcdn.com
”
onboard
onboard
Content-Security-Policy: (Report-Only policy) The page’s settings would block a script (script-src-elem) at
https://cdn.logr-in.com/logger-1.min.js
https://cdn.logr-in.com/logger-1.min.js
from being executed because it violates the following directive: “script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:
https://app.dev.jiminny.com/
https://app.dev.jiminny.com/
https://ajax.googleapis.com
https://ajax.googleapis.com
https://www.googletagmanager.com
https://www.googletagmanager.com
https://www.google-analytics.com...
|
46543
|
|
32439
|
659
|
17
|
2026-04-16T07:06:57.660462+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776323217660_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp@ Not Securehttp://[IP_ADDRESS]:8767/frames/query/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I Seneticinto sqlite-web:Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256N() SQLite Web: db.saliteSQLw Screenpipe DashboardV Welcome to Steam+ New labiTINCT v.file_pathisf_chunks v ON f.video_chunk_id = v.idmescdl0 7=4010-04=190.00.00700.001mestamp <='2026-04-15T07:05:00+00:00';How this works:• SELECT DISTINCT v.file_path :Because a 5-minute window containsthousands of individual frames, this tellsthe database to only return the uniquefile paths. Without DISTINCT, you wouldget the same MP4 name repeated forevery single frame captured in those 5minutes. (Note: If file_path throws anerror in your version, change it toname ).• WHERE f. timestamp >= ... AND ...:This filters the frames to only look atthose captured within your requestedwindow. Notice that I added the T and+00:00 to your timestamp. SQLitehandles date filtering via stringcomparison, so it is highlyrecommended to match Screenpipe'snative ISO 8601 formatting exactly sothe database can evaluate the "greaterthan" and "less than" logic correctly.• JOIN : Just like before, this acts as thebridge connecting the frame timestampsto the actual MP4 file names.Ask GeminiPre vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pageaudio_transcriptions_elementselements_fts (v)elements_fts_configelements_fts_dataelements_tis_laxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_tagsToggle helper tablesapp_name TEXT DEFAULT NULL,window_name TEXT DEFAULT NULL,focused BOOLEAN DEFAULT NULL,browser_url TEXT DEFAULT NULL,device_name TEXT NOT NULL DEFAULT ",sync_id TEXT,machine_id TEXT,synced_at DATETIME,- New event-driven capture columnssnapshot_path TEXT DEFAULT NULL,accessibility_text TEXT DEFAULT NULL,accessibility_tree_json TEXT DEFAULT NULL,content_hash INTEGER DEFAULT NULL,simhash INTEGER DEFAULT NULL,capture_trigger TEXT DEFAULT NULL,text_source TEXT DEFAULT NULL,cloud_blob_id TEXT DEFAULT NULL,full_text TEXT DEFAULT NULL,elements_ref_frame_id INTEGER DEFAULT NULL,FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)SELECT * FROM "frames" WHERE timestamp > "2026-04-14T06:45:00.073971+00:00"Use Shift + Up/Down to navigate recently-executed queriesExport JSON Export CSVSQL HelpResults (1-1000 of 10382)idvideo_chunk_id offset_index timestampname8385 16262026-04-14T06:45:01.893176+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/17768386 1628387 1628388 1638389 1628390 1628391 16384app_nameCleanShot X2026-04-14T06:45:04.901401+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776CleanShot X2026-04-14T06:45:05.329612+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776CleanShot X2026-04-14T06:45:05.344392+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776CleanShot X2026-04-14T06:45:07.896043+00:00 /Users/NULLlukas/.screenpipe/data/data/2026-04-14/17762026-04-14T06:45:09.782386+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776Dia2026-04-14T06:45:09.793540+00:00 /Users/DiaC< 40ll O I SupportDaily in 4h54m A 100% C Thu 16 Apr 10:06:57window_nameNULLWork: Meet - Daily - Pla…..1focused browser_urlNULLNULLNULLNULLNULLNULLBookmarks + +Permalinkdevice_name sync_id machine_id syncedmonitor_1NULLNULLNULLmonitor_1monitor_monitor_2monitor_1monitor_1NULLNULLNULLINULLNULLNULLNULU: NULUNULLNULLNULLNULLNULLNULLNULLWork: Meet - Daily - Pla...1NULLmonitor_2NULLNULLNULL...
|
NULL
|
8908145734720904880
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp@ Not Securehttp://[IP_ADDRESS]:8767/frames/query/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I Seneticinto sqlite-web:Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256N() SQLite Web: db.saliteSQLw Screenpipe DashboardV Welcome to Steam+ New labiTINCT v.file_pathisf_chunks v ON f.video_chunk_id = v.idmescdl0 7=4010-04=190.00.00700.001mestamp <='2026-04-15T07:05:00+00:00';How this works:• SELECT DISTINCT v.file_path :Because a 5-minute window containsthousands of individual frames, this tellsthe database to only return the uniquefile paths. Without DISTINCT, you wouldget the same MP4 name repeated forevery single frame captured in those 5minutes. (Note: If file_path throws anerror in your version, change it toname ).• WHERE f. timestamp >= ... AND ...:This filters the frames to only look atthose captured within your requestedwindow. Notice that I added the T and+00:00 to your timestamp. SQLitehandles date filtering via stringcomparison, so it is highlyrecommended to match Screenpipe'snative ISO 8601 formatting exactly sothe database can evaluate the "greaterthan" and "less than" logic correctly.• JOIN : Just like before, this acts as thebridge connecting the frame timestampsto the actual MP4 file names.Ask GeminiPre vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pageaudio_transcriptions_elementselements_fts (v)elements_fts_configelements_fts_dataelements_tis_laxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheduler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_tagsToggle helper tablesapp_name TEXT DEFAULT NULL,window_name TEXT DEFAULT NULL,focused BOOLEAN DEFAULT NULL,browser_url TEXT DEFAULT NULL,device_name TEXT NOT NULL DEFAULT ",sync_id TEXT,machine_id TEXT,synced_at DATETIME,- New event-driven capture columnssnapshot_path TEXT DEFAULT NULL,accessibility_text TEXT DEFAULT NULL,accessibility_tree_json TEXT DEFAULT NULL,content_hash INTEGER DEFAULT NULL,simhash INTEGER DEFAULT NULL,capture_trigger TEXT DEFAULT NULL,text_source TEXT DEFAULT NULL,cloud_blob_id TEXT DEFAULT NULL,full_text TEXT DEFAULT NULL,elements_ref_frame_id INTEGER DEFAULT NULL,FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)SELECT * FROM "frames" WHERE timestamp > "2026-04-14T06:45:00.073971+00:00"Use Shift + Up/Down to navigate recently-executed queriesExport JSON Export CSVSQL HelpResults (1-1000 of 10382)idvideo_chunk_id offset_index timestampname8385 16262026-04-14T06:45:01.893176+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/17768386 1628387 1628388 1638389 1628390 1628391 16384app_nameCleanShot X2026-04-14T06:45:04.901401+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776CleanShot X2026-04-14T06:45:05.329612+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776CleanShot X2026-04-14T06:45:05.344392+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776CleanShot X2026-04-14T06:45:07.896043+00:00 /Users/NULLlukas/.screenpipe/data/data/2026-04-14/17762026-04-14T06:45:09.782386+00:00 /Users/lukas/.screenpipe/data/data/2026-04-14/1776Dia2026-04-14T06:45:09.793540+00:00 /Users/DiaC< 40ll O I SupportDaily in 4h54m A 100% C Thu 16 Apr 10:06:57window_nameNULLWork: Meet - Daily - Pla…..1focused browser_urlNULLNULLNULLNULLNULLNULLBookmarks + +Permalinkdevice_name sync_id machine_id syncedmonitor_1NULLNULLNULLmonitor_1monitor_monitor_2monitor_1monitor_1NULLNULLNULLINULLNULLNULLNULU: NULUNULLNULLNULLNULLNULLNULLNULLWork: Meet - Daily - Pla...1NULLmonitor_2NULLNULLNULL...
|
32438
|
|
57088
|
1229
|
44
|
2026-04-20T11:41:10.086482+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776685270086_m1.jpg...
|
PhpStorm
|
PhpStorm
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0ladlDOCKER381DEV (docker)$82DEV (docker)APP (-zsh)X3-zsh100% [8 Mon 20 Apr 14:41:09181screenpipe"• ₴5|configcachecompiledeventsroutesviewsjiminny-worker-processing-2: jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00:stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-downlond.aalnndnunland an.worker-nudgeworker-emailworker:workeworker-confeJiminny-workPS$1worker-audioworker-calenworker-crm-sworker-es-upartisan-schea.artisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:worker-emails:worker-emails_00:worker-es-update:worker-es-update_00:worker-nudges:worker-nudges_00:startedroot@docker_lamp_1:/home/jiminny#*44.38ms DONE21.60ms DONE1.88ms DONE2.11ms DONE1.80ms DONE5.65ms DONEDEVPostman...
|
NULL
|
8908035597417534786
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0ladlDOCKER381DEV (docker)$82DEV (docker)APP (-zsh)X3-zsh100% [8 Mon 20 Apr 14:41:09181screenpipe"• ₴5|configcachecompiledeventsroutesviewsjiminny-worker-processing-2: jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00:stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-downlond.aalnndnunland an.worker-nudgeworker-emailworker:workeworker-confeJiminny-workPS$1worker-audioworker-calenworker-crm-sworker-es-upartisan-schea.artisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:worker-emails:worker-emails_00:worker-es-update:worker-es-update_00:worker-nudges:worker-nudges_00:startedroot@docker_lamp_1:/home/jiminny#*44.38ms DONE21.60ms DONE1.88ms DONE2.11ms DONE1.80ms DONE5.65ms DONEDEVPostman...
|
NULL
|
|
45013
|
949
|
54
|
2026-04-17T09:16:49.512562+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776417409512_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(all→meet.google.com/xpx-omah-rknllian Kyuchukov (Presenting, annotating)BraveEdit888 DEV SimiceryPROO S0IssuesErrors & OutagesBreached MetricsWarningsUser FeedbackConfigureAlertsProfiesHelp40us.sentry /o/api/Ofprojects/Error during deal CRM auto pcymiony C[URL_WITH_CREDENTIALS] IssuesMerged IssuesDD Al Bookmarkllian KyuchukovNikolay NikolovVasil VasilevMihail MihaylovLukas Kovalik12:16 PM | Daily - Processing...
|
NULL
|
8907402403090760355
|
NULL
|
visual_change
|
ocr
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(all→meet.google.com/xpx-omah-rknllian Kyuchukov (Presenting, annotating)BraveEdit888 DEV SimiceryPROO S0IssuesErrors & OutagesBreached MetricsWarningsUser FeedbackConfigureAlertsProfiesHelp40us.sentry /o/api/Ofprojects/Error during deal CRM auto pcymiony C[URL_WITH_CREDENTIALS] IssuesMerged IssuesDD Al Bookmarkllian KyuchukovNikolay NikolovVasil VasilevMihail MihaylovLukas Kovalik12:16 PM | Daily - Processing...
|
45012
|
|
13271
|
289
|
62
|
2026-04-14T12:17:02.978941+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776169022978_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRetactonToo PhpStormFileFditViewNavigateCodeLaravelRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-liminny ~Project v= phpstan.neon.dist= phpstan-baseline.neon<> phpunit.xmlleraw_sql_query.salM+R-ADME,mosonar-project.properties— Testtoy<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK FILTERING IMPLEME> ilb External Libraries= Scratches and Consolesv _ Database Consoles>2EUvd jiminny@localhostd console liminny@localhoste Di Jiminny@localnostJc nooca minnvolocanos4 SF [iiminnv@localhostl& zono deviminny alocalnoV A PROD& console PRODIL console_1 PRODA DI [PROD]servicesv DatabaseV AEUc consoev 4iiminny@localhost2 HS local4SF 1 s 140 msV & PROD« console 5 sV & STAGINGa console 2 s 210 ms•, Docker(©) ReportController.phpC SendReportJob.php(©) AutomatedReportsCommand.php© AutomatedReportsSendCommand.phpAddLayoutEntities.phpC Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.php© CreateActivityLoggedevent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php(C) RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.phpC) AutomatedReportResult.phpC) AutomatedReport.phpclass AutomatedReportsSendCommand extends Command1 usageprivace tunccion nandlerorcesend(1nt gresultla): 1nt$reportResult = AutomatedReportResult::find($resultId):if (SreportResult === nulb 1sunss-rLoecerererTul seLT..LUO FAcrLA' Result not found', 'result id' => Sresultidio:return CommandAlias::FAILURE;фVaLldReciplents = puhis-›automacedkeportsservice->gecvaLldkeciplencusers(reportkesult-›дескерогс)):if (empty($validRecipients)) 1$this->logger->error(self::LOG_PREFIX . ' No valid recipients found', ['result_id' = $resultId,'uuid'= SreportResult->getUuido.1):(aJ Outputiib jiminny.leads X Ix,0 rowsv"OUTTy: AutovD)D)IQM0AФAuuid Y : oteam id Y : crm confiquration id v* Aostage id Ystage updated atDid T+ lorecord type id Y : converted at v= custom.log566567v Ớ 5685695/11074073576577578579580= laravel.logL SF liminny@localhostc HS_local fiminny@localhostTx: Auto vPlayground vSELECT * FROM crm profiles WHERE crm confiquration id = 555:SELECT * FROM crm_configurations WHERE 10 = 555SELECT * FROM users WHERE 1d = 15440; # team. 581, gr. 15440, pl. 3911, act. f1eld 162182SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,U.emall,sa.xTowner 1o rkur socar accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1..n<->1: on t.id = u.team idWHERE U.team_id = 581 and sa.provider = 'salesforce' :SELECT * FROM automated_report_results order by id desc;select * from features;select * from team_features where feature_id = 40;select * from l@ads where crm_provider_id IS NULL;|• Retro - Platform • in 1h 43 m100% [2Tue 14 Apr 15:17:02AutomatedReportsCommandTestvL console PROD] XL console (EU]L console (STAGINGSo jiminny v929 42 428 V 61- W÷ ILo converted account id YCSlDd→OlL converted opportunity id v +lo converted contact id Y÷ 4 crm_pr0 rows retrieved in 1s 154 ms (execution: 196 ms, tetching: 958 ms)W Windsurt Teams582:51U11F-84 spaces...
|
NULL
|
8907128250639509720
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRetactonToo PhpStormFileFditViewNavigateCodeLaravelRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-liminny ~Project v= phpstan.neon.dist= phpstan-baseline.neon<> phpunit.xmlleraw_sql_query.salM+R-ADME,mosonar-project.properties— Testtoy<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK FILTERING IMPLEME> ilb External Libraries= Scratches and Consolesv _ Database Consoles>2EUvd jiminny@localhostd console liminny@localhoste Di Jiminny@localnostJc nooca minnvolocanos4 SF [iiminnv@localhostl& zono deviminny alocalnoV A PROD& console PRODIL console_1 PRODA DI [PROD]servicesv DatabaseV AEUc consoev 4iiminny@localhost2 HS local4SF 1 s 140 msV & PROD« console 5 sV & STAGINGa console 2 s 210 ms•, Docker(©) ReportController.phpC SendReportJob.php(©) AutomatedReportsCommand.php© AutomatedReportsSendCommand.phpAddLayoutEntities.phpC Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.php© CreateActivityLoggedevent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php(C) RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.phpC) AutomatedReportResult.phpC) AutomatedReport.phpclass AutomatedReportsSendCommand extends Command1 usageprivace tunccion nandlerorcesend(1nt gresultla): 1nt$reportResult = AutomatedReportResult::find($resultId):if (SreportResult === nulb 1sunss-rLoecerererTul seLT..LUO FAcrLA' Result not found', 'result id' => Sresultidio:return CommandAlias::FAILURE;фVaLldReciplents = puhis-›automacedkeportsservice->gecvaLldkeciplencusers(reportkesult-›дескерогс)):if (empty($validRecipients)) 1$this->logger->error(self::LOG_PREFIX . ' No valid recipients found', ['result_id' = $resultId,'uuid'= SreportResult->getUuido.1):(aJ Outputiib jiminny.leads X Ix,0 rowsv"OUTTy: AutovD)D)IQM0AФAuuid Y : oteam id Y : crm confiquration id v* Aostage id Ystage updated atDid T+ lorecord type id Y : converted at v= custom.log566567v Ớ 5685695/11074073576577578579580= laravel.logL SF liminny@localhostc HS_local fiminny@localhostTx: Auto vPlayground vSELECT * FROM crm profiles WHERE crm confiquration id = 555:SELECT * FROM crm_configurations WHERE 10 = 555SELECT * FROM users WHERE 1d = 15440; # team. 581, gr. 15440, pl. 3911, act. f1eld 162182SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,U.emall,sa.xTowner 1o rkur socar accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1..n<->1: on t.id = u.team idWHERE U.team_id = 581 and sa.provider = 'salesforce' :SELECT * FROM automated_report_results order by id desc;select * from features;select * from team_features where feature_id = 40;select * from l@ads where crm_provider_id IS NULL;|• Retro - Platform • in 1h 43 m100% [2Tue 14 Apr 15:17:02AutomatedReportsCommandTestvL console PROD] XL console (EU]L console (STAGINGSo jiminny v929 42 428 V 61- W÷ ILo converted account id YCSlDd→OlL converted opportunity id v +lo converted contact id Y÷ 4 crm_pr0 rows retrieved in 1s 154 ms (execution: 196 ms, tetching: 958 ms)W Windsurt Teams582:51U11F-84 spaces...
|
NULL
|
|
57136
|
1232
|
10
|
2026-04-20T11:43:09.985105+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776685389985_m2.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rireroxCalt••0!Jy 19798 evaluation for ai activity rireroxCalt••0!Jy 19798 evaluation for ai activityJY-20553 | Improve crm-sync dela|SRD-6793) Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated repAsk Jiminny Reports by nikolay-ya- New Tabu Product Growth Plattorm Userpilgfix(security): composer depender© Pipelines - jiminny/app) Feed - jiminny - Sentry(JY-20692] Issue with reconnectituy-206921 Issue with reconnectinJY-20692 change confirmation pa(JY-20692] Issue with reconnectU ISRD-67871 Issue with reconnecti& Jiminny MCP Connector - Product-7 [JY-206761 Notify the user if a PaiProject Phoenix - Figma© Pipelines - jiminny/app0) liminnv - Circlec- New TaoMIstoryPronllesBookmarksQ Search bookmarksv x bookmarks loolbaSprint Board# SRD QueueGithubJiminny DEVAsk liminnv Renorts bv nikolav-vankov . ....© Circle Cl& PROD US8 StagingSentry> E Bookmarks Menu… Other BookmarksWindowo circleci •HomePipelinesProjectsDeploysInsightsRunnersOrgPlanJobscheckout-code 873290test-trontend 873294build-backend 873291prevare deblov revision_orod 873301build docker backend code nrod 872302|bulld docker worker code prod 8/3303buid docker worker video code orod 8733041dh miarations nrod 872205deploy frontend assets to s3 prod 873314denlov docker backend code orod 873315|denlov dockor worker codo nrod 872217deplov_docker worker video code prod 873316sentry_notify-1 873319prepare_deploy_revision_prod_eu 873295build_docker_backend_code_prod_eu 873300build docker worker code prod eu 873307build docker worker video code nrod eu 8733061db_migrations prod eu 873308deplov frontend assets to sß prod eu 873309denlov docker backend code nrod eu 873312deploy docker worker code prod eu 8/3310deplov docker worker video code prod eu 873311centry notifv-2 873213slack_notify 873318setuo 873296• test 873297vtest-backend-lint 873298sonar cloud 873299cotun-workflow SstupChunk$0100% C42Mon 20 Apr 14:43:09Jt-<uosc-tix-Integration"ape-token"aun-response.... Push Commit pushed21m ago1m 16s1m 36s1m S1S1m 15s1m 5s1m 3s1m 52cIm s8s1m 54s34s11m 43s7m 30s24s38558s1m 54sim 52s1m 52s45s10m 1sym 35S27s40s49sOm 21c4m 13s6m 27s1m 9smaster4eec6ce Merae oulll reauest #1986 from liminnv]JY-20692-fix-integration-app-token-auth-response... (GG.....
|
NULL
|
8907101989447735486
|
NULL
|
app_switch
|
ocr
|
NULL
|
rireroxCalt••0!Jy 19798 evaluation for ai activity rireroxCalt••0!Jy 19798 evaluation for ai activityJY-20553 | Improve crm-sync dela|SRD-6793) Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated repAsk Jiminny Reports by nikolay-ya- New Tabu Product Growth Plattorm Userpilgfix(security): composer depender© Pipelines - jiminny/app) Feed - jiminny - Sentry(JY-20692] Issue with reconnectituy-206921 Issue with reconnectinJY-20692 change confirmation pa(JY-20692] Issue with reconnectU ISRD-67871 Issue with reconnecti& Jiminny MCP Connector - Product-7 [JY-206761 Notify the user if a PaiProject Phoenix - Figma© Pipelines - jiminny/app0) liminnv - Circlec- New TaoMIstoryPronllesBookmarksQ Search bookmarksv x bookmarks loolbaSprint Board# SRD QueueGithubJiminny DEVAsk liminnv Renorts bv nikolav-vankov . ....© Circle Cl& PROD US8 StagingSentry> E Bookmarks Menu… Other BookmarksWindowo circleci •HomePipelinesProjectsDeploysInsightsRunnersOrgPlanJobscheckout-code 873290test-trontend 873294build-backend 873291prevare deblov revision_orod 873301build docker backend code nrod 872302|bulld docker worker code prod 8/3303buid docker worker video code orod 8733041dh miarations nrod 872205deploy frontend assets to s3 prod 873314denlov docker backend code orod 873315|denlov dockor worker codo nrod 872217deplov_docker worker video code prod 873316sentry_notify-1 873319prepare_deploy_revision_prod_eu 873295build_docker_backend_code_prod_eu 873300build docker worker code prod eu 873307build docker worker video code nrod eu 8733061db_migrations prod eu 873308deplov frontend assets to sß prod eu 873309denlov docker backend code nrod eu 873312deploy docker worker code prod eu 8/3310deplov docker worker video code prod eu 873311centry notifv-2 873213slack_notify 873318setuo 873296• test 873297vtest-backend-lint 873298sonar cloud 873299cotun-workflow SstupChunk$0100% C42Mon 20 Apr 14:43:09Jt-<uosc-tix-Integration"ape-token"aun-response.... Push Commit pushed21m ago1m 16s1m 36s1m S1S1m 15s1m 5s1m 3s1m 52cIm s8s1m 54s34s11m 43s7m 30s24s38558s1m 54sim 52s1m 52s45s10m 1sym 35S27s40s49sOm 21c4m 13s6m 27s1m 9smaster4eec6ce Merae oulll reauest #1986 from liminnv]JY-20692-fix-integration-app-token-auth-response... (GG.....
|
NULL
|
|
28273
|
586
|
51
|
2026-04-15T14:11:35.836028+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776262295836_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
8780631820248-5857391955126/185toImperial Age--Eli 8780631820248-5857391955126/185toImperial Age--Elite Longbowman Created--Scout Cavalry Created--Right-click to attack this unit!5 Magnus Olafsson: 31249/31249NV1 kovaliklukas: 25168/251682 Rajyapala: 24343/243438 Almish Yiltawar: 23330/23330ON6 LAsz16 Io 12114/12114 / IV7 Maximilian of Habsburg: 6531/6531 IV4 Leuis VI: 6204/6204 C IV3 Huagcán: 6028/6028 # TV...
|
NULL
|
8907091884176310844
|
NULL
|
click
|
ocr
|
NULL
|
8780631820248-5857391955126/185toImperial Age--Eli 8780631820248-5857391955126/185toImperial Age--Elite Longbowman Created--Scout Cavalry Created--Right-click to attack this unit!5 Magnus Olafsson: 31249/31249NV1 kovaliklukas: 25168/251682 Rajyapala: 24343/243438 Almish Yiltawar: 23330/23330ON6 LAsz16 Io 12114/12114 / IV7 Maximilian of Habsburg: 6531/6531 IV4 Leuis VI: 6204/6204 C IV3 Huagcán: 6028/6028 # TV...
|
NULL
|