|
35745
|
729
|
0
|
2026-04-16T10:05:26.782710+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333926782_m2.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/connect/connect.vue...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
17
1
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout
title="Account disconnected"
textPosition="center"
:icon="faUnlink"
:class="$style.layout"
>
<div :class="$style.container" v-if="providersLoaded">
<p>
<strong>
It looks like your {{ localProvider.displayName }} account has become
disconnected
</strong>
</p>
<p :class="$style.small">Please re-connect to continue</p>
<p v-if="isInIframe">
We'll open the {{ localProvider.displayName }} authentication in a new
tab. Please return here and refresh the page once complete
</p>
<GoogleLikeButton
v-if="localProvider.viaIntegrationApp && crmTokenLoaded"
as="a"
:key="localProvider.name"
:brand-logo="localProvider.name"
:class="$style.connectButton"
@click="integrationAppOnClick"
>
Sign in with {{ localProvider.displayName }}
</GoogleLikeButton>
<GoogleLikeButton
v-if="!localProvider.viaIntegrationApp"
as="a"
:key="localProvider.name"
:href="`/auth/redirect/${localProvider.name}`"
:target="target"
:brand-logo="localProvider.name"
:class="$style.connectButton"
>
Sign in with {{ localProvider.displayName }}
</GoogleLikeButton>
</div>
<BuildInfo />
<KioskBanner />
</WelcomeLayout>
</template>
<script>
import window from "window";
import axios from "axios";
import { faUnlink } from "@fortawesome/pro-regular-svg-icons";
import isInIframe from "@/utils/isInIframe";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import KioskBanner from "@/components/shared/KioskBanner/KioskBanner.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import GoogleLikeButton from "@/components/shared/Buttons/GoogleLikeButton.vue";
import { showSnackbarError, normalizeError } from "@/utils/index";
import { IntegrationAppClient } from "@integration-app/sdk";
export default {
name: "ConnectPage",
components: {
BuildInfo,
KioskBanner,
WelcomeLayout,
GoogleLikeButton,
},
data() {
return {
...window.connectData,
crmToken: null,
faUnlink,
isInIframe,
providers: [],
providersLoaded: false,
crmTokenLoaded: false,
};
},
computed: {
localProvider() {
return this.providers.find((e) => e.name === this.provider);
},
target() {
return this.isInIframe ? "_blank" : null;
},
},
created() {
this.getProviders();
},
mounted() {
this.showErrors();
},
watch: {
providersLoaded() {
if (this.providersLoaded) {
this.prepareIntegrationAppConnection();
}
},
},
methods: {
showErrors() {
if (!this.error) return;
showSnackbarError(this.error, undefined, undefined, false);
},
unwrapEntityResponse({ data }) {
return data.map(({ icon, name, displayName, viaIntegrationApp }) => {
return { icon, name, displayName, viaIntegrationApp };
});
},
async getProviders() {
try {
const response = await axios.get("/api/v1/connect-providers");
this.providers = this.unwrapEntityResponse(response);
this.providersLoaded = true;
} catch {
showSnackbarError(
"An error occurred, while loading form data (connect providers).",
);
}
},
async prepareIntegrationAppConnection() {
if (this.localProvider.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
this.crmToken = response.data.token;
this.crmTokenLoaded = true;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
},
async integrationAppOnClick() {
const integrationApp = new IntegrationAppClient({
token: this.crmToken,
});
const connection = await integrationApp
.integration(this.localProvider.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
console.log('[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));
[IntegrationApp] openNewConnection resolved: {"id":"69e0b41a67d0068c2ca0b48e","name":"Zoho CRM","userId":"1ece66c8-feb1-4df1-b321-21607daf4623","tenantId":"69e0b3faef3e7b6248189289","isTest":false,"connected":true,"state":"READY","errors":[],"integrationId":"66fe6c913202f3a165e3c14d","externalAppId":"6671653e7e2d642e4e41b0fa","authOptionKey":"","createdAt":"2026-04-16T10:04:10.420Z","updatedAt":"2026-04-16T10:04:10.575Z","retryAttempts":0,"isDeactivated":false}
if (connection && connection.disconnected === false) {
try {
const saveRequest = await axios.post(
"/api/v1/integration-app-connect",
);
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
window.location = "/dashboard";
return;
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
}
},
},
};
</script>
<style module lang="less" src="./connect.less"></style>
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.403125,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.41484374,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.42617187,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.43476564,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"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":"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":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.753125,"top":0.0875,"width":0.0109375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.76640624,"top":0.0875,"width":0.00859375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7769531,"top":0.08611111,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.7855469,"top":0.08611111,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<template>\n <WelcomeLayout\n title=\"Account disconnected\"\n textPosition=\"center\"\n :icon=\"faUnlink\"\n :class=\"$style.layout\"\n >\n <div :class=\"$style.container\" v-if=\"providersLoaded\">\n <p>\n <strong>\n It looks like your {{ localProvider.displayName }} account has become\n disconnected\n </strong>\n </p>\n <p :class=\"$style.small\">Please re-connect to continue</p>\n <p v-if=\"isInIframe\">\n We'll open the {{ localProvider.displayName }} authentication in a new\n tab. Please return here and refresh the page once complete\n </p>\n\n <GoogleLikeButton\n v-if=\"localProvider.viaIntegrationApp && crmTokenLoaded\"\n as=\"a\"\n :key=\"localProvider.name\"\n :brand-logo=\"localProvider.name\"\n :class=\"$style.connectButton\"\n @click=\"integrationAppOnClick\"\n >\n Sign in with {{ localProvider.displayName }}\n </GoogleLikeButton>\n <GoogleLikeButton\n v-if=\"!localProvider.viaIntegrationApp\"\n as=\"a\"\n :key=\"localProvider.name\"\n :href=\"`/auth/redirect/${localProvider.name}`\"\n :target=\"target\"\n :brand-logo=\"localProvider.name\"\n :class=\"$style.connectButton\"\n >\n Sign in with {{ localProvider.displayName }}\n </GoogleLikeButton>\n </div>\n <BuildInfo />\n\n <KioskBanner />\n </WelcomeLayout>\n</template>\n\n<script>\nimport window from \"window\";\nimport axios from \"axios\";\nimport { faUnlink } from \"@fortawesome/pro-regular-svg-icons\";\nimport isInIframe from \"@/utils/isInIframe\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport KioskBanner from \"@/components/shared/KioskBanner/KioskBanner.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport GoogleLikeButton from \"@/components/shared/Buttons/GoogleLikeButton.vue\";\nimport { showSnackbarError, normalizeError } from \"@/utils/index\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\n\nexport default {\n name: \"ConnectPage\",\n components: {\n BuildInfo,\n KioskBanner,\n WelcomeLayout,\n GoogleLikeButton,\n },\n data() {\n return {\n ...window.connectData,\n crmToken: null,\n faUnlink,\n isInIframe,\n providers: [],\n providersLoaded: false,\n crmTokenLoaded: false,\n };\n },\n computed: {\n localProvider() {\n return this.providers.find((e) => e.name === this.provider);\n },\n target() {\n return this.isInIframe ? \"_blank\" : null;\n },\n },\n created() {\n this.getProviders();\n },\n mounted() {\n this.showErrors();\n },\n watch: {\n providersLoaded() {\n if (this.providersLoaded) {\n this.prepareIntegrationAppConnection();\n }\n },\n },\n methods: {\n showErrors() {\n if (!this.error) return;\n\n showSnackbarError(this.error, undefined, undefined, false);\n },\n unwrapEntityResponse({ data }) {\n return data.map(({ icon, name, displayName, viaIntegrationApp }) => {\n return { icon, name, displayName, viaIntegrationApp };\n });\n },\n async getProviders() {\n try {\n const response = await axios.get(\"/api/v1/connect-providers\");\n this.providers = this.unwrapEntityResponse(response);\n this.providersLoaded = true;\n } catch {\n showSnackbarError(\n \"An error occurred, while loading form data (connect providers).\",\n );\n }\n },\n async prepareIntegrationAppConnection() {\n if (this.localProvider.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n this.crmToken = response.data.token;\n this.crmTokenLoaded = true;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n },\n async integrationAppOnClick() {\n const integrationApp = new IntegrationAppClient({\n token: this.crmToken,\n });\n\n const connection = await integrationApp\n .integration(this.localProvider.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n console.log('[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));\n \n [IntegrationApp] openNewConnection resolved: {\"id\":\"69e0b41a67d0068c2ca0b48e\",\"name\":\"Zoho CRM\",\"userId\":\"1ece66c8-feb1-4df1-b321-21607daf4623\",\"tenantId\":\"69e0b3faef3e7b6248189289\",\"isTest\":false,\"connected\":true,\"state\":\"READY\",\"errors\":[],\"integrationId\":\"66fe6c913202f3a165e3c14d\",\"externalAppId\":\"6671653e7e2d642e4e41b0fa\",\"authOptionKey\":\"\",\"createdAt\":\"2026-04-16T10:04:10.420Z\",\"updatedAt\":\"2026-04-16T10:04:10.575Z\",\"retryAttempts\":0,\"isDeactivated\":false}\n\n if (connection && connection.disconnected === false) {\n try {\n const saveRequest = await axios.post(\n \"/api/v1/integration-app-connect\",\n );\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n window.location = \"/dashboard\";\n return;\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n }\n },\n },\n};\n</script>\n\n<style module lang=\"less\" src=\"./connect.less\"></style>","depth":4,"value":"<template>\n <WelcomeLayout\n title=\"Account disconnected\"\n textPosition=\"center\"\n :icon=\"faUnlink\"\n :class=\"$style.layout\"\n >\n <div :class=\"$style.container\" v-if=\"providersLoaded\">\n <p>\n <strong>\n It looks like your {{ localProvider.displayName }} account has become\n disconnected\n </strong>\n </p>\n <p :class=\"$style.small\">Please re-connect to continue</p>\n <p v-if=\"isInIframe\">\n We'll open the {{ localProvider.displayName }} authentication in a new\n tab. Please return here and refresh the page once complete\n </p>\n\n <GoogleLikeButton\n v-if=\"localProvider.viaIntegrationApp && crmTokenLoaded\"\n as=\"a\"\n :key=\"localProvider.name\"\n :brand-logo=\"localProvider.name\"\n :class=\"$style.connectButton\"\n @click=\"integrationAppOnClick\"\n >\n Sign in with {{ localProvider.displayName }}\n </GoogleLikeButton>\n <GoogleLikeButton\n v-if=\"!localProvider.viaIntegrationApp\"\n as=\"a\"\n :key=\"localProvider.name\"\n :href=\"`/auth/redirect/${localProvider.name}`\"\n :target=\"target\"\n :brand-logo=\"localProvider.name\"\n :class=\"$style.connectButton\"\n >\n Sign in with {{ localProvider.displayName }}\n </GoogleLikeButton>\n </div>\n <BuildInfo />\n\n <KioskBanner />\n </WelcomeLayout>\n</template>\n\n<script>\nimport window from \"window\";\nimport axios from \"axios\";\nimport { faUnlink } from \"@fortawesome/pro-regular-svg-icons\";\nimport isInIframe from \"@/utils/isInIframe\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport KioskBanner from \"@/components/shared/KioskBanner/KioskBanner.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport GoogleLikeButton from \"@/components/shared/Buttons/GoogleLikeButton.vue\";\nimport { showSnackbarError, normalizeError } from \"@/utils/index\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\n\nexport default {\n name: \"ConnectPage\",\n components: {\n BuildInfo,\n KioskBanner,\n WelcomeLayout,\n GoogleLikeButton,\n },\n data() {\n return {\n ...window.connectData,\n crmToken: null,\n faUnlink,\n isInIframe,\n providers: [],\n providersLoaded: false,\n crmTokenLoaded: false,\n };\n },\n computed: {\n localProvider() {\n return this.providers.find((e) => e.name === this.provider);\n },\n target() {\n return this.isInIframe ? \"_blank\" : null;\n },\n },\n created() {\n this.getProviders();\n },\n mounted() {\n this.showErrors();\n },\n watch: {\n providersLoaded() {\n if (this.providersLoaded) {\n this.prepareIntegrationAppConnection();\n }\n },\n },\n methods: {\n showErrors() {\n if (!this.error) return;\n\n showSnackbarError(this.error, undefined, undefined, false);\n },\n unwrapEntityResponse({ data }) {\n return data.map(({ icon, name, displayName, viaIntegrationApp }) => {\n return { icon, name, displayName, viaIntegrationApp };\n });\n },\n async getProviders() {\n try {\n const response = await axios.get(\"/api/v1/connect-providers\");\n this.providers = this.unwrapEntityResponse(response);\n this.providersLoaded = true;\n } catch {\n showSnackbarError(\n \"An error occurred, while loading form data (connect providers).\",\n );\n }\n },\n async prepareIntegrationAppConnection() {\n if (this.localProvider.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n this.crmToken = response.data.token;\n this.crmTokenLoaded = true;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n },\n async integrationAppOnClick() {\n const integrationApp = new IntegrationAppClient({\n token: this.crmToken,\n });\n\n const connection = await integrationApp\n .integration(this.localProvider.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n console.log('[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));\n \n [IntegrationApp] openNewConnection resolved: {\"id\":\"69e0b41a67d0068c2ca0b48e\",\"name\":\"Zoho CRM\",\"userId\":\"1ece66c8-feb1-4df1-b321-21607daf4623\",\"tenantId\":\"69e0b3faef3e7b6248189289\",\"isTest\":false,\"connected\":true,\"state\":\"READY\",\"errors\":[],\"integrationId\":\"66fe6c913202f3a165e3c14d\",\"externalAppId\":\"6671653e7e2d642e4e41b0fa\",\"authOptionKey\":\"\",\"createdAt\":\"2026-04-16T10:04:10.420Z\",\"updatedAt\":\"2026-04-16T10:04:10.575Z\",\"retryAttempts\":0,\"isDeactivated\":false}\n\n if (connection && connection.disconnected === false) {\n try {\n const saveRequest = await axios.post(\n \"/api/v1/integration-app-connect\",\n );\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n window.location = \"/dashboard\";\n return;\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n }\n },\n },\n};\n</script>\n\n<style module lang=\"less\" src=\"./connect.less\"></style>","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6572373177669369160
|
-7568145683441795183
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
17
1
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout
title="Account disconnected"
textPosition="center"
:icon="faUnlink"
:class="$style.layout"
>
<div :class="$style.container" v-if="providersLoaded">
<p>
<strong>
It looks like your {{ localProvider.displayName }} account has become
disconnected
</strong>
</p>
<p :class="$style.small">Please re-connect to continue</p>
<p v-if="isInIframe">
We'll open the {{ localProvider.displayName }} authentication in a new
tab. Please return here and refresh the page once complete
</p>
<GoogleLikeButton
v-if="localProvider.viaIntegrationApp && crmTokenLoaded"
as="a"
:key="localProvider.name"
:brand-logo="localProvider.name"
:class="$style.connectButton"
@click="integrationAppOnClick"
>
Sign in with {{ localProvider.displayName }}
</GoogleLikeButton>
<GoogleLikeButton
v-if="!localProvider.viaIntegrationApp"
as="a"
:key="localProvider.name"
:href="`/auth/redirect/${localProvider.name}`"
:target="target"
:brand-logo="localProvider.name"
:class="$style.connectButton"
>
Sign in with {{ localProvider.displayName }}
</GoogleLikeButton>
</div>
<BuildInfo />
<KioskBanner />
</WelcomeLayout>
</template>
<script>
import window from "window";
import axios from "axios";
import { faUnlink } from "@fortawesome/pro-regular-svg-icons";
import isInIframe from "@/utils/isInIframe";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import KioskBanner from "@/components/shared/KioskBanner/KioskBanner.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import GoogleLikeButton from "@/components/shared/Buttons/GoogleLikeButton.vue";
import { showSnackbarError, normalizeError } from "@/utils/index";
import { IntegrationAppClient } from "@integration-app/sdk";
export default {
name: "ConnectPage",
components: {
BuildInfo,
KioskBanner,
WelcomeLayout,
GoogleLikeButton,
},
data() {
return {
...window.connectData,
crmToken: null,
faUnlink,
isInIframe,
providers: [],
providersLoaded: false,
crmTokenLoaded: false,
};
},
computed: {
localProvider() {
return this.providers.find((e) => e.name === this.provider);
},
target() {
return this.isInIframe ? "_blank" : null;
},
},
created() {
this.getProviders();
},
mounted() {
this.showErrors();
},
watch: {
providersLoaded() {
if (this.providersLoaded) {
this.prepareIntegrationAppConnection();
}
},
},
methods: {
showErrors() {
if (!this.error) return;
showSnackbarError(this.error, undefined, undefined, false);
},
unwrapEntityResponse({ data }) {
return data.map(({ icon, name, displayName, viaIntegrationApp }) => {
return { icon, name, displayName, viaIntegrationApp };
});
},
async getProviders() {
try {
const response = await axios.get("/api/v1/connect-providers");
this.providers = this.unwrapEntityResponse(response);
this.providersLoaded = true;
} catch {
showSnackbarError(
"An error occurred, while loading form data (connect providers).",
);
}
},
async prepareIntegrationAppConnection() {
if (this.localProvider.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
this.crmToken = response.data.token;
this.crmTokenLoaded = true;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
},
async integrationAppOnClick() {
const integrationApp = new IntegrationAppClient({
token: this.crmToken,
});
const connection = await integrationApp
.integration(this.localProvider.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
console.log('[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));
[IntegrationApp] openNewConnection resolved: {"id":"69e0b41a67d0068c2ca0b48e","name":"Zoho CRM","userId":"1ece66c8-feb1-4df1-b321-21607daf4623","tenantId":"69e0b3faef3e7b6248189289","isTest":false,"connected":true,"state":"READY","errors":[],"integrationId":"66fe6c913202f3a165e3c14d","externalAppId":"6671653e7e2d642e4e41b0fa","authOptionKey":"","createdAt":"2026-04-16T10:04:10.420Z","updatedAt":"2026-04-16T10:04:10.575Z","retryAttempts":0,"isDeactivated":false}
if (connection && connection.disconnected === false) {
try {
const saveRequest = await axios.post(
"/api/v1/integration-app-connect",
);
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
window.location = "/dashboard";
return;
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
}
},
},
};
</script>
<style module lang="less" src="./connect.less"></style>
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
35743
|
|
35841
|
NULL
|
0
|
2026-04-16T10:10:37.838130+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334237838_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 1 new item - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8695006771375936211
|
-3644476792552114003
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kBSupport Daily - in 1h 50 mAPP (-zsh)ec2-user@ip-10-30-...₴4DOCKER25981DEV (docker)82APP (-zsh)X3../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:10:37181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
NULL
|
|
35843
|
NULL
|
0
|
2026-04-16T10:10:41.339645+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334241339_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewHistoryWindowHelpQ Search Jiminny SlackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminn... & 18DMs= Unreadse) Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMore= Channels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...(0. Adelina Petrova**:AppsToastJira Cloud• MessagesMore~pass cirrerent set or data asInolUTznes Downloae allithe first one has Due_Date butthe second one has not (edited)Lukas Kovalik 3:15 PMIs it some setting?Đ028 39 repliesFebruary 13th, 2025Lukas Kovalik 4:55 PMWe have found one moreproblem with one of [URL_WITH_CREDENTIALS] @Gui@Ryan Thank you.View newer replies10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadMaxn boptisky reo2oth. 2025 at 114y AM(s hmm... maybe an issue with caching@Vlad could youVadvs ay Ursul APP Feb 25th. 2025 at 11:52 AMDon't think we cache anything there. @Lukas Kovalik, where have you tried it?Also do you just refreshed connection or upgraded connector to the latest version as well?Lukas Kovalik Feb 25th, 2025 at 11:53 AMIupdareaCleanShot 2025-02-25 at [EMAIL] •Meladei Ai te ome eds ehee leuriser urteh upo. Cpl, oreate ony but trat dosenVlad Feb 25th. 2025 at 11:53 AM• Can you share a link to customer action you are not able to create due date?ILukas Novallk reb Zoth. 2025 at 1.54 AMlhttps://console.integration.app/w/66fd5a6e813fde5d1b8aa505/deployments/customers/67863464c2dd79e2afa939f6/actions/6788e257eaaba8cb2051ffb2Lukas Kovalik Feb 25th, 2025 at 12:02 PMdo you need some data for testing?Vladyslav Ursul APP Feb 25th, 2025 at 12:02 PM@ Ok, actually Maxim was right. We cached the schemas on Action instance and since we don'tautomatically recalculate them on connector update - you had the same issue on old actionisntanceNow it works: https://www.awesomescreenshot.com/video/36981147?key=9a514c210d37bac2e7a133c95813b10cLukas Kovalik Feb 25th, 2025 at 12:08 PMyes, seems to be working fine nowH2thanks a lot10 external people are from MembraneReply...Also send to @ jiminny-x-integration-appRODA SF [jiminny@localhost]A console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me":"Zoho CRM",erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId":"66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642eчe41D0ta",chuptlonkey".""eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction &ã connection. disconnected === false) {veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:40CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaiselttalatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo lonKcrorwooLinuouTNovuou4.ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
-4799260566846765268
|
NULL
|
visual_change
|
ocr
|
NULL
|
SlackFileEditViewHistoryWindowHelpQ Search Jiminny SlackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminn... & 18DMs= Unreadse) Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMore= Channels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...(0. Adelina Petrova**:AppsToastJira Cloud• MessagesMore~pass cirrerent set or data asInolUTznes Downloae allithe first one has Due_Date butthe second one has not (edited)Lukas Kovalik 3:15 PMIs it some setting?Đ028 39 repliesFebruary 13th, 2025Lukas Kovalik 4:55 PMWe have found one moreproblem with one of [URL_WITH_CREDENTIALS] @Gui@Ryan Thank you.View newer replies10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadMaxn boptisky reo2oth. 2025 at 114y AM(s hmm... maybe an issue with caching@Vlad could youVadvs ay Ursul APP Feb 25th. 2025 at 11:52 AMDon't think we cache anything there. @Lukas Kovalik, where have you tried it?Also do you just refreshed connection or upgraded connector to the latest version as well?Lukas Kovalik Feb 25th, 2025 at 11:53 AMIupdareaCleanShot 2025-02-25 at [EMAIL] •Meladei Ai te ome eds ehee leuriser urteh upo. Cpl, oreate ony but trat dosenVlad Feb 25th. 2025 at 11:53 AM• Can you share a link to customer action you are not able to create due date?ILukas Novallk reb Zoth. 2025 at 1.54 AMlhttps://console.integration.app/w/66fd5a6e813fde5d1b8aa505/deployments/customers/67863464c2dd79e2afa939f6/actions/6788e257eaaba8cb2051ffb2Lukas Kovalik Feb 25th, 2025 at 12:02 PMdo you need some data for testing?Vladyslav Ursul APP Feb 25th, 2025 at 12:02 PM@ Ok, actually Maxim was right. We cached the schemas on Action instance and since we don'tautomatically recalculate them on connector update - you had the same issue on old actionisntanceNow it works: https://www.awesomescreenshot.com/video/36981147?key=9a514c210d37bac2e7a133c95813b10cLukas Kovalik Feb 25th, 2025 at 12:08 PMyes, seems to be working fine nowH2thanks a lot10 external people are from MembraneReply...Also send to @ jiminny-x-integration-appRODA SF [jiminny@localhost]A console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me":"Zoho CRM",erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId":"66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642eчe41D0ta",chuptlonkey".""eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction &ã connection. disconnected === false) {veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:40CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaiselttalatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo lonKcrorwooLinuouTNovuou4.ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
|
35844
|
730
|
0
|
2026-04-16T10:10:50.318883+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334250318_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 1 new item - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"}]...
|
-2098326626242922167
|
-4193680793516689401
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]APP (-zsh)₴4DOCKER-₴81DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• 28526.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ISupport Daily - in 1h 50 mA-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:10:50181* Unable to acce...O x8APP...
|
35841
|
|
35845
|
731
|
0
|
2026-04-16T10:10:50.338595+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334250338_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewHistoryWindowHelpQ Search Jiminny SlackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminn... & 18DMs= Unreadse) Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMore= Channels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...(0. Adelina Petrova**:AppsToastJira Cloud• MessagesMore ~pass cirrerent set or data asInolUTznes Downloae allithe first one has Due_Date butthe second one has not (edited)Lukas Kovalik 3:15 PMIs it some setting?Đ028 39 repliesFebruary 13th, 2025Lukas Kovalik 4:55 PMWe have found one moreproblem with one of [URL_WITH_CREDENTIALS] @Gui@Ryan Thank you.View newer replies10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadMaxn boptisky reo2oth. 2025 at 114y AM( hmm…. maybe an issue with cachingaac coule vou check ozVadvs ay Ursul APP Feb 25th. 2025 at 11:52 AM© Don't think we cache anything there. @Lukas Kovalik, where have you tried it?Also do you just refreshed connection or upgraded connector to the latest version as well?Lukas Kovalik Feb 25th, 2025 at 11:53 AMlupaareaCleanShot 2025-02-25 at [EMAIL] •Meladei Ai ter ome eds ehe leur:ser urtch, upo. Cpl oreate only bul trat dosenVlad Feb 25th. 2025 at 11:53 AM• Can you share a link to customer action you are not able to create due date?ILukas Novallk reb Zoth. 2025 at 11.54AMhttps://console.integration.app/w/66fd5a6e813fde5d1b8aa505/deployments/customers/67863464c2dd79e2afa939f6/actions/6788e257eaaba8cb2051ffb2Lukas Kovalik Feb 25th, 2025 at 12:02 PMdo you need some data for testing?Vladyslav Ursul APP Feb 25th, 2025 at 12:02 PM@ Ok, actually Maxim was right. We cached the schemas on Action instance and since we don'tautomatically recalculate them on connector update - you had the same issue on old actionisntanceNow it works: https://www.awesomescreenshot.com/video/36981147?key=9a514c210d37bac2e7a133c95813b10cLukas Kovalik Feb 25th, 2025 at 12:08 PMyes, seems to be working fine nowH2thanks a lot10 external people are from MembraneReply…Also send to @ jiminny-x-integration-appRODA SF [jiminny@localhost]A console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me• Lono CKi,erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId":"66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642eчe41D0ta",chuptlonkey".""eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction && connection. disconnected === false) €veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:49CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaiselttalatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo lonKcrorwooLinuouTNovuou4.ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
-8928582406619700258
|
NULL
|
click
|
ocr
|
NULL
|
SlackFileEditViewHistoryWindowHelpQ Search Jiminny SlackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminn... & 18DMs= Unreadse) Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMore= Channels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...(0. Adelina Petrova**:AppsToastJira Cloud• MessagesMore ~pass cirrerent set or data asInolUTznes Downloae allithe first one has Due_Date butthe second one has not (edited)Lukas Kovalik 3:15 PMIs it some setting?Đ028 39 repliesFebruary 13th, 2025Lukas Kovalik 4:55 PMWe have found one moreproblem with one of [URL_WITH_CREDENTIALS] @Gui@Ryan Thank you.View newer replies10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadMaxn boptisky reo2oth. 2025 at 114y AM( hmm…. maybe an issue with cachingaac coule vou check ozVadvs ay Ursul APP Feb 25th. 2025 at 11:52 AM© Don't think we cache anything there. @Lukas Kovalik, where have you tried it?Also do you just refreshed connection or upgraded connector to the latest version as well?Lukas Kovalik Feb 25th, 2025 at 11:53 AMlupaareaCleanShot 2025-02-25 at [EMAIL] •Meladei Ai ter ome eds ehe leur:ser urtch, upo. Cpl oreate only bul trat dosenVlad Feb 25th. 2025 at 11:53 AM• Can you share a link to customer action you are not able to create due date?ILukas Novallk reb Zoth. 2025 at 11.54AMhttps://console.integration.app/w/66fd5a6e813fde5d1b8aa505/deployments/customers/67863464c2dd79e2afa939f6/actions/6788e257eaaba8cb2051ffb2Lukas Kovalik Feb 25th, 2025 at 12:02 PMdo you need some data for testing?Vladyslav Ursul APP Feb 25th, 2025 at 12:02 PM@ Ok, actually Maxim was right. We cached the schemas on Action instance and since we don'tautomatically recalculate them on connector update - you had the same issue on old actionisntanceNow it works: https://www.awesomescreenshot.com/video/36981147?key=9a514c210d37bac2e7a133c95813b10cLukas Kovalik Feb 25th, 2025 at 12:08 PMyes, seems to be working fine nowH2thanks a lot10 external people are from MembraneReply…Also send to @ jiminny-x-integration-appRODA SF [jiminny@localhost]A console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me• Lono CKi,erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId":"66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642eчe41D0ta",chuptlonkey".""eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction && connection. disconnected === false) €veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:49CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaiselttalatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo lonKcrorwooLinuouTNovuou4.ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
35843
|
|
35970
|
NULL
|
0
|
2026-04-16T10:16:05.838442+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334565838_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]-zsh• 28526.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB= Support Daily • in 1h 44 mAPP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:16:05181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
NULL
|
7205038366550356551
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]-zsh• 28526.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB= Support Daily • in 1h 44 mAPP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:16:05181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
NULL
|
|
35972
|
NULL
|
0
|
2026-04-16T10:16:09.576136+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334569576_m2.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Toast
Jira Cloud...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":20,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":20,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":20,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":20,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":20,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":20,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":20,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":20,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":20,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":20,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":20,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":20,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":20,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":20,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":20,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":20,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":20,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":20,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":20,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":20,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":20,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":20,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":20,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":20,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":20,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.11679687,"top":0.76666665,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":20,"bounds":{"left":0.11992188,"top":0.76666665,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":20,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":20,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.07304688,"top":0.825,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":20,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.11328125,"top":0.84444445,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":20,"bounds":{"left":0.11601563,"top":0.84444445,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":20,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":20,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":20,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.02578125,"height":0.0125},"role_description":"text"}]...
|
3919667287341876193
|
-1752605462192678867
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Toast
Jira Cloud
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backends contlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random# releases# soha-ofhce# supportac thank-vous# the people of iimi...0 Direct messagesVasil Vasilev% Galya DimitrovaNikolay IvanovAneliva Angeloval3 Aneliva Angelova. ...Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:AppsToastJira CloudHistoryWindowHelpSearch Jiminny Inc& jiminn... & 18MessagesMore vJanuary Zoro.2019yJanuary 27th. 2025 vLukas Kovalik 1:44 PMWe have a few questions we'dlike to discuss. We're hoping youcan share some ideas on how toeftectively use the integrationapp. While our main tocus at themoment is on Loho CRM, werelooking tor approaches that canbe applied to any CKM we migntIntegrare in the tutureV 19A ur 36 replies Last r...January 28th. 2025 vINiKoay Malnoy ysAMHey Vlad, can u give abreakdown of the Credit APlrequests we ve made from thewhole account to Zoho?Đ 2 2 replies Last reply -...Nikolay Ivanov 10:56 AMAnother two:1. SETUP FAILED failedoccurred on 2025-01-22100 44-62. Sometimes connectionstimes out - this occurredtwo umes on Inursday lastVlad 11:07 AMreplied to a thread: Hey Vlad, ...Hey @Nikolay IVanov. Asa scussee vestcrcay we dontnave dreakaown or now manycrealts was spene on everyrequest. But we do haveexternal APl logs of all requestshere:[URL_WITH_CREDENTIALS] Kovalik looks like Zoho indeed prevents us from following normal flow as we neverget an event trom opened windowcreated a task to work on new mechanism. we will work on It soonDaniil Jun 3rd, 2025 at 7:47 PM@Lukas Kovalik tor context, we can possibly work around this by passing the connectionstatus througn our backend rather than getung it trom the authenuication window. It willnave its limitations, but is better than nothingSterKa stoyanova Jun 4th, 2025 at 9:02 AMGuys, do you nave any tests to prevent regressions. ve nave 2 trial customers wnichcomplain about zono connecton and well prodadly loose them because of it. lnisconnecton conirmadon was working derore and now customers are polnuing it is notworking which is a hit to our reputationMy question is can we relv on Integration app that changes in CRMs willl be caughtproactively or we need to have our automated tests to ensure this?Daniil Jun 4th, 2025 at 2:23 PM@Stefka Stovanova we do some connector testing, but not end-to-end OAuth flow becauseit's too flaky (companies have all sorts of anti-bot protection for log ins and it is usually notworth trying to hight it)So in this case (something is changing in the auth Ul of the external app). we don't plan testsin the foreseeable future, unfortunately.If you have an idea for how to test it automatically - let's o'Bohdan Jun 11th, 2025 at 3:53 PM@Stefka Stovanova @Lukas KovalikWe just released a fallback mechanism to support cases like Zoho aboveIt should make connection setup process more reliable and prevent this problem in thefutureLet me know it this works for youCleanShot 2025-06-11 aff14.52.24.mp4 •Connection Uil*10 2 2008s:prevents us trom tollowing normal Tlow as we neverated a task to work on new mechanism, we will workassibly werk around this by passina the connectionn getting it from the authentication window. It will1othingt rearessions? We have 2 trial customers whichwe'll probably loose them because of it. Thisbetore and now customers are pointing it is not1My question is can we rely on Integration.app thattively or we need to have our automated tests tolector testing, but not ena-to-end oauth tlowe all sons or anti-oot protection tor log ins and it isn this case (something is changing in the auth Ul ofn the foreseeable future, unfortunately.lf you have anet's discuss.Ve just released a fallback mechanism to support:onnection setup process more reliable and preventMultiple Connections for the same IntegrationGenerate transcript10 external people are from MembraneReply…Also send to jiminny-x-integration-app...
|
35971
|
|
35973
|
733
|
0
|
2026-04-16T10:16:12.621511+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334572621_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6 SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-teamchannes# ai-chaptenMore# alerts# backends contlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random# releases# soha-ofhce# supportac thank-vous# the people of iimi....0 Direct messagesVasil Vasilev% Galya Dimitrova8. Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ...Stoyan Tanev CVesStelivan Georgiey3 Adelina Petrova, Ili...Adelina Petrova**:AppsToastJira CloudHistoryWindowHelpSearch Jiminny Inc& jiminn... & 18MessagesMore vJanuary Zoro.2019yJanuary 27th. 2025 vLukas Kovalik 1:44 PMWe have a few questions we'dlike to discuss. We're hoping youcan share some ideas on how toeftectively use the integrationapp. While our main tocus at themoment is on Loho CRM, werelooking tor approaches that canbe applied to any CKM we migntIntegrare in the tuture9A ur 36 replies Last r...January 28th. 2025 vINiKoay Malnoy ysAMHey Vlad, can u give abreakdown of the Credit APlrequests we ve made from thewhole account to Zoho?Đ 2 2 replies Last reply -...Nikolay Ivanov 10:56 AMAnother two:1. SETUP FAILED failedoccurred on 2025-01-22100 44-62. Sometimes connectionstimes out - this occurredtwo umes on Inursday lastVlad 11:07 AMreplied to a thread: Hey Viad, ...Hey @Nikolay IVanov. Asdiscussed vesterdav we don'tnave dreakaown or now manycrealts was spene on everyrequest. But we do haveexternal APl logs of all requestshere:[URL_WITH_CREDENTIALS] - could vou check o|z?591Savi Bohdan Jun 3rd, 2025 at 4:42 PM0 Hl, @Lukas Kovallk!From the code and from the ref docs I see that it must return a promiseEven if something was wrong internally it's still an asyne functionDo you have an example of how you are using it:Lukas Kovalik Jun 3rd, 2025 at 4:44 PMwhen we try to login we go through the process, log in via google.CleanShot 2025-06-03 at [EMAIL] •prevents us trom tollowing normal Tlow as we neverated a task to work on new mechanism, we will workassibly werk around this by passina the connectionn getting it from the authentication window. It will1othingt rearessions? We have 2 trial customers whichwe'll probably loose them because of it. Thisbetore and now customers are pointing it is not1My question is can we rely on Integration.app thattively or we need to have our automated tests tolector testing, but not ena-to-end oauth tlowe all sons or anti-oot protection tor log ins and it isn this case (something is changing in the auth Ul ofn the foreseeable future, unfortunately.lf you have anar's discuss.Ve just released a fallback mechanism to support:onnection setup process more reliable and preventLinking your Zoho CRM accountPlesse enter the credentials and click Connectiu productionAcceptingCleanShot 2025-06-03 at [EMAIL] •00JiminnyJiminny would like to access the followina informationiO) CRMget org dot• Full access to ZchocRM notiticationsTo oet the pionline alona with associated stages.• To read, create, update and delete global picklist...
|
NULL
|
904880557701749668
|
NULL
|
visual_change
|
ocr
|
NULL
|
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6 SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-teamchannes# ai-chaptenMore# alerts# backends contlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random# releases# soha-ofhce# supportac thank-vous# the people of iimi....0 Direct messagesVasil Vasilev% Galya Dimitrova8. Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ...Stoyan Tanev CVesStelivan Georgiey3 Adelina Petrova, Ili...Adelina Petrova**:AppsToastJira CloudHistoryWindowHelpSearch Jiminny Inc& jiminn... & 18MessagesMore vJanuary Zoro.2019yJanuary 27th. 2025 vLukas Kovalik 1:44 PMWe have a few questions we'dlike to discuss. We're hoping youcan share some ideas on how toeftectively use the integrationapp. While our main tocus at themoment is on Loho CRM, werelooking tor approaches that canbe applied to any CKM we migntIntegrare in the tuture9A ur 36 replies Last r...January 28th. 2025 vINiKoay Malnoy ysAMHey Vlad, can u give abreakdown of the Credit APlrequests we ve made from thewhole account to Zoho?Đ 2 2 replies Last reply -...Nikolay Ivanov 10:56 AMAnother two:1. SETUP FAILED failedoccurred on 2025-01-22100 44-62. Sometimes connectionstimes out - this occurredtwo umes on Inursday lastVlad 11:07 AMreplied to a thread: Hey Viad, ...Hey @Nikolay IVanov. Asdiscussed vesterdav we don'tnave dreakaown or now manycrealts was spene on everyrequest. But we do haveexternal APl logs of all requestshere:[URL_WITH_CREDENTIALS] - could vou check o|z?591Savi Bohdan Jun 3rd, 2025 at 4:42 PM0 Hl, @Lukas Kovallk!From the code and from the ref docs I see that it must return a promiseEven if something was wrong internally it's still an asyne functionDo you have an example of how you are using it:Lukas Kovalik Jun 3rd, 2025 at 4:44 PMwhen we try to login we go through the process, log in via google.CleanShot 2025-06-03 at [EMAIL] •prevents us trom tollowing normal Tlow as we neverated a task to work on new mechanism, we will workassibly werk around this by passina the connectionn getting it from the authentication window. It will1othingt rearessions? We have 2 trial customers whichwe'll probably loose them because of it. Thisbetore and now customers are pointing it is not1My question is can we rely on Integration.app thattively or we need to have our automated tests tolector testing, but not ena-to-end oauth tlowe all sons or anti-oot protection tor log ins and it isn this case (something is changing in the auth Ul ofn the foreseeable future, unfortunately.lf you have anar's discuss.Ve just released a fallback mechanism to support:onnection setup process more reliable and preventLinking your Zoho CRM accountPlesse enter the credentials and click Connectiu productionAcceptingCleanShot 2025-06-03 at [EMAIL] •00JiminnyJiminny would like to access the followina informationiO) CRMget org dot• Full access to ZchocRM notiticationsTo oet the pionline alona with associated stages.• To read, create, update and delete global picklist...
|
NULL
|
|
35975
|
732
|
0
|
2026-04-16T10:16:16.870734+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334576870_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"}]...
|
-6978116290819118346
|
-4229992175761606558
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]-zsh• 28526.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB= Support Daily • in 1h 44 mAPP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:16:16181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
35970
|
|
36101
|
NULL
|
0
|
2026-04-16T10:21:30.199351+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334890199_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]APP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $I= Support Daily • in 1h 39 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:21:30181* Unable to acce...O x8APP...
|
NULL
|
-2037393167935122502
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]APP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $I= Support Daily • in 1h 39 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:21:30181* Unable to acce...O x8APP...
|
36099
|
|
36104
|
NULL
|
0
|
2026-04-16T10:21:36.099398+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334896099_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender(8) JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: X( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabBookmarksQ (EK)DashboarchExploreACUVitySettingsDoCs &ProfilesWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMDasic intooveuo41co/cuvooczcc00400NameZoho CRMAuth OptionAuth?Integration2 Zoho CRMExternal AppZoho CRMTenantDev Zoho CRM clientStatusRe-cofwectNext Credentials RefreshRefresh Credentials® Connection Logs• (• ) Connection initiated vintegrationId: 66fe6c913202f3a165e3c14dauthOptionkey:allowMultipleConnections: false• connectionInput: {account_type: ***@ connectorParameters: {IclientId: ***clientSecret: ***DisconnectC< 40 ll SupportDaily in1h39m A 100%C & Thu 16 Apr 13:21:35Ul CodeD Test@ AgentWhat would you like to do?beld• Redirecting to OAuth2 authorization server ›° Received OAuth callback ›• Processing VAuth callback• (•) Received credentials ›• Running connection test functionAPI GET: /crm/v6/users >• o Connection successful >LogoutVersion2026-04-16secrets...
|
NULL
|
2554194628676885569
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender(8) JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: X( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabBookmarksQ (EK)DashboarchExploreACUVitySettingsDoCs &ProfilesWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMDasic intooveuo41co/cuvooczcc00400NameZoho CRMAuth OptionAuth?Integration2 Zoho CRMExternal AppZoho CRMTenantDev Zoho CRM clientStatusRe-cofwectNext Credentials RefreshRefresh Credentials® Connection Logs• (• ) Connection initiated vintegrationId: 66fe6c913202f3a165e3c14dauthOptionkey:allowMultipleConnections: false• connectionInput: {account_type: ***@ connectorParameters: {IclientId: ***clientSecret: ***DisconnectC< 40 ll SupportDaily in1h39m A 100%C & Thu 16 Apr 13:21:35Ul CodeD Test@ AgentWhat would you like to do?beld• Redirecting to OAuth2 authorization server ›° Received OAuth callback ›• Processing VAuth callback• (•) Received credentials ›• Running connection test functionAPI GET: /crm/v6/users >• o Connection successful >LogoutVersion2026-04-16secrets...
|
NULL
|
|
36105
|
734
|
0
|
2026-04-16T10:21:44.105419+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334904105_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]APP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $I= Support Daily • in 1h 39 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:21:43181* Unable to acce...O x8APP...
|
NULL
|
9164417387498646054
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]APP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $I= Support Daily • in 1h 39 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:21:43181* Unable to acce...O x8APP...
|
NULL
|
|
36106
|
735
|
0
|
2026-04-16T10:21:44.097079+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334904097_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender(8) JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: X( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabBookmarksQ (EK)DashboarchExploreACUVitySettingsDoCs &ProfilesWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMDasic intooveuo41co/cuvooczcc00400NameZoho CRMAuth OptionAuth?Integration2 Zoho CRMExternal AppZoho CRMTenantDev Zoho CRM clientStatussfe-connectNext Credentials RefreshRefresh Credentials® Connection Logs• (• ) Connection initiated vintegrationId: 66fe6c913202f3a165e3c14dauthOptionkey:allowMultipleConnections: false• connectionInput: {account_type: ***@ connectorParameters: {IclientId: ***clientSecret: ***DisconnectC< 40 ll O SupportDaily in1h39m A 100%C 8 Thu 16 Apr 13:21:43Ul CodeD Test@ AgentWhat would you like to do?beld• Redirecting to OAuth2 authorization server ›° Received OAuth callback ›• Processing VAuth callback• (•) Received credentials ›• Running connection test functionAPI GET: /crm/v6/users >• o Connection successful >LogoutVersion2026-04-16secrets...
|
NULL
|
6382932150712878979
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender(8) JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: X( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabBookmarksQ (EK)DashboarchExploreACUVitySettingsDoCs &ProfilesWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMDasic intooveuo41co/cuvooczcc00400NameZoho CRMAuth OptionAuth?Integration2 Zoho CRMExternal AppZoho CRMTenantDev Zoho CRM clientStatussfe-connectNext Credentials RefreshRefresh Credentials® Connection Logs• (• ) Connection initiated vintegrationId: 66fe6c913202f3a165e3c14dauthOptionkey:allowMultipleConnections: false• connectionInput: {account_type: ***@ connectorParameters: {IclientId: ***clientSecret: ***DisconnectC< 40 ll O SupportDaily in1h39m A 100%C 8 Thu 16 Apr 13:21:43Ul CodeD Test@ AgentWhat would you like to do?beld• Redirecting to OAuth2 authorization server ›° Received OAuth callback ›• Processing VAuth callback• (•) Received credentials ›• Running connection test functionAPI GET: /crm/v6/users >• o Connection successful >LogoutVersion2026-04-16secrets...
|
36104
|
|
36239
|
NULL
|
0
|
2026-04-16T10:27:05.550435+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335225550_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]APP (-zsh)₴4DOCKER981DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ISupport Daily - in 1h 33 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:27:05181* Unable to acce...O 88APP...
|
NULL
|
6479452431027318410
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]APP (-zsh)₴4DOCKER981DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ISupport Daily - in 1h 33 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:27:05181* Unable to acce...O 88APP...
|
NULL
|
|
36240
|
NULL
|
0
|
2026-04-16T10:27:05.389688+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335225389_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow HelpM°QEK)DashboarcExploru UserpilotACuVitySettingsa JiminnyNew TabDoCs &a Jiminny© GoogleJiminny • Membrane( Fix an autocomplete mistake that sSymfony|Component|Debug|Excep] App "Zoho CRM" . Kavita • Membra+ New Tab• == console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505/connections?tenantld=69e0b3faef3e7b6248189289ExploreConnectionsOverview+ Create gennectionQ Type to search |Connecting to External AppsName@ ConnectionsNo connections found.88 Integrations0, Tenants& Connectors8ó External AppsIntegration LogicS Packages@ Actions8 FlowsExternal Event* Subscriptions4 Internal Event Typesa sterarifronsWorking With Data© Data Sources8 Field Mappingsg• Internal Data Schemas/ Data Link Tablesuser intenaceO ScreensC< 40 ll O SupportDaily•in1h33m A 100%C 8 Thu 16 Apr 13:27:05Customer IS Dey cono ckM cllentXIntegrationTenantDisconnectedIDeleteLogoutVersion2026-04-16console.cermemorane.com/wbbtdose813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b...
|
NULL
|
6106597478380976273
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow HelpM°QEK)DashboarcExploru UserpilotACuVitySettingsa JiminnyNew TabDoCs &a Jiminny© GoogleJiminny • Membrane( Fix an autocomplete mistake that sSymfony|Component|Debug|Excep] App "Zoho CRM" . Kavita • Membra+ New Tab• == console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505/connections?tenantld=69e0b3faef3e7b6248189289ExploreConnectionsOverview+ Create gennectionQ Type to search |Connecting to External AppsName@ ConnectionsNo connections found.88 Integrations0, Tenants& Connectors8ó External AppsIntegration LogicS Packages@ Actions8 FlowsExternal Event* Subscriptions4 Internal Event Typesa sterarifronsWorking With Data© Data Sources8 Field Mappingsg• Internal Data Schemas/ Data Link Tablesuser intenaceO ScreensC< 40 ll O SupportDaily•in1h33m A 100%C 8 Thu 16 Apr 13:27:05Customer IS Dey cono ckM cllentXIntegrationTenantDisconnectedIDeleteLogoutVersion2026-04-16console.cermemorane.com/wbbtdose813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b...
|
36238
|
|
36241
|
737
|
0
|
2026-04-16T10:27:08.399629+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335228399_m2.jpg...
|
Firefox
|
Jiminny · Membrane — Work
|
1
|
console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505 console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505/connections?tenantId=69e0b3faef3e7b6248189289...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Close tab
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Create Tenant Connection
Create Tenant Connection
Tenant
Select a tenant
Select a tenant
my full name
Zoho Client
Test account for Zoho sandbox - AA
[AA] LP Zoho Sandbox - test 01
Jiminny test account
Learning People
Learning People ANZ
JY-17302 Zoho CRM test - staging
Alone Dynamics Test
Dynamics Team
In-Flight Crew Connections
Guilherme Dias
Jude Agboola
zoho - uranus - AA
Kavita Kaur
Ms Dynamics New
Zoho CRM on staging - AA
Dynamics 365 QA
Maxim Bobritsky
SalesEnforsed Ltd
test uuid 3
Ruslan Orlov
Zoho QAi
Dynamics - staging - test2 - AA
Zoho - QA - AA - urls
Resights
RoofMarketplace
SME Professional
Correre Naturale
Zoho on Staging - delete testing
WhatConverts
Shiji Group
Dev Zoho CRM client
Connection
Select an integration
Select an integration
Create
Close Dialog...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,561) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.087890625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.34861112,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Google","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"bounds":{"left":0.015625,"top":0.37708333,"width":0.014453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"bounds":{"left":0.015625,"top":0.40555555,"width":0.0953125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny · Membrane","depth":5,"bounds":{"left":0.015625,"top":0.4340278,"width":0.041015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.43055555,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.4625,"width":0.24335937,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.53398436,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":5,"bounds":{"left":0.015625,"top":0.51944447,"width":0.10859375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Create Tenant Connection","depth":14,"bounds":{"left":0.44257814,"top":0.17777778,"width":0.196875,"height":0.011805556},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Create Tenant Connection","depth":15,"bounds":{"left":0.44257814,"top":0.17777778,"width":0.06796875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tenant","depth":16,"bounds":{"left":0.4453125,"top":0.22083333,"width":0.017578125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select a tenant","depth":18,"bounds":{"left":0.5035156,"top":0.21319444,"width":0.14960937,"height":0.027777778},"value":"Select a tenant","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Select a tenant","depth":20,"bounds":{"left":0.50820315,"top":0.22083333,"width":0.03828125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"my full name","depth":19,"bounds":{"left":0.50507814,"top":0.27708334,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho Client","depth":19,"bounds":{"left":0.50507814,"top":0.3048611,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Test account for Zoho sandbox - AA","depth":19,"bounds":{"left":0.50507814,"top":0.3326389,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[AA] LP Zoho Sandbox - test 01","depth":19,"bounds":{"left":0.50507814,"top":0.36041668,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny test account","depth":19,"bounds":{"left":0.50507814,"top":0.38819444,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learning People","depth":19,"bounds":{"left":0.50507814,"top":0.41597223,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learning People ANZ","depth":19,"bounds":{"left":0.50507814,"top":0.44375,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-17302 Zoho CRM test - staging","depth":19,"bounds":{"left":0.50507814,"top":0.47152779,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alone Dynamics Test","depth":19,"bounds":{"left":0.50507814,"top":0.49930555,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dynamics Team","depth":19,"bounds":{"left":0.50507814,"top":0.52708334,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In-Flight Crew Connections","depth":19,"bounds":{"left":0.50507814,"top":0.5548611,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Guilherme Dias","depth":19,"bounds":{"left":0.50507814,"top":0.58263886,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jude Agboola","depth":19,"bounds":{"left":0.50507814,"top":0.61041665,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"zoho - uranus - AA","depth":19,"bounds":{"left":0.50507814,"top":0.63819444,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kavita Kaur","depth":19,"bounds":{"left":0.50507814,"top":0.66597223,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ms Dynamics New","depth":19,"bounds":{"left":0.50507814,"top":0.69375,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho CRM on staging - AA","depth":19,"bounds":{"left":0.50507814,"top":0.72152776,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dynamics 365 QA","depth":19,"bounds":{"left":0.50507814,"top":0.74930555,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Maxim Bobritsky","depth":19,"bounds":{"left":0.50507814,"top":0.77708334,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SalesEnforsed Ltd","depth":19,"bounds":{"left":0.50507814,"top":0.8048611,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"test uuid 3","depth":19,"bounds":{"left":0.50507814,"top":0.83263886,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ruslan Orlov","depth":19,"bounds":{"left":0.50507814,"top":0.86041665,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho QAi","depth":19,"bounds":{"left":0.50507814,"top":0.88819444,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dynamics - staging - test2 - AA","depth":19,"bounds":{"left":0.50507814,"top":0.91597223,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho - QA - AA - urls","depth":19,"bounds":{"left":0.50507814,"top":0.94375,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resights","depth":19,"bounds":{"left":0.50507814,"top":0.97152776,"width":0.1421875,"height":0.027777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"RoofMarketplace","depth":19,"bounds":{"left":0.50507814,"top":0.99930555,"width":0.1421875,"height":0.0006944537},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SME Professional","depth":19,"bounds":{"left":0.50507814,"top":1.0,"width":0.1421875,"height":-0.027083278},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Correre Naturale","depth":19,"bounds":{"left":0.50507814,"top":1.0,"width":0.1421875,"height":-0.05486107},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho on Staging - delete testing","depth":19,"bounds":{"left":0.50507814,"top":1.0,"width":0.1421875,"height":-0.08263886},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WhatConverts","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shiji Group","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dev Zoho CRM client","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Connection","depth":16,"bounds":{"left":0.4453125,"top":0.2611111,"width":0.029296875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select an integration","depth":18,"bounds":{"left":0.5035156,"top":0.2534722,"width":0.14960937,"height":0.027777778},"value":"Select an integration","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Select an integration","depth":20,"bounds":{"left":0.50820315,"top":0.2611111,"width":0.052734375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":14,"bounds":{"left":0.6234375,"top":0.41111112,"width":0.030078124,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close Dialog","depth":14,"bounds":{"left":0.6464844,"top":0.17638889,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4995515741887652140
|
6817174303126012125
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Close tab
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Create Tenant Connection
Create Tenant Connection
Tenant
Select a tenant
Select a tenant
my full name
Zoho Client
Test account for Zoho sandbox - AA
[AA] LP Zoho Sandbox - test 01
Jiminny test account
Learning People
Learning People ANZ
JY-17302 Zoho CRM test - staging
Alone Dynamics Test
Dynamics Team
In-Flight Crew Connections
Guilherme Dias
Jude Agboola
zoho - uranus - AA
Kavita Kaur
Ms Dynamics New
Zoho CRM on staging - AA
Dynamics 365 QA
Maxim Bobritsky
SalesEnforsed Ltd
test uuid 3
Ruslan Orlov
Zoho QAi
Dynamics - staging - test2 - AA
Zoho - QA - AA - urls
Resights
RoofMarketplace
SME Professional
Correre Naturale
Zoho on Staging - delete testing
WhatConverts
Shiji Group
Dev Zoho CRM client
Connection
Select an integration
Select an integration
Create
Close Dialog...
|
NULL
|
|
36242
|
736
|
0
|
2026-04-16T10:27:10.937563+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335230937_m1.jpg...
|
Firefox
|
Jiminny · Membrane — Work
|
1
|
console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505 console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505/connections?tenantId=69e0b3faef3e7b6248189289...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Close tab
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Create Tenant Connection
Create Tenant Connection
Tenant
Select a tenant
Select a tenant
my full name
Zoho Client
Test account for Zoho sandbox - AA
[AA] LP Zoho Sandbox - test 01
Jiminny test account
Learning People
Learning People ANZ
JY-17302 Zoho CRM test - staging
Alone Dynamics Test
Dynamics Team
In-Flight Crew Connections
Guilherme Dias
Jude Agboola
zoho - uranus - AA
Kavita Kaur
Ms Dynamics New
Zoho CRM on staging - AA
Dynamics 365 QA
Maxim Bobritsky
SalesEnforsed Ltd
test uuid 3
Ruslan Orlov
Zoho QAi
Dynamics - staging - test2 - AA
Zoho - QA - AA - urls
Resights
RoofMarketplace
SME Professional
Correre Naturale
Zoho on Staging - delete testing
WhatConverts
Shiji Group
Dev Zoho CRM client
Connection
Select an integration
Select an integration
Create
Close Dialog
console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,561) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Google","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny · Membrane","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":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":5,"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":"Create Tenant Connection","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Create Tenant Connection","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tenant","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select a tenant","depth":18,"value":"Select a tenant","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Select a tenant","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"my full name","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho Client","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Test account for Zoho sandbox - AA","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[AA] LP Zoho Sandbox - test 01","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny test account","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learning People","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learning People ANZ","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-17302 Zoho CRM test - staging","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alone Dynamics Test","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dynamics Team","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In-Flight Crew Connections","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Guilherme Dias","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jude Agboola","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"zoho - uranus - AA","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kavita Kaur","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ms Dynamics New","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho CRM on staging - AA","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dynamics 365 QA","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Maxim Bobritsky","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SalesEnforsed Ltd","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"test uuid 3","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ruslan Orlov","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho QAi","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dynamics - staging - test2 - AA","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho - QA - AA - urls","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resights","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"RoofMarketplace","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SME Professional","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Correre Naturale","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zoho on Staging - delete testing","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WhatConverts","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shiji Group","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dev Zoho CRM client","depth":19,"bounds":{"left":0.48333332,"top":0.0,"width":0.25277779,"height":0.044444446},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Connection","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select an integration","depth":18,"value":"Select an integration","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Select an integration","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close Dialog","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8364394823241503606
|
6817174303126012125
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Close tab
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Create Tenant Connection
Create Tenant Connection
Tenant
Select a tenant
Select a tenant
my full name
Zoho Client
Test account for Zoho sandbox - AA
[AA] LP Zoho Sandbox - test 01
Jiminny test account
Learning People
Learning People ANZ
JY-17302 Zoho CRM test - staging
Alone Dynamics Test
Dynamics Team
In-Flight Crew Connections
Guilherme Dias
Jude Agboola
zoho - uranus - AA
Kavita Kaur
Ms Dynamics New
Zoho CRM on staging - AA
Dynamics 365 QA
Maxim Bobritsky
SalesEnforsed Ltd
test uuid 3
Ruslan Orlov
Zoho QAi
Dynamics - staging - test2 - AA
Zoho - QA - AA - urls
Resights
RoofMarketplace
SME Professional
Correre Naturale
Zoho on Staging - delete testing
WhatConverts
Shiji Group
Dev Zoho CRM client
Connection
Select an integration
Select an integration
Create
Close Dialog
console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b...
|
36239
|
|
36371
|
NULL
|
0
|
2026-04-16T10:32:01.922312+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335521922_m1.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5081751640215339021
|
-4009658842534132447
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]• 0DOCKER• 881DEV (docker)882APP (-zsh)X3ec2-user@ip-10-30-…..APP (-zsh)₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copyObject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DA100% <47O 878Thu 16 Apr 13:32:01181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27 kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36366
|
|
36377
|
NULL
|
0
|
2026-04-16T10:32:27.808184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335547808_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProtilesToolsWi FirefoxFileEoitViewHistoryBookmarksProtilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmj Support Daily • in 1h 28 m100% 1zThu 16 Apr 13:32:27C | 0 Inspector E Console D DebuggerN Network{) Style Editor? PerformanceO: MemoryStoragei AccessibilityÚ | Filter OutputErrors Warnings Info Logs DebugCSsXHRRequests•Nayesof the"e conpu he hash in thoxir/sPrity neto/bone sooit th CuESnF ol tTremuKrESDur CuC :Ps://fonts- 9g leapts, cen/css22fanilv=T8MPlexSerifdise sennectA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.index.mis:5:3A Storage access automatically aranted for origin "httos://ui.integration.app" on "https://app.dev.iiminnv.com"on resolved: {"id"="69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohofebl-4df1-connect-brhELsKm.15:4:2/0""createdAt":"2026-64-16117 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranes• Jiminny • Memorane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabA Stack in the worker: networkgequts teresourie: Statuo 1s/client/shared/source-map-loader /uti 1/ netvork-request - j5:43:9Resource URL:hetps.wapp.devaj.manhy.com/wue-assets/assets/conneet-brrttsxm.lssource Map unL. connect-brrtesniys map Leatt moreTop +JIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continueeu) Sign in with Zoho CRM...
|
NULL
|
-3070211695849876888
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProtilesToolsWi FirefoxFileEoitViewHistoryBookmarksProtilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmj Support Daily • in 1h 28 m100% 1zThu 16 Apr 13:32:27C | 0 Inspector E Console D DebuggerN Network{) Style Editor? PerformanceO: MemoryStoragei AccessibilityÚ | Filter OutputErrors Warnings Info Logs DebugCSsXHRRequests•Nayesof the"e conpu he hash in thoxir/sPrity neto/bone sooit th CuESnF ol tTremuKrESDur CuC :Ps://fonts- 9g leapts, cen/css22fanilv=T8MPlexSerifdise sennectA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.index.mis:5:3A Storage access automatically aranted for origin "httos://ui.integration.app" on "https://app.dev.iiminnv.com"on resolved: {"id"="69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohofebl-4df1-connect-brhELsKm.15:4:2/0""createdAt":"2026-64-16117 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranes• Jiminny • Memorane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabA Stack in the worker: networkgequts teresourie: Statuo 1s/client/shared/source-map-loader /uti 1/ netvork-request - j5:43:9Resource URL:hetps.wapp.devaj.manhy.com/wue-assets/assets/conneet-brrttsxm.lssource Map unL. connect-brrtesniys map Leatt moreTop +JIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continueeu) Sign in with Zoho CRM...
|
36376
|
|
36378
|
739
|
0
|
2026-04-16T10:32:30.861159+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335550861_m2.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1532191756259431066
|
-8629952099305930303
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmj Support Daily • in 1h 28 m100% C4Thu 16 Apr 13:32:30M°C | 0 Inspector E Console D DebuggerN Network{) Style Editor? PerformanceO: MemoryStoragei Accessibilityû | Filter OutputErrors Warnings Info Logs DebugCSsXHRRequests•Nayesof the"e conpu he hash in thoxir/sPrity neto/bone sooit th CuESnF ol tTremuKrESDur CuC :Ps://fonts- 9g leapts, cen/css22fanilv=T8MPlexSerifdise sennectA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.index.mis:5:3A Storage access automatically aranted for origin "httos://ui.integration.app" on "https://app.dev.iiminnv.com"ction resolved: {"id"="69e0b983da98fa74f98aebfb", "name"="Connection to 66fe6c913202f3a165e3c14d for Dev Zohoconnect-brhELsKm.15:4:2/0""createdAt":"2026-64-16117 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranes• Jiminny • Memorane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabA Stack in the worker: networkgequts teresourie: Statuo 1s/client/shared/source-map-loader /uti 1/ netvork-request - j5:43:9Resource URL:netps:app.dev.jama.nhy.com/wue-assets/assets/connect-brhttsam.1sSource Map URL: connect-BFFtisKm.js.map ILearn MorelTop +JIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continue*) Sign in with Zoho CRM...
|
NULL
|
|
36380
|
738
|
0
|
2026-04-16T10:32:34.639858+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335554639_m1.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.dev.jiminny.com/connect/zohocrm
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Account disconnected
Account disconnected
It looks like your Zoho CRM account has become disconnected
Please re-connect to continue
zohocrm Sign in with Zoho CRM
Sign in with Zoho CRM
Clear the Web Console output (⌘K, Ctrl+L)
Filter Output
Errors
Warnings
Info
Logs
Debug
CSS
XHR
Requests
Console Settings
None of the “sha384” hashes in the integrity attribute match the content of the subresource at “
[URL_WITH_CREDENTIALS]
Resource URL:
https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js
https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js
Source Map URL: connect-BFFtIsKm.js.map
[Learn More]
[Learn More]
Top
Switch to multi-line editor mode (Cmd + B)
...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,561) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Google","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny · Membrane","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":5,"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":"Account disconnected","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Account disconnected","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It looks like your Zoho CRM account has become disconnected","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please re-connect to continue","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"zohocrm Sign in with Zoho CRM","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Zoho CRM","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear the Web Console output (⌘K, Ctrl+L)","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Filter Output","depth":15,"role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Errors","depth":15,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Warnings","depth":15,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Info","depth":15,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Logs","depth":15,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Debug","depth":15,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"CSS","depth":15,"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,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Requests","depth":15,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Console Settings","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"None of the “sha384” hashes in the integrity attribute match the content of the subresource at “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://fonts.googleapis.com/css2?family=IBM+Plex+Serif&display=swap","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://fonts.googleapis.com/css2?family=IBM+Plex+Serif&display=swap","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”. The computed hash is “oxpr/SPifeVqNx5O/1ow9nS0QIt60XJIKkUcSrPclwH/ruMEWK7C1JNqlqUMCV5N”.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"connect","depth":20,"help_text":"View source in Debugger → https://ui.integration.app/embed/integrations/zohocrm/connect","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"connect","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerType instead.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"index.mjs:5:3","depth":20,"help_text":"View source in Debugger → https://ui.integration.app/node_modules/.bun/@zag-js+focus-visible@0.82.2/node_modules/@zag-js/focus-visible/dist/index.mjs:5:3","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"index.mjs","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":5:3","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Storage access automatically granted for origin “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://ui.integration.app","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://ui.integration.app","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"” on “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”.","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[IntegrationApp] openNewConnection resolved:","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{\"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:31:47.658Z\",\"retryAttempts\":0,\"isDeactivated\":false}","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"connect-BFFtIsKm.js:2:276","depth":20,"help_text":"View source in Debugger → https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js:2:276","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"connect-BFFtIsKm.js","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":2:276","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Source map error: Error: request failed with status 404\nStack in the worker:networkRequest@resource://devtools/client/shared/source-map-loader/utils/network-request.js:43:9\n\nResource URL:","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Source Map URL: connect-BFFtIsKm.js.map","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[Learn More]","depth":20,"help_text":"https://firefox-source-docs.mozilla.org/devtools-user/debugger/source_map_errors/","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Learn More]","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Top","depth":16,"help_text":"Select evaluation context","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Switch to multi-line editor mode (Cmd + B)","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
935751842724704870
|
6501887110442517241
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Account disconnected
Account disconnected
It looks like your Zoho CRM account has become disconnected
Please re-connect to continue
zohocrm Sign in with Zoho CRM
Sign in with Zoho CRM
Clear the Web Console output (⌘K, Ctrl+L)
Filter Output
Errors
Warnings
Info
Logs
Debug
CSS
XHR
Requests
Console Settings
None of the “sha384” hashes in the integrity attribute match the content of the subresource at “
[URL_WITH_CREDENTIALS]
Resource URL:
https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js
https://app.dev.jiminny.com/vue-assets/assets/connect-BFFtIsKm.js
Source Map URL: connect-BFFtIsKm.js.map
[Learn More]
[Learn More]
Top
Switch to multi-line editor mode (Cmd + B)
...
|
NULL
|
|
36483
|
NULL
|
0
|
2026-04-16T10:37:20.147648+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335840147_m2.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"}]...
|
-5560974636688646272
|
-4041954437364892597
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi#: general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi..0 Direct messagesVasil Vasilev1% Galya DimitrovaR2 Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVes? Stelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudToastHistoryWindowHelpSearch Jiminny Inc& jiminn... & 18MessagesMore vDecember 15th. 2025 ~ closevarunrsas vairor our rouinalin2Cohort for Self-IntegrationsRead more here: https://self-mnce.rauon.ceumemorane.comCheck out self-integrationmanifesto once in, if you'reinterested in the vision and whywe are working on this.Reply or react a l if you'reinterested - were happy towalk you through it over a verySnon: Calloday~kaс Kovaпk 11-04 AMHi guys, we have one issue weused to nave berore regardingine auinorisaion tor fono Ckv.When the clients go through allseos ane oe nrustrerumsmim Dack to tne lo2in screen.ivelleve unis is tne rererence tothe previous conversationhttps://fiminny.slack.com/archives/CO7RAC4U86M/p174895789/141717. Could you please havea look it there is any change?Lukas Kovallk1. There appears to be arecent change in thesok OAutn mecnanism.When a new clientconnects to the platformusine cono, we nelonger receive a Promise(https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewconnection)upon successtul login.This tuncuonality wasworking just a tewweeks ago.edlledThread inuminnv-x-integraton.app Jun sra. 2025 View messageED4 repies Last repyt10 external people are fromMemaraneMessage 8jiminny-x-integration-…Tihread• The link to the affected Membrane workspace (from the browser URL bar.should look like https://console.qet/<workspace-id›)• Which specific Zoho CRM connection is experiencing this issue (or a link to theconnection it possible)Lukas KovallK Today at 11:07 AMhttps://console.getmembrane.com/w/66fdba6e813fde5d1boaa505/connections?tenantld=69df632cfa483f45adcf1a2bMembrane Al Assistant APP Today at 11:08 AMThanks for sharing the workspace link! Ive set up Membrane Agent to helpInvestigate this sono CKM authorization issue.You can use Membrane Agent to diagnose what's happening with the authorizationTlOW:Open Membrane Agent to debug this issueMembrane Agent can check the authorization logs, Auth connguration, and nelpidentify what's causing the loop. If you're still experiencing issues after usingMembrane Agent. please et me know andl'l escalate to the team.Juce Agpoola APP Today at 12:30 PMI-0 Hey Lukaz,nuios:www..com.com/share/4zc//er0r331401c01200/474301eo0UI just tried version [2.3.4) and it seem to work fine so I suspect that this is a bug inthe version you are on <.2.0) please update your connector to <.3.4 at least andvaeallni* Loom Marvin jude• 30 secApp "Zoho CRM" • Kavita • Membrane - 16 April 2026 •Watch on LoomWatch LaterAdded by a bot10 external people are from MembraneAfter I updated I see there is additional option Connect via Membrane. What is thedifference comparing to OAuth 2.0 option. Also there seems to be the same issue.Previously we had the response_ Also send to jiminny-x-integration-appAaconnected• Support Daily • in 1h 23 mA]100% [2Thu 16 Apr 13:37:19U InspectonConsoleDebuggerT- Network Style Editor( PerformanceLF Memory& StorageT Accessibility040filter OutourLogs DebugessXHRRequests• Naye a the "e comu ed hash in hexpr/sPattVN5o/20w5gtt k USrP Iitru uKTCNgtqatVstps:/fonts-googleapis.com/css22fani1ETBM-PlexSeriffdis sonnectA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerlype instead.Storage access automaticaluy aranted for orioin "nttos:ul, inteoration.aop" on "https:apo, dev. 11minnv. com":nNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcconnect-brhELSKM.15:2:2/0"oauth" "createdAt":"2026-64-1611A Source map error: Error: request failed with status 404Stack in the worker:networkkeauestaresource.devtools/cl1ent/shared/source-mad-loader/utils/network=reauest..1s:45:9Resource URL: https://app.dev.jiminny.com/vue=assets/assets/connect-BFFtIsKm.issource Map unL. connect-brrtesniys map Lealt moreLayesoa". The computed hes is "oxpr/sPifeVoNx50/1ot the subresource at "https:tonts.googLeapas.com/css2/Tam1Ly=LBN+PLextseriradisp conneciA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https:/app.dev.jamnny.com"-LentegractonAppyopenNewConnection resolved: {"id"="69e0b983da98fa74f98aebfb", "name"="Connection to 66fe6c913202f3a165e3c14d for Dev ZohoLny cLLemconnect-brhELSKM.15:2:2/0-16T10:33:37.196Z" "retrvAttempts":0,"isDeactivated": falsei• Nave of the "sconpu e has i expr/SrtyNtoribute Sagt6the cont5n tre Bukresog quaCVSNtBs:/fonts.9eealeapts. cm/c3322faniLy=TBMPlex-Serifsdis sennectMouservent.mozinpursource 1s deprecared. use Folnterbvent.polnterlyoe instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https://app.dev.iiminny.com".[IntegrationAppl openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcwintearationiid"."66fesc013902fca165e3c14/""externalAnntd".6671653e74%/64264941h0fa"tenantId":"69e0b3faef3e7b6248189289"',"ISTest":false, "connected"; true, "state" tionkov "arohs li createdAt": *2026-04-16T10:27:15.5797" "updatedAt"."2026-04-16T10:34:08,7027" "retrvAttemots":0."isDeactivated"-falselconnect-br-tlskm.1s:2:2/6Shaso4 nashes"ncros.tonts.co0cleapis.com css<.tanily=Lbotrlextseriroaiso connectTop ÷ FBI...
|
36482
|
|
36484
|
NULL
|
0
|
2026-04-16T10:37:42.759610+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335862759_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Membrane
APP
Nov 11th, 2025 at 12:38:55 AM
12:38 AM
Heads up – we’re moving to a new domain and legal name!
Heads up – we’re moving to a new domain and legal name!
In the coming days and weeks, we’ll be transitioning from
integration.app
integration.app
domain to
getmembrane.com
getmembrane.com
. You’ll start seeing our website, docs, and console automatically redirect to the new domain.
No action is needed on your side — all existing APIs and SDKs will continue working as usual.
Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.
We’ll share the official launch announcement in the next couple of weeks.
1 reaction, react with +1 emoji
1
Add reaction…
Jump to date
Membrane
APP
Dec 15th, 2025 at 7:29:37 PM
7:29 PM
Exclusive access
We’ve been working on a new capability at
Membrane
called
self-integration.
Instead of relying on pre-built integrations, your AI agent can now build integrations itself, on the fly, to any app.
We’re partnering with a small group of teams to pilot this, including our customers. If it sounds relevant to what you’re building, I’d love to include you.
For now, this is a closed experience as we want to refine the end-to-end flow with close partners as part of our
Founding Cohort for Self-Integrations
.
Read more here:
https://self-integration.getmembrane.com
https://self-integration.getmembrane.com
. Check out
self-integration manifesto
once in, if you’re interested in the vision and why we are working on this.
Reply or react a
if you’re interested
— we’re happy to walk you through it over a very short call.
Jump to date
Lukas Kovalik
Today at 11:04:11 AM
11:04 AM
Hi guys, we have one issue we used to have before regarding the authorisation for Zoho CRM. When the clients go through all steps and login it just returns him back to the login screen. I believe this is the reference to the previous conversation
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
. Could you please have a look if there is any change?
Remove preview
Lukas Kovalik
Lukas Kovalik
There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a Promise (
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
) upon successful login. This functionality was working just a few weeks ago.
(edited)
Thread in jiminny-x-integration-app
Thread in
jiminny-x-integration-app
|
Jun 3rd, 2025
Jun 3rd, 2025
|
View message
View message
4 replies
Last reply today at 12:30 PM
View thread
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply to thread
Forward message…
Save for later
Summarize thread
More actions
10 external people
are from
Membrane...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Nov 11th, 2025 at 12:38:55 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:38 AM","depth":25,"role_description":"text"},{"role":"AXHeading","text":"Heads up – we’re moving to a new domain and legal name!","depth":24,"role_description":"heading"},{"role":"AXStaticText","text":"Heads up – we’re moving to a new domain and legal name!","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"In the coming days and weeks, we’ll be transitioning from","depth":24,"role_description":"text"},{"role":"AXLink","text":"integration.app","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"integration.app","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"domain to","depth":24,"role_description":"text"},{"role":"AXLink","text":"getmembrane.com","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"getmembrane.com","depth":25,"role_description":"text"},{"role":"AXStaticText","text":". You’ll start seeing our website, docs, and console automatically redirect to the new domain.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"No action is needed on your side — all existing APIs and SDKs will continue working as usual.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’ll share the official launch announcement in the next couple of weeks.","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Dec 15th, 2025 at 7:29:37 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:29 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Exclusive access","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’ve been working on a new capability at","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Membrane","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"called","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"self-integration.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Instead of relying on pre-built integrations, your AI agent can now build integrations itself, on the fly, to any app.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’re partnering with a small group of teams to pilot this, including our customers. If it sounds relevant to what you’re building, I’d love to include you.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"For now, this is a closed experience as we want to refine the end-to-end flow with close partners as part of our","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Founding Cohort for Self-Integrations","depth":24,"role_description":"text"},{"role":"AXStaticText","text":".","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Read more here:","depth":24,"role_description":"text"},{"role":"AXLink","text":"https://self-integration.getmembrane.com","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://self-integration.getmembrane.com","depth":25,"role_description":"text"},{"role":"AXStaticText","text":". Check out","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"self-integration manifesto","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"once in, if you’re interested in the vision and why we are working on this.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Reply or react a","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"if you’re interested","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— we’re happy to walk you through it over a very short call.","depth":24,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 11:04:11 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:04 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Hi guys, we have one issue we used to have before regarding the authorisation for Zoho CRM. When the clients go through all steps and login it just returns him back to the login screen. I believe this is the reference to the previous conversation","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919","depth":26,"role_description":"text"},{"role":"AXStaticText","text":". Could you please have a look if there is any change?","depth":25,"role_description":"text"},{"role":"AXButton","text":"Remove preview","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a Promise (","depth":27,"role_description":"text"},{"role":"AXLink","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":28,"role_description":"text"},{"role":"AXStaticText","text":") upon successful login. This functionality was working just a few weeks ago.","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":26,"role_description":"text"},{"role":"AXLink","text":"Thread in jiminny-x-integration-app","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thread in","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXLink","text":"Jun 3rd, 2025","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jun 3rd, 2025","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXLink","text":"View message","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View message","depth":27,"role_description":"text"},{"role":"AXButton","text":"4 replies","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply today at 12:30 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply to thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Summarize thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"10 external people","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"are from","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Membrane","depth":22,"role_description":"text"},{"role":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2620602271329201090
|
-3640820248560732084
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Membrane
APP
Nov 11th, 2025 at 12:38:55 AM
12:38 AM
Heads up – we’re moving to a new domain and legal name!
Heads up – we’re moving to a new domain and legal name!
In the coming days and weeks, we’ll be transitioning from
integration.app
integration.app
domain to
getmembrane.com
getmembrane.com
. You’ll start seeing our website, docs, and console automatically redirect to the new domain.
No action is needed on your side — all existing APIs and SDKs will continue working as usual.
Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.
We’ll share the official launch announcement in the next couple of weeks.
1 reaction, react with +1 emoji
1
Add reaction…
Jump to date
Membrane
APP
Dec 15th, 2025 at 7:29:37 PM
7:29 PM
Exclusive access
We’ve been working on a new capability at
Membrane
called
self-integration.
Instead of relying on pre-built integrations, your AI agent can now build integrations itself, on the fly, to any app.
We’re partnering with a small group of teams to pilot this, including our customers. If it sounds relevant to what you’re building, I’d love to include you.
For now, this is a closed experience as we want to refine the end-to-end flow with close partners as part of our
Founding Cohort for Self-Integrations
.
Read more here:
https://self-integration.getmembrane.com
https://self-integration.getmembrane.com
. Check out
self-integration manifesto
once in, if you’re interested in the vision and why we are working on this.
Reply or react a
if you’re interested
— we’re happy to walk you through it over a very short call.
Jump to date
Lukas Kovalik
Today at 11:04:11 AM
11:04 AM
Hi guys, we have one issue we used to have before regarding the authorisation for Zoho CRM. When the clients go through all steps and login it just returns him back to the login screen. I believe this is the reference to the previous conversation
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
. Could you please have a look if there is any change?
Remove preview
Lukas Kovalik
Lukas Kovalik
There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a Promise (
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
) upon successful login. This functionality was working just a few weeks ago.
(edited)
Thread in jiminny-x-integration-app
Thread in
jiminny-x-integration-app
|
Jun 3rd, 2025
Jun 3rd, 2025
|
View message
View message
4 replies
Last reply today at 12:30 PM
View thread
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply to thread
Forward message…
Save for later
Summarize thread
More actions
10 external people
are from
Membrane
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6l• 0DOCKER• 881DEV (docker)882APP (-zsh)[EMAIL] (-zsh)₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DSupport Daily • in 1h 23 m-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kB921p:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB86-zshmap:138.34kBmaр:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KB100% <47O 878Thu 16 Apr 13:37:42181* Unable to acce...O x8APP...
|
NULL
|
|
36485
|
740
|
0
|
2026-04-16T10:37:53.026066+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335873026_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Processing uploaded file… complete!
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…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete!","depth":22,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Nov 11th, 2025 at 12:38:55 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:38 AM","depth":25,"role_description":"text"},{"role":"AXHeading","text":"Heads up – we’re moving to a new domain and legal name!","depth":24,"role_description":"heading"},{"role":"AXStaticText","text":"Heads up – we’re moving to a new domain and legal name!","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"In the coming days and weeks, we’ll be transitioning from","depth":24,"role_description":"text"},{"role":"AXLink","text":"integration.app","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"integration.app","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"domain to","depth":24,"role_description":"text"},{"role":"AXLink","text":"getmembrane.com","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"getmembrane.com","depth":25,"role_description":"text"},{"role":"AXStaticText","text":". You’ll start seeing our website, docs, and console automatically redirect to the new domain.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"No action is needed on your side — all existing APIs and SDKs will continue working as usual.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’ll share the official launch announcement in the next couple of weeks.","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8079851391173982182
|
-4216362594556037012
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Processing uploaded file… complete!
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…
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6l• 0DOCKER• 881DEV (docker)882APP (-zsh)[EMAIL] (-zsh)₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DSupport Daily • in 1h 23 m-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kB921p:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB86-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBтар:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KB100% <47O 878Thu 16 Apr 13:37:52181* Unable to acce...O x8APP...
|
36484
|
|
36486
|
741
|
0
|
2026-04-16T10:37:53.026131+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335873026_m2.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Processing uploaded file… complete!
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11679687,"top":0.76666665,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"bounds":{"left":0.11992188,"top":0.76666665,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.07304688,"top":0.825,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11328125,"top":0.84444445,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"bounds":{"left":0.11601563,"top":0.84444445,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.14335938,"top":0.07986111,"width":0.036328126,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":18,"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":17,"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":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete!","depth":22,"bounds":{"left":0.14335938,"top":0.114583336,"width":0.08242188,"height":0.011111111},"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"}]...
|
8332635439860462350
|
-4225932743764561684
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Processing uploaded file… complete!
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
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi#: general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi..0 Direct messagesVasil Vasilev1% Galya DimitrovaR2 Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVes? Stelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudToastHistoryWindowHelpSearch Jiminny IncA jiminn... & 18MessagesMore vProcessing uploaded file... complete!vannen cs vartor our rounanteCohort for Self-IntegrationsRead more here: https://self-mnce.rauon.ceumemorane.comCheck out self-integrationmanifesto once in, if you'reinterested in the vision and whywe are working on this.Reply or react a if you'reinterested - were happy towalk you through it over a verySnon: Calloday~kaс Kovaпk 11-04 AMHi guys, we have one issue weused to nave berore regardingine auinorisaion tor fono Ckv.When the clients go through allseos ane oe nrustrerumsmim Dack to tne lo2in screen.ivelleve unis is tne rererence tothe previous conversationhttps://fiminny.slack.com/archives/CO7RAC4U86M/p174895789/141717. Could you please havea look it there is any change?Lukas Kovallk1. There appears to be arecent change in thesok OAutn mecnanism.When a new clientconnects to the platformusine cono, we nelonger receive a Promise(https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewconnection)upon successtul login.This tuncuonality wasworking just a tewweeks ago.edlledThread inuminnv-x-integraton.app Jun sra. 2025 View messageED4 repies Last repyt10 external people are fromMemaraneMessage 8jiminny-x-integration-…AaTihread• The link to the affected Membrane workspace (from the browser URL bar.should look like https://console.qet/<workspace-id›)• Which specific Zoho CRM connection is experiencing this issue (or a link to theconnection it possible)Lukas KovallK Today at 11:07 AMhttps://console.getmembrane.com/w/66fdba6e813fde5d1boaa505/connections?tenantld=69df632cfa483f45adcf1a2bMembrane Al Assistant APP Today at 11:08 AMThanks for sharing the workspace link! Ive set up Membrane Agent to helpInvestigate this sono CKM authorization issue.You can use Membrane Agent to diagnose what's happening with the authorizationTlOW:Open Membrane Agent to debug this issueMembrane Agent can check the authorization logs, Auth connguration, and nelpidentify what's causing the loop. If you're still experiencing issues after usingMembrane Agent. please et me know andl'l escalate to the team.Juce Agpoola APP Today at 12:30 PMI-0 Hey Lukaz,nuios:www..com.com/share/4zc//er0r331401c01200/474301eo0UI just tried version [2.3.4) and it seem to work fine so I suspect that this is a bug inthe version you are on <.2.0) please update your connector to <.3.4 at least andvaeallni* Loom Marvin jude• 30 secApp "Zoho CRM" • Kavita • Membrane - 16 April 2026 •Watch on LoomWatch LaterAdded by a bot10 external people are from MembraneAfterl updated | see there is additional option Connect via Membrane. What is thedifference comparing toTion. Aiso tnere seems to de une same Issue.Remove filePreviously we had conneected now it seems to bel_ Also send to jiminny-x-integration-appAaconnectedi• Support Daily • in 1h 23 mA]100% [2Thu 16 Apr 13:37:52U InspectonConsoleDebuggerT- Network Style Editor( PerformanceLF Memory& StorageT Accessibility040filter OutourLogs DebugessXHRRequests• Naye a the "e comu ed hash in hexpr/sPattVN5o/20w5gtt k USrP Iitru uKTCNgtqatVstps:/fonts-googleapis.com/css22fani1ETBM-PlexSeriffdis sonnectA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerlype instead.Storage access automaticaluy aranted for orioin "nttos:ul, inteoration.aop" on "https:apo, dev. 11minnv. com":nNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcconnect-brhELSKM.5:4:2/0"oauth" "createdAt":"2026-64-1611A Source map error: Error: request failed with status 404Stack in the worker:networkkeauestaresource.devtools/cl1ent/shared/source-mad-loader/utils/network=reauest..1s:45:9Resource URL: https://app.dev.jiminny.com/vue=assets/assets/connect-BFFtIsKm.issource Map unL. connect-brrtesniys map Lealt moreLayesoa". The computed hes is "oxpr/sPifeVoNx50/1ot the subresource at "https:tonts.googLeapas.com/css2/Tam1Ly=LBN+PLextseriradisp conneciA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https:/app.dev.jamnny.com"-LentegractonAppyopenNewConnection resolved: {"id"="69e0b983da98fa74f98aebfb", "name"="Connection to 66fe6c913202f3a165e3c14d for Dev ZohoLny CLLenconnect-brhELSKM.5:4:2/0-16T10:33:37.196Z" "retrvAttempts":0,"isDeactivated": falsei• Nave of the "sconpu e has i expr/SrtyNtoribute Sagt6the cont5n tre Bukresog quaCVSNtBs:/fonts.9eealeapts. cm/c3322faniLy=TBMPlex-Serifsdis sennectMouservent.mozinpursource 1s deprecared. use Folnterbvent.polnterlyoe instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https://app.dev.iiminny.com".[IntegrationAppl openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcwintearationiid"."66fesc013902fca165e3c14/""externalAnntd".6671653e74%/64264941h0fa"tenantId":"69e0b3faef3e7b6248189289"',"ISTest":false, "connected"; true, "state" tionkov "arohs li createdAt": *2026-04-16T10:27:15.5797" "updatedAt"."2026-04-16T10:34:08,7027" "retrvAttemots":0."isDeactivated"-falselconnect-br-tlskm.1s:2:2/6"ncros.tonts.co0cleapis.com css<.tanily=Lbotrlextseriroaiso connectTop ÷ FBI...
|
NULL
|
|
36530
|
NULL
|
0
|
2026-04-16T10:42:52.340996+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336172340_m1.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 2 new items - S Vasil Vasilev (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 8th at 7:34:36 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:34 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:16 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, привет","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:19 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11928","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11928","depth":26,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"role_description":"text"}]...
|
-1479863479575023321
|
-4079286226499166964
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ahl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copyObject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DБГ100% <47O 878Thu 16 Apr 13:42:51181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36528
|
|
36531
|
NULL
|
0
|
2026-04-16T10:42:52.359491+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336172359_m2.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 2 new items - S Vasil Vasilev (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11679687,"top":0.76666665,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"bounds":{"left":0.11992188,"top":0.76666665,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.07304688,"top":0.825,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11328125,"top":0.84444445,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"bounds":{"left":0.11601563,"top":0.84444445,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.14335938,"top":0.07986111,"width":0.036328126,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.18085937,"top":0.07986111,"width":0.040234376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.19179687,"top":0.0875,"width":0.026171874,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.22226563,"top":0.07986111,"width":0.024609376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.23320313,"top":0.0875,"width":0.010546875,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"bounds":{"left":0.24804688,"top":0.07986111,"width":0.02421875,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"bounds":{"left":0.2589844,"top":0.0875,"width":0.01015625,"height":0.011111111},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.2734375,"top":0.07986111,"width":0.012890625,"height":0.02638889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 8th at 7:34:36 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:34 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.028125,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2878906,"top":0.10069445,"width":0.059375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:16 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, привет","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03984375,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:19 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11928","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11928","depth":26,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.08125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.1609375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.028125,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2878906,"top":0.10069445,"width":0.059375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Лукаш привет","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.038671874,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:49 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"може ли да разглдаш този ПР като имаш малко време:","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.15117188,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11949","depth":25,"bounds":{"left":0.31289062,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11949","depth":26,"bounds":{"left":0.31289062,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"text"}]...
|
-3474151922635054558
|
-4079145489015274227
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# sofa-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaNikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudToastHistoryWindowHelpSearch Jiminny IncE. Vasil VasilevQMessagestP Add canvas4e FilesPinsvasll vastiey 4ido rimмерсине е спешнопросто искам да го разкарам, за да си отпуша следващия РLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя lIP code style, и typehints•в следващия вече има логикаLukas Kovalik 3:21 PMза stage ce зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage кaтo crm syncable objectYesterdayVasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти, който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още сьществува в CRM-ав момента таргетира leads основнослед това ще пусна един ПР, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеІБОМЯтToday "vasil vasilev 11.50 AMJvka ulr nloy Beiihttps://github.com/iiminnv/app/pull/11977даи един оърз approveLuKas KovallK 12:00 PMдОТОВОwasill vasillev 12:00 PMмедсиLukas Kovalk 12.00 PMи лвата вчеда оях в почивкаvasil vasilev 1:00 PMа, извиниваи, не знасхLukas Kovalk 1201 PMHama noooлemВаско ако имаш минутка, удин брьз въпрос покрай integration-appAaconnectediShift + Return to add a new lineSupport Daily • in 1h 18 mБг100% C2Thu 16 Apr 13:42:52U InspectonConsoleDebuggerT- Network Style Editor( PerformanceLF Memory& StorageT Accessibility040filter OutourLogs DebugessXHRRequests• Naye a the "e compu ed hash in hexpr/sPattVN5o/20w58gtt USrP Iitru sukreNgquatVtps:/fonts-googleapis.com/css22fani1TBM-PlextSeriffdis sonnectA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerlype instead.Storage access automaticaluy aranted for orioin "nttos:ul, inteoration.aop" on "https:apo, dev. 11minnv. com"ope aeconee-teb -esoled: ("Sd" 59e0b983dag8ta74F98aebfbi, " nane'""Connection to 66fe6(91520273a165e3c14l for Dev Z0hconnect-brhELsKm.15:4:2/0"oauth" "createdAt":"2026-64-1611A Source map error: Error: request failed with status 404Stack in the worker:networkkeauestaresource.devtools/cl1ent/shared/source-mad-loader/utils/network=reauest..1s:45:9Resource URL: https://app.dev.jiminny.com/vue=assets/assets/connect-BFFtIsKm.issource Map unL. connect-brrtesniys map Lealt moreLayesoa". The computed hes is "oxpr/sPifeVoNx50/1ot the subresource at "https:tonts.googLeapas.com/css2/Tam1Ly=1BN+PLextseriTadisp conneciA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.& Storage access automatically granted tor origan "https:/ul, integration.app" on "https:/app.dev.11m1nny-com" -openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohoconnect-brhELSKM.15:2:2/0Lny cLLeme":"READY", "errors":proxy" "createdAt" : "2026-04-16T10:27:15.579Z-16T10:33:37.1962" "retryAttempts":0,"isDeactivated": falsel! None of the "chaß84" hashes in the integritv attribute match the content of the subrecource atLay=swap". The computed hash is "oxpr/SPifeVqNx50/1ow9nS0QIt60XJIKkUcSrPclwH/ruMEWK7C1JNq1qUMCVSN™. deetteeeeee eMouservent.mozinpursource 1s deprecared. use Forntertvent.polhterlvoe instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https://app.dev.jiminny.com"-Ctn etrenton Userqae- eCebef-1ob-edolved: ("":69e0b983da98fa7At98aebfb"', "hane" "Connection to 66fe6e91320273165e3c14d for Dev Zohoconnect-br-tlskm.1s:2:27/6132-ntegrationta m6te6C91 273a5e33e752481erna9,Tet Aae,2d6tzetedorae"tenantId","69e0b3faef3e7b6248189289","isTest" false, "connected" true, "state" "READY "errors"icrentedf+i. 19075-PA-16T10:27:15.5797" "updatedAt"."2026-04-16T10:34:08,7027" "retrvAttemots":0."isDeactivated"-falselNove ve the "e compu ha has i hoxpr/SPrtev 0/3owenabtt XKUSrP oTre sukrCaNg quat s."ncros.ronts.co0cleapis.com css<.tanlly=Lbotrlextserltoulso connectTop ÷ FBI...
|
36529
|
|
36532
|
742
|
0
|
2026-04-16T10:43:24.177337+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336204177_m1.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 3 new items - S Vasil Vasilev (DM) - Jiminny Inc - 3 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
Apr 14th at 2:01:59 PM
2:01
повечето промени са семантични, не са функционални
Apr 14th at 2:02:06 PM...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:16 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, привет","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:19 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11928","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11928","depth":26,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш привет","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:49 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"може ли да разглдаш този ПР като имаш малко време:","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11949","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11949","depth":26,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:59 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"повечето промени са семантични, не са функционални","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:02:06 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1146233991880406448
|
-4075345576829418228
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
Apr 14th at 2:01:59 PM
2:01
повечето промени са семантични, не са функционални
Apr 14th at 2:02:06 PM
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(abl• 0APP (-zsh)*3ec2-user@ip-10-30-…..₴4DOCKER• 881DEV (docker)882APP (-zsh)../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D86-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBБГ100% <47O 878Thu 16 Apr 13:43:24181* Unable to acce...O x8APP...
|
NULL
|
|
36533
|
743
|
0
|
2026-04-16T10:43:25.781817+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336205781_m2.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 3 new items - S Vasil Vasilev (DM) - Jiminny Inc - 3 new items - Slack...
|
1
|
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...
|
[{"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.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"}]...
|
-167391657480569512
|
-1195503546707198741
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaR2 Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudToastHistoryWindowHelpSearch Jiminny IncE. Vasil VasilevQMessagestP Add canvas4e FilesPinsTuesday, April 14thпрoeтo иеkdм да 10 UasKduaM, Sd La en omiywd c-aeLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя lIP code style, и typehintsв следващий вече има лошикаLukas Kovalik 3:21 PMза stage се зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage кaтo crm syncable objectYesterday *Vasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти, който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още съществува в CRM-aвмoveric iaeicmoa caos оc-овнoслед това ще пусна един шіг, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеьOМЯTTTodayvasil Vasilev 11:56 AMJvkauur nloyBeiihttps://github.com/iiminnv/app/pull/11977даи един оърз approvelLukas Kovalk 17.00 PMдОТОВОwasill vasillev 12:00 PMмедсиlLukas Kovalk 17.00 PMи лвата вчеда оях в почивкаvasil vasilev 1:00 PMа, извиняваи, не знаехLukas Kovalk 1201 PMHama noooлemLukas Kovalk 1:42 PMваско ако имаш минутка, имам един орьз въпрос покрай Integranon-appMessage Vasil Vasilevconnectedi: Support Daily • in 1h 17 mБг100% [2Thu 16 Apr 13:43:25U InspectonConsoleDebuggerT- Network Style Editor( PerformanceLF Memory& StorageT Accessibility040filter OutourLogs DebugessXHRRequests• Naye a the "e comu ed hash in hexpr/sPattVN5o/20w5gtt k USrP Iitru uKTCNgtqatVstps:/fonts-googleapis.com/css22fani1ETBM-PlexSeriffdis sonnectA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerllype instead.Storage access automaticaluy aranted for orioin "nttos:ul, inteoration.aop" on "https:apo, dev. 11minnv. com"openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcconnect-brhELSKM.15:2:2/0"oauth" "createdAt":"2026-64-1611A Source map error: Error: request failed with status 404Stack in the worker:networkkeauestaresource.devtools/cl1ent/shared/source-mad-loader/utils/network=reauest..1s:45:9Resource URL: https://app.dev.jiminny.com/vue=assets/assets/connect-BFFtIsKm.issource Map unL. connect-brrtesniys map Lealt moreLayesoa". The computed hes is "oxpr/sPifeVoNx50/1subresource at "https:tonts.googleap1s.com/css2/Tam1Ly=1BN+PLextSer1Tadisp conneciA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerType instead.& Storage access automatically granted for origan "https:ul, integration.app" on "https:/app.dev.1zm1nny-com" -[IntegrationApp] openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohoiny clrenlconnect-brhELSKM.15:2:2/0e":"READY", "errors":proxy" "createdAt" : "2026-04-16T10:27:15.579Z-16T10:33:37.1962" "retryAttempts":0,"isDeactivated":falsel! None of the "chaß84" hashes in the integritv attribute match the content of the subrecource atLay=swap". The computed hash is "oxpr/SPifeVqNx50/1ow9nS0QIt60XJIKkUcSrPclwH/ruMEWK7C1JNq1qUMCVSN™. deteeetetee teMouservent.mozinpursource 1s deprecared. use Fointerbvent.polnterlyoe instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https:///app.dev.jiminny.com".Ctn etrenton Userqae- eCebef-1ob-edolved: ("":69e0b983da98fa7At98aebfb"', "hane" "Connection to 66fe6e91320273165e3c14d for Dev Zoho"tenantId","69e0b3faef3e7b6248189289","IsTest": false, "connected"; true, "state" "READY, "errors""crenteda+. 19076-04-16T1connect-br-tlskm.1s:2:27/6Nove we the "e conuthd has ii thex pr/sPrtev 5o/owe 580tt XCUESFP o tre skresNgTqut s."ncros.ronts.co0cleapis.com cssz tanily=Lbitrlextserlroulso connectTop ÷ FBI...
|
NULL
|
|
36602
|
NULL
|
0
|
2026-04-16T10:48:02.514088+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336482514_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(abl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 13:48:02181* Unable to acce...O x886-zshmap:138.34kBmaр:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBтар:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
NULL
|
-3723815977769018164
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(abl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 13:48:02181* Unable to acce...O x886-zshmap:138.34kBmaр:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBтар:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36601
|
|
36603
|
NULL
|
0
|
2026-04-16T10:48:02.495951+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336482495_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SackFileFoitViewHistoryWindowHelpSearch Jiminny In SackFileFoitViewHistoryWindowHelpSearch Jiminny IncJiminny ...E. Vasil VasilevQ= UnreadsMessagestP Add canvas4e FilesPinse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaNikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova**:Apps' Jira CloudLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя ПР code style, и typehintsв следващий вече има лошикаLukas Kovalik 3:21 PMза stage се зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable obiectYesterday ~Vasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти. който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още съществува в CRM-aвмoveric iaeicmoa caos оc-овнoслед това ще пусна един шіг, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеьOМЯTTlodayyvasil Vasilev 11:56 AMvkaш. пoиветhttps://github.com/iiminnv/app/oull/11977даи един оърз approvelLukas Kovalk 17.00 PMCOTOROwasill vasillev 12:00 PMмедсиlLukas Kovalk 17.00 PMи лвата вчеда оях в почивкаwasill vasillev 12:00 PMа, извиняваи, не знаехLukas Kovalk 1201 PMняма поорлемLukas Kovalk 1:42 PMваско ако имаш минутка, имам един орьз въпрос покрай Integranon-appvasil vasilev 1:43 PM• мин самоToastMessage Vasil VasilevAaconnecteda Support Daily • in 1h 12 m(A]100% zThu 16 Apr 13:48:02U Inspecton• Console• DebuggerT_ NetworkL Style EditorPertormanceFilter URLs204 0,206 Go204 0..200 P..204 о.200 G.204 O..200 G.204 O..200 P...2940.200 G.204 0200 G.200 P..204 O..204 0200 G..204 о..206TG.204 0..200 р.204 0,200 G.204 O..200 G.200 P.204 01204 0.200 G.206G.200 P...294 0..204 O..204 0200 G.204 о..200 G..200 P..294 0.204 о..206TG.204 0..200 G.204 0.200 P.2041011200 G.1204 0.200 G.2940.200 P.204 0Domaln"api.get….colf-auth-contowhapioet.. zohocrm^api.get…zohocrmapi.get.• api.get...aoi.cet..connection-optionsconnection-ontionsapi.get...aoi.cet..self-auth-contextzonocrmzohoermapi.get..."api.get.api.get... connection-options*api.get..self-auth-contextapi.get…self-auth-context• api.get..api.get.api.get...aoi.cet..zonoermconnection-optionszohocrmconnection-ootions• api.get...A api.getself-auth-contextselt-auth-contexyapi.get... zohocrm*api.get...zahacrmadiaet..*api.get...api.get…api.get.aoi.cet..connection-optionsconnection-optionsself-auth-contextzonocrmconnection-ontions• api.get...• api.get.api.get...connection-options*api.get..self-auth-contextadi,det..• api.get.api.get… api.get.api.get…zohocrmzohocrm• api.get..^ api.get..api.get...^ api.get….self-auth-contextselt-auch-contexuzohoermconnection-optionsapi.get...*api.get..adiaet..zohocrmconnection"ootions*api.get..api.get.• api.get...aoi.cet..self-auth-conteytzohocrmapi.get...aoi.cet..connection-ontionsselt-auth-contextaapiaet...self-auth-context"api.get.zonocrmadi,det..zohocrm*api.get..connection"ootionsapi.get…connection-optionsInitiatorTransf…xhr740 B 0index-.1RS KBxhr767B 0index-...1.09 kB 5774B 0index-...1.92 kB 3744B0Index-.1.74 kB 2769B01.09 kB 518080тeex"..1.92 kB 3146B0moex"index-...1.73 kB 21.10 kB 5761B0774B0index-192 kB 3748 B 0index-...114 KB759B 0index-..109 K815780B 0index-..xhr1.92 kB 3746B01.74 kB 2index-109 kRI;761 B 078480index-.indexe.1.92 kB 3174 kB 21.09 kB 5744B 0761B 0774B0moex"199 kR748 B 0index-.index-.1.74 KB 21.10 kB 5index-..xhrindex-.maex".780B 019 KB740 B 01.74 kB 2763B01.09 KD766 R101.92 kB 3744B01.74 kB 2757 B01.10 kB 5114B91 requests92.01 KB/ 112.19 KB transterredFinish: 13.38 minLF Memory& StorageT AccessibilityAlI HITMLessFontsmages Vedia ws_ Disable Cache No Throttling + 50:LookIesRequestResponseTiminesolack llaceSecuritymeddersFilter propertiesJSON1c: "botebc91sz021salboesc140"name: "Zoho CRM"uuid: "e0259861-2f23-4f88-8fa8-8d9f9d420f89"kev: "zohoerm"state. "pEAnyerrors:revision: "8d27bda5-8eca-46d9-90bd-70f98efd970d"creaTeoAl. "2024-10-0311000.095114uocatedAt:"2026-04-16704419464sueacuivateu: laiselocoun: "nuos:/statc.intecration.apo/connectors/zono-crm/loco.ongconnector d:"64a158e7626057200232e076connectorVersion: "3.0.3"oAuthCallbackUri: "https:api.integration.app/oauth-callbackhasMissingParameters: falsenasbocumentation: Talsehaso perations: trueoperationsCount: 569nasbara: truedataCollectionsCount: 20hasEvents: falseeventsCount:hasGlobalWebhooks: falsenasuam: trueauth voe: "client-credentials"• connection: {id: "69e0b983da98fa74f98aebfb", name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRMcllent, userlo: "Teceboco-Ted1-401l-0321-2100/0a14023.id: "69e0b983ca98fa74f98aebfo"name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client"userld: "leceb6c8-teb1-4d11-b321-2160/dat4623tenantid: "60e0hctaef3e706948120280Istest. talseconnected: truestate: "READY"errors:intearationid: "66te6c913202f3a165e3c14d1externalAppid: "6671653e7e2d642e4e41b0fa"authoptionkey: "oauth"createdAt:"2026-04-1611007 15.5707updatedAt: "2026-04-16T10:34:08.7022'retrvAttemots: 0isDeactivated: falseauthoptions: ? .?...
|
NULL
|
7559075226520756074
|
NULL
|
click
|
ocr
|
NULL
|
SackFileFoitViewHistoryWindowHelpSearch Jiminny In SackFileFoitViewHistoryWindowHelpSearch Jiminny IncJiminny ...E. Vasil VasilevQ= UnreadsMessagestP Add canvas4e FilesPinse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaNikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova**:Apps' Jira CloudLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя ПР code style, и typehintsв следващий вече има лошикаLukas Kovalik 3:21 PMза stage се зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable obiectYesterday ~Vasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти. който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още съществува в CRM-aвмoveric iaeicmoa caos оc-овнoслед това ще пусна един шіг, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеьOМЯTTlodayyvasil Vasilev 11:56 AMvkaш. пoиветhttps://github.com/iiminnv/app/oull/11977даи един оърз approvelLukas Kovalk 17.00 PMCOTOROwasill vasillev 12:00 PMмедсиlLukas Kovalk 17.00 PMи лвата вчеда оях в почивкаwasill vasillev 12:00 PMа, извиняваи, не знаехLukas Kovalk 1201 PMняма поорлемLukas Kovalk 1:42 PMваско ако имаш минутка, имам един орьз въпрос покрай Integranon-appvasil vasilev 1:43 PM• мин самоToastMessage Vasil VasilevAaconnecteda Support Daily • in 1h 12 m(A]100% zThu 16 Apr 13:48:02U Inspecton• Console• DebuggerT_ NetworkL Style EditorPertormanceFilter URLs204 0,206 Go204 0..200 P..204 о.200 G.204 O..200 G.204 O..200 P...2940.200 G.204 0200 G.200 P..204 O..204 0200 G..204 о..206TG.204 0..200 р.204 0,200 G.204 O..200 G.200 P.204 01204 0.200 G.206G.200 P...294 0..204 O..204 0200 G.204 о..200 G..200 P..294 0.204 о..206TG.204 0..200 G.204 0.200 P.2041011200 G.1204 0.200 G.2940.200 P.204 0Domaln"api.get….colf-auth-contowhapioet.. zohocrm^api.get…zohocrmapi.get.• api.get...aoi.cet..connection-optionsconnection-ontionsapi.get...aoi.cet..self-auth-contextzonocrmzohoermapi.get..."api.get.api.get... connection-options*api.get..self-auth-contextapi.get…self-auth-context• api.get..api.get.api.get...aoi.cet..zonoermconnection-optionszohocrmconnection-ootions• api.get...A api.getself-auth-contextselt-auth-contexyapi.get... zohocrm*api.get...zahacrmadiaet..*api.get...api.get…api.get.aoi.cet..connection-optionsconnection-optionsself-auth-contextzonocrmconnection-ontions• api.get...• api.get.api.get...connection-options*api.get..self-auth-contextadi,det..• api.get.api.get… api.get.api.get…zohocrmzohocrm• api.get..^ api.get..api.get...^ api.get….self-auth-contextselt-auch-contexuzohoermconnection-optionsapi.get...*api.get..adiaet..zohocrmconnection"ootions*api.get..api.get.• api.get...aoi.cet..self-auth-conteytzohocrmapi.get...aoi.cet..connection-ontionsselt-auth-contextaapiaet...self-auth-context"api.get.zonocrmadi,det..zohocrm*api.get..connection"ootionsapi.get…connection-optionsInitiatorTransf…xhr740 B 0index-.1RS KBxhr767B 0index-...1.09 kB 5774B 0index-...1.92 kB 3744B0Index-.1.74 kB 2769B01.09 kB 518080тeex"..1.92 kB 3146B0moex"index-...1.73 kB 21.10 kB 5761B0774B0index-192 kB 3748 B 0index-...114 KB759B 0index-..109 K815780B 0index-..xhr1.92 kB 3746B01.74 kB 2index-109 kRI;761 B 078480index-.indexe.1.92 kB 3174 kB 21.09 kB 5744B 0761B 0774B0moex"199 kR748 B 0index-.index-.1.74 KB 21.10 kB 5index-..xhrindex-.maex".780B 019 KB740 B 01.74 kB 2763B01.09 KD766 R101.92 kB 3744B01.74 kB 2757 B01.10 kB 5114B91 requests92.01 KB/ 112.19 KB transterredFinish: 13.38 minLF Memory& StorageT AccessibilityAlI HITMLessFontsmages Vedia ws_ Disable Cache No Throttling + 50:LookIesRequestResponseTiminesolack llaceSecuritymeddersFilter propertiesJSON1c: "botebc91sz021salboesc140"name: "Zoho CRM"uuid: "e0259861-2f23-4f88-8fa8-8d9f9d420f89"kev: "zohoerm"state. "pEAnyerrors:revision: "8d27bda5-8eca-46d9-90bd-70f98efd970d"creaTeoAl. "2024-10-0311000.095114uocatedAt:"2026-04-16704419464sueacuivateu: laiselocoun: "nuos:/statc.intecration.apo/connectors/zono-crm/loco.ongconnector d:"64a158e7626057200232e076connectorVersion: "3.0.3"oAuthCallbackUri: "https:api.integration.app/oauth-callbackhasMissingParameters: falsenasbocumentation: Talsehaso perations: trueoperationsCount: 569nasbara: truedataCollectionsCount: 20hasEvents: falseeventsCount:hasGlobalWebhooks: falsenasuam: trueauth voe: "client-credentials"• connection: {id: "69e0b983da98fa74f98aebfb", name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRMcllent, userlo: "Teceboco-Ted1-401l-0321-2100/0a14023.id: "69e0b983ca98fa74f98aebfo"name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client"userld: "leceb6c8-teb1-4d11-b321-2160/dat4623tenantid: "60e0hctaef3e706948120280Istest. talseconnected: truestate: "READY"errors:intearationid: "66te6c913202f3a165e3c14d1externalAppid: "6671653e7e2d642e4e41b0fa"authoptionkey: "oauth"createdAt:"2026-04-1611007 15.5707updatedAt: "2026-04-16T10:34:08.7022'retrvAttemots: 0isDeactivated: falseauthoptions: ? .?...
|
36600
|
|
36604
|
744
|
0
|
2026-04-16T10:48:34.140179+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336514140_m1.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 2 new items - S Vasil Vasilev (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
Apr 14th at 2:01:59 PM
2:01
повечето промени са семантични, не са функционални
Apr 14th at 2:02:06 PM
2:02
разделям по голям ПР на две части
Lukas Kovalik
Apr 14th at 2:15:25 PM
2:15 PM
здрасти, да ще го погледна по-късно
Apr 14th at 2:15:32 PM
2:15
спешно ли е
Vasil Vasilev
Apr 14th at 2:15:34 PM
2:15 PM
мерси
Apr 14th at 2:15:49 PM
2:15
не е спешно
Apr 14th at 2:16:00 PM
2:16
просто искам да го разкарам, за да си отпуша следващия ПР
Lukas Kovalik
Apr 14th at 3:21:08 PM
3:21 PM
готово, беше по-бързо отколкото мислех
Vasil Vasilev
Apr 14th at 3:21:21 PM
3:21 PM
мерси
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:21:36 PM
3:21
аз основно съм оправял в тоя ПР code style, и typehints
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"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":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш привет","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:49 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"може ли да разглдаш този ПР като имаш малко време:","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11949","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11949","depth":26,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:59 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"повечето промени са семантични, не са функционални","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:02:06 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:02","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"разделям по голям ПР на две части","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:25 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти, да ще го погледна по-късно","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:32 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"спешно ли е","depth":25,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:34 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"мерси","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:49 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"не е спешно","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:16:00 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:16","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"просто искам да го разкарам, за да си отпуша следващия ПР","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:21:08 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"готово, беше по-бързо отколкото мислех","depth":25,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:21:21 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"мерси","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 14th at 3:21:36 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"аз основно съм оправял в тоя ПР code style, и typehints","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}]...
|
-4534962457719127911
|
-3730812989767508699
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
Apr 14th at 2:01:59 PM
2:01
повечето промени са семантични, не са функционални
Apr 14th at 2:02:06 PM
2:02
разделям по голям ПР на две части
Lukas Kovalik
Apr 14th at 2:15:25 PM
2:15 PM
здрасти, да ще го погледна по-късно
Apr 14th at 2:15:32 PM
2:15
спешно ли е
Vasil Vasilev
Apr 14th at 2:15:34 PM
2:15 PM
мерси
Apr 14th at 2:15:49 PM
2:15
не е спешно
Apr 14th at 2:16:00 PM
2:16
просто искам да го разкарам, за да си отпуша следващия ПР
Lukas Kovalik
Apr 14th at 3:21:08 PM
3:21 PM
готово, беше по-бързо отколкото мислех
Vasil Vasilev
Apr 14th at 3:21:21 PM
3:21 PM
мерси
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:21:36 PM
3:21
аз основно съм оправял в тоя ПР code style, и typehints
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(abl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D86-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBБГ100% <47O 878Thu 16 Apr 13:48:34181* Unable to acce...O x8APP...
|
NULL
|
|
36605
|
745
|
0
|
2026-04-16T10:48:36.882534+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336516882_m2.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 2 new items - S Vasil Vasilev (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
Apr 14th at 2:01:59 PM
2:01
повечето промени са семантични, не са функционални
Apr 14th at 2:02:06 PM
2:02
разделям по голям ПР на две части
Lukas Kovalik
Apr 14th at 2:15:25 PM
2:15 PM
здрасти, да ще го погледна по-късно
Apr 14th at 2:15:32 PM
2:15
спешно ли е
Vasil Vasilev
Apr 14th at 2:15:34 PM
2:15 PM
мерси
Apr 14th at 2:15:49 PM
2:15
не е спешно
Apr 14th at 2:16:00 PM
2:16
просто искам да го разкарам, за да си отпуша следващия ПР
Lukas Kovalik
Apr 14th at 3:21:08 PM
3:21 PM
готово, беше по-бързо отколкото мислех
Vasil Vasilev
Apr 14th at 3:21:21 PM
3:21 PM
мерси
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:21:36 PM
3:21
аз основно съм оправял в тоя ПР code style, и typehints
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:21:42 PM
3:21
в следващия вече има логика
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 14th at 3:21:42 PM
3:21 PM
да
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:22:18 PM
3:22
за stage се зачудих дали не е лошо да добавим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Vasil Vasilev
Apr 14th at 3:23:13 PM
3:23 PM
кое да добавим ?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 14th at 3:29:14 PM
3:29 PM
stage като crm syncable object
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Vasil Vasilev
Yesterday at 5:56:19 PM...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11679687,"top":0.76666665,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"bounds":{"left":0.11992188,"top":0.76666665,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.07304688,"top":0.825,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11328125,"top":0.84444445,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"bounds":{"left":0.11601563,"top":0.84444445,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.14335938,"top":0.07986111,"width":0.036328126,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.18085937,"top":0.07986111,"width":0.040234376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.19179687,"top":0.0875,"width":0.026171874,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.22226563,"top":0.07986111,"width":0.024609376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.23320313,"top":0.0875,"width":0.010546875,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"bounds":{"left":0.24804688,"top":0.07986111,"width":0.02421875,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"bounds":{"left":0.2589844,"top":0.0875,"width":0.01015625,"height":0.011111111},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.2734375,"top":0.07986111,"width":0.012890625,"height":0.02638889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2878906,"top":0.10069445,"width":0.059375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.08125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.1609375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.028125,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2878906,"top":0.110416666,"width":0.059375,"height":0.019444445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Лукаш привет","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.038671874,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:49 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"може ли да разглдаш този ПР като имаш малко време:","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.15117188,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11949","depth":25,"bounds":{"left":0.31289062,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11949","depth":26,"bounds":{"left":0.31289062,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:59 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"повечето промени са семантични, не са функционални","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.14921875,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:02:06 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:02","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"разделям по голям ПР на две части","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.09648438,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:25 PM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15 PM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"здрасти, да ще го погледна по-късно","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.10039063,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:32 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"спешно ли е","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03359375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:34 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"мерси","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.016796876,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:15:49 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:15","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"не е спешно","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.033203125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:16:00 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:16","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"просто искам да го разкарам, за да си отпуша следващия ПР","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.16523437,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:21:08 PM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21 PM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"готово, беше по-бързо отколкото мислех","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.11210938,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.103472225,"width":0.032421876,"height":0.015277778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10486111,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:21:21 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10694444,"width":0.01796875,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10694444,"width":0.01796875,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"мерси","depth":25,"bounds":{"left":0.16210938,"top":0.12013889,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"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,"bounds":{"left":0.49140626,"top":0.10069445,"width":0.000390625,"height":0.013194445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 14th at 3:21:36 PM","depth":25,"bounds":{"left":0.14960937,"top":0.14305556,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21","depth":26,"bounds":{"left":0.14960937,"top":0.14305556,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"аз основно съм оправял в тоя ПР code style, и typehints","depth":25,"bounds":{"left":0.16210938,"top":0.14097223,"width":0.1484375,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.119444445,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 14th at 3:21:42 PM","depth":25,"bounds":{"left":0.14960937,"top":0.16388889,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21","depth":26,"bounds":{"left":0.14960937,"top":0.16388889,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"в следващия вече има логика","depth":25,"bounds":{"left":0.16210938,"top":0.16180556,"width":0.080078125,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.14027777,"width":0.000390625,"height":0.022222223},"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.18125,"width":0.036328126,"height":0.015277778},"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.18263888,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:21:42 PM","depth":24,"bounds":{"left":0.20117188,"top":0.18472221,"width":0.01796875,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:21 PM","depth":25,"bounds":{"left":0.20117188,"top":0.18472221,"width":0.01796875,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"да","depth":25,"bounds":{"left":0.16210938,"top":0.19791667,"width":0.006640625,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.16944444,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 14th at 3:22:18 PM","depth":25,"bounds":{"left":0.14960937,"top":0.22083333,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:22","depth":26,"bounds":{"left":0.14960937,"top":0.22083333,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"за stage се зачудих дали не е лошо да добавим","depth":25,"bounds":{"left":0.16210938,"top":0.21875,"width":0.12773438,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.19722222,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.23819445,"width":0.032421876,"height":0.015277778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.23958333,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:23:13 PM","depth":24,"bounds":{"left":0.19726562,"top":0.24166666,"width":0.01796875,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:23 PM","depth":25,"bounds":{"left":0.19726562,"top":0.24166666,"width":0.01796875,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"кое да добавим ?","depth":25,"bounds":{"left":0.16210938,"top":0.25486112,"width":0.046875,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.22638889,"width":0.000390625,"height":0.022222223},"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.27430555,"width":0.036328126,"height":0.015277778},"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.27569443,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 3:29:14 PM","depth":24,"bounds":{"left":0.20117188,"top":0.2777778,"width":0.01796875,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:29 PM","depth":25,"bounds":{"left":0.20117188,"top":0.2777778,"width":0.01796875,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"stage като crm syncable object","depth":25,"bounds":{"left":0.16210938,"top":0.29097223,"width":0.0796875,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.2625,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2984375,"top":0.31736112,"width":0.03828125,"height":0.019444445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.34444445,"width":0.032421876,"height":0.015277778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.34583333,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 5:56:19 PM","depth":24,"bounds":{"left":0.19726562,"top":0.34791666,"width":0.01796875,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5595404842973956754
|
-3730856421148407483
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
Apr 14th at 2:01:59 PM
2:01
повечето промени са семантични, не са функционални
Apr 14th at 2:02:06 PM
2:02
разделям по голям ПР на две части
Lukas Kovalik
Apr 14th at 2:15:25 PM
2:15 PM
здрасти, да ще го погледна по-късно
Apr 14th at 2:15:32 PM
2:15
спешно ли е
Vasil Vasilev
Apr 14th at 2:15:34 PM
2:15 PM
мерси
Apr 14th at 2:15:49 PM
2:15
не е спешно
Apr 14th at 2:16:00 PM
2:16
просто искам да го разкарам, за да си отпуша следващия ПР
Lukas Kovalik
Apr 14th at 3:21:08 PM
3:21 PM
готово, беше по-бързо отколкото мислех
Vasil Vasilev
Apr 14th at 3:21:21 PM
3:21 PM
мерси
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:21:36 PM
3:21
аз основно съм оправял в тоя ПР code style, и typehints
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:21:42 PM
3:21
в следващия вече има логика
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 14th at 3:21:42 PM
3:21 PM
да
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 14th at 3:22:18 PM
3:22
за stage се зачудих дали не е лошо да добавим
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Vasil Vasilev
Apr 14th at 3:23:13 PM
3:23 PM
кое да добавим ?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 14th at 3:29:14 PM
3:29 PM
stage като crm syncable object
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
Vasil Vasilev
Yesterday at 5:56:19 PM
SackFileFoitViewHistoryWindowHelpSearch Jiminny IncJiminny ...E. Vasil VasilevQ= UnreadsMessagestP Add canvas4e FilesPinse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaR2 Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudVasil Vasilev 3:21 PMмерсиTuesday, April 14thаз основно съм оправял в тоя ПР code style, и typehintsв следващий вече има лотикаLukas Kovalik 3:21 PMза stage ce зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable obiectYesterdayVasil Vasiley 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iiminny/app/pull/11879почиства стари stale crm обекти. който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимелин sink. за да видим дали все още сьществува в CRM-aвмoveric iaeicmoa caos оc-овнoслед това ще пусна един шіг, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеьOМЯTTlodayyvasil Vasilev 11:56 AMvkaш. пoиветhttps://github.com/jiminny/app/pull/11977дай един бърз approveLukas Kovalk 17.00 PMCOTOROwasill vasillev 12:00 PMмерсиlLukas Kovalk 17.00 PMи лвата вчеда оях в почивкаwasill vasillev 12:00 PMа, извиняваи, не знаехlLukas Kovalk 17.01 PMняма поорлемLukas Kovalk 1:42 PMваско ако имаш минутка, имам елин одьз вьпрос покраи Interraron-adovasil vasilev 1:43 PM• мин самоLukas Kovalk 1:48 PMсориимаш о минили следо минк.Toastне е май спешнAaconnectedShift + Return to add a new linea Support Daily • in 1 h 12 m100% zThu 16 Apr 13:48:36U Inspecton• Console• DebuggerT_ NetworkL Style EditorPertormanceFilter URLs204 0,206 Go204 0..200 P..204 о.200 G.204 O..200 G.204 O..200 P...2940.200 G.204 0200 G.206 P.204 O..204 0200 G..204 о..206TG.204 0..200 р.204 0,200 G.204 O..200 G.200 P..204 01204 0..200 G.200 G.200 P...294 0..204 O..204 0200 G..204 о..200 G..200 P..294 0.204 о..206TG.204 0..200 G.204 0.200 P.204 O..200 G.1204 0.200 G.2940.200 P..204 0Domalncolf-auth-contowhaorgel..apioet.. zohocrm^api.get…zohocrmapi.get…• api.get...aoi.cet..connection-optionsconnection-ontionsapi.get...aoi.cet..self-auth-contextzonocrmzohoermapi.get..."api.get.api.get... connection-options*api.get..colf-auth-contevtapi.get…self-auth-context• api.get..zonoermapi.get…api.get...aoi.cet..zohocrmconnection-ootionsapi.get...^ api.get….self-auth-contextselt-auth-contexyapi.get... zohocrm*api.get...zahacrmadiaet..connection-optionsconnection-options*api.get...api.get…api.get.aoi.cet..self-auth-contextzonocrmconnection-ontionsapi.get...• api.get.api.get...connection-options*api.get..adi,det.."api.get.A api.get.. api.get.api.get…api.get.^ api.get..api.get...^ api.get….self-auth-contextzohocrmself-auth-contextselt-auch-contexuzohoermconnection-optionsapi.get...*api.get..adiaet..zohocrmconnection"ootionsselt-auth-contexiself-auth-context*api.get..api.get.api.get...aoi.cet..zohocrmapi.get...aoi.cet..connection-ontionsselt-auth-contextaapiaet...self-auth-context"api.get.zonocrmadiaet..zohocrm*api.get..connection"ootionsapi.get…connection-optionsInitiatorTransf…xhr740 B 0index-.1RS KBxhr767B 0index-...1.09 kB 5774B 0index-...1.92 kB 3744B0Index-.1.74 kB 2769B01.09 kB 518080тeex"..1.92 kB 3146B0moex"index-...1.73 kB 21.10 kB 5761B0774B0index-192 kB 3748 B 0index-...114 KB759B 0index-..109 K815780B 0index-..xhr1.92 kB 3746B01.74 kB 2index-109 kRI;761 B 0784801.92 kB 3indexe.174 kB 21.09 kB 5744B 0761B 0774B0moex"199 kR748 B 0index-.index-.1.74 KB 21.10 kB 5index-..xhrindex-.тоex".780B 019 KB740 B 01.74 kB 2763B01.09 KD766 R101.92 kB 3744B01.74 kB 2757 B01.10 kB 5114B91 requests92.01 KB/ 112.19 KB transterredFinish: 13.38 minLF Memory& StorageT AccessibilityAlI HITMLessXHRFontsmages Vedia ws_ Disable Cache No Throttling + 50:LookIesRequestResponseTiminesolack llaceSecuritymeddersFilter propertiesJSON1c: "botebc91sz021salboesc140"name: "Zoho CRM"uuid: "e0259861-2f23-4f88-8fa8-8d9f9d420f89"kev: "zohoerm"state. "pEAnyerrors:revision: "8d27bda5-8eca-46d9-90bd-70f98efd970d"creaTeoAl. "2024-10-0311000.095114uocatedAt:"2026-04-16704419464sueacuivateu: laiselocoun: "nuos:static.intecraton.aoo/connectors/zono-crm/loco.ong'connector d:"64a158e7626057200232e076connectorVersion: "3.0.3"oAuthCallbackUri: "https:api.integration.app/oauth-callbackhasMissingParameters: falsenasbocumentation: Talsehaso perations: trueoperationsCount: 569nasbara: truedataCollectionsCount: 20hasEvents: falseeventsCount:hasGlobalWebhooks: falsenasuam: trueauth voe: "client-credentials"• connection: <id: "69e0b983da98fa74f98aebfb", name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRMcllent, userlo: "Teceboco-Ted1-401l-0521-2100/0814025 ..id: "69e0b983ca98fa74f98aebfo"name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client"userld: "leceb6c8-teb1-4d11-b321-2160/dat4623tenantid: "60e0hctaef3e7069481202891Istest. talseconnected: truestate: "READY"errors:intearationid: "661e6c913202f3a165e3c14d1externalAppid: "6671653e7e2d642e4e41b0fa"authoptionkey: "oauth"createdAt:"0026-04-16110:27115.5707updatedAt: "2026-04-16T10:34:08.7022'retrvAttemots: 0isDeactivated: falseauthoptions: ? .?...
|
NULL
|
|
36689
|
NULL
|
0
|
2026-04-16T10:53:30.893458+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336810893_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCode LaravelRefactorRu PhpStormFileEditViewNavigateCode LaravelRefactorRunToolsGitWindowHelpFV faVsco.jsv#11894 on JY-18909-automated-reports-ask-jiminny k v§ Support Daily - in 1h 7 mL AutomatedReportsCommandTestv100% C8• Thu 16 Apr 13:53:30QProject v© ReportController.phpTokenBuilder.php= custom.log=laravel.log4 SF [jiminny@localhost]Vconnect.vue X18› _tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› MeetingConsent› C mobile• D onboard› DJ_mocks_› _tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback> C playlistsSettings› OJ shared› SoftphoneCoach› C Svgicons› D Teaminsights> C composablesdirectiveshelpers> O locales© TeamSetupController.php xapi.phpSendReportJob.phpV© AutomatedReportsCommand.php© AskJiminnyReportsController.php© AutomatedReportsCommandTest.php49© AutomatedReportsSendCommand.php101Team.php138© AutomatedReportsRepository.php162AutomatedReportsService.php163© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php164© CreateActivityLoggedEvent.phpUserPilotActivityListener.php165166© ActivityLogged.php© AutomatedReportsCallbackService.php167© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php168169© AutomatedReportResult.php© AutomatedReport.php17021class TeamSetupController extends Control vA4 ×2 A Y167171public function integrationAppConnect(): JsonResponse104172185->setStatusCode( code:JsonResponse: :HTTP_BAL173186174187175188/** We keep all IntegrationApp providers as "integr‹176189$crmProviderKey = Providers::getTranslatedCrmProvid,177190178191/** @var ?SocialAccount $socialAccount */179192$socialAccount = $user->getSocialAccount($crmProvid 180193if ($socialAccount === null) {181194$this->logger->error('[IntegrationApp] Unexpectr182195'team_id'=> $team->getId(),183196'iapp_provider' => SrealProviderKey,184197'provider' => $crmProviderKey,1851981):186199187200return response()188201->json(l189202'success' => false,— 190203191Onboard.vue4 HS_local (jiminny@localhost]A console (EU]& console (PROD]& console [STAGING]<script>Wmethods: (async integrationApp0nClick) {1/"externalAppId":"6671653e7e2d642e4e41b0fa",////"authOptionKey":"","createdAt": "2026-04-16T10:04:10.420Z",//"updatedAt" : "2026-04-16T10:04:10.575Z",//"retryAttempts":0,//"isDeactivated": false1/ 3// if (connection && connection.connected === true) {if (connection && connection.discfnnected === false) {try {const saveRequest = await axios.post("Lapi/v1/integration-app-connect",if (saveRequest.data && saveRequest.data.success === tr/** If all is good refresh the page here */window.location = "/dashboard";return;throw new Error(saveRequest.data.message);} catch (error) {console. log(error);showSnackbarError(normalizeError(error));}Vite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams171:48 (12 chars)UTF-8Co 2 spaces...
|
NULL
|
-1891275783984454477
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCode LaravelRefactorRu PhpStormFileEditViewNavigateCode LaravelRefactorRunToolsGitWindowHelpFV faVsco.jsv#11894 on JY-18909-automated-reports-ask-jiminny k v§ Support Daily - in 1h 7 mL AutomatedReportsCommandTestv100% C8• Thu 16 Apr 13:53:30QProject v© ReportController.phpTokenBuilder.php= custom.log=laravel.log4 SF [jiminny@localhost]Vconnect.vue X18› _tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› MeetingConsent› C mobile• D onboard› DJ_mocks_› _tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback> C playlistsSettings› OJ shared› SoftphoneCoach› C Svgicons› D Teaminsights> C composablesdirectiveshelpers> O locales© TeamSetupController.php xapi.phpSendReportJob.phpV© AutomatedReportsCommand.php© AskJiminnyReportsController.php© AutomatedReportsCommandTest.php49© AutomatedReportsSendCommand.php101Team.php138© AutomatedReportsRepository.php162AutomatedReportsService.php163© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php164© CreateActivityLoggedEvent.phpUserPilotActivityListener.php165166© ActivityLogged.php© AutomatedReportsCallbackService.php167© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php168169© AutomatedReportResult.php© AutomatedReport.php17021class TeamSetupController extends Control vA4 ×2 A Y167171public function integrationAppConnect(): JsonResponse104172185->setStatusCode( code:JsonResponse: :HTTP_BAL173186174187175188/** We keep all IntegrationApp providers as "integr‹176189$crmProviderKey = Providers::getTranslatedCrmProvid,177190178191/** @var ?SocialAccount $socialAccount */179192$socialAccount = $user->getSocialAccount($crmProvid 180193if ($socialAccount === null) {181194$this->logger->error('[IntegrationApp] Unexpectr182195'team_id'=> $team->getId(),183196'iapp_provider' => SrealProviderKey,184197'provider' => $crmProviderKey,1851981):186199187200return response()188201->json(l189202'success' => false,— 190203191Onboard.vue4 HS_local (jiminny@localhost]A console (EU]& console (PROD]& console [STAGING]<script>Wmethods: (async integrationApp0nClick) {1/"externalAppId":"6671653e7e2d642e4e41b0fa",////"authOptionKey":"","createdAt": "2026-04-16T10:04:10.420Z",//"updatedAt" : "2026-04-16T10:04:10.575Z",//"retryAttempts":0,//"isDeactivated": false1/ 3// if (connection && connection.connected === true) {if (connection && connection.discfnnected === false) {try {const saveRequest = await axios.post("Lapi/v1/integration-app-connect",if (saveRequest.data && saveRequest.data.success === tr/** If all is good refresh the page here */window.location = "/dashboard";return;throw new Error(saveRequest.data.message);} catch (error) {console. log(error);showSnackbarError(normalizeError(error));}Vite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams171:48 (12 chars)UTF-8Co 2 spaces...
|
NULL
|
|
36690
|
NULL
|
0
|
2026-04-16T10:53:31.876754+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336811876_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhoStormEditViewNavigateCodelaravellRefactonRunlTo PhoStormEditViewNavigateCodelaravellRefactonRunlToolsWindowHeloDMsAchivityFilesMoreJiminny ...= Unreadse) Threads6d Huddles012• Drafts & sent:8 DirectoriesEh External connections* Starred@ liminny-x-integrati..platform-inner-team(# Channels# ai-chapten# alerts# backends contlicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random#: releases# sofa-ofhce# supportac thank-vous# the people of iimi....Direct messages• Nikolay Nikolov€. Vasil.... Galva DimitrovaNikolay Ivanov0 Aneliva Angelova3 Aneliya Angelova, ..Stoyan Tanev5- VegStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova#:Apps6 d Huddle with Vasil VasilevSearch Jiminny Inc0. Nikolay NikolovMessages4P FilesChanges:~ 4 new messages• Return talse to skip remote engagement update with a secondary activity dataComments•jiminny/app|Apr 8th Added by GitHubThursday, April 9thvNikolay Nikolov 10:50 AMOautha mi изгърмя: [URL_WITH_CREDENTIALS] в дооде с негоИзкарва ми бутон за Recoverrelo he ree caraneMessage Nikolay NikolovAaQV- Al Notes: OfiLukas KovalikScreen shareAl Notes: OffLeave&Suooort Dailv. in 1h7m100% 4• Thu 16 Aor 13:53:31nd Huddle with Vasil Vasiley• Hep L: →0 4 Support Daily « in 1h7m A 5Leave...
|
NULL
|
9120005509710671579
|
NULL
|
click
|
ocr
|
NULL
|
PhoStormEditViewNavigateCodelaravellRefactonRunlTo PhoStormEditViewNavigateCodelaravellRefactonRunlToolsWindowHeloDMsAchivityFilesMoreJiminny ...= Unreadse) Threads6d Huddles012• Drafts & sent:8 DirectoriesEh External connections* Starred@ liminny-x-integrati..platform-inner-team(# Channels# ai-chapten# alerts# backends contlicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random#: releases# sofa-ofhce# supportac thank-vous# the people of iimi....Direct messages• Nikolay Nikolov€. Vasil.... Galva DimitrovaNikolay Ivanov0 Aneliva Angelova3 Aneliya Angelova, ..Stoyan Tanev5- VegStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova#:Apps6 d Huddle with Vasil VasilevSearch Jiminny Inc0. Nikolay NikolovMessages4P FilesChanges:~ 4 new messages• Return talse to skip remote engagement update with a secondary activity dataComments•jiminny/app|Apr 8th Added by GitHubThursday, April 9thvNikolay Nikolov 10:50 AMOautha mi изгърмя: [URL_WITH_CREDENTIALS] в дооде с негоИзкарва ми бутон за Recoverrelo he ree caraneMessage Nikolay NikolovAaQV- Al Notes: OfiLukas KovalikScreen shareAl Notes: OffLeave&Suooort Dailv. in 1h7m100% 4• Thu 16 Aor 13:53:31nd Huddle with Vasil Vasiley• Hep L: →0 4 Support Daily « in 1h7m A 5Leave...
|
36688
|
|
36691
|
746
|
0
|
2026-04-16T10:54:03.448251+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336843448_m1.jpg...
|
Slack
|
Slack
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFV faVsco.jsEditViewNavigateCodeLarave PhpStormFileFV faVsco.jsEditViewNavigateCodeLaravelRefactorRunToolsGitWindowHelp(ahl• Support Daily • in 1h 6 m#11894 on JY-18909-automated-reports-ask-jiminny k v100% <478 • Thu 16 Apr 13:54:03QProjectv18› O_tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› D MeetingConsent› C mobile• D onboard› DJ_mocks_› D_tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback› C playlists> D Settings› OJ shared› SoftphoneCoach› [ Svgicons› D Teaminsights> C composablesdirectiveshelpers› CJ localesU AutomatedReportsCommandTestv© ReportController.phpTokenBuilder.php= custom.log= laravel.log4 SF [jiminny@localhost]Vconnect.vue X© TeamSetupController.php xapi.phpSendReportJob.phpVOnboard.vue© AutomatedReportsCommand.php© AskJiminnyReportsController.php& console (PROD]© AutomatedReportsCommandTest.php49© AutomatedReportsSendCommand.php101Team.php138© AutomatedReportsRepository.php162AutomatedReportsService.php163© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php164© CreateActivityLoggedEvent.phpUserPilotActivityListener.php165166© ActivityLogged.php© AutomatedReportsCallbackService.php167© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php168169© AutomatedReportResult.php© AutomatedReport.php17021class TeamSetupController extends Control vA4 ×2 A Y167171public function integrationAppConnect(): JsonResponse104172185->setStatusCode( code:JsonResponse: :HTTP_BAL173186174187175188/** We keep all IntegrationApp providers as "integr‹176189$crmProviderKey = Providers::getTranslatedCrmProvid,177190178191/** @var ?SocialAccount $socialAccount */179192$socialAccount = $user->getSocialAccount($crmProvid 180193if ($socialAccount === null) {181194$this->logger->error('[IntegrationApp] Unexpect 182195'team_id'=> $team->getId(),183196'iapp_provider' = SrealProviderKey,184197'provider' => $crmProviderKey,1851981):186199187200return response()188201->json([189202'success' => false,— 1902031914 HS_local (jiminny@localhost]A console (EU]A console [STAGING]<script>methods: (async integrationApp0nClickO) {1/"externalAppId":"6671653e7e2d642e4e41b0fa",////"authOptionKey":"","createdAt": "2026-04-16T10:04:10.420Z",//"updatedAt" : "2026-04-16T10:04:10.575Z",//"retryAttempts":0,//"isDeactivated": false1/ 3// if (connection && connection.connected === true) {if (connection &ãpgonnection. disconnected === false) €try {const saveRequest = await axios.post("Lapi/v1/integration-app-connect",if (saveRequest.data && saveRequest.data.success === tr/** If all is good refresh the page here */window.location = "/dashboard";return;throw new Error(saveRequest.data.message);} catch (error) {console. log(error);showSnackbarError(normalizeError(error));Vite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams171:48 (12 chars) UTF-8a 2 spaces...
|
NULL
|
1507103730987507526
|
NULL
|
idle
|
ocr
|
NULL
|
PhpStormFileFV faVsco.jsEditViewNavigateCodeLarave PhpStormFileFV faVsco.jsEditViewNavigateCodeLaravelRefactorRunToolsGitWindowHelp(ahl• Support Daily • in 1h 6 m#11894 on JY-18909-automated-reports-ask-jiminny k v100% <478 • Thu 16 Apr 13:54:03QProjectv18› O_tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› D MeetingConsent› C mobile• D onboard› DJ_mocks_› D_tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback› C playlists> D Settings› OJ shared› SoftphoneCoach› [ Svgicons› D Teaminsights> C composablesdirectiveshelpers› CJ localesU AutomatedReportsCommandTestv© ReportController.phpTokenBuilder.php= custom.log= laravel.log4 SF [jiminny@localhost]Vconnect.vue X© TeamSetupController.php xapi.phpSendReportJob.phpVOnboard.vue© AutomatedReportsCommand.php© AskJiminnyReportsController.php& console (PROD]© AutomatedReportsCommandTest.php49© AutomatedReportsSendCommand.php101Team.php138© AutomatedReportsRepository.php162AutomatedReportsService.php163© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php164© CreateActivityLoggedEvent.phpUserPilotActivityListener.php165166© ActivityLogged.php© AutomatedReportsCallbackService.php167© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php168169© AutomatedReportResult.php© AutomatedReport.php17021class TeamSetupController extends Control vA4 ×2 A Y167171public function integrationAppConnect(): JsonResponse104172185->setStatusCode( code:JsonResponse: :HTTP_BAL173186174187175188/** We keep all IntegrationApp providers as "integr‹176189$crmProviderKey = Providers::getTranslatedCrmProvid,177190178191/** @var ?SocialAccount $socialAccount */179192$socialAccount = $user->getSocialAccount($crmProvid 180193if ($socialAccount === null) {181194$this->logger->error('[IntegrationApp] Unexpect 182195'team_id'=> $team->getId(),183196'iapp_provider' = SrealProviderKey,184197'provider' => $crmProviderKey,1851981):186199187200return response()188201->json([189202'success' => false,— 1902031914 HS_local (jiminny@localhost]A console (EU]A console [STAGING]<script>methods: (async integrationApp0nClickO) {1/"externalAppId":"6671653e7e2d642e4e41b0fa",////"authOptionKey":"","createdAt": "2026-04-16T10:04:10.420Z",//"updatedAt" : "2026-04-16T10:04:10.575Z",//"retryAttempts":0,//"isDeactivated": false1/ 3// if (connection && connection.connected === true) {if (connection &ãpgonnection. disconnected === false) €try {const saveRequest = await axios.post("Lapi/v1/integration-app-connect",if (saveRequest.data && saveRequest.data.success === tr/** If all is good refresh the page here */window.location = "/dashboard";return;throw new Error(saveRequest.data.message);} catch (error) {console. log(error);showSnackbarError(normalizeError(error));Vite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams171:48 (12 chars) UTF-8a 2 spaces...
|
36689
|
|
36692
|
747
|
0
|
2026-04-16T10:54:04.832113+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336844832_m2.jpg...
|
Slack
|
Slack
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMsAchivityFilesMoreJiminny ...= Unreadse) Threads DMsAchivityFilesMoreJiminny ...= Unreadse) Threads6d Huddles012• Drafts & sent:8 DirectoriesEh External connections* Starred@ liminny-x-integrati..platform-inner-team(# Channels# ai-chapten# alerts# backends contlicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random#: releases# sofa-ofhce# supportac thank-vous# the people of iimi....Direct messages• Nikolay Nikolovo Vasil.... Galva DimitrovaNikolay Ivanov0 Aneliva Angelova3 Aneliya Angelova, ..Stoyan Tanev5- VegStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova#:AppsTiadeendhd Huddle with Vasil Vasileylobl• Suobort Dailv • in 1h6m100% [45t8• Thu 16 Apr 13:54:047 Huddle with Vasil VasileySearch Jiminny Inc2 0. Nikolay NikolovMessages4P FilesChanges:~ 4 new messages• Return talse to skip remote engagement update with a secondary activity dataComments•jiminny/app|Apr 8th Added by GitHubThursday, April 9thvNikolay Nikolov 10:50 AMOautha mi изгърмя: [URL_WITH_CREDENTIALS] в дооде с негоИзкарва ми бутон за Recoverreno ha ree caraneMessage Nikolay NikolovAaQV- Al Notes: OfiLukas KovalikScreen shareAl Notes: OffLeave&Leave...
|
NULL
|
-4441225177771575139
|
NULL
|
idle
|
ocr
|
NULL
|
DMsAchivityFilesMoreJiminny ...= Unreadse) Threads DMsAchivityFilesMoreJiminny ...= Unreadse) Threads6d Huddles012• Drafts & sent:8 DirectoriesEh External connections* Starred@ liminny-x-integrati..platform-inner-team(# Channels# ai-chapten# alerts# backends contlicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random#: releases# sofa-ofhce# supportac thank-vous# the people of iimi....Direct messages• Nikolay Nikolovo Vasil.... Galva DimitrovaNikolay Ivanov0 Aneliva Angelova3 Aneliya Angelova, ..Stoyan Tanev5- VegStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova#:AppsTiadeendhd Huddle with Vasil Vasileylobl• Suobort Dailv • in 1h6m100% [45t8• Thu 16 Apr 13:54:047 Huddle with Vasil VasileySearch Jiminny Inc2 0. Nikolay NikolovMessages4P FilesChanges:~ 4 new messages• Return talse to skip remote engagement update with a secondary activity dataComments•jiminny/app|Apr 8th Added by GitHubThursday, April 9thvNikolay Nikolov 10:50 AMOautha mi изгърмя: [URL_WITH_CREDENTIALS] в дооде с негоИзкарва ми бутон за Recoverreno ha ree caraneMessage Nikolay NikolovAaQV- Al Notes: OfiLukas KovalikScreen shareAl Notes: OffLeave&Leave...
|
NULL
|
|
36766
|
NULL
|
0
|
2026-04-16T10:58:52.477156+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337132477_m1.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/onboard/Onboard.vue...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.054166667,"top":0.027777778,"width":0.08055556,"height":0.035555556},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.13472222,"top":0.027777778,"width":0.26597223,"height":0.035555556},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.6180556,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.65,"top":0.027777778,"width":0.1736111,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.82361114,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.8472222,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.87083334,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.9291667,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9527778,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9763889,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.5076389,"top":0.45,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.52847224,"top":0.45,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.5486111,"top":0.44777778,"width":0.015277778,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5638889,"top":0.44777778,"width":0.014583333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.5875,"top":0.18111111,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.61388886,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"disc","depth":4,"bounds":{"left":0.63680553,"top":0.18,"width":0.09166667,"height":0.022222223},"value":"disc","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.74722224,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.76805556,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.7861111,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.8041667,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.83263886,"top":0.17888889,"width":0.05347222,"height":0.024444444},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.88611114,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.90416664,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.9222222,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.90625,"top":0.2211111,"width":0.015277778,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.92569447,"top":0.2211111,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9458333,"top":0.2188889,"width":0.015277778,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.9611111,"top":0.2188889,"width":0.014583333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","depth":4,"value":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
9101995465193506738
|
756119827378317270
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>...
|
36764
|
|
36767
|
NULL
|
0
|
2026-04-16T10:58:53.824509+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337133824_m2.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/onboard/Onboard.vue...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.26367188,"top":1.0,"width":0.0453125,"height":-0.017361164},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.30898437,"top":1.0,"width":0.14960937,"height":-0.017361164},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.58085936,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.59882814,"top":1.0,"width":0.09765625,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.6964844,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.7097656,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.7230469,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.7558594,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.7691406,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.7824219,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"disc","depth":4,"value":"disc","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","depth":4,"value":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24726562,"top":1.0,"width":0.028515626,"height":-0.041666627},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5404656095542864604
|
756119818788382679
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
36765
|
|
36768
|
748
|
0
|
2026-04-16T10:58:55.518307+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337135518_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCode LaravelRefactorRu PhpStormFileEditViewNavigateCode LaravelRefactorRunToolsGitWindowHelpFV faVsco.jsv#11894 on JY-18909-automated-reports-ask-jiminny k vProject v18› _tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› D MeetingConsent› O mobile• D onboard› DJ_mocks_› D__tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback> C playlistsSettings› DJ shared› SoftphoneCoach› [ Svgicons› D Teaminsights> C composablesdirectivesD helpers> O localesSupport Daily - in 1h 2 mL AutomatedReportsCommandTestv100% С8• Thu 16 Apr 13:58:55Q© ReportController.phpTokenBuilder.php= custom.log= laravel.log4 SF [jiminny@localhost]V connect.vue© TeamSetupController.php xapi.phpSendReportJob.phpOnboard.vue XA HS_local (jiminny@localhost]A console (EU]© AutomatedReportsCommand.php© AskJiminnyReportsController.php& console (PROD]& console [STAGING]© AutomatedReportsCommandTest.phpQ-discCcW1/1© AutomatedReportsSendCommand.phpTeam.php311© AutomatedReportsRepository.phpAutomatedReportsService.php379© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php492493© CreateActivityLoggedEvent.php© UserPilotActivityListener.php494© ActivityLogged.php© AutomatedReportsCallbackService.php495496© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php497© AutomatedReportResult.php© AutomatedReport.php49821167104185186187188189190191192193194195196197198199200201202203class TeamSetupController extends Control vA4 ×2 A Y499public function integrationAppConnect(): JsonResponse500501->setStatusCode( code:JsonResponse: :HTTP_BAL502503504/** We keep all IntegrationApp providers as "integri505$crmProviderKey = Providers::getTranslatedCrmProvidi506507/** @var ?SocialAccount $socialAccount */508$socialAccount = $user->getSocialAccount($crmProvidr509if ($socialAccount === null) {510$this->logger->error('[IntegrationApp] Unexpecte511'team_id'=> $team->getId(),512'iapp_provider' = SrealProviderKey,513'provider' => $crmProviderKey,1):514515= 516return response()->json(l517518'success' => false,519500<script>setup() {):XIX9AY/** BEGIN: IntegrationApp related functionality */const crmToken = ref(null);const crmConnectIntegrationApp = async function O) {const integrationApp = new IntegrationAppClient({token: crmToken.value,7);const connection = await integrationApp.integration(crmDetails.name)-openNewConnection({showPoweredBy: false,allowMultipleConnections: false,7):// if (Iconnection || connection.connected === false) {if (éconnection I| connection.disgonnected =e= true) &showSnackbarError("A connection with your CRM could not be established"?):return;try {const saveRequest = await axios.post("Zapi/v1/integrationVite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams511:16UTF-8Co 2 spaces...
|
NULL
|
-4936365545925968693
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCode LaravelRefactorRu PhpStormFileEditViewNavigateCode LaravelRefactorRunToolsGitWindowHelpFV faVsco.jsv#11894 on JY-18909-automated-reports-ask-jiminny k vProject v18› _tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› D MeetingConsent› O mobile• D onboard› DJ_mocks_› D__tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback> C playlistsSettings› DJ shared› SoftphoneCoach› [ Svgicons› D Teaminsights> C composablesdirectivesD helpers> O localesSupport Daily - in 1h 2 mL AutomatedReportsCommandTestv100% С8• Thu 16 Apr 13:58:55Q© ReportController.phpTokenBuilder.php= custom.log= laravel.log4 SF [jiminny@localhost]V connect.vue© TeamSetupController.php xapi.phpSendReportJob.phpOnboard.vue XA HS_local (jiminny@localhost]A console (EU]© AutomatedReportsCommand.php© AskJiminnyReportsController.php& console (PROD]& console [STAGING]© AutomatedReportsCommandTest.phpQ-discCcW1/1© AutomatedReportsSendCommand.phpTeam.php311© AutomatedReportsRepository.phpAutomatedReportsService.php379© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php492493© CreateActivityLoggedEvent.php© UserPilotActivityListener.php494© ActivityLogged.php© AutomatedReportsCallbackService.php495496© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php497© AutomatedReportResult.php© AutomatedReport.php49821167104185186187188189190191192193194195196197198199200201202203class TeamSetupController extends Control vA4 ×2 A Y499public function integrationAppConnect(): JsonResponse500501->setStatusCode( code:JsonResponse: :HTTP_BAL502503504/** We keep all IntegrationApp providers as "integri505$crmProviderKey = Providers::getTranslatedCrmProvidi506507/** @var ?SocialAccount $socialAccount */508$socialAccount = $user->getSocialAccount($crmProvidr509if ($socialAccount === null) {510$this->logger->error('[IntegrationApp] Unexpecte511'team_id'=> $team->getId(),512'iapp_provider' = SrealProviderKey,513'provider' => $crmProviderKey,1):514515= 516return response()->json(l517518'success' => false,519500<script>setup() {):XIX9AY/** BEGIN: IntegrationApp related functionality */const crmToken = ref(null);const crmConnectIntegrationApp = async function O) {const integrationApp = new IntegrationAppClient({token: crmToken.value,7);const connection = await integrationApp.integration(crmDetails.name)-openNewConnection({showPoweredBy: false,allowMultipleConnections: false,7):// if (Iconnection || connection.connected === false) {if (éconnection I| connection.disgonnected =e= true) &showSnackbarError("A connection with your CRM could not be established"?):return;try {const saveRequest = await axios.post("Zapi/v1/integrationVite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams511:16UTF-8Co 2 spaces...
|
NULL
|
|
36769
|
749
|
0
|
2026-04-16T10:58:55.509158+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337135509_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Integration-appIntegration-aoo"Private vL Luka Integration-appIntegration-aoo"Private vL Lukas Kovalik's ...searchn Homee Notion AlInboxlLioraryPecente5 Integration-appJira ticketWork• Jira ticket=View or sorint17 Daily+ Sprint5 Stefka 1-1= TododevEvaluation7 10do*Quick NoteKnowledge17 DailyWork Knowledge= Redis opportunity syncЭ ЖеланияFavorites= YEAR 20269 App replacement= Read later9 LOGS2 Report 20249 VideosTodo19 Test= DailyAgents Beta— New adentWorksnace*Quick Note• WorkJira ticketE View of Sprint17 DailyPlanSprintV- Al Notes: OfiDanifl Jun 4th. 2025 at. 2:23@Stetka Stovanova we cit's too flaky (companiesworin tryine to nenciso in this case somethinIn the toreseeable tuturet vott have an idea tor haT Bonan Sun 1th, 2025 at,@sterka stovanova alWe lust.released 21a102It should make connech.Let me know ir tnis workCleanShot 2025.06-11 at 12Connection Uil*2 мe.Lukas KovalikScreen share• 0:16.Generate transcript10 external people are from lReply…_ Also send to @ jiminny-x-integiPress 'space' for Al or" for comr&Suooort Dailv . in 1h2mA100% C• Thu 16 Apr 13:58:55nd Huddle with Vasil Vasilevindow Hep L: 0 Support Daily « in 1h2m A 5Leave...
|
NULL
|
3103204319885598073
|
NULL
|
click
|
ocr
|
NULL
|
Integration-appIntegration-aoo"Private vL Luka Integration-appIntegration-aoo"Private vL Lukas Kovalik's ...searchn Homee Notion AlInboxlLioraryPecente5 Integration-appJira ticketWork• Jira ticket=View or sorint17 Daily+ Sprint5 Stefka 1-1= TododevEvaluation7 10do*Quick NoteKnowledge17 DailyWork Knowledge= Redis opportunity syncЭ ЖеланияFavorites= YEAR 20269 App replacement= Read later9 LOGS2 Report 20249 VideosTodo19 Test= DailyAgents Beta— New adentWorksnace*Quick Note• WorkJira ticketE View of Sprint17 DailyPlanSprintV- Al Notes: OfiDanifl Jun 4th. 2025 at. 2:23@Stetka Stovanova we cit's too flaky (companiesworin tryine to nenciso in this case somethinIn the toreseeable tuturet vott have an idea tor haT Bonan Sun 1th, 2025 at,@sterka stovanova alWe lust.released 21a102It should make connech.Let me know ir tnis workCleanShot 2025.06-11 at 12Connection Uil*2 мe.Lukas KovalikScreen share• 0:16.Generate transcript10 external people are from lReply…_ Also send to @ jiminny-x-integiPress 'space' for Al or" for comr&Suooort Dailv . in 1h2mA100% C• Thu 16 Apr 13:58:55nd Huddle with Vasil Vasilevindow Hep L: 0 Support Daily « in 1h2m A 5Leave...
|
NULL
|
|
36851
|
NULL
|
0
|
2026-04-16T11:03:43.657656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337423657_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6]Support Daily - in 57 m• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kBgzip:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 14:03:43181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
NULL
|
3379791640942853751
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6]Support Daily - in 57 m• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kBgzip:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 14:03:43181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36849
|
|
36855
|
NULL
|
0
|
2026-04-16T11:03:53.152658+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337433152_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence(6) Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembraneJiminny • Memorane( Fix an autocomplete mistake that sSumfonv|Component\Debua\ExcerApp "Loho CRM" • Kavita • Membra8Jiminny+ New TabNavigateD10$WindowHelp= app.jiminny.eu/dashboardMMMy RecordingsTeam RecordingsUnknown Customer MNotetaker added bv Martin Petkov5 Feb, 9:19 AMUnknown Customer WNotetaker added by Martin PetkovSreb. 9:13AMUnknown Customer MNotetaker added by Martin Petkov21 Jan, 5:55 PMUnknown Customer M~Notetaker added bv Martin Petkovi19 Jan, 3:55 PMUnknown Customer MNotetaker added by Ilian Kyuchukov9 Jan, 3:08 PMUnknown Customer Maudio-in-spanish-1-channel10 Dec, 2025, 11:06 AMUnknown Customer W2025-11-07-notetaker-added-on-04-05-24-at-1057/NOV. 2025.4:28 PMIUnknown Customer MNotetaker added by llian Kyuchukov31 Oct, 2025, 3:09 PMUnknown Customer M~ancrolc recorcing AA8 Oct, 2025, 9:43 AMUnknown Customer W2025-09-29-382949-bc-steph-dunkley-joined1 Oct, 2025, 8:28 AMUnknown Customer M7e9efee0-2801-4d78-b7e0-c86ea946884423 Sep, 2025, 11:12 AMC40MOjSupport Daily • in 57m100% C•8 Thu 16 Apr 14:03:52Everyone's RecordingsTrending this monthSort by: Most playedLive FeedScheduleThis WeekUnknown Customer MDaily -Processingimer 0dTeam ScheduleMNo MeetingsAdelina Petrova listened to call 6dactivity with Joshua Christopherđ Held: 21 Oct, 2024, 2:59 PM|Adelina Petrova listened to call 60activity with In-Flight Crew Connectionsđ Held: 18 Aug, 2025, 4:28 PM|Martin Petkov listened to call 6дactivity with unknown customerđ Held: 5 Feb, 9:16 AM|Integration Account listened to call 6dactiviry with unknown customenHeld: 10 Dec, 2025, 10:57 AMSteliyan Georgiev listened to call 6dactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PM|Stoyan Tomov listened to call 6đactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PMNikolay Ivanov listened to call 6дactivity with unknown customerHeld: 22 Jul, 2025, 11:54 AM|Mobile Automation listened to call 6dactivity with Olha Denesiukđ Held: 19 Aug, 2025, 4:28 PMMobile Automation listened to call 6дFeedback Call with unknown customerđ Held: 19 May, 2025, 12:24 AM|Ở Duration: 41mỞ Duration: 30mÔ Duration: 3mÔ Duration: 8mDuration: 30mỞ Duration: 30mỞ Duration: 2mỞ Duration: 30mỞ Duration: 1h6 Mar. 2:23 PMI≥ Value: $0JFeh. 7:39 PMIValue: $7,9685 Feb, 9:22 AMÈ Value: $07 Jan, 2:55 PM≥ Value: $08 Sep, 2025, 12:28 PM§ Value: $08 Sep, 2025, 12:22 PM≤, Value: $025 Aug, 2025, 2:56 PME Value: $021 Aug, 2025, 3:06 PM§ Value: $021 Aug, 2025, 3:05 PM§ Value: $0...
|
NULL
|
-3608480734667456000
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence(6) Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembraneJiminny • Memorane( Fix an autocomplete mistake that sSumfonv|Component\Debua\ExcerApp "Loho CRM" • Kavita • Membra8Jiminny+ New TabNavigateD10$WindowHelp= app.jiminny.eu/dashboardMMMy RecordingsTeam RecordingsUnknown Customer MNotetaker added bv Martin Petkov5 Feb, 9:19 AMUnknown Customer WNotetaker added by Martin PetkovSreb. 9:13AMUnknown Customer MNotetaker added by Martin Petkov21 Jan, 5:55 PMUnknown Customer M~Notetaker added bv Martin Petkovi19 Jan, 3:55 PMUnknown Customer MNotetaker added by Ilian Kyuchukov9 Jan, 3:08 PMUnknown Customer Maudio-in-spanish-1-channel10 Dec, 2025, 11:06 AMUnknown Customer W2025-11-07-notetaker-added-on-04-05-24-at-1057/NOV. 2025.4:28 PMIUnknown Customer MNotetaker added by llian Kyuchukov31 Oct, 2025, 3:09 PMUnknown Customer M~ancrolc recorcing AA8 Oct, 2025, 9:43 AMUnknown Customer W2025-09-29-382949-bc-steph-dunkley-joined1 Oct, 2025, 8:28 AMUnknown Customer M7e9efee0-2801-4d78-b7e0-c86ea946884423 Sep, 2025, 11:12 AMC40MOjSupport Daily • in 57m100% C•8 Thu 16 Apr 14:03:52Everyone's RecordingsTrending this monthSort by: Most playedLive FeedScheduleThis WeekUnknown Customer MDaily -Processingimer 0dTeam ScheduleMNo MeetingsAdelina Petrova listened to call 6dactivity with Joshua Christopherđ Held: 21 Oct, 2024, 2:59 PM|Adelina Petrova listened to call 60activity with In-Flight Crew Connectionsđ Held: 18 Aug, 2025, 4:28 PM|Martin Petkov listened to call 6дactivity with unknown customerđ Held: 5 Feb, 9:16 AM|Integration Account listened to call 6dactiviry with unknown customenHeld: 10 Dec, 2025, 10:57 AMSteliyan Georgiev listened to call 6dactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PM|Stoyan Tomov listened to call 6đactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PMNikolay Ivanov listened to call 6дactivity with unknown customerHeld: 22 Jul, 2025, 11:54 AM|Mobile Automation listened to call 6dactivity with Olha Denesiukđ Held: 19 Aug, 2025, 4:28 PMMobile Automation listened to call 6дFeedback Call with unknown customerđ Held: 19 May, 2025, 12:24 AM|Ở Duration: 41mỞ Duration: 30mÔ Duration: 3mÔ Duration: 8mDuration: 30mỞ Duration: 30mỞ Duration: 2mỞ Duration: 30mỞ Duration: 1h6 Mar. 2:23 PMI≥ Value: $0JFeh. 7:39 PMIValue: $7,9685 Feb, 9:22 AMÈ Value: $07 Jan, 2:55 PM≥ Value: $08 Sep, 2025, 12:28 PM§ Value: $08 Sep, 2025, 12:22 PM≤, Value: $025 Aug, 2025, 2:56 PME Value: $021 Aug, 2025, 3:06 PM§ Value: $021 Aug, 2025, 3:05 PM§ Value: $0...
|
36854
|
|
36856
|
750
|
0
|
2026-04-16T11:04:15.780235+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337455780_m1.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.jiminny.eu/dashboard
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
Jiminny
Jiminny
Close tab...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,561) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Google","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny · Membrane","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":5,"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}]...
|
-7932677837572689817
|
6213656732345631449
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,561) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
Jiminny
Jiminny
Close tab...
|
NULL
|
|
36858
|
751
|
0
|
2026-04-16T11:04:23.436875+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337463436_m2.jpg...
|
Slack
|
Stoyan Tanev (DM) - Jiminny Inc - 2 new items - Sl Stoyan Tanev (DM) - Jiminny Inc - 2 new items - Slack...
|
1
|
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...
|
[{"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"}]...
|
6572305436755728115
|
-3645637876831078227
|
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
+SackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...2 Stoyan TanevDMs= Unreads@ Threads6 HuddlesDrafts & sent8 Directories• Messagest Add canvasAchivityEh External connectionsFiles# Starred& jiminny-x-integrati...platform-inner-teamMore# Channels# ai-chapter# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messagesio Stoyan TanevP. Nikolay Nikolov€. Vasil VasilevGalva Dimitrova. Nikolay Ivanov®. Aneliya Angelova3 Aneliya Angelova, ...P. Ves&. Steliyan Georgiev3 Adelina Petrova, lli...(Q. Adelina PetrovaFilesThursday, March 26th~Stoyan Tanev 1:47 PMЗдрасти, да те попитам за този тикет: https://jiminny.atlassian.net/browse/SRD-6728SRD-6728 Opportunities are not synced properly from HubspotStatus: Ready for customer* Type: BugLK Assignee: Lukas KovalikAssigtChange status*+ Al SummariseMore actions...Added by Jira Cloudтова вече е оправено, или ше тояова да се синква на всеки нов клиентLukas Kovalk 1:49 PMздрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусневсеки пьт когато си сменят avout само се оправяStoyan Tanev 1:50 PMонеже често го забелязвам на нови клинети, ама прели ми минаваше опп синка.сега нещо не ми върви, бие ми мемори грешка и това еLukas Kovalik 1:50 PMако искаш мануално трябва да добавиш --strategy lastModifiedV1че нали сменихме default да е през webhooks за HSиначе в тикет споменахте за Memory Usage Errorаз не уопах ла виля такава посшкаако ти се случи пак, снимай ми я моля те.srovaltaley 1.2rMДобре, аз ползвам тази команда php artisan crm:sync-opportunity --teamId --fromLukas Kovalik 1:53 PMда и добави стратегия ако искаш на задYesterday~Stoyan Tanev 1:24 PMЗдрасти, имаме ли логове от конектвания на интеграция?понеже сега бях на среща с клиент и тръгнахме да вързваме Зохо, и просто се рефрешва страницатаи пак ни воьша в началотоhttps://app.jiminny.com/export/wmbfq6UI0HluXIRatejU6t6PHzAhyVUdNiObCr2tOHy6fLwooNJTALukas Kovalik 1:33 PMздрасти, трябва да го прегледам, но почти съм сигурен че не е при нас, ако се наложи ще пиша на intergration-appможе ли да отвориш тикет?Stoyan Tanev 1:34 PMДа пускам гоToday •Lukas Kovalk 2.02 PMЗлрасти#: AppsJira CloudToastMessage Stoyan Tanev40 ll [ Support Daily • in 56 m100% C8Thu 16 Apr 14:04:23Sort by: Most playedLive FeedAPUnknown Customer MDaily -Processingimer 0dTeam ScheduleMNo MeetingsAdelina Petrova listened to call 6dactivity with Joshua Christopherđ Held: 21 Oct, 2024, 2:59 PM|Adelina Petrova listened to call 60activity with In-Flight Crew Connectionsđ Held: 18 Aug, 2025, 4:28 PM|Martin Petkov listened to call 6дactivity with unknown customerđ Held: 5 Feb, 9:16 AM|Integration Account listened to call 6dactiviry with unknown customerHeld: 10 Dec, 2025, 10:57 AMSteliyan Georgiev listened to call 6dactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PM|Stoyan Tomov listened to call 6đactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PMNikolay Ivanov listened to call 6дactivity with unknown customerHeld: 22 Jul, 2025, 11:54 AM|Mobile Automation listened to call 6dactivity with Olha Denesiukđ Held: 19 Aug, 2025, 4:28 PMMobile Automation listened to call 6дFeedback Call with unknown customerđ Held: 19 May, 2025, 12:24 AM|Ở Duration: 41mỞ Duration: 30mÔ Duration: 3mÔ Duration: 8mDuration: 30mỞ Duration: 30mỞ Duration: 2mỞ Duration: 30mỞ Duration: 1h6 Mar. 2:23 PMI≥ Value: $0JFeh. 7:39 PMIValue: $7,9685 Feb, 9:22 AMÈ Value: $07 Jan, 2:55 PM≥ Value: $08 Sep, 2025, 12:28 PM§ Value: $08 Sep, 2025, 12:22 PM≤, Value: $025 Aug, 2025, 2:56 PME Value: $021 Aug, 2025, 3:06 PM§ Value: $021 Aug, 2025, 3:05 PMÈ Value: $0...
|
NULL
|
|
36926
|
NULL
|
0
|
2026-04-16T11:09:12.463806+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337752463_m1.jpg...
|
Slack
|
Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Sl Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Stoyan Tanev
Mar 9th at 11:38:15 AM
11:38 AM
Здрасти, чудех се дали знаеш как мапваме активитита в SF аппа?
Lukas Kovalik
Mar 9th at 11:38:47 AM
11:38 AM
здрасти
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:07 PM
1:50
всеки път когато си сменят layout само се оправя
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:38:15 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:38 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Здрасти, чудех се дали знаеш как мапваме активитита в SF аппа?","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:38:47 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:38 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:39:22 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:39","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"през customer-api доколкото знам","depth":25,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:05 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.","depth":25,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:25 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Може би не зададох правилно въпроса","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:17 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"тука не знам, питай Тошко, той се занимаваше с него","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with raised hands emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:31 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Мерси много","depth":25,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 2:55:22 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:55 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа \"Opportunity/Lead/Contact/Account\", но не съм сигурен дали е one to one или one to many.","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:30 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Здрасти, да те попитам за този тикет:","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":26,"role_description":"text"},{"role":"AXLink","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"Status:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Ready for customer","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Type:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Bug","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Assignee:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Lukas","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Kovalik","depth":26,"role_description":"text"},{"role":"AXButton","text":"Assign","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Assign","depth":28,"role_description":"text"},{"role":"AXButton","text":"Change status","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Change status","depth":28,"role_description":"text"},{"role":"AXButton","text":"sparkles emoji AI Summarise","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI Summarise","depth":28,"role_description":"text"},{"role":"AXComboBox","text":"More actions...","depth":27,"placeholder":"More actions...","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Added by","depth":26,"role_description":"text"},{"role":"AXLink","text":"Jira Cloud","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jira Cloud","depth":27,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:48 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"това вече е оправено, или ще трябва да се синква на всеки нов клиент","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:49:46 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:49 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 26th at 1:50:07 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"всеки път когато си сменят layout само се оправя","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7814019983244247979
|
-4238497129897878523
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Stoyan Tanev
Mar 9th at 11:38:15 AM
11:38 AM
Здрасти, чудех се дали знаеш как мапваме активитита в SF аппа?
Lukas Kovalik
Mar 9th at 11:38:47 AM
11:38 AM
здрасти
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:07 PM
1:50
всеки път когато си сменят layout само се оправя
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahlSupport Daily • in 51 mБг)100% C78Thu 16 Apr 14:09:11• 0ec2-user@ip-10-20-6-111:~DOCKER2-981DEV (docker)H82APP (-zsh)83ec2-user@ip-10-.. 884-zsh• 85-zsh86-zsh'-*7-* Unable to a...ec2-user@ip-10-... *9L3Vzci1kZWwiLCJLdmVudExLYWREZWxLdGVkIjo1L3dlYmhvb2svaW50YXBwL2xkLWRLbCIsImV2zWS0RGVhbERLbGV0ZWQ101Lvd2ViaG9vay9pbnRhcHAvb3BwLWRLbCIsImV2zW50QWNjb3VudENyZWF0ZWQ101Ivd2ViaG9vay9pbnRhcHAvYWNjLWFkZCIsImV2ZW50QWNjb3VudFVwZGF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvYWNjLXVwZCIsImV2ZW50Q29udGFjdENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvY250LWFkZCIsImV2ZW50Q29udGFjdFVwZGF0ZWQiOiIvd2ViaG9vay9pbnRhcHAvY250LXVwZCIsImV2ZW50UHJvZmlsZUNyZWFOZWQi0iIvd2ViaG9vay9pbnRhcHAvdXNyLWFkZCIsImV2ZW50UHJvZmlsZVVwZGF0ZWQi0i[vd2ViaG9vay9pbnRhcHAvdXNyLXVwZCIsImV2zW50TGVhZENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvbGQtYWRkIiwiZXZlbnRMZWFkVXBkYXR1ZCI6Ii93ZWJob29rL2ludGFwcC9sZC11cGQiLCJldmVudERlYWxDcmVhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC1hZGQiLCJldmVudER1YWxVcGRhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC11cGQifX0.vozy2irRr71FoTCe23TiWjUHDiRJXu90jw2Rr2Yuy2c",#provider_refresh_token: null,expires: 1776421067,refresh_token_expires: null,provider:"integration-app",state: "full-refresh",auth_scope: null,retry_after: null,created_at:"2026-04-15 10:06:30"updated_at:"2026-04-16 10:17:47",#provider_user_token_encrypted: "eyJpdiI6Implb01VZkc3UmlxTDRPcWlaaTZQblE9PSIsInZhbHV1IjoiT1VmSUJodGxiQ1NNS31xWHNtRDU0K1R40WpxQi8xNnZHaXdyS2RHMW5GaDMrQzBPUXFodnhRNm0wam40TittRVVEUGRjY1FKWXNOV2NBSnVWc1RzRkRV0VgvdURJaUU2amloSzY5Q010d25jem04bGoyZUxUaGxJMTFTR2LvanJKV0M0cHpwK21PQXZqSVLPaUJ1ZG020XAxT2tzZmdQbzU4My91UGQ5NULGdkt6b1IwNGJwcUFoQLpHMVdNWj LOWU9SaUc1U2h0TzM2cWRNd0pGTT1QazJ2ZWtQY05sRFA0L29MeG1MekdhOGRaUD14MD1LcmRTNm1CQ1pjMDBYcXgrME1PQi9NL3QxK2VIM3U2b1hrWGxra2E0NEtKRjRyZHFrMjExWLdsYy90V2Q4Vkh6cXRxRTU4eWZRMH1jY1BBbU5LMUk10TJvN2pLU2V0QUtEZjhST0V1Y3ZicjRmY2JXWWVjTlF2SVBCV3VBR3dManM0bFhYeE03Q3dERitGM0p20HNPcHBDS3o2M1hUMWpLLy8rdFRUeUVhZTltMnNKcnJwcVLEL283RGxKYk1NazdGMFhFWmRXVWsvOHppTHRXdmJxSkRHQmhGeTFJL1gxWjFmRk4yMzB1TjFURVU1TGpvZEwzV2R1YXN2aXphRUs2TFVh0FNkRmtrUWdRbi9RLzZSZnRHai8vcVZFWkRGbzArU0U1YjQyV1I0MD1rZlF2alhhQ1ZHZ09vTXZZVOZDWmZhQSthMG50VjMvTkZt0HVtZVpLVmpPcUJCbzdjRHF2QnJRSUNYTkF3aVNwRmtsYXg1TmFn0CthcU9VQUorTkppZWZ2NEZKc0xEQitIdFZ4MUJubGJiTUtCbzlQMWo1VncxT0toWTVXQXLGNysxTnYrTTM0bFhtZzdBRDMyeHp3NmRUVEJ1Ym0zUDZKbExBWHdLU1VjNEptcUpjTXLick1ЗNms5bFlHQU1PWHVXRHpZMU1URG55dnFBbG0zaWEvUTlEMjJN0XhzNFpwYnZ5Q2RTTWJpV11NYVRXNm5hYWo2REV1bGR2bzRwK3FTаzFCMjV0MHhPWmV1NU14d3Y0WWk0V2N2dXQyK0ZCSiszZmZleElvVWx6V0tUdU9FaUJYcXdCaUs1RzNmRmZWQlc1dXAyMjgvSWNsakEyY1BBUnhmK1NzNDFmUGU5WWVHS25GZ01wSTZ6L3I0RjQyRnlVNXRsWUtlaTY4SkdTYzdoMkhsZF1KT0N5YXZrdXhDZmRIS285WjQwL21FUmsxdlV2dDYwMk9uUU5XU®VaWmJabThFR1BYR1dSQlhKRUhNWmlPWUpJaHhyU00wWEhWbWxNRWdmOWxySGVML2ZOdVNINTg0T0RQditFaXdSNTJtYVhSeHNkY3I0ajV0cnltWjhOYW1SU1VINE5PbXN4Z1JpRUpsTCtFdW1zMVFKclJTRHRtSWFBWVg5a2VRMmt1aC9xdFRCb1doT301c2dBRXJzTVhmemViNmE0VkJmK2M5ejAwNkZvWkFockdub3RFRlpzMHE0T2ZmeS9kbW45Qll1Nmt4VЗNNbHlZOVdSK2dmUFM2Y®h5bGwyeFNT0HBtT0tGWndZa®dGajRMQUdYUmNaYVp@QUQ×SStWU1Y3ZmVmV@xlZ081MWlubmtncXIrTlVIVzg1em95WGo0WjhCNmFtQ0FPc1ZmMzdtSUVIVy8vR3QyM2tDL1VyN01ETHVoaHFUcjdic1NPQm45R3F3RU1SU3d5bWh1V1pqa1oxemhhKzJWemVDdmdsbVU5VWL6T01jNkE1WnhSdzhybWQ1NTFGYkFmbldta0JXNDhmY2NiSHp1TzhEUGFDSWxIdWJmbFJvQTN3cGZFZLpwOHZ5L01xYUFBUURCSWx10XpISEt0SVd3NXNpdnpZZJLnNWx1M0k0a25VNnJHYVZhcDMwM1YvNjg3ZDdJQzdZb0pLL2NFdmt1NnBodjdW0GL6cVI1UEYxbGR4WLNSTVpycDd1Z016SkM5USt2ckZmVUtmNXBnZmZDZmZLU1kгK1I5N®04Q0d0MVYvаTRKZ1RUbUJScHdpSlRHTЗ1EZTJILytwSmFHZ1pKMHFYRDN®b1NKUmlSL1dKaUZ1VХN2K2E5Q3NndmU®YTlBbGtZZ1N3czk®WmQ1MFNSdXhaOHRLSGN5dXQ4RkU4dHBsZHovRHlJSkVtTlcwNVJYaGtFMLBIMUpYNTLmVHFjejJ5M2dlUFM4YUg1U1gzLzMzZTZMd2VTZldtdWQzVDZ5Z1VTdG41L2RGTXZZUGgrT2xLTFFzV205T1RGd3NMaGVXem50MnB5dnNtRDBwL1QyWGR4UT09IiwibWFjIjoiZmYwNDk3ZjYzOGRmYTFLOWUO0Tg2ZTk5MWiYjEzNDY2YWNm0TI0YTNjMzA1ZjU®MmM4MTY2MZU3YmV1ZDdhNSIsInRhZy[6[¡J9",#provider_refresh_token_encrypted: null,#encryption_key: b"\x01\x02\x03\0x"g3R7\x15&p\f Q\x7Fy\xOFLÎ?Ì, {Ïx°óMRª'|\x13§|\x01Í%(~Ñ-À19Li{@E§»\0\0\On01\x06\t*tHt=\r\x01\x07\x06_0]\x02\x01\00x x061t*THt÷\r\x01\x07\x010\x1E\x06\t'TH\x01e\x03\x04\x01.0\x11\x04\fViS\x17.\x04T;= 1_|x02\x01\x10E+h°-Áu1üT-nÂ\x1E5÷\x16 11·\x1C}7..Œ!Х -2=⅕ÝâùÊí\x11b~UÍÚ",sociable_type: "user"181}Ssa->state ='connected';"connected"> Ssa->saveO);[2026-04-16 11:07:00] production.INFO: [SocialAccountObserver] Saving model {"correlation_id":"f0c27b9c-124b-4113-ba69-6032b77e1f59","trace_id": "1f319797-bc16-43f3-95f2-81fc927b0482"}= true> 1...
|
NULL
|
|
36927
|
NULL
|
0
|
2026-04-16T11:09:13.599756+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337753599_m2.jpg...
|
Slack
|
Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Sl Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves...
|
[{"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":21,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.040234376,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.11679687,"top":0.8055556,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.11992188,"top":0.8055556,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.13632813,"top":0.8208333,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.13632813,"top":0.8208333,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"bounds":{"left":0.07304688,"top":0.825,"width":0.009375,"height":0.0125},"role_description":"text"}]...
|
-5726718299286692441
|
-1770761777183975383
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
+SackFileEditViewJiminny ...DMs= Unreads@ Threads6 HuddlesDrafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...platform-inner-teamMore# Channels# ai-chapter# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# support# thank-yous# the people of iimi....Direct messagesio Stoyan TanevP. Nikolay Nikolov€. Vasil Vasilev®. Galya Dimitrova E. Nikolay Ivanov®. Aneliya Angelova3 Aneliya Angelova, ...P. Ves&. Steliyan Georgiev3 Adelina Petrova, lli...(Q. Adelina Petrova#: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc2 Stoyan Tanev• Messagest Add canvasFilesAdded by Jira CloudThursday, March 26th~пова вече с опоавено, или ше толова ла се синква на всеки ноз клиеніLukas Kovalk 1:49 PMздрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусневсскипь костоси сменят avоuт caмо сe опоaвяSrovan aney 1.50 PMонеже често о заоелязвам на нови клинети, ама посли ми минаваше опл синкасега нешо не ми вьови, оие ми мемори грешка и това еLukas Kovalk 1.50 PMако искаш мануално трябва да добавиш --strategy lastModifiedче нали сменихме default да е през webhooks за HSиначе в тикет споменахте за Memory Usage Erronаз не успах да видя такава грешкаако ти се случи пак, снимаи ми я моля теStoyan Tanev 1:52 PMДобре, аз ползвам тази команда php artisan crm: sync-opportunity --teamId --fromLukas Kovalik 1:53 PMда и добави стратегия ако искаш на задYesterday "Stoyan Tanev 1:24 PMЗдрасти, имаме ли логове от конектвания на интеграция?понеже сега бях на среща с клиент и тръгнахме да вързваме Зохо, и просто се рефрешва страницатаи шак пи воbша в началогоhttps://app.jiminny.com/export/wmbfq6UI0HluXIRatejU6t6PHzAhyVUdNiObCr2tOHy6fLwooNJTALukas Kovalik 1:33 PMздрасти, трябва да го прегледам, но почти съм сигурен че не е при нас, ако се наложи ще пиша на intergration-appможе ли да отвориш тикет?Stoyan Tanev 1:34 PMДа пускам гоToday ~Lukas Kovallik 2:02 PMЗлрaстиsrovalitaney 204 PMЗдравейLukas Kovallik 2:08 PMпроолемыг от вчеда се оказа козметиченBee пaк rоимаговорих със integration-app и ще видим дали си го оправят те или пак при насинтеграция работи само не ни казват че еAaurrently impersonating ITSD Apps Admin <)Q‹ 40loll• j Support Daily • in 51m100% 1zThu 16 Apr 14:09:13a Log2 Share Vchkeiten einerverlangt.nung zuDetails der00:00/56:31WEIROITI0 TM IU TOCOD BU DOD I1DE HIEDID TI OID& EID D OG OIDICED INHIIT CD 00D I ED TONI DI LED DOII OO CON OI O TO I CHODO OUI TIOI DON E• CoachingCommentsFrameworkFocusWrite CommentBe first to comment and help your teamShift + Return to add a new line...
|
NULL
|
|
36928
|
752
|
0
|
2026-04-16T11:09:43.731516+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337783731_m1.jpg...
|
Slack
|
Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Sl Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Mar 9th at 11:38:47 AM
11:38 AM
здрасти
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:07 PM
1:50...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:38:47 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:38 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:39:22 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:39","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"през customer-api доколкото знам","depth":25,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:05 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.","depth":25,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:25 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Може би не зададох правилно въпроса","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:17 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"тука не знам, питай Тошко, той се занимаваше с него","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with raised hands emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:31 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Мерси много","depth":25,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 2:55:22 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:55 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа \"Opportunity/Lead/Contact/Account\", но не съм сигурен дали е one to one или one to many.","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:30 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Здрасти, да те попитам за този тикет:","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":26,"role_description":"text"},{"role":"AXLink","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"Status:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Ready for customer","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Type:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Bug","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Assignee:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Lukas","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Kovalik","depth":26,"role_description":"text"},{"role":"AXButton","text":"Assign","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Assign","depth":28,"role_description":"text"},{"role":"AXButton","text":"Change status","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Change status","depth":28,"role_description":"text"},{"role":"AXButton","text":"sparkles emoji AI Summarise","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI Summarise","depth":28,"role_description":"text"},{"role":"AXComboBox","text":"More actions...","depth":27,"placeholder":"More actions...","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Added by","depth":26,"role_description":"text"},{"role":"AXLink","text":"Jira Cloud","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jira Cloud","depth":27,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:48 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"това вече е оправено, или ще трябва да се синква на всеки нов клиент","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:49:46 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:49 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 26th at 1:50:07 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50","depth":26,"role_description":"text"}]...
|
3342542283240961792
|
-8850187545565422585
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Mar 9th at 11:38:47 AM
11:38 AM
здрасти
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:07 PM
1:50
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahlSupport Daily - in 51 mБг)100% C78Thu 16 Apr 14:09:43181ec2-user@ip-10-20-6-111:~DOCKERO $1DEV (docker)H82APP (-zsh)83ec2-user@ip-10-.. 884-zsh• 85-zsh86-zshO 87* Unable to a...ec2-user@ip-10-... *9L3Vzci1kZWwiLCJLdmVudExLYWREZWxLdGVkIjo1L3dlYmhvb2svaW50YXBwL2xkLWRLbCIsImV2zWS0RGVhbERLbGV0ZWQ101Lvd2ViaG9vay9pbnRhcHAvb3BwLWRLbCIsImV2zW50QWNjb3VudENyZWF0ZWQ101Ivd2ViaG9vay9pbnRhcHAvYWNjLWFkZCIsImV2ZW50QWNjb3VudFVwZGF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvYWNjLXVwZCIsImV2ZW50Q29udGFjdENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvY250LWFkZCIsImV2ZW50Q29udGFjdFVwZGF0ZWQiOiIvd2ViaG9vay9pbnRhcHAvY250LXVwZCIsImV2ZW50UHJvZmlsZUNyZWFOZWQi0iIvd2ViaG9vay9pbnRhcHAvdXNyLWFkZCIsImV2ZW50UHJvZmlsZVVwZGF0ZWQi0i[vd2ViaG9vay9pbnRhcHAvdXNyLXVwZCIsImV2zW50TGVhZENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvbGQtYWRkIiwiZXZlbnRMZWFkVXBkYXR1ZCI6Ii93ZWJob29rL2ludGFwcC9sZC11cGQiLCJldmVudERlYWxDcmVhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC1hZGQiLCJldmVudER1YWxVcGRhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC11cGQifX0.vozy2irRr71FoTCe23TiWjUHDiRJXu90jw2Rr2Yuy2c",#provider_refresh_token: null,expires: 1776421067,refresh_token_expires: null,provider:"integration-app",state: "full-refresh",auth_scope: null,retry_after: null,created_at:"2026-04-15 10:06:30"updated_at:"2026-04-16 10:17:47",#provider_user_token_encrypted: "eyJpdiI6Implb01VZkc3UmlxTDRPcWlaaTZQblE9PSIsInZhbHV1IjoiT1VmSUJodGxiQ1NNS31xWHNtRDU0K1R40WpxQi8xNnZHaXdyS2RHMW5GaDMrQzBPUXFodnhRNm0wam40TittRVVEUGRjY1FKWXNOV2NBSnVWc1RzRkRV0VgvdURJaUU2amloSzY5Q010d25jem04bGoyZUxUaGxJMTFTR2LvanJKV0M0cHpwK21PQXZqSVLPaUJ1ZG020XAxT2tzZmdQbzU4My91UGQ5NULGdkt6b1IwNGJwcUFoQLpHMVdNWj LOWU9SaUc1U2h0TzM2cWRNd0pGTT1QazJ2ZWtQY05sRFA0L29MeG1MekdhOGRaUD14MD1LcmRTNm1CQ1pjMDBYcXgrME1PQi9NL3QxK2VIM3U2b1hrWGxra2E0NEtKRjRyZHFrMjExWLdsYy90V2Q4Vkh6cXRxRTU4eWZRMH1jY1BBbU5LMUk10TJvN2pLU2V0QUtEZjhST0V1Y3ZicjRmY2JXWWVjTlF2SVBCV3VBR3dManM0bFhYeE03Q3dERitGM0p20HNPcHBDS3o2M1hUMWpLLy8rdFRUeUVhZTltMnNKcnJwcVLEL283RGxKYk1NazdGMFhFWmRXVWsvOHppTHRXdmJxSkRHQmhGeTFJL1gxWjFmRk4yMzB1TjFURVU1TGpvZEwzV2R1YXN2aXphRUs2TFVh0FNkRmtrUWdRbi9RLzZSZnRHai8vcVZFWkRGbzArU0U1YjQyV1I0MD1rZlF2alhhQ1ZHZ09vTXZZVOZDWmZhQSthMG50VjMvTkZt0HVtZVpLVmpPcUJCbzdjRHF2QnJRSUNYTkF3aVNwRmtsYXg1TmFn0CthcU9VQUorTkppZWZ2NEZKc0xEQitIdFZ4MUJubGJiTUtCbzlQMWo1VncxT0toWTVXQXLGNysxTnYrTTM0bFhtZzdBRDMyeHp3NmRUVEJ1Ym0zUDZKbExBWHdLU1VjNEptcUpjTXLick1ЗNms5bFlHQU1PWHVXRHpZMU1URG55dnFBbG0zaWEvUTlEMjJN0XhzNFpwYnZ5Q2RTTWJpV11NYVRXNm5hYWo2REV1bGR2bzRwK3FTаzFCMjV0MHhPWmV1NU14d3Y0WWk0V2N2dXQyK0ZCSiszZmZleElvVWx6V0tUdU9FaUJYcXdCaUs1RzNmRmZWQlc1dXAyMjgvSWNsakEyY1BBUnhmK1NzNDFmUGU5WWVHS25GZ01wSTZ6L3I0RjQyRnlVNXRsWUtlaTY4SkdTYzdoMkhsZF1KT0N5YXZrdXhDZmRIS285WjQwL21FUmsxdlV2dDYwMk9uUU5XU®VaWmJabThFR1BYR1dSQlhKRUhNWmlPWUpJaHhyU00wWEhWbWxNRWdmOWxySGVML2ZOdVNINTg0T0RQditFaXdSNTJtYVhSeHNkY3I0ajV0cnltWjhOYW1SU1VINE5PbXN4Z1JpRUpsTCtFdW1zMVFKclJTRHRtSWFBWVg5a2VRMmt1aC9xdFRCb1doT301c2dBRXJzTVhmemViNmE0VkJmK2M5ejAwNkZvWkFockdub3RFRlpzMHE0T2ZmeS9kbW45Qll1Nmt4VЗNNbHlZOVdSK2dmUFM2Y®h5bGwyeFNT0HBtT0tGWndZa®dGajRMQUdYUmNaYVp@QUQ×SStWU1Y3ZmVmV@xlZ081MWlubmtncXIrTlVIVzg1em95WGo0WjhCNmFtQ0FPc1ZmMzdtSUVIVy8vR3QyM2tDL1VyN01ETHVoaHFUcjdic1NPQm45R3F3RU1SU3d5bWh1V1pqa1oxemhhKzJWemVDdmdsbVU5VWL6T01jNkE1WnhSdzhybWQ1NTFGYkFmbldta0JXNDhmY2NiSHp1TzhEUGFDSWxIdWJmbFJvQTN3cGZFZLpwOHZ5L01xYUFBUURCSWx10XpISEt0SVd3NXNpdnpZZJLnNWx1M0k0a25VNnJHYVZhcDMwM1YvNjg3ZDdJQzdZb0pLL2NFdmt1NnBodjdW0GL6cVI1UEYxbGR4WLNSTVpycDd1Z016SkM5USt2ckZmVUtmNXBnZmZDZmZLU1kгK1I5N®04Q0d0MVYvаTRKZ1RUbUJScHdpSlRHTЗ1EZTJILytwSmFHZ1pKMHFYRDN®b1NKUmlSL1dKaUZ1VХN2K2E5Q3NndmU®YTlBbGtZZ1N3czk®WmQ1MFNSdXhaOHRLSGN5dXQ4RkU4dHBsZHovRHlJSkVtTlcwNVJYaGtFMLBIMUpYNTLmVHFjejJ5M2dlUFM4YUg1U1gzLzMzZTZMd2VTZldtdWQzVDZ5Z1VTdG41L2RGTXZZUGgrT2xLTFFzV205T1RGd3NMaGVXem50MnB5dnNtRDBwL1QyWGR4UT09IiwibWFjIjoiZmYwNDk3ZjYzOGRmYTFLOWUO0Tg2ZTk5MWiYjEzNDY2YWNm0TI0YTNjMzA1ZjU®MmM4MTY2MZU3YmV1ZDdhNSIsInRhZy[6[¡J9",#provider_refresh_token_encrypted: null,#encryption_key: b"\x01\x02\x03\0x"g3R7\x15&p\f Q\x7Fy\xOFLÎ?Ì, {Ïx°óMRª'|\x13§|\x01Í%(~Ñ-À19Li{@E§»\0\0\On01\x06\t*tHt=\r\x01\x07\x06_0]\x02\x01\00x x061t*THt÷\r\x01\x07\x010\x1E\x06\t'TH\x01e\x03\x04\x01.0\x11\x04\fViS\x17.\x04T;= 1_|x02\x01\x10E+h°-Áu1üT-nÂ\x1E5÷\x16 11·\x1C}7..Œ!Х -2=⅕ÝâùÊí\x11b~UÍÚ",sociable_type: "user",}Ssa->state ='connected';"connected"> Ssa->saveO);7b0482"}[2026-04-16 11:07:00] production.INFO: [SocialAccountObserver] Saving model {"correlation_id":"f0c27b9c-124b-4113-ba69-6032b77e1f59","trace_id":"1f319797-bc16-43f3-95f2-81fc92= true> [ec2-user@ip-10-20-6-111 ~]$ 0...
|
36926
|
|
36929
|
753
|
0
|
2026-04-16T11:09:45.023310+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337785023_m2.jpg...
|
Slack
|
Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Sl Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
Mar 26th at 1:50:07 PM
1:50
всеки път когато си сменят layout само се оправя
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tanev
Mar 26th at 1:50:20 PM
1:50 PM
Понеже често го забелязвам на нови клинети, ама преди ми минаваше опп синка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:29 PM
1:50
сега нещо не ми върви, бие ми мемори грешка и това е
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 26th at 1:50:47 PM
1:50 PM
ако искаш мануално трябва да добавиш --strategy lastModified
1 reaction, react with white check mark emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:51:29 PM
1:51
че нали сменихме default да е през webhooks за HS
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:51:56 PM
1:51
иначе в тикет споменахте за Memory Usage Error
React with white_check_mark
React with eyes
React with raised_hands...
|
[{"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":21,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.040234376,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.11679687,"top":0.8055556,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.11992188,"top":0.8055556,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.13632813,"top":0.8208333,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.13632813,"top":0.8208333,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"bounds":{"left":0.07304688,"top":0.825,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.11328125,"top":0.86388886,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"bounds":{"left":0.11601563,"top":0.86388886,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.13632813,"top":0.87916666,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.13632813,"top":0.87916666,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.07304688,"top":0.8833333,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.07304688,"top":0.94861114,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.14335938,"top":0.07986111,"width":0.036328126,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.18085937,"top":0.07986111,"width":0.040234376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.19179687,"top":0.0875,"width":0.026171874,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.22226563,"top":0.07986111,"width":0.024609376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.23320313,"top":0.0875,"width":0.010546875,"height":0.011111111},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.24804688,"top":0.07986111,"width":0.012890625,"height":0.02638889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.28710938,"top":0.10069445,"width":0.0609375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 9th at 11:39:22 AM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:39","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"през customer-api доколкото знам","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.09257813,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03515625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.196875,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:05 AM","depth":24,"bounds":{"left":0.19960937,"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":"11:40 AM","depth":25,"bounds":{"left":0.19960937,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.20859376,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:25 AM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Може би не зададох правилно въпроса","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.10664062,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:17 AM","depth":24,"bounds":{"left":0.20117188,"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":"11:41 AM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"тука не знам, питай Тошко, той се занимаваше с него","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.14375,"height":0.00069444446},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with raised hands 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":"AXButton","text":"Stoyan Tanev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03515625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.196875,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:31 AM","depth":24,"bounds":{"left":0.19960937,"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":"11:41 AM","depth":25,"bounds":{"left":0.19960937,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Мерси много","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.0359375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03515625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.196875,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 2:55:22 PM","depth":24,"bounds":{"left":0.19960937,"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":"2:55 PM","depth":25,"bounds":{"left":0.19960937,"top":0.10069445,"width":0.018359374,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа \"Opportunity/Lead/Contact/Account\", но не съм сигурен дали е one to one или one to many.","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.30195314,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.28476563,"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":"Stoyan Tanev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03515625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.196875,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:30 PM","depth":24,"bounds":{"left":0.19960937,"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":"1:47 PM","depth":25,"bounds":{"left":0.19960937,"top":0.10069445,"width":0.018359374,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Здрасти, да те попитам за този тикет:","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.10429688,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":25,"bounds":{"left":0.26601562,"top":0.10069445,"width":0.12148438,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":26,"bounds":{"left":0.26601562,"top":0.10069445,"width":0.12148438,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":27,"bounds":{"left":0.16835937,"top":0.10069445,"width":0.16601562,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":28,"bounds":{"left":0.16835937,"top":0.10069445,"width":0.16601562,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Status:","depth":26,"bounds":{"left":0.16835937,"top":0.10069445,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Ready for customer","depth":26,"bounds":{"left":0.184375,"top":0.10069445,"width":0.04453125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Type:","depth":26,"bounds":{"left":0.24414062,"top":0.10069445,"width":0.013671875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Bug","depth":26,"bounds":{"left":0.25742188,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Assignee:","depth":26,"bounds":{"left":0.28203124,"top":0.10069445,"width":0.02265625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Lukas","depth":26,"bounds":{"left":0.30429688,"top":0.10069445,"width":0.01328125,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"bounds":{"left":0.3171875,"top":0.10069445,"width":0.0015625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Kovalik","depth":26,"bounds":{"left":0.31835938,"top":0.10069445,"width":0.0171875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Assign","depth":26,"bounds":{"left":0.16835937,"top":0.10069445,"width":0.021875,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Assign","depth":28,"bounds":{"left":0.171875,"top":0.10069445,"width":0.01484375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Change status","depth":26,"bounds":{"left":0.19335938,"top":0.10069445,"width":0.0390625,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Change status","depth":28,"bounds":{"left":0.196875,"top":0.10069445,"width":0.03203125,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"sparkles emoji AI Summarise","depth":26,"bounds":{"left":0.23515625,"top":0.10069445,"width":0.045703124,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI Summarise","depth":28,"bounds":{"left":0.24492188,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"text"},{"role":"AXComboBox","text":"More actions...","depth":27,"bounds":{"left":0.28359374,"top":0.10069445,"width":0.07460938,"height":0.00069444446},"placeholder":"More actions...","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Added by","depth":26,"bounds":{"left":0.16835937,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Jira Cloud","depth":26,"bounds":{"left":0.18867187,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jira Cloud","depth":27,"bounds":{"left":0.18867187,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:48 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"това вече е оправено, или ще трябва да се синква на всеки нов клиент","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.19101563,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.0069444445},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.0055555557},"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:49:46 PM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.01796875,"height":0.0055555557},"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.20117188,"top":0.10069445,"width":0.01796875,"height":0.0055555557},"role_description":"text"},{"role":"AXStaticText","text":"здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне","depth":25,"bounds":{"left":0.16210938,"top":0.10902778,"width":0.31210938,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:50:07 PM","depth":25,"bounds":{"left":0.14960937,"top":0.13194445,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50","depth":26,"bounds":{"left":0.14960937,"top":0.13194445,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"всеки път когато си сменят layout само се оправя","depth":25,"bounds":{"left":0.16210938,"top":0.12986112,"width":0.13320312,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.108333334,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"bounds":{"left":0.16210938,"top":0.14930555,"width":0.03515625,"height":0.015277778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.196875,"top":0.15069444,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:50:20 PM","depth":24,"bounds":{"left":0.19960937,"top":0.15277778,"width":0.018359374,"height":0.010416667},"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.19960937,"top":0.15277778,"width":0.018359374,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"Понеже често го забелязвам на нови клинети, ама преди ми минаваше опп синка","depth":25,"bounds":{"left":0.16210938,"top":0.16597222,"width":0.22109374,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.1375,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 26th at 1:50:29 PM","depth":25,"bounds":{"left":0.14960937,"top":0.18888889,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50","depth":26,"bounds":{"left":0.14960937,"top":0.18888889,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"сега нещо не ми върви, бие ми мемори грешка и това е","depth":25,"bounds":{"left":0.16210938,"top":0.18680556,"width":0.15039062,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.16527778,"width":0.000390625,"height":0.022222223},"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.20625,"width":0.036328126,"height":0.015277778},"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.20763889,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:50:47 PM","depth":24,"bounds":{"left":0.20117188,"top":0.20972222,"width":0.01796875,"height":0.010416667},"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.20117188,"top":0.20972222,"width":0.01796875,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"ако искаш мануално трябва да добавиш --strategy lastModified","depth":25,"bounds":{"left":0.16210938,"top":0.22291666,"width":0.16953126,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with white check mark emoji","depth":25,"bounds":{"left":0.16210938,"top":0.23958333,"width":0.016796876,"height":0.016666668},"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.24236111,"width":0.002734375,"height":0.010416667},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.18007812,"top":0.23958333,"width":0.013671875,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.19444445,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 26th at 1:51:29 PM","depth":25,"bounds":{"left":0.14960937,"top":0.26805556,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:51","depth":26,"bounds":{"left":0.14960937,"top":0.26805556,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"че нали сменихме default да е през webhooks за HS","depth":25,"bounds":{"left":0.16210938,"top":0.26597223,"width":0.1390625,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"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,"bounds":{"left":0.49140626,"top":0.24444444,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 26th at 1:51:56 PM","depth":25,"bounds":{"left":0.14960937,"top":0.2888889,"width":0.009375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:51","depth":26,"bounds":{"left":0.14960937,"top":0.2888889,"width":0.009375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"иначе в тикет споменахте за Memory Usage Error","depth":25,"bounds":{"left":0.16210938,"top":0.28680557,"width":0.13203125,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.26527777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.26527777,"width":0.000390625,"height":0.022222223},"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.49140626,"top":0.26527777,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6479873160827011687
|
-6905823789541713851
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
Mar 26th at 1:50:07 PM
1:50
всеки път когато си сменят layout само се оправя
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Stoyan Tanev
Mar 26th at 1:50:20 PM
1:50 PM
Понеже често го забелязвам на нови клинети, ама преди ми минаваше опп синка
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:29 PM
1:50
сега нещо не ми върви, бие ми мемори грешка и това е
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 26th at 1:50:47 PM
1:50 PM
ако искаш мануално трябва да добавиш --strategy lastModified
1 reaction, react with white check mark emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:51:29 PM
1:51
че нали сменихме default да е през webhooks за HS
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:51:56 PM
1:51
иначе в тикет споменахте за Memory Usage Error
React with white_check_mark
React with eyes
React with raised_hands
SlackFileEditViewJiminny ...DMs= Unreads@ Threads6 HuddlesDrafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred& jiminny-x-integrati...platform-inner-teamMore# Channels# ai-chapter# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# support# thank-yous# the people of iimi....Direct messagesio Stoyan Tanev2. Nikolay Nikolov€. Vasil Vasilev®. Galya Dimitrova L. Nikolay Ivanov®. Aneliya Angelova3 Aneliya Angelova, ...P. Ves&. Steliyan Georgiev3 Adelina Petrova, lli...(Q. Adelina Petrova#: AppsJira CloudToastHistoryWindowHelpQ Search Jiminny Inc2 Stoyan Tanev• Messagest Add canvasC Filesв здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусневсеки пьт когато си сменят layout само се оправяStoyan Tanev 1:50 PMПонеже често го забелязвам на нови клинети, ама преди ми минаваше опп синкасега нещо не ми върви, бие ми мемори грешка и това еLukas Kovalik 1:50 PMако искаш мануално трябва да добавиш --strategy lastModifiedV1че нали сменихмe ecicura e noes weonooks 3amaиначе в тикет споменахте за Memorv usage arronаз не успах ла видя такава грешкаако ти се случи пэк. снимай ми я моля те.Stoyan Tanev 1:52 PMДобре, аз ползвам тази команда (php artisan crm:sync-opportunity --teamId --fromLukas Kovalik 1:53 PMда и добави стратегия ако искаш на задH1YesterdayStovan Taney 1:24 PMЗдрасти, имаме ли логове от конектвания на интеграция?понеже сега бях на среша с клиент и тръгнахме да въозваме Зохо, и просто се рефрешва страницатаипак ни воьша в наалотоhttps://app.jiminny.com/export/wmbfq6UI0HluXIRatejU6t6PHzAhyVUdNiObCr2tOHy6fLwooNJTALukas Kovalk 1.33 PMздрасти, трябва да го прегледам, но почти съм сигурен че не е при нас, ако се наложи ще пиша на intergration-appможе ли ла отводиш тикетаStoyan Tanev 1:34 PMДа пускам гоToday •lLukas Kovallk 2.09 PMздрастиStoyan Tanev 2:04 PMЗдравейlLukas Kovalk 7.08 PMпроолемьт от вчера се оказа козметиченвсе пак го имаговорих сьс integration-app и ще видим дали си го оправят те или пак при насV1инсгоашия огооти само не ни казваї се с минало успешнооbчнo o cмerиx 3 oasa soca account ra connecteeMessage Stoyan Tanevurrently impersonating ITSD Apps Admin <)chkeiten einerverlangt.nung zuDetails der• CoachingCommentsFrameworkWrite CommentFocus* connected copied to clipboardShift + Return to add a new line‹ 40hohl• j Support Daily • in 51m100% C4Thu 16 Apr 14:09:44a Log2 Share V00:00/56:31Be first to comment and help your team...
|
36927
|
|
36976
|
NULL
|
0
|
2026-04-16T11:14:32.224850+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776338072224_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryM°7 Jiminny x Shiji - Re FirefoxFileEoitViewHistoryM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MemoraneJiminny • Memorane( Fix an autocomplete mistake that sSymfony|Component|Debug|ExcepE App "Zoho CRM" • Kavita • Membra@ Jiminny+ New Tab203BookmarksProfilesO JIMINNYToolsWindow Helpjiminny.atlassian.net/ira/servicedesk/projects/SRD/queues/custom/37/SRD-6787® For you(9 Recent# Starred0+ Apps |0, SpacesRecent9 Service-Desk@ Queuesv Team PriorityEj All open tic... 12@ Unassigne...1Support te...@ Raised by …..y Assignedt... 2E Service re...1 E Platform te... 4Processing…. 6@ Site reliabil...oNew featur... O& InfoSec is...o@ Ready tor….. O# Resolve….. 999+= View all que... ›E Service requestsA Incidentsll Reports@ OperationsKnowledge Base& Customers@ Channels• Email logs |⅔› Developer escalati…..il Slack integration& Reporting CenterC Add shortcutE Archived work itemsJiminny (New)= More spaces= FiltersB DashboardsC: OperationsQ Search+ Create• backI+* SRD-6787Could you please assist? I had a discussion with Lukas, and he advised me to raise a ticket as the issue might be with the integration app.cc: @Calum Scott@Oliver Harris @Georgi BayraktarovData CentreEUSteps to reproduceCustomer typeMid Market]Aclual oucorneThe customer is not able to connect their Zoho accountExpected outcomeThe customer to be able to reconnect their Zoho acount.Severity levelS2ImpactNoneRoot causeNoneActivityCommentsHistory Work log Approvals• Summarise 2 comments=Add internal note / Reply to customerTro tio: oress Mito commentLukas Kovalik 1 second ago & Internal noteCTon istu s with te mnfguation or, Ths vaiailea troa kueg cha noe haro the aransg.e ve are oxpecting as rmnamed, ankthey rovunred th logic. Thareforo, now weare not avware of the fact that theFor the client I changed it manually in the database, and after that it worked. We'll work on the solution.• Edit • DeleteStoyan Tomov yesterday @ Internal noteAccording to the Sentry error, the social account of the user was not found. However, there is an existing social account. Not sure if deleting the existing social account will help. Re-assigning to the Platformteam for further handling.issues/7271676565/jiminny.sentry.ioTurn your URLs into rich, interactive previews.Learn more about Smart Links.Conneette sentvC • Edit • Delete< 40 ll • f Support Daily - in 46m100% . &• Thu 16 Apr 14:14:31L ASKROVO L O SAnalyzingDetailsAssignee@ Lukas KovalikReporterST Stoyan TanevRequest Typei Report a bugKnowledge base• View related a…..Priorily leve(P2 MediumDev TeamPlatform team]OrganizationShiji GroupCanny LinksOpen Canny Links> More fields Labels, Time tracking, Type of Infos…..> Automation 4 Rule executions> featureOS OpenfeatureOSIntercomThere are no linked Intercom conversations. Paste aconversation URL from your intercom Inbox tocreate a link.Intercom conversation URL *https://app.intercom.com/a/apps/w719q3xl/conv…> Sentry all! Linked IssuesCreated yesterdayUpdated 3 hours agoộ Configure...
|
NULL
|
4311071514357923179
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryM°7 Jiminny x Shiji - Re FirefoxFileEoitViewHistoryM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MemoraneJiminny • Memorane( Fix an autocomplete mistake that sSymfony|Component|Debug|ExcepE App "Zoho CRM" • Kavita • Membra@ Jiminny+ New Tab203BookmarksProfilesO JIMINNYToolsWindow Helpjiminny.atlassian.net/ira/servicedesk/projects/SRD/queues/custom/37/SRD-6787® For you(9 Recent# Starred0+ Apps |0, SpacesRecent9 Service-Desk@ Queuesv Team PriorityEj All open tic... 12@ Unassigne...1Support te...@ Raised by …..y Assignedt... 2E Service re...1 E Platform te... 4Processing…. 6@ Site reliabil...oNew featur... O& InfoSec is...o@ Ready tor….. O# Resolve….. 999+= View all que... ›E Service requestsA Incidentsll Reports@ OperationsKnowledge Base& Customers@ Channels• Email logs |⅔› Developer escalati…..il Slack integration& Reporting CenterC Add shortcutE Archived work itemsJiminny (New)= More spaces= FiltersB DashboardsC: OperationsQ Search+ Create• backI+* SRD-6787Could you please assist? I had a discussion with Lukas, and he advised me to raise a ticket as the issue might be with the integration app.cc: @Calum Scott@Oliver Harris @Georgi BayraktarovData CentreEUSteps to reproduceCustomer typeMid Market]Aclual oucorneThe customer is not able to connect their Zoho accountExpected outcomeThe customer to be able to reconnect their Zoho acount.Severity levelS2ImpactNoneRoot causeNoneActivityCommentsHistory Work log Approvals• Summarise 2 comments=Add internal note / Reply to customerTro tio: oress Mito commentLukas Kovalik 1 second ago & Internal noteCTon istu s with te mnfguation or, Ths vaiailea troa kueg cha noe haro the aransg.e ve are oxpecting as rmnamed, ankthey rovunred th logic. Thareforo, now weare not avware of the fact that theFor the client I changed it manually in the database, and after that it worked. We'll work on the solution.• Edit • DeleteStoyan Tomov yesterday @ Internal noteAccording to the Sentry error, the social account of the user was not found. However, there is an existing social account. Not sure if deleting the existing social account will help. Re-assigning to the Platformteam for further handling.issues/7271676565/jiminny.sentry.ioTurn your URLs into rich, interactive previews.Learn more about Smart Links.Conneette sentvC • Edit • Delete< 40 ll • f Support Daily - in 46m100% . &• Thu 16 Apr 14:14:31L ASKROVO L O SAnalyzingDetailsAssignee@ Lukas KovalikReporterST Stoyan TanevRequest Typei Report a bugKnowledge base• View related a…..Priorily leve(P2 MediumDev TeamPlatform team]OrganizationShiji GroupCanny LinksOpen Canny Links> More fields Labels, Time tracking, Type of Infos…..> Automation 4 Rule executions> featureOS OpenfeatureOSIntercomThere are no linked Intercom conversations. Paste aconversation URL from your intercom Inbox tocreate a link.Intercom conversation URL *https://app.intercom.com/a/apps/w719q3xl/conv…> Sentry all! Linked IssuesCreated yesterdayUpdated 3 hours agoộ Configure...
|
NULL
|