Compare commits

...
Author SHA1 Message Date
Charles Bochet 64649790aa chore: revert app CI workflows to use spawn-twenty-docker-image
Revert the CI workflows in create-twenty-app template, hello-world, and
postcard back to using spawn-twenty-docker-image@main instead of
spawn-twenty-app-dev-test@feature/sdk-config-file-source-of-truth.

Made-with: Cursor
2026-04-08 14:37:14 +02:00
Paul RastoinandGitHub 85be463487 Slow instance commands (#19431)
# Introduction
This PR introduces the slow instance commands pattern, that allow
migrating data in prior of the schema migration, that would fail if not.

Slow instance commands runs after the fast instance commands and before
the workspace commands.
On twenty instance that do not has any active or suspended workspace the
data migration part is skipped but the migration still runs, especially
for fresh installs

We were previously hacking through typeorm transaction system to gain
such granularity using save points:
```ts
export class AddPayloadToCommandMenuItem1775129635528
  implements MigrationInterface
{
  name = 'AddPayloadToCommandMenuItem1775129635528';

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "core"."commandMenuItem" ADD "payload" jsonb`,
    );

    const savepointName =
      'sp_add_payload_check_constraint_to_command_menu_item';

    try {
      await queryRunner.query(`SAVEPOINT ${savepointName}`);

      await addPayloadCheckConstraintToCommandMenuItem(queryRunner);

      await queryRunner.query(`RELEASE SAVEPOINT ${savepointName}`);
    } catch (e) {
      try {
        await queryRunner.query(`ROLLBACK TO SAVEPOINT ${savepointName}`);
        await queryRunner.query(`RELEASE SAVEPOINT ${savepointName}`);
      } catch (rollbackError) {
        // oxlint-disable-next-line no-console
        console.error(
          'Failed to rollback to savepoint in AddPayloadToCommandMenuItem1775129635528',
          rollbackError,
        );
        throw rollbackError;
      }

      // oxlint-disable-next-line no-console
      console.error(
        'Swallowing AddPayloadToCommandMenuItem1775129635528 error',
        e,
      );
    }
  }
```

It was afterwards re-applied within an workspace commands, it was hacky
and missleading for the self host having false positive in logs

## New pattern

Generate the slow instance command
```
npx nx database:migrate:generate twenty-server -- --name add-foo-bar-columns --type slow
```

```ts
import { DataSource, QueryRunner } from 'typeorm';

import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { SlowInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/slow-instance-command.interface';

@RegisteredInstanceCommand('1.21.0', 1775640902366, { type: 'slow' })
export class AddPrastoinColToWorkspaceSlowInstanceCommand implements SlowInstanceCommand {
  async runDataMigration(dataSource: DataSource): Promise<void> {
    // TODO: implement data backfill before the DDL migration
  }

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query('ALTER TABLE "core"."workspace" ADD "prastoin" character varying');
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query('ALTER TABLE "core"."workspace" DROP COLUMN "prastoin"');
  }
}
```

### Why `run-instance-commands` and `upgrade` remain separate commands

These two commands serve fundamentally different purposes with
incompatible scoping semantics:
The run-instance-commands iterates over all the legacy typeorm and the
instance commands of all versions, used for database init and so on. we
could be centralizing both but the readability tradeoff isn't worth it

In the future thanks to the cross-version pattern we will be able to
centralize them but not right now

Please note that by default the `run-instance-commands` only run the
fast instance commands which is expected for our cloud prod CD
2026-04-08 12:09:29 +00:00
BugIsGodandGitHub 8a84e32cf6 fix(ai): use @ai-sdk/openai-compatible for third-party providers (#19438)
## Summary:

I found a bug: 404 call when I use third-party providers (I used
deepseek). I found the final request url is:
`https://api.deepseek.com/v1/responses' `if we use createOpenAI. But the
correct one should be `https://api.provider.com/v1/chat/completions` for
the thirty provider. So I replace createOpenAI with
createOpenAICompatible in the openai-compatible provider path.

**Reproduction**: Add DeepSeek as a new AI provider (deepseek-chat,
deepseek-reasoner)

Also check the source code in Open Code project, they also use
createOpenAICompatible for the @ai-sdk/openai-compatible scenario
<img width="703" height="369" alt="image"
src="https://github.com/user-attachments/assets/90c4f924-6f1a-4fe7-821b-f13ee86a7a39"
/>


official docs: https://ai-sdk.dev/providers/openai-compatible-providers
https://ai-sdk.dev/providers/ai-sdk-providers/openai

<img width="860" height="293" alt="image"
src="https://github.com/user-attachments/assets/283b9b91-f1d6-4b1c-bb91-16ddccdff8b4"
/>



## Before
<img width="473" height="750" alt="deepseek before"
src="https://github.com/user-attachments/assets/f6b89294-1fa7-4ddc-a6a8-d396070caaca"
/>

## After

<img width="468" height="753" alt="deepseek after"
src="https://github.com/user-attachments/assets/0d170b70-e829-4a4c-abad-38879427c2df"
/>

## Backend error log

```json
[1] [Nest] 50907  - 07/04/2026, 23:48:57     LOG [ChatExecutionService] Starting chat execution with model deepseek/deepseek-chat, 4 active tools
[1] APICallError [AI_APICallError]: Not Found
[1]     at /Users/abel/Documents/Code/twenty/node_modules/@ai-sdk/provider-utils/dist/index.js:2512:14
[1]     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
[1]     at async postToApi (/Users/abel/Documents/Code/twenty/node_modules/@ai-sdk/provider-utils/dist/index.js:2373:28)
[1]     at async OpenAIResponsesLanguageModel.doStream (/Users/abel/Documents/Code/twenty/node_modules/@ai-sdk/openai/dist/index.js:4925:50)
[1]     at async fn (/Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:7106:27)
[1]     at async /Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:2340:24
[1]     at async _retryWithExponentialBackoff (/Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:2599:12)
[1]     at async streamStep (/Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:7063:17)
[1]     at async fn (/Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:7455:9)
[1]     at async /Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:2340:24 {
[1]   cause: undefined,
[1]   url: 'https://api.deepseek.com/v1/responses',
[1]   requestBodyValues: {
[1]     model: 'deepseek-chat',
[1]     input: [ [Object], [Object] ],
[1]     temperature: undefined,
[1]     top_p: undefined,
[1]     max_output_tokens: undefined,
[1]     conversation: undefined,
[1]     max_tool_calls: undefined,
[1]     metadata: undefined,
[1]     parallel_tool_calls: undefined,
[1]     previous_response_id: undefined,
[1]     store: undefined,
[1]     user: undefined,
[1]     instructions: undefined,
[1]     service_tier: undefined,
[1]     include: undefined,
[1]     prompt_cache_key: undefined,
[1]     prompt_cache_retention: undefined,
[1]     safety_identifier: undefined,
[1]     top_logprobs: undefined,
[1]     truncation: undefined,
[1]     tools: [ [Object], [Object], [Object], [Object] ],
[1]     tool_choice: 'auto',
[1]     stream: true
[1]   },
[1]   statusCode: 404,
[1]   responseHeaders: {
[1]     'access-control-allow-credentials': 'true',
[1]     connection: 'keep-alive',
[1]     'content-length': '0',
[1]     date: 'Tue, 07 Apr 2026 22:48:57 GMT',
[1]     server: 'elb',
[1]     'strict-transport-security': 'max-age=31536000; includeSubDomains; preload',
[1]     vary: 'origin, access-control-request-method, access-control-request-headers',
[1]     via: '1.1 83867089cd39052cd05f9e04909bedde.cloudfront.net (CloudFront)',
[1]     'x-amz-cf-id': 'O4b0VTi9Q1VVmTmq6czGlEWst7IPnAQl544hB7uIvfnSphBvUKbZTw==',
[1]     'x-amz-cf-pop': 'DUB56-P3',
[1]     'x-cache': 'Error from cloudfront',
[1]     'x-content-type-options': 'nosniff',
[1]     'x-ds-trace-id': 'a90e91809d285170338ef077f67ae2be'
[1]   },
[1]   responseBody: '',
[1]   isRetryable: false,
[1]   data: undefined,
[1]   Symbol(vercel.ai.error): true,
[1]   Symbol(vercel.ai.error.AI_APICallError): true
[1] }
[1] Exception Captured
[1]   undefined
[1]   [
[1]     NoOutputGeneratedError [AI_NoOutputGeneratedError]: No output generated. Check the stream for errors.
[1]         at Object.flush (/Users/abel/Documents/Code/twenty/node_modules/ai/dist/index.js:6656:103)
[1]         at invokePromiseCallback (node:internal/webstreams/util:172:10)
[1]         at Object.<anonymous> (node:internal/webstreams/util:177:23)
[1]         at transformStreamDefaultSinkCloseAlgorithm (node:internal/webstreams/transformstream:621:43)
[1]         at node:internal/webstreams/transformstream:379:11
[1]         at writableStreamDefaultControllerProcessClose (node:internal/webstreams/writablestream:1162:28)
[1]         at writableStreamDefaultControllerAdvanceQueueIfNeeded (node:internal/webstreams/writablestream:1253:5)
[1]         at writableStreamDefaultControllerClose (node:internal/webstreams/writablestream:1220:3)
[1]         at writableStreamClose (node:internal/webstreams/writablestream:722:3)
[1]         at writableStreamDefaultWriterClose (node:internal/webstreams/writablestream:1091:10) {
[1]       cause: undefined,
[1]       Symbol(vercel.ai.error): true,
[1]       Symbol(vercel.ai.error.AI_NoOutputGeneratedError): true
[1]     }
[1]   ]
[1] [Nest] 50907  - 07/04/2026, 23:48:59     LOG [BullMQDriver] Job 24 with name StreamAgentChatJob processed on queue ai-stream-queue in 2756.63ms
2026-04-08 12:01:49 +00:00
WeikoandGitHub 8aa208fc93 Fix overridable entities logic for SSE (#19433)
## Context
SSE metadata events for overridable entities (viewField, viewFieldGroup,
pageLayoutWidget, pageLayoutTab) were sending raw flat entity data
without resolving overrides into base properties or filtering isActive:
false entities. This caused the frontend to display stale/incorrect
values (e.g., a hidden viewField still appearing visible).

## Implementation
Add a sanitization step in
MetadataEventPublisher.enrichMetadataEventBatch that resolves overrides
and converts isActive transitions into the appropriate event types
(deactivated -> delete, reactivated -> create), matching what GraphQL
resolvers already do
2026-04-08 11:53:55 +00:00
Thomas TrompetteandGitHub 9a58f3d459 Add a lock on function creation (#19428)
Fixes
https://twenty-v7.sentry.io/issues/7368127776/?environment=prod&project=4507072499810304&query=is%3Aunresolved&referrer=issue-stream

- Add a distributed lock (via CacheLockService) around the Lambda
executor build in LambdaDriver to prevent concurrent workflow runs from
racing on CreateFunctionCommand for the same logic function
- Use double-checked locking: isAlreadyBuilt is checked lock-free first
(fast path), then re-checked inside the lock to avoid redundant rebuilds
2026-04-08 11:50:57 +00:00
Baptiste DevessierandGitHub 9d96e529c8 Fix last widget bottom bar inconsistencies (#19440)
Widgets weren't sorted
2026-04-08 11:29:11 +00:00
Baptiste DevessierandGitHub e9310555fb Fix tab selection in layout edit mode (#19436)
https://github.com/user-attachments/assets/20e4a506-5f22-4017-8300-a494b70e8d51
2026-04-08 11:12:46 +00:00
8090fa4364 i18n - docs translations (#19437)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-08 12:40:41 +02:00
martmullandGitHub 90de1d4a34 Add twenty sync command (#19413)
Add one shot app synchronisation `twenty sync command` command

Complementary with `twenty app dev` command which is watch mode

Fixes
https://discord.com/channels/1130383047699738754/1489644493106839663
2026-04-08 09:26:42 +00:00
8026451220 chore: sync AI model catalog from models.dev (#19426)
Automated daily sync of `ai-providers.json` from
[models.dev](https://models.dev).

This PR updates pricing, context windows, and model availability based
on the latest data.
New models meeting inclusion criteria (tool calling, pricing data,
context limits) are added automatically.
Deprecated models are detected based on cost-efficiency within the same
model family.

**Please review before merging** — verify no critical models were
incorrectly deprecated.

Co-authored-by: FelixMalfait <6399865+FelixMalfait@users.noreply.github.com>
2026-04-08 08:27:14 +02:00
Arturo MantinettiandGitHub b3d46b0fa3 feat: Add support for CLF currency code (#19420)
## Summary
This PR adds support for the **CLF (Unidad de Fomento)** currency code
across the application.

## Changes
- Added `CLF` to the supported currency list
- Updated validation logic to recognize CLF as a valid currency
- Adjusted formatting and handling where applicable

## Motivation
CLF is a widely used unit of account in Chile, commonly used for
financial operations such as real estate, contracts, and indexed
payments.
Supporting CLF improves localization and enables better adoption of
Twenty CRM in the Chilean market.

## Files Modified
- Updated 3 files to integrate CLF support (currency configuration,
validation, and related logic)

## Testing
- Verified that CLF can be selected and processed correctly
- Confirmed no regression in existing currency behavior
2026-04-08 05:10:36 +00:00
a8085db5fd i18n - translations (#19425)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-08 07:09:03 +02:00
b540ae9735 i18n - translations (#19424)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-08 07:05:51 +02:00
neo773andGitHub 20adb86917 fix: IMAP skip no-select flag folders properly (#19402)
Tested with a dovecot server running in Docker with synthetic seed

<img width="546" height="54" alt="image"
src="https://github.com/user-attachments/assets/81cbeae6-9cb6-406b-846a-209af403385f"
/>


/closes #19090
2026-04-08 04:54:01 +00:00
martmullandGitHub c91d642f29 App feedbacks front (#19417)
## Before
<img width="777" height="284" alt="image"
src="https://github.com/user-attachments/assets/22a8c318-ed7c-4ec5-b7a8-a688098ec103"
/>


## After
<img width="897" height="329" alt="image"
src="https://github.com/user-attachments/assets/16ad78bf-a449-4f25-99f6-13c35e448f1b"
/>
2026-04-08 04:51:17 +00:00
Charles BochetandGitHub 15eb3e7edc feat(sdk): use config file as single source of truth, remove env var fallbacks (#19409)
## Summary

- **Config as source of truth**: `~/.twenty/config.json` is now the
single source of truth for SDK authentication — env var fallbacks have
been removed from the config resolution chain.
- **Test instance support**: `twenty server start --test` spins up a
dedicated Docker instance on port 2021 with its own config
(`config.test.json`), so integration tests don't interfere with the dev
environment.
- **API key auth for marketplace**: Removed `UserAuthGuard` from
`MarketplaceResolver` so API key tokens (workspace-scoped) can call
`installMarketplaceApp`.
- **CI for example apps**: Added monorepo CI workflows for `hello-world`
and `postcard` example apps to catch regressions.
- **Simplified CI**: All `ci-create-app-e2e` and example app workflows
now use a shared `spawn-twenty-app-dev-test` action (Docker-based)
instead of building the server from source. Consolidated auth env vars
to `TWENTY_API_URL` + `TWENTY_API_KEY`.
- **Template publishing fix**: `create-twenty-app` template now
correctly preserves `.github/` and `.gitignore` through npm publish
(stored without leading dot, renamed after copy).

## Test plan

- [x] CI SDK (lint, typecheck, unit, integration, e2e) — all green
- [x] CI Example App Hello World — green
- [x] CI Example App Postcard — green
- [x] CI Create App E2E minimal — green
- [x] CI Front, CI Server, CI Shared — green
2026-04-08 06:49:10 +02:00
af3423dc6f i18n - translations (#19421)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-08 03:42:20 +02:00
Abdul RahmanandGitHub a0484f686a Add color to object icon picker in data model (#19368)
Closes [#2291](https://github.com/twentyhq/core-team-issues/issues/2291)
2026-04-08 01:27:08 +00:00
martmullandGitHub 5c8b6e395b App feedbacks front (#19416)
- Removes agents from app settings
https://discord.com/channels/1130383047699738754/1488500960656490618
- fix public assets not properly pack in deploy and build commands
-
2026-04-07 19:49:02 +00:00
9bdef449e6 Fix messageThread view and labelIdentifier on legacy workspaces (#19414)
## Summary
Adds `upgrade:1-21:fix-message-thread-view-and-label-identifier` to
retroactively apply two messageThread changes from #19351 that never
propagated to existing workspaces (because
`synchronizeTwentyStandardApplicationOrThrow` only runs at workspace
creation):

1. **`allMessageThreads` view fields**: delete-and-recreate all view
fields for the standard view from the current twenty-standard
definition, which adds the new `subject` and `updatedAt` columns. Same
pattern as the FIELDS_WIDGET sync in
`1-21-workspace-command-1775500005000-backfill-page-layouts-and-fields-widget-view-fields`.
2. **`messageThread.labelIdentifierFieldMetadataId`**: repointed to the
`subject` field via `validateBuildAndRunWorkspaceMigration`. The
migration runner already resolves
`labelIdentifierFieldMetadataUniversalIdentifier` → id in
`update-object-action-handler`, so this goes through the standard flow
and properly invalidates caches.

Both fixes share a single `validateBuildAndRunWorkspaceMigration` call
(one `viewField` op, one `objectMetadata` update op). Idempotent — skips
if nothing to do.

Depends on `upgrade:1-21:backfill-message-thread-subject` having run
first (the label identifier fix needs the `subject` field to exist; it
logs a warning and skips that part otherwise).

## Test plan
- [ ] Legacy workspace: run \`backfill-message-thread-subject\`, then
this command, then verify:
- the \`allMessageThreads\` view shows the new \`subject\` and
\`updatedAt\` columns
  - messageThread records display their \`subject\` as the record label
- [ ] Re-run the command: no-op, logs \`Nothing to fix\`
- [ ] \`--dry-run\` logs planned changes without applying them

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 21:57:35 +02:00
Baptiste DevessierandGitHub e2bd3e8ef4 Unselect widget when exiting layout customization mode (#19411) 2026-04-07 17:26:07 +00:00
Paul RastoinandGitHub c0eacedfec Workspace command decorators (#19397)
# Introduction
Migrating the workspace commands to the decorator version + timestamp
listing as for the instance commands

We've now been able to remove the upgrade command abstraction where we
needed to import all modules and order them
Now they're dynamically retrieved at upgrade runtime, sorted by
timestamp

## Instance and workspace commands name
The name is computed from the command metadata `version` `className` and
`timestamp` we have a duplicate validation at module init from the
unified registry
2026-04-07 16:33:48 +00:00
24a5273a79 i18n - docs translations (#19410)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 18:36:49 +02:00
Raphaël BosiandGitHub 607e708670 [COMMAND MENU ITEMS] Add navigate to settings pages commands (#19408)
Add commands to navigate to every settings page.
2026-04-07 16:06:40 +00:00
61abfd103d fix TextVariableEditor layout and add support for multi line paste (#18721)
Co-authored-by: Charles Bochet <charles@twenty.com>
2026-04-07 15:58:42 +00:00
neo773andGitHub 54be3b7e87 docs: remove reference to sync metadata (#19400) 2026-04-07 15:55:23 +00:00
Paul RastoinandGitHub 137e068ced Fix yarn-install-lambda and lambda-build target (#19407)
# Size issue
```
Yarn install Lambda failed: {"errorType":"Error","errorMessage":"yarn install failed: ➤ Y/tmp/3bac8baafe6354db414389434726b02c/nodejs/node_modules/tar ENOSPC: no space left on device, write","➤ YN0000: └ Completed in 3s 57ms","➤ YN0000: · Failed with errors in 11s 684ms",""," at runYarnInstall (file:///var/task/index.mjs:48:11)"," at process.processTicksAndRejections (node:internal/process/task_queues:105:5)"," at async Runtime.handler (file:///var/task/index.mjs:119:5)"]}
```

# target esnext
setting the same target for each logic function build funnels
- sdk
- local driver
- lambda driver
2026-04-07 15:53:31 +00:00
91f8f7329a improve pricing card header [website] (#19385)
## Summary
- Reduce the plan title size from `md` to `xs`
- Switch the pricing card header layout from grid to flex for tighter
title/price control
- Tighten the title line-height and add a `black/60` color override for
the `/month...` suffix
- Add a 4px gap between the price amount and suffix
- Reduce the illustration height to 80px and shift it slightly right on
desktop

## Testing
- Not run (not requested)

Co-authored-by: Charles Bochet <charles@twenty.com>
2026-04-07 15:02:48 +00:00
Raphaël BosiandGitHub d341d0d624 Refactor navigation commands to use NAVIGATION engine key with payload (#19303)
- Adds a payload JSON column to `CommandMenuItem` and introduces a
unified `NAVIGATION` engine component key that replaces all individual
GO_TO_* keys
- Navigation commands now use the payload to determine their target
(either an objectMetadataItemId or a path), making navigation commands
dynamic and eliminating the need for a hardcoded engine key per object
- Includes a 1.21 upgrade command (refactor-navigation-commands) that
migrates existing GO_TO_* items to NAVIGATION items with the appropriate
payload, and applies a CHECK constraint enforcing payload coherence



https://github.com/user-attachments/assets/4d305ba2-ae0b-4556-bb0e-e9d899777350


TODO: In a second PR, create the sync between object metadata items and
the navigation command menu items
- Object metadata item created or enabled -> Create navigation command
- Object metadata item deleted or disabled -> Delete associated
navigation command

In another PR:
- Allow `label`, `shortLabel` and `icon` to resolve the
`navigateToObjectMetadataItem` dynamically in their interpolation
instead of being hardcoded in the command menu item
- Make the icon dynamic in the command menu items as the label so that
we can resolve ${navigateToObjectMetadataItem.icon} at runTime -> This
way we won't need to keep update the command menu item icon when we
update the objectMetadataItem icon
2026-04-07 15:00:04 +00:00
5e9792009f i18n - docs translations (#19405)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 16:51:49 +02:00
Abdullah.andGitHub 38802bd0b8 Style the remaining website visuals. (#19401)
This PR styles the remaining website visuals. First implementation.
2026-04-07 14:33:54 +00:00
e692e97428 i18n - translations (#19404)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 16:37:15 +02:00
Baptiste DevessierandGitHub 1f3965e5f8 Add Manage and Placement sections in widget side panel page for record page layouts (#19310)
https://github.com/user-attachments/assets/f6120c2e-95e7-4b9b-abb5-69a10c3f2f3b
2026-04-07 14:21:35 +00:00
Thomas TrompetteandGitHub e048d03872 Improve workflow crons efficiency (#19381)
**Optimize workflow cron jobs: partition workspaces and use raw
queries**

- Split all 3 workflow cron jobs (WorkflowRunEnqueueCronJob,
WorkflowHandleStaledRunsCronJob, WorkflowCleanWorkflowRunsCronJob) to
process only 1/10th of workspaces per invocation using minute-based
partitioning, reducing per-run load
- Replace ORM repository + workspace context loading with raw SQL
queries in WorkflowRunEnqueueCronJob and
WorkflowHandleStaledRunsCronJob, avoiding costly cache/metadata
hydration for a simple existence check
2026-04-07 14:09:11 +00:00
653180d10f i18n - translations (#19403)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 16:10:37 +02:00
martmullandGitHub 8702300b07 App feedbacks fix option id required in apps (#19386)
fixes
https://discord.com/channels/1130383047699738754/1488226371032453292
2026-04-07 13:53:16 +00:00
WeikoandGitHub 6e23ca35e6 Pagelayout backfill command standard app (#19380)
## Context
Due to the chosen strategy for "Reset to default" feature for page
layouts. Those overridable entities need to be associated to the
Standard app to work properly (there is no "Default" state for custom
entities). Until we find a better implementation, I'm changing the
backfill command to reflect that
2026-04-07 12:49:35 +00:00
96a242eb7d fix(messaging): create messageThread.subject field metadata + column in 1-21 backfill (#19394)
## Summary
- The 1-21 \`upgrade:1-21:backfill-message-thread-subject\` command
assumed the legacy \`sync-metadata\` flow would create the new
\`messageThread.subject\` field metadata and column on existing
workspaces. That sync was removed, so the column was never added and the
backfill silently skipped.
- The command now ensures the field exists by computing the standard
\`messageThread.subject\` flat field from the twenty-standard
application and running it through
\`WorkspaceMigrationValidateBuildAndRunService\` (same pattern used by
the page-layout / command-menu-item backfills). This creates both the
field metadata row and the workspace schema column.
- After ensuring the field, the existing \`UPDATE messageThread SET
subject = ...\` runs as before.

## Test plan
- [ ] On a workspace with no \`subject\` column on \`messageThread\`,
run \`yarn command:prod upgrade:1-21:backfill-message-thread-subject\`
and confirm:
  - the field metadata row is created in \`core.\"fieldMetadata\"\`
- the \`subject\` column is created on \`workspace_<id>.messageThread\`
  - existing message threads are backfilled from the most recent message
- [ ] Re-run on the same workspace and confirm it is a no-op (field
already exists, no rows to update)
- [ ] Run on a workspace that already has the column but \`NULL\`
subjects and confirm only the backfill runs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 14:42:20 +02:00
d97a1cfc27 i18n - docs translations (#19399)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 14:39:30 +02:00
c844109ffc i18n - translations (#19398)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 14:35:24 +02:00
neo773andGitHub dd2a09576b Imap-smtp-caldav form fixes (#19392)
/closes #19273
2026-04-07 12:18:11 +00:00
martmullandGitHub fe07de63b0 Enterprise plan required for private app sharing (#19393)
## before

<img width="1512" height="696" alt="image"
src="https://github.com/user-attachments/assets/d57f398e-6ac3-4ce0-a54b-a23ae41b1890"
/>


## after

<img width="923" height="448" alt="image"
src="https://github.com/user-attachments/assets/f4fea42e-1019-4287-9302-42da143ee878"
/>
2026-04-07 12:17:59 +00:00
Paul RastoinandGitHub 1c9fc94c1f Workspace commands writes inupgradeMigration (#19379)
# Introduction
As for the instance commands we want to keep a track of what has been
run for the workspace commands
Note that the history will be updated only when the workspace command
has been run through the upgrade directly and not when run atomically

## What's next
Later we will use this history in order to determine the current
workspace's version and instance's version getting rid of the version in
database, that will be the last stone
2026-04-07 12:15:06 +00:00
d10ef156c1 i18n - translations (#19395)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 14:17:20 +02:00
nitinandGitHub d3ec64072b [AI] Improve AI System Prompt page layout and token display (#19391)
closes
https://discord.com/channels/1130383047699738754/1480982048050249900

<img width="1438" height="1315" alt="CleanShot 2026-04-07 at 17 02 09"
src="https://github.com/user-attachments/assets/43c5a16f-6dd0-49da-8138-a11a7476e612"
/>
2026-04-07 11:52:48 +00:00
EtienneandGitHub 1b14e7e1f1 Fix - Update package.json (#19390)
https://github.com/twentyhq/twenty/pull/19383#discussion_r3044330450
2026-04-07 11:44:23 +00:00
neo773andGitHub 6ad9566043 Add messaging upgrade command 1 21 (#19389)
```
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [WorkspaceIteratorService] Running on workspace 20202020-1c25-4d02-bf25-6aeccf7ea419 1/2
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 5 connected accounts for workspace 20202020-1c25-4d02-bf25-6aeccf7ea419
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 6 message channels for workspace 20202020-1c25-4d02-bf25-6aeccf7ea419
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 6 calendar channels for workspace 20202020-1c25-4d02-bf25-6aeccf7ea419
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 5 message folders for workspace 20202020-1c25-4d02-bf25-6aeccf7ea419
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [WorkspaceIteratorService] Running on workspace 3b8e6458-5fc1-4e63-8563-008ccddaa6db 2/2
[Nest] 50057  - 04/07/2026, 4:14:10 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 5 connected accounts for workspace 3b8e6458-5fc1-4e63-8563-008ccddaa6db
[Nest] 50057  - 04/07/2026, 4:14:11 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 4 message channels for workspace 3b8e6458-5fc1-4e63-8563-008ccddaa6db
[Nest] 50057  - 04/07/2026, 4:14:11 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 4 calendar channels for workspace 3b8e6458-5fc1-4e63-8563-008ccddaa6db
[Nest] 50057  - 04/07/2026, 4:14:11 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Migrated 10 message folders for workspace 3b8e6458-5fc1-4e63-8563-008ccddaa6db
[Nest] 50057  - 04/07/2026, 4:14:11 PM     LOG [MigrateMessagingInfrastructureToMetadataCommand] Command completed!
```
2026-04-07 11:21:27 +00:00
Félix MalfaitandGitHub f39fccc3c4 fix(messaging): split thread create/update statements and stop clobbering accumulator (#19388)
## Summary

Fixes two bugs in
`MessagingMessageService.saveMessagesWithinTransaction`.

### Bug 1 — `ON CONFLICT DO UPDATE command cannot affect row a second
time`

Reported in production logs from `MessagingMessagesImportService`.
Postgres rejects a single `INSERT … ON CONFLICT DO UPDATE` when the same
conflict target appears twice in the values list, and that's exactly
what was happening to `messageThread`.

Where it came from: #19351 added the message-thread subject refresh
feature and, in doing so, switched the existing thread `insert` to a
bulk `upsert(['id'])` over a list built by concatenating two sources:

```ts
const threadsToUpsert = [
  ...messageThreadsToCreate,        // brand-new thread rows
  ...threadSubjectUpdates entries,  // subject refreshes for existing threads
];
await messageThreadRepository.upsert(threadsToUpsert, ['id'], txManager);
```

Each list is internally unique, but they are **not disjoint**.
`enrichMessageAccumulatorWithMessageThreadToCreate`, when it sees two
messages in the same batch sharing a brand-new thread external id,
copies the first sibling's freshly-minted thread id into the second
sibling's `existingThreadInDB`. The subject-update gate later in the
loop then trusts that field and queues a subject refresh for that id —
which is also already in `messageThreadsToCreate`. Same id, same
statement, two rows → Postgres aborts the transaction and the import
retries forever on the same batch.

**Fix:** stop merging the two lists. Issue creates and subject updates
as two separate statements within the same transaction:

```ts
if (messageThreadsToCreate.length > 0) {
  await messageThreadRepository.insert(messageThreadsToCreate, txManager);
}
if (threadSubjectUpdates.size > 0) {
  await messageThreadRepository.upsert(
    Array.from(threadSubjectUpdates.entries()).map(([id, { subject }]) => ({ id, subject })),
    ['id'],
    txManager,
  );
}
```

This is closer to the pre-#19351 shape (`insert` for new rows) and
side-steps the duplicate-row constraint entirely: each statement is
internally unique (creates use freshly minted UUIDs; updates are keyed
by a `Map<id, …>`), and within the same transaction Postgres happily
applies a subject update to a row inserted by a previous statement.

### Bug 2 —
`enrichMessageAccumulatorWithExistingMessageChannelMessageAssociations`
clobbers the accumulator

Independent latent bug spotted while tracing the flow. The helper did:

```ts
if (existingMessageChannelMessageAssociation) {
  messageAccumulatorMap.set(message.externalId, {
    existingMessageInDB: existingMessage,
    existingMessageChannelMessageAssociationInDB: existingMessageChannelMessageAssociation,
  });
}
```

i.e. it **replaces** the accumulator object, dropping the
`existingThreadInDB` set just before by
`enrichMessageAccumulatorWithExistingMessageThreadIds`.

The branch only fires when re-encountering a message that's already been
fully synced on this channel (matched on `headerMessageId` AND already
has an association row) — i.e. routinely on Gmail/IMAP incremental syncs
whenever the connector re-delivers an existing message (label change,
read/unread, archive, full-resync after error, …).

When it fires, the next enrichment step sees `existingThreadInDB` as
`undefined`, falls into the "create a new thread" branch, mints a fresh
`threadToCreate`, but the main loop never queues a `messageToCreate` or
association for it (because both `existingMessageInDB` and the existing
association are still set). Net effect: **one orphan `messageThread` row
inserted per re-encountered message, with nothing referencing it.**

The existing message in the DB keeps pointing at its real thread, so
this is invisible to users — no thread fragmentation, no UI symptoms, no
error logs. Just slow accumulation of orphan thread rows that no query
joins onto. Probably worth running

```sql
SELECT COUNT(*)
FROM "messageThread" mt
WHERE NOT EXISTS (
  SELECT 1 FROM message m WHERE m."messageThreadId" = mt.id
);
```

on a busy production workspace once this lands to size whether a cleanup
migration is warranted.

**Fix:** mutate the existing accumulator in place instead of replacing
it.

## Test plan

- [x] `oxlint --type-aware` clean on touched file
- [x] `prettier` clean

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-07 13:23:31 +02:00
EtienneandGitHub ac1ec91f25 Direct execution - Remove conditional schema (#19383) 2026-04-07 10:22:56 +00:00
Abdullah.andGitHub d324bbfc25 Styled illustrations for Hero, ThreeCards, Helped sections. (#19387)
This PR adds styles and animations to illustrations for Hero, ThreeCards
and Helped sections.
2026-04-07 10:17:32 +00:00
7c2a9abed4 fix: prevent NaN in health indicator calculations (#19378)
## Summary

Fixes #19377

- **Redis health**: The hit rate calculation divides by zero when both
`keyspace_hits` and `keyspace_misses` are `"0"` (common on fresh
instances). The string `"0"` is truthy so the guard
`statsData.keyspace_hits ? ...` doesn't catch this case, resulting in
`0/0 = NaN`. Fixed by computing the total first and checking it's a
valid non-zero number.
- **Database health**: The cache hit ratio query returns `null` when
`pg_statio_user_tables` is empty (no user tables). `parseFloat(null)` →
`NaN`. Fixed by adding a null check.

## Test plan

- [ ] Verify health indicators display correctly on a fresh instance
with no Redis keyspace activity
- [ ] Verify health indicators display correctly on a database with no
user tables
- [ ] Existing tests in `redis.health.spec.ts` still pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: easonysliu <easonysliu@tencent.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
2026-04-07 10:01:49 +00:00
c0c0cbb896 i18n - translations (#19382)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-07 11:50:21 +02:00
WeikoandGitHub a2188cb0eb Reset Fields widget implementation (#19283)
## Context
This PR implements the first steps for overridable entities resets.

<img width="1277" height="568" alt="Screenshot 2026-04-02 at 18 58 04"
src="https://github.com/user-attachments/assets/4c7f93b1-c453-4905-a919-cd6af11e0e16"
/>
2026-04-07 09:34:44 +00:00
Paul RastoinandGitHub 23874848a4 Instance commands and upgrade_migrations table (#19356)
# Introduction
Now only using typeorm to generate migrations up and down statement
We handle and maintain our own migration table history

## What's new
Now all the instance commands will live within the same module and
folder than the upgrade commands
Sequentiality comes from the timestamp located in the filename
Same sequentiality also applies to the workspace commands in the future,
for the moment still expected a as code explicit declaration

( below screen is an example see below section )
<img width="1382" height="634" alt="image"
src="https://github.com/user-attachments/assets/5610a246-4eae-485e-99f4-98fb89ad5ac8"
/>

## Existing 1.21 migrations
We won't start following this pattern in 1.21 yet at least not with the
migration that has already been released as typeorm migrations in cloud
production as they would rerun


## Small duplication
Duplicating the legacy typeorm and instance commands run in the
`run-instance-commands` to avoid any merge of interest for the moment

## Concurrency
Not handling any run in parrallel of the upgrade for the moment
2026-04-07 08:55:17 +00:00
b23d2b4e73 messaging post migration cleanup (#19365)
Co-authored-by: Charles Bochet <charles@twenty.com>
2026-04-07 10:56:49 +02:00
Paul RastoinandGitHub 601dc02ed7 Fix s3 driver empty objects (#19361)
`undefined === 0` breaks the early return
2026-04-07 08:20:56 +00:00
Abdullah.andGitHub 2d552fc9fd Remove hover and scroll transitions from website. (#19369)
This PR removes hover and scroll transitions from the website. 

Per the conversation with Thomas, we should introduce them one by one
for each section.
2026-04-07 07:58:40 +00:00
522 changed files with 21252 additions and 17605 deletions
-1
View File
@@ -85,7 +85,6 @@ npx nx run twenty-server:test:integration:with-db-reset # Run integration tests
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/[name] -d src/database/typeorm/core/core.datasource.ts
# Workspace
npx nx run twenty-server:command workspace:sync-metadata -f # Sync metadata
```
## Usage Guidelines
@@ -0,0 +1,47 @@
name: Spawn Twenty App Dev Test
description: >
Starts a Twenty all-in-one test instance (server, worker, database, redis)
using the twentycrm/twenty-app-dev Docker image on port 2021.
The server is available at http://localhost:2021 with seeded demo data.
inputs:
twenty-version:
description: 'Twenty Docker Hub image tag for twenty-app-dev (e.g., "latest" or "v1.20.0").'
required: false
default: 'latest'
outputs:
server-url:
description: 'URL where the Twenty test server can be reached'
value: http://localhost:2021
api-key:
description: 'API key for the Twenty test instance'
value: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4
runs:
using: 'composite'
steps:
- name: Start twenty-app-dev-test container
shell: bash
run: |
docker run -d \
--name twenty-app-dev-test \
-p 2021:2021 \
-e NODE_PORT=2021 \
-e SERVER_URL=http://localhost:2021 \
twentycrm/twenty-app-dev:${{ inputs.twenty-version }}
echo "Waiting for Twenty test instance to become healthy…"
TIMEOUT=180
ELAPSED=0
until curl -sf http://localhost:2021/healthz > /dev/null 2>&1; do
if [ "$ELAPSED" -ge "$TIMEOUT" ]; then
echo "::error::Twenty did not become healthy within ${TIMEOUT}s"
docker logs twenty-app-dev-test 2>&1 | tail -80
exit 1
fi
sleep 3
ELAPSED=$((ELAPSED + 3))
echo " … waited ${ELAPSED}s"
done
echo "Twenty test instance is ready at http://localhost:2021 (took ~${ELAPSED}s)"
@@ -25,34 +25,15 @@ jobs:
packages/twenty-sdk/**
packages/twenty-client-sdk/**
packages/twenty-shared/**
packages/twenty-server/**
!packages/create-twenty-app/package.json
!packages/twenty-sdk/package.json
!packages/twenty-client-sdk/package.json
!packages/twenty-shared/package.json
!packages/twenty-server/package.json
create-app-e2e-hello-world:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest-4-cores
services:
postgres:
image: postgres:18
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
env:
PUBLISHABLE_PACKAGES: twenty-client-sdk twenty-sdk create-twenty-app
steps:
@@ -139,30 +120,14 @@ jobs:
cd /tmp/e2e-test-workspace/test-app
npx --no-install twenty --version
- name: Setup server environment
run: npx nx reset:env:e2e-testing-server twenty-server
- name: Build server
run: npx nx build twenty-server
- name: Create and setup database
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
npx nx run twenty-server:database:reset
- name: Start server
run: |
npx nx start twenty-server &
echo "Waiting for server to be ready..."
timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done'
- name: Spawn Twenty test instance
id: twenty
uses: ./.github/actions/spawn-twenty-app-dev-test
- name: Authenticate with twenty-server
env:
SEED_API_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik'
run: |
cd /tmp/e2e-test-workspace/test-app
npx --no-install twenty remote add --api-key $SEED_API_KEY --api-url http://localhost:3000
npx --no-install twenty remote add --api-key ${{ steps.twenty.outputs.api-key }} --api-url ${{ steps.twenty.outputs.server-url }}
- name: Deploy scaffolded app
run: |
@@ -190,7 +155,8 @@ jobs:
- name: Run scaffolded app integration test
env:
TWENTY_API_URL: http://localhost:3000
TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }}
TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }}
run: |
cd /tmp/e2e-test-workspace/test-app
yarn test
@@ -23,34 +23,15 @@ jobs:
packages/twenty-sdk/**
packages/twenty-client-sdk/**
packages/twenty-shared/**
packages/twenty-server/**
!packages/create-twenty-app/package.json
!packages/twenty-sdk/package.json
!packages/twenty-client-sdk/package.json
!packages/twenty-shared/package.json
!packages/twenty-server/package.json
create-app-e2e-minimal:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest-4-cores
services:
postgres:
image: postgres:18
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
env:
PUBLISHABLE_PACKAGES: twenty-client-sdk twenty-sdk create-twenty-app
steps:
@@ -133,30 +114,14 @@ jobs:
cd /tmp/e2e-test-workspace/test-app
npx --no-install twenty --version
- name: Setup server environment
run: npx nx reset:env:e2e-testing-server twenty-server
- name: Build server
run: npx nx build twenty-server
- name: Create and setup database
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
npx nx run twenty-server:database:reset
- name: Start server
run: |
npx nx start twenty-server &
echo "Waiting for server to be ready..."
timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done'
- name: Spawn Twenty test instance
id: twenty
uses: ./.github/actions/spawn-twenty-app-dev-test
- name: Authenticate with twenty-server
env:
SEED_API_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik'
run: |
cd /tmp/e2e-test-workspace/test-app
npx --no-install twenty remote add --api-key $SEED_API_KEY --api-url http://localhost:3000
npx --no-install twenty remote add --api-key ${{ steps.twenty.outputs.api-key }} --api-url ${{ steps.twenty.outputs.server-url }}
- name: Deploy scaffolded app
run: |
@@ -170,7 +135,8 @@ jobs:
- name: Run scaffolded app integration test
env:
TWENTY_API_URL: http://localhost:3000
TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }}
TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }}
run: |
cd /tmp/e2e-test-workspace/test-app
yarn test
@@ -25,34 +25,15 @@ jobs:
packages/twenty-sdk/**
packages/twenty-client-sdk/**
packages/twenty-shared/**
packages/twenty-server/**
!packages/create-twenty-app/package.json
!packages/twenty-sdk/package.json
!packages/twenty-client-sdk/package.json
!packages/twenty-shared/package.json
!packages/twenty-server/package.json
create-app-e2e-postcard:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest-4-cores
services:
postgres:
image: postgres:18
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
env:
PUBLISHABLE_PACKAGES: twenty-client-sdk twenty-sdk create-twenty-app
steps:
@@ -137,30 +118,14 @@ jobs:
cd /tmp/e2e-test-workspace/test-app
npx --no-install twenty --version
- name: Setup server environment
run: npx nx reset:env:e2e-testing-server twenty-server
- name: Build server
run: npx nx build twenty-server
- name: Create and setup database
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
npx nx run twenty-server:database:reset
- name: Start server
run: |
npx nx start twenty-server &
echo "Waiting for server to be ready..."
timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done'
- name: Spawn Twenty test instance
id: twenty
uses: ./.github/actions/spawn-twenty-app-dev-test
- name: Authenticate with twenty-server
env:
SEED_API_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik'
run: |
cd /tmp/e2e-test-workspace/test-app
npx --no-install twenty remote add --api-key $SEED_API_KEY --api-url http://localhost:3000
npx --no-install twenty remote add --api-key ${{ steps.twenty.outputs.api-key }} --api-url ${{ steps.twenty.outputs.server-url }}
- name: Deploy scaffolded app
run: |
@@ -188,7 +153,8 @@ jobs:
- name: Run scaffolded app integration test
env:
TWENTY_API_URL: http://localhost:3000
TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }}
TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }}
run: |
cd /tmp/e2e-test-workspace/test-app
yarn test
@@ -0,0 +1,64 @@
name: CI Example App Hello World
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
changed-files-check:
uses: ./.github/workflows/changed-files.yaml
with:
files: |
packages/twenty-apps/examples/hello-world/**
packages/twenty-sdk/**
packages/twenty-client-sdk/**
packages/twenty-shared/**
!packages/twenty-sdk/package.json
!packages/twenty-client-sdk/package.json
!packages/twenty-shared/package.json
example-app-hello-world:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build SDK packages
run: npx nx build twenty-sdk
- name: Spawn Twenty test instance
id: twenty
uses: ./.github/actions/spawn-twenty-app-dev-test
- name: Run integration tests
working-directory: packages/twenty-apps/examples/hello-world
env:
TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }}
TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }}
run: npx vitest run
ci-example-app-hello-world-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
needs: [changed-files-check, example-app-hello-world]
steps:
- name: Fail job if any needs failed
if: contains(needs.*.result, 'failure')
run: exit 1
@@ -0,0 +1,64 @@
name: CI Example App Postcard
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
changed-files-check:
uses: ./.github/workflows/changed-files.yaml
with:
files: |
packages/twenty-apps/examples/postcard/**
packages/twenty-sdk/**
packages/twenty-client-sdk/**
packages/twenty-shared/**
!packages/twenty-sdk/package.json
!packages/twenty-client-sdk/package.json
!packages/twenty-shared/package.json
example-app-postcard:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build SDK packages
run: npx nx build twenty-sdk
- name: Spawn Twenty test instance
id: twenty
uses: ./.github/actions/spawn-twenty-app-dev-test
- name: Run integration tests
working-directory: packages/twenty-apps/examples/postcard
env:
TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }}
TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }}
run: npx vitest run
ci-example-app-postcard-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
needs: [changed-files-check, example-app-postcard]
steps:
- name: Fail job if any needs failed
if: contains(needs.*.result, 'failure')
run: exit 1
+2
View File
@@ -70,6 +70,8 @@ jobs:
- 6379:6379
env:
NODE_ENV: test
TWENTY_API_URL: http://localhost:3000
TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik
steps:
- name: Fetch custom Github Actions and base branch history
uses: actions/checkout@v4
+1 -4
View File
@@ -75,9 +75,6 @@ npx nx run twenty-server:database:migrate:prod # Run migrations
# Generate migration (replace [name] with kebab-case descriptive name)
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/common/[name] -d src/database/typeorm/core/core.datasource.ts
# Sync metadata
npx nx run twenty-server:command workspace:sync-metadata
```
### Database Inspection (Postgres MCP)
@@ -87,7 +84,7 @@ A read-only Postgres MCP server is configured in `.mcp.json`. Use it to:
- Verify migration results (columns, types, constraints) after running migrations
- Explore the multi-tenant schema structure (core, metadata, workspace-specific schemas)
- Debug issues by querying raw data to confirm whether a bug is frontend, backend, or data-level
- Inspect metadata tables to debug GraphQL schema generation or `workspace:sync-metadata` issues
- Inspect metadata tables to debug GraphQL schema generation issues
This server is read-only — for write operations (reset, migrations, sync), use the CLI commands above.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "0.8.0",
"version": "0.9.0-canary.0",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
@@ -3,43 +3,51 @@ import * as os from 'os';
import * as path from 'path';
import { beforeAll } from 'vitest';
const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2020';
const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test');
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.',
);
}
const assertServerIsReachable = async () => {
let response: Response;
try {
response = await fetch(`${TWENTY_API_URL}/healthz`);
response = await fetch(`${apiUrl}/healthz`);
} catch {
throw new Error(
`Twenty server is not reachable at ${TWENTY_API_URL}. ` +
`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 ${TWENTY_API_URL} returned ${response.status}`);
throw new Error(`Server at ${apiUrl} returned ${response.status}`);
}
};
beforeAll(async () => {
await assertServerIsReachable();
fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true });
const configFile = {
remotes: {
local: {
apiUrl: process.env.TWENTY_API_URL,
apiKey: process.env.TWENTY_API_KEY,
},
},
defaultRemote: 'local',
};
fs.mkdirSync(CONFIG_DIR, { recursive: true });
fs.writeFileSync(
path.join(TEST_CONFIG_DIR, 'config.json'),
JSON.stringify(configFile, null, 2),
CONFIG_PATH,
JSON.stringify(
{
remotes: {
local: { apiUrl, apiKey: token },
},
defaultRemote: 'local',
},
null,
2,
),
);
process.env.TWENTY_APP_ACCESS_TOKEN ??= token;
});
@@ -14,8 +14,11 @@ export default defineConfig({
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:
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik',
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
},
},
});
@@ -21,7 +21,7 @@ export const copyBaseApplicationProject = async ({
console.log(chalk.gray('Generating application project...'));
await fs.copy(join(__dirname, './constants/template'), appDirectory);
await renameGitignore({ appDirectory });
await renameDotfiles({ appDirectory });
await generateUniversalIdentifiers({
appDisplayName,
@@ -32,11 +32,20 @@ export const copyBaseApplicationProject = async ({
await updatePackageJson({ appName, appDirectory });
};
const renameGitignore = async ({ appDirectory }: { appDirectory: string }) => {
const gitignorePath = join(appDirectory, 'gitignore');
// npm strips dotfiles/dotdirs (.gitignore, .github/) from published packages,
// so we store them without the leading dot and rename after copying.
const renameDotfiles = async ({ appDirectory }: { appDirectory: string }) => {
const renames = [
{ from: 'gitignore', to: '.gitignore' },
{ from: 'github', to: '.github' },
];
if (await fs.pathExists(gitignorePath)) {
await fs.rename(gitignorePath, join(appDirectory, '.gitignore'));
for (const { from, to } of renames) {
const sourcePath = join(appDirectory, from);
if (await fs.pathExists(sourcePath)) {
await fs.rename(sourcePath, join(appDirectory, to));
}
}
};
@@ -3,43 +3,51 @@ import * as os from 'os';
import * as path from 'path';
import { beforeAll } from 'vitest';
const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000';
const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test');
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.',
);
}
const assertServerIsReachable = async () => {
let response: Response;
try {
response = await fetch(`${TWENTY_API_URL}/healthz`);
response = await fetch(`${apiUrl}/healthz`);
} catch {
throw new Error(
`Twenty server is not reachable at ${TWENTY_API_URL}. ` +
`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 ${TWENTY_API_URL} returned ${response.status}`);
throw new Error(`Server at ${apiUrl} returned ${response.status}`);
}
};
beforeAll(async () => {
await assertServerIsReachable();
fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true });
const configFile = {
remotes: {
local: {
apiUrl: process.env.TWENTY_API_URL,
apiKey: process.env.TWENTY_API_KEY,
},
},
defaultRemote: 'local',
};
fs.mkdirSync(CONFIG_DIR, { recursive: true });
fs.writeFileSync(
path.join(TEST_CONFIG_DIR, 'config.json'),
JSON.stringify(configFile, null, 2),
CONFIG_PATH,
JSON.stringify(
{
remotes: {
local: { apiUrl, apiKey: token },
},
defaultRemote: 'local',
},
null,
2,
),
);
process.env.TWENTY_APP_ACCESS_TOKEN ??= token;
});
@@ -14,9 +14,11 @@ export default defineConfig({
include: ['src/**/*.integration-test.ts'],
setupFiles: ['src/__tests__/setup-test.ts'],
env: {
TWENTY_API_URL: 'http://localhost:3000',
TWENTY_API_URL: process.env.TWENTY_API_URL ?? 'http://localhost:2020',
TWENTY_API_KEY:
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik',
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
},
},
});
@@ -3,43 +3,51 @@ import * as os from 'os';
import * as path from 'path';
import { beforeAll } from 'vitest';
const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2020';
const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test');
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.',
);
}
const assertServerIsReachable = async () => {
let response: Response;
try {
response = await fetch(`${TWENTY_API_URL}/healthz`);
response = await fetch(`${apiUrl}/healthz`);
} catch {
throw new Error(
`Twenty server is not reachable at ${TWENTY_API_URL}. ` +
`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 ${TWENTY_API_URL} returned ${response.status}`);
throw new Error(`Server at ${apiUrl} returned ${response.status}`);
}
};
beforeAll(async () => {
await assertServerIsReachable();
fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true });
const configFile = {
remotes: {
local: {
apiUrl: process.env.TWENTY_API_URL,
apiKey: process.env.TWENTY_API_KEY,
},
},
defaultRemote: 'local',
};
fs.mkdirSync(CONFIG_DIR, { recursive: true });
fs.writeFileSync(
path.join(TEST_CONFIG_DIR, 'config.json'),
JSON.stringify(configFile, null, 2),
CONFIG_PATH,
JSON.stringify(
{
remotes: {
local: { apiUrl, apiKey: token },
},
defaultRemote: 'local',
},
null,
2,
),
);
process.env.TWENTY_APP_ACCESS_TOKEN ??= token;
});
@@ -51,28 +51,28 @@ export default defineObject({
defaultValue: `'${PostCardStatus.DRAFT}'`,
options: [
{
id: 'a1b2c3d4-0001-4000-8000-000000000001',
id: '8ab3abad-02e7-4670-9283-983d7fac7fe4',
value: PostCardStatus.DRAFT,
label: 'Draft',
position: 0,
color: 'gray',
},
{
id: 'a1b2c3d4-0002-4000-8000-000000000002',
id: '2bcdd195-6c99-4d69-84b2-e2838ee54467',
value: PostCardStatus.SENT,
label: 'Sent',
position: 1,
color: 'orange',
},
{
id: 'a1b2c3d4-0003-4000-8000-000000000003',
id: '918ff60c-c26e-4fae-8eba-3fbce04dc48b',
value: PostCardStatus.DELIVERED,
label: 'Delivered',
position: 2,
color: 'green',
},
{
id: 'a1b2c3d4-0004-4000-8000-000000000004',
id: '3c91a653-5d31-4023-be6c-a69c68d21233',
value: PostCardStatus.RETURNED,
label: 'Returned',
position: 3,
@@ -14,8 +14,11 @@ export default defineConfig({
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:
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik',
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
},
},
});
@@ -10,25 +10,31 @@ export default defineField({
description: 'Post card category',
options: [
{
id: 'c1d2e3f4-0001-4000-8000-000000000001',
id: 'cd751c81-787d-4581-bc51-efe43f0050a7',
value: 'PERSONAL',
label: 'Personal',
color: 'blue',
position: 0,
},
{
id: 'c1d2e3f4-0002-4000-8000-000000000002',
id: 'eec437ca-5beb-41a9-a826-c9a5eca2eef4',
value: 'BUSINESS',
label: 'Business',
color: 'green',
position: 1,
},
{
id: 'c1d2e3f4-0003-4000-8000-000000000003',
id: 'a5baa37d-1047-4972-b6b8-7faae0e3eac1',
value: 'PROMOTIONAL',
label: 'Promotional',
color: 'orange',
position: 2,
},
{
value: 'OTHER',
label: 'Other',
color: 'gray',
position: 3,
},
],
});
@@ -5,6 +5,7 @@ enum PostCardStatus {
SENT = 'SENT',
DELIVERED = 'DELIVERED',
RETURNED = 'RETURNED',
LOST = 'LOST',
}
export const POST_CARD_UNIVERSAL_IDENTIFIER =
@@ -53,33 +54,40 @@ export default defineObject({
defaultValue: `'${PostCardStatus.DRAFT}'`,
options: [
{
id: 'a1b2c3d4-0001-4000-8000-000000000001',
id: '1b008e19-1e59-4a07-b187-65a20e547c4e',
value: PostCardStatus.DRAFT,
label: 'Draft',
position: 0,
color: 'gray',
},
{
id: 'a1b2c3d4-0002-4000-8000-000000000002',
id: '452b9d40-889c-4342-9697-98319394db04',
value: PostCardStatus.SENT,
label: 'Sent',
position: 1,
color: 'orange',
},
{
id: 'a1b2c3d4-0003-4000-8000-000000000003',
id: 'c2ed0b8c-a3ed-4383-aef9-e0441267bcfe',
value: PostCardStatus.DELIVERED,
label: 'Delivered',
position: 2,
color: 'green',
},
{
id: 'a1b2c3d4-0004-4000-8000-000000000004',
id: 'c57a5e08-7ef7-49b8-87e6-32d720d22802',
value: PostCardStatus.RETURNED,
label: 'Returned',
position: 3,
color: 'orange',
},
{
// No id — exercises addMissingFieldOptionIds in the object branch
value: PostCardStatus.LOST,
label: 'Lost',
position: 4,
color: 'red',
},
],
name: 'status',
},
@@ -1,42 +0,0 @@
name: CI
on:
push:
branches:
- main
pull_request: {}
env:
TWENTY_VERSION: latest
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Spawn Twenty instance
id: twenty
uses: twentyhq/twenty/.github/actions/spawn-twenty-docker-image@main
with:
twenty-version: ${{ env.TWENTY_VERSION }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- 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.access-token }}
@@ -1,38 +0,0 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn
# codegen
generated
# testing
/coverage
# dev
/dist/
.twenty
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# typescript
*.tsbuildinfo
*.d.ts
@@ -1 +0,0 @@
24.5.0
@@ -1,19 +0,0 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript"],
"categories": {
"correctness": "off"
},
"ignorePatterns": ["node_modules", "dist"],
"rules": {
"no-unused-vars": "off",
"typescript/no-unused-vars": [
"warn",
{
"argsIgnorePattern": "^_"
}
],
"typescript/no-explicit-any": "off"
}
}
@@ -1 +0,0 @@
nodeLinker: node-modules
@@ -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 +0,0 @@
This is a [Twenty](https://twenty.com) application bootstrapped with [`create-twenty-app`](https://www.npmjs.com/package/create-twenty-app).
## Getting Started
Run `yarn twenty help` to list all available commands.
## Learn More
- [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)
@@ -1,35 +0,0 @@
{
"name": "my-twenty-app",
"version": "0.1.0",
"license": "MIT",
"engines": {
"node": "^24.5.0",
"npm": "please-use-yarn",
"yarn": ">=4.0.2"
},
"keywords": [
"twenty-app"
],
"packageManager": "yarn@4.9.2",
"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": "0.8.0-canary.8",
"twenty-sdk": "0.8.0-canary.8"
},
"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"
}
}
@@ -1,70 +0,0 @@
import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { appBuild, appDeploy, appInstall, appUninstall } from 'twenty-sdk/cli';
import { MetadataApiClient } from 'twenty-client-sdk/metadata';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
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,45 +0,0 @@
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import { beforeAll } from 'vitest';
const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2020';
const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test');
const assertServerIsReachable = async () => {
let response: Response;
try {
response = await fetch(`${TWENTY_API_URL}/healthz`);
} catch {
throw new Error(
`Twenty server is not reachable at ${TWENTY_API_URL}. ` +
'Make sure the server is running before executing integration tests.',
);
}
if (!response.ok) {
throw new Error(`Server at ${TWENTY_API_URL} returned ${response.status}`);
}
};
beforeAll(async () => {
await assertServerIsReachable();
fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true });
const configFile = {
remotes: {
local: {
apiUrl: process.env.TWENTY_API_URL,
apiKey: process.env.TWENTY_API_KEY,
},
},
defaultRemote: 'local',
};
fs.writeFileSync(
path.join(TEST_CONFIG_DIR, 'config.json'),
JSON.stringify(configFile, null, 2),
);
});
@@ -1,15 +0,0 @@
import { defineApplication } from 'twenty-sdk';
import {
APP_DESCRIPTION,
APP_DISPLAY_NAME,
APPLICATION_UNIVERSAL_IDENTIFIER,
DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
} from 'src/constants/universal-identifiers';
export default defineApplication({
universalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
displayName: APP_DISPLAY_NAME,
description: APP_DESCRIPTION,
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
});
@@ -1,4 +0,0 @@
export const APP_DISPLAY_NAME = 'My twenty app';
export const APP_DESCRIPTION = '';
export const APPLICATION_UNIVERSAL_IDENTIFIER = '83a4b244-c80d-4923-b0d5-ae2406e83072';
export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'a1a28134-04d1-43ac-b8cc-b547e8cf97ba';
@@ -1,16 +0,0 @@
import { defineRole } from 'twenty-sdk';
import {
APP_DISPLAY_NAME,
DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
} from 'src/constants/universal-identifiers';
export default defineRole({
universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
label: `${APP_DISPLAY_NAME} default function role`,
description: `${APP_DISPLAY_NAME} default function role`,
canReadAllObjectRecords: true,
canUpdateAllObjectRecords: true,
canSoftDeleteAllObjectRecords: true,
canDestroyAllObjectRecords: false,
});
@@ -1,42 +0,0 @@
{
"compileOnSave": false,
"compilerOptions": {
"sourceMap": true,
"declaration": true,
"outDir": "./dist",
"rootDir": ".",
"jsx": "react-jsx",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"allowUnreachableCode": false,
"strict": true,
"alwaysStrict": true,
"noImplicitAny": true,
"strictBindCallApply": false,
"target": "es2018",
"module": "esnext",
"lib": ["es2020", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"resolveJsonModule": true,
"paths": {
"src/*": ["./src/*"],
"~/*": ["./*"]
}
},
"exclude": [
"node_modules",
"dist",
"**/*.test.ts",
"**/*.spec.ts",
"**/*.integration-test.ts"
],
"references": [
{
"path": "./tsconfig.spec.json"
}
]
}
@@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"composite": true,
"types": ["vitest/globals", "node"]
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["node_modules", "dist"]
}
@@ -1,21 +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_KEY:
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik',
},
},
});
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-client-sdk",
"version": "0.8.0",
"version": "0.9.0-canary.0",
"sideEffects": false,
"license": "AGPL-3.0",
"scripts": {
@@ -1729,13 +1729,13 @@ enum FeatureFlagKey {
IS_JSON_FILTER_ENABLED
IS_AI_ENABLED
IS_COMMAND_MENU_ITEM_ENABLED
IS_MARKETPLACE_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_USAGE_ANALYTICS_ENABLED
IS_RICH_TEXT_V1_MIGRATED
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED
@@ -2575,6 +2575,7 @@ type CommandMenuItem {
position: Float!
isPinned: Boolean!
availabilityType: CommandMenuItemAvailabilityType!
payload: JSON
hotKeys: [String!]
conditionalAvailabilityExpression: String
availabilityObjectMetadataId: UUID
@@ -2601,19 +2602,11 @@ enum EngineComponentKey {
SEE_DELETED_RECORDS
CREATE_NEW_VIEW
HIDE_DELETED_RECORDS
GO_TO_PEOPLE
GO_TO_COMPANIES
GO_TO_DASHBOARDS
GO_TO_OPPORTUNITIES
GO_TO_SETTINGS
GO_TO_TASKS
GO_TO_NOTES
EDIT_RECORD_PAGE_LAYOUT
EDIT_DASHBOARD_LAYOUT
SAVE_DASHBOARD_LAYOUT
CANCEL_DASHBOARD_LAYOUT
DUPLICATE_DASHBOARD
GO_TO_WORKFLOWS
ACTIVATE_WORKFLOW
DEACTIVATE_WORKFLOW
DISCARD_DRAFT_WORKFLOW
@@ -2624,7 +2617,6 @@ enum EngineComponentKey {
ADD_NODE_WORKFLOW
TIDY_UP_WORKFLOW
DUPLICATE_WORKFLOW
GO_TO_RUNS
SEE_VERSION_WORKFLOW_RUN
SEE_WORKFLOW_WORKFLOW_RUN
STOP_WORKFLOW_RUN
@@ -2636,10 +2628,20 @@ enum EngineComponentKey {
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
@@ -2771,6 +2773,7 @@ type ConnectedAccountDTO {
authFailedAt: DateTime
handleAliases: [String!]
scopes: [String!]
connectionParameters: ImapSmtpCaldavConnectionParameters
lastSignedInAt: DateTime
userWorkspaceId: UUID!
createdAt: DateTime!
@@ -3232,7 +3235,6 @@ type Query {
findApplicationRegistrationStats(id: String!): ApplicationRegistrationStats!
findApplicationRegistrationVariables(applicationRegistrationId: String!): [ApplicationRegistrationVariable!]!
applicationRegistrationTarballUrl(id: String!): String
getApplicationShareLink(id: String!): String!
currentUser: User!
currentWorkspace: Workspace!
getPublicWorkspaceDataByDomain(origin: String): PublicWorkspaceData!
@@ -3458,6 +3460,7 @@ type Mutation {
updatePageLayout(id: String!, input: UpdatePageLayoutInput!): PageLayout!
destroyPageLayout(id: String!): Boolean!
updatePageLayoutWithTabsAndWidgets(id: String!, input: UpdatePageLayoutWithTabsInput!): PageLayout!
resetPageLayoutWidgetToDefault(id: String!): PageLayoutWidget!
createPageLayoutWidget(input: CreatePageLayoutWidgetInput!): PageLayoutWidget!
updatePageLayoutWidget(id: String!, input: UpdatePageLayoutWidgetInput!): PageLayoutWidget!
destroyPageLayoutWidget(id: String!): Boolean!
@@ -4048,6 +4051,7 @@ input CreateCommandMenuItemInput {
hotKeys: [String!]
conditionalAvailabilityExpression: String
availabilityObjectMetadataId: UUID
payload: JSON
}
input UpdateCommandMenuItemInput {
@@ -1429,7 +1429,7 @@ export interface PublicFeatureFlag {
__typename: 'PublicFeatureFlag'
}
export type FeatureFlagKey = 'IS_UNIQUE_INDEXES_ENABLED' | 'IS_JSON_FILTER_ENABLED' | 'IS_AI_ENABLED' | 'IS_COMMAND_MENU_ITEM_ENABLED' | 'IS_MARKETPLACE_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_USAGE_ANALYTICS_ENABLED' | 'IS_RICH_TEXT_V1_MIGRATED' | 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' | 'IS_RECORD_TABLE_WIDGET_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_USAGE_ANALYTICS_ENABLED' | 'IS_RICH_TEXT_V1_MIGRATED' | 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' | 'IS_RECORD_TABLE_WIDGET_ENABLED' | 'IS_DATASOURCE_MIGRATED'
export interface ClientConfigMaintenanceMode {
startAt: Scalars['DateTime']
@@ -2286,6 +2286,7 @@ export interface CommandMenuItem {
position: Scalars['Float']
isPinned: Scalars['Boolean']
availabilityType: CommandMenuItemAvailabilityType
payload?: Scalars['JSON']
hotKeys?: Scalars['String'][]
conditionalAvailabilityExpression?: Scalars['String']
availabilityObjectMetadataId?: Scalars['UUID']
@@ -2295,7 +2296,7 @@ export interface CommandMenuItem {
__typename: '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' | 'GO_TO_PEOPLE' | 'GO_TO_COMPANIES' | 'GO_TO_DASHBOARDS' | 'GO_TO_OPPORTUNITIES' | 'GO_TO_SETTINGS' | 'GO_TO_TASKS' | 'GO_TO_NOTES' | 'EDIT_RECORD_PAGE_LAYOUT' | 'EDIT_DASHBOARD_LAYOUT' | 'SAVE_DASHBOARD_LAYOUT' | 'CANCEL_DASHBOARD_LAYOUT' | 'DUPLICATE_DASHBOARD' | 'GO_TO_WORKFLOWS' | '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' | 'GO_TO_RUNS' | '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' | 'TRIGGER_WORKFLOW_VERSION' | 'FRONT_COMPONENT_RENDERER' | 'REPLY_TO_EMAIL_THREAD' | 'COMPOSE_EMAIL' | '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 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' | 'RECORD_SELECTION' | 'FALLBACK'
@@ -2424,6 +2425,7 @@ export interface ConnectedAccountDTO {
authFailedAt?: Scalars['DateTime']
handleAliases?: Scalars['String'][]
scopes?: Scalars['String'][]
connectionParameters?: ImapSmtpCaldavConnectionParameters
lastSignedInAt?: Scalars['DateTime']
userWorkspaceId: Scalars['UUID']
createdAt: Scalars['DateTime']
@@ -2785,7 +2787,6 @@ export interface Query {
findApplicationRegistrationStats: ApplicationRegistrationStats
findApplicationRegistrationVariables: ApplicationRegistrationVariable[]
applicationRegistrationTarballUrl?: Scalars['String']
getApplicationShareLink: Scalars['String']
currentUser: User
currentWorkspace: Workspace
getPublicWorkspaceDataByDomain: PublicWorkspaceData
@@ -2905,6 +2906,7 @@ export interface Mutation {
updatePageLayout: PageLayout
destroyPageLayout: Scalars['Boolean']
updatePageLayoutWithTabsAndWidgets: PageLayout
resetPageLayoutWidgetToDefault: PageLayoutWidget
createPageLayoutWidget: PageLayoutWidget
updatePageLayoutWidget: PageLayoutWidget
destroyPageLayoutWidget: Scalars['Boolean']
@@ -5484,6 +5486,7 @@ export interface CommandMenuItemGenqlSelection{
position?: boolean | number
isPinned?: boolean | number
availabilityType?: boolean | number
payload?: boolean | number
hotKeys?: boolean | number
conditionalAvailabilityExpression?: boolean | number
availabilityObjectMetadataId?: boolean | number
@@ -5630,6 +5633,7 @@ export interface ConnectedAccountDTOGenqlSelection{
authFailedAt?: boolean | number
handleAliases?: boolean | number
scopes?: boolean | number
connectionParameters?: ImapSmtpCaldavConnectionParametersGenqlSelection
lastSignedInAt?: boolean | number
userWorkspaceId?: boolean | number
createdAt?: boolean | number
@@ -6014,7 +6018,6 @@ export interface QueryGenqlSelection{
findApplicationRegistrationStats?: (ApplicationRegistrationStatsGenqlSelection & { __args: {id: Scalars['String']} })
findApplicationRegistrationVariables?: (ApplicationRegistrationVariableGenqlSelection & { __args: {applicationRegistrationId: Scalars['String']} })
applicationRegistrationTarballUrl?: { __args: {id: Scalars['String']} }
getApplicationShareLink?: { __args: {id: Scalars['String']} }
currentUser?: UserGenqlSelection
currentWorkspace?: WorkspaceGenqlSelection
getPublicWorkspaceDataByDomain?: (PublicWorkspaceDataGenqlSelection & { __args?: {origin?: (Scalars['String'] | null)} })
@@ -6153,6 +6156,7 @@ export interface MutationGenqlSelection{
updatePageLayout?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutInput} })
destroyPageLayout?: { __args: {id: Scalars['String']} }
updatePageLayoutWithTabsAndWidgets?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutWithTabsInput} })
resetPageLayoutWidgetToDefault?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String']} })
createPageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {input: CreatePageLayoutWidgetInput} })
updatePageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutWidgetInput} })
destroyPageLayoutWidget?: { __args: {id: Scalars['String']} }
@@ -6456,7 +6460,7 @@ update: UpdateLogicFunctionFromSourceInputUpdates}
export interface UpdateLogicFunctionFromSourceInputUpdates {name?: (Scalars['String'] | null),description?: (Scalars['String'] | null),timeoutSeconds?: (Scalars['Float'] | null),sourceHandlerCode?: (Scalars['String'] | null),toolInputSchema?: (Scalars['JSON'] | null),handlerName?: (Scalars['String'] | null),sourceHandlerPath?: (Scalars['String'] | null),isTool?: (Scalars['Boolean'] | null),cronTriggerSettings?: (Scalars['JSON'] | null),databaseEventTriggerSettings?: (Scalars['JSON'] | null),httpRouteTriggerSettings?: (Scalars['JSON'] | null)}
export interface CreateCommandMenuItemInput {workflowVersionId?: (Scalars['UUID'] | null),frontComponentId?: (Scalars['UUID'] | null),engineComponentKey: EngineComponentKey,label: Scalars['String'],icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),hotKeys?: (Scalars['String'][] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null)}
export interface CreateCommandMenuItemInput {workflowVersionId?: (Scalars['UUID'] | null),frontComponentId?: (Scalars['UUID'] | null),engineComponentKey: EngineComponentKey,label: Scalars['String'],icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),hotKeys?: (Scalars['String'][] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null),payload?: (Scalars['JSON'] | null)}
export interface UpdateCommandMenuItemInput {id: Scalars['UUID'],label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null),engineComponentKey?: (EngineComponentKey | null),hotKeys?: (Scalars['String'][] | null)}
@@ -9138,13 +9142,13 @@ export const enumFeatureFlagKey = {
IS_JSON_FILTER_ENABLED: 'IS_JSON_FILTER_ENABLED' as const,
IS_AI_ENABLED: 'IS_AI_ENABLED' as const,
IS_COMMAND_MENU_ITEM_ENABLED: 'IS_COMMAND_MENU_ITEM_ENABLED' as const,
IS_MARKETPLACE_ENABLED: 'IS_MARKETPLACE_ENABLED' as const,
IS_MARKETPLACE_SETTING_TAB_VISIBLE: 'IS_MARKETPLACE_SETTING_TAB_VISIBLE' as const,
IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED: 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' as const,
IS_PUBLIC_DOMAIN_ENABLED: 'IS_PUBLIC_DOMAIN_ENABLED' as const,
IS_EMAILING_DOMAIN_ENABLED: 'IS_EMAILING_DOMAIN_ENABLED' as const,
IS_JUNCTION_RELATIONS_ENABLED: 'IS_JUNCTION_RELATIONS_ENABLED' as const,
IS_DRAFT_EMAIL_ENABLED: 'IS_DRAFT_EMAIL_ENABLED' as const,
IS_CONNECTED_ACCOUNT_MIGRATED: 'IS_CONNECTED_ACCOUNT_MIGRATED' as const,
IS_USAGE_ANALYTICS_ENABLED: 'IS_USAGE_ANALYTICS_ENABLED' 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,
@@ -9261,19 +9265,11 @@ export const enumEngineComponentKey = {
SEE_DELETED_RECORDS: 'SEE_DELETED_RECORDS' as const,
CREATE_NEW_VIEW: 'CREATE_NEW_VIEW' as const,
HIDE_DELETED_RECORDS: 'HIDE_DELETED_RECORDS' as const,
GO_TO_PEOPLE: 'GO_TO_PEOPLE' as const,
GO_TO_COMPANIES: 'GO_TO_COMPANIES' as const,
GO_TO_DASHBOARDS: 'GO_TO_DASHBOARDS' as const,
GO_TO_OPPORTUNITIES: 'GO_TO_OPPORTUNITIES' as const,
GO_TO_SETTINGS: 'GO_TO_SETTINGS' as const,
GO_TO_TASKS: 'GO_TO_TASKS' as const,
GO_TO_NOTES: 'GO_TO_NOTES' as const,
EDIT_RECORD_PAGE_LAYOUT: 'EDIT_RECORD_PAGE_LAYOUT' as const,
EDIT_DASHBOARD_LAYOUT: 'EDIT_DASHBOARD_LAYOUT' as const,
SAVE_DASHBOARD_LAYOUT: 'SAVE_DASHBOARD_LAYOUT' as const,
CANCEL_DASHBOARD_LAYOUT: 'CANCEL_DASHBOARD_LAYOUT' as const,
DUPLICATE_DASHBOARD: 'DUPLICATE_DASHBOARD' as const,
GO_TO_WORKFLOWS: 'GO_TO_WORKFLOWS' as const,
ACTIVATE_WORKFLOW: 'ACTIVATE_WORKFLOW' as const,
DEACTIVATE_WORKFLOW: 'DEACTIVATE_WORKFLOW' as const,
DISCARD_DRAFT_WORKFLOW: 'DISCARD_DRAFT_WORKFLOW' as const,
@@ -9284,7 +9280,6 @@ export const enumEngineComponentKey = {
ADD_NODE_WORKFLOW: 'ADD_NODE_WORKFLOW' as const,
TIDY_UP_WORKFLOW: 'TIDY_UP_WORKFLOW' as const,
DUPLICATE_WORKFLOW: 'DUPLICATE_WORKFLOW' as const,
GO_TO_RUNS: 'GO_TO_RUNS' as const,
SEE_VERSION_WORKFLOW_RUN: 'SEE_VERSION_WORKFLOW_RUN' as const,
SEE_WORKFLOW_WORKFLOW_RUN: 'SEE_WORKFLOW_WORKFLOW_RUN' as const,
STOP_WORKFLOW_RUN: 'STOP_WORKFLOW_RUN' as const,
@@ -9296,10 +9291,20 @@ export const enumEngineComponentKey = {
SEARCH_RECORDS_FALLBACK: 'SEARCH_RECORDS_FALLBACK' as const,
ASK_AI: 'ASK_AI' as const,
VIEW_PREVIOUS_AI_CHATS: 'VIEW_PREVIOUS_AI_CHATS' as const,
NAVIGATION: 'NAVIGATION' as const,
TRIGGER_WORKFLOW_VERSION: 'TRIGGER_WORKFLOW_VERSION' as const,
FRONT_COMPONENT_RENDERER: 'FRONT_COMPONENT_RENDERER' as const,
REPLY_TO_EMAIL_THREAD: 'REPLY_TO_EMAIL_THREAD' as const,
COMPOSE_EMAIL: 'COMPOSE_EMAIL' as const,
GO_TO_PEOPLE: 'GO_TO_PEOPLE' as const,
GO_TO_COMPANIES: 'GO_TO_COMPANIES' as const,
GO_TO_DASHBOARDS: 'GO_TO_DASHBOARDS' as const,
GO_TO_OPPORTUNITIES: 'GO_TO_OPPORTUNITIES' as const,
GO_TO_SETTINGS: 'GO_TO_SETTINGS' as const,
GO_TO_TASKS: 'GO_TO_TASKS' as const,
GO_TO_NOTES: 'GO_TO_NOTES' as const,
GO_TO_WORKFLOWS: 'GO_TO_WORKFLOWS' as const,
GO_TO_RUNS: 'GO_TO_RUNS' as const,
DELETE_SINGLE_RECORD: 'DELETE_SINGLE_RECORD' as const,
DELETE_MULTIPLE_RECORDS: 'DELETE_MULTIPLE_RECORDS' as const,
RESTORE_SINGLE_RECORD: 'RESTORE_SINGLE_RECORD' as const,
@@ -5159,6 +5159,9 @@ export default {
"availabilityType": [
297
],
"payload": [
15
],
"hotKeys": [
1
],
@@ -5479,6 +5482,9 @@ export default {
"scopes": [
1
],
"connectionParameters": [
291
],
"lastSignedInAt": [
4
],
@@ -6700,15 +6706,6 @@ export default {
]
}
],
"getApplicationShareLink": [
1,
{
"id": [
1,
"String!"
]
}
],
"currentUser": [
69
],
@@ -7779,6 +7776,15 @@ export default {
]
}
],
"resetPageLayoutWidgetToDefault": [
75,
{
"id": [
1,
"String!"
]
}
],
"createPageLayoutWidget": [
75,
{
@@ -10244,6 +10250,9 @@ export default {
"availabilityObjectMetadataId": [
3
],
"payload": [
15
],
"__typename": [
1
]
@@ -50,23 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### For Workspace objects
There are no migrations files, migration are generated automatically for each workspace,
stored in the database, and applied with this command
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
This will drop the database and re-run the migrations and seed.
Make sure to back up any data you want to keep before running this command.
</Warning>
## Tech Stack
Twenty primarily uses NestJS for the backend.
@@ -756,7 +756,7 @@ export default defineFrontComponent({
});
```
After syncing with `yarn twenty dev`, the quick action appears in the top-right corner of the page:
After syncing with `yarn twenty dev` (or running a one-shot `yarn twenty dev --once`), the quick action appears in the top-right corner of the page:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Quick action button in the top-right corner" />
@@ -1402,7 +1402,7 @@ export default defineFrontComponent({
### How bundling works
The build step (`yarn twenty dev` or `yarn twenty build`) uses esbuild to produce a single self-contained file per logic function and per front component. All imported packages are inlined into the bundle.
The build step uses esbuild to produce a single self-contained file per logic function and per front component. All imported packages are inlined into the bundle.
**Logic functions** run in a Node.js environment. Node built-in modules (`fs`, `path`, `crypto`, `http`, etc.) are available and do not need to be installed.
@@ -98,6 +98,21 @@ Dev mode is only available on Twenty instances running in development (`NODE_ENV
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Dev mode terminal output" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Command | Behavior | When to use |
|---------|----------|-------------|
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### See your app in Twenty
Open [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) in your browser. Navigate to **Settings > Apps** and select the **Developer** tab. You should see your app listed under **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Sharing a deployed app
Tarball apps are not listed in the public marketplace, so other workspaces on the same server won't discover them by browsing. To share a deployed app:
<Warning>
Sharing private (tarball) apps across workspaces is an **Enterprise** feature. The **Distribution** tab will show an upgrade prompt instead of the share controls until your workspace has a valid Enterprise key. See [Settings > Admin Panel > Enterprise](/settings/admin-panel#enterprise) to activate it.
</Warning>
Tarball apps are not listed in the public marketplace, so other workspaces on the same server won't discover them by browsing. Once your workspace is on the Enterprise plan, you can share a deployed app like this:
1. Go to **Settings > Applications > Registrations** and open your app
2. In the **Distribution** tab, click **Copy share link**
@@ -60,10 +64,6 @@ Tarball apps are not listed in the public marketplace, so other workspaces on th
The share link uses the server's base URL (without any workspace subdomain) so it works for any workspace on the server.
<Warning>
Sharing private apps is an Enterprise feature. Go to [Settings > Admin Panel > Enterprise](/settings/admin-panel#enterprise) to enable it.
</Warning>
### Version management
To release an update:
@@ -50,23 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### لكائنات مساحة العمل
لا توجد ملفات هجيرات، يتم إنشاء الهجيرات تلقائيًا لكل مساحة عمل،
مخزنة في قاعدة البيانات، ويتم تطبيقها مع هذا الأمر
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
سيؤدي هذا إلى إسقاط قاعدة البيانات وإعادة تشغيل الهجرات والبذور.
تأكد من عمل نسخة احتياطية لأي بيانات تريد الاحتفاظ بها قبل تشغيل هذا الأمر.
</Warning>
## "التقنية المستخدمة"
تستخدم Twenty بشكل أساسي NestJS للواجهة الخلفية.
@@ -755,7 +755,7 @@ export default defineFrontComponent({
});
```
بعد المزامنة باستخدام `yarn twenty dev`، يظهر الإجراء السريع في الزاوية العلوية اليمنى من الصفحة:
بعد المزامنة باستخدام `yarn twenty dev` (أو تشغيل الأمر لمرة واحدة `yarn twenty dev --once`)، يظهر الإجراء السريع في الزاوية العلوية اليمنى من الصفحة:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="زر إجراء سريع في الزاوية العلوية اليمنى" />
@@ -1401,7 +1401,7 @@ export default defineFrontComponent({
### كيف يعمل التجميع
تستخدم خطوة البناء (`yarn twenty dev` أو `yarn twenty build`) أداة esbuild لإنتاج ملف واحد مستقل لكل دالة منطقية وكل مكوّن أمامي. تُضمَّن جميع الحزم المستوردة داخل الحزمة.
تستخدم خطوة البناء أداة esbuild لإنتاج ملف واحد مستقل لكل دالة منطقية ولكل مكوّن أمامي. تُضمَّن جميع الحزم المستوردة داخل الحزمة.
**الدوال المنطقية** تعمل في بيئة Node.js. الوحدات المدمجة في Node (`fs` و`path` و`crypto` و`http` وغيرها) متاحة ولا تحتاج إلى تثبيت.
@@ -98,6 +98,21 @@ yarn twenty dev --verbose
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="مخرجات الطرفية في وضع التطوير" />
</div>
#### مزامنة لمرة واحدة باستخدام `yarn twenty dev --once`
إذا كنت لا تريد تشغيل مُراقِب في الخلفية (على سبيل المثال في خط أنابيب CI، أو git hook، أو سير عمل مكتوب بسكربت)، فمرِّر العلم `--once`. يُشغِّل خط الأنابيب نفسه مثل `yarn twenty dev` — إنشاء بيان البناء، تجميع الملفات، الرفع، المزامنة، إعادة توليد عميل API مضبوط الأنواع — ولكنه **ينهي التنفيذ فور اكتمال المزامنة**:
```bash filename="Terminal"
yarn twenty dev --once
```
| أمر | السلوك | متى يُستخدم |
| ------------------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `yarn twenty dev` | يراقب ملفات المصدر ويعيد المزامنة عند كل تغيير. يستمر بالتشغيل حتى توقفه. | تطوير محلي تفاعلي — تريد لوحة حالة مباشرة وحلقة تغذية راجعة فورية. |
| `yarn twenty dev --once` | يجري عملية بناء واحدة + مزامنة واحدة، ثم ينهي التنفيذ برمز `0` عند النجاح أو `1` عند الفشل. | البرامج النصية، وCI، وpre-commit hooks، ووكلاء الذكاء الاصطناعي، وأي سير عمل غير تفاعلي. |
كلا الوضعين يتطلبان خادم Twenty يعمل في وضع التطوير وجهة بعيدة موثَّقة — تنطبق المتطلبات المسبقة نفسها.
### اعرض تطبيقك في Twenty
افتح [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) في متصفحك. انتقل إلى **Settings > Apps** واختر علامة التبويب **Developer**. يُفترض أن ترى تطبيقك مُدرجًا تحت **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### مشاركة تطبيق منشور
تطبيقات tarball لا تُدرَج في السوق العامة، لذا لن تكتشفها مساحات العمل الأخرى على الخادم نفسه عبر الاستعراض. لمشاركة تطبيق منشور:
<Warning>
تُعد مشاركة التطبيقات الخاصة (tarball) عبر مساحات العمل ميزة ضمن **Enterprise**. ستعرض علامة التبويب **Distribution** مطالبة بالترقية بدلًا من عناصر التحكم في المشاركة حتى تحتوي مساحة العمل لديك على مفتاح Enterprise صالح. اطلع على [الإعدادات > لوحة الإدارة > Enterprise](/settings/admin-panel#enterprise) لتنشيطه.
</Warning>
تطبيقات tarball لا تُدرَج في السوق العامة، لذا لن تكتشفها مساحات العمل الأخرى على الخادم نفسه عبر الاستعراض. بمجرد أن تصبح مساحة العمل لديك ضمن خطة Enterprise، يمكنك مشاركة تطبيق تم نشره كما يلي:
1. اذهب إلى **الإعدادات > التطبيقات > التسجيلات** وافتح تطبيقك
2. في علامة التبويب **التوزيع**، انقر **نسخ رابط المشاركة**
@@ -60,10 +64,6 @@ yarn twenty deploy
يستخدم رابط المشاركة عنوان URL الأساسي للخادم (من دون أي نطاق فرعي لمساحة عمل)، لذا يعمل مع أي مساحة عمل على الخادم.
<Warning>
مشاركة التطبيقات الخاصة هي ميزة ضمن باقة Enterprise. اذهب إلى [الإعدادات > لوحة الإدارة > Enterprise](/settings/admin-panel#enterprise) لتمكينها.
</Warning>
### إدارة الإصدارات
لطرح تحديث:
@@ -50,22 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Pro objekty Pracovní plochy
Nejsou žádné soubory migrací, migrace jsou generovány automaticky pro každou pracovní plochu, uloženy v databázi a aplikovány tímto příkazem
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Tímto se databáze smaže a znovu se spustí migrace a seedování.
Před spuštěním tohoto příkazu si nezapomeňte zálohovat všechna data, která chcete zachovat.
</Warning>
## Technologický stack
Twenty primárně používá NestJS pro backend.
@@ -756,7 +756,7 @@ export default defineFrontComponent({
});
```
Po synchronizaci pomocí `yarn twenty dev` se rychlá akce zobrazí v pravém horním rohu stránky:
Po synchronizaci pomocí `yarn twenty dev` (nebo po jednorázovém spuštění `yarn twenty dev --once`) se rychlá akce zobrazí v pravém horním rohu stránky:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Tlačítko rychlé akce v pravém horním rohu" />
@@ -1402,7 +1402,7 @@ export default defineFrontComponent({
### Jak funguje bundlování
Krok sestavení (`yarn twenty dev` nebo `yarn twenty build`) používá esbuild k vytvoření jediného samostatného souboru pro každou logickou funkci a každou frontendovou komponentu. Všechny importované balíčky jsou vloženy přímo do bundlu.
Krok sestavení používá esbuild k vytvoření jediného samostatného souboru pro každou logickou funkci a každou frontendovou komponentu. Všechny importované balíčky jsou vloženy přímo do bundlu.
**Logické funkce** běží v prostředí Node.js. Vestavěné moduly Node (`fs`, `path`, `crypto`, `http` atd.) jsou k dispozici a není je třeba instalovat.
@@ -98,6 +98,21 @@ Vývojový režim je k dispozici pouze na instancích Twenty běžících v rež
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Výstup terminálu ve vývojovém režimu" />
</div>
#### Jednorázová synchronizace pomocí `yarn twenty dev --once`
Pokud nechcete, aby na pozadí běžel watcher (například v CI pipeline, git hooku nebo skriptovaném workflow), použijte příznak `--once`. Spouští stejnou pipeline jako `yarn twenty dev` — sestaví manifest, zabalí soubory, nahraje, synchronizuje, znovu vygeneruje typovaného klienta API — ale **ukončí se, jakmile se synchronizace dokončí**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Příkaz | Chování | Kdy použít |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| `yarn twenty dev` | Sleduje vaše zdrojové soubory a při každé změně znovu spustí synchronizaci. Zůstává spuštěný, dokud jej nezastavíte. | Interaktivní lokální vývoj — chcete živý panel stavu a okamžitou zpětnou vazbu. |
| `yarn twenty dev --once` | Provede jedno sestavení + synchronizaci, poté ukončí běh s kódem `0` při úspěchu nebo `1` při neúspěchu. | Skripty, CI, pre-commit hooky, AI agenti a jakýkoli neinteraktivní workflow. |
Oba režimy vyžadují server Twenty běžící v režimu vývoje a autentizovaný remote — platí stejné požadavky.
### Zobrazte svou aplikaci v Twenty
Otevřete ve svém prohlížeči [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer). Přejděte do **Settings > Apps** a vyberte kartu **Developer**. Vaše aplikace by měla být uvedena v části **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Sdílení nasazené aplikace
Aplikace ve formě tarball nejsou uvedeny ve veřejném tržišti, takže je ostatní pracovní prostory na tomtéž serveru procházením neobjeví. Chcete-li sdílet nasazenou aplikaci:
<Warning>
Sdílení soukromých (tarball) aplikací napříč pracovními prostory je funkcí **Enterprise**. Karta **Distribution** bude místo ovládacích prvků sdílení zobrazovat výzvu k upgradu, dokud váš pracovní prostor nebude mít platný klíč Enterprise. Přejděte do [Nastavení > Admin Panel > Enterprise](/settings/admin-panel#enterprise) a aktivujte ji.
</Warning>
Aplikace ve formě tarball nejsou uvedeny ve veřejném tržišti, takže je ostatní pracovní prostory na tomtéž serveru procházením neobjeví. Jakmile je váš pracovní prostor na tarifu Enterprise, můžete sdílet nasazenou aplikaci takto:
1. Přejděte do **Nastavení > Aplikace > Registrace** a otevřete svou aplikaci
2. Na kartě **Distribuce** klikněte na **Zkopírovat odkaz ke sdílení**
@@ -60,10 +64,6 @@ Aplikace ve formě tarball nejsou uvedeny ve veřejném tržišti, takže je ost
Odkaz ke sdílení používá základní adresu URL serveru (bez jakékoli subdomény pracovního prostoru), takže funguje pro libovolný pracovní prostor na serveru.
<Warning>
Sdílení soukromých aplikací je funkce Enterprise. Přejděte do [Nastavení > Admin Panel > Enterprise](/settings/admin-panel#enterprise) a povolte ji.
</Warning>
### Správa verzí
Chcete-li vydat aktualizaci:
@@ -50,23 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Für Arbeitsbereichsobjekte
Es gibt keine Migrationsdateien, Migrationen werden automatisch für jeden Arbeitsbereich generiert,
in der Datenbank gespeichert und mit diesem Befehl angewendet
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Dadurch wird die Datenbank gelöscht und die Migrationen sowie das Seeding erneut ausgeführt.
Stellen Sie sicher, dass Sie alle Daten sichern, die Sie aufbewahren möchten, bevor Sie diesen Befehl ausführen.
</Warning>
## Technologie-Stack
Twenty verwendet in erster Linie NestJS für das Backend.
@@ -755,7 +755,7 @@ export default defineFrontComponent({
});
```
Nach dem Synchronisieren mit `yarn twenty dev` erscheint die Schnellaktion oben rechts auf der Seite:
Nach dem Synchronisieren mit `yarn twenty dev` (oder durch einmaliges Ausführen von `yarn twenty dev --once`) erscheint die Schnellaktion oben rechts auf der Seite:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Schnellaktionsschaltfläche oben rechts" />
@@ -1401,7 +1401,7 @@ export default defineFrontComponent({
### Wie das Bundling funktioniert
Der Build-Schritt (`yarn twenty dev` oder `yarn twenty build`) verwendet esbuild, um pro Logikfunktion und pro Frontend-Komponente eine einzelne, in sich geschlossene Datei zu erzeugen. Alle importierten Pakete werden in das Bundle eingebettet.
Der Build-Schritt verwendet esbuild, um pro Logikfunktion und pro Frontend-Komponente eine einzelne, in sich geschlossene Datei zu erzeugen. Alle importierten Pakete werden in das Bundle eingebettet.
**Logikfunktionen** laufen in einer Node.js-Umgebung. Eingebaute Node.js-Module (`fs`, `path`, `crypto`, `http` usw.) stehen zur Verfügung und müssen nicht installiert werden.
@@ -98,6 +98,21 @@ Der Dev-Modus ist nur auf Twenty-Instanzen verfügbar, die im Entwicklungsmodus
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Terminalausgabe im Dev-Modus" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Befehl | Verhalten | When to use |
| ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### Sehen Sie sich Ihre App in Twenty an
Öffnen Sie [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) in Ihrem Browser. Navigieren Sie zu **Settings > Apps** und wählen Sie die Registerkarte **Developer**. Unter **Your Apps** sollte Ihre App aufgeführt sein:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Eine bereitgestellte App freigeben
Tarball-Apps werden nicht im öffentlichen Marktplatz gelistet, daher entdecken andere Arbeitsbereiche auf demselben Server sie nicht durch Stöbern. So geben Sie eine bereitgestellte App frei:
<Warning>
Das Teilen privater (Tarball-)Apps über Arbeitsbereiche hinweg ist eine **Enterprise**-Funktion. Die Registerkarte **Distribution** zeigt anstelle der Freigabeoptionen eine Aufforderung zum Upgrade an, bis Ihr Arbeitsbereich über einen gültigen Enterprise-Schlüssel verfügt. Gehen Sie zu [Einstellungen > Admin-Panel > Enterprise](/settings/admin-panel#enterprise), um es zu aktivieren.
</Warning>
Tarball-Apps werden nicht im öffentlichen Marktplatz gelistet, daher entdecken andere Arbeitsbereiche auf demselben Server sie nicht durch Stöbern. Sobald sich Ihr Arbeitsbereich im Enterprise-Plan befindet, können Sie eine bereitgestellte App wie folgt freigeben:
1. Gehen Sie zu **Einstellungen > Anwendungen > Registrierungen** und öffnen Sie Ihre App
2. Klicken Sie im Tab **Distribution** auf **Freigabelink kopieren**
@@ -60,10 +64,6 @@ Tarball-Apps werden nicht im öffentlichen Marktplatz gelistet, daher entdecken
Der Freigabelink verwendet die Basis-URL des Servers (ohne Workspace-Subdomain), sodass er für jeden Arbeitsbereich auf dem Server funktioniert.
<Warning>
Das Teilen privater Apps ist eine Enterprise-Funktion. Gehen Sie zu [Einstellungen > Admin-Panel > Enterprise](/settings/admin-panel#enterprise), um es zu aktivieren.
</Warning>
### Versionsverwaltung
So veröffentlichen Sie ein Update:
@@ -50,20 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Para objetos de Workspace
No hay archivos de migraciones, las migraciones se generan automáticamente para cada espacio de trabajo, se almacenan en la base de datos y se aplican con este comando
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Esto eliminará la base de datos y volverá a ejecutar las migraciones y semillas.
Asegúrate de respaldar cualquier dato que desees conservar antes de ejecutar este comando.
</Warning>
## Stack Tecnológico
Twenty utiliza principalmente NestJS para el backend.
@@ -372,10 +372,8 @@ Ejecución de los siguientes comandos:
```
yarn database:migrate:prod
yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
El comando `yarn database:migrate:prod` aplicará las migraciones a la base de datos.
El comando `yarn command:prod workspace:sync-metadata -f` sincronizará la definición de objetos estándar a las tablas de metadatos y aplicará las migraciones requeridas a los espacios de trabajo existentes.
El comando `yarn command:prod upgrade-0.22` aplicará transformaciones de datos específicas para adaptarse a las nuevas opciones predeterminadas de instrumentación de solicitud de objetos.
@@ -43,27 +43,6 @@ npx nx run twenty-server:database:reset
```
### Migrations
#### Pour les objets dans les schémas Core/Metadata (TypeORM)
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Pour les objets de l'Espace de travail
Il n'y a pas de fichiers de migrations, les migrations sont générées automatiquement pour chaque espace de travail, stockées dans la base de données et appliquées avec cette commande
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Cela supprimera la base de données et réexécutera les migrations et l'initialisation des données.
Assurez-vous de sauvegarder toutes les données que vous souhaitez conserver avant d'exécuter cette commande.
</Warning>
## Écosystème Tech
Twenty utilise principalement NestJS pour le backend.
@@ -372,10 +372,8 @@ Exécutez les commandes suivantes :
```
yarn database:migrate:prod
yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
La commande `yarn database:migrate:prod` appliquera les migrations à la base de données.
La commande `yarn command:prod workspace:sync-metadata -f` synchronisera la définition des objets standard avec les tables de métadonnées et appliquera les migrations nécessaires aux espaces de travail existants.
La commande `yarn command:prod upgrade-0.22` appliquera des transformations de données spécifiques pour sadapter aux nouvelles `defaultRequestInstrumentationOptions` dobjet.
@@ -50,22 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Per gli oggetti del Workspace
Non ci sono file di migrazioni; le migrazioni sono generate automaticamente per ogni workspace, memorizzate nel database e applicate con questo comando
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Questo eliminerà il database e rieseguirà le migrazioni e il popolamento dei dati.
Assicurati di eseguire il backup dei dati che vuoi mantenere prima di eseguire questo comando.
</Warning>
## Tech Stack
Twenty utilizza principalmente NestJS per il backend.
@@ -755,7 +755,7 @@ export default defineFrontComponent({
});
```
Dopo la sincronizzazione con `yarn twenty dev`, l'azione rapida appare nell'angolo in alto a destra della pagina:
Dopo la sincronizzazione con `yarn twenty dev` (o eseguendo una volta sola `yarn twenty dev --once`), l'azione rapida appare nell'angolo in alto a destra della pagina:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Pulsante di azione rapida nell'angolo in alto a destra" />
@@ -1401,7 +1401,7 @@ export default defineFrontComponent({
### Come funziona il bundling
La fase di build (`yarn twenty dev` o `yarn twenty build`) usa esbuild per produrre un singolo file autonomo per ogni funzione logica e per ogni componente front-end. Tutti i pacchetti importati sono incorporati nel bundle.
La fase di build usa esbuild per produrre un singolo file autonomo per ogni funzione logica e per ogni componente front-end. Tutti i pacchetti importati sono incorporati nel bundle.
**Le funzioni logiche** vengono eseguite in un ambiente Node.js. I moduli integrati di Node (`fs`, `path`, `crypto`, `http`, ecc.) sono disponibili e non necessitano di essere installati.
@@ -98,6 +98,21 @@ La modalità di sviluppo è disponibile solo sulle istanze di Twenty in esecuzio
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Output del terminale in modalità sviluppo" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Comando | Comportamento | When to use |
| ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### Visualizza la tua app in Twenty
Apri [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) nel browser. Vai su **Settings > Apps** e seleziona la scheda **Developer**. Dovresti vedere la tua app elencata in **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Condivisione di un'app distribuita
Le app in formato tarball non sono elencate nel marketplace pubblico, quindi altri spazi di lavoro sullo stesso server non le troveranno navigando. Per condividere un'app distribuita:
<Warning>
La condivisione di app private (tarball) tra spazi di lavoro è una funzionalità **Enterprise**. La scheda **Distribution** mostrerà un invito all'aggiornamento al posto dei controlli di condivisione finché il tuo spazio di lavoro non dispone di una chiave Enterprise valida. Vedi [Impostazioni > Pannello di amministrazione > Enterprise](/settings/admin-panel#enterprise) per attivarla.
</Warning>
Le app in formato tarball non sono elencate nel marketplace pubblico, quindi altri spazi di lavoro sullo stesso server non le troveranno navigando. Una volta che il tuo spazio di lavoro è sul piano Enterprise, puoi condividere un'app distribuita in questo modo:
1. Vai su **Impostazioni > Applicazioni > Registrazioni** e apri la tua app
2. Nella scheda **Distribuzione**, fai clic su **Copia link di condivisione**
@@ -60,10 +64,6 @@ Le app in formato tarball non sono elencate nel marketplace pubblico, quindi alt
Il link di condivisione utilizza l'URL di base del server (senza alcun sottodominio dello spazio di lavoro) così funziona per qualsiasi spazio di lavoro sul server.
<Warning>
La condivisione delle app private è una funzionalità Enterprise. Vai a [Impostazioni > Pannello di amministrazione > Enterprise](/settings/admin-panel#enterprise) per abilitarla.
</Warning>
### Gestione delle versioni
Per rilasciare un aggiornamento:
@@ -48,28 +48,6 @@ npx nx run twenty-server:database:reset
```
### マイグレーション
#### Core/Metadata スキーマ (TypeORM) のオブジェクトに対して
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### ワークスペースオブジェクトに対して
マイグレーションファイルはなく、それぞれのワークスペースに対して自動的に生成され、
データベースに保存され、このコマンドで適用されます。
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
これによりデータベースが削除され、マイグレーションとシードが再実行されます。
このコマンドを実行する前に、保持したいデータをバックアップしてください。
</Warning>
## 技術スタック
Twenty は主にバックエンドに NestJS を使用しています。
@@ -270,7 +270,6 @@ yarn command:prod upgrade-0.33
`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
`yarn command:prod upgrade-0.33` はすべてのワークスペースのデータ移行を行います。
`yarn database:migrate:prod` コマンドはデータベースへの移行を適用します。
"`yarn command:prod workspace:sync-metadata -f` コマンドは、標準オブジェクトの定義をメタデータテーブルに同期し、既存のワークスペースに必要な移行を適用します。"
The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
このバージョンから、DB用のtwenty-postgresイメージは廃止され、twenty-postgres-spiloが代わりに使用されるようになりました。
@@ -389,11 +388,9 @@ Twentyインスタンスをv0.22.0イメージにアップグレードします
```
yarn database:migrate:prod
yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
`yarn database:migrate:prod` コマンドはデータベースへの移行を適用します。
`yarn command:prod upgrade-0.23` は、アクティビティをタスク/ノートに移行するなど、データ移行を担当します。
"`yarn command:prod workspace:sync-metadata -f` コマンドは、標準オブジェクトの定義をメタデータテーブルに同期し、既存のワークスペースに必要な移行を適用します。"
`yarn command:prod upgrade-0.22` コマンドは、新しいオブジェクトの defaultRequestInstrumentationOptions に適合させるため、特定のデータ変換を適用します。
@@ -43,27 +43,6 @@ npx nx run twenty-server:database:reset
```
### 마이그레이션
#### Core/Metadata 스키마의 객체용 (TypeORM)
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### 워크스페이스 객체용
마이그레이션 파일이 없으며, 각 작업 공간에 대해 자동 생성되고 데이터베이스에 저장되어 이 명령으로 적용됩니다.
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
이 작업은 데이터베이스를 삭제하고 마이그레이션과 시드를 다시 실행합니다.
이 명령을 실행하기 전에 유지하고 싶은 데이터를 백업하십시오.
</Warning>
## 기술 스택
Twenty는 주로 NestJS를 백엔드에 사용합니다.
@@ -365,10 +365,8 @@ Twenty 인스턴스를 v0.22.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
`yarn database:migrate:prod` 명령은 데이터베이스에 마이그레이션을 적용합니다.
`yarn command:prod workspace:sync-metadata -f` 명령은 표준 객체의 정의를 메타데이터 테이블에 동기화하고 기존 워크스페이스에 필요한 마이그레이션을 적용합니다.
`yarn command:prod upgrade-0.22` 명령은 새 객체 defaultRequestInstrumentationOptions에 적응하기 위한 특정 데이터 변환을 적용합니다.
@@ -50,22 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### For Workspace objects
Não há arquivos de migração, as migrações são geradas automaticamente para cada espaço de trabalho, armazenadas no banco de dados e aplicadas com este comando
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Isso excluirá o banco de dados e reexecutará as migrações e seeds.
Certifique-se de fazer backup de todos os dados que deseja manter antes de executar este comando.
</Warning>
## Pilha de Tecnologias
O Twenty usa principalmente NestJS para o backend.
@@ -755,7 +755,7 @@ export default defineFrontComponent({
});
```
Após sincronizar com `yarn twenty dev`, a ação rápida aparece no canto superior direito da página:
Após sincronizar com `yarn twenty dev` (ou executando uma única vez o `yarn twenty dev --once`), a ação rápida aparece no canto superior direito da página:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Botão de ação rápida no canto superior direito" />
@@ -1401,7 +1401,7 @@ export default defineFrontComponent({
### Como o empacotamento funciona
A etapa de build (`yarn twenty dev` ou `yarn twenty build`) usa o esbuild para produzir um único arquivo independente por função lógica e por componente de front-end. Todos os pacotes importados são incorporados ao bundle.
A etapa de build usa o esbuild para produzir um único arquivo independente por função lógica e por componente de front-end. Todos os pacotes importados são incorporados ao bundle.
**Funções lógicas** são executadas em um ambiente Node.js. Módulos nativos do Node (`fs`, `path`, `crypto`, `http`, etc.) estão disponíveis e não precisam ser instalados.
@@ -98,6 +98,21 @@ O modo de desenvolvimento só está disponível em instâncias do Twenty em modo
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Saída do terminal no modo de desenvolvimento" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Comando | Comportamento | When to use |
| ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### Veja seu aplicativo no Twenty
Abra [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) no seu navegador. Navegue até **Settings > Apps** e selecione a aba **Developer**. Você deverá ver seu aplicativo listado em **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Compartilhando um aplicativo implantado
Aplicativos em tarball não são listados no marketplace público, então outros espaços de trabalho no mesmo servidor não os descobrirão ao navegar. Para compartilhar um aplicativo implantado:
<Warning>
Compartilhar aplicativos privados (tarball) entre espaços de trabalho é um recurso do plano **Enterprise**. A guia **Distribution** exibirá um aviso de atualização em vez dos controles de compartilhamento até que seu espaço de trabalho tenha uma chave Enterprise válida. Vá para [Configurações > Painel de Administração > Enterprise](/settings/admin-panel#enterprise) para ativá-lo.
</Warning>
Aplicativos em tarball não são listados no marketplace público, então outros espaços de trabalho no mesmo servidor não os descobrirão ao navegar. Assim que o seu espaço de trabalho estiver no plano Enterprise, você pode compartilhar um app implantado desta forma:
1. Vá para **Configurações > Aplicações > Registros** e abra seu aplicativo
2. Na guia **Distribuição**, clique em **Copiar link de compartilhamento**
@@ -60,10 +64,6 @@ Aplicativos em tarball não são listados no marketplace público, então outros
O link de compartilhamento usa a URL base do servidor (sem qualquer subdomínio de espaço de trabalho), para funcionar em qualquer espaço de trabalho no servidor.
<Warning>
Compartilhar apps privados é um recurso do plano Enterprise. Vá para [Configurações > Painel de Administração > Enterprise](/settings/admin-panel#enterprise) para ativá-lo.
</Warning>
### Gerenciamento de versões
Para lançar uma atualização:
@@ -50,23 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Pentru obiectele din Workspace
Nu există fișiere de migrație, migrația este generată automat pentru fiecare spațiu de lucru,
este stocată în baza de date și aplicată cu această comandă
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Acest lucru va elimina baza de date și va relansa migrațiile și seed-urile.
Asigură-te că faci un backup pentru orice date pe care dorești să le păstrezi înainte de a rula această comandă.
</Warning>
## Tehnologii Utilizate
Twenty folosește în principal NestJS pentru backend.
@@ -756,7 +756,7 @@ export default defineFrontComponent({
});
```
După sincronizarea cu `yarn twenty dev`, acțiunea rapidă apare în colțul din dreapta sus al paginii:
După sincronizarea cu `yarn twenty dev` (sau prin rularea o singură dată a comenzii `yarn twenty dev --once`), acțiunea rapidă apare în colțul din dreapta sus al paginii:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Buton de acțiune rapidă în colțul din dreapta sus" />
@@ -1402,7 +1402,7 @@ export default defineFrontComponent({
### Cum funcționează împachetarea
Pasul de build (`yarn twenty dev` sau `yarn twenty build`) folosește esbuild pentru a produce un singur fișier autonom per funcție logică și per componentă frontend. Toate pachetele importate sunt integrate în bundle.
Pasul de build folosește esbuild pentru a produce un singur fișier autonom pentru fiecare funcție logică și pentru fiecare componentă frontend. Toate pachetele importate sunt integrate în bundle.
**Funcțiile logice** rulează într-un mediu Node.js. Modulele built-in Node (`fs`, `path`, `crypto`, `http` etc.) sunt disponibile și nu trebuie instalate.
@@ -98,6 +98,21 @@ Modul de dezvoltare este disponibil doar pe instanțele Twenty care rulează în
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Ieșirea terminalului în modul de dezvoltare" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Comandă | Comportament | When to use |
| ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### Vedeți aplicația în Twenty
Deschideți [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) în browser. Navigați la **Settings > Apps** și selectați fila **Developer**. Ar trebui să vedeți aplicația listată la **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Partajarea unei aplicații implementate
Aplicațiile tarball nu sunt listate în marketplace-ul public, astfel încât alte spații de lucru de pe același server nu le vor descoperi prin navigare. Pentru a partaja o aplicație implementată:
<Warning>
Partajarea aplicațiilor private (tarball) între spații de lucru este o funcționalitate **Enterprise**. Fila **Distribution** va afișa un mesaj de actualizare în locul controalelor de partajare până când spațiul tău de lucru are o cheie Enterprise validă. Mergi la [Setări > Panou de administrare > Enterprise](/settings/admin-panel#enterprise) pentru a o activa.
</Warning>
Aplicațiile tarball nu sunt listate în marketplace-ul public, astfel încât alte spații de lucru de pe același server nu le vor descoperi prin navigare. După ce spațiul tău de lucru este pe planul Enterprise, poți partaja o aplicație implementată astfel:
1. Mergi la **Setări > Aplicații > Înregistrări** și deschide aplicația ta
2. În fila **Distribuție**, fă clic pe **Copiază linkul de partajare**
@@ -60,10 +64,6 @@ Aplicațiile tarball nu sunt listate în marketplace-ul public, astfel încât a
Linkul de partajare folosește URL-ul de bază al serverului (fără niciun subdomeniu de spațiu de lucru), astfel încât funcționează pentru orice spațiu de lucru de pe server.
<Warning>
Partajarea aplicațiilor private este o funcționalitate Enterprise. Mergi la [Setări > Panou de administrare > Enterprise](/settings/admin-panel#enterprise) pentru a o activa.
</Warning>
### Gestionarea versiunilor
Pentru a lansa o actualizare:
@@ -50,23 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Для объектов Рабочего пространства
Файлов миграций нет, миграции создаются автоматически для каждого рабочего пространства,
хранятся в базе данных и применяются этой командой
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Это удалит базу данных, переустановит миграции и семена.
Убедитесь, что создали резервную копию данных, которые хотите сохранить, прежде чем выполнять эту команду.
</Warning>
## Технологический стек
Для работы с серверной частью Twenty в основном использует NestJS.
@@ -755,7 +755,7 @@ export default defineFrontComponent({
});
```
После синхронизации с помощью `yarn twenty dev` быстрое действие появится в правом верхнем углу страницы:
После синхронизации с помощью `yarn twenty dev` (или однократного запуска `yarn twenty dev --once`) быстрое действие появится в правом верхнем углу страницы:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Кнопка быстрого действия в правом верхнем углу" />
@@ -1401,7 +1401,7 @@ export default defineFrontComponent({
### Как работает бандлинг
Этап сборки (`yarn twenty dev` или `yarn twenty build`) использует esbuild для создания одного самодостаточного файла на каждую логическую функцию и на каждый компонент фронтенда. Все импортированные пакеты встроены в бандл.
Этап сборки использует esbuild для создания одного самодостаточного файла на каждую логическую функцию и на каждый компонент фронтенда. Все импортированные пакеты встроены в бандл.
**Логические функции** выполняются в среде Node.js. Встроенные модули Node (`fs`, `path`, `crypto`, `http` и т. д.) доступны и не требуют установки.
@@ -98,6 +98,21 @@ yarn twenty dev --verbose
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Вывод терминала в режиме разработки" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Команда | Поведение | When to use |
| ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### Посмотрите своё приложение в Twenty
Откройте [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) в браузере. Перейдите в **Settings > Apps** и выберите вкладку **Developer**. Вы должны увидеть своё приложение в разделе **Your Apps**:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Общий доступ к развернутому приложению
Приложения в формате tarball не отображаются в публичном маркетплейсе, поэтому другие рабочие пространства на том же сервере не найдут их при просмотре. Чтобы поделиться развернутым приложением:
<Warning>
Совместный доступ к частным приложениям (tarball) между рабочими пространствами — функция уровня **Enterprise**. Вкладка **Distribution** будет показывать предложение обновиться вместо элементов управления совместным доступом, пока в вашем рабочем пространстве не будет действительного ключа Enterprise. Перейдите в [Настройки > Панель администратора > Enterprise](/settings/admin-panel#enterprise), чтобы включить её.
</Warning>
Приложения в формате tarball не отображаются в публичном маркетплейсе, поэтому другие рабочие пространства на том же сервере не найдут их при просмотре. Как только ваше рабочее пространство перейдёт на тарифный план Enterprise, вы сможете поделиться развёрнутым приложением следующим образом:
1. Перейдите в **Настройки > Приложения > Регистрации** и откройте ваше приложение
2. На вкладке **Распространение** нажмите **Копировать ссылку для общего доступа**
@@ -60,10 +64,6 @@ yarn twenty deploy
Ссылка общего доступа использует базовый URL сервера (без какого-либо поддомена рабочего пространства), поэтому она работает для любого рабочего пространства на сервере.
<Warning>
Возможность делиться частными приложениями — функция Enterprise. Перейдите в [Настройки > Панель администратора > Enterprise](/settings/admin-panel#enterprise), чтобы включить её.
</Warning>
### Управление версиями
Чтобы выпустить обновление:
@@ -50,23 +50,6 @@ npx nx run twenty-server:database:reset
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### Çalışma Alanı Nesneleri İçin
Çalışma alanı için geçiş dosyaları yoktur; her çalışma alanı için otomatik olarak oluşturulur,
veritabanında depolanır ve bu komut ile uygulanır.
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
Bu işlem veritabanını siler, migrasyonları ve tohumlamayı yeniden çalıştırır.
Bu komutu çalıştırmadan önce saklamak istediğiniz verileri yedeklediğinizden emin olun.
</Warning>
## Teknoloji Yığını
Twenty, arka uç için öncelikle NestJS kullanır.
@@ -756,7 +756,7 @@ export default defineFrontComponent({
});
```
`yarn twenty dev` ile senkronize ettikten sonra, hızlı işlem sayfanın sağ üst köşesinde görünür:
`yarn twenty dev` ile senkronize ettikten sonra (veya tek seferlik bir `yarn twenty dev --once` çalıştırdıktan sonra), hızlı işlem sayfanın sağ üst köşesinde görünür:
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/quick-action.png" alt="Sağ üst köşedeki hızlı işlem düğmesi" />
@@ -1402,7 +1402,7 @@ export default defineFrontComponent({
### Paketleme nasıl çalışır
Derleme adımı (`yarn twenty dev` veya `yarn twenty build`), her mantık işlevi ve her ön uç bileşeni için tek bir bağımsız dosya üretmek üzere esbuild kullanır. Tüm içe aktarılan paketler pakete satır içi eklenir.
Derleme adımı, her mantık işlevi ve her ön uç bileşeni için tek bir bağımsız dosya üretmek üzere esbuild kullanır. Tüm içe aktarılan paketler pakete satır içi eklenir.
**Mantık işlevleri**, Node.js ortamında çalışır. Node yerleşik modülleri (`fs`, `path`, `crypto`, `http` vb.) kullanılabilir ve kurulmaları gerekmez.
@@ -98,6 +98,21 @@ Geliştirme modu yalnızca geliştirme ortamında (`NODE_ENV=development`) çal
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Geliştirme modu terminal çıktısı" />
</div>
#### One-shot sync with `yarn twenty dev --once`
If you do not want a watcher running in the background (for example in a CI pipeline, a git hook, or a scripted workflow), pass the `--once` flag. It runs the same pipeline as `yarn twenty dev` — build manifest, bundle files, upload, sync, regenerate the typed API client — but **exits as soon as the sync completes**:
```bash filename="Terminal"
yarn twenty dev --once
```
| Komut | Davranış | When to use |
| ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `yarn twenty dev` | Watches your source files and re-syncs on every change. Keeps running until you stop it. | Interactive local development — you want the live status panel and instant feedback loop. |
| `yarn twenty dev --once` | Performs a single build + sync, then exits with code `0` on success or `1` on failure. | Scripts, CI, pre-commit hooks, AI agents, and any non-interactive workflow. |
Both modes require a Twenty server running in development mode and an authenticated remote — the same prerequisites apply.
### Uygulamanızı Twenty'de görün
Tarayıcınızda [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer) adresini açın. **Settings > Apps** bölümüne gidin ve **Developer** sekmesini seçin. **Your Apps** altında uygulamanızın listelendiğini görmelisiniz:
@@ -52,7 +52,11 @@ yarn twenty deploy
### Dağıtılmış bir uygulamayı paylaşma
Tarball uygulamaları genel pazar yerinde listelenmez; bu nedenle aynı sunucudaki diğer çalışma alanları gezinerek onları keşfedemez. Dağıtılmış bir uygulamayı paylaşmak için:
<Warning>
Özel (tarball) uygulamaları çalışma alanları arasında paylaşma bir **Kurumsal** özelliktir. **Dağıtım** sekmesi, çalışma alanınız geçerli bir Kurumsal anahtara sahip olana kadar paylaşım kontrolleri yerine bir yükseltme istemi gösterecektir. Etkinleştirmek için [Ayarlar > Yönetim Paneli > Kurumsal](/settings/admin-panel#enterprise) bölümüne gidin.
</Warning>
Tarball uygulamaları genel pazar yerinde listelenmez; bu nedenle aynı sunucudaki diğer çalışma alanları gezinerek onları keşfedemez. Çalışma alanınız Kurumsal planda olduğunda, yayınlanmış bir uygulamayı şu şekilde paylaşabilirsiniz:
1. **Ayarlar > Uygulamalar > Kayıtlar** bölümüne gidin ve uygulamanızı açın
2. **Dağıtım** sekmesinde, **Paylaşım bağlantısını kopyala**ya tıklayın
@@ -60,10 +64,6 @@ Tarball uygulamaları genel pazar yerinde listelenmez; bu nedenle aynı sunucuda
Paylaşım bağlantısı, sunucunun temel URLsini (herhangi bir çalışma alanı alt alan adı olmadan) kullanır; böylece sunucudaki herhangi bir çalışma alanı için çalışır.
<Warning>
Özel uygulamaları paylaşma bir Kurumsal özelliktir. [Ayarlar > Yönetim Paneli > Kurumsal](/settings/admin-panel#enterprise) bölümüne giderek etkinleştirin.
</Warning>
### Sürüm yönetimi
Bir güncelleme yayımlamak için:
@@ -43,30 +43,6 @@ npx nx run twenty-server:database:reset
```
### 迁移
#### 适用于 Core/Metadata 模式中的对象 (TypeORM)
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
#### 用于工作区对象
没有迁移文件,每个工作区的迁移都是自动生成的,
储存在数据库中,并通过该命令应用
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
<Warning>
这将删除数据库,并重新运行迁移和预置数据。
在运行此命令之前,请确保备份任何想要保留的数据。
</Warning>
## 技术栈
Twenty 主要使用 NestJS 作为后端。
@@ -372,10 +372,8 @@ yarn command:prod upgrade-0.23
```
yarn database:migrate:prod
yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
`yarn database:migrate:prod` 命令将迁移应用于数据库。
该 `yarn command:prod workspace:sync-metadata -f` 命令将把标准对象的定义同步到元数据表,并将所需的迁移应用到现有工作区。
该 `yarn command:prod upgrade-0.22` 命令将应用特定的数据转换,以适配新的对象 defaultRequestInstrumentationOptions。
File diff suppressed because one or more lines are too long
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} geselekteer"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} velde"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} sal ontkoppel word van die volgende rol:"
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} tokens"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Voeg widget by"
msgid "Add Widget"
msgstr "Voeg widget by"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "'n Fout het voorgekom tydens die oplaai van die prent."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Toepassing suksesvol opgegradeer."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "Captcha (anti-bot greep) laai steeds, probeer weer"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Verander na jaarliks?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Grafiek"
@@ -4251,14 +4262,14 @@ msgstr "Paneelbord suksesvol gedupliseer"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Data"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Data en vertoon"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Verwyder webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Verwyder widget"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Vertoon"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Wys die \"Meer velde\"-knoppie"
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Wysig veldwaardes"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Wysig velde"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Wysig vouer"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Wysig grafiek"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Wysig iFrame"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr ""
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Wysig Rekordtabel"
@@ -6628,8 +6639,9 @@ msgstr "veld"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "velde"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Lêers"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Front-end-komponente"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Front-end-komponente"
@@ -7002,11 +7016,6 @@ msgstr "Volle toegang"
msgid "Function name"
msgstr "Funksienaam"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Funksies"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "As jy hierdie sleutel verloor het, kan jy dit regenereer, maar wees bewus dat enige skrip wat hierdie sleutel gebruik, opgedateer sal moet word. Tik asseblief \"{confirmationValue}\" in om te bevestig."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Begin handmatig"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Logbewaring"
msgid "Logged in as {impersonatedUser}"
msgstr "Aangemeld as {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Weergawe met die meeste installasies"
msgid "Move down"
msgstr "Skuif af"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Skuif regs"
msgid "Move to a folder"
msgstr "Skuif na 'n vouer"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "Skuif na vouer"
msgid "Move up"
msgstr "Skuif op"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Nuwe webhaak"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "Geen toepassings beskikbaar nie"
msgid "No available fields to select"
msgstr "Geen beskikbare velde om te kies nie"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Plekhouer"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Gaan asseblief jou e-pos na vir 'n verifikasierskakel."
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Voer 'n geldige URL in"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Lees jou profiel"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Leesalleen — bestuur deur Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Rekord Seleksie"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Rekordtabel"
@@ -11799,6 +11841,11 @@ msgstr "Hersorteer veld"
msgid "Reorder options"
msgstr "Herskik opsies"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "Stuur e-pos weer"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Stel terug"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Herroep vir hierdie voorwerp"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Funksie word uitgevoer"
msgid "Running..."
msgstr "Word uitgevoer..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Looptyd"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Soek kleure"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Soek kleure..."
@@ -13237,7 +13282,7 @@ msgstr "Jammer, iets het verkeerd geloop"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "Sorterings"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr ""
msgid "System Prompt"
msgstr "Stelsel Prompt"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Stelselprompt ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14210,6 +14250,11 @@ msgstr ""
msgid "This week"
msgstr "Hierdie week"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14481,6 +14526,7 @@ msgstr "Probeer tydperk het verstryk. Werk asseblief u faktureringsbesonderhede
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Aansitter"
@@ -14866,7 +14912,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "Naamlose iFrame"
@@ -14981,6 +15027,11 @@ msgstr "Opgradeer vir toegang"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15042,7 +15093,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL om in te voeg"
@@ -15417,7 +15468,6 @@ msgstr "Bekyk logboeke"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Bekyk markplekbladsy"
@@ -15431,6 +15481,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Sien Vorige KI-kletse"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15732,7 +15787,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Widget tipe"
@@ -15820,7 +15876,6 @@ msgstr "Werksvloeie"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "تم تحديد {totalCount}"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} حقول"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} سيتم إلغاء تعيينه من الدور
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} رموز"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "إضافة عنصر واجهة المستخدم"
msgid "Add Widget"
msgstr "إضافة عنصر واجهة"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "حدث خطأ أثناء تحميل الصورة."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "تمت ترقية التطبيق بنجاح."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "كود التحقق (Captcha) لا يزال يتم تحميله، حاول مجددًا"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "التغيير إلى سنوي؟"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "الرسم البياني"
@@ -4251,14 +4262,14 @@ msgstr "تم تكرار لوحة القيادة بنجاح"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "بيانات"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "البيانات والعرض"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "حذف Webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "حذف الأداة"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "عرض"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "إظهار زر \"مزيد من الحقول\""
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "تحرير قيم الحقل"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "تحرير الحقول"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "تحرير المجلد"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "تحرير الرسم البياني"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "تعديل الإطار المضمّن"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr ""
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "تحرير جدول السجلات"
@@ -6628,8 +6639,9 @@ msgstr "الحقل"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "حقول"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "ملفات"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "المكوّنات الأمامية"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "المكوّنات الأمامية"
@@ -7002,11 +7016,6 @@ msgstr "وصول كامل"
msgid "Function name"
msgstr "اسم الوظيفة"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "الوظائف"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "إذا كنت قد فقدت هذا المفتاح، يمكنك توليده مرة أخرى، ولكن كن على دراية أن أي سكربت يستخدم هذا المفتاح سيحتاج إلى تحديث. الرجاء كتابة \"{confirmationValue}\" للتأكيد."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "التشغيل يدويًا"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "الاحتفاظ بالسجلات"
msgid "Logged in as {impersonatedUser}"
msgstr "تسجيل الدخول كــ {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "الإصدار الأكثر تثبيتًا"
msgid "Move down"
msgstr "نقل لأسفل"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "نقل إلى اليمين"
msgid "Move to a folder"
msgstr "نقل إلى مجلد"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "نقل إلى مجلد"
msgid "Move up"
msgstr "نقل لأعلى"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Webhook جديد"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "لا توجد تطبيقات متاحة"
msgid "No available fields to select"
msgstr "لا توجد حقول متاحة للاختيار"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "نص توضيحي"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "يرجى التحقق من بريدك الإلكتروني لوجود ر
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "الرجاء إدخال عنوان URL صحيح"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "قراءة ملفك الشخصي"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "للقراءة فقط — تُدار بواسطة Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "\\\\"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "جدول السجلات"
@@ -11799,6 +11841,11 @@ msgstr "إعادة ترتيب الحقل"
msgid "Reorder options"
msgstr "إعادة ترتيب الخيارات"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "إعادة إرسال البريد الإلكتروني"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "إعادة تعيين"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "ملغى لهذا الكائن"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "الدالة قيد التشغيل"
msgid "Running..."
msgstr "جارٍ التنفيذ..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "وقت التشغيل"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "ابحث عن الألوان"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "ابحث عن الألوان..."
@@ -13237,7 +13282,7 @@ msgstr "عذرًا، حدث خطأ ما"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "معايير الترتيب"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr ""
msgid "System Prompt"
msgstr "أمر النظام"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "موجّه النظام ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14210,6 +14250,11 @@ msgstr ""
msgid "This week"
msgstr "هذا الأسبوع"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14481,6 +14526,7 @@ msgstr "انتهت الفترة التجريبية. يرجى تحديث تفاص
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "تحفيز"
@@ -14866,7 +14912,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "iFrame بدون عنوان"
@@ -14981,6 +15027,11 @@ msgstr "الترقية للوصول"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15042,7 +15093,7 @@ msgid "URL"
msgstr "عنوان URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "رابط لتضمين"
@@ -15417,7 +15468,6 @@ msgstr "عرض السجلات"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "عرض صفحة سوق التطبيقات"
@@ -15431,6 +15481,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "عرض الذكاءات الاصطناعية السابقة"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15730,7 +15785,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "نوع الأداة"
@@ -15818,7 +15874,6 @@ msgstr "سير العمل"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} seleccionats"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} camps"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} serà desassignat del següent rol:"
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} tokens"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Afegeix widget"
msgid "Add Widget"
msgstr "Afegeix giny"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "S'ha produït un error en carregar la imatge."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Aplicació actualitzada correctament."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "El CAPTCHA (verificació anti-bot) encara s'està carregant, torni a intentar-ho"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Canviar a anual?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Gràfic"
@@ -4251,14 +4262,14 @@ msgstr "Quadre de comandament duplicat correctament"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Dades"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Dades i visualització"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Esborrar webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Elimina el giny"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Mostra"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Mostrar el botó \"Més camps\""
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Edita valors dels camps"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Edita camps"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Edita la carpeta"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Edita gràfic"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Edita iframe"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr ""
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Editar la taula de registres"
@@ -6628,8 +6639,9 @@ msgstr "camp"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "camps"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Arxius"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Components frontals"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Components frontals"
@@ -7002,11 +7016,6 @@ msgstr "Accés complet"
msgid "Function name"
msgstr "Nom de la funció"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Funcions"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "Si has perdut aquesta clau, pots regenerar-la, però tingues en compte que qualsevol script que utilitzi aquesta clau haurà de ser actualitzat. Si us plau, escriu \"{confirmationValue}\" per confirmar."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Llança manualment"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Retenció de registres"
msgid "Logged in as {impersonatedUser}"
msgstr "Iniciat com {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Versió més instal·lada"
msgid "Move down"
msgstr "Mou cap avall"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Moure a la dreta"
msgid "Move to a folder"
msgstr "Mou a una carpeta"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "Mou a una carpeta"
msgid "Move up"
msgstr "Mou cap amunt"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Webhook nou"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "No hi ha aplicacions disponibles"
msgid "No available fields to select"
msgstr "No hi ha camps disponibles per seleccionar"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Marcador de posició"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Si us plau, comprova el teu correu electrònic per obtenir un enllaç de
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Si us plau, introdueix una URL vàlida"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Llegir el teu perfil"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Només de lectura — gestionat per Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Selecció d'enregistrament"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Taula de registres"
@@ -11799,6 +11841,11 @@ msgstr "Reordena camp"
msgid "Reorder options"
msgstr ""
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "Reenviar correu electrònic"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Restableix"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Revocat per aquest objecte"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Funció en execució"
msgid "Running..."
msgstr "S'està executant..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Entorn d'execució"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Cerca colors"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Cerca colors..."
@@ -13237,7 +13282,7 @@ msgstr "Ho sentim, alguna cosa ha anat malament"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "Criteris d'ordenació"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr ""
msgid "System Prompt"
msgstr "Indicador del Sistema"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Prompt del sistema ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14210,6 +14250,11 @@ msgstr ""
msgid "This week"
msgstr "Aquesta setmana"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14481,6 +14526,7 @@ msgstr "Prova finalitzada. Si us plau, actualitza les teves dades de facturació
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Activador"
@@ -14866,7 +14912,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "iFrame sense títol"
@@ -14981,6 +15027,11 @@ msgstr "Actualitza per accedir"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15042,7 +15093,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL per incrustar"
@@ -15417,7 +15468,6 @@ msgstr "Veure registres"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Veure la pàgina del Marketplace"
@@ -15431,6 +15481,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Veure els xats d'IA anteriors"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15732,7 +15787,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Tipus de widget"
@@ -15820,7 +15876,6 @@ msgstr "Fluxos de treball"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} vybráno"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount, plural, one {# pole} few {# pole} many {# polí} other {# polí}}"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} bude odebrán z následující role:"
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} tokenů"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Přidat widget"
msgid "Add Widget"
msgstr "Přidat widget"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "Při nahrávání obrázku došlo k chybě."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Aplikace byla úspěšně aktualizována."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "Captcha (kontrola proti botům) se stále načítá, zkuste to znovu"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Změnit na roční?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Graf"
@@ -4251,14 +4262,14 @@ msgstr "Ovládací panel byl úspěšně duplikován"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Data"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Data a zobrazení"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Smazat Webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Odstranit widget"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Zobrazit"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Zobrazit tlačítko \"Více polí\""
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Upravit hodnoty polí"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Upravit pole"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Upravit složku"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Upravit graf"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Upravit iFrame"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr ""
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Upravit tabulku záznamů"
@@ -6628,8 +6639,9 @@ msgstr "pole"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "pole"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Soubory"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Frontendové komponenty"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Frontendové komponenty"
@@ -7002,11 +7016,6 @@ msgstr "Plný přístup"
msgid "Function name"
msgstr "Název funkce"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Funkce"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "Pokud jste ztratili tento klíč, můžete jej obnovit, ale mějte na paměti, že všechny skripty používající tento klíč bude potřeba aktualizovat. Prosím, napište \"<b>{confirmationValue}</b>\" pro potvrzení."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Spustit ručně"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Uchovávání protokolů"
msgid "Logged in as {impersonatedUser}"
msgstr "Přihlášen jako {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Nejčastěji instalovaná verze"
msgid "Move down"
msgstr "Přesunout dolů"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Posunout doprava"
msgid "Move to a folder"
msgstr "Přesunout do složky"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "Přesunout do složky"
msgid "Move up"
msgstr "Přesunout nahoru"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Nový Webhook"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "Žádné aplikace nejsou k dispozici"
msgid "No available fields to select"
msgstr "Žádná dostupná pole k výběru"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Zástupný text"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Zkontrolujte prosím svůj e-mail a klikněte na ověřovací odkaz."
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Prosím zadejte platnou URL"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Čtení vašeho profilu"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Jen pro čtení — spravováno Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Výběr záznamů"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Tabulka záznamů"
@@ -11799,6 +11841,11 @@ msgstr "Přesunout pole"
msgid "Reorder options"
msgstr "Změnit pořadí možností"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "Znovu odeslat e-mail"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Obnovit"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Zrušeno pro tento objekt"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Spouští se funkce"
msgid "Running..."
msgstr "Běží..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Runtime"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Hledat barvy"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Hledat barvy..."
@@ -13237,7 +13282,7 @@ msgstr "Omlouváme se, něco se pokazilo"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "Řazení"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr ""
msgid "System Prompt"
msgstr "Systémová výzva"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Systémový prompt ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14210,6 +14250,11 @@ msgstr ""
msgid "This week"
msgstr "Tento týden"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14481,6 +14526,7 @@ msgstr "Zkušební verze vypršela. Prosím, aktualizujte své fakturační úda
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Spustit"
@@ -14866,7 +14912,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "Nepojmenované iFrame"
@@ -14981,6 +15027,11 @@ msgstr "Přejděte na vyšší verzi pro přístup"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15042,7 +15093,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL pro vložení"
@@ -15417,7 +15468,6 @@ msgstr "Zobrazit protokoly"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Zobrazit stránku na Marketplace"
@@ -15431,6 +15481,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Zobrazit předchozí AI diskuse"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15732,7 +15787,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Typ widgetu"
@@ -15820,7 +15876,6 @@ msgstr "Pracovní postupy"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} valgt"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} felter"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} vil blive fjernet fra følgende rolle:"
msgid "••••••••"
msgstr ""
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} tokens"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Tilføj widget"
msgid "Add Widget"
msgstr "Tilføj widget"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "Der opstod en fejl under upload af billedet."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Applikationen blev opgraderet med succes."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "Captcha (anti-bot kontrol) indlæses stadig, prøv igen"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Skift til Årlig?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Diagram"
@@ -4251,14 +4262,14 @@ msgstr "Dashboard duplikeret med succes"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Data"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Data og visning"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Slet webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Slet widget"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Vis"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Vis \"Flere felter\"-knappen"
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Rediger feltværdier"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Rediger felter"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Rediger mappe"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Rediger diagram"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Rediger iFrame"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr ""
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Rediger posttabel"
@@ -6628,8 +6639,9 @@ msgstr "felt"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "felter"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Filer"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Frontkomponenter"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Frontkomponenter"
@@ -7002,11 +7016,6 @@ msgstr "Fuld adgang"
msgid "Function name"
msgstr "Funktionsnavn"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Funktioner"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "Hvis du har mistet denne nøgle, kan du generere den igen, men vær opmærksom på, at alle script, der anvender denne nøgle, skal opdateres. Venligst indtast \"{confirmationValue}\" for at bekræfte."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Start manuelt"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Opbevaringsperiode for logge"
msgid "Logged in as {impersonatedUser}"
msgstr "Logget ind som {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Mest installerede version"
msgid "Move down"
msgstr "Flyt ned"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Flyt til højre"
msgid "Move to a folder"
msgstr "Flyt til en mappe"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "Flyt til mappe"
msgid "Move up"
msgstr "Flyt op"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Ny webhook"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr ""
msgid "No available fields to select"
msgstr "Ingen tilgængelige felter for at vælge"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Pladsholder"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Tjek venligst din e-mail for et bekræftelseslink."
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Indtast venligst en gyldig URL"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Læs din profil"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Skrivebeskyttet — administreret af Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Optag valg"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Posttabel"
@@ -11799,6 +11841,11 @@ msgstr "Omdisponer felt"
msgid "Reorder options"
msgstr "Omarranger valgmuligheder"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "Send e-mail igen"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Nulstil"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Tilbagekaldt for dette objekt"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Kører funktion"
msgid "Running..."
msgstr "Kører..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Runtime"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Søg farver"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Søg farver..."
@@ -13237,7 +13282,7 @@ msgstr "Beklager, noget gik galt"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "Sorteringer"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr ""
msgid "System Prompt"
msgstr "Systemprompt"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Systemprompt ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14212,6 +14252,11 @@ msgstr ""
msgid "This week"
msgstr "Denne uge"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14483,6 +14528,7 @@ msgstr "Prøveperiode udløbet. Opdater venligst dine faktureringsoplysninger."
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Udløser"
@@ -14868,7 +14914,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "Unavngivet iFrame"
@@ -14983,6 +15029,11 @@ msgstr "Opgrader for at få adgang"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15044,7 +15095,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL til indlejr"
@@ -15419,7 +15470,6 @@ msgstr "Vis logge"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Se side på markedspladsen"
@@ -15433,6 +15483,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Se tidligere AI-chats"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15734,7 +15789,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Widget type"
@@ -15822,7 +15878,6 @@ msgstr "Arbejdsgange"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} ausgewählt"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} Felder"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} wird von folgender Rolle abgezogen:"
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} Token"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Widget hinzufügen"
msgid "Add Widget"
msgstr "Widget hinzufügen"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "Beim Hochladen des Bildes ist ein Fehler aufgetreten."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Anwendung erfolgreich aktualisiert."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "Captcha (Anti-Bot-Überprüfung) lädt noch, bitte versuchen Sie es erneut"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Zu jährlich wechseln?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Diagramm"
@@ -4251,14 +4262,14 @@ msgstr "Dashboard erfolgreich dupliziert"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Daten"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Daten und Anzeige"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Webhook löschen"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Widget löschen"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Anzeigen"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Schaltfläche \"Weitere Felder\" anzeigen"
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Feldwerte bearbeiten"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Felder bearbeiten"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Ordner bearbeiten"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Diagramm bearbeiten"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "iFrame bearbeiten"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr "Profil bearbeiten"
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Datensatztabelle bearbeiten"
@@ -6628,8 +6639,9 @@ msgstr "feld"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "Felder"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Dateien"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Frontend-Komponenten"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Frontend-Komponenten"
@@ -7002,11 +7016,6 @@ msgstr "Vollzugriff"
msgid "Function name"
msgstr "Funktionsname"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Funktionen"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "Wenn Sie diesen Schlüssel verloren haben, können Sie ihn neu generieren, aber beachten Sie, dass jedes Skript, das diesen Schlüssel verwendet, aktualisiert werden muss. Bitte geben Sie zur Bestätigung \"{confirmationValue}\" ein."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Manuell auslösen"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Protokollaufbewahrung"
msgid "Logged in as {impersonatedUser}"
msgstr "Eingeloggt als {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Am häufigsten installierte Version"
msgid "Move down"
msgstr "Nach unten verschieben"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Nach rechts verschieben"
msgid "Move to a folder"
msgstr "In einen Ordner verschieben"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "In Ordner verschieben"
msgid "Move up"
msgstr "Nach oben verschieben"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Neuer Webhook"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "Keine Anwendungen verfügbar"
msgid "No available fields to select"
msgstr "Keine verfügbaren Felder zur Auswahl"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Platzhalter"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Bitte überprüfen Sie Ihre E-Mail auf einen Bestätigungslink."
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Bitte geben Sie eine gültige URL ein"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Ihr Profil lesen"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Schreibgeschützt — verwaltet von Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Datensatz-Auswahl"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Datensatztabelle"
@@ -11799,6 +11841,11 @@ msgstr "Feld neu ordnen"
msgid "Reorder options"
msgstr "Optionen neu anordnen"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "E-Mail erneut senden"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Zurücksetzen"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Zurückgezogen für dieses Objekt"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Funktion wird ausgeführt"
msgid "Running..."
msgstr "Wird ausgeführt..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Laufzeit"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Farben suchen"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Farben suchen..."
@@ -13237,7 +13282,7 @@ msgstr "Entschuldigung, etwas ist schiefgelaufen"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "Sortierungen"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr ""
msgid "System Prompt"
msgstr "Systemaufforderung"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Systemprompt ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14210,6 +14250,11 @@ msgstr ""
msgid "This week"
msgstr "Diese Woche"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14481,6 +14526,7 @@ msgstr "Probezeit abgelaufen. Bitte aktualisieren Sie Ihre Rechnungsdaten."
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Auslöser"
@@ -14866,7 +14912,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "Unbenanntes iFrame"
@@ -14981,6 +15027,11 @@ msgstr "Upgrade, um Zugriff zu erhalten"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15042,7 +15093,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL zum Einbetten"
@@ -15417,7 +15468,6 @@ msgstr "Protokolle anzeigen"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Marktplatz-Seite anzeigen"
@@ -15431,6 +15481,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Vorherige KI-Chats anzeigen"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15732,7 +15787,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Widget-Typ"
@@ -15820,7 +15876,6 @@ msgstr "Workflows"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} επιλεγμένα"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} πεδία"
@@ -456,11 +456,13 @@ msgstr "Ο χρήστης {workspaceMemberName} θα αποδεσμευτεί α
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} διακριτικά"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Προσθήκη widget"
msgid "Add Widget"
msgstr "Προσθήκη widget"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτω
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Η εφαρμογή αναβαθμίστηκε με επιτυχία."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "Captcha (έλεγχος κατά των bots) φορτώνει ακόμα, προσπαθήστε ξανά"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Αλλαγή σε ετήσια;"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Διάγραμμα"
@@ -4251,14 +4262,14 @@ msgstr "Ο πίνακας ελέγχου αντιγράφηκε με επιτυ
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Δεδομένα"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Δεδομένα και εμφάνιση"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Διαγραφή webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Διαγραφή γραφικού στοιχείου"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Εμφάνιση"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Εμφάνιση κουμπιού \"Περισσότερα πεδία\""
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Επεξεργασία τιμών πεδίων"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Επεξεργασία πεδίων"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Επεξεργασία φακέλου"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Επεξεργασία γραφήματος"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Επεξεργασία iFrame"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr ""
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Επεξεργασία πίνακα εγγραφών"
@@ -6628,8 +6639,9 @@ msgstr "πεδίο"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "πεδία"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Αρχεία"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Στοιχεία διεπαφής χρήστη"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Στοιχεία διεπαφής χρήστη"
@@ -7002,11 +7016,6 @@ msgstr "Πλήρης πρόσβαση"
msgid "Function name"
msgstr "Όνομα συνάρτησης"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Λειτουργίες"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "Αν έχετε χάσει αυτό το κλειδί, μπορείτε να το ανακτήσετε, αλλά να είστε ενημερωμένοι ότι οποιοδήποτε script χρησιμοποιεί αυτό το κλειδί θα πρέπει να ενημερωθεί. Παρακαλώ πληκτρολογήστε \"{confirmationValue}\" για επιβεβαίωση."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Εκκίνηση χειροκίνητα"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Διατήρηση αρχείων καταγραφής"
msgid "Logged in as {impersonatedUser}"
msgstr "Συνδεδεμένος ως {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Η έκδοση με τις περισσότερες εγκαταστά
msgid "Move down"
msgstr "Μετακίνηση προς τα κάτω"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Μετακίνηση δεξιά"
msgid "Move to a folder"
msgstr "Μετακίνηση σε έναν φάκελο"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "Μετακίνηση σε φάκελο"
msgid "Move up"
msgstr "Μετακίνηση προς τα πάνω"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Νέο Webhook"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "Δεν υπάρχουν διαθέσιμες εφαρμογές"
msgid "No available fields to select"
msgstr "Δεν υπάρχουν διαθέσιμα πεδία για επιλογή"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Κείμενο κράτησης θέσης"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Παρακαλώ ελέγξτε το email σας για έναν σύν
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Παρακαλώ εισάγετε μία έγκυρη διεύθυνση URL"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Ανάγνωση του προφίλ σας"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Μόνο για ανάγνωση — διαχειρίζεται από την Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Επιλογή Εγγραφών"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Πίνακας εγγραφών"
@@ -11799,6 +11841,11 @@ msgstr "Αναδιάταξη πεδίου"
msgid "Reorder options"
msgstr "Αναδιάταξη επιλογών"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "Επαναποστολή email"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Επαναφορά"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Ανακλήθηκε για αυτό το αντικείμενο"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Εκτέλεση λειτουργίας"
msgid "Running..."
msgstr "Εκτελείται..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Περιβάλλον εκτέλεσης"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Αναζήτηση χρωμάτων"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Αναζήτηση χρωμάτων..."
@@ -13239,7 +13284,7 @@ msgstr "Λυπάμαι, κάτι πήγε στραβά"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13274,7 +13319,7 @@ msgstr "Ταξινομήσεις"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13721,11 +13766,6 @@ msgstr ""
msgid "System Prompt"
msgstr "Σύστημα Προτροπής"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Προτροπή συστήματος ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14214,6 +14254,11 @@ msgstr ""
msgid "This week"
msgstr "Αυτή την εβδομάδα"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14485,6 +14530,7 @@ msgstr "Η δοκιμαστική περίοδος έληξε. Ενημερώσ
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Σκανδάλη"
@@ -14870,7 +14916,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "Χωρίς τίτλο iFrame"
@@ -14985,6 +15031,11 @@ msgstr "Αναβαθμίστε για πρόσβαση"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15046,7 +15097,7 @@ msgid "URL"
msgstr "Διεύθυνση URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL για ενσωμάτωση"
@@ -15421,7 +15472,6 @@ msgstr "Προβολή αρχείων καταγραφής"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Προβολή σελίδας marketplace"
@@ -15435,6 +15485,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Εμφάνιση Προηγούμενων Συνομιλιών AI"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15736,7 +15791,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Τύπος στοιχείου"
@@ -15824,7 +15880,6 @@ msgstr "Ροές Εργασίας"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -424,7 +424,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} selected"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} fields"
@@ -451,11 +451,13 @@ msgstr "{workspaceMemberName} will be unassigned from the following role:"
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} tokens"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr "~ {0} tokens"
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1141,6 +1143,16 @@ msgstr "Add widget"
msgid "Add Widget"
msgstr "Add Widget"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr "Add widget above"
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr "Add widget below"
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1702,6 +1714,7 @@ msgstr "An error occurred while uploading the picture."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1949,8 +1962,6 @@ msgstr "Application upgraded successfully."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2824,7 +2835,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "Captcha (anti-bot check) is still loading, try again"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr "Card"
@@ -2903,7 +2914,7 @@ msgid "Change to Yearly?"
msgstr "Change to Yearly?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Chart"
@@ -4246,14 +4257,14 @@ msgstr "Dashboard duplicated successfully"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Data"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Data and display"
@@ -4767,8 +4778,8 @@ msgid "Delete webhook"
msgstr "Delete webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Delete widget"
@@ -4878,7 +4889,7 @@ msgid "Display"
msgstr "Display"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Display \"More fields\" button"
@@ -5218,8 +5229,8 @@ msgid "Edit field values"
msgstr "Edit field values"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Edit Fields"
@@ -5232,12 +5243,12 @@ msgid "Edit folder"
msgstr "Edit folder"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Edit Graph"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Edit iFrame"
@@ -5266,7 +5277,7 @@ msgid "Edit Profile"
msgstr "Edit Profile"
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Edit Record Table"
@@ -6623,8 +6634,9 @@ msgstr "field"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6653,7 +6665,7 @@ msgstr "field permission"
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr "Field widget"
@@ -6673,7 +6685,8 @@ msgstr "fields"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6775,7 +6788,7 @@ msgstr "Files"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6982,7 +6995,8 @@ msgid "Front components"
msgstr "Front components"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Front Components"
@@ -6997,11 +7011,6 @@ msgstr "Full access"
msgid "Function name"
msgstr "Function name"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Functions"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7401,7 +7410,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7504,7 +7513,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "If youve lost this key, you can regenerate it, but be aware that any script using this key will need to be updated. Please type\"{confirmationValue}\" to confirm."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8345,8 +8354,8 @@ msgstr "Launch manually"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8657,6 +8666,11 @@ msgstr "Log retention"
msgid "Logged in as {impersonatedUser}"
msgstr "Logged in as {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr "Logic"
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8737,7 +8751,7 @@ msgid "Make HTTP requests to external APIs"
msgstr "Make HTTP requests to external APIs"
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr "Manage"
@@ -9196,6 +9210,11 @@ msgstr "Most installed version"
msgid "Move down"
msgstr "Move down"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr "Move Down"
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9215,6 +9234,11 @@ msgstr "Move right"
msgid "Move to a folder"
msgstr "Move to a folder"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr "Move to another tab"
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9225,6 +9249,11 @@ msgstr "Move to folder"
msgid "Move up"
msgstr "Move up"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr "Move Up"
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9535,6 +9564,8 @@ msgid "New Webhook"
msgstr "New Webhook"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr "New widget"
@@ -9651,6 +9682,11 @@ msgstr "No applications available"
msgid "No available fields to select"
msgstr "No available fields to select"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr "No available tabs"
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10979,6 +11015,11 @@ msgstr "Pinned"
msgid "Placeholder"
msgstr "Placeholder"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr "Placement"
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11012,7 +11053,7 @@ msgstr "Please check your email for a verification link."
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Please enter a valid URL"
@@ -11414,10 +11455,11 @@ msgstr "Read the system prompts to understand how the AI works (~{0} tokens)"
msgid "Read your profile"
msgstr "Read your profile"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "Read-only — managed by Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr "Read-only"
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11515,7 +11557,7 @@ msgid "Record Selection"
msgstr "Record Selection"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Record Table"
@@ -11794,6 +11836,11 @@ msgstr "Reorder field"
msgid "Reorder options"
msgstr "Reorder options"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr "Replace widget"
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11836,6 +11883,7 @@ msgstr "Resend email"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Reset"
@@ -11856,6 +11904,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11972,7 +12022,7 @@ msgid "Revoked for this object"
msgstr "Revoked for this object"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12126,11 +12176,6 @@ msgstr "Running function"
msgid "Running..."
msgstr "Running..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Runtime"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12343,7 +12388,7 @@ msgid "Search colors"
msgstr "Search colors"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Search colors..."
@@ -13232,7 +13277,7 @@ msgstr "Sorry, something went wrong"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13267,7 +13312,7 @@ msgstr "Sorts"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13714,11 +13759,6 @@ msgstr "System objects"
msgid "System Prompt"
msgstr "System Prompt"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "System Prompt ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14207,6 +14247,11 @@ msgstr "This view uses {usageLabel} on object \"{0}\" which is not accessible."
msgid "This week"
msgstr "This week"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr "This will cancel all modifications done on the widget. This action cannot be undone."
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14478,6 +14523,7 @@ msgstr "Trial expired. Please update your billing details."
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Trigger"
@@ -14863,7 +14909,7 @@ msgid "Untitled field"
msgstr "Untitled field"
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "Untitled iFrame"
@@ -14978,6 +15024,11 @@ msgstr "Upgrade to access"
msgid "Upgrade to Enterprise to access audit logs."
msgstr "Upgrade to Enterprise to access audit logs."
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr "Upgrade to Enterprise to share private applications."
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15039,7 +15090,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL to Embed"
@@ -15414,7 +15465,6 @@ msgstr "View Logs"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "View marketplace page"
@@ -15428,6 +15478,11 @@ msgstr "View not shared"
msgid "View Previous AI Chats"
msgstr "View Previous AI Chats"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr "View private application page"
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15729,7 +15784,8 @@ msgid "widget"
msgstr "widget"
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Widget type"
@@ -15817,7 +15873,6 @@ msgstr "Workflows"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx
+112 -57
View File
@@ -429,7 +429,7 @@ msgid "{totalCount} selected"
msgstr "{totalCount} seleccionados"
#. js-lingui-id: WwbakM
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "{totalFieldsCount} fields"
msgstr "{totalFieldsCount} campos"
@@ -456,11 +456,13 @@ msgstr "{workspaceMemberName} dejará de estar asignado al siguiente rol:"
msgid "••••••••"
msgstr "••••••••"
#. js-lingui-id: tD9raa
#. js-lingui-id: SMgdEJ
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~{0} tokens"
msgstr "~{0} tokens"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "~ {0} tokens"
msgstr ""
#. js-lingui-id: Cx0xl3
#: src/modules/workflow/workflow-steps/workflow-actions/delay-actions/components/WorkflowEditActionDelay.tsx
@@ -1146,6 +1148,16 @@ msgstr "Agregar widget"
msgid "Add Widget"
msgstr "Agregar widget"
#. js-lingui-id: 8zCitC
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget above"
msgstr ""
#. js-lingui-id: yy7F6M
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Add widget below"
msgstr ""
#. js-lingui-id: m2qDV8
#: src/modules/object-record/record-table/empty-state/utils/getEmptyStateTitle.ts
msgid "Add your first {objectLabel}"
@@ -1707,6 +1719,7 @@ msgstr "Se produjo un error al subir la imagen."
#: src/modules/views/hooks/internal/usePerformViewAPIPersist.ts
#: 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/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
@@ -1954,8 +1967,6 @@ msgstr "Aplicación actualizada con éxito."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -2829,7 +2840,7 @@ msgid "Captcha (anti-bot check) is still loading, try again"
msgstr "El Captcha (verificación anti-bot) sigue cargando, inténtelo de nuevo"
#. js-lingui-id: kryGs+
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
msgid "Card"
msgstr ""
@@ -2908,7 +2919,7 @@ msgid "Change to Yearly?"
msgstr "Cambiar a anual?"
#. js-lingui-id: nuBbBr
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Chart"
msgstr "Gráfico"
@@ -4251,14 +4262,14 @@ msgstr "Se duplicó el tablero con éxito"
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx
msgid "Data"
msgstr "Datos"
#. js-lingui-id: nxnCld
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "Data and display"
msgstr "Datos y visualización"
@@ -4772,8 +4783,8 @@ msgid "Delete webhook"
msgstr "Eliminar webhook"
#. js-lingui-id: tWD0z0
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsFooter.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
msgid "Delete widget"
msgstr "Eliminar widget"
@@ -4883,7 +4894,7 @@ msgid "Display"
msgstr "Mostrar"
#. js-lingui-id: Ldgs6e
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
msgid "Display \"More fields\" button"
msgstr "Mostrar el botón \"Más campos\""
@@ -5223,8 +5234,8 @@ msgid "Edit field values"
msgstr "Editar valores de campo"
#. js-lingui-id: oKQ7ls
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownHiddenFieldsContent.tsx
msgid "Edit Fields"
msgstr "Editar campos"
@@ -5237,12 +5248,12 @@ msgid "Edit folder"
msgstr "Editar carpeta"
#. js-lingui-id: JTcEch
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Graph"
msgstr "Editar gráfico"
#. js-lingui-id: WXPnsc
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit iFrame"
msgstr "Editar iFrame"
@@ -5271,7 +5282,7 @@ msgid "Edit Profile"
msgstr "Editar Perfil"
#. js-lingui-id: 19vPbj
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Edit Record Table"
msgstr "Editar tabla de registros"
@@ -6628,8 +6639,9 @@ msgstr "campo"
#. js-lingui-id: AXjA78
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
#: src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/settings/developers/components/WebhookEntitySelect.tsx
#: src/modules/page-layout/widgets/components/RecordPageAddWidgetSection.tsx
@@ -6658,7 +6670,7 @@ msgstr ""
#. js-lingui-id: lcNTiF
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/page-layout/hooks/useEditPageLayoutWidget.ts
#: src/modules/side-panel/hooks/useOpenWidgetSettingsInSidePanel.ts
msgid "Field widget"
msgstr ""
@@ -6678,7 +6690,8 @@ msgstr "campos"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
#: src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx
@@ -6780,7 +6793,7 @@ msgstr "Archivos"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6987,7 +7000,8 @@ msgid "Front components"
msgstr "Componentes de frontend"
#. js-lingui-id: xf0TNb
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Front Components"
msgstr "Componentes de frontend"
@@ -7002,11 +7016,6 @@ msgstr "Acceso total"
msgid "Function name"
msgstr "Nombre de la función"
#. js-lingui-id: xANKBj
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Functions"
msgstr "Funciones"
#. js-lingui-id: tkr79G
#: src/utils/title-utils.ts
msgid "Functions - Settings"
@@ -7406,7 +7415,7 @@ msgid "https://example.com/callback"
msgstr "https://example.com/callback"
#. js-lingui-id: yhVtER
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "https://example.com/embed"
msgstr "https://example.com/embed"
@@ -7509,7 +7518,7 @@ msgid "If youve lost this key, you can regenerate it, but be aware that any s
msgstr "Si ha perdido esta clave, puede regenerarla, pero tenga en cuenta que cualquier script que utilice esta clave deberá ser actualizado. Escriba \"{confirmationValue}\" para confirmar."
#. js-lingui-id: KDMdBi
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "iFrame"
msgstr "iFrame"
@@ -8350,8 +8359,8 @@ msgstr "Lanzar manualmente"
#. js-lingui-id: rdU729
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -8662,6 +8671,11 @@ msgstr "Retención de registros"
msgid "Logged in as {impersonatedUser}"
msgstr "Conectado como {impersonatedUser}"
#. js-lingui-id: wuCnq1
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
msgid "Logic"
msgstr ""
#. js-lingui-id: sTlKkx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
@@ -8742,7 +8756,7 @@ msgid "Make HTTP requests to external APIs"
msgstr ""
#. js-lingui-id: wckWOP
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Manage"
msgstr ""
@@ -9201,6 +9215,11 @@ msgstr "Versión más instalada"
msgid "Move down"
msgstr "Mover hacia abajo"
#. js-lingui-id: bAvovP
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Down"
msgstr ""
#. js-lingui-id: iSLA/r
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutTabSettingsContent.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -9220,6 +9239,11 @@ msgstr "Mover a la derecha"
msgid "Move to a folder"
msgstr "Mover a una carpeta"
#. js-lingui-id: TH+XKl
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move to another tab"
msgstr ""
#. js-lingui-id: JCPOml
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Move to folder"
@@ -9230,6 +9254,11 @@ msgstr "Mover a una carpeta"
msgid "Move up"
msgstr "Mover hacia arriba"
#. js-lingui-id: Bpglf1
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Move Up"
msgstr ""
#. js-lingui-id: asWVA5
#: src/modules/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions.ts
msgid "must be a number"
@@ -9540,6 +9569,8 @@ msgid "New Webhook"
msgstr "Nuevo Webhook"
#. js-lingui-id: vam7Jz
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "New widget"
msgstr ""
@@ -9656,6 +9687,11 @@ msgstr "No hay aplicaciones disponibles"
msgid "No available fields to select"
msgstr "No hay campos disponibles para seleccionar"
#. js-lingui-id: Yd55ZI
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/MoveToTabDropdownContent.tsx
msgid "No available tabs"
msgstr ""
#. js-lingui-id: V/RzSE
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
msgid "No body"
@@ -10984,6 +11020,11 @@ msgstr ""
msgid "Placeholder"
msgstr "Marcador de posición"
#. js-lingui-id: MFTZK8
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsPlacementSection.tsx
msgid "Placement"
msgstr ""
#. js-lingui-id: fQtTho
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "Plain text paragraph"
@@ -11017,7 +11058,7 @@ msgstr "Por favor, revisa tu correo electrónico para un enlace de verificación
#. js-lingui-id: jEw0Mr
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationOAuthTab.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "Please enter a valid URL"
msgstr "Por favor, introduzca una URL válida"
@@ -11419,10 +11460,11 @@ msgstr ""
msgid "Read your profile"
msgstr "Leer tu perfil"
#. js-lingui-id: tCXcL7
#. js-lingui-id: 6pSHJ5
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only — managed by Twenty"
msgstr "De solo lectura — gestionado por Twenty"
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "Read-only"
msgstr ""
#. js-lingui-id: W+ApAD
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
@@ -11520,7 +11562,7 @@ msgid "Record Selection"
msgstr "Selección de registros"
#. js-lingui-id: J9Cfll
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/components/hooks/usePageLayoutHeaderInfo.ts
msgid "Record Table"
msgstr "Tabla de registros"
@@ -11799,6 +11841,11 @@ msgstr "Reordenar campo"
msgid "Reorder options"
msgstr "Reordenar opciones"
#. js-lingui-id: q8Id6J
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Replace widget"
msgstr ""
#. js-lingui-id: ImOQa9
#: src/modules/side-panel/hooks/useOpenComposeEmailInSidePanel.ts
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadComposer.tsx
@@ -11841,6 +11888,7 @@ msgstr "Reenviar correo electrónico"
#. js-lingui-id: OfhWJH
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/modules/views/components/ViewBarDetails.tsx
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "Reset"
msgstr "Restablecer"
@@ -11861,6 +11909,8 @@ 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
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
#: src/modules/command-menu-item/server-items/edit/components/SidePanelCommandMenuItemEditPage.tsx
msgid "Reset to default"
@@ -11977,7 +12027,7 @@ msgid "Revoked for this object"
msgstr "Revocado para este objeto"
#. js-lingui-id: NP5Nbf
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
#: src/modules/side-panel/hooks/useOpenRichTextInSidePanel.ts
#: src/modules/page-layout/utils/getWidgetTitle.ts
msgid "Rich Text"
@@ -12131,11 +12181,6 @@ msgstr "Ejecutando función"
msgid "Running..."
msgstr "Ejecutando..."
#. js-lingui-id: eo1n1s
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Runtime"
msgstr "Tiempo de ejecución"
#. js-lingui-id: nji0/X
#: src/pages/settings/profile/appearance/components/LocalePicker.tsx
msgid "Russian"
@@ -12348,7 +12393,7 @@ msgid "Search colors"
msgstr "Buscar colores"
#. js-lingui-id: AR3FV/
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx
#: src/modules/ui/input/components/ThemeColorPickerMenu.tsx
msgid "Search colors..."
msgstr "Buscar colores..."
@@ -13237,7 +13282,7 @@ msgstr "Lo siento, algo salió mal"
#. js-lingui-id: f6Hub0
#: src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowEditActionFindRecords.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
@@ -13272,7 +13317,7 @@ msgstr "Criterios de ordenación"
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordTableSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableOptionsDropdownContent.tsx
#: src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
msgid "Source"
@@ -13719,11 +13764,6 @@ msgstr "Objetos del sistema"
msgid "System Prompt"
msgstr "Aviso del sistema"
#. js-lingui-id: BXGTWI
#: src/pages/settings/ai/SettingsAIPrompts.tsx
msgid "System Prompt ({totalTokenCount})"
msgstr "Prompt del sistema ({totalTokenCount})"
#. js-lingui-id: k+7QWO
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
msgid "System relations"
@@ -14212,6 +14252,11 @@ msgstr ""
msgid "This week"
msgstr "Esta semana"
#. js-lingui-id: VbVocX
#: src/modules/side-panel/pages/page-layout/components/WidgetSettingsManageSection.tsx
msgid "This will cancel all modifications done on the widget. This action cannot be undone."
msgstr ""
#. js-lingui-id: h4VeOo
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "This will cancel the scheduled interval change and keep your current billing interval ({currentIntervalLabel})."
@@ -14483,6 +14528,7 @@ msgstr "Periodo de prueba expirado. Por favor, actualice sus datos de facturaci
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/side-panel/components/SidePanelWorkflowStepInfo.tsx
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionsTable.tsx
msgid "Trigger"
msgstr "Desencadenar"
@@ -14868,7 +14914,7 @@ msgid "Untitled field"
msgstr ""
#. js-lingui-id: RBz20h
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Untitled iFrame"
msgstr "iFrame sin título"
@@ -14983,6 +15029,11 @@ msgstr "Actualiza para acceder"
msgid "Upgrade to Enterprise to access audit logs."
msgstr ""
#. js-lingui-id: D+7y/3
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "Upgrade to Enterprise to share private applications."
msgstr ""
#. js-lingui-id: +Gi3x1
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
@@ -15044,7 +15095,7 @@ msgid "URL"
msgstr "URL"
#. js-lingui-id: pphDjD
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardIframeSettings.tsx
msgid "URL to Embed"
msgstr "URL para incrustar"
@@ -15419,7 +15470,6 @@ msgstr "Ver registros"
#. js-lingui-id: 7PrSCy
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View marketplace page"
msgstr "Ver página del Marketplace"
@@ -15433,6 +15483,11 @@ msgstr ""
msgid "View Previous AI Chats"
msgstr "Ver chats previos de IA"
#. js-lingui-id: NnJpTN
#: src/pages/settings/applications/tabs/SettingsApplicationRegistrationDistributionTab.tsx
msgid "View private application page"
msgstr ""
#. js-lingui-id: hAAsm/
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent.tsx
msgid "View role"
@@ -15734,7 +15789,8 @@ msgid "widget"
msgstr ""
#. js-lingui-id: fANaAS
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutDashboardWidgetTypeSelect.tsx
msgid "Widget type"
msgstr "Tipo de Widget"
@@ -15822,7 +15878,6 @@ msgstr "Workflows"
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplications.tsx
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsToolDetail.tsx

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