Compare commits

..
Author SHA1 Message Date
Charles Bochet 78403581ae Try Charles 2026-04-13 17:10:56 +02:00
Thomas Trompette 7da89c5267 Rename util 2026-04-13 16:47:04 +02:00
Thomas Trompette 4c2a2dbd4a Rename select to fallback 2026-04-13 16:47:04 +02:00
Thomas Trompette 0313464931 Fix merge with null value + reset data virtualization before init load 2026-04-13 16:47:04 +02:00
655 changed files with 10635 additions and 11286 deletions
+3 -4
View File
@@ -69,14 +69,13 @@ jobs:
- name: Server / Start
run: |
npx nx run twenty-server:start:ci &
npx nx start twenty-server &
echo "Waiting for server to be ready..."
timeout 60 bash -c 'until curl -sf http://localhost:3000/healthz; do sleep 2; done'
timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done'
- name: Start worker
working-directory: packages/twenty-server
run: |
NODE_ENV=development node dist/queue-worker/queue-worker.js &
npx nx run twenty-server:worker &
echo "Worker started"
- name: Zapier / Build
@@ -7,7 +7,9 @@
"npm": "please-use-yarn",
"yarn": ">=4.0.2"
},
"keywords": [],
"keywords": [
"twenty-app"
],
"packageManager": "[email protected]",
"scripts": {
"twenty": "twenty",
@@ -583,7 +583,6 @@ type ViewField {
workspaceId: UUID!
createdAt: DateTime!
updatedAt: DateTime!
isActive: Boolean!
deletedAt: DateTime
isOverridden: Boolean @deprecated(reason: "isOverridden is deprecated")
}
@@ -692,7 +691,6 @@ type ViewFieldGroup {
workspaceId: UUID!
createdAt: DateTime!
updatedAt: DateTime!
isActive: Boolean!
deletedAt: DateTime
viewFields: [ViewField!]!
isOverridden: Boolean! @deprecated(reason: "isOverridden is deprecated")
@@ -901,7 +899,6 @@ type PageLayoutWidget {
conditionalAvailabilityExpression: String
createdAt: DateTime!
updatedAt: DateTime!
isActive: Boolean!
deletedAt: DateTime
isOverridden: Boolean @deprecated(reason: "isOverridden is deprecated")
}
@@ -1237,7 +1234,6 @@ type PageLayoutTab {
layoutMode: PageLayoutTabLayoutMode
createdAt: DateTime!
updatedAt: DateTime!
isActive: Boolean!
deletedAt: DateTime
isOverridden: Boolean @deprecated(reason: "isOverridden is deprecated")
}
@@ -1596,6 +1592,7 @@ enum FeatureFlagKey {
IS_CONNECTED_ACCOUNT_MIGRATED
IS_RICH_TEXT_V1_MIGRATED
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED
IS_RECORD_TABLE_WIDGET_ENABLED
IS_DATASOURCE_MIGRATED
}
@@ -2197,18 +2194,30 @@ type DeletedWorkspaceMember {
userWorkspaceId: UUID
}
type Relation {
type: RelationType!
sourceObjectMetadata: Object!
targetObjectMetadata: Object!
sourceFieldMetadata: Field!
targetFieldMetadata: Field!
type BillingEntitlement {
key: BillingEntitlementKey!
value: Boolean!
}
"""Relation type"""
enum RelationType {
ONE_TO_MANY
MANY_TO_ONE
enum BillingEntitlementKey {
SSO
CUSTOM_DOMAIN
RLS
AUDIT_LOGS
}
type DomainRecord {
validationType: String!
type: String!
status: String!
key: String!
value: String!
}
type DomainValidRecords {
id: UUID!
domain: String!
records: [DomainRecord!]!
}
type IndexEdge {
@@ -2310,6 +2319,25 @@ type ObjectFieldsConnection {
edges: [FieldEdge!]!
}
type UpsertRowLevelPermissionPredicatesResult {
predicates: [RowLevelPermissionPredicate!]!
predicateGroups: [RowLevelPermissionPredicateGroup!]!
}
type Relation {
type: RelationType!
sourceObjectMetadata: Object!
targetObjectMetadata: Object!
sourceFieldMetadata: Field!
targetFieldMetadata: Field!
}
"""Relation type"""
enum RelationType {
ONE_TO_MANY
MANY_TO_ONE
}
type FieldConnection {
"""Paging information"""
pageInfo: PageInfo!
@@ -2318,37 +2346,6 @@ type FieldConnection {
edges: [FieldEdge!]!
}
type BillingEntitlement {
key: BillingEntitlementKey!
value: Boolean!
}
enum BillingEntitlementKey {
SSO
CUSTOM_DOMAIN
RLS
AUDIT_LOGS
}
type DomainRecord {
validationType: String!
type: String!
status: String!
key: String!
value: String!
}
type DomainValidRecords {
id: UUID!
domain: String!
records: [DomainRecord!]!
}
type UpsertRowLevelPermissionPredicatesResult {
predicates: [RowLevelPermissionPredicate!]!
predicateGroups: [RowLevelPermissionPredicateGroup!]!
}
type AuthToken {
token: String!
expiresAt: DateTime!
@@ -415,7 +415,6 @@ export interface ViewField {
workspaceId: Scalars['UUID']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
isActive: Scalars['Boolean']
deletedAt?: Scalars['DateTime']
/** @deprecated isOverridden is deprecated */
isOverridden?: Scalars['Boolean']
@@ -493,7 +492,6 @@ export interface ViewFieldGroup {
workspaceId: Scalars['UUID']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
isActive: Scalars['Boolean']
deletedAt?: Scalars['DateTime']
viewFields: ViewField[]
/** @deprecated isOverridden is deprecated */
@@ -676,7 +674,6 @@ export interface PageLayoutWidget {
conditionalAvailabilityExpression?: Scalars['String']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
isActive: Scalars['Boolean']
deletedAt?: Scalars['DateTime']
/** @deprecated isOverridden is deprecated */
isOverridden?: Scalars['Boolean']
@@ -962,7 +959,6 @@ export interface PageLayoutTab {
layoutMode?: PageLayoutTabLayoutMode
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
isActive: Scalars['Boolean']
deletedAt?: Scalars['DateTime']
/** @deprecated isOverridden is deprecated */
isOverridden?: Scalars['Boolean']
@@ -1293,7 +1289,7 @@ export interface FeatureFlag {
__typename: 'FeatureFlag'
}
export type FeatureFlagKey = 'IS_UNIQUE_INDEXES_ENABLED' | 'IS_JSON_FILTER_ENABLED' | 'IS_AI_ENABLED' | 'IS_COMMAND_MENU_ITEM_ENABLED' | 'IS_MARKETPLACE_SETTING_TAB_VISIBLE' | 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' | 'IS_PUBLIC_DOMAIN_ENABLED' | 'IS_EMAILING_DOMAIN_ENABLED' | 'IS_JUNCTION_RELATIONS_ENABLED' | 'IS_DRAFT_EMAIL_ENABLED' | 'IS_CONNECTED_ACCOUNT_MIGRATED' | 'IS_RICH_TEXT_V1_MIGRATED' | 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' | 'IS_DATASOURCE_MIGRATED'
export type FeatureFlagKey = 'IS_UNIQUE_INDEXES_ENABLED' | 'IS_JSON_FILTER_ENABLED' | 'IS_AI_ENABLED' | 'IS_COMMAND_MENU_ITEM_ENABLED' | 'IS_MARKETPLACE_SETTING_TAB_VISIBLE' | 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' | 'IS_PUBLIC_DOMAIN_ENABLED' | 'IS_EMAILING_DOMAIN_ENABLED' | 'IS_JUNCTION_RELATIONS_ENABLED' | 'IS_DRAFT_EMAIL_ENABLED' | 'IS_CONNECTED_ACCOUNT_MIGRATED' | 'IS_RICH_TEXT_V1_MIGRATED' | 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' | 'IS_RECORD_TABLE_WIDGET_ENABLED' | 'IS_DATASOURCE_MIGRATED'
export interface WorkspaceUrls {
customUrl?: Scalars['String']
@@ -1883,18 +1879,29 @@ export interface DeletedWorkspaceMember {
__typename: 'DeletedWorkspaceMember'
}
export interface Relation {
type: RelationType
sourceObjectMetadata: Object
targetObjectMetadata: Object
sourceFieldMetadata: Field
targetFieldMetadata: Field
__typename: 'Relation'
export interface BillingEntitlement {
key: BillingEntitlementKey
value: Scalars['Boolean']
__typename: 'BillingEntitlement'
}
export type BillingEntitlementKey = 'SSO' | 'CUSTOM_DOMAIN' | 'RLS' | 'AUDIT_LOGS'
/** Relation type */
export type RelationType = 'ONE_TO_MANY' | 'MANY_TO_ONE'
export interface DomainRecord {
validationType: Scalars['String']
type: Scalars['String']
status: Scalars['String']
key: Scalars['String']
value: Scalars['String']
__typename: 'DomainRecord'
}
export interface DomainValidRecords {
id: Scalars['UUID']
domain: Scalars['String']
records: DomainRecord[]
__typename: 'DomainValidRecords'
}
export interface IndexEdge {
/** The node containing the Index */
@@ -1994,6 +2001,25 @@ export interface ObjectFieldsConnection {
__typename: 'ObjectFieldsConnection'
}
export interface UpsertRowLevelPermissionPredicatesResult {
predicates: RowLevelPermissionPredicate[]
predicateGroups: RowLevelPermissionPredicateGroup[]
__typename: 'UpsertRowLevelPermissionPredicatesResult'
}
export interface Relation {
type: RelationType
sourceObjectMetadata: Object
targetObjectMetadata: Object
sourceFieldMetadata: Field
targetFieldMetadata: Field
__typename: 'Relation'
}
/** Relation type */
export type RelationType = 'ONE_TO_MANY' | 'MANY_TO_ONE'
export interface FieldConnection {
/** Paging information */
pageInfo: PageInfo
@@ -2002,36 +2028,6 @@ export interface FieldConnection {
__typename: 'FieldConnection'
}
export interface BillingEntitlement {
key: BillingEntitlementKey
value: Scalars['Boolean']
__typename: 'BillingEntitlement'
}
export type BillingEntitlementKey = 'SSO' | 'CUSTOM_DOMAIN' | 'RLS' | 'AUDIT_LOGS'
export interface DomainRecord {
validationType: Scalars['String']
type: Scalars['String']
status: Scalars['String']
key: Scalars['String']
value: Scalars['String']
__typename: 'DomainRecord'
}
export interface DomainValidRecords {
id: Scalars['UUID']
domain: Scalars['String']
records: DomainRecord[]
__typename: 'DomainValidRecords'
}
export interface UpsertRowLevelPermissionPredicatesResult {
predicates: RowLevelPermissionPredicate[]
predicateGroups: RowLevelPermissionPredicateGroup[]
__typename: 'UpsertRowLevelPermissionPredicatesResult'
}
export interface AuthToken {
token: Scalars['String']
expiresAt: Scalars['DateTime']
@@ -3635,7 +3631,6 @@ export interface ViewFieldGenqlSelection{
workspaceId?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
isActive?: boolean | number
deletedAt?: boolean | number
/** @deprecated isOverridden is deprecated */
isOverridden?: boolean | number
@@ -3710,7 +3705,6 @@ export interface ViewFieldGroupGenqlSelection{
workspaceId?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
isActive?: boolean | number
deletedAt?: boolean | number
viewFields?: ViewFieldGenqlSelection
/** @deprecated isOverridden is deprecated */
@@ -3885,7 +3879,6 @@ export interface PageLayoutWidgetGenqlSelection{
conditionalAvailabilityExpression?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
isActive?: boolean | number
deletedAt?: boolean | number
/** @deprecated isOverridden is deprecated */
isOverridden?: boolean | number
@@ -4198,7 +4191,6 @@ export interface PageLayoutTabGenqlSelection{
layoutMode?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
isActive?: boolean | number
deletedAt?: boolean | number
/** @deprecated isOverridden is deprecated */
isOverridden?: boolean | number
@@ -5157,12 +5149,27 @@ export interface DeletedWorkspaceMemberGenqlSelection{
__scalar?: boolean | number
}
export interface RelationGenqlSelection{
export interface BillingEntitlementGenqlSelection{
key?: boolean | number
value?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DomainRecordGenqlSelection{
validationType?: boolean | number
type?: boolean | number
sourceObjectMetadata?: ObjectGenqlSelection
targetObjectMetadata?: ObjectGenqlSelection
sourceFieldMetadata?: FieldGenqlSelection
targetFieldMetadata?: FieldGenqlSelection
status?: boolean | number
key?: boolean | number
value?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DomainValidRecordsGenqlSelection{
id?: boolean | number
domain?: boolean | number
records?: DomainRecordGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
@@ -5277,6 +5284,23 @@ export interface ObjectFieldsConnectionGenqlSelection{
__scalar?: boolean | number
}
export interface UpsertRowLevelPermissionPredicatesResultGenqlSelection{
predicates?: RowLevelPermissionPredicateGenqlSelection
predicateGroups?: RowLevelPermissionPredicateGroupGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface RelationGenqlSelection{
type?: boolean | number
sourceObjectMetadata?: ObjectGenqlSelection
targetObjectMetadata?: ObjectGenqlSelection
sourceFieldMetadata?: FieldGenqlSelection
targetFieldMetadata?: FieldGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface FieldConnectionGenqlSelection{
/** Paging information */
pageInfo?: PageInfoGenqlSelection
@@ -5286,38 +5310,6 @@ export interface FieldConnectionGenqlSelection{
__scalar?: boolean | number
}
export interface BillingEntitlementGenqlSelection{
key?: boolean | number
value?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DomainRecordGenqlSelection{
validationType?: boolean | number
type?: boolean | number
status?: boolean | number
key?: boolean | number
value?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DomainValidRecordsGenqlSelection{
id?: boolean | number
domain?: boolean | number
records?: DomainRecordGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface UpsertRowLevelPermissionPredicatesResultGenqlSelection{
predicates?: RowLevelPermissionPredicateGenqlSelection
predicateGroups?: RowLevelPermissionPredicateGroupGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface AuthTokenGenqlSelection{
token?: boolean | number
expiresAt?: boolean | number
@@ -8240,10 +8232,26 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
const Relation_possibleTypes: string[] = ['Relation']
export const isRelation = (obj?: { __typename?: any } | null): obj is Relation => {
if (!obj?.__typename) throw new Error('__typename is missing in "isRelation"')
return Relation_possibleTypes.includes(obj.__typename)
const BillingEntitlement_possibleTypes: string[] = ['BillingEntitlement']
export const isBillingEntitlement = (obj?: { __typename?: any } | null): obj is BillingEntitlement => {
if (!obj?.__typename) throw new Error('__typename is missing in "isBillingEntitlement"')
return BillingEntitlement_possibleTypes.includes(obj.__typename)
}
const DomainRecord_possibleTypes: string[] = ['DomainRecord']
export const isDomainRecord = (obj?: { __typename?: any } | null): obj is DomainRecord => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDomainRecord"')
return DomainRecord_possibleTypes.includes(obj.__typename)
}
const DomainValidRecords_possibleTypes: string[] = ['DomainValidRecords']
export const isDomainValidRecords = (obj?: { __typename?: any } | null): obj is DomainValidRecords => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDomainValidRecords"')
return DomainValidRecords_possibleTypes.includes(obj.__typename)
}
@@ -8344,38 +8352,6 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
const FieldConnection_possibleTypes: string[] = ['FieldConnection']
export const isFieldConnection = (obj?: { __typename?: any } | null): obj is FieldConnection => {
if (!obj?.__typename) throw new Error('__typename is missing in "isFieldConnection"')
return FieldConnection_possibleTypes.includes(obj.__typename)
}
const BillingEntitlement_possibleTypes: string[] = ['BillingEntitlement']
export const isBillingEntitlement = (obj?: { __typename?: any } | null): obj is BillingEntitlement => {
if (!obj?.__typename) throw new Error('__typename is missing in "isBillingEntitlement"')
return BillingEntitlement_possibleTypes.includes(obj.__typename)
}
const DomainRecord_possibleTypes: string[] = ['DomainRecord']
export const isDomainRecord = (obj?: { __typename?: any } | null): obj is DomainRecord => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDomainRecord"')
return DomainRecord_possibleTypes.includes(obj.__typename)
}
const DomainValidRecords_possibleTypes: string[] = ['DomainValidRecords']
export const isDomainValidRecords = (obj?: { __typename?: any } | null): obj is DomainValidRecords => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDomainValidRecords"')
return DomainValidRecords_possibleTypes.includes(obj.__typename)
}
const UpsertRowLevelPermissionPredicatesResult_possibleTypes: string[] = ['UpsertRowLevelPermissionPredicatesResult']
export const isUpsertRowLevelPermissionPredicatesResult = (obj?: { __typename?: any } | null): obj is UpsertRowLevelPermissionPredicatesResult => {
if (!obj?.__typename) throw new Error('__typename is missing in "isUpsertRowLevelPermissionPredicatesResult"')
@@ -8384,6 +8360,22 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
const Relation_possibleTypes: string[] = ['Relation']
export const isRelation = (obj?: { __typename?: any } | null): obj is Relation => {
if (!obj?.__typename) throw new Error('__typename is missing in "isRelation"')
return Relation_possibleTypes.includes(obj.__typename)
}
const FieldConnection_possibleTypes: string[] = ['FieldConnection']
export const isFieldConnection = (obj?: { __typename?: any } | null): obj is FieldConnection => {
if (!obj?.__typename) throw new Error('__typename is missing in "isFieldConnection"')
return FieldConnection_possibleTypes.includes(obj.__typename)
}
const AuthToken_possibleTypes: string[] = ['AuthToken']
export const isAuthToken = (obj?: { __typename?: any } | null): obj is AuthToken => {
if (!obj?.__typename) throw new Error('__typename is missing in "isAuthToken"')
@@ -9478,6 +9470,7 @@ export const enumFeatureFlagKey = {
IS_CONNECTED_ACCOUNT_MIGRATED: 'IS_CONNECTED_ACCOUNT_MIGRATED' as const,
IS_RICH_TEXT_V1_MIGRATED: 'IS_RICH_TEXT_V1_MIGRATED' as const,
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED: 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' as const,
IS_RECORD_TABLE_WIDGET_ENABLED: 'IS_RECORD_TABLE_WIDGET_ENABLED' as const,
IS_DATASOURCE_MIGRATED: 'IS_DATASOURCE_MIGRATED' as const
}
@@ -9584,11 +9577,6 @@ export const enumQueueMetricsTimeRange = {
OneHour: 'OneHour' as const
}
export const enumRelationType = {
ONE_TO_MANY: 'ONE_TO_MANY' as const,
MANY_TO_ONE: 'MANY_TO_ONE' as const
}
export const enumBillingEntitlementKey = {
SSO: 'SSO' as const,
CUSTOM_DOMAIN: 'CUSTOM_DOMAIN' as const,
@@ -9596,6 +9584,11 @@ export const enumBillingEntitlementKey = {
AUDIT_LOGS: 'AUDIT_LOGS' as const
}
export const enumRelationType = {
ONE_TO_MANY: 'ONE_TO_MANY' as const,
MANY_TO_ONE: 'MANY_TO_ONE' as const
}
export const enumEmailingDomainDriver = {
AWS_SES: 'AWS_SES' as const
}
@@ -63,7 +63,7 @@ export default {
209,
221,
238,
253,
255,
292,
293,
303,
@@ -789,10 +789,10 @@ export default {
3
],
"relation": [
237
254
],
"morphRelations": [
237
254
],
"object": [
46
@@ -851,7 +851,7 @@ export default {
36
],
"objectMetadata": [
245,
247,
{
"paging": [
39,
@@ -864,7 +864,7 @@ export default {
}
],
"indexFieldMetadatas": [
243,
245,
{
"paging": [
39,
@@ -1109,7 +1109,7 @@ export default {
37
],
"fields": [
250,
252,
{
"paging": [
39,
@@ -1122,7 +1122,7 @@ export default {
}
],
"indexMetadatas": [
248,
250,
{
"paging": [
39,
@@ -1283,9 +1283,6 @@ export default {
"updatedAt": [
4
],
"isActive": [
6
],
"deletedAt": [
4
],
@@ -1459,9 +1456,6 @@ export default {
"updatedAt": [
4
],
"isActive": [
6
],
"deletedAt": [
4
],
@@ -1709,7 +1703,7 @@ export default {
131
],
"billingEntitlements": [
252
237
],
"hasValidEnterpriseKey": [
6
@@ -1909,9 +1903,6 @@ export default {
"updatedAt": [
4
],
"isActive": [
6
],
"deletedAt": [
4
],
@@ -2570,9 +2561,6 @@ export default {
"updatedAt": [
4
],
"isActive": [
6
],
"deletedAt": [
4
],
@@ -4431,179 +4419,9 @@ export default {
1
]
},
"Relation": {
"type": [
238
],
"sourceObjectMetadata": [
46
],
"targetObjectMetadata": [
46
],
"sourceFieldMetadata": [
34
],
"targetFieldMetadata": [
34
],
"__typename": [
1
]
},
"RelationType": {},
"IndexEdge": {
"node": [
37
],
"cursor": [
40
],
"__typename": [
1
]
},
"PageInfo": {
"hasNextPage": [
6
],
"hasPreviousPage": [
6
],
"startCursor": [
40
],
"endCursor": [
40
],
"__typename": [
1
]
},
"IndexConnection": {
"pageInfo": [
240
],
"edges": [
239
],
"__typename": [
1
]
},
"IndexFieldEdge": {
"node": [
36
],
"cursor": [
40
],
"__typename": [
1
]
},
"IndexIndexFieldMetadatasConnection": {
"pageInfo": [
240
],
"edges": [
242
],
"__typename": [
1
]
},
"ObjectEdge": {
"node": [
46
],
"cursor": [
40
],
"__typename": [
1
]
},
"IndexObjectMetadataConnection": {
"pageInfo": [
240
],
"edges": [
244
],
"__typename": [
1
]
},
"ObjectRecordCount": {
"objectNamePlural": [
1
],
"totalCount": [
21
],
"__typename": [
1
]
},
"ObjectConnection": {
"pageInfo": [
240
],
"edges": [
244
],
"__typename": [
1
]
},
"ObjectIndexMetadatasConnection": {
"pageInfo": [
240
],
"edges": [
239
],
"__typename": [
1
]
},
"FieldEdge": {
"node": [
34
],
"cursor": [
40
],
"__typename": [
1
]
},
"ObjectFieldsConnection": {
"pageInfo": [
240
],
"edges": [
249
],
"__typename": [
1
]
},
"FieldConnection": {
"pageInfo": [
240
],
"edges": [
249
],
"__typename": [
1
]
},
"BillingEntitlement": {
"key": [
253
238
],
"value": [
6
@@ -4641,7 +4459,145 @@ export default {
1
],
"records": [
254
239
],
"__typename": [
1
]
},
"IndexEdge": {
"node": [
37
],
"cursor": [
40
],
"__typename": [
1
]
},
"PageInfo": {
"hasNextPage": [
6
],
"hasPreviousPage": [
6
],
"startCursor": [
40
],
"endCursor": [
40
],
"__typename": [
1
]
},
"IndexConnection": {
"pageInfo": [
242
],
"edges": [
241
],
"__typename": [
1
]
},
"IndexFieldEdge": {
"node": [
36
],
"cursor": [
40
],
"__typename": [
1
]
},
"IndexIndexFieldMetadatasConnection": {
"pageInfo": [
242
],
"edges": [
244
],
"__typename": [
1
]
},
"ObjectEdge": {
"node": [
46
],
"cursor": [
40
],
"__typename": [
1
]
},
"IndexObjectMetadataConnection": {
"pageInfo": [
242
],
"edges": [
246
],
"__typename": [
1
]
},
"ObjectRecordCount": {
"objectNamePlural": [
1
],
"totalCount": [
21
],
"__typename": [
1
]
},
"ObjectConnection": {
"pageInfo": [
242
],
"edges": [
246
],
"__typename": [
1
]
},
"ObjectIndexMetadatasConnection": {
"pageInfo": [
242
],
"edges": [
241
],
"__typename": [
1
]
},
"FieldEdge": {
"node": [
34
],
"cursor": [
40
],
"__typename": [
1
]
},
"ObjectFieldsConnection": {
"pageInfo": [
242
],
"edges": [
251
],
"__typename": [
1
@@ -4658,6 +4614,38 @@ export default {
1
]
},
"Relation": {
"type": [
255
],
"sourceObjectMetadata": [
46
],
"targetObjectMetadata": [
46
],
"sourceFieldMetadata": [
34
],
"targetFieldMetadata": [
34
],
"__typename": [
1
]
},
"RelationType": {},
"FieldConnection": {
"pageInfo": [
242
],
"edges": [
251
],
"__typename": [
1
]
},
"AuthToken": {
"token": [
1
@@ -5987,7 +5975,7 @@ export default {
},
"AgentChatThreadConnection": {
"pageInfo": [
240
242
],
"edges": [
335
@@ -6594,7 +6582,7 @@ export default {
}
],
"objectRecordCounts": [
246
248
],
"object": [
46,
@@ -6606,7 +6594,7 @@ export default {
}
],
"objects": [
247,
249,
{
"paging": [
39,
@@ -6628,7 +6616,7 @@ export default {
}
],
"indexMetadatas": [
241,
243,
{
"paging": [
39,
@@ -6677,7 +6665,7 @@ export default {
}
],
"fields": [
251,
256,
{
"paging": [
39,
@@ -8352,7 +8340,7 @@ export default {
}
],
"upsertRowLevelPermissionPredicates": [
256,
253,
{
"input": [
456,
@@ -9094,7 +9082,7 @@ export default {
66
],
"checkCustomDomainValidRecords": [
255
240
],
"createOIDCIdentityProvider": [
232,
@@ -9427,7 +9415,7 @@ export default {
}
],
"checkPublicDomainValidRecords": [
255,
240,
{
"domain": [
1,
@@ -87,7 +87,7 @@ Publishing to npm makes your app discoverable in the Twenty marketplace. Any Twe
### Requirements
- An [npm](https://www.npmjs.com) account
- The `twenty-app` keyword in your `package.json` `keywords` array (add it manually — it is not included by default in the `create-twenty-app` template)
- The `twenty-app` keyword in your `package.json` `keywords` array (already included when you scaffold with `create-twenty-app`)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ yarn twenty deploy
### المتطلبات
* حساب على [npm](https://www.npmjs.com)
* الكلمة المفتاحية `twenty-app` في مصفوفة `keywords` في `package.json` (أضفها يدويًا — فهي غير مضمنة افتراضيًا في قالب `create-twenty-app`)
* الكلمة المفتاحية `twenty-app` في مصفوفة `keywords` في `package.json` (موجودة مسبقًا عند تهيئة المشروع باستخدام `create-twenty-app`)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ Publikování na npm zajistí, že bude vaše aplikace dohledatelná v Marketpla
### Požadavky
* Účet na [npm](https://www.npmjs.com)
* Klíčové slovo `twenty-app` ve vašem poli `keywords` v souboru `package.json` (přidejte je ručně — ve výchozím nastavení není zahrnuto v šabloně `create-twenty-app`)
* Klíčové slovo `twenty-app` ve vašem poli `keywords` v souboru `package.json` (již je zahrnuto, když založíte projekt pomocí `create-twenty-app`)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ Die Veröffentlichung auf npm macht Ihre App im Twenty-Marktplatz auffindbar. Je
### Anforderungen
* Ein [npm](https://www.npmjs.com)-Konto
* Das Schlüsselwort `twenty-app` in Ihrem `package.json`-Array `keywords` (manuell hinzufügen — es ist in der `create-twenty-app`-Vorlage standardmäßig nicht enthalten)
* Das Schlüsselwort `twenty-app` in Ihrem `package.json`-Array `keywords` (bereits enthalten, wenn Sie mit `create-twenty-app` ein Gerüst erstellen)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ La pubblicazione su npm rende la tua app scopribile nel marketplace di Twenty. Q
### Requisiti
* Un account [npm](https://www.npmjs.com)
* La parola chiave `twenty-app` nell'array `keywords` del tuo `package.json` (aggiungila manualmente — non è inclusa per impostazione predefinita nel template `create-twenty-app`)
* La parola chiave `twenty-app` nell'array `keywords` del tuo `package.json` (già inclusa quando inizializzi con `create-twenty-app`)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ Publicar no npm torna seu aplicativo descobrível no Marketplace da Twenty. Qual
### Requisitos
* Uma conta no [npm](https://www.npmjs.com)
* A palavra-chave `twenty-app` no array `keywords` do seu `package.json` (adicione-a manualmente — não é incluída por padrão no template `create-twenty-app`)
* A palavra-chave `twenty-app` no array `keywords` do seu `package.json` (já incluída quando você cria o projeto com `create-twenty-app`)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ When updating an already deployed tarball app, the server requires the `version`
### Требования
* Учётная запись [npm](https://www.npmjs.com)
* Ключевое слово `twenty-app` в массиве `keywords` вашего `package.json` (добавьте его вручную — по умолчанию оно не включено в шаблон `create-twenty-app`)
* Ключевое слово `twenty-app` в массиве `keywords` вашего `package.json` (уже добавлено при создании проекта с помощью `create-twenty-app`)
```json filename="package.json"
{
@@ -476,7 +476,7 @@ export default defineLogicFunction({
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: true,
isAuthRequired: false,
},
/*databaseEventTriggerSettings: {
eventName: 'people.created',
@@ -87,7 +87,7 @@ npmye yayımlamak, uygulamanızın Twenty pazaryerinde keşfedilebilir olmas
### Gereksinimler
* Bir [npm](https://www.npmjs.com) hesabı
* `package.json` içindeki `keywords` dizinizdeki `twenty-app` anahtar sözcüğü (elle ekleyin — varsayılan olarak `create-twenty-app` şablonunda yer almaz)
* `package.json` içindeki `keywords` dizinizdeki `twenty-app` anahtar sözcüğü (`create-twenty-app` ile iskelet oluşturduğunuzda zaten eklenir)
```json filename="package.json"
{
+2 -2
View File
@@ -61,8 +61,8 @@ const jestConfig = {
extensionsToTreatAsEsm: ['.ts', '.tsx'],
coverageThreshold: {
global: {
statements: 48,
lines: 46,
statements: 48.4,
lines: 47.0,
functions: 39.5,
},
},
File diff suppressed because one or more lines are too long
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Oor hierdie gebruiker"
msgid "About this workspace"
msgstr "Oor hierdie werkruimte"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Inhoud"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Konteks"
@@ -12040,6 +12037,11 @@ msgstr "Herstel 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Herstel na"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Daar is geen gekoppelde aktiwiteit by hierdie rekord nie."
msgid "There was an error while updating password."
msgstr "Daar was 'n fout terwyl die wagwoord opgedateer is."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "حول هذا المستخدم"
msgid "About this workspace"
msgstr "عن مساحة العمل هذه"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "المحتوى"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "السياق"
@@ -12040,6 +12037,11 @@ msgstr "إعادة تعيين المصادقة الثنائية"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "\\\\"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "لا توجد أنشطة مرتبطة بهذا السجل."
msgid "There was an error while updating password."
msgstr "حدث خطأ أثناء تحديث كلمة المرور."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Sobre aquest usuari"
msgid "About this workspace"
msgstr "Sobre aquest espai de treball"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Contingut"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Context"
@@ -12040,6 +12037,11 @@ msgstr "Reinicia 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Reinicia a"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "No hi ha cap activitat associada amb aquest registre."
msgid "There was an error while updating password."
msgstr "S'ha produït un error en actualitzar la contrasenya."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "O tomto uživateli"
msgid "About this workspace"
msgstr "O tomto pracovním prostoru"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Obsah"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Kontext"
@@ -12040,6 +12037,11 @@ msgstr "Obnovit 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Obnovit na"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "S tímto záznamem není spojena žádná aktivita."
msgid "There was an error while updating password."
msgstr "Během aktualizace hesla došlo k chybě."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Om denne bruger"
msgid "About this workspace"
msgstr "Om dette arbejdsområde"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Indhold"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Kontekst"
@@ -12040,6 +12037,11 @@ msgstr "Nulstil 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Nulstil til"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Der er ingen aktivitet tilknyttet denne post."
msgid "There was an error while updating password."
msgstr "Der opstod en fejl under opdatering af adgangskoden."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Über diesen Benutzer"
msgid "About this workspace"
msgstr "Über diesen Arbeitsbereich"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Inhalt"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Kontext"
@@ -12040,6 +12037,11 @@ msgstr "2FA zurücksetzen"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Zurücksetzen auf"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Mit diesem Datensatz ist keine Aktivität verknüpft."
msgid "There was an error while updating password."
msgstr "Beim Aktualisieren des Passworts ist ein Fehler aufgetreten."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Σχετικά με αυτόν τον χρήστη"
msgid "About this workspace"
msgstr "Σχετικά με αυτό το χώρο εργασίας"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Περιεχόμενο"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Περιβάλλον"
@@ -12040,6 +12037,11 @@ msgstr "Επαναφορά 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Επαναφορά σε"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14200,11 +14202,6 @@ msgstr "Δεν υπάρχει δραστηριότητα που να σχετί
msgid "There was an error while updating password."
msgstr "Παρουσιάστηκε σφάλμα κατά την ενημέρωση του κωδικού πρόσβασης."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -672,11 +672,6 @@ msgstr "About this user"
msgid "About this workspace"
msgstr "About this workspace"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr "Access"
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3569,7 +3564,9 @@ msgid "Content"
msgstr "Content"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Context"
@@ -12035,6 +12032,11 @@ msgstr "Reset 2FA"
msgid "Reset label to default"
msgstr "Reset label to default"
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Reset to"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14193,11 +14195,6 @@ msgstr "There is no activity associated with this record."
msgid "There was an error while updating password."
msgstr "There was an error while updating password."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr "These apps are not vetted. Use at your own risk."
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Sobre este usuario"
msgid "About this workspace"
msgstr "Sobre este espacio de trabajo"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Contenido"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Contexto"
@@ -12040,6 +12037,11 @@ msgstr "Restablecer 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Restablecer a"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "No hay actividad asociada con este registro."
msgid "There was an error while updating password."
msgstr "Hubo un error al actualizar la contraseña."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Tietoa tästä käyttäjästä"
msgid "About this workspace"
msgstr "Tietoa tästä työtilasta"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Sisältö"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Yhteys"
@@ -12040,6 +12037,11 @@ msgstr "Nollaa 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Palauta"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Tähän tietueeseen ei liity aktiivisuutta."
msgid "There was an error while updating password."
msgstr "Salasanan päivityksessä tapahtui virhe."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "À propos de cet utilisateur"
msgid "About this workspace"
msgstr "À propos de cet espace de travail"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Contenu"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Contexte"
@@ -12040,6 +12037,11 @@ msgstr "Réinitialiser 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Réinitialiser à"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Aucune activité n'est associée à cet enregistrement."
msgid "There was an error while updating password."
msgstr "Une erreur est survenue lors de la mise à jour du mot de passe."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "אודות משתמש זה"
msgid "About this workspace"
msgstr "אודות סביבת עבודה זו"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "תוכן"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "הקשר"
@@ -12040,6 +12037,11 @@ msgstr "אתחל אימות דו-שלבי"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "\\"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "אין פעילות מקושרת לרשומה זו."
msgid "There was an error while updating password."
msgstr "אירעה תקלה בעדכון הסיסמה."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Erről a felhasználóról"
msgid "About this workspace"
msgstr "Erről a munkaterületről"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Tartalom"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Összefüggés"
@@ -12040,6 +12037,11 @@ msgstr "2FA visszaállítása"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Visszaállítás"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Ehhez a rekordhoz nem tartozik tevékenység."
msgid "There was an error while updating password."
msgstr "Hiba történt a jelszó frissítése közben."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Informazioni su questo utente"
msgid "About this workspace"
msgstr "Informazioni su questo spazio di lavoro"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Contenuto"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Contesto"
@@ -12040,6 +12037,11 @@ msgstr "Reimposta 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Reimposta a"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Non ci sono attività associate a questo record."
msgid "There was an error while updating password."
msgstr "Errore durante l'aggiornamento della password."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "このユーザーについて"
msgid "About this workspace"
msgstr "このワークスペースについて"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "コンテンツ"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "コンテキスト"
@@ -12040,6 +12037,11 @@ msgstr "2FAをリセット"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "リセット"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "このレコードに関連付けられたアクティビティはあり
msgid "There was an error while updating password."
msgstr "パスワードの更新中にエラーが発生しました"
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "이 사용자에 대해"
msgid "About this workspace"
msgstr "이 작업공간에 대해"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "내용"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "컨텍스트"
@@ -12040,6 +12037,11 @@ msgstr "이중 인증 재설정"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "다음으로 재설정"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "이 레코드와 연결된 활동이 없습니다."
msgid "There was an error while updating password."
msgstr "비밀번호 업데이트 중 오류가 발생했습니다."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Over deze gebruiker"
msgid "About this workspace"
msgstr "Over deze werkruimte"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Inhoud"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Context"
@@ -12040,6 +12037,11 @@ msgstr "Reset 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Reset naar"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Er is geen activiteit gekoppeld aan dit record."
msgid "There was an error while updating password."
msgstr "Er was een fout bij het bijwerken van het wachtwoord."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Om denne brukeren"
msgid "About this workspace"
msgstr "Om dette arbeidsområdet"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Innhold"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Kontekst"
@@ -12040,6 +12037,11 @@ msgstr "Tilbakestill 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Tilbakestill til"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Det finnes ingen aktivitet knyttet til denne oppføringen."
msgid "There was an error while updating password."
msgstr "Det var en feil under oppdatering av passord."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "O tym użytkowniku"
msgid "About this workspace"
msgstr "O tej przestrzeni roboczej"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Zawartość"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Kontekst"
@@ -12040,6 +12037,11 @@ msgstr "Resetuj 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Zresetuj do"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Z tym rekordem nie jest powiązana żadna aktywność."
msgid "There was an error while updating password."
msgstr "Wystąpił błąd podczas aktualizacji hasła."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -672,11 +672,6 @@ msgstr ""
msgid "About this workspace"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3569,7 +3564,9 @@ msgid "Content"
msgstr ""
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr ""
@@ -12035,6 +12032,11 @@ msgstr ""
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr ""
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14193,11 +14195,6 @@ msgstr ""
msgid "There was an error while updating password."
msgstr ""
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Sobre este usuário"
msgid "About this workspace"
msgstr "Sobre este espaço de trabalho"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Conteúdo"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Contexto"
@@ -12040,6 +12037,11 @@ msgstr "Redefinir 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Redefinir para"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Não há atividade associada a este registro."
msgid "There was an error while updating password."
msgstr "Ocorreu um erro ao atualizar a senha."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Sobre este usuário"
msgid "About this workspace"
msgstr "Sobre este espaço de trabalho"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Conteúdo"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Contexto"
@@ -12040,6 +12037,11 @@ msgstr "Redefinir 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Redefinir para"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Não há atividade associada a este registo."
msgid "There was an error while updating password."
msgstr "Ocorreu um erro ao atualizar a palavra-passe."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Despre acest utilizator"
msgid "About this workspace"
msgstr "Despre acest spațiu de lucru"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Conținut"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Context"
@@ -12040,6 +12037,11 @@ msgstr "Resetează 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Resetează la"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Nu există activitate asociată acestei înregistrări."
msgid "There was an error while updating password."
msgstr "A apărut o eroare în timpul actualizării parolei."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
Binary file not shown.
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "О овом кориснику"
msgid "About this workspace"
msgstr "О овом радном простору"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Садржај"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Контекст"
@@ -12040,6 +12037,11 @@ msgstr "Ресетујте 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Ресетујте на"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Са овим записом нема повезаних активно
msgid "There was an error while updating password."
msgstr "Дошло је до грешке при ажурирању лозинке."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Om den här användaren"
msgid "About this workspace"
msgstr "Om den här arbetsytan"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Innehåll"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Sammanhang"
@@ -12042,6 +12039,11 @@ msgstr "Återställ 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Återställ till"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14204,11 +14206,6 @@ msgstr "Det finns ingen aktivitet kopplad till den här posten."
msgid "There was an error while updating password."
msgstr "Det uppstod ett fel vid uppdatering av lösenordet."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Bu kullanıcı hakkında"
msgid "About this workspace"
msgstr "Bu çalışma alanı hakkında"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "İçerik"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Bağlam"
@@ -12040,6 +12037,11 @@ msgstr "2FA Sıfırla"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Sıfırla"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Bu kayıtla ilişkili etkinlik yok."
msgid "There was an error while updating password."
msgstr "Şifre güncelleme sırasında bir hata oluştu."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Про цього користувача"
msgid "About this workspace"
msgstr "Про цей робочий простір"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Вміст"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Контекст"
@@ -12040,6 +12037,11 @@ msgstr "Скинути 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Скинути до"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "З цим записом не пов’язана жодна актив
msgid "There was an error while updating password."
msgstr "Сталася помилка під час оновлення пароля."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "Về người dùng này"
msgid "About this workspace"
msgstr "Giới thiệu về không gian làm việc này"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "Nội dung"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "Ngữ cảnh"
@@ -12040,6 +12037,11 @@ msgstr "Đặt lại 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "Đặt lại thành"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "Không có hoạt động nào liên kết với bản ghi này."
msgid "There was an error while updating password."
msgstr "Đã có lỗi xảy ra trong quá trình cập nhật mật khẩu."
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "关于此用户"
msgid "About this workspace"
msgstr "关于此工作区"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "内容"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "上下文"
@@ -12040,6 +12037,11 @@ msgstr "重置 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "重置为"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "此记录没有关联的活动。"
msgid "There was an error while updating password."
msgstr "更新密码时出错。"
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
+7 -10
View File
@@ -677,11 +677,6 @@ msgstr "關於此使用者"
msgid "About this workspace"
msgstr "關於此工作區"
#. js-lingui-id: LuXP9q
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
#. js-lingui-id: pNW+Rt
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "Access Key ID"
@@ -3574,7 +3569,9 @@ msgid "Content"
msgstr "內容"
#. js-lingui-id: M73whl
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
#: src/modules/settings/ai/components/SettingsAiModelHoverCard.tsx
#: src/modules/command-menu-item/display/components/SidePanelCommandMenuItemDisplayPage.tsx
#: src/modules/ai/components/RoutingDebugDisplay.tsx
msgid "Context"
msgstr "上下文"
@@ -12040,6 +12037,11 @@ msgstr "重置 2FA"
msgid "Reset label to default"
msgstr ""
#. js-lingui-id: 1IWc1n
#: src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx
msgid "Reset to"
msgstr "重置為"
#. js-lingui-id: L+rMC9
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
@@ -14198,11 +14200,6 @@ msgstr "此記錄沒有相關的活動。"
msgid "There was an error while updating password."
msgstr "更新密碼時出現錯誤。"
#. js-lingui-id: vg1S0X
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "These apps are not vetted. Use at your own risk."
msgstr ""
#. js-lingui-id: AUV+TY
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
msgid "Thinking"
@@ -4,14 +4,20 @@ import { PINNED_COMMAND_MENU_ITEMS_GAP } from '@/command-menu-item/display/const
import { commandMenuPinnedInlineLayoutState } from '@/command-menu-item/display/states/commandMenuPinnedInlineLayoutState';
import { getVisibleCommandMenuItemCountForContainerWidth } from '@/command-menu-item/display/utils/getVisibleCommandMenuItemCountForContainerWidth';
import { groupCommandMenuItems } from '@/command-menu-item/utils/groupCommandMenuItems';
import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState';
import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup';
import { SidePanelList } from '@/side-panel/components/SidePanelList';
import { SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelPreviousComponentInstanceId';
import { SIDE_PANEL_RESET_CONTEXT_TO_SELECTION } from '@/side-panel/constants/SidePanelResetContextToSelection';
import { SidePanelResetContextToSelectionButton } from '@/side-panel/pages/root/components/SidePanelResetContextToSelectionButton';
import { useFilterCommandMenuItemsWithSidePanelSearch } from '@/side-panel/pages/root/hooks/useFilterCommandMenuItemsWithSidePanelSearch';
import { sidePanelSearchState } from '@/side-panel/states/sidePanelSearchState';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useLingui } from '@lingui/react/macro';
import { isNumber } from '@sniptt/guards';
import { useContext, useMemo } from 'react';
import { isDefined } from 'twenty-shared/utils';
import { CommandMenuItemAvailabilityType } from '~/generated-metadata/graphql';
export const SidePanelCommandMenuItemDisplayPage = () => {
@@ -93,8 +99,24 @@ export const SidePanelCommandMenuItemDisplayPage = () => {
...(noResults ? fallbackCommandMenuItems : []),
].map((item) => item.id);
// oxlint-disable-next-line twenty/matching-state-variable
const previousContextStoreCurrentObjectMetadataItemId =
useAtomComponentStateValue(
contextStoreCurrentObjectMetadataItemIdComponentState,
SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID,
);
if (isDefined(previousContextStoreCurrentObjectMetadataItemId)) {
selectableItemIds.unshift(SIDE_PANEL_RESET_CONTEXT_TO_SELECTION);
}
return (
<SidePanelList selectableItemIds={selectableItemIds} noResults={noResults}>
{isDefined(previousContextStoreCurrentObjectMetadataItemId) && (
<SidePanelGroup heading={t`Context`}>
<SidePanelResetContextToSelectionButton />
</SidePanelGroup>
)}
{matchingPinnedItems.length > 0 && (
<SidePanelGroup heading={t`Pinned`}>
{matchingPinnedItems.map((item) => (
@@ -0,0 +1,195 @@
import { renderHook } from '@testing-library/react';
import { act } from 'react';
import { SIDE_PANEL_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelComponentInstanceId';
import { SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelPreviousComponentInstanceId';
import { useSetGlobalCommandMenuContext } from '@/command-menu/hooks/useSetGlobalCommandMenuContext';
import { sidePanelPageInfoState } from '@/side-panel/states/sidePanelPageInfoState';
import { hasUserSelectedSidePanelListItemState } from '@/side-panel/states/hasUserSelectedSidePanelListItemState';
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
import { contextStoreAnyFieldFilterValueComponentState } from '@/context-store/states/contextStoreAnyFieldFilterValueComponentState';
import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState';
import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState';
import { contextStoreNumberOfSelectedRecordsComponentState } from '@/context-store/states/contextStoreNumberOfSelectedRecordsComponentState';
import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper';
import { mockedPersonRecords } from '~/testing/mock-data/generated/data/people/mock-people-data';
import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock';
import { contextStoreFilterGroupsComponentState } from '@/context-store/states/contextStoreFilterGroupsComponentState';
const personMockObjectMetadataItem =
getTestEnrichedObjectMetadataItemsMock().find(
(item) => item.nameSingular === 'person',
)!;
const peopleMock = [...mockedPersonRecords];
jotaiStore.set(
recordStoreFamilyState.atomFamily(peopleMock[0].id),
peopleMock[0],
);
jotaiStore.set(
recordStoreFamilyState.atomFamily(peopleMock[1].id),
peopleMock[1],
);
const wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({
apolloMocks: [],
componentInstanceId: SIDE_PANEL_COMPONENT_INSTANCE_ID,
contextStoreCurrentObjectMetadataNameSingular:
personMockObjectMetadataItem.nameSingular,
contextStoreCurrentViewId: 'my-view-id',
contextStoreTargetedRecordsRule: {
mode: 'selection',
selectedRecordIds: [peopleMock[0].id, peopleMock[1].id],
},
contextStoreNumberOfSelectedRecords: 2,
contextStoreCurrentViewType: ContextStoreViewType.Table,
});
describe('useSetGlobalCommandMenuContext', () => {
beforeEach(() => {
jest.clearAllMocks();
});
it('should reset all command menu context states', () => {
const { result } = renderHook(
() => {
const { setGlobalCommandMenuContext } =
useSetGlobalCommandMenuContext();
const contextStoreTargetedRecordsRule = useAtomComponentStateValue(
contextStoreTargetedRecordsRuleComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
const contextStoreNumberOfSelectedRecords = useAtomComponentStateValue(
contextStoreNumberOfSelectedRecordsComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
const contextStoreFilters = useAtomComponentStateValue(
contextStoreFiltersComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
const contextStoreFilterGroups = useAtomComponentStateValue(
contextStoreFilterGroupsComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
const contextStoreAnyFieldFilterValue = useAtomComponentStateValue(
contextStoreAnyFieldFilterValueComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
const contextStoreCurrentViewType = useAtomComponentStateValue(
contextStoreCurrentViewTypeComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
return {
setGlobalCommandMenuContext,
contextStoreTargetedRecordsRule,
contextStoreNumberOfSelectedRecords,
contextStoreFilters,
contextStoreFilterGroups,
contextStoreCurrentViewType,
contextStoreAnyFieldFilterValue,
};
},
{
wrapper,
},
);
expect(result.current.contextStoreTargetedRecordsRule).toEqual({
mode: 'selection',
selectedRecordIds: [peopleMock[0].id, peopleMock[1].id],
});
expect(result.current.contextStoreNumberOfSelectedRecords).toBe(2);
expect(result.current.contextStoreFilters).toEqual([]);
expect(result.current.contextStoreAnyFieldFilterValue).toEqual('');
expect(result.current.contextStoreCurrentViewType).toBe(
ContextStoreViewType.Table,
);
const sidePanelPageInfo = jotaiStore.get(sidePanelPageInfoState.atom);
expect(sidePanelPageInfo).toEqual({
title: undefined,
Icon: undefined,
instanceId: '',
});
const hasUserSelectedSidePanelListItem = jotaiStore.get(
hasUserSelectedSidePanelListItemState.atom,
);
expect(hasUserSelectedSidePanelListItem).toBe(false);
act(() => {
result.current.setGlobalCommandMenuContext();
});
expect(result.current.contextStoreTargetedRecordsRule).toEqual({
mode: 'selection',
selectedRecordIds: [],
});
expect(result.current.contextStoreNumberOfSelectedRecords).toBe(0);
expect(result.current.contextStoreFilters).toEqual([]);
expect(result.current.contextStoreAnyFieldFilterValue).toEqual('');
expect(result.current.contextStoreCurrentViewType).toBe(
ContextStoreViewType.Table,
);
const sidePanelPageInfoAfter = jotaiStore.get(sidePanelPageInfoState.atom);
expect(sidePanelPageInfoAfter).toEqual({
title: undefined,
Icon: undefined,
instanceId: '',
});
const hasUserSelectedSidePanelListItemAfter = jotaiStore.get(
hasUserSelectedSidePanelListItemState.atom,
);
expect(hasUserSelectedSidePanelListItemAfter).toBe(false);
});
it('should copy context store states to previous instance before resetting', () => {
const { result } = renderHook(
() => {
const { setGlobalCommandMenuContext } =
useSetGlobalCommandMenuContext();
// oxlint-disable-next-line twenty/matching-state-variable
const previousTargetedRecordsRule = useAtomComponentStateValue(
contextStoreTargetedRecordsRuleComponentState,
SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID,
);
// oxlint-disable-next-line twenty/matching-state-variable
const previousNumberOfSelectedRecords = useAtomComponentStateValue(
contextStoreNumberOfSelectedRecordsComponentState,
SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID,
);
return {
setGlobalCommandMenuContext,
previousTargetedRecordsRule,
previousNumberOfSelectedRecords,
};
},
{
wrapper,
},
);
act(() => {
result.current.setGlobalCommandMenuContext();
});
expect(result.current.previousTargetedRecordsRule).toEqual({
mode: 'selection',
selectedRecordIds: [peopleMock[0].id, peopleMock[1].id],
});
expect(result.current.previousNumberOfSelectedRecords).toBe(2);
});
});
@@ -1,4 +1,7 @@
import { useSetGlobalCommandMenuContext } from '@/command-menu/hooks/useSetGlobalCommandMenuContext';
import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
import { useKeyboardShortcutMenu } from '@/keyboard-shortcut-menu/hooks/useKeyboardShortcutMenu';
import { SIDE_PANEL_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelComponentInstanceId';
import { SIDE_PANEL_FOCUS_ID } from '@/side-panel/constants/SidePanelFocusId';
import { useOpenAskAIPageInSidePanel } from '@/side-panel/hooks/useOpenAskAIPageInSidePanel';
import { useOpenRecordsSearchPageInSidePanel } from '@/side-panel/hooks/useOpenRecordsSearchPageInSidePanel';
@@ -8,6 +11,7 @@ import { sidePanelPageState } from '@/side-panel/states/sidePanelPageState';
import { sidePanelSearchState } from '@/side-panel/states/sidePanelSearchState';
import { useGlobalHotkeys } from '@/ui/utilities/hotkey/hooks/useGlobalHotkeys';
import { useHotkeysOnFocusedElement } from '@/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElement';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
import { isNonEmptyString } from '@sniptt/guards';
@@ -25,6 +29,8 @@ export const useCommandMenuHotKeys = () => {
const { goBackFromSidePanel, goBackOneSubPageOrMainPage } =
useSidePanelHistory();
const { setGlobalCommandMenuContext } = useSetGlobalCommandMenuContext();
const sidePanelSearch = useAtomStateValue(sidePanelSearchState);
const { closeKeyboardShortcutMenu } = useKeyboardShortcutMenu();
@@ -33,6 +39,11 @@ export const useCommandMenuHotKeys = () => {
const isAiEnabled = useIsFeatureEnabled(FeatureFlagKey.IS_AI_ENABLED);
const contextStoreTargetedRecordsRule = useAtomComponentStateValue(
contextStoreTargetedRecordsRuleComponentState,
SIDE_PANEL_COMPONENT_INSTANCE_ID,
);
useGlobalHotkeys({
keys: ['ctrl+k', 'meta+k'],
callback: () => {
@@ -88,12 +99,27 @@ export const useCommandMenuHotKeys = () => {
return;
}
if (
sidePanelPage === SidePanelPages.CommandMenuDisplay &&
!(
contextStoreTargetedRecordsRule.mode === 'selection' &&
contextStoreTargetedRecordsRule.selectedRecordIds.length === 0
)
) {
setGlobalCommandMenuContext();
}
if (sidePanelPage !== SidePanelPages.CommandMenuDisplay) {
goBackOneSubPageOrMainPage();
}
},
focusId: SIDE_PANEL_FOCUS_ID,
dependencies: [sidePanelPage, sidePanelSearch, goBackOneSubPageOrMainPage],
dependencies: [
sidePanelPage,
sidePanelSearch,
contextStoreTargetedRecordsRule,
goBackOneSubPageOrMainPage,
setGlobalCommandMenuContext,
],
options: {
preventDefault: false,
enableOnFormTags: false,
@@ -0,0 +1,144 @@
import { contextStoreAnyFieldFilterValueComponentState } from '@/context-store/states/contextStoreAnyFieldFilterValueComponentState';
import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState';
import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState';
import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState';
import { contextStoreFilterGroupsComponentState } from '@/context-store/states/contextStoreFilterGroupsComponentState';
import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState';
import { contextStoreIsPageInEditModeComponentState } from '@/context-store/states/contextStoreIsPageInEditModeComponentState';
import { contextStoreNumberOfSelectedRecordsComponentState } from '@/context-store/states/contextStoreNumberOfSelectedRecordsComponentState';
import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
import { useCallback } from 'react';
import { useStore } from 'jotai';
export const useCopyContextStoreStates = () => {
const store = useStore();
const copyContextStoreStates = useCallback(
({
instanceIdToCopyFrom,
instanceIdToCopyTo,
}: {
instanceIdToCopyFrom: string;
instanceIdToCopyTo: string;
}) => {
const contextStoreCurrentObjectMetadataItemId = store.get(
contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreCurrentObjectMetadataItemId,
);
const contextStoreTargetedRecordsRule = store.get(
contextStoreTargetedRecordsRuleComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreTargetedRecordsRuleComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreTargetedRecordsRule,
);
const contextStoreNumberOfSelectedRecords = store.get(
contextStoreNumberOfSelectedRecordsComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreNumberOfSelectedRecordsComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreNumberOfSelectedRecords,
);
const contextStoreFilters = store.get(
contextStoreFiltersComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreFiltersComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreFilters,
);
const contextStoreFilterGroups = store.get(
contextStoreFilterGroupsComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreFilterGroupsComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreFilterGroups,
);
const contextStoreAnyFieldFilterValue = store.get(
contextStoreAnyFieldFilterValueComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreAnyFieldFilterValueComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreAnyFieldFilterValue,
);
const contextStoreCurrentViewId = store.get(
contextStoreCurrentViewIdComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreCurrentViewIdComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreCurrentViewId,
);
const contextStoreCurrentViewType = store.get(
contextStoreCurrentViewTypeComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreCurrentViewTypeComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreCurrentViewType,
);
const contextStoreIsFullTabWidgetInEditMode = store.get(
contextStoreIsPageInEditModeComponentState.atomFamily({
instanceId: instanceIdToCopyFrom,
}),
);
store.set(
contextStoreIsPageInEditModeComponentState.atomFamily({
instanceId: instanceIdToCopyTo,
}),
contextStoreIsFullTabWidgetInEditMode,
);
},
[store],
);
return { copyContextStoreStates };
};
@@ -0,0 +1,71 @@
import { contextStoreAnyFieldFilterValueComponentState } from '@/context-store/states/contextStoreAnyFieldFilterValueComponentState';
import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState';
import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState';
import { contextStoreFilterGroupsComponentState } from '@/context-store/states/contextStoreFilterGroupsComponentState';
import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState';
import { contextStoreNumberOfSelectedRecordsComponentState } from '@/context-store/states/contextStoreNumberOfSelectedRecordsComponentState';
import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
import { useCallback } from 'react';
import { useStore } from 'jotai';
export const useResetContextStoreStates = () => {
const store = useStore();
const resetContextStoreStates = useCallback(
(instanceId: string) => {
store.set(
contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({
instanceId,
}),
undefined,
);
store.set(
contextStoreTargetedRecordsRuleComponentState.atomFamily({
instanceId,
}),
{
mode: 'selection',
selectedRecordIds: [],
},
);
store.set(
contextStoreNumberOfSelectedRecordsComponentState.atomFamily({
instanceId,
}),
0,
);
store.set(
contextStoreFiltersComponentState.atomFamily({
instanceId,
}),
[],
);
store.set(
contextStoreFilterGroupsComponentState.atomFamily({
instanceId,
}),
[],
);
store.set(
contextStoreAnyFieldFilterValueComponentState.atomFamily({
instanceId,
}),
'',
);
store.set(
contextStoreCurrentViewIdComponentState.atomFamily({
instanceId,
}),
undefined,
);
},
[store],
);
return { resetContextStoreStates };
};
@@ -0,0 +1,182 @@
import { SIDE_PANEL_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelComponentInstanceId';
import { SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelPreviousComponentInstanceId';
import { sidePanelPageInfoState } from '@/side-panel/states/sidePanelPageInfoState';
import { hasUserSelectedSidePanelListItemState } from '@/side-panel/states/hasUserSelectedSidePanelListItemState';
import { contextStoreAnyFieldFilterValueComponentState } from '@/context-store/states/contextStoreAnyFieldFilterValueComponentState';
import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState';
import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState';
import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState';
import { contextStoreFilterGroupsComponentState } from '@/context-store/states/contextStoreFilterGroupsComponentState';
import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState';
import { contextStoreIsPageInEditModeComponentState } from '@/context-store/states/contextStoreIsPageInEditModeComponentState';
import { contextStoreNumberOfSelectedRecordsComponentState } from '@/context-store/states/contextStoreNumberOfSelectedRecordsComponentState';
import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType';
import { atom, useStore } from 'jotai';
import { useCallback } from 'react';
export const useSetGlobalCommandMenuContext = () => {
const store = useStore();
const setGlobalCommandMenuContext = useCallback(() => {
store.set(
atom(null, (get, batchSet) => {
const fromId = SIDE_PANEL_COMPONENT_INSTANCE_ID;
const toId = SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID;
batchSet(
contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreTargetedRecordsRuleComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreTargetedRecordsRuleComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreNumberOfSelectedRecordsComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreNumberOfSelectedRecordsComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreFiltersComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreFiltersComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreFilterGroupsComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreFilterGroupsComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreAnyFieldFilterValueComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreAnyFieldFilterValueComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreCurrentViewIdComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreCurrentViewIdComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreCurrentViewTypeComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreCurrentViewTypeComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreIsPageInEditModeComponentState.atomFamily({
instanceId: toId,
}),
get(
contextStoreIsPageInEditModeComponentState.atomFamily({
instanceId: fromId,
}),
),
);
batchSet(
contextStoreTargetedRecordsRuleComponentState.atomFamily({
instanceId: fromId,
}),
{ mode: 'selection', selectedRecordIds: [] },
);
batchSet(
contextStoreNumberOfSelectedRecordsComponentState.atomFamily({
instanceId: fromId,
}),
0,
);
batchSet(
contextStoreFiltersComponentState.atomFamily({
instanceId: fromId,
}),
[],
);
batchSet(
contextStoreFilterGroupsComponentState.atomFamily({
instanceId: fromId,
}),
[],
);
batchSet(
contextStoreAnyFieldFilterValueComponentState.atomFamily({
instanceId: fromId,
}),
'',
);
batchSet(
contextStoreCurrentViewTypeComponentState.atomFamily({
instanceId: fromId,
}),
ContextStoreViewType.Table,
);
batchSet(sidePanelPageInfoState.atom, {
title: undefined,
Icon: undefined,
instanceId: '',
});
batchSet(hasUserSelectedSidePanelListItemState.atom, false);
}),
);
}, [store]);
return {
setGlobalCommandMenuContext,
};
};
@@ -14,7 +14,6 @@ export const PAGE_LAYOUT_TAB_FRAGMENT = gql`
...PageLayoutWidgetFragment
}
pageLayoutId
isActive
createdAt
updatedAt
}
@@ -79,9 +79,7 @@ export const splitViewWithRelated = (
const { viewFields: _viewFields, ...viewFieldGroupProperties } =
viewFieldGroup;
flatViewFieldGroups.push({
...viewFieldGroupProperties,
});
flatViewFieldGroups.push(viewFieldGroupProperties);
}
}
@@ -13,7 +13,6 @@ describe('filterAndSortNavigationMenuItems', () => {
namePlural: 'people',
labelPlural: 'People',
icon: 'IconUser',
isActive: true,
} as EnrichedObjectMetadataItem;
const mockView: Pick<View, 'id' | 'objectMetadataId' | 'key'> = {
@@ -224,57 +223,6 @@ describe('filterAndSortNavigationMenuItems', () => {
expect(result).toEqual([]);
});
it('should filter out items for deactivated objects', () => {
const inactiveObjectMetadataItem = {
...mockObjectMetadataItem,
id: 'inactive-metadata-id',
isActive: false,
} as EnrichedObjectMetadataItem;
const result = filterAndSortNavigationMenuItems(
[
{
id: 'obj-1',
type: NavigationMenuItemType.OBJECT,
targetObjectMetadataId: 'inactive-metadata-id',
position: 1,
} as NavigationMenuItem,
],
[],
[inactiveObjectMetadataItem],
);
expect(result).toEqual([]);
});
it('should filter out view items for deactivated objects', () => {
const inactiveObjectMetadataItem = {
...mockObjectMetadataItem,
id: 'inactive-metadata-id',
isActive: false,
} as EnrichedObjectMetadataItem;
const viewForInactiveObject: Pick<View, 'id' | 'objectMetadataId' | 'key'> =
{
id: 'view-for-inactive',
objectMetadataId: 'inactive-metadata-id',
key: ViewKey.INDEX,
};
const result = filterAndSortNavigationMenuItems(
[
{
id: 'view-item-1',
type: NavigationMenuItemType.VIEW,
viewId: 'view-for-inactive',
position: 1,
} as NavigationMenuItem,
],
[viewForInactiveObject],
[inactiveObjectMetadataItem],
);
expect(result).toEqual([]);
});
it('should keep folder items', () => {
const result = filterAndSortNavigationMenuItems(
[
@@ -7,12 +7,8 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql';
export const filterAndSortNavigationMenuItems = (
navigationMenuItems: NavigationMenuItem[],
views: Pick<View, 'id' | 'objectMetadataId' | 'key'>[],
objectMetadataItems: Pick<EnrichedObjectMetadataItem, 'id' | 'isActive'>[],
objectMetadataItems: Pick<EnrichedObjectMetadataItem, 'id'>[],
): NavigationMenuItem[] => {
const activeObjectMetadataItems = objectMetadataItems.filter(
(meta) => meta.isActive,
);
return navigationMenuItems
.filter((item) => {
if (item.type === NavigationMenuItemType.FOLDER) {
@@ -24,7 +20,7 @@ export const filterAndSortNavigationMenuItems = (
if (item.type === NavigationMenuItemType.OBJECT) {
return (
isDefined(item.targetObjectMetadataId) &&
activeObjectMetadataItems.some(
objectMetadataItems.some(
(meta) => meta.id === item.targetObjectMetadataId,
)
);
@@ -36,9 +32,7 @@ export const filterAndSortNavigationMenuItems = (
const view = views.find((view) => view.id === item.viewId);
return (
isDefined(view) &&
activeObjectMetadataItems.some(
(meta) => meta.id === view.objectMetadataId,
)
objectMetadataItems.some((meta) => meta.id === view.objectMetadataId)
);
}
if (item.type === NavigationMenuItemType.RECORD) {
@@ -46,7 +40,7 @@ export const filterAndSortNavigationMenuItems = (
isDefined(item.targetRecordId) &&
isDefined(item.targetObjectMetadataId) &&
isDefined(item.targetRecordIdentifier) &&
activeObjectMetadataItems.some(
objectMetadataItems.some(
(meta) => meta.id === item.targetObjectMetadataId,
)
);
@@ -1,15 +1,15 @@
import { isNonEmptyString } from '@sniptt/guards';
import { useLocation, useNavigate } from 'react-router-dom';
import { NavigationMenuItemType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { useIsMobile } from 'twenty-ui/utilities';
import { isNonEmptyString } from '@sniptt/guards';
import { type NavigationMenuItem } from '~/generated-metadata/graphql';
import { currentNavigationMenuItemFolderIdState } from '@/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState';
import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState';
import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem';
import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink';
import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem';
import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector';
import { currentNavigationMenuItemFolderIdState } from '@/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState';
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
@@ -38,25 +38,7 @@ export const useNavigationMenuItemFolderOpenState = ({
currentNavigationMenuItemFolderIdState,
);
const selectedNavigationMenuItemIndex = navigationMenuItems.findIndex(
(item) => {
const computedLink = getNavigationMenuItemComputedLink(
item,
objectMetadataItems,
views,
);
return isLocationMatchingNavigationMenuItem(
currentPath,
currentViewPath,
item.type,
computedLink,
);
},
);
const isExplicitlyOpen = openNavigationMenuItemFolderIds.includes(folderId);
const hasActiveChild = selectedNavigationMenuItemIndex >= 0;
const isOpen = isExplicitlyOpen || hasActiveChild;
const isOpen = openNavigationMenuItemFolderIds.includes(folderId);
const handleToggle = () => {
if (isMobile) {
@@ -65,7 +47,7 @@ export const useNavigationMenuItemFolderOpenState = ({
);
} else {
setOpenNavigationMenuItemFolderIds((current) =>
current.includes(folderId)
isOpen
? current.filter((id) => id !== folderId)
: [...current, folderId],
);
@@ -96,6 +78,22 @@ export const useNavigationMenuItemFolderOpenState = ({
}
};
const selectedNavigationMenuItemIndex = navigationMenuItems.findIndex(
(item) => {
const computedLink = getNavigationMenuItemComputedLink(
item,
objectMetadataItems,
views,
);
return isLocationMatchingNavigationMenuItem(
currentPath,
currentViewPath,
item.type,
computedLink,
);
},
);
return {
isOpen,
handleToggle,
@@ -48,7 +48,6 @@ export const RecordBoardCardCellHoveredPortalContent = () => {
fieldDefinition,
recordId,
prefix: RECORD_BOARD_CARD_INPUT_ID_PREFIX,
onFileUploadClose: () => setRecordBoardCardEditModePosition(null),
});
}
};
@@ -48,7 +48,6 @@ export const RecordCalendarCardCellHoveredPortalContent = () => {
fieldDefinition,
recordId,
prefix: RECORD_CALENDAR_CARD_INPUT_ID_PREFIX,
onFileUploadClose: () => setRecordCalendarCardEditModePosition(null),
});
}
};
@@ -52,7 +52,6 @@ export const RecordFieldListCellHoveredPortalContent = () => {
fieldDefinition,
recordId,
prefix: instanceId,
onFileUploadClose: () => setRecordFieldListCellEditModePosition(null),
});
}
};
@@ -46,15 +46,10 @@ const StyledAdvancedTextFieldInnerContainer = styled.div`
width: 100%;
`;
const StyledEditorActionButtonContainer = styled.div<{
hasVariablePicker?: boolean;
}>`
const StyledEditorActionButtonContainer = styled.div`
margin-top: ${themeCssVariables.spacing[1]};
position: absolute;
right: ${({ hasVariablePicker }) =>
hasVariablePicker
? `calc(${themeCssVariables.spacing[7]} + ${themeCssVariables.spacing[2]})`
: themeCssVariables.spacing[1]};
right: ${themeCssVariables.spacing[1]};
top: ${themeCssVariables.spacing[0]};
z-index: 1;
`;
@@ -219,9 +214,7 @@ export const FormAdvancedTextFieldInput = ({
)}
{enableFullScreen && (
<StyledEditorActionButtonContainer
hasVariablePicker={isDefined(VariablePicker) && !readonly}
>
<StyledEditorActionButtonContainer>
{!readonly && !isFullScreen && (
<LightIconButton
Icon={IconMaximize}
@@ -66,12 +66,10 @@ export const useOpenFieldInputEditMode = () => {
fieldDefinition,
recordId,
prefix,
onFileUploadClose,
}: {
fieldDefinition: FieldDefinition<FieldMetadata>;
recordId: string;
prefix?: string;
onFileUploadClose?: () => void;
}) => {
const objectMetadataItems = store.get(objectMetadataItemsSelector.atom);
@@ -108,7 +106,6 @@ export const useOpenFieldInputEditMode = () => {
updateOneRecordInput: updateInput,
});
},
onFileUploadClose,
fieldDefinition: {
metadata: {
settings: fieldDefinition.metadata.settings ?? undefined,

Some files were not shown because too many files have changed in this diff Show More