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
1095 changed files with 20221 additions and 36171 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": "yarn@4.9.2",
"scripts": {
"twenty": "twenty",
@@ -1,42 +0,0 @@
name: CD
on:
push:
branches:
- main
pull_request:
types: [labeled]
permissions:
contents: read
env:
TWENTY_DEPLOY_URL: http://localhost:3000
concurrency:
group: cd-${{ github.ref }}
cancel-in-progress: true
jobs:
deploy-and-install:
if: >-
github.event_name == 'push' ||
(github.event_name == 'pull_request' && github.event.label.name == 'deploy')
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Deploy
uses: twentyhq/twenty/.github/actions/deploy-twenty-app@main
with:
api-url: ${{ env.TWENTY_DEPLOY_URL }}
api-key: ${{ secrets.TWENTY_DEPLOY_API_KEY }}
- name: Install
uses: twentyhq/twenty/.github/actions/install-twenty-app@main
with:
api-url: ${{ env.TWENTY_DEPLOY_URL }}
api-key: ${{ secrets.TWENTY_DEPLOY_API_KEY }}
@@ -1,48 +0,0 @@
name: CI
on:
push:
branches:
- main
pull_request: {}
permissions:
contents: read
env:
TWENTY_VERSION: latest
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Spawn Twenty test instance
id: twenty
uses: twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main
with:
twenty-version: ${{ env.TWENTY_VERSION }}
- name: Enable Corepack
run: corepack enable
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Run integration tests
run: yarn test
env:
TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }}
TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }}
@@ -35,4 +35,3 @@ yarn-error.log*
# typescript
*.tsbuildinfo
*.d.ts
@@ -1 +0,0 @@
24.5.0
@@ -1,19 +1,40 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript"],
"plugins": ["typescript", "import", "unicorn"],
"categories": {
"correctness": "off"
},
"ignorePatterns": ["node_modules", "dist"],
"ignorePatterns": ["node_modules"],
"rules": {
"func-style": ["error", "declaration", { "allowArrowFunctions": true }],
"no-console": ["warn", { "allow": ["group", "groupCollapsed", "groupEnd"] }],
"no-control-regex": "off",
"no-debugger": "error",
"no-duplicate-imports": "error",
"no-undef": "off",
"no-unused-vars": "off",
"no-redeclare": "off",
"typescript/no-unused-vars": [
"warn",
{
"argsIgnorePattern": "^_"
}
],
"typescript/no-explicit-any": "off"
"import/no-duplicates": "error",
"typescript/no-redeclare": "error",
"typescript/ban-ts-comment": "error",
"typescript/consistent-type-imports": ["error", {
"prefer": "type-imports",
"fixStyle": "inline-type-imports"
}],
"typescript/explicit-function-return-type": "off",
"typescript/explicit-module-boundary-types": "off",
"typescript/no-empty-object-type": ["error", {
"allowInterfaces": "with-single-extends"
}],
"typescript/no-empty-function": "off",
"typescript/no-explicit-any": "off",
"typescript/no-unused-vars": ["warn", {
"vars": "all",
"varsIgnorePattern": "^_",
"args": "after-used",
"argsIgnorePattern": "^_"
}]
}
}
@@ -1 +1,5 @@
yarnPath: .yarn/releases/yarn-4.9.2.cjs
nodeLinker: node-modules
enableTransparentWorkspaces: false
@@ -1,14 +0,0 @@
## Base documentation
- Documentation: https://docs.twenty.com/developers/extend/apps/getting-started
- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples/postcard
## UUID requirement
- All generated UUIDs must be valid UUID v4.
## Common Pitfalls
- Creating an object without an index view associated. Unless this is a technical object, user will need to visualize it.
- Creating a view without a navigationMenuItem associated. This will make the view available on the left sidebar.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -1,14 +0,0 @@
## Base documentation
- Documentation: https://docs.twenty.com/developers/extend/apps/getting-started
- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples/postcard
## UUID requirement
- All generated UUIDs must be valid UUID v4.
## Common Pitfalls
- Creating an object without an index view associated. Unless this is a technical object, user will need to visualize it.
- Creating a view without a navigationMenuItem associated. This will make the view available on the left sidebar.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -1,14 +0,0 @@
## Base documentation
- Documentation: https://docs.twenty.com/developers/extend/apps/getting-started
- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples/postcard
## UUID requirement
- All generated UUIDs must be valid UUID v4.
## Common Pitfalls
- Creating an object without an index view associated. Unless this is a technical object, user will need to visualize it.
- Creating a view without a navigationMenuItem associated. This will make the view available on the left sidebar.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -1,11 +1,44 @@
This is a [Twenty](https://twenty.com) application bootstrapped with [`create-twenty-app`](https://www.npmjs.com/package/create-twenty-app).
# Self Hosting
## Getting Started
Used to manage billing and telemetry of self-hosted instances
Run `yarn twenty help` to list all available commands.
## Features
## Learn More
### Telemetry Webhook
- [Twenty Apps documentation](https://docs.twenty.com/developers/extend/apps/getting-started)
- [twenty-sdk CLI reference](https://www.npmjs.com/package/twenty-sdk)
- [Discord](https://discord.gg/cx5n4Jzs57)
Receives user signup telemetry events from self-hosted Twenty instances and creates/updates selfHostingUser records.
**Endpoint:** `POST /webhook/telemetry`
**Payload Structure:**
```json
{
"action": "user_signup",
"timestamp": "2025-11-21T...",
"version": "1",
"payload": {
"userId": "uuid",
"workspaceId": "uuid",
"payload": {
"events": [
{
"userEmail": "user@example.com",
"userId": "uuid",
"userFirstName": "John",
"userLastName": "Doe",
"locale": "en",
"serverUrl": "https://self-hosted.example.com"
}
]
}
}
}
```
**Response:**
```json
{
"success": true,
"message": "Self hosting user created/updated: uuid"
}
```
@@ -1,6 +1,6 @@
{
"name": "self-hosting",
"version": "1.0.0",
"version": "0.0.1",
"license": "MIT",
"engines": {
"node": "^24.5.0",
@@ -11,22 +11,13 @@
"scripts": {
"twenty": "twenty",
"lint": "oxlint -c .oxlintrc.json .",
"lint:fix": "oxlint --fix -c .oxlintrc.json .",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"twenty-client-sdk": "1.22.0-canary.6",
"twenty-sdk": "1.22.0-canary.6"
"lint:fix": "oxlint --fix -c .oxlintrc.json ."
},
"devDependencies": {
"@types/node": "^24.7.2",
"@types/react": "^19.0.0",
"oxlint": "^0.16.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"typescript": "^5.9.3",
"vite-tsconfig-paths": "^4.2.1",
"vitest": "^3.1.1"
}
"twenty-sdk": "0.6.2"
},
"$schema": "https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-cli/src/constants/schemas/appManifest.schema.json",
"universalIdentifier": "a7070f46-3158-4b40-828f-8e6b1febc233"
}
@@ -1,72 +0,0 @@
import { appBuild, appDeploy, appInstall, appUninstall } from 'twenty-sdk/cli';
import { MetadataApiClient } from 'twenty-client-sdk/metadata';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/application.config';
const APP_PATH = process.cwd();
describe('App installation', () => {
beforeAll(async () => {
const buildResult = await appBuild({
appPath: APP_PATH,
tarball: true,
onProgress: (message: string) => console.log(`[build] ${message}`),
});
if (!buildResult.success) {
throw new Error(
`Build failed: ${buildResult.error?.message ?? 'Unknown error'}`,
);
}
const deployResult = await appDeploy({
tarballPath: buildResult.data.tarballPath!,
onProgress: (message: string) => console.log(`[deploy] ${message}`),
});
if (!deployResult.success) {
throw new Error(
`Deploy failed: ${deployResult.error?.message ?? 'Unknown error'}`,
);
}
const installResult = await appInstall({ appPath: APP_PATH });
if (!installResult.success) {
throw new Error(
`Install failed: ${installResult.error?.message ?? 'Unknown error'}`,
);
}
});
afterAll(async () => {
const uninstallResult = await appUninstall({ appPath: APP_PATH });
if (!uninstallResult.success) {
console.warn(
`App uninstall failed: ${
uninstallResult.error?.message ?? 'Unknown error'
}`,
);
}
});
it('should find the installed app in the applications list', async () => {
const metadataClient = new MetadataApiClient();
const result = await metadataClient.query({
findManyApplications: {
id: true,
name: true,
universalIdentifier: true,
},
});
const installedApp = result.findManyApplications.find(
(application: { universalIdentifier: string }) =>
application.universalIdentifier === APPLICATION_UNIVERSAL_IDENTIFIER,
);
expect(installedApp).toBeDefined();
});
});
@@ -1,53 +0,0 @@
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import { beforeAll } from 'vitest';
const CONFIG_DIR = path.join(os.homedir(), '.twenty');
const CONFIG_PATH = path.join(CONFIG_DIR, 'config.test.json');
beforeAll(async () => {
const apiUrl = process.env.TWENTY_API_URL!;
const token = process.env.TWENTY_API_KEY!;
if (!apiUrl || !token) {
throw new Error(
'TWENTY_API_URL and TWENTY_API_KEY must be set.\n' +
'Start a local server: yarn twenty server start\n' +
'Or set them in vitest env config.',
);
}
let response: Response;
try {
response = await fetch(`${apiUrl}/healthz`);
} catch {
throw new Error(
`Twenty server is not reachable at ${apiUrl}. ` +
'Make sure the server is running before executing integration tests.',
);
}
if (!response.ok) {
throw new Error(`Server at ${apiUrl} returned ${response.status}`);
}
fs.mkdirSync(CONFIG_DIR, { recursive: true });
fs.writeFileSync(
CONFIG_PATH,
JSON.stringify(
{
remotes: {
local: { apiUrl, apiKey: token },
},
defaultRemote: 'local',
},
null,
2,
),
);
process.env.TWENTY_APP_ACCESS_TOKEN ??= token;
});
@@ -1,9 +1,6 @@
import { defineApplication } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export const APPLICATION_UNIVERSAL_IDENTIFIER =
'94f7db30-59e5-4b09-a5fe-64cd3d4a65b0';
export default defineApplication({
universalIdentifier: '94f7db30-59e5-4b09-a5fe-64cd3d4a65b0',
displayName: 'Self Hosting',
@@ -5,7 +5,7 @@ import {
type ObjectRecordUpdateEvent,
} from 'twenty-sdk';
import { SELF_HOSTING_USER_NAME_SINGULAR } from 'src/objects/selfHostingUser.object';
import { CoreApiClient } from 'twenty-client-sdk/core';
import { CoreApiClient } from 'twenty-sdk/clients';
type SelfHostingUser = {
id: string;
@@ -1,5 +1,5 @@
import { defineLogicFunction, type RoutePayload } from 'twenty-sdk';
import { CoreApiClient } from 'twenty-client-sdk/core';
import { CoreApiClient } from 'twenty-sdk/clients';
import { type TelemetryEvent } from 'src/logic-functions/types/telemetry-event.type';
export const main = async (
@@ -4,7 +4,7 @@ import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.const
export default defineRole({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.roles.defaultRole.universalIdentifier,
label: 'Self hosting default role',
label: 'default role',
description: 'Add a description for your role',
canReadAllObjectRecords: true,
canUpdateAllObjectRecords: true,
@@ -27,16 +27,5 @@
"~/*": ["./*"]
}
},
"exclude": [
"node_modules",
"dist",
"**/*.test.ts",
"**/*.spec.ts",
"**/*.integration-test.ts"
],
"references": [
{
"path": "./tsconfig.spec.json"
}
]
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
}
@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"composite": true,
"types": ["vitest/globals", "node"]
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["node_modules", "dist"]
}
@@ -1,24 +0,0 @@
import tsconfigPaths from 'vite-tsconfig-paths';
import { defineConfig } from 'vitest/config';
export default defineConfig({
plugins: [
tsconfigPaths({
projects: ['tsconfig.spec.json'],
ignoreConfigErrors: true,
}),
],
test: {
testTimeout: 120_000,
hookTimeout: 120_000,
include: ['src/**/*.integration-test.ts'],
setupFiles: ['src/__tests__/setup-test.ts'],
env: {
TWENTY_API_URL: process.env.TWENTY_API_URL ?? 'http://localhost:2020',
TWENTY_API_KEY:
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
},
},
});
File diff suppressed because it is too large Load Diff
@@ -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")
@@ -735,7 +733,6 @@ enum ViewType {
KANBAN
CALENDAR
FIELDS_WIDGET
TABLE_WIDGET
}
enum ViewKey {
@@ -793,6 +790,7 @@ type Workspace {
isCustomDomainEnabled: Boolean!
editableProfileFields: [String!]
defaultRole: Role
version: String
fastModel: String!
smartModel: String!
aiAdditionalInstructions: String
@@ -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")
}
@@ -1258,7 +1254,6 @@ enum PageLayoutType {
RECORD_INDEX
RECORD_PAGE
DASHBOARD
STANDALONE_PAGE
}
type Analytics {
@@ -1487,7 +1482,6 @@ type NavigationMenuItem {
icon: String
color: String
folderId: UUID
pageLayoutId: UUID
position: Float!
applicationId: UUID
createdAt: DateTime!
@@ -1501,7 +1495,6 @@ enum NavigationMenuItemType {
LINK
OBJECT
RECORD
PAGE_LAYOUT
}
type ObjectRecordEventProperties {
@@ -1599,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
}
@@ -2200,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 {
@@ -2313,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!
@@ -2321,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!
@@ -2587,7 +2581,6 @@ type Location {
}
type PlaceDetailsResult {
street: String
state: String
postcode: String
city: String
@@ -2721,7 +2714,6 @@ enum EngineComponentKey {
enum CommandMenuItemAvailabilityType {
GLOBAL
GLOBAL_OBJECT_CONTEXT
RECORD_SELECTION
FALLBACK
}
@@ -3368,7 +3360,6 @@ type Query {
workspaceLookupAdminPanel(workspaceId: UUID!): UserLookup!
getAdminWorkspaceChatThreads(workspaceId: UUID!): [AdminWorkspaceChatThread!]!
getAdminChatThreadMessages(threadId: UUID!): AdminChatThreadMessages!
findOneAdminApplicationRegistration(id: String!): ApplicationRegistration!
getUsageAnalytics(input: UsageAnalyticsInput): UsageAnalytics!
getPostgresCredentials: PostgresCredentials
findManyPublicDomains: [PublicDomain!]!
@@ -3575,7 +3566,6 @@ type Mutation {
updatePageLayout(id: String!, input: UpdatePageLayoutInput!): PageLayout!
destroyPageLayout(id: String!): Boolean!
updatePageLayoutWithTabsAndWidgets(id: String!, input: UpdatePageLayoutWithTabsInput!): PageLayout!
resetPageLayoutToDefault(id: String!): PageLayout!
resetPageLayoutWidgetToDefault(id: String!): PageLayoutWidget!
resetPageLayoutTabToDefault(id: String!): PageLayoutTab!
createPageLayoutWidget(input: CreatePageLayoutWidgetInput!): PageLayoutWidget!
@@ -3667,7 +3657,6 @@ type Mutation {
verifyTwoFactorAuthenticationMethodForAuthenticatedUser(otp: String!): VerifyTwoFactorAuthenticationMethod!
deleteUser: User!
deleteUserFromWorkspace(workspaceMemberIdToDelete: String!): UserWorkspace!
updateWorkspaceMemberSettings(input: UpdateWorkspaceMemberSettingsInput!): Boolean!
updateUserEmail(newEmail: String!, verifyEmailRedirectPath: String): Boolean!
resendEmailVerificationToken(email: String!, origin: String!): ResendEmailVerificationToken!
activateWorkspace(data: ActivateWorkspaceInput!): Workspace!
@@ -3746,7 +3735,6 @@ input CreateNavigationMenuItemInput {
icon: String
color: String
folderId: UUID
pageLayoutId: UUID
position: Float
}
@@ -3765,7 +3753,6 @@ input UpdateNavigationMenuItemInput {
link: String
icon: String
color: String
pageLayoutId: UUID
}
"""The `Upload` scalar type represents a file upload."""
@@ -4602,11 +4589,6 @@ input UpdateApplicationRegistrationVariablePayload {
description: String
}
input UpdateWorkspaceMemberSettingsInput {
workspaceMemberId: UUID!
update: JSON!
}
input ActivateWorkspaceInput {
displayName: String
}
@@ -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 */
@@ -534,7 +532,7 @@ export interface View {
__typename: 'View'
}
export type ViewType = 'TABLE' | 'KANBAN' | 'CALENDAR' | 'FIELDS_WIDGET' | 'TABLE_WIDGET'
export type ViewType = 'TABLE' | 'KANBAN' | 'CALENDAR' | 'FIELDS_WIDGET'
export type ViewKey = 'INDEX'
@@ -579,6 +577,7 @@ export interface Workspace {
isCustomDomainEnabled: Scalars['Boolean']
editableProfileFields?: Scalars['String'][]
defaultRole?: Role
version?: Scalars['String']
fastModel: Scalars['String']
smartModel: Scalars['String']
aiAdditionalInstructions?: Scalars['String']
@@ -675,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']
@@ -961,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']
@@ -981,7 +978,7 @@ export interface PageLayout {
__typename: 'PageLayout'
}
export type PageLayoutType = 'RECORD_INDEX' | 'RECORD_PAGE' | 'DASHBOARD' | 'STANDALONE_PAGE'
export type PageLayoutType = 'RECORD_INDEX' | 'RECORD_PAGE' | 'DASHBOARD'
export interface Analytics {
/** Boolean that confirms query was dispatched */
@@ -1210,7 +1207,6 @@ export interface NavigationMenuItem {
icon?: Scalars['String']
color?: Scalars['String']
folderId?: Scalars['UUID']
pageLayoutId?: Scalars['UUID']
position: Scalars['Float']
applicationId?: Scalars['UUID']
createdAt: Scalars['DateTime']
@@ -1219,7 +1215,7 @@ export interface NavigationMenuItem {
__typename: 'NavigationMenuItem'
}
export type NavigationMenuItemType = 'VIEW' | 'FOLDER' | 'LINK' | 'OBJECT' | 'RECORD' | 'PAGE_LAYOUT'
export type NavigationMenuItemType = 'VIEW' | 'FOLDER' | 'LINK' | 'OBJECT' | 'RECORD'
export interface ObjectRecordEventProperties {
updatedFields?: Scalars['String'][]
@@ -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']
@@ -2297,7 +2293,6 @@ export interface Location {
}
export interface PlaceDetailsResult {
street?: Scalars['String']
state?: Scalars['String']
postcode?: Scalars['String']
city?: Scalars['String']
@@ -2369,7 +2364,7 @@ export interface CommandMenuItem {
export type EngineComponentKey = 'NAVIGATE_TO_NEXT_RECORD' | 'NAVIGATE_TO_PREVIOUS_RECORD' | 'CREATE_NEW_RECORD' | 'DELETE_RECORDS' | 'RESTORE_RECORDS' | 'DESTROY_RECORDS' | 'ADD_TO_FAVORITES' | 'REMOVE_FROM_FAVORITES' | 'EXPORT_NOTE_TO_PDF' | 'EXPORT_RECORDS' | 'UPDATE_MULTIPLE_RECORDS' | 'MERGE_MULTIPLE_RECORDS' | 'IMPORT_RECORDS' | 'EXPORT_VIEW' | 'SEE_DELETED_RECORDS' | 'CREATE_NEW_VIEW' | 'HIDE_DELETED_RECORDS' | 'EDIT_RECORD_PAGE_LAYOUT' | 'EDIT_DASHBOARD_LAYOUT' | 'SAVE_DASHBOARD_LAYOUT' | 'CANCEL_DASHBOARD_LAYOUT' | 'DUPLICATE_DASHBOARD' | 'ACTIVATE_WORKFLOW' | 'DEACTIVATE_WORKFLOW' | 'DISCARD_DRAFT_WORKFLOW' | 'TEST_WORKFLOW' | 'SEE_ACTIVE_VERSION_WORKFLOW' | 'SEE_RUNS_WORKFLOW' | 'SEE_VERSIONS_WORKFLOW' | 'ADD_NODE_WORKFLOW' | 'TIDY_UP_WORKFLOW' | 'DUPLICATE_WORKFLOW' | 'SEE_VERSION_WORKFLOW_RUN' | 'SEE_WORKFLOW_WORKFLOW_RUN' | 'STOP_WORKFLOW_RUN' | 'SEE_RUNS_WORKFLOW_VERSION' | 'SEE_WORKFLOW_WORKFLOW_VERSION' | 'USE_AS_DRAFT_WORKFLOW_VERSION' | 'SEE_VERSIONS_WORKFLOW_VERSION' | 'SEARCH_RECORDS' | 'SEARCH_RECORDS_FALLBACK' | 'ASK_AI' | 'VIEW_PREVIOUS_AI_CHATS' | 'NAVIGATION' | 'TRIGGER_WORKFLOW_VERSION' | 'FRONT_COMPONENT_RENDERER' | 'REPLY_TO_EMAIL_THREAD' | 'COMPOSE_EMAIL' | 'GO_TO_PEOPLE' | 'GO_TO_COMPANIES' | 'GO_TO_DASHBOARDS' | 'GO_TO_OPPORTUNITIES' | 'GO_TO_SETTINGS' | 'GO_TO_TASKS' | 'GO_TO_NOTES' | 'GO_TO_WORKFLOWS' | 'GO_TO_RUNS' | 'DELETE_SINGLE_RECORD' | 'DELETE_MULTIPLE_RECORDS' | 'RESTORE_SINGLE_RECORD' | 'RESTORE_MULTIPLE_RECORDS' | 'DESTROY_SINGLE_RECORD' | 'DESTROY_MULTIPLE_RECORDS' | 'EXPORT_FROM_RECORD_INDEX' | 'EXPORT_FROM_RECORD_SHOW' | 'EXPORT_MULTIPLE_RECORDS'
export type CommandMenuItemAvailabilityType = 'GLOBAL' | 'GLOBAL_OBJECT_CONTEXT' | 'RECORD_SELECTION' | 'FALLBACK'
export type CommandMenuItemAvailabilityType = 'GLOBAL' | 'RECORD_SELECTION' | 'FALLBACK'
export type CommandMenuItemPayload = (PathCommandMenuItemPayload | ObjectMetadataCommandMenuItemPayload) & { __isUnion?: true }
@@ -2929,7 +2924,6 @@ export interface Query {
workspaceLookupAdminPanel: UserLookup
getAdminWorkspaceChatThreads: AdminWorkspaceChatThread[]
getAdminChatThreadMessages: AdminChatThreadMessages
findOneAdminApplicationRegistration: ApplicationRegistration
getUsageAnalytics: UsageAnalytics
getPostgresCredentials?: PostgresCredentials
findManyPublicDomains: PublicDomain[]
@@ -3029,7 +3023,6 @@ export interface Mutation {
updatePageLayout: PageLayout
destroyPageLayout: Scalars['Boolean']
updatePageLayoutWithTabsAndWidgets: PageLayout
resetPageLayoutToDefault: PageLayout
resetPageLayoutWidgetToDefault: PageLayoutWidget
resetPageLayoutTabToDefault: PageLayoutTab
createPageLayoutWidget: PageLayoutWidget
@@ -3121,7 +3114,6 @@ export interface Mutation {
verifyTwoFactorAuthenticationMethodForAuthenticatedUser: VerifyTwoFactorAuthenticationMethod
deleteUser: User
deleteUserFromWorkspace: UserWorkspace
updateWorkspaceMemberSettings: Scalars['Boolean']
updateUserEmail: Scalars['Boolean']
resendEmailVerificationToken: ResendEmailVerificationToken
activateWorkspace: Workspace
@@ -3639,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
@@ -3714,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 */
@@ -3792,6 +3782,7 @@ export interface WorkspaceGenqlSelection{
isCustomDomainEnabled?: boolean | number
editableProfileFields?: boolean | number
defaultRole?: RoleGenqlSelection
version?: boolean | number
fastModel?: boolean | number
smartModel?: boolean | number
aiAdditionalInstructions?: boolean | number
@@ -3888,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
@@ -4201,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
@@ -4461,7 +4450,6 @@ export interface NavigationMenuItemGenqlSelection{
icon?: boolean | number
color?: boolean | number
folderId?: boolean | number
pageLayoutId?: boolean | number
position?: boolean | number
applicationId?: boolean | number
createdAt?: boolean | number
@@ -5161,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
}
@@ -5281,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
@@ -5290,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
@@ -5620,7 +5608,6 @@ export interface LocationGenqlSelection{
}
export interface PlaceDetailsResultGenqlSelection{
street?: boolean | number
state?: boolean | number
postcode?: boolean | number
city?: boolean | number
@@ -6298,7 +6285,6 @@ export interface QueryGenqlSelection{
workspaceLookupAdminPanel?: (UserLookupGenqlSelection & { __args: {workspaceId: Scalars['UUID']} })
getAdminWorkspaceChatThreads?: (AdminWorkspaceChatThreadGenqlSelection & { __args: {workspaceId: Scalars['UUID']} })
getAdminChatThreadMessages?: (AdminChatThreadMessagesGenqlSelection & { __args: {threadId: Scalars['UUID']} })
findOneAdminApplicationRegistration?: (ApplicationRegistrationGenqlSelection & { __args: {id: Scalars['String']} })
getUsageAnalytics?: (UsageAnalyticsGenqlSelection & { __args?: {input?: (UsageAnalyticsInput | null)} })
getPostgresCredentials?: PostgresCredentialsGenqlSelection
findManyPublicDomains?: PublicDomainGenqlSelection
@@ -6417,7 +6403,6 @@ export interface MutationGenqlSelection{
updatePageLayout?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutInput} })
destroyPageLayout?: { __args: {id: Scalars['String']} }
updatePageLayoutWithTabsAndWidgets?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutWithTabsInput} })
resetPageLayoutToDefault?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String']} })
resetPageLayoutWidgetToDefault?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String']} })
resetPageLayoutTabToDefault?: (PageLayoutTabGenqlSelection & { __args: {id: Scalars['String']} })
createPageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {input: CreatePageLayoutWidgetInput} })
@@ -6509,7 +6494,6 @@ export interface MutationGenqlSelection{
verifyTwoFactorAuthenticationMethodForAuthenticatedUser?: (VerifyTwoFactorAuthenticationMethodGenqlSelection & { __args: {otp: Scalars['String']} })
deleteUser?: UserGenqlSelection
deleteUserFromWorkspace?: (UserWorkspaceGenqlSelection & { __args: {workspaceMemberIdToDelete: Scalars['String']} })
updateWorkspaceMemberSettings?: { __args: {input: UpdateWorkspaceMemberSettingsInput} }
updateUserEmail?: { __args: {newEmail: Scalars['String'], verifyEmailRedirectPath?: (Scalars['String'] | null)} }
resendEmailVerificationToken?: (ResendEmailVerificationTokenGenqlSelection & { __args: {email: Scalars['String'], origin: Scalars['String']} })
activateWorkspace?: (WorkspaceGenqlSelection & { __args: {data: ActivateWorkspaceInput} })
@@ -6571,7 +6555,7 @@ export interface AddQuerySubscriptionInput {eventStreamId: Scalars['String'],que
export interface RemoveQueryFromEventStreamInput {eventStreamId: Scalars['String'],queryId: Scalars['String']}
export interface CreateNavigationMenuItemInput {id?: (Scalars['UUID'] | null),userWorkspaceId?: (Scalars['UUID'] | null),targetRecordId?: (Scalars['UUID'] | null),targetObjectMetadataId?: (Scalars['UUID'] | null),viewId?: (Scalars['UUID'] | null),type: NavigationMenuItemType,name?: (Scalars['String'] | null),link?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),color?: (Scalars['String'] | null),folderId?: (Scalars['UUID'] | null),pageLayoutId?: (Scalars['UUID'] | null),position?: (Scalars['Float'] | null)}
export interface CreateNavigationMenuItemInput {id?: (Scalars['UUID'] | null),userWorkspaceId?: (Scalars['UUID'] | null),targetRecordId?: (Scalars['UUID'] | null),targetObjectMetadataId?: (Scalars['UUID'] | null),viewId?: (Scalars['UUID'] | null),type: NavigationMenuItemType,name?: (Scalars['String'] | null),link?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),color?: (Scalars['String'] | null),folderId?: (Scalars['UUID'] | null),position?: (Scalars['Float'] | null)}
export interface UpdateOneNavigationMenuItemInput {
/** The id of the record to update */
@@ -6579,7 +6563,7 @@ id: Scalars['UUID'],
/** The record to update */
update: UpdateNavigationMenuItemInput}
export interface UpdateNavigationMenuItemInput {folderId?: (Scalars['UUID'] | null),position?: (Scalars['Float'] | null),name?: (Scalars['String'] | null),link?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),color?: (Scalars['String'] | null),pageLayoutId?: (Scalars['UUID'] | null)}
export interface UpdateNavigationMenuItemInput {folderId?: (Scalars['UUID'] | null),position?: (Scalars['Float'] | null),name?: (Scalars['String'] | null),link?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),color?: (Scalars['String'] | null)}
export interface CreateViewFilterGroupInput {id?: (Scalars['UUID'] | null),parentViewFilterGroupId?: (Scalars['UUID'] | null),logicalOperator?: (ViewFilterGroupLogicalOperator | null),positionInViewFilterGroup?: (Scalars['Float'] | null),viewId: Scalars['UUID']}
@@ -6861,8 +6845,6 @@ export interface UpdateApplicationRegistrationVariableInput {id: Scalars['String
export interface UpdateApplicationRegistrationVariablePayload {value?: (Scalars['String'] | null),description?: (Scalars['String'] | null)}
export interface UpdateWorkspaceMemberSettingsInput {workspaceMemberId: Scalars['UUID'],update: Scalars['JSON']}
export interface ActivateWorkspaceInput {displayName?: (Scalars['String'] | null)}
export interface UpdateWorkspaceInput {subdomain?: (Scalars['String'] | null),customDomain?: (Scalars['String'] | null),displayName?: (Scalars['String'] | null),logo?: (Scalars['String'] | null),inviteHash?: (Scalars['String'] | null),isPublicInviteLinkEnabled?: (Scalars['Boolean'] | null),allowImpersonation?: (Scalars['Boolean'] | null),isGoogleAuthEnabled?: (Scalars['Boolean'] | null),isMicrosoftAuthEnabled?: (Scalars['Boolean'] | null),isPasswordAuthEnabled?: (Scalars['Boolean'] | null),isGoogleAuthBypassEnabled?: (Scalars['Boolean'] | null),isMicrosoftAuthBypassEnabled?: (Scalars['Boolean'] | null),isPasswordAuthBypassEnabled?: (Scalars['Boolean'] | null),defaultRoleId?: (Scalars['UUID'] | null),isTwoFactorAuthenticationEnforced?: (Scalars['Boolean'] | null),trashRetentionDays?: (Scalars['Float'] | null),eventLogRetentionDays?: (Scalars['Float'] | null),fastModel?: (Scalars['String'] | null),smartModel?: (Scalars['String'] | null),aiAdditionalInstructions?: (Scalars['String'] | null),editableProfileFields?: (Scalars['String'][] | null),enabledAiModelIds?: (Scalars['String'][] | null),useRecommendedModels?: (Scalars['Boolean'] | null)}
@@ -8250,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)
}
@@ -8354,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"')
@@ -8394,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"')
@@ -9267,8 +9249,7 @@ export const enumViewType = {
TABLE: 'TABLE' as const,
KANBAN: 'KANBAN' as const,
CALENDAR: 'CALENDAR' as const,
FIELDS_WIDGET: 'FIELDS_WIDGET' as const,
TABLE_WIDGET: 'TABLE_WIDGET' as const
FIELDS_WIDGET: 'FIELDS_WIDGET' as const
}
export const enumViewKey = {
@@ -9412,8 +9393,7 @@ export const enumFieldDisplayMode = {
export const enumPageLayoutType = {
RECORD_INDEX: 'RECORD_INDEX' as const,
RECORD_PAGE: 'RECORD_PAGE' as const,
DASHBOARD: 'DASHBOARD' as const,
STANDALONE_PAGE: 'STANDALONE_PAGE' as const
DASHBOARD: 'DASHBOARD' as const
}
export const enumBillingPlanKey = {
@@ -9452,8 +9432,7 @@ export const enumNavigationMenuItemType = {
FOLDER: 'FOLDER' as const,
LINK: 'LINK' as const,
OBJECT: 'OBJECT' as const,
RECORD: 'RECORD' as const,
PAGE_LAYOUT: 'PAGE_LAYOUT' as const
RECORD: 'RECORD' as const
}
export const enumMetadataEventAction = {
@@ -9491,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
}
@@ -9597,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,
@@ -9609,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
}
@@ -9691,7 +9671,6 @@ export const enumEngineComponentKey = {
export const enumCommandMenuItemAvailabilityType = {
GLOBAL: 'GLOBAL' as const,
GLOBAL_OBJECT_CONTEXT: 'GLOBAL_OBJECT_CONTEXT' as const,
RECORD_SELECTION: 'RECORD_SELECTION' as const,
FALLBACK: 'FALLBACK' as const
}
@@ -63,7 +63,7 @@ export default {
209,
221,
238,
253,
255,
292,
293,
303,
@@ -89,9 +89,9 @@ export default {
380,
387,
418,
500,
505,
506
499,
504,
505
],
"types": {
"BillingProductDTO": {
@@ -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
],
@@ -1675,6 +1669,9 @@ export default {
"defaultRole": [
29
],
"version": [
1
],
"fastModel": [
1
],
@@ -1706,7 +1703,7 @@ export default {
131
],
"billingEntitlements": [
252
237
],
"hasValidEnterpriseKey": [
6
@@ -1906,9 +1903,6 @@ export default {
"updatedAt": [
4
],
"isActive": [
6
],
"deletedAt": [
4
],
@@ -2567,9 +2561,6 @@ export default {
"updatedAt": [
4
],
"isActive": [
6
],
"deletedAt": [
4
],
@@ -3056,9 +3047,6 @@ export default {
"folderId": [
3
],
"pageLayoutId": [
3
],
"position": [
11
],
@@ -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
@@ -5170,9 +5158,6 @@ export default {
]
},
"PlaceDetailsResult": {
"street": [
1
],
"state": [
1
],
@@ -5990,7 +5975,7 @@ export default {
},
"AgentChatThreadConnection": {
"pageInfo": [
240
242
],
"edges": [
335
@@ -6597,7 +6582,7 @@ export default {
}
],
"objectRecordCounts": [
246
248
],
"object": [
46,
@@ -6609,7 +6594,7 @@ export default {
}
],
"objects": [
247,
249,
{
"paging": [
39,
@@ -6631,7 +6616,7 @@ export default {
}
],
"indexMetadatas": [
241,
243,
{
"paging": [
39,
@@ -6680,7 +6665,7 @@ export default {
}
],
"fields": [
251,
256,
{
"paging": [
39,
@@ -7166,15 +7151,6 @@ export default {
]
}
],
"findOneAdminApplicationRegistration": [
7,
{
"id": [
1,
"String!"
]
}
],
"getUsageAnalytics": [
283,
{
@@ -8103,15 +8079,6 @@ export default {
]
}
],
"resetPageLayoutToDefault": [
114,
{
"id": [
1,
"String!"
]
}
],
"resetPageLayoutWidgetToDefault": [
75,
{
@@ -8373,7 +8340,7 @@ export default {
}
],
"upsertRowLevelPermissionPredicates": [
256,
253,
{
"input": [
456,
@@ -9068,15 +9035,6 @@ export default {
]
}
],
"updateWorkspaceMemberSettings": [
6,
{
"input": [
488,
"UpdateWorkspaceMemberSettingsInput!"
]
}
],
"updateUserEmail": [
6,
{
@@ -9106,7 +9064,7 @@ export default {
66,
{
"data": [
489,
488,
"ActivateWorkspaceInput!"
]
}
@@ -9115,7 +9073,7 @@ export default {
66,
{
"data": [
490,
489,
"UpdateWorkspaceInput!"
]
}
@@ -9124,13 +9082,13 @@ export default {
66
],
"checkCustomDomainValidRecords": [
255
240
],
"createOIDCIdentityProvider": [
232,
{
"input": [
491,
490,
"SetupOIDCSsoInput!"
]
}
@@ -9139,7 +9097,7 @@ export default {
232,
{
"input": [
492,
491,
"SetupSAMLSsoInput!"
]
}
@@ -9148,7 +9106,7 @@ export default {
228,
{
"input": [
493,
492,
"DeleteSsoInput!"
]
}
@@ -9157,7 +9115,7 @@ export default {
229,
{
"input": [
494,
493,
"EditSsoInput!"
]
}
@@ -9179,7 +9137,7 @@ export default {
323,
{
"input": [
495,
494,
"SendEmailInput!"
]
}
@@ -9205,7 +9163,7 @@ export default {
"String!"
],
"connectionParameters": [
497,
496,
"EmailAccountConnectionParameters!"
],
"id": [
@@ -9217,7 +9175,7 @@ export default {
157,
{
"input": [
499,
498,
"UpdateLabPublicFeatureFlagInput!"
]
}
@@ -9295,7 +9253,7 @@ export default {
6,
{
"role": [
500,
499,
"AiModelRole!"
],
"modelId": [
@@ -9457,7 +9415,7 @@ export default {
}
],
"checkPublicDomainValidRecords": [
255,
240,
{
"domain": [
1,
@@ -9500,7 +9458,7 @@ export default {
68,
{
"input": [
501,
500,
"CreateOneAppTokenInput!"
]
}
@@ -9536,7 +9494,7 @@ export default {
6,
{
"workspaceMigration": [
503,
502,
"WorkspaceMigrationInput!"
]
}
@@ -9610,7 +9568,7 @@ export default {
"String!"
],
"fileFolder": [
506,
505,
"FileFolder!"
],
"filePath": [
@@ -9704,9 +9662,6 @@ export default {
"folderId": [
3
],
"pageLayoutId": [
3
],
"position": [
11
],
@@ -9744,9 +9699,6 @@ export default {
"color": [
1
],
"pageLayoutId": [
3
],
"__typename": [
1
]
@@ -11649,17 +11601,6 @@ export default {
1
]
},
"UpdateWorkspaceMemberSettingsInput": {
"workspaceMemberId": [
3
],
"update": [
15
],
"__typename": [
1
]
},
"ActivateWorkspaceInput": {
"displayName": [
1
@@ -11824,7 +11765,7 @@ export default {
1
],
"files": [
496
495
],
"__typename": [
1
@@ -11843,13 +11784,13 @@ export default {
},
"EmailAccountConnectionParameters": {
"IMAP": [
498
497
],
"SMTP": [
498
497
],
"CALDAV": [
498
497
],
"__typename": [
1
@@ -11889,7 +11830,7 @@ export default {
"AiModelRole": {},
"CreateOneAppTokenInput": {
"appToken": [
502
501
],
"__typename": [
1
@@ -11905,7 +11846,7 @@ export default {
},
"WorkspaceMigrationInput": {
"actions": [
504
503
],
"__typename": [
1
@@ -11913,7 +11854,7 @@ export default {
},
"WorkspaceMigrationDeleteActionInput": {
"type": [
505
504
],
"metadataName": [
355
@@ -11941,7 +11882,7 @@ export default {
260,
{
"input": [
508,
507,
"LogicFunctionLogsInput!"
]
}
@@ -220,7 +220,6 @@ The scaffolder already started a local Twenty server for you. To manage it later
|---------|-------------|
| `yarn twenty server start` | Start the local server (pulls image if needed) |
| `yarn twenty server start --port 3030` | Start on a custom port |
| `yarn twenty server start --test` | Start a separate test instance on port 2021 |
| `yarn twenty server stop` | Stop the server (preserves data) |
| `yarn twenty server status` | Show server status, URL, and credentials |
| `yarn twenty server logs` | Stream server logs |
@@ -229,20 +228,6 @@ The scaffolder already started a local Twenty server for you. To manage it later
Data is persisted across restarts in two Docker volumes (`twenty-app-dev-data` for PostgreSQL, `twenty-app-dev-storage` for files). Use `reset` to wipe everything and start fresh.
### Running a test instance
Pass `--test` to any `server` command to manage a second, fully isolated instance — useful for running integration tests or experimenting without touching your main dev data.
| Command | Description |
|---------|-------------|
| `yarn twenty server start --test` | Start the test instance (defaults to port 2021) |
| `yarn twenty server stop --test` | Stop the test instance |
| `yarn twenty server status --test` | Show test instance status, URL, and credentials |
| `yarn twenty server logs --test` | Stream test instance logs |
| `yarn twenty server reset --test` | Wipe test data and start fresh |
The test instance runs in its own Docker container (`twenty-app-dev-test`) with dedicated volumes (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) and config, so it can run in parallel with your main instance without conflicts. Combine `--test` with `--port` to override the default 2021.
<Note>
The server requires **Docker** to be running. If you see a "Docker not running" error, make sure Docker Desktop (or the Docker daemon) is started.
</Note>
@@ -80,57 +80,6 @@ Pre-release tags work as expected: bumping `1.0.0-rc.1` → `1.0.0-rc.2` is allo
{/* TODO: add screenshot of the Upgrade button */}
## Automated CI/CD (scaffolded workflows)
Apps generated with `create-twenty-app` ship with two GitHub Actions workflows out of the box, under `.github/workflows/`. They are ready to run as soon as you push the repo to GitHub — no extra setup is needed for CI, and CD only requires a single secret.
### CI — `ci.yml`
Runs integration tests on every push to `main` and every pull request.
**What it does:**
1. Checks out your app's source.
2. Spawns an isolated Twenty test instance using the `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` composite action (the CI equivalent of `yarn twenty server start --test`).
3. Enables Corepack, sets up Node.js from your `.nvmrc`, and installs dependencies with `yarn install --immutable`.
4. Runs `yarn test`, passing `TWENTY_API_URL` and `TWENTY_API_KEY` from the spawned instance so your tests can talk to a real server.
**Config knobs:**
- `TWENTY_VERSION` (env, defaults to `latest`) — pin the Twenty server version used in CI by editing this in `ci.yml`.
- Concurrency is grouped by `github.ref` and cancels in-progress runs on new pushes.
No secrets are required — the test instance is ephemeral and lives only for the duration of the job.
### CD — `cd.yml`
Deploys your app to a configured Twenty server on every push to `main`, and optionally from a pull request when the `deploy` label is applied.
**What it does:**
1. Checks out the PR head (for labeled PRs) or the pushed commit.
2. Runs `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — the CI equivalent of `yarn twenty deploy`.
3. Runs `twentyhq/twenty/.github/actions/install-twenty-app@main` so the newly deployed version is installed into the target workspace.
**Required configuration:**
| Setting | Where | Purpose |
|---------|-------|---------|
| `TWENTY_DEPLOY_URL` | `env` in `cd.yml` (defaults to `http://localhost:3000`) | The Twenty server to deploy to. Change this to your real server URL before first use. |
| `TWENTY_DEPLOY_API_KEY` | GitHub repo **Settings → Secrets and variables → Actions** | API key with deploy permission on the target server. |
<Note>
The default `TWENTY_DEPLOY_URL` of `http://localhost:3000` is a placeholder — it will not reach anything from a GitHub-hosted runner. Update it to your server's public URL (or use a self-hosted runner with network access) before enabling CD.
</Note>
**Triggering a preview deploy from a PR:**
Add the `deploy` label to a pull request. The `if:` guard in `cd.yml` will run the job for that PR using the PR's head commit, letting you validate a change on the target server before merging.
### Pinning the reusable actions
Both workflows reference reusable actions at `@main`, so action updates in the `twentyhq/twenty` repo are picked up automatically. If you want deterministic builds, replace `@main` with a commit SHA or release tag on each `uses:` line.
## Publishing to npm
Publishing to npm makes your app discoverable in the Twenty marketplace. Any Twenty workspace can browse, install, and upgrade marketplace apps directly from the UI.
@@ -138,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',
@@ -220,7 +220,6 @@ npx create-twenty-app@latest my-twenty-app --example postcard
| -------------------------------------- | --------------------------------------------- |
| `yarn twenty server start` | بدء الخادم المحلي (يسحب الصورة إذا لزم الأمر) |
| `yarn twenty server start --port 3030` | ابدأ على منفذ مخصّص |
| `yarn twenty server start --test` | ابدأ مثيل اختبار منفصل على المنفذ 2021 |
| `yarn twenty server stop` | إيقاف الخادم (مع الحفاظ على البيانات) |
| `yarn twenty server status` | عرض حالة الخادم، وعنوان URL، وبيانات الاعتماد |
| `yarn twenty server logs` | بث سجلات الخادم |
@@ -229,20 +228,6 @@ npx create-twenty-app@latest my-twenty-app --example postcard
يتم الاحتفاظ بالبيانات عبر عمليات إعادة التشغيل في وحدتي تخزين Docker (`twenty-app-dev-data` لـ PostgreSQL، و`twenty-app-dev-storage` للملفات). استخدم `reset` لمسح كل شيء والبدء من جديد.
### تشغيل مثيل الاختبار
مرر `--test` إلى أي أمر `server` لإدارة مثيل ثانٍ معزول تمامًا — مفيد لتشغيل اختبارات التكامل أو للتجربة من دون لمس بيانات التطوير الرئيسية لديك.
| أمر | الوصف |
| ---------------------------------- | ---------------------------------------------------- |
| `yarn twenty server start --test` | بدء مثيل الاختبار (المنفذ الافتراضي 2021) |
| `yarn twenty server stop --test` | إيقاف مثيل الاختبار |
| `yarn twenty server status --test` | عرض حالة مثيل الاختبار، وعنوان URL، وبيانات الاعتماد |
| `yarn twenty server logs --test` | بث سجلات مثيل الاختبار |
| `yarn twenty server reset --test` | محو بيانات الاختبار والبدء من جديد |
يعمل مثيل الاختبار في حاوية Docker خاصة به (`twenty-app-dev-test`) مع وحدات تخزين مخصصة (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) وتهيئة مستقلة، بحيث يمكنه العمل بالتوازي مع مثيلك الرئيسي من دون تعارضات. اجمع `--test` مع `--port` لتجاوز القيمة الافتراضية 2021.
<Note>
يتطلّب الخادم أن يكون **Docker** قيد التشغيل. إذا ظهرت لك رسالة خطأ "Docker not running"، فتأكّد من تشغيل Docker Desktop (أو خادوم Docker).
</Note>
@@ -80,57 +80,6 @@ yarn twenty deploy
{/* TODO: add screenshot of the Upgrade button */}
## CI/CD المؤتمتة (مهام سير عمل مُولَّدة بالقوالب)
التطبيقات المُولَّدة باستخدام `create-twenty-app` تأتي افتراضيًا مع مهمَّتي سير عمل من GitHub Actions ضمن `.github/workflows/`. هي جاهزة للتشغيل بمجرد دفع المستودع إلى GitHub — لا حاجة لأي إعداد إضافي لـ CI، وCD يتطلّب سرًّا واحدًا فقط.
### CI — `ci.yml`
يشغّل اختبارات التكامل عند كل دفع إلى `main` وعند كل طلب سحب.
**ماذا يفعل:**
1. يجلب مصدر تطبيقك.
2. ينشئ مثيلاً اختبارياً معزولاً من Twenty باستخدام الإجراء المركّب `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (المكافئ في CI للأمر `yarn twenty server start --test`).
3. يُفعِّل Corepack، ويُعدّ Node.js من ملف `.nvmrc` لديك، ويثبّت التبعيات بواسطة `yarn install --immutable`.
4. يشغّل `yarn test`، ويمرّر `TWENTY_API_URL` و`TWENTY_API_KEY` من المثيل الذي تم إنشاؤه بحيث تتمكّن اختباراتك من التواصل مع خادم حقيقي.
**خيارات التكوين:**
* `TWENTY_VERSION` (متغيّر بيئة، القيمة الافتراضية `latest`) — ثبّت نسخة خادم Twenty المستخدمة في CI عبر تعديل هذا في `ci.yml`.
* يتم تجميع التشغيل المتزامن حسب `github.ref` ويلغي التشغيلات قيد التقدّم عند أي دفع جديد.
لا تتطلّب أي أسرار — مثيل الاختبار مؤقّت ويستمر فقط طوال مدّة المهمّة.
### CD — `cd.yml`
ينشر تطبيقك إلى خادم Twenty مُهيّأ عند كل دفع إلى `main`، وبشكل اختياري من طلب سحب عند تطبيق الوسم `deploy`.
**ماذا يفعل:**
1. يجلب رأس طلب السحب (للطلبات الموسومة) أو الالتزام المدفوع.
2. يشغّل `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — وهو المكافئ في CI للأمر `yarn twenty deploy`.
3. يشغّل `twentyhq/twenty/.github/actions/install-twenty-app@main` بحيث تُثبَّت النسخة المُنشَرة حديثًا في مساحة العمل المستهدفة.
**التكوين المطلوب:**
| الإعداد | حيث | الغرض |
| ----------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `env` في `cd.yml` (القيمة الافتراضية `http://localhost:3000`) | خادم Twenty الذي سيتم النشر إليه. غيّر هذا إلى عنوان URL لخادمك الحقيقي قبل أول استخدام. |
| `TWENTY_DEPLOY_API_KEY` | في مستودع GitHub **Settings → Secrets and variables → Actions** | مفتاح API يمتلك إذن النشر على الخادم المستهدف. |
<Note>
القيمة الافتراضية لـ `TWENTY_DEPLOY_URL` وهي `http://localhost:3000` مجرد عنصر نائب — لن تصل إلى أي شيء من مُشغِّل مستضاف لدى GitHub. حدّثها إلى عنوان URL العام لخادمك (أو استخدم مُشغِّلًا مستضافًا ذاتيًا مع وصول شبكي) قبل تمكين CD.
</Note>
**تشغيل نشر معاينة من طلب سحب:**
أضِف الوسم `deploy` إلى طلب سحب. الشرط `if:` في `cd.yml` سيشغّل المهمّة لذلك الطلب مستخدمًا التزام رأس الطلب، مما يتيح لك التحقّق من التغيير على الخادم المستهدف قبل الدمج.
### تثبيت الإجراءات القابلة لإعادة الاستخدام
يشير كلا سيرَي العمل إلى إجراءات قابلة لإعادة الاستخدام عند `@main`، لذا تُلتقط تحديثات الإجراءات في مستودع `twentyhq/twenty` تلقائيًا. إذا كنت تريد بناءات حتمية، فاستبدِل `@main` بقيمة SHA لالتزام أو بوسم إصدار في كل سطر `uses:`.
## النشر على npm
يُتيح النشر على npm إمكانية العثور على تطبيقك في سوق Twenty. يمكن لأي مساحة عمل في Twenty استعراض تطبيقات السوق وتثبيتها وترقيتها مباشرةً من واجهة المستخدم.
@@ -138,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',
@@ -220,7 +220,6 @@ Nástroj pro vytvoření kostry vám již spustil lokální server Twenty. Pro j
| -------------------------------------- | ------------------------------------------------------ |
| `yarn twenty server start` | Spustí lokální server (v případě potřeby stáhne image) |
| `yarn twenty server start --port 3030` | Spustí na vlastním portu |
| `yarn twenty server start --test` | Spusťte samostatnou testovací instanci na portu 2021 |
| `yarn twenty server stop` | Zastaví server (zachová data) |
| `yarn twenty server status` | Zobrazí stav serveru, URL a přihlašovací údaje |
| `yarn twenty server logs` | Streamuje protokoly serveru |
@@ -229,20 +228,6 @@ Nástroj pro vytvoření kostry vám již spustil lokální server Twenty. Pro j
Data přetrvávají při restartech ve dvou svazcích Dockeru (`twenty-app-dev-data` pro PostgreSQL, `twenty-app-dev-storage` pro soubory). Pomocí `reset` vymažte vše a začněte znovu.
### Spuštění testovací instance
Předejte volbu `--test` libovolnému příkazu `server` pro správu druhé, plně izolované instance — užitečné pro spouštění integračních testů nebo experimentování, aniž byste se dotkli svých hlavních vývojových dat.
| Příkaz | Popis |
| ---------------------------------- | --------------------------------------------------------- |
| `yarn twenty server start --test` | Spustí testovací instanci (výchozí port je 2021) |
| `yarn twenty server stop --test` | Zastaví testovací instanci |
| `yarn twenty server status --test` | Zobrazí stav testovací instance, URL a přihlašovací údaje |
| `yarn twenty server logs --test` | Streamuje protokoly testovací instance |
| `yarn twenty server reset --test` | Vymaže testovací data a začne znovu |
Testovací instance běží ve vlastním kontejneru Docker (`twenty-app-dev-test`) s vyhrazenými svazky (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) a konfigurací, takže může běžet paralelně s vaší hlavní instancí bez konfliktů. Zkombinujte `--test` s `--port` pro změnu výchozího portu 2021.
<Note>
Server vyžaduje, aby **Docker** běžel. Pokud vidíte chybu "Docker not running", ujistěte se, že je spuštěný Docker Desktop (nebo démon Dockeru).
</Note>
@@ -80,57 +80,6 @@ Předběžné tagy fungují podle očekávání: zvýšení z `1.0.0-rc.1` → `
{/* TODO: add screenshot of the Upgrade button */}
## Automatizované CI/CD (předpřipravené workflowy)
Aplikace vygenerované pomocí `create-twenty-app` jsou hned připravené se dvěma workflowy GitHub Actions ve složce `.github/workflows/`. Jsou připravené ke spuštění hned, jakmile repozitář pushnete na GitHub — pro CI není potřeba žádné další nastavení a CD vyžaduje pouze jeden secret.
### CI — `ci.yml`
Automaticky spouští integrační testy při každém pushi do `main` a u pull requestů.
**K čemu slouží:**
1. Provede checkout zdrojového kódu vaší aplikace.
2. Spustí izolovanou testovací instanci Twenty pomocí složené akce `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (ekvivalent v CI k `yarn twenty server start --test`).
3. Povolí Corepack, nastaví Node.js podle vašeho `.nvmrc` a nainstaluje závislosti pomocí `yarn install --immutable`.
4. Spustí `yarn test` a předá `TWENTY_API_URL` a `TWENTY_API_KEY` ze spuštěné instance, aby vaše testy mohly komunikovat se skutečným serverem.
**Konfigurační volby:**
* `TWENTY_VERSION` (env, výchozí hodnota `latest`) — uzamkněte v CI používanou verzi serveru Twenty úpravou této hodnoty v `ci.yml`.
* Souběžné běhy jsou seskupeny podle `github.ref` a při nových pushích ruší právě probíhající běhy.
Nejsou potřeba žádné secrety — testovací instance je efemérní a existuje pouze po dobu běhu úlohy.
### CD — `cd.yml`
Nasazuje vaši aplikaci na nakonfigurovaný server Twenty při každém pushi do `main` a volitelně také z pull requestu, pokud je přidán štítek `deploy`.
**K čemu slouží:**
1. Provede checkout headu PR (u označených PR) nebo pushnutého commitu.
2. Spustí `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — ekvivalent v CI k `yarn twenty deploy`.
3. Spustí `twentyhq/twenty/.github/actions/install-twenty-app@main`, aby se nově nasazená verze nainstalovala do cílového workspace.
**Požadovaná konfigurace:**
| Nastavení | Kde | Účel |
| ----------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `env` v `cd.yml` (výchozí `http://localhost:3000`) | Server Twenty, na který se nasazuje. Před prvním použitím to změňte na skutečnou URL vašeho serveru. |
| `TWENTY_DEPLOY_API_KEY` | GitHub repozitář **Settings → Secrets and variables → Actions** | API klíč s oprávněním k nasazení na cílovém serveru. |
<Note>
Výchozí `TWENTY_DEPLOY_URL` `http://localhost:3000` je pouze zástupná hodnota — z runneru hostovaného GitHubem tato adresa nebude dosažitelná. Před povolením CD ji aktualizujte na veřejnou URL vašeho serveru (nebo použijte self-hosted runner s přístupem do sítě).
</Note>
**Spuštění náhledového nasazení z PR:**
Přidejte k pull requestu štítek `deploy`. Podmínka `if:` v `cd.yml` spustí úlohu pro dané PR s použitím head commitu PR, což vám umožní ověřit změnu na cílovém serveru před sloučením.
### Připnutí verzí znovupoužitelných akcí
Obě workflowy odkazují na znovupoužitelné akce na `@main`, takže aktualizace akcí v repozitáři `twentyhq/twenty` se přeberou automaticky. Pokud chcete deterministická sestavení, nahraďte `@main` v každém řádku `uses:` za commit SHA nebo tag vydání.
## Publikování na npm
Publikování na npm zajistí, že bude vaše aplikace dohledatelná v Marketplace Twenty. Jakýkoli pracovní prostor Twenty může procházet, instalovat a aktualizovat aplikace z Marketplace přímo z UI.
@@ -138,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',
@@ -220,7 +220,6 @@ Der Scaffolder hat bereits einen lokalen Twenty-Server für Sie gestartet. Um ih
| -------------------------------------- | ----------------------------------------------------------- |
| `yarn twenty server start` | Lokalen Server starten (lädt das Image bei Bedarf herunter) |
| `yarn twenty server start --port 3030` | Auf einem benutzerdefinierten Port starten |
| `yarn twenty server start --test` | Starten Sie eine separate Testinstanz auf Port 2021 |
| `yarn twenty server stop` | Server stoppen (Daten bleiben erhalten) |
| `yarn twenty server status` | Serverstatus, URL und Anmeldedaten anzeigen |
| `yarn twenty server logs` | Serverprotokolle streamen |
@@ -229,20 +228,6 @@ Der Scaffolder hat bereits einen lokalen Twenty-Server für Sie gestartet. Um ih
Daten bleiben über Neustarts hinweg in zwei Docker-Volumes bestehen (`twenty-app-dev-data` für PostgreSQL, `twenty-app-dev-storage` für Dateien). Verwenden Sie `reset`, um alles zu löschen und neu zu beginnen.
### Eine Testinstanz ausführen
Übergeben Sie `--test` an jeden `server`-Befehl, um eine zweite, vollständig isolierte Instanz zu verwalten — nützlich, um Integrationstests auszuführen oder zu experimentieren, ohne Ihre Hauptentwicklungsdaten anzutasten.
| Befehl | Beschreibung |
| ---------------------------------- | ----------------------------------------------------- |
| `yarn twenty server start --test` | Die Testinstanz starten (standardmäßig Port 2021) |
| `yarn twenty server stop --test` | Die Testinstanz stoppen |
| `yarn twenty server status --test` | Status, URL und Anmeldedaten der Testinstanz anzeigen |
| `yarn twenty server logs --test` | Protokolle der Testinstanz streamen |
| `yarn twenty server reset --test` | Alle Testdaten löschen und neu starten |
Die Testinstanz läuft in einem eigenen Docker-Container (`twenty-app-dev-test`) mit dedizierten Volumes (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) und eigener Konfiguration, sodass sie parallel zu Ihrer Hauptinstanz ohne Konflikte ausgeführt werden kann. Kombinieren Sie `--test` mit `--port`, um den Standardport 2021 zu überschreiben.
<Note>
Der Server erfordert, dass **Docker** läuft. Wenn der Fehler "Docker not running" angezeigt wird, stellen Sie sicher, dass Docker Desktop (oder der Docker-Daemon) gestartet ist.
</Note>
@@ -80,57 +80,6 @@ Pre-Release-Tags funktionieren wie erwartet: Das Erhöhen von `1.0.0-rc.1` → `
{/* TODO: add screenshot of the Upgrade button */}
## Automatisiertes CI/CD (vorgefertigte Workflows)
Apps, die mit `create-twenty-app` erzeugt wurden, enthalten von Haus aus zwei GitHub-Actions-Workflows unter `.github/workflows/`. Sie sind einsatzbereit, sobald Sie das Repository zu GitHub pushen — für CI ist keine zusätzliche Einrichtung erforderlich, und für CD ist nur ein einziges Secret nötig.
### CI — `ci.yml`
Führt Ihre Integrationstests bei jedem Push auf `main` und bei Pull Requests aus.
**Was sie macht:**
1. Checkt den Quellcode Ihrer App aus.
2. Startet eine isolierte Twenty-Testinstanz mithilfe der Composite-Action `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (das CI-Äquivalent zu `yarn twenty server start --test`).
3. Aktiviert Corepack, richtet Node.js anhand Ihrer `.nvmrc` ein und installiert Abhängigkeiten mit `yarn install --immutable`.
4. Führt `yarn test` aus und übergibt `TWENTY_API_URL` und `TWENTY_API_KEY` aus der gestarteten Instanz, damit Ihre Tests mit einem echten Server kommunizieren können.
**Konfigurationsoptionen:**
* `TWENTY_VERSION` (env, standardmäßig `latest`) — fixieren Sie die in CI verwendete Twenty-Server-Version, indem Sie dies in `ci.yml` anpassen.
* Die Parallelität wird nach `github.ref` gruppiert und bricht laufende Ausführungen bei neuen Pushes ab.
Es sind keine Secrets erforderlich — die Testinstanz ist flüchtig und existiert nur für die Dauer des Jobs.
### CD — `cd.yml`
Stellt Ihre App bei jedem Push auf `main` auf einem konfigurierten Twenty-Server bereit und optional aus einem Pull Request, wenn das Label `deploy` gesetzt ist.
**Was sie macht:**
1. Checkt den PR-Head (bei PRs mit Label) oder den gepushten Commit aus.
2. Führt `twentyhq/twenty/.github/actions/deploy-twenty-app@main` aus — das CI-Äquivalent zu `yarn twenty deploy`.
3. Führt `twentyhq/twenty/.github/actions/install-twenty-app@main` aus, damit die neu bereitgestellte Version in den Ziel-Workspace installiert wird.
**Erforderliche Konfiguration:**
| Einstellung | Wo | Zweck |
| ----------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `env` in `cd.yml` (standardmäßig `http://localhost:3000`) | Der Twenty-Server, auf den bereitgestellt werden soll. Ändern Sie dies vor der ersten Verwendung auf die echte Server-URL. |
| `TWENTY_DEPLOY_API_KEY` | GitHub-Repository **Settings → Secrets and variables → Actions** | API-Schlüssel mit Berechtigung zum Bereitstellen auf dem Zielserver. |
<Note>
Der Standardwert von `TWENTY_DEPLOY_URL` (`http://localhost:3000`) ist ein Platzhalter — von einem GitHub-gehosteten Runner ist er nicht erreichbar. Aktualisieren Sie sie auf die öffentliche URL Ihres Servers (oder verwenden Sie einen selbstgehosteten Runner mit Netzwerkzugriff), bevor Sie CD aktivieren.
</Note>
**Eine Vorschau-Bereitstellung aus einem PR auslösen:**
Fügen Sie einem Pull Request das Label `deploy` hinzu. Die `if:`-Bedingung in `cd.yml` führt den Job für diesen PR mit dem Head-Commit des PR aus, sodass Sie eine Änderung auf dem Zielserver vor dem Mergen validieren können.
### Fixieren der wiederverwendbaren Actions
Beide Workflows verweisen auf wiederverwendbare Actions mit `@main`, sodass Aktualisierungen der Actions im Repository `twentyhq/twenty` automatisch übernommen werden. Wenn Sie deterministische Builds möchten, ersetzen Sie `@main` in jeder `uses:`-Zeile durch eine Commit-SHA oder einen Release-Tag.
## Auf npm veröffentlichen
Die Veröffentlichung auf npm macht Ihre App im Twenty-Marktplatz auffindbar. Jeder Twenty-Arbeitsbereich kann Marktplatz-Apps direkt über die Benutzeroberfläche durchsuchen, installieren und aktualisieren.
@@ -138,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',
@@ -220,7 +220,6 @@ Lo scaffolder ha già avviato per te un server Twenty locale. Per gestirlo in se
| -------------------------------------- | --------------------------------------------------------- |
| `yarn twenty server start` | Avvia il server locale (scarica l'immagine se necessario) |
| `yarn twenty server start --port 3030` | Avvia su una porta personalizzata |
| `yarn twenty server start --test` | Avvia un'istanza di test separata sulla porta 2021 |
| `yarn twenty server stop` | Arresta il server (conserva i dati) |
| `yarn twenty server status` | Mostra stato del server, URL e credenziali |
| `yarn twenty server logs` | Trasmetti in streaming i log del server |
@@ -229,20 +228,6 @@ Lo scaffolder ha già avviato per te un server Twenty locale. Per gestirlo in se
I dati vengono mantenuti tra i riavvii in due volumi Docker (`twenty-app-dev-data` per PostgreSQL, `twenty-app-dev-storage` per i file). Usa `reset` per cancellare tutto e ripartire da zero.
### Esecuzione di un'istanza di test
Passa `--test` a qualsiasi comando `server` per gestire una seconda istanza completamente isolata — utile per eseguire test di integrazione o per sperimentare senza toccare i tuoi dati di sviluppo principali.
| Comando | Descrizione |
| ---------------------------------- | ------------------------------------------------------------------------ |
| `yarn twenty server start --test` | Avvia l'istanza di test (per impostazione predefinita usa la porta 2021) |
| `yarn twenty server stop --test` | Arresta l'istanza di test |
| `yarn twenty server status --test` | Mostra stato, URL e credenziali dell'istanza di test |
| `yarn twenty server logs --test` | Trasmetti in streaming i log dell'istanza di test |
| `yarn twenty server reset --test` | Cancella i dati di test e riparti da zero |
L'istanza di test viene eseguita nel proprio container Docker (`twenty-app-dev-test`) con volumi dedicati (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) e configurazione dedicata, così può essere eseguita in parallelo con la tua istanza principale senza conflitti. Combina `--test` con `--port` per sovrascrivere il valore predefinito 2021.
<Note>
Il server richiede che **Docker** sia in esecuzione. Se vedi l'errore "Docker not running", assicurati che Docker Desktop (o il demone Docker) sia avviato.
</Note>
@@ -80,57 +80,6 @@ I tag di pre-release funzionano come previsto: incrementare `1.0.0-rc.1` → `1.
{/* TODO: add screenshot of the Upgrade button */}
## CI/CD automatizzati (workflow preconfigurati)
Le app generate con `create-twenty-app` includono due workflow di GitHub Actions pronti all'uso, nella cartella `.github/workflows/`. Sono pronti all'esecuzione non appena esegui il push del repository su GitHub — non è necessaria alcuna configurazione aggiuntiva per la CI e la CD richiede solo un singolo secret.
### CI — `ci.yml`
Esegue automaticamente i test di integrazione a ogni push su `main` e sulle pull request.
**Cosa fa:**
1. Esegue il checkout del codice sorgente della tua app.
2. Avvia un'istanza di test isolata di Twenty utilizzando l'azione composita `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (l'equivalente per la CI di `yarn twenty server start --test`).
3. Abilita Corepack, configura Node.js dal tuo `.nvmrc` e installa le dipendenze con `yarn install --immutable`.
4. Esegue `yarn test`, passando `TWENTY_API_URL` e `TWENTY_API_KEY` dall'istanza avviata affinché i tuoi test possano comunicare con un server reale.
**Opzioni di configurazione:**
* `TWENTY_VERSION` (variabile di ambiente, predefinito `latest`) — fissa la versione del server Twenty usata nella CI modificando questo valore in `ci.yml`.
* La concorrenza è raggruppata per `github.ref` e annulla le esecuzioni in corso in caso di nuovi push.
Non sono necessari Secrets — l'istanza di test è effimera ed esiste solo per la durata del job.
### CD — `cd.yml`
Esegue il deploy della tua app su un server Twenty configurato a ogni push su `main` e, facoltativamente, da una pull request quando viene applicata l'etichetta `deploy`.
**Cosa fa:**
1. Esegue il checkout della testa della PR (per le PR etichettate) oppure del commit inviato.
2. Esegue `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — l'equivalente per la CI di `yarn twenty deploy`.
3. Esegue `twentyhq/twenty/.github/actions/install-twenty-app@main` in modo che la versione appena distribuita venga installata nello spazio di lavoro di destinazione.
**Configurazione richiesta:**
| Impostazione | Dove | Scopo |
| ----------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `env` in `cd.yml` (predefinito `http://localhost:3000`) | Il server Twenty su cui effettuare il deploy. Modificalo con l'URL reale del tuo server prima del primo utilizzo. |
| `TWENTY_DEPLOY_API_KEY` | Repository GitHub **Settings → Secrets and variables → Actions** | Chiave API con autorizzazione di deploy sul server di destinazione. |
<Note>
Il valore predefinito di `TWENTY_DEPLOY_URL`, `http://localhost:3000`, è un segnaposto — non raggiungerà alcuna risorsa da un runner ospitato su GitHub. Aggiornalo all'URL pubblico del tuo server (oppure usa un runner self-hosted con accesso di rete) prima di abilitare il CD.
</Note>
**Attivare un deploy di anteprima da una PR:**
Aggiungi l'etichetta `deploy` a una pull request. La condizione `if:` in `cd.yml` eseguirà il job per quella PR utilizzando il commit di testa della PR, permettendoti di convalidare una modifica sul server di destinazione prima del merge.
### Bloccare le azioni riutilizzabili
Entrambi i workflow fanno riferimento ad azioni riutilizzabili a `@main`, quindi gli aggiornamenti delle azioni nel repository `twentyhq/twenty` vengono recepiti automaticamente. Se desideri build deterministiche, sostituisci `@main` con uno SHA di commit o un tag di release in ciascuna riga `uses:`.
## Pubblicazione su npm
La pubblicazione su npm rende la tua app scopribile nel marketplace di Twenty. Qualsiasi spazio di lavoro Twenty può sfogliare, installare e aggiornare le app del marketplace direttamente dall'interfaccia utente.
@@ -138,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',
@@ -220,7 +220,6 @@ A ferramenta de scaffolding já iniciou um servidor local do Twenty para você.
| -------------------------------------- | ------------------------------------------------------ |
| `yarn twenty server start` | Inicia o servidor local (baixa a imagem se necessário) |
| `yarn twenty server start --port 3030` | Iniciar em uma porta personalizada |
| `yarn twenty server start --test` | Inicie uma instância de teste separada na porta 2021 |
| `yarn twenty server stop` | Interrompe o servidor (preserva os dados) |
| `yarn twenty server status` | Mostra o status do servidor, a URL e as credenciais |
| `yarn twenty server logs` | Transmite os logs do servidor |
@@ -229,20 +228,6 @@ A ferramenta de scaffolding já iniciou um servidor local do Twenty para você.
Os dados são persistidos entre reinicializações em dois volumes do Docker (`twenty-app-dev-data` para PostgreSQL, `twenty-app-dev-storage` para arquivos). Use `reset` para apagar tudo e começar do zero.
### Executando uma instância de teste
Passe `--test` para qualquer comando de `server` para gerenciar uma segunda instância totalmente isolada — útil para executar testes de integração ou experimentar sem tocar nos seus dados principais de desenvolvimento.
| Comando | Descrição |
| ---------------------------------- | ------------------------------------------------------------- |
| `yarn twenty server start --test` | Inicia a instância de teste (padrão: porta 2021) |
| `yarn twenty server stop --test` | Interrompe a instância de teste |
| `yarn twenty server status --test` | Mostra o status da instância de teste, a URL e as credenciais |
| `yarn twenty server logs --test` | Transmite os logs da instância de teste |
| `yarn twenty server reset --test` | Exclui os dados de teste e inicia do zero |
A instância de teste é executada em seu próprio contêiner Docker (`twenty-app-dev-test`) com volumes dedicados (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) e configuração própria, para que possa ser executada em paralelo com sua instância principal sem conflitos. Combine `--test` com `--port` para substituir a porta padrão 2021.
<Note>
O servidor requer que o **Docker** esteja em execução. Se você vir um erro "Docker not running", certifique-se de que o Docker Desktop (ou o daemon do Docker) esteja iniciado.
</Note>
@@ -80,57 +80,6 @@ Tags de pré-lançamento funcionam como esperado: incrementar `1.0.0-rc.1` → `
{/* TODO: add screenshot of the Upgrade button */}
## CI/CD automatizado (fluxos de trabalho pré-configurados)
Os apps gerados com `create-twenty-app` já vêm com dois fluxos de trabalho do GitHub Actions prontos, em `.github/workflows/`. Eles estão prontos para executar assim que você fizer push do repositório para o GitHub — nenhuma configuração extra é necessária para CI, e CD requer apenas um único segredo.
### CI — `ci.yml`
Executa testes de integração a cada push para `main` e a cada pull request.
**O que faz:**
1. Faz checkout do código-fonte do seu app.
2. Inicia uma instância de teste do Twenty isolada usando a ação composta `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (o equivalente em CI de `yarn twenty server start --test`).
3. Habilita o Corepack, configura o Node.js a partir do seu `.nvmrc` e instala as dependências com `yarn install --immutable`.
4. Executa `yarn test`, passando `TWENTY_API_URL` e `TWENTY_API_KEY` da instância iniciada para que seus testes possam se comunicar com um servidor real.
**Opções de configuração:**
* `TWENTY_VERSION` (env, padrão `latest`) — fixe a versão do servidor Twenty usada no CI editando isto em `ci.yml`.
* A concorrência é agrupada por `github.ref` e cancela execuções em andamento quando há novos pushes.
Nenhum segredo é necessário — a instância de teste é efêmera e existe apenas durante a execução do job.
### CD — `cd.yml`
Faz o deploy do seu app para um servidor Twenty configurado a cada push para `main` e, opcionalmente, a partir de um pull request quando o rótulo `deploy` é aplicado.
**O que faz:**
1. Faz checkout do head do PR (para PRs rotulados) ou do commit enviado.
2. Executa `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — o equivalente em CI de `yarn twenty deploy`.
3. Executa `twentyhq/twenty/.github/actions/install-twenty-app@main` para que a versão recém-implantada seja instalada no workspace de destino.
**Configuração obrigatória:**
| Configuração | Onde | Finalidade |
| ----------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `env` em `cd.yml` (padrão `http://localhost:3000`) | O servidor Twenty para o qual fazer o deploy. Altere isto para a URL real do seu servidor antes do primeiro uso. |
| `TWENTY_DEPLOY_API_KEY` | Repositório do GitHub **Settings → Secrets and variables → Actions** | Chave de API com permissão de deploy no servidor de destino. |
<Note>
O `TWENTY_DEPLOY_URL` padrão de `http://localhost:3000` é um placeholder — ele não alcançará nada a partir de um runner hospedado pelo GitHub. Atualize-o para a URL pública do seu servidor (ou use um runner self-hosted com acesso à rede) antes de habilitar o CD.
</Note>
**Acionando um deploy de pré-visualização a partir de um PR:**
Adicione o rótulo `deploy` a um pull request. A condição `if:` em `cd.yml` executará o job para esse PR usando o commit HEAD do PR, permitindo que você valide uma alteração no servidor de destino antes de fazer o merge.
### Fixando as ações reutilizáveis
Ambos os fluxos de trabalho fazem referência a ações reutilizáveis em `@main`, portanto as atualizações de ações no repositório `twentyhq/twenty` são aplicadas automaticamente. Se você quiser builds determinísticos, substitua `@main` por um SHA de commit ou uma tag de release em cada linha `uses:`.
## Publicação no npm
Publicar no npm torna seu aplicativo descobrível no Marketplace da Twenty. Qualquer espaço de trabalho da Twenty pode navegar, instalar e atualizar aplicativos do Marketplace diretamente pela UI.
@@ -138,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',
@@ -220,7 +220,6 @@ npx create-twenty-app@latest my-twenty-app --example postcard
| -------------------------------------- | -------------------------------------------------------------- |
| `yarn twenty server start` | Запустить локальный сервер (при необходимости скачивает образ) |
| `yarn twenty server start --port 3030` | Запустить на пользовательском порту |
| `yarn twenty server start --test` | Запускает отдельный тестовый экземпляр на порту 2021 |
| `yarn twenty server stop` | Остановить сервер (данные сохраняются) |
| `yarn twenty server status` | Показать состояние сервера, URL и учётные данные |
| `yarn twenty server logs` | Потоковый вывод журналов сервера |
@@ -229,20 +228,6 @@ npx create-twenty-app@latest my-twenty-app --example postcard
Данные сохраняются между перезапусками в двух томах Docker (`twenty-app-dev-data` для PostgreSQL, `twenty-app-dev-storage` для файлов). Используйте `reset`, чтобы стереть всё и начать заново.
### Запуск тестового экземпляра
Передайте `--test` любой команде `server`, чтобы управлять вторым, полностью изолированным экземпляром — это полезно для запуска интеграционных тестов или экспериментов, не затрагивая ваши основные данные разработки.
| Команда | Описание |
| ---------------------------------- | ------------------------------------------------------------- |
| `yarn twenty server start --test` | Запустить тестовый экземпляр (по умолчанию — порт 2021) |
| `yarn twenty server stop --test` | Остановить тестовый экземпляр |
| `yarn twenty server status --test` | Показать состояние тестового экземпляра, URL и учётные данные |
| `yarn twenty server logs --test` | Выводить журналы тестового экземпляра в потоковом режиме |
| `yarn twenty server reset --test` | Удалить тестовые данные и начать с чистого листа |
Тестовый экземпляр запускается в собственном контейнере Docker (`twenty-app-dev-test`) с выделенными томами (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) и собственной конфигурацией, поэтому он может работать параллельно с вашим основным экземпляром без конфликтов. Совместите `--test` с `--port`, чтобы переопределить значение по умолчанию (2021).
<Note>
Для работы сервера необходимо, чтобы **Docker** был запущен. Если вы видите ошибку "Docker not running", убедитесь, что запущен Docker Desktop (или демон Docker).
</Note>
@@ -80,57 +80,6 @@ When updating an already deployed tarball app, the server requires the `version`
{/* TODO: add screenshot of the Upgrade button */}
## Автоматизированный CI/CD (рабочие процессы, сгенерированные шаблоном)
Приложения, созданные с помощью `create-twenty-app`, «из коробки» включают два рабочих процесса GitHub Actions в каталоге `.github/workflows/`. Они готовы к запуску, как только вы запушите репозиторий на GitHub — для CI не требуется дополнительной настройки, а для CD нужен лишь один секрет.
### CI — `ci.yml`
Автоматически запускает интеграционные тесты при каждом пуше в `main` и для каждого pull request.
**Что делает:**
1. Извлекает исходный код вашего приложения.
2. Запускает изолированный тестовый экземпляр Twenty с помощью составного действия `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (эквивалент для CI `yarn twenty server start --test`).
3. Включает Corepack, настраивает Node.js на основе вашего `.nvmrc` и устанавливает зависимости с помощью `yarn install --immutable`.
4. Запускает `yarn test`, передавая `TWENTY_API_URL` и `TWENTY_API_KEY` из запущенного экземпляра, чтобы ваши тесты могли взаимодействовать с реальным сервером.
**Параметры конфигурации:**
* `TWENTY_VERSION` (переменная окружения, по умолчанию `latest`) — зафиксируйте версию сервера Twenty, используемую в CI, отредактировав это значение в `ci.yml`.
* Параллельные запуски группируются по `github.ref` и отменяют выполняющиеся прогоны при новых пушах.
Секреты не требуются — тестовый экземпляр эфемерен и существует только на время выполнения задания.
### CD — `cd.yml`
Разворачивает ваше приложение на настроенном сервере Twenty при каждом пуше в `main` и, при необходимости, из pull request при наличии метки `deploy`.
**Что делает:**
1. Извлекает head-коммит PR (для PR с меткой) или запушенный коммит.
2. Запускает `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — эквивалент для CI `yarn twenty deploy`.
3. Запускает `twentyhq/twenty/.github/actions/install-twenty-app@main`, чтобы новая развернутая версия была установлена в целевое рабочее пространство.
**Обязательная конфигурация:**
| Настройка | Где | Назначение |
| ----------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `env` в `cd.yml` (по умолчанию `http://localhost:3000`) | Сервер Twenty, на который выполняется деплой. Перед первым использованием замените это на URL вашего реального сервера. |
| `TWENTY_DEPLOY_API_KEY` | В репозитории GitHub — **Settings → Secrets and variables → Actions** | Ключ API с правом деплоя на целевом сервере. |
<Note>
Значение `TWENTY_DEPLOY_URL` по умолчанию — `http://localhost:3000` — это заглушка: с хостируемого GitHub раннера к ней не будет доступа. Перед включением CD замените его на публичный URL вашего сервера (или используйте self-hosted раннер с сетевым доступом).
</Note>
**Запуск предварительного деплоя из PR:**
Добавьте к pull request метку `deploy`. Условие `if:` в `cd.yml` запустит задачу для этого PR, используя его head-коммит, что позволит проверить изменение на целевом сервере до слияния.
### Закрепление версий повторно используемых действий
Оба рабочих процесса ссылаются на повторно используемые действия с указанием `@main`, поэтому обновления действий в репозитории `twentyhq/twenty` подхватываются автоматически. Если вам нужны детерминированные сборки, замените `@main` на SHA коммита или тег релиза в каждой строке `uses:`.
## Публикация в npm
Публикация в npm делает ваше приложение видимым в маркетплейсе Twenty. Любое рабочее пространство Twenty может просматривать, устанавливать и обновлять приложения из маркетплейса непосредственно из интерфейса.
@@ -138,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',
@@ -216,33 +216,18 @@ npx create-twenty-app@latest my-twenty-app --example postcard
İskelet oluşturucu sizin için zaten yerel bir Twenty sunucusu başlattı. Daha sonra yönetmek için `yarn twenty server` komutunu kullanın:
| Komut | Açıklama |
| -------------------------------------- | --------------------------------------------------------------- |
| `yarn twenty server start` | Yerel sunucuyu başlatır (gerekirse imajı çeker) |
| `yarn twenty server start --port 3030` | Özel bir portta başlatır |
| `yarn twenty server start --test` | 2021 numaralı bağlantı noktasında ayrı bir test örneği başlatın |
| `yarn twenty server stop` | Sunucuyu durdurur (verileri korur) |
| `yarn twenty server status` | Sunucu durumunu, URL'yi ve kimlik bilgilerini gösterir |
| `yarn twenty server logs` | Sunucu günlüklerini akış olarak iletir |
| `yarn twenty server logs --lines 100` | Son 100 günlük satırını gösterir |
| `yarn twenty server reset` | Tüm verileri siler ve sıfırdan başlatır |
| Komut | Açıklama |
| -------------------------------------- | ------------------------------------------------------ |
| `yarn twenty server start` | Yerel sunucuyu başlatır (gerekirse imajı çeker) |
| `yarn twenty server start --port 3030` | Özel bir portta başlatır |
| `yarn twenty server stop` | Sunucuyu durdurur (verileri korur) |
| `yarn twenty server status` | Sunucu durumunu, URL'yi ve kimlik bilgilerini gösterir |
| `yarn twenty server logs` | Sunucu günlüklerini akış olarak iletir |
| `yarn twenty server logs --lines 100` | Son 100 günlük satırını gösterir |
| `yarn twenty server reset` | Tüm verileri siler ve sıfırdan başlatır |
Veriler, yeniden başlatmalar arasında iki Docker biriminde kalıcıdır (PostgreSQL için `twenty-app-dev-data`, dosyalar için `twenty-app-dev-storage`). Her şeyi silip baştan başlamak için `reset` kullanın.
### Test örneği çalıştırma
`server` komutlarının herhangi birine `--test` parametresini vererek ikinci, tamamen yalıtılmış bir örneği yönetin — entegrasyon testlerini çalıştırmak veya ana geliştirme verilerinize dokunmadan denemeler yapmak için kullanışlıdır.
| Komut | Açıklama |
| ---------------------------------- | -------------------------------------------------------------- |
| `yarn twenty server start --test` | Test örneğini başlatır (varsayılan bağlantı noktası 2021'dir) |
| `yarn twenty server stop --test` | Test örneğini durdurur |
| `yarn twenty server status --test` | Test örneğinin durumunu, URL'yi ve kimlik bilgilerini gösterir |
| `yarn twenty server logs --test` | Test örneği günlüklerini akış olarak iletir |
| `yarn twenty server reset --test` | Test verilerini siler ve sıfırdan başlatır |
Test örneği, kendine ait bir Docker konteynerinde (`twenty-app-dev-test`), ayrılmış birimlerle (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) ve yapılandırmayla çalışır; böylece ana örneğinizle çakışma olmadan paralel olarak çalışabilir. Varsayılan 2021'i geçersiz kılmak için `--test` ile `--port`'u birlikte kullanın.
<Note>
Sunucunun çalışması için **Docker**'ın çalışıyor olması gerekir. "Docker not running" hatası görürseniz Docker Desktop'ın (veya Docker daemon'ının) başlatıldığından emin olun.
</Note>
@@ -80,57 +80,6 @@ Bir güncelleme yayımlamak için:
{/* TODO: add screenshot of the Upgrade button */}
## Otomatik CI/CD (hazır şablonlu iş akışları)
`create-twenty-app` ile oluşturulan uygulamalar, kutudan çıktığı gibi `.github/workflows/` altında iki GitHub Actions iş akışıyla gelir. Depoyu GitHuba iter itmez çalışmaya hazırdır — CI için ek bir kurulum gerekmez ve CD yalnızca tek bir gizli anahtar gerektirir.
### CI — `ci.yml`
Entegrasyon testlerini `main` dalına yapılan her itmede ve her çekme isteğinde otomatik olarak çalıştırır.
**Ne yapar:**
1. Uygulamanızın kaynak kodunu alır.
2. `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` bileşik eylemini kullanarak yalıtılmış bir Twenty test örneği başlatır (CI'daki `yarn twenty server start --test` eşdeğeri).
3. Corepacki etkinleştirir, `.nvmrc` dosyanızdan Node.js'i kurar ve bağımlılıkları `yarn install --immutable` ile yükler.
4. Oluşturulan örnekten `TWENTY_API_URL` ve `TWENTY_API_KEY` değerlerini aktararak `yarn test`i çalıştırır; böylece testleriniz gerçek bir sunucuyla haberleşebilir.
**Yapılandırma seçenekleri:**
* `TWENTY_VERSION` (ortam, varsayılanı `latest`) — CIda kullanılan Twenty sunucu sürümünü `ci.yml` içinde bunu düzenleyerek sabitleyin.
* Eşzamanlılık `github.ref` bazında gruplanır ve yeni itmelerde devam eden çalışmaları iptal eder.
Gizli anahtar gerekmez — test örneği geçicidir ve yalnızca iş süresi boyunca çalışır.
### CD — `cd.yml`
`main` dalına yapılan her itmede uygulamanızı yapılandırılmış bir Twenty sunucusuna dağıtır ve isteğe bağlı olarak `deploy` etiketi uygulandığında bir çekme isteğinden de dağıtım yapar.
**Ne yapar:**
1. Etiketli PR'ler için PR'in head commit'ini ya da itilen commit'i alır.
2. `twentyhq/twenty/.github/actions/deploy-twenty-app@main` çalıştırır — `yarn twenty deploy` komutunun CI eşdeğeridir.
3. `twentyhq/twenty/.github/actions/install-twenty-app@main` eylemini çalıştırır; böylece yeni dağıtılan sürüm hedef çalışma alanına kurulur.
**Gerekli yapılandırma:**
| Ayar | Koşul | Amaç |
| ----------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| `TWENTY_DEPLOY_URL` | `cd.yml` içinde `env` (varsayılan: `http://localhost:3000`) | Dağıtımın yapılacağı Twenty sunucusu. İlk kullanımdan önce bunu gerçek sunucu URL'nizle değiştirin. |
| `TWENTY_DEPLOY_API_KEY` | GitHub deposu **Settings → Secrets and variables → Actions** | Hedef sunucuda dağıtım iznine sahip API anahtarı. |
<Note>
Varsayılan `TWENTY_DEPLOY_URL` olan `http://localhost:3000` bir yer tutucudur — GitHub barındırmalı bir çalıştırıcıdan hiçbir yere erişemez. CD'yi etkinleştirmeden önce bunu sunucunuzun genel URL'siyle güncelleyin (veya ağ erişimi olan öz barındırılan bir çalıştırıcı kullanın).
</Note>
**Bir PR'den bir önizleme dağıtımını tetikleme:**
Bir çekme isteğine `deploy` etiketini ekleyin. `cd.yml` içindeki `if:` koruması, ilgili PR için işi PR'in head commit'ini kullanarak çalıştırır; böylece birleştirmeden önce hedef sunucuda değişikliği doğrulayabilirsiniz.
### Yeniden kullanılabilir eylemleri sabitleme
Her iki iş akışı da `@main` üzerindeki yeniden kullanılabilir eylemlere başvurur; bu nedenle `twentyhq/twenty` deposundaki eylem güncellemeleri otomatik olarak alınır. Deterministik derlemeler istiyorsanız, her `uses:` satırında `@main` ifadesini bir commit SHA'sı veya sürüm etiketiyle değiştirin.
## npmye yayımlama
npmye yayımlamak, uygulamanızın Twenty pazaryerinde keşfedilebilir olmasını sağlar. Herhangi bir Twenty çalışma alanı, pazaryeri uygulamalarına doğrudan arayüzden göz atabilir, yükleyebilir ve güncelleyebilir.
@@ -138,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"
{
@@ -45,7 +45,7 @@ const getHtmlElementSchemas = (): ComponentSchema[] => {
events: element.events
? [...COMMON_HTML_EVENTS, ...element.events]
: COMMON_HTML_EVENTS,
htmlTag: element.htmlTag ?? extractHtmlTag(element.tag),
htmlTag: extractHtmlTag(element.tag),
}));
};
@@ -12,7 +12,6 @@ export const HtmlElementConfigZ = z.object({
.regex(/^Html[A-Z]/, 'Name must be PascalCase starting with Html'),
properties: z.record(z.string(), PropertySchemaZ),
events: z.array(z.string()).optional(),
htmlTag: z.string().optional(),
});
export const HtmlElementConfigArrayZ = z.array(HtmlElementConfigZ);
@@ -1,12 +1,13 @@
import { type PropertySchema } from './PropertySchema';
import { SVG_PRESENTATION_PROPERTIES } from './SvgPresentationProperties';
type PropertySchema = {
type: 'string' | 'number' | 'boolean';
optional: boolean;
};
export type AllowedHtmlElement = {
tag: string;
name: string;
properties: Record<string, PropertySchema>;
events?: string[];
htmlTag?: string;
};
export const ALLOWED_HTML_ELEMENTS: AllowedHtmlElement[] = [
@@ -248,421 +249,4 @@ export const ALLOWED_HTML_ELEMENTS: AllowedHtmlElement[] = [
height: { type: 'number', optional: true },
},
},
// Semantic inline text
{ tag: 'html-b', name: 'HtmlB', properties: {} },
{ tag: 'html-i', name: 'HtmlI', properties: {} },
{ tag: 'html-u', name: 'HtmlU', properties: {} },
{ tag: 'html-s', name: 'HtmlS', properties: {} },
{ tag: 'html-mark', name: 'HtmlMark', properties: {} },
{ tag: 'html-sub', name: 'HtmlSub', properties: {} },
{ tag: 'html-sup', name: 'HtmlSup', properties: {} },
{ tag: 'html-abbr', name: 'HtmlAbbr', properties: {} },
{ tag: 'html-cite', name: 'HtmlCite', properties: {} },
{ tag: 'html-kbd', name: 'HtmlKbd', properties: {} },
{ tag: 'html-samp', name: 'HtmlSamp', properties: {} },
{ tag: 'html-var', name: 'HtmlVar', properties: {} },
{ tag: 'html-dfn', name: 'HtmlDfn', properties: {} },
{ tag: 'html-bdi', name: 'HtmlBdi', properties: {} },
{
tag: 'html-bdo',
name: 'HtmlBdo',
properties: {
dir: { type: 'string', optional: true },
},
},
{
tag: 'html-data',
name: 'HtmlData',
properties: {
value: { type: 'string', optional: true },
},
},
// Edited/annotated text
{
tag: 'html-del',
name: 'HtmlDel',
properties: {
cite: { type: 'string', optional: true },
dateTime: { type: 'string', optional: true },
},
},
{
tag: 'html-ins',
name: 'HtmlIns',
properties: {
cite: { type: 'string', optional: true },
dateTime: { type: 'string', optional: true },
},
},
{
tag: 'html-q',
name: 'HtmlQ',
properties: {
cite: { type: 'string', optional: true },
},
},
{
tag: 'html-time',
name: 'HtmlTime',
properties: {
dateTime: { type: 'string', optional: true },
},
},
// Ruby annotations
{ tag: 'html-ruby', name: 'HtmlRuby', properties: {} },
{ tag: 'html-rt', name: 'HtmlRt', properties: {} },
{ tag: 'html-rp', name: 'HtmlRp', properties: {} },
// Description lists
{ tag: 'html-dl', name: 'HtmlDl', properties: {} },
{ tag: 'html-dt', name: 'HtmlDt', properties: {} },
{ tag: 'html-dd', name: 'HtmlDd', properties: {} },
// Structural/semantic
{ tag: 'html-figure', name: 'HtmlFigure', properties: {} },
{ tag: 'html-figcaption', name: 'HtmlFigcaption', properties: {} },
{
tag: 'html-details',
name: 'HtmlDetails',
properties: {
open: { type: 'boolean', optional: true },
},
},
{ tag: 'html-summary', name: 'HtmlSummary', properties: {} },
{ tag: 'html-address', name: 'HtmlAddress', properties: {} },
{
tag: 'html-dialog',
name: 'HtmlDialog',
properties: {
open: { type: 'boolean', optional: true },
},
},
{ tag: 'html-hgroup', name: 'HtmlHgroup', properties: {} },
{ tag: 'html-search', name: 'HtmlSearch', properties: {} },
// Table additions
{ tag: 'html-caption', name: 'HtmlCaption', properties: {} },
{
tag: 'html-colgroup',
name: 'HtmlColgroup',
properties: {
span: { type: 'number', optional: true },
},
},
{
tag: 'html-col',
name: 'HtmlCol',
properties: {
span: { type: 'number', optional: true },
},
},
// Form additions
{
tag: 'html-fieldset',
name: 'HtmlFieldset',
properties: {
disabled: { type: 'boolean', optional: true },
name: { type: 'string', optional: true },
},
},
{ tag: 'html-legend', name: 'HtmlLegend', properties: {} },
{
tag: 'html-output',
name: 'HtmlOutput',
properties: {
name: { type: 'string', optional: true },
htmlFor: { type: 'string', optional: true },
},
},
{
tag: 'html-progress',
name: 'HtmlProgress',
properties: {
value: { type: 'number', optional: true },
max: { type: 'number', optional: true },
},
},
{
tag: 'html-meter',
name: 'HtmlMeter',
properties: {
value: { type: 'number', optional: true },
min: { type: 'number', optional: true },
max: { type: 'number', optional: true },
low: { type: 'number', optional: true },
high: { type: 'number', optional: true },
optimum: { type: 'number', optional: true },
},
},
{
tag: 'html-optgroup',
name: 'HtmlOptgroup',
properties: {
label: { type: 'string', optional: true },
disabled: { type: 'boolean', optional: true },
},
},
{ tag: 'html-datalist', name: 'HtmlDatalist', properties: {} },
// Media additions
{ tag: 'html-picture', name: 'HtmlPicture', properties: {} },
{
tag: 'html-track',
name: 'HtmlTrack',
properties: {
src: { type: 'string', optional: true },
kind: { type: 'string', optional: true },
srclang: { type: 'string', optional: true },
label: { type: 'string', optional: true },
default: { type: 'boolean', optional: true },
},
},
// Miscellaneous
{ tag: 'html-wbr', name: 'HtmlWbr', properties: {} },
{ tag: 'html-menu', name: 'HtmlMenu', properties: {} },
// SVG container/structural
{
tag: 'html-svg',
name: 'HtmlSvg',
properties: {
...SVG_PRESENTATION_PROPERTIES,
viewBox: { type: 'string', optional: true },
xmlns: { type: 'string', optional: true },
width: { type: 'string', optional: true },
height: { type: 'string', optional: true },
preserveAspectRatio: { type: 'string', optional: true },
},
},
{
tag: 'html-g',
name: 'HtmlG',
properties: {
...SVG_PRESENTATION_PROPERTIES,
},
},
{ tag: 'html-defs', name: 'HtmlDefs', properties: {} },
{
tag: 'html-symbol',
name: 'HtmlSymbol',
properties: {
viewBox: { type: 'string', optional: true },
},
},
{
tag: 'html-use',
name: 'HtmlUse',
properties: {
href: { type: 'string', optional: true },
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
width: { type: 'string', optional: true },
height: { type: 'string', optional: true },
},
},
{
tag: 'html-clippath',
name: 'HtmlClipPath',
htmlTag: 'clipPath',
properties: {
clipPathUnits: { type: 'string', optional: true },
},
},
{
tag: 'html-mask',
name: 'HtmlMask',
properties: {
maskUnits: { type: 'string', optional: true },
},
},
// SVG shapes
{
tag: 'html-circle',
name: 'HtmlCircle',
properties: {
...SVG_PRESENTATION_PROPERTIES,
cx: { type: 'string', optional: true },
cy: { type: 'string', optional: true },
r: { type: 'string', optional: true },
},
},
{
tag: 'html-ellipse',
name: 'HtmlEllipse',
properties: {
...SVG_PRESENTATION_PROPERTIES,
cx: { type: 'string', optional: true },
cy: { type: 'string', optional: true },
rx: { type: 'string', optional: true },
ry: { type: 'string', optional: true },
},
},
{
tag: 'html-rect',
name: 'HtmlRect',
properties: {
...SVG_PRESENTATION_PROPERTIES,
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
width: { type: 'string', optional: true },
height: { type: 'string', optional: true },
rx: { type: 'string', optional: true },
ry: { type: 'string', optional: true },
},
},
{
tag: 'html-line',
name: 'HtmlLine',
properties: {
...SVG_PRESENTATION_PROPERTIES,
x1: { type: 'string', optional: true },
y1: { type: 'string', optional: true },
x2: { type: 'string', optional: true },
y2: { type: 'string', optional: true },
},
},
{
tag: 'html-path',
name: 'HtmlPath',
properties: {
...SVG_PRESENTATION_PROPERTIES,
d: { type: 'string', optional: true },
},
},
{
tag: 'html-polygon',
name: 'HtmlPolygon',
properties: {
...SVG_PRESENTATION_PROPERTIES,
points: { type: 'string', optional: true },
},
},
{
tag: 'html-polyline',
name: 'HtmlPolyline',
properties: {
...SVG_PRESENTATION_PROPERTIES,
points: { type: 'string', optional: true },
},
},
// SVG text
{
tag: 'html-text',
name: 'HtmlText',
properties: {
...SVG_PRESENTATION_PROPERTIES,
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
dx: { type: 'string', optional: true },
dy: { type: 'string', optional: true },
textAnchor: { type: 'string', optional: true },
dominantBaseline: { type: 'string', optional: true },
},
},
{
tag: 'html-tspan',
name: 'HtmlTspan',
properties: {
...SVG_PRESENTATION_PROPERTIES,
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
dx: { type: 'string', optional: true },
dy: { type: 'string', optional: true },
},
},
// SVG gradients/patterns
{
tag: 'html-lineargradient',
name: 'HtmlLinearGradient',
htmlTag: 'linearGradient',
properties: {
x1: { type: 'string', optional: true },
y1: { type: 'string', optional: true },
x2: { type: 'string', optional: true },
y2: { type: 'string', optional: true },
gradientUnits: { type: 'string', optional: true },
gradientTransform: { type: 'string', optional: true },
},
},
{
tag: 'html-radialgradient',
name: 'HtmlRadialGradient',
htmlTag: 'radialGradient',
properties: {
cx: { type: 'string', optional: true },
cy: { type: 'string', optional: true },
r: { type: 'string', optional: true },
fx: { type: 'string', optional: true },
fy: { type: 'string', optional: true },
gradientUnits: { type: 'string', optional: true },
gradientTransform: { type: 'string', optional: true },
},
},
{
tag: 'html-stop',
name: 'HtmlStop',
properties: {
offset: { type: 'string', optional: true },
stopColor: { type: 'string', optional: true },
stopOpacity: { type: 'string', optional: true },
},
},
{
tag: 'html-pattern',
name: 'HtmlPattern',
properties: {
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
width: { type: 'string', optional: true },
height: { type: 'string', optional: true },
patternUnits: { type: 'string', optional: true },
patternTransform: { type: 'string', optional: true },
},
},
// SVG other
{
tag: 'html-image',
name: 'HtmlImage',
properties: {
href: { type: 'string', optional: true },
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
width: { type: 'string', optional: true },
height: { type: 'string', optional: true },
preserveAspectRatio: { type: 'string', optional: true },
},
},
{
tag: 'html-foreignobject',
name: 'HtmlForeignObject',
htmlTag: 'foreignObject',
properties: {
x: { type: 'string', optional: true },
y: { type: 'string', optional: true },
width: { type: 'string', optional: true },
height: { type: 'string', optional: true },
},
},
{
tag: 'html-marker',
name: 'HtmlMarker',
properties: {
markerWidth: { type: 'string', optional: true },
markerHeight: { type: 'string', optional: true },
refX: { type: 'string', optional: true },
refY: { type: 'string', optional: true },
orient: { type: 'string', optional: true },
markerUnits: { type: 'string', optional: true },
},
},
{ tag: 'html-title', name: 'HtmlTitle', properties: {} },
];
@@ -4,29 +4,24 @@ const UTILITY_TAG_MAPPINGS: Record<string, string> = {
'remote-style': 'RemoteStyle',
};
const getHostTagName = (element: (typeof ALLOWED_HTML_ELEMENTS)[number]) =>
element.htmlTag ??
(element.tag.startsWith('html-') ? element.tag.slice(5) : element.tag);
export const HTML_TAG_TO_REMOTE_COMPONENT: Record<string, string> = {
...Object.fromEntries(
ALLOWED_HTML_ELEMENTS.map((element) => [
getHostTagName(element),
element.tag.startsWith('html-') ? element.tag.slice(5) : element.tag,
element.name,
]),
),
...UTILITY_TAG_MAPPINGS,
};
// Maps standard HTML/SVG tag names to their custom element equivalents
// used by the remote DOM polyfill (e.g. "div" → "html-div",
// "clipPath" → "html-clippath").
// Maps standard HTML tag names to their custom element equivalents
// used by the remote DOM polyfill (e.g. "div" → "html-div").
// Consumed by the jsx-runtime wrapper so React creates the correct
// custom elements instead of standard HTML/SVG tags.
// custom elements instead of standard HTML tags.
export const HTML_TAG_TO_CUSTOM_ELEMENT_TAG: Record<string, string> = {
...Object.fromEntries(
ALLOWED_HTML_ELEMENTS.map((element) => [
getHostTagName(element),
element.tag.startsWith('html-') ? element.tag.slice(5) : element.tag,
element.tag,
]),
),
@@ -1,22 +0,0 @@
import { type PropertySchema } from './PropertySchema';
export const SVG_PRESENTATION_PROPERTIES: Record<string, PropertySchema> = {
fill: { type: 'string', optional: true },
fillOpacity: { type: 'string', optional: true },
fillRule: { type: 'string', optional: true },
stroke: { type: 'string', optional: true },
strokeWidth: { type: 'string', optional: true },
strokeOpacity: { type: 'string', optional: true },
strokeLinecap: { type: 'string', optional: true },
strokeLinejoin: { type: 'string', optional: true },
strokeDasharray: { type: 'string', optional: true },
strokeDashoffset: { type: 'string', optional: true },
strokeMiterlimit: { type: 'string', optional: true },
opacity: { type: 'string', optional: true },
transform: { type: 'string', optional: true },
clipPath: { type: 'string', optional: true },
clipRule: { type: 'string', optional: true },
mask: { type: 'string', optional: true },
filter: { type: 'string', optional: true },
pointerEvents: { type: 'string', optional: true },
};
@@ -92,162 +92,6 @@ export const componentRegistry: Map<string, ComponentRegistryValue> = new Map([
'html-source',
createRemoteComponentRenderer(createHtmlHostWrapper('source')),
],
['html-b', createRemoteComponentRenderer(createHtmlHostWrapper('b'))],
['html-i', createRemoteComponentRenderer(createHtmlHostWrapper('i'))],
['html-u', createRemoteComponentRenderer(createHtmlHostWrapper('u'))],
['html-s', createRemoteComponentRenderer(createHtmlHostWrapper('s'))],
['html-mark', createRemoteComponentRenderer(createHtmlHostWrapper('mark'))],
['html-sub', createRemoteComponentRenderer(createHtmlHostWrapper('sub'))],
['html-sup', createRemoteComponentRenderer(createHtmlHostWrapper('sup'))],
['html-abbr', createRemoteComponentRenderer(createHtmlHostWrapper('abbr'))],
['html-cite', createRemoteComponentRenderer(createHtmlHostWrapper('cite'))],
['html-kbd', createRemoteComponentRenderer(createHtmlHostWrapper('kbd'))],
['html-samp', createRemoteComponentRenderer(createHtmlHostWrapper('samp'))],
['html-var', createRemoteComponentRenderer(createHtmlHostWrapper('var'))],
['html-dfn', createRemoteComponentRenderer(createHtmlHostWrapper('dfn'))],
['html-bdi', createRemoteComponentRenderer(createHtmlHostWrapper('bdi'))],
['html-bdo', createRemoteComponentRenderer(createHtmlHostWrapper('bdo'))],
['html-data', createRemoteComponentRenderer(createHtmlHostWrapper('data'))],
['html-del', createRemoteComponentRenderer(createHtmlHostWrapper('del'))],
['html-ins', createRemoteComponentRenderer(createHtmlHostWrapper('ins'))],
['html-q', createRemoteComponentRenderer(createHtmlHostWrapper('q'))],
['html-time', createRemoteComponentRenderer(createHtmlHostWrapper('time'))],
['html-ruby', createRemoteComponentRenderer(createHtmlHostWrapper('ruby'))],
['html-rt', createRemoteComponentRenderer(createHtmlHostWrapper('rt'))],
['html-rp', createRemoteComponentRenderer(createHtmlHostWrapper('rp'))],
['html-dl', createRemoteComponentRenderer(createHtmlHostWrapper('dl'))],
['html-dt', createRemoteComponentRenderer(createHtmlHostWrapper('dt'))],
['html-dd', createRemoteComponentRenderer(createHtmlHostWrapper('dd'))],
[
'html-figure',
createRemoteComponentRenderer(createHtmlHostWrapper('figure')),
],
[
'html-figcaption',
createRemoteComponentRenderer(createHtmlHostWrapper('figcaption')),
],
[
'html-details',
createRemoteComponentRenderer(createHtmlHostWrapper('details')),
],
[
'html-summary',
createRemoteComponentRenderer(createHtmlHostWrapper('summary')),
],
[
'html-address',
createRemoteComponentRenderer(createHtmlHostWrapper('address')),
],
[
'html-dialog',
createRemoteComponentRenderer(createHtmlHostWrapper('dialog')),
],
[
'html-hgroup',
createRemoteComponentRenderer(createHtmlHostWrapper('hgroup')),
],
[
'html-search',
createRemoteComponentRenderer(createHtmlHostWrapper('search')),
],
[
'html-caption',
createRemoteComponentRenderer(createHtmlHostWrapper('caption')),
],
[
'html-colgroup',
createRemoteComponentRenderer(createHtmlHostWrapper('colgroup')),
],
['html-col', createRemoteComponentRenderer(createHtmlHostWrapper('col'))],
[
'html-fieldset',
createRemoteComponentRenderer(createHtmlHostWrapper('fieldset')),
],
[
'html-legend',
createRemoteComponentRenderer(createHtmlHostWrapper('legend')),
],
[
'html-output',
createRemoteComponentRenderer(createHtmlHostWrapper('output')),
],
[
'html-progress',
createRemoteComponentRenderer(createHtmlHostWrapper('progress')),
],
['html-meter', createRemoteComponentRenderer(createHtmlHostWrapper('meter'))],
[
'html-optgroup',
createRemoteComponentRenderer(createHtmlHostWrapper('optgroup')),
],
[
'html-datalist',
createRemoteComponentRenderer(createHtmlHostWrapper('datalist')),
],
[
'html-picture',
createRemoteComponentRenderer(createHtmlHostWrapper('picture')),
],
['html-track', createRemoteComponentRenderer(createHtmlHostWrapper('track'))],
['html-wbr', createRemoteComponentRenderer(createHtmlHostWrapper('wbr'))],
['html-menu', createRemoteComponentRenderer(createHtmlHostWrapper('menu'))],
['html-svg', createRemoteComponentRenderer(createHtmlHostWrapper('svg'))],
['html-g', createRemoteComponentRenderer(createHtmlHostWrapper('g'))],
['html-defs', createRemoteComponentRenderer(createHtmlHostWrapper('defs'))],
[
'html-symbol',
createRemoteComponentRenderer(createHtmlHostWrapper('symbol')),
],
['html-use', createRemoteComponentRenderer(createHtmlHostWrapper('use'))],
[
'html-clippath',
createRemoteComponentRenderer(createHtmlHostWrapper('clipPath')),
],
['html-mask', createRemoteComponentRenderer(createHtmlHostWrapper('mask'))],
[
'html-circle',
createRemoteComponentRenderer(createHtmlHostWrapper('circle')),
],
[
'html-ellipse',
createRemoteComponentRenderer(createHtmlHostWrapper('ellipse')),
],
['html-rect', createRemoteComponentRenderer(createHtmlHostWrapper('rect'))],
['html-line', createRemoteComponentRenderer(createHtmlHostWrapper('line'))],
['html-path', createRemoteComponentRenderer(createHtmlHostWrapper('path'))],
[
'html-polygon',
createRemoteComponentRenderer(createHtmlHostWrapper('polygon')),
],
[
'html-polyline',
createRemoteComponentRenderer(createHtmlHostWrapper('polyline')),
],
['html-text', createRemoteComponentRenderer(createHtmlHostWrapper('text'))],
['html-tspan', createRemoteComponentRenderer(createHtmlHostWrapper('tspan'))],
[
'html-lineargradient',
createRemoteComponentRenderer(createHtmlHostWrapper('linearGradient')),
],
[
'html-radialgradient',
createRemoteComponentRenderer(createHtmlHostWrapper('radialGradient')),
],
['html-stop', createRemoteComponentRenderer(createHtmlHostWrapper('stop'))],
[
'html-pattern',
createRemoteComponentRenderer(createHtmlHostWrapper('pattern')),
],
['html-image', createRemoteComponentRenderer(createHtmlHostWrapper('image'))],
[
'html-foreignobject',
createRemoteComponentRenderer(createHtmlHostWrapper('foreignObject')),
],
[
'html-marker',
createRemoteComponentRenderer(createHtmlHostWrapper('marker')),
],
['html-title', createRemoteComponentRenderer(createHtmlHostWrapper('title'))],
['remote-style', createRemoteComponentRenderer(RemoteStyleRenderer)],
['remote-fragment', RemoteFragmentRenderer],
]);
@@ -13,14 +13,14 @@ const EVENT_NAME_MAP: Record<string, string> = Object.fromEntries(
);
const VOID_ELEMENTS = new Set([
'area',
'base',
'input',
'br',
'col',
'embed',
'hr',
'img',
'input',
'area',
'base',
'col',
'embed',
'link',
'meta',
'source',
File diff suppressed because it is too large Load Diff
+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
@@ -2,13 +2,12 @@ import { useHasAccessTokenPair } from '@/auth/hooks/useHasAccessTokenPair';
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { useQuery } from '@apollo/client/react';
import { useParams } from 'react-router-dom';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { AppPath, SettingsPath } from 'twenty-shared/types';
import { getSettingsPath } from 'twenty-shared/utils';
import { OnboardingStatus, PageLayoutType } from '~/generated-metadata/graphql';
import { OnboardingStatus } from '~/generated-metadata/graphql';
import { useIsCurrentLocationOnAWorkspace } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspace';
import { usePageChangeEffectNavigateLocation } from '~/hooks/usePageChangeEffectNavigateLocation';
@@ -59,23 +58,11 @@ const setupMockIsOnAWorkspace = (isOnAWorkspace: boolean) => {
});
};
jest.mock('@apollo/client/react');
const setupMockUseQuery = (result?: { data?: unknown; loading?: boolean }) => {
jest.mocked(useQuery).mockReturnValueOnce({
data: result?.data ?? undefined,
loading: result?.loading ?? false,
} as ReturnType<typeof useQuery>);
};
jest.mock('react-router-dom');
const setupMockUseParams = (
objectNamePlural?: string,
pageLayoutId?: string,
) => {
jest.mocked(useParams).mockReturnValueOnce({
objectNamePlural: objectNamePlural ?? '',
pageLayoutId,
});
const setupMockUseParams = (objectNamePlural?: string) => {
jest
.mocked(useParams)
.mockReturnValueOnce({ objectNamePlural: objectNamePlural ?? '' });
};
jest.mock('@/ui/utilities/state/jotai/hooks/useAtomStateValue');
@@ -105,8 +92,6 @@ const testCases: {
objectNamePluralFromMetadata?: string;
verifyEmailRedirectPath?: string;
returnToPath?: string;
pageLayoutId?: string;
useQueryResult?: { data?: unknown; loading?: boolean };
}[] = [
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
@@ -292,20 +277,6 @@ const testCases: {
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined, pageLayoutId: 'valid-id', useQueryResult: { loading: true } },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: AppPath.NotFound, pageLayoutId: 'non-existent-id', useQueryResult: { data: { getPageLayout: null }, loading: false } },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: AppPath.NotFound, pageLayoutId: 'wrong-type-id', useQueryResult: { data: { getPageLayout: { type: PageLayoutType.RECORD_PAGE } }, loading: false } },
{ loc: AppPath.PageLayoutPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined, pageLayoutId: 'valid-standalone-id', useQueryResult: { data: { getPageLayout: { type: PageLayoutType.STANDALONE_PAGE } }, loading: false } },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
@@ -379,8 +350,6 @@ describe('usePageChangeEffectNavigateLocation', () => {
objectNamePluralFromMetadata,
verifyEmailRedirectPath,
returnToPath,
pageLayoutId,
useQueryResult,
res,
}) => {
setupMockIsMatchingLocation(loc);
@@ -388,8 +357,7 @@ describe('usePageChangeEffectNavigateLocation', () => {
setupMockIsWorkspaceActivationStatusEqualsTo(isWorkspaceSuspended);
setupMockHasAccessTokenPair(hasAccessTokenPair);
setupMockIsOnAWorkspace(isOnAWorkspace ?? true);
setupMockUseQuery(useQueryResult);
setupMockUseParams(objectNamePluralFromParams, pageLayoutId);
setupMockUseParams(objectNamePluralFromParams);
setupMockState(
objectNamePluralFromMetadata,
verifyEmailRedirectPath,
@@ -411,12 +379,6 @@ describe('usePageChangeEffectNavigateLocation', () => {
['nonExistingObjectInParam', 'existingObjectInParam:false'].length +
['caseWithRedirectionToVerifyEmailRedirectPath', 'caseWithout']
.length +
[
'pageLayout:loading',
'pageLayout:missing',
'pageLayout:wrongType',
'pageLayout:validStandalone',
].length +
['returnToPath:verify', 'returnToPath:signInUp', 'returnToPath:index']
.length +
['notOnWorkspace:verify', 'notOnWorkspace:signInUp'].length,
@@ -11,17 +11,12 @@ import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { isValidReturnToPath } from '@/auth/utils/isValidReturnToPath';
import { useQuery } from '@apollo/client/react';
import { isNonEmptyString } from '@sniptt/guards';
import { useLocation, useParams } from 'react-router-dom';
import { AppPath, SettingsPath } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { WorkspaceActivationStatus } from 'twenty-shared/workspace';
import {
FindOnePageLayoutTypeDocument,
OnboardingStatus,
PageLayoutType,
} from '~/generated-metadata/graphql';
import { OnboardingStatus } from '~/generated-metadata/graphql';
import { isMatchingLocation } from '~/utils/isMatchingLocation';
const readReturnToPathFromUrlSearchParams = (): string | null => {
@@ -44,27 +39,11 @@ export const usePageChangeEffectNavigateLocation = () => {
const someMatchingLocationOf = (appPaths: AppPath[]): boolean =>
appPaths.some((appPath) => isMatchingLocation(location, appPath));
const params = useParams();
const objectNamePlural = params.objectNamePlural ?? '';
const objectNamePlural = useParams().objectNamePlural ?? '';
const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector);
const objectMetadataItem = objectMetadataItems?.find(
(objectMetadataItem) => objectMetadataItem.namePlural === objectNamePlural,
);
const pageLayoutId = params.pageLayoutId;
const isOnPageLayoutPage = isMatchingLocation(
location,
AppPath.PageLayoutPage,
);
const { data: pageLayoutData, loading: isPageLayoutLoading } = useQuery(
FindOnePageLayoutTypeDocument,
{
variables: { id: pageLayoutId ?? '' },
skip: !isOnPageLayoutPage || !isDefined(pageLayoutId),
},
);
const verifyEmailRedirectPath = useAtomStateValue(
verifyEmailRedirectPathState,
);
@@ -178,15 +157,5 @@ export const usePageChangeEffectNavigateLocation = () => {
return AppPath.NotFound;
}
if (
isOnPageLayoutPage &&
isDefined(pageLayoutId) &&
!isPageLayoutLoading &&
(!isDefined(pageLayoutData?.getPageLayout) ||
pageLayoutData.getPageLayout.type !== PageLayoutType.STANDALONE_PAGE)
) {
return AppPath.NotFound;
}
return;
};
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Aksies gebruikers kan uitvoer op hierdie voorwerp"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Aktiveer"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "'n Fout het voorgekom tydens die oplaai van die prent."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "'n Objek met hierdie naam bestaan reeds"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "'n Onverwagte fout het voorgekom"
@@ -1954,11 +1948,6 @@ msgstr "App"
msgid "App installed on this workspace"
msgstr "App op hierdie werkruimte geïnstalleer"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Knipbord vereis 'n veilige verbinding (HTTPS). Gebruik asseblief hierdie
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Maak toe"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Sluit banier"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Maak sypaneel toe"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Ontwikkelaar"
msgid "Developers links"
msgstr "Skakels vir ontwikkelaars"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Vertoon teks op meerdere reëls"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Verspreiding"
@@ -5603,11 +5591,6 @@ msgstr "Leë Inboks"
msgid "Empty Object"
msgstr "Leë Objek"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr ""
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Benut jou werkruimte optimaal deur jou span uit te nooi."
msgid "Get your subscription"
msgstr "Kry jou inskrywing"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Globaal"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Meer"
@@ -9663,20 +9652,6 @@ msgstr "Nuwe SSO Konfigurasie"
msgid "New SSO provider"
msgstr "Nuwe SSO Verskaffer"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Nota"
msgid "Notes"
msgstr "Notas"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Maak Outlook oop"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Maak sypaneel oop"
@@ -10811,7 +10782,6 @@ msgstr "Rangskik"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Rekord etiket"
msgid "Record Page"
msgstr "Rekordbladsy"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Rekord Seleksie"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Stuur e-pos weer"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Stel terug"
@@ -12059,16 +12032,16 @@ msgstr "Stel terug"
msgid "Reset 2FA"
msgstr "Herstel 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Voer {formattedName} uit"
msgid "Running function"
msgstr "Funksie word uitgevoer"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Soek"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Soek ''{sidePanelSearch}'' met..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Hierdie rekening is gekoppel, maar ons het nog nie toestemming om e-posk
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14377,11 +14338,6 @@ msgstr "Hierdie sleutel moet via die liggaam-invoer gestel word"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Hierdie model sal van die verskaffer verwyder word. Jy kan dit later weer byvoeg."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15126,7 +15082,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16457,10 +16413,10 @@ msgstr "Jou ondernemingsfunksies sal gedeaktiveer word"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Jou ondernemingsfunksies sal aktief bly tot {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Jou ondernemingssleutelformaat is verouderd. Aktiveer asseblief 'n nuwe sleutel om ondernemingsfunksies te behou."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "الإجراءات التي يمكن للمستخدمين تنفيذها
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "تفعيل"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "حدث خطأ أثناء تحميل الصورة."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "يوجد بالفعل كائن يحمل هذا الاسم"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "حدث خطأ غير متوقع"
@@ -1954,11 +1948,6 @@ msgstr "التطبيق"
msgid "App installed on this workspace"
msgstr "التطبيق مثبت على مساحة العمل هذه"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "تتطلب الحافظة اتصالاً آمناً (HTTPS). يُرجى
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "إغلاق"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "إغلاق اللافتة"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "إغلاق اللوحة الجانبية"
@@ -3578,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 "السياق"
@@ -4956,11 +4949,6 @@ msgstr "المطوّر"
msgid "Developers links"
msgstr "روابط المطورين"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "عرض النصوص في عدة خطوط"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "التوزيع"
@@ -5603,11 +5591,6 @@ msgstr "صندوق الوارد فارغ"
msgid "Empty Object"
msgstr "كائن فارغ"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "الرسم البياني القياسي"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "استفد من مساحة العمل الخاصة بك عن طريق د
msgid "Get your subscription"
msgstr "احصل على اشتراكك"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "عالمي"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "المزيد"
@@ -9663,20 +9652,6 @@ msgstr "تكوين SSO الجديد"
msgid "New SSO provider"
msgstr "موفر دخول موحد جديد"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "ملاحظة"
msgid "Notes"
msgstr "الملاحظات"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "فتح Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "فتح اللوحة الجانبية"
@@ -10811,7 +10782,6 @@ msgstr "تنظيم"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "ملصق السجل"
msgid "Record Page"
msgstr "صفحة السجل"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "\\\\"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "إعادة إرسال البريد الإلكتروني"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "إعادة تعيين"
@@ -12059,16 +12032,16 @@ msgstr "إعادة تعيين"
msgid "Reset 2FA"
msgstr "إعادة تعيين المصادقة الثنائية"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "جارٍ تشغيل {formattedName}"
msgid "Running function"
msgstr "الدالة قيد التشغيل"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "\\\\"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "ابحث عن ''{sidePanelSearch}'' بواسطة..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "هذا الحساب متصل، ولكن لا نملك حتى الآن إ
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14377,11 +14338,6 @@ msgstr "يجب تعيين هذا المفتاح عبر إدخال نص الطل
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "سيتم إزالة هذا النموذج من المزود. يمكنك إضافته مرة أخرى لاحقًا."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15126,7 +15082,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16455,10 +16411,10 @@ msgstr "سيتم تعطيل ميزات Enterprise لديك"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "ستظل ميزات Enterprise لديك نشطة حتى {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "تنسيق مفتاح Enterprise الخاص بك لم يعد مدعومًا. يُرجى تفعيل مفتاح جديد للإبقاء على ميزات Enterprise."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Accions que poden realitzar els usuaris en aquest objecte"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Activa"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "S'ha produït un error en carregar la imatge."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Ja existeix un objecte amb aquest nom"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "S'ha produït un error inesperat"
@@ -1954,11 +1948,6 @@ msgstr "App"
msgid "App installed on this workspace"
msgstr "Aplicació instal·lada en aquest espai de treball"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "El porta-retalls requereix una connexió segura (HTTPS). Accedeix a aque
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Tanca"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Tanca el bàner"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Tanca el panell lateral"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Desenvolupador"
msgid "Developers links"
msgstr "Enllaços per a desenvolupadors"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Mostra text en múltiples línies"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Distribució"
@@ -5603,11 +5591,6 @@ msgstr "Bústia buida"
msgid "Empty Object"
msgstr "Objecte Buit"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "Gràfic de mesurador"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Treu el màxim partit al teu espai de treball convidant al teu equip."
msgid "Get your subscription"
msgstr "Obteniu la vostra subscripció"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Global"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Més"
@@ -9663,20 +9652,6 @@ msgstr "Nova configuració SSO"
msgid "New SSO provider"
msgstr "Nou proveïdor SSO"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Nota"
msgid "Notes"
msgstr "Notes"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Obrir en Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Obre el panell lateral"
@@ -10811,7 +10782,6 @@ msgstr "Organitza"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Etiqueta de registre"
msgid "Record Page"
msgstr "Pàgina de registre"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Selecció d'enregistrament"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Reenviar correu electrònic"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Restableix"
@@ -12059,16 +12032,16 @@ msgstr "Restableix"
msgid "Reset 2FA"
msgstr "Reinicia 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Executant {formattedName}"
msgid "Running function"
msgstr "Funció en execució"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Cerca"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Cerca ''{sidePanelSearch}'' amb..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Aquest compte està connectat, però encara no tenim permís per redacta
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14377,11 +14338,6 @@ msgstr "Aquesta clau s'hauria d'establir al cos de la sol·licitud"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Aquest model s'eliminarà del proveïdor. El podreu tornar a afegir més endavant."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15126,7 +15082,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16457,10 +16413,10 @@ msgstr "Les vostres funcionalitats Enterprise es desactivaran"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Les vostres funcionalitats Enterprise romandran actives fins al {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "El format de la vostra clau Enterprise és obsolet. Activeu una clau nova per mantenir les funcionalitats Enterprise."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Akce, které uživatelé mohou provádět na tomto objektu"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Aktivovat"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Při nahrávání obrázku došlo k chybě."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Objekt s tímto názvem již existuje"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Došlo k neočekávané chybě"
@@ -1954,11 +1948,6 @@ msgstr "Aplikace"
msgid "App installed on this workspace"
msgstr "Aplikace nainstalovaná v tomto pracovním prostoru"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Schránka vyžaduje zabezpečené připojení (HTTPS). Pro povolení kop
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Zavřít"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Zavřít banner"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Zavřít postranní panel"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Vývojář"
msgid "Developers links"
msgstr "Odkazy pro vývojáře"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Zobrazit text na více řádcích"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Distribuce"
@@ -5603,11 +5591,6 @@ msgstr "Prázdná schránka"
msgid "Empty Object"
msgstr "Prázdný objekt"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "Ukazatelový graf"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Získejte maximum ze svého pracovního prostoru tím, že pozvete svůj
msgid "Get your subscription"
msgstr "Získejte své předplatné"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Globální"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Více"
@@ -9663,20 +9652,6 @@ msgstr "Nová konfigurace SSO"
msgid "New SSO provider"
msgstr "Nový poskytovatel SSO"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Poznámka"
msgid "Notes"
msgstr "Poznámky"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Otevřít Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Otevřít postranní panel"
@@ -10811,7 +10782,6 @@ msgstr "Uspořádat"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Záznamový popisek"
msgid "Record Page"
msgstr "Záznamová stránka"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Výběr záznamů"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Znovu odeslat e-mail"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Obnovit"
@@ -12059,16 +12032,16 @@ msgstr "Obnovit"
msgid "Reset 2FA"
msgstr "Obnovit 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Spouští se {formattedName}"
msgid "Running function"
msgstr "Spouští se funkce"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Hledat"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Hledat ''{sidePanelSearch}'' s..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Tento účet je připojen, ale zatím nemáme oprávnění vytvářet ko
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14377,11 +14338,6 @@ msgstr "Tento klíč by měl být nastaven přes tělo požadavku"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Tento model bude od poskytovatele odebrán. Později jej můžete znovu přidat."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15126,7 +15082,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16457,10 +16413,10 @@ msgstr "Vaše funkce Enterprise budou deaktivovány"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Vaše funkce Enterprise zůstanou aktivní do {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Formát vašeho klíče Enterprise je zastaralý. Aktivujte prosím nový klíč, abyste zachovali funkce Enterprise."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Handlinger brugere kan udføre på denne genstand"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Aktivér"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Der opstod en fejl under upload af billedet."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Et objekt med dette navn findes allerede"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Der opstod en uventet fejl"
@@ -1954,11 +1948,6 @@ msgstr "App"
msgid "App installed on this workspace"
msgstr "App installeret på dette arbejdsområde"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Udklipsholderen kræver en sikker forbindelse (HTTPS). Tilgå venligst d
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Luk"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Luk banner"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Luk sidepanelet"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Udvikler"
msgid "Developers links"
msgstr ""
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Vis tekst på flere linjer"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Distribution"
@@ -5603,11 +5591,6 @@ msgstr "Tom Indbakke"
msgid "Empty Object"
msgstr "Tomt Objekt"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "Målediagram"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Få mest muligt ud af din arbejdsplads ved at invitere dit team."
msgid "Get your subscription"
msgstr "Få dit abonnement"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Globalt"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Mere"
@@ -9663,20 +9652,6 @@ msgstr "Ny SSO konfiguration"
msgid "New SSO provider"
msgstr "Ny SSO-udbyder"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Notat"
msgid "Notes"
msgstr "Noter"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Åbn Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Åbn sidepanelet"
@@ -10811,7 +10782,6 @@ msgstr "Organiser"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Optag label"
msgid "Record Page"
msgstr "Post Side"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Optag valg"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Send e-mail igen"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Nulstil"
@@ -12059,16 +12032,16 @@ msgstr "Nulstil"
msgid "Reset 2FA"
msgstr "Nulstil 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Kører {formattedName}"
msgid "Running function"
msgstr "Kører funktion"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Søg"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Søg efter ''{sidePanelSearch}'' med..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Denne konto er tilknyttet, men vi har endnu ikke tilladelse til at opret
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14379,11 +14340,6 @@ msgstr "Denne nøgle skal angives via body-input"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Denne model vil blive fjernet fra udbyderen. Du kan tilføje den igen senere."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15128,7 +15084,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16459,10 +16415,10 @@ msgstr "Dine Enterprise-funktioner vil blive deaktiveret"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Dine Enterprise-funktioner forbliver aktive indtil {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Formatet på din Enterprise-nøgle er udfaset. Aktivér en ny nøgle for at beholde Enterprise-funktionerne."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Aktionen, die Benutzer auf diesem Objekt durchführen können"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Aktivieren"
@@ -1216,7 +1211,6 @@ msgstr "Admin"
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Beim Hochladen des Bildes ist ein Fehler aufgetreten."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Ein Objekt mit diesem Namen existiert bereits"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Ein unerwarteter Fehler ist aufgetreten"
@@ -1954,11 +1948,6 @@ msgstr "App"
msgid "App installed on this workspace"
msgstr "App in diesem Arbeitsbereich installiert"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Die Zwischenablage erfordert eine sichere Verbindung (HTTPS). Bitte grei
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Schließen"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Banner schließen"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Seitenpanel schließen"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Entwickler"
msgid "Developers links"
msgstr "Links für Entwickler"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Text auf mehreren Zeilen anzeigen"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Verteilung"
@@ -5603,11 +5591,6 @@ msgstr "Leerer Posteingang"
msgid "Empty Object"
msgstr "Leeres Objekt"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr ""
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Holen Sie das Beste aus Ihrem Arbeitsbereich heraus, indem Sie Ihr Team
msgid "Get your subscription"
msgstr "Abonnement abschließen"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Global"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Mehr"
@@ -9663,20 +9652,6 @@ msgstr "Neue SSO-Konfiguration"
msgid "New SSO provider"
msgstr "Neuer SSO-Anbieter"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Notiz"
msgid "Notes"
msgstr "Notizen"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Outlook öffnen"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Seitenpanel öffnen"
@@ -10811,7 +10782,6 @@ msgstr "Organisieren"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Bezeichnung aufzeichnen"
msgid "Record Page"
msgstr "Rekordseite"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Datensatz-Auswahl"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "E-Mail erneut senden"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Zurücksetzen"
@@ -12059,16 +12032,16 @@ msgstr "Zurücksetzen"
msgid "Reset 2FA"
msgstr "2FA zurücksetzen"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "{formattedName} wird ausgeführt"
msgid "Running function"
msgstr "Funktion wird ausgeführt"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Suche"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Suche ''{sidePanelSearch}'' mit..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Dieses Konto ist verbunden, aber wir haben noch keine Berechtigung, E-Ma
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14377,11 +14338,6 @@ msgstr "Dieser Schlüssel sollte über die Body-Eingabe gesetzt werden"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Dieses Modell wird vom Anbieter entfernt. Sie können es später erneut hinzufügen."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15126,7 +15082,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16457,10 +16413,10 @@ msgstr "Ihre Enterprise-Funktionen werden deaktiviert"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Ihre Enterprise-Funktionen bleiben bis {cancelAtDate} aktiv."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Das Format Ihres Enterprise-Schlüssels ist veraltet. Bitte aktivieren Sie einen neuen Schlüssel, um die Enterprise-Funktionen beizubehalten."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Ενέργειες χρηστών που μπορούν να εκτελ
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Ενεργοποίηση"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτω
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Υπάρχει ήδη αντικείμενο με αυτό το όνομ
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Παρουσιάστηκε ένα απρόβλεπτο σφάλμα"
@@ -1954,11 +1948,6 @@ msgstr "Εφαρμογή"
msgid "App installed on this workspace"
msgstr "Η εφαρμογή είναι εγκατεστημένη σε αυτόν τον χώρο εργασίας"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Το Πρόχειρο απαιτεί ασφαλή σύνδεση (HTTPS)
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Κλείσιμο"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Κλείσιμο banner"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Κλείσιμο πλευρικού πάνελ"
@@ -3578,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 "Περιβάλλον"
@@ -4956,11 +4949,6 @@ msgstr "Προγραμματιστής"
msgid "Developers links"
msgstr "Σύνδεσμοι προγραμματιστών"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Εμφανίστε το κείμενο σε πολλαπλές γραμμές"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Διανομή"
@@ -5603,11 +5591,6 @@ msgstr "Άδειο Γραμματοκιβώτιο"
msgid "Empty Object"
msgstr "Κενό Αντικείμενο"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "Διάγραμμα δείκτη"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Αξιοποιείστε τον χώρο εργασίας σας με τ
msgid "Get your subscription"
msgstr "Αποκτήστε τη συνδρομή σας"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Παγκόσμιο"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Περισσότερα"
@@ -9663,20 +9652,6 @@ msgstr "Νέα ρύθμιση SSO"
msgid "New SSO provider"
msgstr "Νέος πάροχος SSO"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Σημείωση"
msgid "Notes"
msgstr "Σημειώματα"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Άνοιγμα με Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Άνοιγμα πλευρικού πάνελ"
@@ -10811,7 +10782,6 @@ msgstr "Οργάνωση"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Ετικέτα εγγραφής"
msgid "Record Page"
msgstr "Σελίδα εγγραφής"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Επιλογή Εγγραφών"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Επαναποστολή email"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Επαναφορά"
@@ -12059,16 +12032,16 @@ msgstr "Επαναφορά"
msgid "Reset 2FA"
msgstr "Επαναφορά 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Εκτελείται {formattedName}"
msgid "Running function"
msgstr "Εκτέλεση λειτουργίας"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Αναζήτηση"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Αναζήτηση ''{sidePanelSearch}'' με..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14231,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"
@@ -14266,11 +14232,6 @@ msgstr "Αυτός ο λογαριασμός είναι συνδεδεμένος
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14381,11 +14342,6 @@ msgstr "Αυτό το κλειδί πρέπει να οριστεί στο σώ
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Αυτό το μοντέλο θα αφαιρεθεί από τον πάροχο. Μπορείτε να το προσθέσετε ξανά αργότερα."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15130,7 +15086,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16461,10 +16417,10 @@ msgstr "Οι δυνατότητες Enterprise θα απενεργοποιηθο
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Οι δυνατότητες Enterprise θα παραμείνουν ενεργές έως {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Η μορφή του κλειδιού Enterprise δεν υποστηρίζεται πλέον. Ενεργοποιήστε ένα νέο κλειδί για να διατηρήσετε τις δυνατότητες Enterprise."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -785,7 +780,7 @@ msgstr "Actions users can perform on this object"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Activate"
@@ -1211,7 +1206,6 @@ msgstr "Admin"
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1751,7 +1745,6 @@ msgstr "An error occurred while uploading the picture."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1782,6 +1775,7 @@ msgstr "An object with this name already exists"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "An unexpected error occurred"
@@ -1949,11 +1943,6 @@ msgstr "App"
msgid "App installed on this workspace"
msgstr "App installed on this workspace"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr "App registrations"
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3184,6 +3173,7 @@ msgstr "Clipboard requires a secure connection (HTTPS). Please access this app o
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Close"
@@ -3194,6 +3184,7 @@ msgid "Close banner"
msgstr "Close banner"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Close side panel"
@@ -3573,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"
@@ -4951,11 +4944,6 @@ msgstr "Developer"
msgid "Developers links"
msgstr "Developers links"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr "Disabled"
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4992,8 +4980,8 @@ msgid "Display text on multiple lines"
msgstr "Display text on multiple lines"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Distribution"
@@ -5598,11 +5586,6 @@ msgstr "Empty Inbox"
msgid "Empty Object"
msgstr "Empty Object"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr "Empty tab"
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7122,8 +7105,8 @@ msgstr "Gauge Chart"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7177,6 +7160,11 @@ msgstr "Get the most out of your workspace by inviting your team."
msgid "Get your subscription"
msgstr "Get your subscription"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Global"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9274,6 +9262,7 @@ msgstr "months"
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "More"
@@ -9658,20 +9647,6 @@ msgstr "New SSO Configuration"
msgid "New SSO provider"
msgstr "New SSO provider"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr "New tab"
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr "New Tab"
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10366,11 +10341,6 @@ msgstr "Note"
msgid "Notes"
msgstr "Notes"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr "Nothing to see"
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10436,7 +10406,7 @@ msgid "Numbered list"
msgstr "Numbered list"
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10716,6 +10686,7 @@ msgid "Open Outlook"
msgstr "Open Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Open side panel"
@@ -10806,7 +10777,6 @@ msgstr "Organize"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11719,6 +11689,11 @@ msgstr "Record label"
msgid "Record Page"
msgstr "Record Page"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Record Selection"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12043,8 +12018,6 @@ msgstr "Resend email"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Reset"
@@ -12054,16 +12027,16 @@ msgstr "Reset"
msgid "Reset 2FA"
msgstr "Reset 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr "Reset all overrides on this layout to return it to the app default"
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12071,8 +12044,6 @@ msgstr "Reset label to default"
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12338,11 +12309,6 @@ msgstr "Running {formattedName}"
msgid "Running function"
msgstr "Running function"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr "Running workflows on all records is not yet supported. Please select records manually."
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12426,6 +12392,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Search"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Search ''{sidePanelSearch}'' with..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14224,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"
@@ -14259,11 +14225,6 @@ msgstr "This account is connected, but we don't have permission to draft emails
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr "This action can return up to {maxRecordsFormatted} records."
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr "This action cannot be undone."
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14374,11 +14335,6 @@ msgstr "This key should be set through body input"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "This model will be removed from the provider. You can re-add it later."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr "This page has no content"
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15123,7 +15079,7 @@ msgstr "Unordered list with bullets"
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16454,10 +16410,10 @@ msgstr "Your enterprise features will be disabled"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Your enterprise features will remain active until {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Acciones que los usuarios pueden realizar en este objeto"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Activar"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Se produjo un error al subir la imagen."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Ya existe un objeto con este nombre"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Se produjo un error inesperado"
@@ -1954,11 +1948,6 @@ msgstr "Aplicación"
msgid "App installed on this workspace"
msgstr "Aplicación instalada en este espacio de trabajo"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "El portapapeles requiere una conexión segura (HTTPS). Accede a esta apl
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Cerrar"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Cerrar banner"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Cerrar panel lateral"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Desarrollador"
msgid "Developers links"
msgstr "Enlaces para desarrolladores"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Mostrar texto en varias líneas"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Distribución"
@@ -5603,11 +5591,6 @@ msgstr "Bandeja de entrada vacía"
msgid "Empty Object"
msgstr "Objeto vacío"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "Gráfico de Medidor"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Aproveche al máximo su espacio de trabajo invitando a su equipo."
msgid "Get your subscription"
msgstr "Obtenga su suscripción"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Global"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Más"
@@ -9663,20 +9652,6 @@ msgstr "Nueva Configuración SSO"
msgid "New SSO provider"
msgstr "Nuevo proveedor SSO"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Nota"
msgid "Notes"
msgstr "Notas"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr "Lista numerada"
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Abrir Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Abrir panel lateral"
@@ -10811,7 +10782,6 @@ msgstr "Organizar"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Etiqueta de registro"
msgid "Record Page"
msgstr "Página de registro"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Selección de registros"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Reenviar correo electrónico"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Restablecer"
@@ -12059,16 +12032,16 @@ msgstr "Restablecer"
msgid "Reset 2FA"
msgstr "Restablecer 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Ejecutando {formattedName}"
msgid "Running function"
msgstr "Ejecutando función"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Buscar"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Buscar ''{sidePanelSearch}'' con..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Esta cuenta está conectada, pero aún no tenemos permiso para crear bor
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14379,11 +14340,6 @@ msgstr "Esta clave debe establecerse mediante la entrada del cuerpo"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Este modelo se eliminará del proveedor. Podrás volver a añadirlo más tarde."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15128,7 +15084,7 @@ msgstr "Lista sin ordenar con puntos"
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16459,10 +16415,10 @@ msgstr "Tus funciones Enterprise se desactivarán"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Tus funciones Enterprise seguirán activas hasta {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "El formato de tu clave Enterprise está obsoleto. Activa una nueva clave para mantener las funciones Enterprise."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Toiminnot, joita käyttäjät voivat suorittaa tällä kohteella"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Aktivoi"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Kuvaa ladattaessa tapahtui virhe."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Tämän niminen objekti on jo olemassa"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Tapahtui odottamaton virhe"
@@ -1954,11 +1948,6 @@ msgstr "Sovellus"
msgid "App installed on this workspace"
msgstr "Sovellus on asennettu tähän työtilaan"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Leikepöytä edellyttää suojattua yhteyttä (HTTPS). Avaa tämä sovel
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Sulje"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Sulje banneri"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Sulje sivupaneeli"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr "Kehittäjä"
msgid "Developers links"
msgstr "Kehittäjien linkit"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Näytä teksti useammalla rivillä"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr "Jakelu"
@@ -5603,11 +5591,6 @@ msgstr "Tyhjä Saapuneet"
msgid "Empty Object"
msgstr "Tyhjä objekti"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr "Mittarikaavio"
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Saa kaiken irti työtilastasi kutsuen tiimisi mukaan."
msgid "Get your subscription"
msgstr "Hanki tilaus"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Globaali"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Lisää"
@@ -9663,20 +9652,6 @@ msgstr "Uusi SSO-konfiguraatio"
msgid "New SSO provider"
msgstr "Uusi SSO-tarjoaja"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Muistiinpano"
msgid "Notes"
msgstr "Muistiinpanot"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Avaa Outlookissa"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Avaa sivupaneeli"
@@ -10811,7 +10782,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Tietueen otsikko"
msgid "Record Page"
msgstr "Tietuesivu"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Valitse tietueet"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Lähetä sähköposti uudelleen"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Nollaa"
@@ -12059,16 +12032,16 @@ msgstr "Nollaa"
msgid "Reset 2FA"
msgstr "Nollaa 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Suoritetaan {formattedName}"
msgid "Running function"
msgstr "Suoritetaan funktiota"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Hae"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Hae ''{sidePanelSearch}'' avulla..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Tämä tili on yhdistetty, mutta meillä ei vielä ole käyttöoikeutta
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14377,11 +14338,6 @@ msgstr "Tämä avain tulisi asettaa viestirungon syötteessä"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Tämä malli poistetaan tarjoajalta. Voit lisätä sen uudelleen myöhemmin."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15126,7 +15082,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16457,10 +16413,10 @@ msgstr "Enterprise-ominaisuudet poistetaan käytöstä"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Enterprise-ominaisuudet pysyvät aktiivisina {cancelAtDate} asti."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Enterprise-avaimesi muoto on vanhentunut. Aktivoi uusi avain säilyttääksesi Enterprise-ominaisuudet."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
+36 -80
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"
@@ -790,7 +785,7 @@ msgstr "Actions que les utilisateurs peuvent effectuer sur cet objet"
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/components/SettingsEnterpriseFeatureGateCard.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Activate"
msgstr "Activer"
@@ -1216,7 +1211,6 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminNewAiModel.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
@@ -1756,7 +1750,6 @@ msgstr "Une erreur s'est produite lors du téléversement de l'image."
#: src/modules/ui/feedback/snack-bar-manager/hooks/useSnackBar.ts
#: src/modules/page-layout/hooks/useUpdatePageLayoutWithTabsAndWidgets.ts
#: src/modules/page-layout/hooks/useResetPageLayoutWidgetToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutToDefault.ts
#: src/modules/page-layout/hooks/useResetPageLayoutTabToDefault.ts
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
@@ -1787,6 +1780,7 @@ msgstr "Un objet avec ce nom existe déjà"
#. js-lingui-id: lxentK
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
#: src/modules/ai/utils/extractErrorMessage.ts
msgid "An unexpected error occurred"
msgstr "Une erreur inattendue s'est produite"
@@ -1954,11 +1948,6 @@ msgstr "Application"
msgid "App installed on this workspace"
msgstr "Application installée sur cet espace de travail"
#. js-lingui-id: r5g1bX
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
msgid "App registrations"
msgstr ""
#. js-lingui-id: aAIQg2
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
msgid "Appearance"
@@ -3189,6 +3178,7 @@ msgstr "Le presse-papiers nécessite une connexion sécurisée (HTTPS). Veuillez
#. js-lingui-id: yz7wBu
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close"
msgstr "Fermer"
@@ -3199,6 +3189,7 @@ msgid "Close banner"
msgstr "Fermer la bannière"
#. js-lingui-id: saip/v
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Close side panel"
msgstr "Fermer le panneau latéral"
@@ -3578,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"
@@ -4956,11 +4949,6 @@ msgstr ""
msgid "Developers links"
msgstr "Liens pour développeurs"
#. js-lingui-id: E/QGRL
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Disabled"
msgstr ""
#. js-lingui-id: Xm/s+u
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Display"
@@ -4997,8 +4985,8 @@ msgid "Display text on multiple lines"
msgstr "Afficher le texte sur plusieurs lignes"
#. js-lingui-id: vU/Hht
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
msgid "Distribution"
msgstr ""
@@ -5603,11 +5591,6 @@ msgstr "Boîte de réception vide"
msgid "Empty Object"
msgstr "Objet vide"
#. js-lingui-id: 7A0K1Y
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "Empty tab"
msgstr ""
#. js-lingui-id: q11Dk2
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Enable bypass options"
@@ -7127,8 +7110,8 @@ msgstr ""
#. js-lingui-id: Weq9zb
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroupsForDisplay.ts
@@ -7182,6 +7165,11 @@ msgstr "Tirez le meilleur parti de votre espace de travail en invitant votre éq
msgid "Get your subscription"
msgstr "Obtenez votre abonnement"
#. js-lingui-id: 2GT3Hf
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Global"
msgstr "Global"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -9279,6 +9267,7 @@ msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "More"
msgstr "Plus"
@@ -9663,20 +9652,6 @@ msgstr "Nouvelle configuration SSO"
msgid "New SSO provider"
msgstr "Nouveau fournisseur SSO"
#. js-lingui-id: 3YvS+c
#: src/modules/page-layout/components/PageLayoutTabListNewTabDropdownContent.tsx
msgid "New tab"
msgstr ""
#. js-lingui-id: Db+TX4
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
#: src/modules/page-layout/components/PageLayoutTabList.tsx
msgid "New Tab"
msgstr ""
#. js-lingui-id: wl18ST
#: src/modules/activities/tasks/components/TaskGroups.tsx
msgid "New task"
@@ -10371,11 +10346,6 @@ msgstr "Note"
msgid "Notes"
msgstr "Notes"
#. js-lingui-id: DYCPYF
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "Nothing to see"
msgstr ""
#. js-lingui-id: YwzE9K
#: src/utils/date-utils.ts
#: src/utils/date-utils.ts
@@ -10441,7 +10411,7 @@ msgid "Numbered list"
msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/components/SettingsApplicationRegistrationContent.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -10721,6 +10691,7 @@ msgid "Open Outlook"
msgstr "Ouvrir Outlook"
#. js-lingui-id: bY2Xkv
#: src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx
#: src/modules/side-panel/components/SidePanelToggleButton.tsx
msgid "Open side panel"
msgstr "Ouvrir le panneau latéral"
@@ -10811,7 +10782,6 @@ msgstr "Organiser"
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
@@ -11724,6 +11694,11 @@ msgstr "Étiquette d'enregistrement"
msgid "Record Page"
msgstr "Page d'enregistrement"
#. js-lingui-id: dSCufP
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Record Selection"
msgstr "Sélection des enregistrements"
#. js-lingui-id: NxW0+c
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Record Table Settings"
@@ -12048,8 +12023,6 @@ msgstr "Renvoyer l'email"
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset"
msgstr "Réinitialiser"
@@ -12059,16 +12032,16 @@ msgstr "Réinitialiser"
msgid "Reset 2FA"
msgstr "Réinitialiser 2FA"
#. js-lingui-id: kw0Yv1
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "Reset all overrides on this layout to return it to the app default"
msgstr ""
#. js-lingui-id: YdI8A2
#: src/modules/command-menu-item/edit/components/CommandMenuItemOptionsDropdown.tsx
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
@@ -12076,8 +12049,6 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/RegularTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/side-panel/pages/page-layout/components/CanvasTabSettingsContent.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -12343,11 +12314,6 @@ msgstr "Exécution de {formattedName}"
msgid "Running function"
msgstr "Exécution de la fonction"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12431,6 +12397,11 @@ msgstr "SDK"
msgid "Search"
msgstr "Recherche"
#. js-lingui-id: aOQ/Fi
#: src/modules/side-panel/pages/root/components/SidePanelRootPage.tsx
msgid "Search ''{sidePanelSearch}'' with..."
msgstr "Rechercher ''{sidePanelSearch}'' avec..."
#. js-lingui-id: g2dQp/
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx
msgid "Search 1 {fieldTypeLabelLowercase} field"
@@ -14229,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"
@@ -14264,11 +14230,6 @@ msgstr "Ce compte est connecté, mais nous n'avons pas encore l'autorisation de
msgid "This action can return up to {maxRecordsFormatted} records."
msgstr ""
#. js-lingui-id: 2xOCJW
#: src/modules/settings/data-model/object-details/components/tabs/ObjectLayout.tsx
msgid "This action cannot be undone."
msgstr ""
#. js-lingui-id: Ox1hE7
#: src/modules/settings/profile/components/DeleteAccount.tsx
msgid ""
@@ -14379,11 +14340,6 @@ msgstr "Cette clé doit être définie via la saisie du corps"
msgid "This model will be removed from the provider. You can re-add it later."
msgstr "Ce modèle sera supprimé du fournisseur. Vous pourrez le réajouter plus tard."
#. js-lingui-id: NCA55L
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
msgid "This page has no content"
msgstr ""
#. js-lingui-id: R/PuIn
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
msgid "This provider doesn't have a native SDK yet — it will use OpenAI-compatible mode. Need native support? Reach out to us."
@@ -15128,7 +15084,7 @@ msgstr ""
#: src/modules/ui/field/display/components/ActorDisplay.tsx
#: src/modules/side-panel/components/SidePanelContextChip.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
#: src/modules/page-layout/hooks/usePageLayoutAddTabStrategy.ts
#: src/modules/page-layout/components/PageLayoutTabsRenderer.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldDisplay.tsx
#: src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldDisplay.tsx
#: src/modules/object-record/components/RecordChip.tsx
@@ -16459,10 +16415,10 @@ msgstr "Vos fonctionnalités Enterprise seront désactivées"
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Vos fonctionnalités Enterprise resteront actives jusqu'au {cancelAtDate}."
#. js-lingui-id: 5TsUUL
#: src/modules/information-banner/components/enterprise/InformationBannerInvalidEnterpriseKey.tsx
msgid "Your enterprise key is no longer valid. Activate a new key to continue using enterprise features."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Le format de votre clé Enterprise est obsolète. Veuillez activer une nouvelle clé pour conserver les fonctionnalités Enterprise."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
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

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