Compare commits

...

66 Commits

Author SHA1 Message Date
Weiko a051150bd9 Improve Relation picker for RLS 2026-02-23 22:22:18 +01:00
Paul Rastoin af0af0a237 Fix cross app installation (#18151)
# Introduction
- Fixing app dependencyFlatEntityMaps load ( to load current app +
dependent app )
- Fix empty flat entity maps and undefined optimistic override
- Refactor the optimistic rendering to be mutation oriented at
orchestrator level
2026-02-23 19:58:06 +01:00
Charles Bochet 0d4fe4575b Various SDK improvements (#18115)
## Summary

- **Refactor frontend metadata loading architecture**: Split the
monolithic `EagerMetadataLoadEffect` into focused provider effects
(`UserMetadataProviderEffect`, `ObjectMetadataProviderEffect`,
`ViewMetadataProviderEffect`) orchestrated by `MetadataProviderEffects`.
Replaced `UserProvider` + `ObjectMetadataItemsProvider` with a single
`MetadataGater` that gates rendering on `isAppMetadataReadyState`. The
metadata store now validates view-object consistency before promoting
views, and `updateDraft` skips no-op updates via deep equality checks.

- **SDK CLI improvements**: Added `app:typecheck` command, improved
error handling in API sync (extracts GraphQL error messages), added
`serializeError` utility for human-readable error output, added `error`
file status to dev mode orchestrator with UI support, and fixed
ClickHouse migration/seed commands to use `transpile-only`.
2026-02-23 19:57:02 +01:00
Thomas Trompette ccddd105d8 Add generate key command (#18171)
Will be useful to auto log users on app creation
2026-02-23 19:56:44 +01:00
github-actions[bot] e21a7e11b2 i18n - translations (#18175)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-23 19:56:31 +01:00
Weiko 1ac87d106e With RLS predicates on Select, only show possible values in option picker (#18166)
## Context
Removing SELECT/MULTI_SELECT options that can't be selected due to RLS
(see https://github.com/twentyhq/core-team-issues/issues/2226)

<img width="521" height="276" alt="Screenshot 2026-02-23 at 11 30 21"
src="https://github.com/user-attachments/assets/238ff596-cd8c-4660-a709-3eb2486e23b4"
/>
<img width="279" height="200" alt="Screenshot 2026-02-23 at 11 30 03"
src="https://github.com/user-attachments/assets/7a627d74-7519-4314-9a0e-0890cb8cbf30"
/>
2026-02-23 19:25:58 +01:00
Copilot 9a0295fd3d feat: add atomic upsertFieldsWidget mutation to replace multiple view field group/field API calls (#18137)
The `useSaveFieldsWidgetGroups` hook was making multiple sequential API
calls per widget (create groups, delete groups, update groups, update
fields) — non-atomic, chatty, and with heavy diff computation on the
frontend.

## Backend

- **New input DTOs**: `UpsertFieldsWidgetInput` /
`UpsertFieldsWidgetGroupInput` / `UpsertFieldsWidgetFieldInput` — caller
passes the full desired state of groups + fields for a widget
- **`FieldsWidgetUpsertService`**: looks up widget → resolves `viewId`,
diffs against existing flat entity maps, builds optimistic group maps so
newly-created groups can be referenced by field updates in the same
pass, then runs creates/updates/deletes in a single
`validateBuildAndRunWorkspaceMigration` call
- **`upsertFieldsWidget` mutation** added to `ViewFieldGroupResolver`;
new `FIELDS_WIDGET_NOT_FOUND` exception code added and wired into the
GraphQL exception filter

## Frontend

- New `UPSERT_FIELDS_WIDGET` GQL document
- `useSaveFieldsWidgetGroups` replaces all per-operation calls with a
single mutation per widget, passing the full draft state — diff logic
moves entirely to the backend

```graphql
mutation UpsertFieldsWidget($input: UpsertFieldsWidgetInput!) {
  upsertFieldsWidget(input: $input) {
    id
    name
    position
    isVisible
    viewId
    viewFields { id isVisible position ... }
  }
}
```

Widget IDs are collected from both draft **and** persisted state so
widgets whose draft groups were cleared still trigger deletion of their
server-side groups.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

Start implementation

The user has attached the following file paths as relevant context:
 - CLAUDE.md

<analysis>
[Chronological Review: The conversation began with the user requesting a
review of how updates on views are stored in the frontend of record page
layouts. The user expressed a desire to migrate heavy computations and
multiple requests from the frontend to the backend. They proposed
creating a custom upsertFieldsWidget mutation to handle updates
atomically. The conversation has focused on this migration strategy and
its implementation.]

[Intent Mapping: The user explicitly requested to "check how we store
updates on views in the frontend of record page layouts" and indicated a
need to "migrate this task to the backend" by creating a custom mutation
for atomic updates.]

[Technical Inventory: The conversation involves the following technical
concepts:
- Frontend and backend architecture for handling page layout updates.
- Custom GraphQL mutation (upsertFieldsWidget) for atomic updates.
- The file in focus is page-layout-update.service.ts, which is likely
responsible for handling updates related to page layouts in the
backend.]

[Code Archaeology: The specific file being worked on is
/Users/devessier/Web/twenty/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts.
The user is likely looking to modify or enhance this service to
accommodate the new mutation for handling updates.]

[Progress Assessment: The user has identified the need for a backend
migration strategy but has not yet implemented any changes. The focus is
on planning the transition from frontend to backend processing.]

[Context Validation: All critical information for continuation is
captured, including the user's intent to migrate computations to the
backend and the specific file being modified.]

[Recent Commands Analysis: The last agent commands involved checking the
current file context and the user's request to summarize the
conversation. No specific tool results were generated as the focus was
on summarizing the conversation history. The agent was actively working
on summarizing the conversation when the token budget was exceeded,
which was triggered by the user's request for a summary.]

</analysis>

<summary>
1. Conversation Overview:
- Primary Objectives: The user requested to "check how we store updates
on views in the frontend of record page layouts" and expressed a desire
to "migrate this task to the backend" by creating a custom
upsertFieldsWidget mutation for atomic updates.
- Session Context: The conversation has focused on the need to shift
heavy computations from the frontend to the backend, with an emphasis on
implementing a new mutation to streamline updates.
- User Intent Evolution: The user's needs have remained consistent,
focusing on backend migration for efficiency and atomicity in updates.

2. Technical Foundation:
- Core Technology: The conversation involves a backend service likely
built with Node.js and TypeScript, as indicated by the file path.
- Framework/Library: The use of GraphQL for handling mutations is
implied through the mention of a custom mutation.
- Architectural Pattern: The user is looking to implement a
service-oriented architecture where the backend handles complex
computations instead of the frontend.
- Environment Detail: The current working file is located in a server
package of the twenty repository.

3. Codebase Status:
- File Name: page-layout-update.service.ts
- Purpose: This file is responsible for managing updates related to page
layouts in the backend.
- Current State: The user is considering modifications to implement a
new mutation for handling updates.
- Key Code Segments: Specific functions or classes have not been
detailed yet, as the focus is on planning changes.
- Dependencies: This service likely interacts with other components in
the metadata-modules related to page layouts.

4. Problem Resolution:
- Issues Encountered: The current challenge is the inefficiency of
handling updates in the frontend.
- Solutions Implemented: The proposed solution is to create a custom
mutation to handle updates atomically in the backend.
- Debugging Context: No ongoing troubleshooting efforts have been
mentioned yet.
- Lessons Learned: The need for backend processing to improve
performance has been highlighted.

5. Progress Tracking:
- Completed Tasks: No tasks have been completed yet; the user is in the
planning phase.
- Partially Complete Work: The user is preparing to implement a new
mutation for backend updates.
- Validated Outcomes: No features have been confirmed working through
testing at this stage.

6. Active Work State:
- Current Focus: The user is focused on modifying the
page-layout-update.service.ts to implement the new mutation.
- Recent Context: The last few exchanges involved discussing the
migration of update tasks from the frontend to the backend.
- Working Code: No specific code snippets have been modified yet, as the
co...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

Created from [VS
Code](https://code.visualstudio.com/docs/copilot/copilot-coding-agent).

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Devessier <29370468+Devessier@users.noreply.github.com>
Co-authored-by: Baptiste Devessier <baptiste@devessier.fr>
2026-02-23 19:25:47 +01:00
Raphaël Bosi a0c0e7de25 [FRONT COMPONENTS] Add snackbar to the API (#18136)
## PR description

- Adds `enqueueSnackbar` to the front component host communication API,
allowing front components to display snack bar notifications (success,
error, info, warning) to the user.
- Introduces `frontComponentId` to the `FrontComponentExecutionContext`
and a `useFrontComponentId` hook, enabling front components to identify
themselves (used for dedupe keys).
- Wires error/success notifications into the `Action`, `ActionLink`, and
`ActionOpenSidePanelPage` SDK components -> actions now catch errors and
display them as snack bars, and `Action` supports an optional
`notifyOnEnd` prop for success feedback.

## Video QA

### Success example


https://github.com/user-attachments/assets/8cc53d31-d9eb-49a8-9220-f7866ec1b415

### Error example


https://github.com/user-attachments/assets/a37d65b8-0b5f-4adb-bcdb-571bb2b997c3

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2026-02-23 12:25:05 +01:00
Etienne 7cbbd082e3 Billing - Fix (#18135)
Context : https://github.com/twentyhq/private-issues/issues/425
Try to fix https://github.com/twentyhq/core-team-issues/issues/2158

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-23 12:13:19 +01:00
Charles Bochet 7944ca29fa Fix CI (#18168)
Fix 2 issues on CI:
- website still using ubuntu-latest
- linter that cannot use more than 2GB
2026-02-23 12:05:53 +01:00
Charles Bochet b51eb6471f Jotai 12 (#18160)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 12:01:37 +01:00
Raphaël Bosi 22bc3004b9 [FRONT COMPONENTS] Add loader to command menu items (#18165)
## PR description

- Add a loader to the command menu items when the action is running.
- Add a new method `closeSidePanel` to the front component host api.

## Video QA


https://github.com/user-attachments/assets/c20b592a-6e4c-4cab-b5da-4cb2316acc7c
2026-02-23 11:15:45 +01:00
Charles Bochet 129d1ede86 Change runners temp (#18163)
Temporarily moving all ubuntu-latest 1 core to depot except ci-website
2026-02-23 10:53:31 +01:00
github-actions[bot] a2e3af5625 i18n - translations (#18156)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-22 15:40:35 +01:00
Félix Malfait 41f09c5a4c Add AI model pricing, Bedrock provider, and InferenceProvider/ModelFamily split (#18155)
## Summary

- **Model pricing overhaul**: All model constants updated with accurate
pricing in dollars per 1M tokens, including cached input rates, cache
creation rates, and tiered >200k context pricing
- **New providers**: Added Google (Gemini 3.x), Mistral, and AWS Bedrock
as inference providers. Bedrock serves Claude Opus 4.6 and Sonnet 4.6
via AWS, with proper credential handling following the existing S3/SES
pattern
- **InferenceProvider/ModelFamily split**: Refactored `ModelProvider`
into two orthogonal enums — `InferenceProvider` (who serves the model:
auth, SDK, metadata format) and `ModelFamily` (who created it: token
counting semantics). This eliminates growing `||` chains for token
normalization checks like `excludesCachedTokens`
- **Billing improvements**: Reasoning tokens charged at output rate,
cache token discounts applied accurately, real errors thrown to Sentry
on billing failures

## Test plan

- [x] All existing unit tests updated and passing (23 tests across 3
test files)
- [x] Lint passes for both twenty-server and twenty-front
- [ ] CI checks pass


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-22 14:39:04 +01:00
github-actions[bot] a900b4a4b4 i18n - docs translations (#18141)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-22 12:36:36 +01:00
github-actions[bot] 020cf7f3e0 i18n - translations (#18146)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-22 12:36:23 +01:00
Abdullah. 0bccdedb4f feat: design the ai-models tab on settings ai page (#18147)
Remove AI model selectors from the settings tab on AI settings page,
rename that tab to "More" and create a separate "Models" tab as per the
design.


https://www.figma.com/design/xt8O9mFeLl46C5InWwoMrN/Twenty?node-id=91311-278313&m=dev

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2026-02-22 11:41:26 +01:00
martmull 088be4c47b Expose standard universal identifiers (#18152)
as title
2026-02-21 23:53:55 +00:00
Félix Malfait ad88108b28 Update README: add E2B logo and improve heading (#18144)
## Summary
- Add E2B logo to the Thanks section (after Crowdin, same height)
- Rename section heading from "Does the world need another CRM?" to "Why
Twenty" for a more confident, direct tone

## Test plan
- [ ] Verify E2B logo renders correctly on GitHub README
- [ ] Confirm all other logos still display properly

Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:02:11 +01:00
Raphaël Bosi 58e8b466f3 Fix frontComponentHostCommunicationApi is not defined error (#18145)
Fix missing import
2026-02-20 18:49:03 +01:00
martmull ba59ab8094 Add upload file in twenty client (#18129)
This function 

```typescript
import { defineLogicFunction } from 'twenty-sdk';
import TwentyClient from 'twenty-sdk/generated';

import { v4 } from 'uuid';

export const POST_INSTALL_UNIVERSAL_IDENTIFIER =
  '1312be5c-4fd6-44b3-afd0-567352616c7c';

const handler = async (): Promise<any> => {
  const client = new TwentyClient();

  const seedResult = await client.mutation({
    createCompany: {
      id: true,
      name: true,
      __args: {
        data: {
          name: `toto + ${v4()}`,
        },
      },
    },
  });

  const companyFieldUniversalIdentifier =
    '20202020-15db-460e-8166-c7b5d87ad4be';

  const uploadFileResult = await client.uploadFile(
    Buffer.from('hello world', 'utf-8'),
    'test.txt',
    undefined,
    companyFieldUniversalIdentifier,
  );

  await client.mutation({
    createAttachment: {
      id: true,
      __args: {
        data: {
          file: [{ fileId: uploadFileResult.id, label: 'hello-world.txt' }],
          fullPath: uploadFileResult.path,
          targetCompanyId: seedResult.createCompany?.id,
        },
      },
    },
  });

  return;
};

export default defineLogicFunction({
  universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
  name: 'post-install',
  description: 'Add a description for your logic function',
  timeoutSeconds: 30,
  handler,
});

```

produces this record below 

<img width="1512" height="859" alt="image"
src="https://github.com/user-attachments/assets/57dc3a6b-fd2c-4f21-8331-8f1f05403826"
/>
2026-02-20 17:11:59 +00:00
Thomas Trompette cd1a2712d5 Add server health check every 2 secs on app:dev (#18142)
https://github.com/user-attachments/assets/ff10503f-ebc0-417b-b0f3-8aa40dee74e2
2026-02-20 17:01:45 +00:00
Thomas Trompette 932adf8e4b Create view and navigation item on add-object command - to be tested (#18134)
<img width="580" height="141" alt="Capture d’écran 2026-02-20 à 15 52
11"
src="https://github.com/user-attachments/assets/40254d3a-f7f9-4f2a-a51f-c37dc1f5d167"
/>
2026-02-20 16:41:16 +00:00
Lucas Bordeau 26fabdc3d0 Minor fixes following up Temporal refactor (#18139)
Fixes https://github.com/twentyhq/core-team-issues/issues/2034
2026-02-20 15:54:38 +00:00
github-actions[bot] 82617727a2 i18n - docs translations (#18131)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-20 16:33:06 +01:00
Raphaël Bosi 87922253f3 Fix front component cleanup (#18132)
Fix front component cleanup
2026-02-20 15:03:10 +00:00
Raphaël Bosi 7da8450075 [FRONT COMPONENTS] Headless components (#18096)
## Description

- Add `isHeadless` field to `FrontComponent` entity so front components
can run without rendering UI in the command menu
- Introduce headless front component mounting logic:
`HeadlessFrontComponentMountRoot` at the application root,
`useMountHeadlessFrontComponent`, and `useUnmountHeadlessFrontComponent`
hooks to mount/unmount headless components
- Expand the SDK with new action components (`Action`, `ActionLink`,
`ActionOpenSidePanelPage`) and host communication functions
(`openSidePanelPage`, `unmountFrontComponent`)
- Move `CommandMenuPages` type to twenty-shared so the SDK can reference
it for side panel navigation

## Video QA



https://github.com/user-attachments/assets/4f9e3bb1-fcd1-42be-b3f4-a97e80c2add2
2026-02-20 14:14:42 +00:00
github-actions[bot] d444648cc0 i18n - translations (#18127)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-20 14:41:58 +01:00
Félix Malfait ec57d3fe0f Fix flaky 2FA encryption test for AES-256-CBC wrong-key behavior (#18126)
## Summary

- Fixes a flaky test in `simple-secret-encryption.util.spec.ts` that
fails ~1 in 256 runs
- AES-256-CBC doesn't guarantee wrong-key decryption throws — PKCS7
padding validation is probabilistic. When padding accidentally looks
valid, decryption silently returns garbage instead of throwing.
- Changed the test to verify the correct security property: wrong-key
decryption must never return the original secret (both throw and garbage
are acceptable)
- Audited both production `decryptSecret` call sites in
`two-factor-authentication.service.ts` — they always use the correct
key, so end users are not affected

## Test plan

- [x] Test passes 5/5 consecutive runs locally
- [x] Lint passes


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-20 14:41:31 +01:00
Baptiste Devessier 00209f7e2c Wire fields widget to backend + basic edition (#17965)
Closes https://github.com/twentyhq/core-team-issues/issues/2215
Closes https://github.com/twentyhq/core-team-issues/issues/2216
Closes https://github.com/twentyhq/core-team-issues/issues/2218

## Fields widget edition demo


https://github.com/user-attachments/assets/08626d70-8fcb-4ae2-9222-10ef57e75f90

## Dashboards still work


https://github.com/user-attachments/assets/aa9a9c45-a0a2-481e-b132-bc52254778da
2026-02-20 13:18:00 +00:00
Félix Malfait b107020ad3 Fix search edge case with permissions (#18123)
Fix E2E tests

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-20 14:08:20 +01:00
github-actions[bot] 9f3f2e21d8 i18n - docs translations (#18122)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-20 13:51:43 +01:00
github-actions[bot] 21472da38f i18n - translations (#18120)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-20 13:51:34 +01:00
Paul Rastoin bf1e0d0811 Typecheck main sdk (#18124) 2026-02-20 13:47:57 +01:00
Abdullah. 917a36821a fix: hover appearing on not shared for junction relations (#18058)
Hovering over "Not Shared" in junction relations shows the placeholder
text.

<img width="1039" height="862" alt="image"
src="https://github.com/user-attachments/assets/a9523f51-c417-41b0-9926-d154c9601fd8"
/>

<br />
<br />

This PR fixes it.

<img width="1040" height="860" alt="image"
src="https://github.com/user-attachments/assets/09d5fecf-1faa-449d-86d9-a105464d31c3"
/>
2026-02-20 13:16:49 +01:00
Félix Malfait 66da296799 Unify MCP into single endpoint with lazy tool discovery (#18113)
## Summary

- Consolidates the MCP server from two endpoints (`/mcp` +
`/mcp/metadata`) into a **single `POST /mcp`** endpoint exposing five
high-level tools: `get_tool_catalog`, `learn_tools`, `execute_tool`,
`load_skills`, and `search_help_center`
- Fixes **DATABASE_CRUD tools not accessible via API key auth** by
removing an unnecessary `userId`/`userWorkspaceId` guard in
`DatabaseToolProvider` and threading `ApiKeyWorkspaceAuthContext`
through the tool context chain
- Improves tool descriptions with **STEP 1/2/3 workflow guidance** so AI
clients follow the correct discovery flow (catalog → learn → execute)
instead of guessing tool names
- Simplifies the **frontend AI settings** by removing the schema picker
dropdown (no more "Core Schema" vs "Metadata Schema" choice)

## Changes

### Backend
- **Deleted**: `mcp-metadata.controller.ts`, `mcp-metadata.service.ts`
(merged into core)
- **New**: `get-tool-catalog.tool.ts` — browsable, categorized tool
discovery
- **Fixed**: `DatabaseToolProvider.generateDescriptors` — removed guard
that blocked API key access to CRUD tools
- **Fixed**: `ToolContext` type + `ToolRegistryService` — `authContext`
now flows through so API key CRUD execution works end-to-end
- **Updated**: `McpProtocolService` — builds
`ApiKeyWorkspaceAuthContext` for API key requests
- **Updated**: All MCP tool descriptions with explicit step numbering

### Frontend
- **Simplified**: `SettingsAIMCP.tsx` — removed schema selector
dropdown, shows single MCP config

## Test plan
- [x] All 19 MCP unit tests pass (controller + protocol service)
- [x] Server and frontend lint clean
- [x] Server and frontend typecheck pass
- [x] Live-tested on localhost:3000 with API key: `get_tool_catalog`
returns 236 tools including 196 DATABASE_CRUD tools
- [x] Live-tested `execute_tool` with `find_companies` via API key —
returns real data
- [x] Tested MCP connection from Cursor IDE via project-level
`.cursor/mcp.json`

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-20 13:09:54 +01:00
martmull 3bc887e12e Add default relation to standard object on custom object in manifest (#18033)
add default relation fields when creating an object from an application

---------

Co-authored-by: prastoin <paul@twenty.com>
2026-02-20 11:49:06 +01:00
Thomas Trompette d060c843d1 Remove sse feature flag (#18114)
As title
2026-02-20 11:46:03 +01:00
Paul Rastoin 175df59c21 Support Skill in manifest (#18092)
# Introduction
Support skill in manifest, pre-requisite for the twenty standard app
migration
2026-02-20 11:45:42 +01:00
Félix Malfait 6ad581d178 Fix global search for CJK and non-tokenizable text (#18030)
## Summary

Fixes #12962

- Adds a two-pass ILIKE fallback to the global search service
(`search.service.ts`)
- **Fast path**: runs the tsvector query first (uses GIN index,
sub-millisecond)
- **Fallback**: only if tsvector returns fewer results than the limit,
runs an ILIKE query on `searchVector::text` to catch cases where
PostgreSQL's `simple` text search config fails to tokenize (continuous
CJK text, etc.)
- Zero performance impact for the common case (Latin text where tsvector
works)
- Also adds `escapeForIlike` utility to properly escape `%`, `_`, `\` in
user input

### Why tsvector fails for CJK

PostgreSQL's `simple` config treats continuous CJK text as a single
lexeme:
- `to_tsvector('simple', '示例商业线索')` → `'示例商业线索':1`
- Searching `商业:*` only prefix-matches from the start, so it misses `商业`
in the middle

The ILIKE fallback catches these substring matches when the tsvector
path can't.

### What this fixes

- Global search (command menu / sidebar)
- Relation picker (single and multi-object)
- Morph relation picker

All three use `search.service.ts` under the hood.

Co-authored-by: mykh-hailo (original direction in #18021)

## Test plan

- [ ] Search `示例` with records `示例商业线索` and `示例-商业-线索` → both should
appear
- [ ] Search `商业` → both should appear (previously only the hyphenated
one did)
- [ ] Search for Latin text (e.g. `john`) → same performance, results
unchanged
- [ ] Relation picker search with CJK text → results appear
- [ ] Search input with special chars like `%` or `_` → no SQL
injection, results correct


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: mykh-hailo <mykh-hailo@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-20 11:02:09 +01:00
neo773 712b1553bd Fix participant matching failing due to updating all columns instead of only changed fields (#18105)
The updateMany in matchParticipants was spreading the entire participant
object into the SET clause, which included generated columns
(searchVector) and composite field columns (createdBySource) that can't
be written to. Narrowed the update to only set personId and
workspaceMemberId.
```
[1] query failed: UPDATE "workspace_3ixj3i1a5avy16ptijtb3lae3"."calendarEventParticipant" SET "id" = $1, "createdAt" = $2, "updatedAt" = $3, "deletedAt" = $4, "createdBySource" = $5, "createdByWorkspaceMemberId" = $6, "createdByName" = $7, "createdByContext" = $8, "updatedBySource" = $9, "updatedByWorkspaceMemberId" = $10, "updatedByName" = $11, "updatedByContext" = $12, "position" = $13, "searchVector" = $14, "handle" = $15, "displayName" = $16, "isOrganizer" = $17, "responseStatus" = $18, "calendarEventId" = $19, "personId" = $20, "workspaceMemberId" = $21 WHERE "id" = $22 RETURNING * -- PARAMETERS: ["f1526103-451a-429f-9743-3a81c3a3e3aa","2026-02-19T22:23:32.354Z","2026-02-19T22:23:32.354Z",null,"MANUAL",null,"System",null,"MANUAL",null,"System",null,0,"'test@test.com':1","test@test.com","",false,"NEEDS_ACTION","fb1892a8-6daf-435b-a43b-e8fe8693eb99","60bf9e82-f1b7-4bed-a1af-7039fb9c32f5",null,"f1526103-451a-429f-9743-3a81c3a3e3aa"]
[1] error: error: column "searchVector" can only be updated to DEFAULT
[1] Exception Captured
[1]   undefined
[1]   [
[1]     PostgresException [Error]: Data validation error.
[1]         at computeTwentyORMException (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/engine/twenty-orm/error-handling/compute-twenty-orm-exception.js:35:19)
[1]         at WorkspaceUpdateQueryBuilder.executeMany (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/engine/twenty-orm/repository/workspace-update-query-builder.js:269:82)
[1]         at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
[1]         at async WorkspaceRepository.updateMany (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/engine/twenty-orm/repository/workspace.repository.js:234:25)
[1]         at async MatchParticipantService.matchParticipants (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/modules/match-participant/match-participant.service.js:93:13)
[1]         at async /Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/modules/match-participant/match-participant.service.js:160:13
[1]         at async MatchParticipantService.matchParticipantsForPeople (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/modules/match-participant/match-participant.service.js:130:9)
[1]         at async CalendarEventParticipantMatchParticipantJob.handle (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/modules/calendar/calendar-event-participant-manager/jobs/calendar-event-participant-match-participant.job.js:45:13)
[1]         at async MessageQueueExplorer.invokeProcessMethods (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/engine/core-modules/message-queue/message-queue.explorer.js:113:17)
[1]         at async MessageQueueExplorer.handleProcessor (/Users/huzef/Documents/bounties/twenty/packages/twenty-server/dist/engine/core-modules/message-queue/message-queue.explorer.js:104:13) {
[1]       code: '428C9'
[1]     }
[1]   ]
```
2026-02-20 10:25:10 +01:00
sonarly[bot] cc1145c701 Fix: Person avatar upload fails with unknown field error (#18109)
## Automated fix for [bug None](https://sonarly.com/issue/None?type=bug)

**Severity:** `critical`

### Summary
When uploading a person avatar with the new FILES field migration
enabled, the optimistic record validation in
computeOptimisticRecordFromInput throws because the avatarFile field may
not be recognized in the person object metadata, crashing the upload
flow.

### User Impact
Users with the IS_FILES_FIELD_MIGRATED feature flag enabled cannot
upload or change a person's avatar photo. The upload operation throws an
unhandled error, preventing the avatar update from completing.

### Root Cause
The usePersonAvatarUpload hook passes avatarFile as a field in
updateOneRecordInput when calling updateOneRecord. This input goes
through computeOptimisticRecordFromInput, which validates that every
field in the record input exists in objectMetadataItem.fields. The
avatarFile field (type FILES) was recently added as a standard field on
the person object, but may not yet be present in the frontend's cached
object metadata for all workspaces (e.g., workspaces where the metadata
has not been synced after the migration, or SSE events arriving before
metadata refresh). When avatarFile is not found in the metadata fields
array, the validation throws. The useUpdateOneRecord hook supports an
optimisticRecord parameter that bypasses this validation entirely, but
usePersonAvatarUpload did not provide it.

Introduced by Etienne in commit d0c1841f0f on 2026-02-11, which added
the avatar file migration and upload logic but did not supply an
optimisticRecord to bypass the strict field validation in
computeOptimisticRecordFromInput.

**Introduced by:** Etienne on 2026-02-11 in commit
[`d0c1841`](https://github.com/twentyhq/twenty/commit/d0c1841f0f8a6a9069bbe2e9cafacf4ff6137f82)

### Suggested Fix
Pass an explicit optimisticRecord parameter when calling updateOneRecord
from usePersonAvatarUpload. The useUpdateOneRecord hook uses
optimisticRecord via nullish coalescing (optimisticRecord ??
computeOptimisticRecordFromInput(...)), so providing it bypasses the
strict field validation in computeOptimisticRecordFromInput entirely.
The avatarFile value is extracted into a shared variable to avoid
duplication between updateOneRecordInput and optimisticRecord.

---
*Generated by [Sonarly](https://sonarly.com)*

---------

Co-authored-by: Sonarly Claude Code <claude-code@sonarly.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Etienne <etiennejouan@users.noreply.github.com>
2026-02-20 08:27:53 +00:00
Félix Malfait 726b1373d9 fix: convert metered tier upTo from internal to display credits in listPlans (#18108)
## Summary
- The `listPlans` GraphQL query was returning metered tier `upTo` values
in internal credit units (1000x the display value), causing "Credits by
period" and "Credit Plan" dropdowns to show "50M" instead of "50k"
- Applied the existing `INTERNAL_CREDITS_PER_DISPLAY_CREDIT` (1000)
divisor in `formatBillingDatabasePriceToMeteredPriceDTO`, matching the
conversion already used in `getMeteredProductsUsage` resolver
- Updated frontend mock data to reflect the corrected display-unit
values

## Test plan
- [x] Unit tests pass for `format-database-product-to-graphql-dto.util`
- [x] Unit tests pass for `metered-credit.service` and
`billing-credit-rollover.service`
- [ ] Verify billing page shows correct credit amounts (50k, not 50M)
for "Credits by period" and "Credit Plan"


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
2026-02-20 09:44:11 +01:00
github-actions[bot] 783e57f5d8 i18n - translations (#18100)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-19 21:14:57 +01:00
Ankit Chauhan 163254baef fix: laggy edition of FormNumberFieldInput (#18011)
### What this PR do ?

Stops the delay fields from updating the workflow on every keystroke by
keeping values locally and saving them on blur, which fixes the cached
relation error

Fixed #15709

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2026-02-19 17:16:25 +00:00
Abhishek Kumar aaa6511007 feat: added workspace member filter for actor fields (#16628)
Closes #16619

This PR adds support for filtering ACTOR fields by `Workspace Member`
subfield, enabling users to filter records by who created them with a
`Me` option.

I replicated the same UX and code structure as the Relation field filter
for consistency.

Each filter selection triggers a server-side GraphQL call. But there is
client-side filtering in `isRecordMatchingFilter.ts` which instantly
filters already-loaded records while the server is fetching new results.
I replicated this behaviour from how `FULL_NAME` and other composite
fields handle filtering.


UX decision that were taken by me (Let me know if changes are needed) : 
- The filter shows comma separated selected workspace member names until
3 members are selected. After that it shows [no of selected members]
workspace members.

<img width="643" height="283" alt="Screenshot 2025-12-17 at 8 01 23 PM"
src="https://github.com/user-attachments/assets/18d524f4-979b-4d92-ad64-aa7b63be7897"
/>
<img width="774" height="309" alt="Screenshot 2025-12-17 at 8 01 33 PM"
src="https://github.com/user-attachments/assets/779f374f-1501-48f9-afa2-a78628e067b1"
/>
<img width="737" height="397" alt="Screenshot 2025-12-17 at 8 01 40 PM"
src="https://github.com/user-attachments/assets/4e8b963e-8a0f-467d-91ae-48bca4e1d842"
/>
<img width="697" height="334" alt="Screenshot 2025-12-17 at 8 01 53 PM"
src="https://github.com/user-attachments/assets/c9a0e4bb-48b4-486b-a4f9-d7c49ff3852c"
/>
<img width="684" height="343" alt="Screenshot 2025-12-17 at 8 02 04 PM"
src="https://github.com/user-attachments/assets/d5c45eba-06a3-40fc-b9d0-d585dc8bc136"
/>

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2026-02-19 16:56:40 +00:00
Weiko 2a670520b9 Add page layout backfill command (#18095)
## Context
Command to backfill record page layouts and related entities for legacy
workspaces.

## Test
Set SHOULD_SEED_STANDARD_RECORD_PAGE_LAYOUTS=false, reset DB then run
the command and compare with Set
SHOULD_SEED_STANDARD_RECORD_PAGE_LAYOUTS=true on a different workspace
2026-02-19 16:24:20 +00:00
Charles Bochet 10bd005021 Rework types for logic function (#18074)
## Summary

- **Consolidate logic function services**: Remove
`LogicFunctionMetadataService` and consolidate all logic function CRUD
operations into `LogicFunctionFromSourceService`, with a new
`LogicFunctionFromSourceHelperService` for shared validation/migration
logic
- **Introduce typed conversion utils following the skill pattern**: Add
`fromCreateLogicFunctionFromSourceInputToUniversalFlatLogicFunctionToCreate`
and `fromUpdateLogicFunctionFromSourceInputToFlatLogicFunctionToUpdate`
that convert DTO inputs directly to flat entities
(`UniversalFlatLogicFunction` / `FlatLogicFunction`), replacing the
previous intermediate `UpdateLogicFunctionMetadataParams` indirection
- **Simplify `CodeStepBuildService`**: Remove ~100 lines of manual
duplication logic by delegating to
`LogicFunctionFromSourceService.duplicateOneWithSource`
- **Remove completed 1-17 migration**: Delete
`MigrateWorkflowCodeStepsCommand` and associated utils that migrated
workflow code steps from serverless functions to logic functions
2026-02-19 17:25:08 +01:00
Félix Malfait 0e25aeb5be chore: upgrade @swc/core to 1.15.11 and align SWC ecosystem (#18088)
## Summary

- Upgrades `@swc/core` from 1.13.3 to **1.15.11** (swc_core v56), which
introduces CBOR-based plugin serialization replacing rkyv, eliminating
strict version-matching between SWC core and Wasm plugins
- Upgrades `@lingui/swc-plugin` from ^5.6.0 to **^5.11.0** (swc_core
50.2.3, built with `--cfg=swc_ast_unknown` for cross-version
compatibility)
- Upgrades `@swc/plugin-emotion` from 10.0.4 to **14.6.0** (swc_core 53,
also with backward-compat feature)
- Upgrades companion packages: `@swc-node/register` 1.8.0 → 1.11.1,
`@swc/helpers` ~0.5.2 → ~0.5.18, `@vitejs/plugin-react-swc` 3.11.0 →
4.2.3

### Why this is safe now

Starting from `@swc/core v1.15.0`, SWC replaced the rkyv serialization
scheme with CBOR (a self-describing format) and added `Unknown` AST enum
variants. Plugins built with `swc_core >= 47` and
`--cfg=swc_ast_unknown` are now forward-compatible across `@swc/core`
versions. Both `@lingui/swc-plugin@5.10.1+` and
`@swc/plugin-emotion@14.0.0+` have this support, meaning the old
version-matching nightmare between Lingui and SWC is largely solved.

Reference: https://github.com/lingui/swc-plugin/issues/179

## Test plan

- [x] `yarn install` resolves without errors
- [x] `npx nx build twenty-shared` succeeds
- [x] `npx nx build twenty-ui` succeeds (validates
@swc/plugin-emotion@14.6.0)
- [x] `npx nx typecheck twenty-front` succeeds
- [x] `npx nx build twenty-front` succeeds (validates vite + swc +
lingui pipeline)
- [x] `npx nx build twenty-emails` succeeds (validates lingui plugin)
- [x] Frontend jest tests pass (validates @swc/jest +
@lingui/swc-plugin)
- [x] Server jest tests pass (validates server-side SWC + lingui)

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-19 15:27:56 +00:00
BugIsGod e051cce24f Fix: add a new style to the target text box (#18065)
### Approach
I add some new rules for the style of the target text box. (Fix: #13229
)
<img width="842" height="545" alt="target class"
src="https://github.com/user-attachments/assets/7cd0a615-392a-493b-831f-77ddb93de5fc"
/>


**This is what it looks like now.**
<img width="320" height="224" alt="image"
src="https://github.com/user-attachments/assets/26514102-e684-49ce-915d-43e5677520a5"
/>
2026-02-19 13:59:11 +00:00
Raphaël Bosi bd03073b6d [FRONT COMPONENTS] Declare command menu items in front components (#18047)
## Description

- Adds support for declaring command menu items directly within
`defineFrontComponent` via an optional command config property
- Introduces a new `CommandMenuItemManifest` type in twenty-shared and
wires it through the manifest build pipeline

## Example Of usage

```tsx
import { defineFrontComponent } from "twenty-sdk";

const TestAction = () => {
  return <div>Test Action</div>;
};

export default defineFrontComponent({
  universalIdentifier: "6c289461-0007-4a62-a99f-69e5c11a4ce7",
  name: "test-action",
  description: "Test Action",
  component: TestAction,
  command: {
    universalIdentifier: "c07df864-495f-46f3-9f5b-9d3ce2589e9b",
    label: "Run My Action",
    icon: "IconBolt",
    isPinned: false,
  },
});

```

## Video QA


https://github.com/user-attachments/assets/f910fc6a-44a9-45d1-87c5-f0ce64bb3878
2026-02-19 15:23:46 +01:00
Etienne b3d8f8813f Remove non positive integer constraint on Nav Menu Item 2/2 (#18090)
Follow up https://github.com/twentyhq/twenty/pull/18081
2026-02-19 15:17:25 +01:00
Weiko 37d9828458 Fix google compose scope not gated by feature flag (#18093)
## Context
New google api scope has been introduced in
https://github.com/twentyhq/twenty/pull/17793 without being gated behind
a feature flag

Microsoft is using pre-existing Mail.ReadWrite scope there is nothing to
gate

## Before
<img width="553" height="445" alt="Screenshot 2026-02-19 at 14 57 58"
src="https://github.com/user-attachments/assets/59a4f76b-d38d-492f-b013-b6cad4091a7f"
/>


## After
<img width="535" height="392" alt="Screenshot 2026-02-19 at 14 58 44"
src="https://github.com/user-attachments/assets/0337bf15-ec30-4549-bb9d-571a982dffd8"
/>
2026-02-19 15:16:54 +01:00
Thomas Trompette e16b6d6485 Create LLMS.md on create-twenty-app (#18091)
Managed to create a many to many app with minimal instructions. File
will need to be enriched with more pitfalls.

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-19 14:51:31 +01:00
Paul Rastoin 9626c7ce02 Twenty standard app static options id (#18089)
# Introduction
While preparing the twenty-standard as code migration to twenty-app
through sdk I've faced permanent field enum update as the id was
generated dynamically at each twenty standard app construction
Making them deterministic in order to avoid having this noise

Won't backfill this on existing workspace as it's not critical and that
we will rework the options in the future
2026-02-19 13:19:09 +00:00
martmull 754de411fe Factorize and add public-assets/*path endpoint (#18080)
as title
2026-02-19 14:00:52 +01:00
Charles Bochet 530f74e28c Migrate more to Jotai (#18087)
Continue jotai migration
2026-02-19 13:50:21 +01:00
Paul Rastoin 5a46cf7bd3 Refactor message backfill command (#18078)
# Introduction
Atomically create the field and object to be created
And avoid synchronizing unrelated non up to date object and fields 
Followup https://github.com/twentyhq/twenty/pull/17398
2026-02-19 12:18:42 +00:00
github-actions[bot] 7b10202c69 i18n - translations (#18086)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-19 13:17:01 +01:00
Etienne 9e54a8082c Remove non positive integer constraint on Nav Menu Item (#18081)
To fit with position typed field logic + Ease favorite to nav menu item
migration (which have negative and float position)
2026-02-19 11:24:14 +00:00
Charles Bochet 1a13258302 Keep migrating to jotai (#18064)
And we continue!
2026-02-19 12:10:02 +01:00
Abdullah. c0ea049ad7 fix: remove the error message for test failure in ci-front (#18076)
Introduced an error message on twenty-front CI earlier to try and inform
the user that test failure could be a coverage issue if no individual
test was failing. However, it led to the assumption that it must be
coverage failure in all cases even when it was test failure leading to
the CI being red.

This PR reverts the change.
2026-02-19 11:57:01 +01:00
github-actions[bot] b33f86fbf5 i18n - translations (#18079)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-19 11:56:21 +01:00
Paul Rastoin 88424611ec Refactor and standardize isSystem field and object (#17992)
# Introduction

## Centralize system field definitions
- Extract a single `PARTIAL_SYSTEM_FLAT_FIELD_METADATAS` constant as the
source of truth for all 8 system fields (`id`, `createdAt`, `updatedAt`,
`deletedAt`, `createdBy`, `updatedBy`, `position`, `searchVector`),
eliminating duplication across custom object and standard app field
builders
- Refactor `buildDefaultFlatFieldMetadatasForCustomObject` to use the
shared constant via a new `buildObjectSystemFlatFieldMetadatas` helper

## Mark system fields as `isSystem: true`
- Fields `id`, `createdAt`, `updatedAt`, `deletedAt`, `createdBy`,
`updatedBy`, `position`, `searchVector` are now properly flagged as
system fields across all standard objects and custom object creation
- Standard app field builders for all ~30 standard objects updated to
set `isSystem: true` on `createdAt`, `updatedAt`, `deletedAt`,
`createdBy`, `updatedBy`
- System-only standard objects (blocklist, calendar channels, message
threads, etc.) now also include `createdBy`, `updatedBy`, `position`,
`searchVector` field definitions that were previously missing

## Validate system fields on object creation
- New transversal validation (`crossEntityTransversalValidation`) runs
after all atomic entity validations in the build orchestrator, ensuring
all 8 system fields are present with correct `type` and `isSystem: true`
when an object is created
- New `buildUniversalFlatObjectFieldByNameAndJoinColumnMaps` utility to
resolve field names to universal identifiers for a given object
- New exception codes: `MISSING_SYSTEM_FIELD` and `INVALID_SYSTEM_FIELD`
on `ObjectMetadataExceptionCode`

## Protect system fields and objects from mutation
- Field validators now block update/delete of `isSystem` fields by
non-system callers (`FIELD_MUTATION_NOT_ALLOWED`)
- Object validators now block update/delete of `isSystem` objects by
non-system callers
- `POSITION` and `TS_VECTOR` field type validators replaced: instead of
rejecting creation outright, they now validate that the field is named
correctly (`position` / `searchVector`) and has `isSystem: true`

## Distinguish `isSystemBuild` from `isCallerTwentyStandardApp`
- New `isCallerTwentyStandardApp` utility checks whether the caller's
`applicationUniversalIdentifier` matches the twenty standard app
- Name-sync logic (`isFlatFieldMetadataNameSyncedWithLabel`,
`areFlatObjectMetadataNamesSyncedWithLabels`) refactored to use
`isCallerTwentyStandardApp` for custom suffix decisions, keeping
`isSystemBuild` for mutation permission checks
- `WorkspaceMigrationBuilderOptions` type updated to include
`applicationUniversalIdentifier`

## Adapt frontend filtering
- New `HIDDEN_SYSTEM_FIELD_NAMES` constant (`id`, `position`,
`searchVector`) and `isHiddenSystemField` utility to only hide truly
internal fields while keeping user-facing system fields (`createdAt`,
`updatedAt`, `deletedAt`, `createdBy`, `updatedBy`) visible in the UI
- ~20 frontend files updated to replace `!field.isSystem` checks with
`!isHiddenSystemField(field)` across record index, settings, data model,
charts, workflows, spreadsheet import, aggregations, and role
permissions

## Add 1.19 upgrade commands
- **`backfill-system-fields-is-system`**: Raw SQL command to set
`isSystem = true` on existing workspace fields matching system field
names, and fix `position` field type from `NUMBER` to `POSITION` for
`favorite`/`favoriteFolder` objects. Includes proper cache invalidation.
- **`add-missing-system-fields-to-standard-objects`**: Codegen'd
workspace migration to create missing `position`, `searchVector`,
`createdBy`, `updatedBy` fields on standard objects that didn't
previously have them. Runs via `WorkspaceMigrationRunnerService` in a
single transaction with idempotency check. **Known limitation**: assumes
all standard objects exist and are valid in the target workspace.

## Add `universalIdentifier` for system fields in standard object
constants
- `standard-object.constant.ts` updated to include `universalIdentifier`
for `createdBy`, `updatedBy`, `position`, and `searchVector` across all
standard objects
- `fieldManifestType.ts` updated to support the new field manifest shape

## System relation
Completely removed and backfilled all `isSystem` relation to be false
false
As we won't require an object to have any relation system fields

## Add integration tests
- New test suite `failing-sync-application-object-system-fields`
covering: missing system fields, wrong field types (`id` as TEXT,
`createdAt` as TEXT, `position` as TEXT), system field deletion
attempts, and system field update attempts
- New test utilities: `buildDefaultObjectManifest` (builds an object
manifest with all 8 system fields) and `setupApplicationForSync`
(centralizes application setup)
- Existing successful sync test updated to verify system fields are
created with correct properties

## Next step
Make the builder scope the compared entity to be the currently built app
+ nor twenty standard app
2026-02-19 10:13:50 +00:00
Félix Malfait 082400f751 Add objectRecordCounts query to /metadata endpoint (#18054)
## Summary

- Adds an `objectRecordCounts` query on the `/metadata` GraphQL endpoint
that returns approximate record counts for all objects in the workspace
- Uses PostgreSQL's `pg_class.reltuples` catalog stats — a single
instant query instead of N `COUNT(*)` table scans
- Replaces the previous `CombinedFindManyRecords` approach which hit the
server's 20 root resolver limit and silently showed 0 for all counts on
the settings Data Model page

### Server
- `ObjectRecordCountDTO` — GraphQL type with `objectNamePlural` and
`totalCount`
- `ObjectRecordCountService` — reads `pg_class` catalog for the
workspace schema
- Query added to `ObjectMetadataResolver` with `@MetadataResolver()` +
`NoPermissionGuard`

### Frontend
- `OBJECT_RECORD_COUNTS` query added to
`object-metadata/graphql/queries.ts`
- `useCombinedGetTotalCount` simplified to a zero-argument hook using
the new query
- `SettingsObjectTable` simplified to a single hook call

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-19 09:02:31 +00:00
1592 changed files with 37227 additions and 17924 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ on:
jobs:
deploy-main:
timeout-minutes: 3
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v2
+1 -1
View File
@@ -11,7 +11,7 @@ on:
jobs:
deploy-tag:
timeout-minutes: 3
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v2
+1 -1
View File
@@ -16,7 +16,7 @@ permissions:
jobs:
changed-files:
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
outputs:
any_changed: ${{ steps.changed-files.outputs.any_changed }}
steps:
+1 -1
View File
@@ -34,7 +34,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 45
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
services:
postgres:
image: twentycrm/twenty-postgres-spilo
+2 -2
View File
@@ -25,7 +25,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
strategy:
matrix:
task: [lint, typecheck, test]
@@ -50,7 +50,7 @@ jobs:
ci-create-app-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, create-app-test]
steps:
- name: Fail job if any needs failed
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 10
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
+1 -1
View File
@@ -56,7 +56,7 @@ jobs:
ci-emails-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, emails-test]
steps:
- name: Fail job if any needs failed
+6 -13
View File
@@ -115,7 +115,7 @@ jobs:
path: packages/twenty-front/coverage/storybook/coverage-shard-${{matrix.shard}}.json
merge-reports-and-check-coverage:
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: front-sb-test
env:
PATH_TO_COVERAGE: packages/twenty-front/coverage/storybook
@@ -169,8 +169,9 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
env:
NODE_OPTIONS: '--max-old-space-size=4096'
TASK_CACHE_KEY: front-task-${{ matrix.task }}
strategy:
matrix:
@@ -202,14 +203,6 @@ jobs:
with:
tag: scope:frontend
tasks: ${{ matrix.task }}
- name: Check for coverage threshold failure
if: always() && steps.run-task.outcome == 'failure' && matrix.task == 'test'
shell: bash
run: |
echo "::error::The test task failed. If no individual test is failing, this is likely a coverage threshold not being met."
echo ""
echo "To debug locally, run: npx nx run twenty-front:test:ci"
exit 1
- name: Save ${{ matrix.task }} cache
uses: ./.github/actions/save-cache
with:
@@ -243,7 +236,7 @@ jobs:
path: packages/twenty-front/build
retention-days: 1
e2e-test:
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check-e2e, front-build]
if: |
always() &&
@@ -353,7 +346,7 @@ jobs:
ci-front-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs:
[
changed-files-check,
@@ -370,7 +363,7 @@ jobs:
ci-e2e-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check-e2e, e2e-test]
steps:
- name: Fail job if any needs failed
+1 -1
View File
@@ -25,7 +25,7 @@ defaults:
jobs:
create_pr:
timeout-minutes: 10
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
+1 -1
View File
@@ -15,7 +15,7 @@ defaults:
jobs:
tag_and_release:
timeout-minutes: 10
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'release')
steps:
- name: Check PR Author
+2 -2
View File
@@ -23,7 +23,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
strategy:
matrix:
task: [lint, typecheck, test:unit, storybook:build, storybook:test, test:integration]
@@ -94,7 +94,7 @@ jobs:
ci-sdk-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, sdk-test, sdk-e2e-test]
steps:
- name: Fail job if any needs failed
+1 -1
View File
@@ -250,7 +250,7 @@ jobs:
ci-server-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, server-setup, server-test, server-integration-test]
steps:
- name: Fail job if any needs failed
+4 -2
View File
@@ -22,7 +22,9 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
env:
NODE_OPTIONS: '--max-old-space-size=4096'
strategy:
matrix:
task: [lint, typecheck, test]
@@ -45,7 +47,7 @@ jobs:
ci-shared-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, shared-test]
steps:
- name: Fail job if any needs failed
@@ -23,7 +23,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -92,7 +92,7 @@ jobs:
ci-test-docker-compose-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, test]
steps:
- name: Fail job if any needs failed
+2 -2
View File
@@ -25,7 +25,7 @@ concurrency:
jobs:
danger-js:
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
if: github.event.action != 'closed'
steps:
- uses: actions/checkout@v4
@@ -38,7 +38,7 @@ jobs:
congratulate:
timeout-minutes: 3
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
if: github.event.action == 'closed' && github.event.pull_request.merged == true
steps:
- uses: actions/checkout@v4
+2 -2
View File
@@ -23,7 +23,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 10
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
services:
postgres:
image: twentycrm/twenty-postgres-spilo
@@ -65,7 +65,7 @@ jobs:
ci-website-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
needs: [changed-files-check, website-build]
steps:
- name: Fail job if any needs failed
+2 -2
View File
@@ -23,7 +23,7 @@ jobs:
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude') && github.event.comment.user.type != 'Bot') ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude') && github.event.review.user.type != 'Bot') ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
timeout-minutes: 60
permissions:
contents: write
@@ -96,7 +96,7 @@ jobs:
claude-cross-repo:
if: github.event_name == 'repository_dispatch'
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
timeout-minutes: 60
permissions:
contents: write
+1 -1
View File
@@ -34,7 +34,7 @@ concurrency:
jobs:
pull_docs_translations:
name: Pull docs translations
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
+1 -1
View File
@@ -21,7 +21,7 @@ concurrency:
jobs:
push_docs:
name: Push documentation to Crowdin
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
+1 -1
View File
@@ -32,7 +32,7 @@ concurrency:
jobs:
pull_translations:
name: Pull translations
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
+1 -1
View File
@@ -17,7 +17,7 @@ concurrency:
jobs:
extract_translations:
name: Extract and upload translations
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
+1 -1
View File
@@ -18,7 +18,7 @@ concurrency:
jobs:
qa_report:
name: Generate QA Report
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
trigger-preview:
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.action == 'reopened' || (github.event.action == 'labeled' && github.event.label.name == 'preview-app')
timeout-minutes: 5
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Trigger preview environment workflow
uses: peter-evans/repository-dispatch@v2
+21 -21
View File
@@ -11,13 +11,13 @@ on:
jobs:
preview-environment:
timeout-minutes: 310
runs-on: ubuntu-latest
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout PR
uses: actions/checkout@v4
with:
ref: ${{ github.event.client_payload.pr_head_sha }}
- name: Run compose setup
run: |
echo "Patching docker-compose.yml..."
@@ -25,17 +25,17 @@ jobs:
yq eval 'del(.services.server.image)' -i packages/twenty-docker/docker-compose.yml
yq eval '.services.server.build.context = "../../"' -i packages/twenty-docker/docker-compose.yml
yq eval '.services.server.build.dockerfile = "./packages/twenty-docker/twenty/Dockerfile"' -i packages/twenty-docker/docker-compose.yml
yq eval 'del(.services.worker.image)' -i packages/twenty-docker/docker-compose.yml
yq eval '.services.worker.build.context = "../../"' -i packages/twenty-docker/docker-compose.yml
yq eval '.services.worker.build.dockerfile = "./packages/twenty-docker/twenty/Dockerfile"' -i packages/twenty-docker/docker-compose.yml
echo "Adding SIGN_IN_PREFILLED environment variable to server service..."
yq eval '.services.server.environment.SIGN_IN_PREFILLED = "${SIGN_IN_PREFILLED}"' -i packages/twenty-docker/docker-compose.yml
echo "Setting up .env file..."
cp packages/twenty-docker/.env.example packages/twenty-docker/.env
echo "Generating secrets..."
echo "" >> packages/twenty-docker/.env
echo "# === Randomly generated secrets ===" >> packages/twenty-docker/.env
@@ -46,24 +46,24 @@ jobs:
cd packages/twenty-docker/
docker compose build
working-directory: ./
- name: Create Tunnel
id: expose-tunnel
uses: codetalkio/expose-tunnel@v1.5.0
with:
service: bore.pub
port: 3000
- name: Start services with correct SERVER_URL
run: |
cd packages/twenty-docker/
# Update the SERVER_URL with the tunnel URL
echo "Setting SERVER_URL to ${{ steps.expose-tunnel.outputs.tunnel-url }}"
sed -i '/SERVER_URL=/d' .env
echo "" >> .env
echo "SERVER_URL=${{ steps.expose-tunnel.outputs.tunnel-url }}" >> .env
# Start the services
echo "Docker compose up..."
docker compose up -d || {
@@ -71,7 +71,7 @@ jobs:
docker compose logs
exit 1
}
echo "Waiting for services to be ready..."
count=0
while [ ! $(docker inspect --format='{{.State.Health.Status}}' twenty-db-1) = "healthy" ] || [ ! $(docker inspect --format='{{.State.Health.Status}}' twenty-server-1) = "healthy" ]; do
@@ -84,7 +84,7 @@ jobs:
fi
echo "Still waiting for services... ($count/60)"
done
echo "All services are up and running!"
working-directory: ./
@@ -104,7 +104,7 @@ jobs:
echo "✅ Preview Environment Ready!"
echo "🔗 Preview URL: ${{ steps.expose-tunnel.outputs.tunnel-url }}"
echo "⏱️ This environment will be available for 5 hours"
- name: Post comment on PR
uses: actions/github-script@v6
with:
@@ -113,21 +113,21 @@ jobs:
const COMMENT_MARKER = '<!-- PR_PREVIEW_ENV -->';
const commentBody = `${COMMENT_MARKER}
🚀 **Preview Environment Ready!**
Your preview environment is available at: ${{ steps.expose-tunnel.outputs.tunnel-url }}
This environment will automatically shut down when the PR is closed or after 5 hours.`;
// Get all comments
const {data: comments} = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ github.event.client_payload.pr_number }},
});
// Find our comment
const botComment = comments.find(comment => comment.body.includes(COMMENT_MARKER));
if (botComment) {
// Update existing comment
await github.rest.issues.updateComment({
@@ -147,13 +147,13 @@ jobs:
});
console.log('Created new comment');
}
- name: Keep tunnel alive for 5 hours
run: timeout 300m sleep 18000 # Stop on whichever we reach first (300m or 5hour sleep)
- name: Cleanup
if: always()
run: |
cd packages/twenty-docker/
docker compose down -v
working-directory: ./
working-directory: ./
+2 -1
View File
@@ -28,7 +28,7 @@ See:
🚀 [Self-hosting](https://docs.twenty.com/developers/self-hosting/docker-compose)
🖥️ [Local Setup](https://docs.twenty.com/developers/local-setup)
# Does the world need another CRM?
# Why Twenty
We built Twenty for three reasons:
@@ -120,6 +120,7 @@ Below are a few features we have implemented to date:
<a href="https://greptile.com"><img src="./packages/twenty-website/public/images/readme/greptile.png" height="30" alt="Greptile" /></a>
<a href="https://sentry.io/"><img src="./packages/twenty-website/public/images/readme/sentry.png" height="30" alt="Sentry" /></a>
<a href="https://crowdin.com/"><img src="./packages/twenty-website/public/images/readme/crowdin.png" height="30" alt="Crowdin" /></a>
<a href="https://e2b.dev/"><img src="./packages/twenty-website/public/images/readme/e2b.svg" height="30" alt="E2B" /></a>
</p>
Thanks to these amazing services that we use and recommend for UI testing (Chromatic), code review (Greptile), catching bugs (Sentry) and translating (Crowdin).
+4 -4
View File
@@ -91,10 +91,10 @@
"@storybook/react-vite": "^10.1.11",
"@storybook/test-runner": "^0.24.2",
"@stylistic/eslint-plugin": "^1.5.0",
"@swc-node/register": "1.8.0",
"@swc-node/register": "1.11.1",
"@swc/cli": "^0.3.12",
"@swc/core": "1.13.3",
"@swc/helpers": "~0.5.2",
"@swc/core": "1.15.11",
"@swc/helpers": "~0.5.18",
"@swc/jest": "^0.2.39",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
@@ -137,7 +137,7 @@
"@typescript-eslint/parser": "^8.39.0",
"@typescript-eslint/utils": "^8.39.0",
"@typescript/native-preview": "^7.0.0-dev.20260116.1",
"@vitejs/plugin-react-swc": "3.11.0",
"@vitejs/plugin-react-swc": "4.2.3",
"@vitest/browser-playwright": "^4.0.18",
"@vitest/coverage-istanbul": "^4.0.18",
"@vitest/coverage-v8": "^4.0.18",
+3 -1
View File
@@ -89,6 +89,7 @@ In interactive mode, you can pick from:
- **Example front component** — a React UI component (`front-components/hello-world.tsx`)
- **Example view** — a saved view for the example object (`views/example-view.ts`)
- **Example navigation menu item** — a sidebar link (`navigation-menu-items/example-navigation-menu-item.ts`)
- **Example skill** — an AI agent skill definition (`skills/example-skill.ts`)
## What gets scaffolded
@@ -106,11 +107,12 @@ In interactive mode, you can pick from:
- `front-components/hello-world.tsx` — Example front component
- `views/example-view.ts` — Example saved view for the example object
- `navigation-menu-items/example-navigation-menu-item.ts` — Example sidebar navigation link
- `skills/example-skill.ts` — Example AI agent skill definition
## Next steps
- Run `yarn twenty help` to see all available commands.
- Use `yarn twenty auth:login` to authenticate with your Twenty workspace.
- Explore the generated project and add your first entity with `yarn twenty entity:add` (logic functions, front components, objects, roles, views, navigation menu items).
- Explore the generated project and add your first entity with `yarn twenty entity:add` (logic functions, front components, objects, roles, views, navigation menu items, skills).
- Use `yarn twenty app:dev` while you iterate — it watches, builds, and syncs changes to your workspace in real time.
- Types are autogenerated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated`.
@@ -0,0 +1,9 @@
## Base documentation
- Documentation: https://docs.twenty.com/developers/extend/capabilities/apps
- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/cli/__tests__/apps/rich-app
## 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.
@@ -36,6 +36,10 @@ yarn twenty function:execute # Execute a function with JSON payload
yarn twenty app:uninstall # Uninstall app from workspace
```
## LLMs instructions
Main docs and pitfalls are available in LLMS.md file.
## Learn More
To learn more about Twenty applications, take a look at the following resources:
@@ -114,6 +114,7 @@ export class CreateAppCommand {
includeExampleFrontComponent: false,
includeExampleView: false,
includeExampleNavigationMenuItem: false,
includeExampleSkill: false,
};
}
@@ -125,6 +126,7 @@ export class CreateAppCommand {
includeExampleFrontComponent: true,
includeExampleView: true,
includeExampleNavigationMenuItem: true,
includeExampleSkill: true,
};
}
@@ -164,6 +166,11 @@ export class CreateAppCommand {
value: 'navigationMenuItem',
checked: true,
},
{
name: 'Example skill (AI agent skill definition)',
value: 'skill',
checked: true,
},
],
},
]);
@@ -189,6 +196,7 @@ export class CreateAppCommand {
includeExampleView: includeView,
includeExampleNavigationMenuItem:
selectedExamples.includes('navigationMenuItem'),
includeExampleSkill: selectedExamples.includes('skill'),
};
}
@@ -7,4 +7,5 @@ export type ExampleOptions = {
includeExampleFrontComponent: boolean;
includeExampleView: boolean;
includeExampleNavigationMenuItem: boolean;
includeExampleSkill: boolean;
};
@@ -1,8 +1,9 @@
import * as fs from 'fs-extra';
import { join } from 'path';
import { tmpdir } from 'os';
import { copyBaseApplicationProject } from '@/utils/app-template';
import { type ExampleOptions } from '@/types/scaffolding-options';
import { GENERATED_DIR } from 'twenty-shared/application';
import { copyBaseApplicationProject } from '@/utils/app-template';
import * as fs from 'fs-extra';
import { tmpdir } from 'os';
import { join } from 'path';
// Mock fs-extra's copy function to skip copying base template (not available during tests)
jest.mock('fs-extra', () => {
@@ -23,11 +24,13 @@ const ALL_EXAMPLES: ExampleOptions = {
includeExampleFrontComponent: true,
includeExampleView: true,
includeExampleNavigationMenuItem: true,
includeExampleSkill: true,
};
const NO_EXAMPLES: ExampleOptions = {
includeExampleObject: false,
includeExampleField: false,
includeExampleSkill: false,
includeExampleLogicFunction: false,
includeExampleFrontComponent: false,
includeExampleView: false,
@@ -109,7 +112,7 @@ describe('copyBaseApplicationProject', () => {
const gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
expect(gitignoreContent).toContain('/node_modules');
expect(gitignoreContent).toContain('generated');
expect(gitignoreContent).toContain(GENERATED_DIR);
});
it('should create yarn.lock file', async () => {
@@ -437,6 +440,7 @@ describe('copyBaseApplicationProject', () => {
exampleOptions: {
includeExampleObject: false,
includeExampleField: false,
includeExampleSkill: false,
includeExampleLogicFunction: false,
includeExampleFrontComponent: true,
includeExampleView: false,
@@ -472,6 +476,7 @@ describe('copyBaseApplicationProject', () => {
appDirectory: testAppDirectory,
exampleOptions: {
includeExampleObject: false,
includeExampleSkill: false,
includeExampleField: false,
includeExampleLogicFunction: true,
includeExampleFrontComponent: false,
@@ -89,6 +89,14 @@ export const copyBaseApplicationProject = async ({
});
}
if (exampleOptions.includeExampleSkill) {
await createExampleSkill({
appDirectory: sourceFolderPath,
fileFolder: 'skills',
fileName: 'example-skill.ts',
});
}
await createDefaultPostInstallFunction({
appDirectory: sourceFolderPath,
fileFolder: 'logic-functions',
@@ -424,6 +432,36 @@ export default defineNavigationMenuItem({
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
};
const createExampleSkill = async ({
appDirectory,
fileFolder,
fileName,
}: {
appDirectory: string;
fileFolder?: string;
fileName: string;
}) => {
const universalIdentifier = v4();
const content = `import { defineSkill } from 'twenty-sdk';
export const EXAMPLE_SKILL_UNIVERSAL_IDENTIFIER =
'${universalIdentifier}';
export default defineSkill({
universalIdentifier: EXAMPLE_SKILL_UNIVERSAL_IDENTIFIER,
name: 'example-skill',
label: 'Example Skill',
description: 'A sample skill for your application',
icon: 'IconBrain',
content: 'Add your skill instructions here. Skills provide context and capabilities to AI agents.',
});
`;
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
};
const createApplicationConfig = async ({
displayName,
description,
@@ -14,6 +14,7 @@ Apps let you build and manage Twenty customizations **as code**. Instead of conf
**What you can do today:**
- Define custom objects and fields as code (managed data model)
- Build logic functions with custom triggers
- Define skills for AI agents
- Deploy the same app across multiple workspaces
## Prerequisites
@@ -44,7 +45,7 @@ yarn twenty app:dev
The scaffolder supports three modes for controlling which example files are included:
```bash filename="Terminal"
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
npx create-twenty-app@latest my-app
# Minimal: only core files (application-config.ts and default-role.ts)
@@ -117,8 +118,10 @@ my-twenty-app/
│ └── hello-world.tsx # Example front component
├── views/
│ └── example-view.ts # Example saved view definition
── navigation-menu-items/
└── example-navigation-menu-item.ts # Example sidebar navigation link
── navigation-menu-items/
└── example-navigation-menu-item.ts # Example sidebar navigation link
└── skills/
└── example-skill.ts # Example AI agent skill definition
```
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
@@ -147,6 +150,7 @@ The SDK detects entities by parsing your TypeScript files for **`export default
| `defineField()` | Field extensions for existing objects |
| `defineView()` | Saved view definitions |
| `defineNavigationMenuItem()` | Navigation menu item definitions |
| `defineSkill()` | AI agent skill definitions |
<Note>
**File naming is flexible.** Entity detection is AST-based — the SDK scans your source files for the `export default define<Entity>({...})` pattern. You can organize your files and folders however you like. Grouping by entity type (e.g., `logic-functions/`, `roles/`) is just a convention for code organization, not a requirement.
@@ -167,7 +171,7 @@ export default defineObject({
Later commands will add more files and folders:
- `yarn twenty app:dev` will auto-generate a typed API client in `node_modules/twenty-sdk/generated` (typed Twenty client + workspace types).
- `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, or roles.
- `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
## Authentication
@@ -220,6 +224,7 @@ The SDK provides helper functions for defining your app entities. As described i
| `defineField()` | Extend existing objects with additional fields |
| `defineView()` | Define saved views for objects |
| `defineNavigationMenuItem()` | Define sidebar navigation links |
| `defineSkill()` | Define AI agent skills |
These functions validate your configuration at build time and provide IDE autocompletion and type safety.
@@ -729,6 +734,40 @@ You can create new front components in two ways:
- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new front component.
- **Manual**: Create a new `*.front-component.tsx` file and use `defineFrontComponent()`.
### Skills
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Key points:
- `name` is a unique identifier string for the skill (kebab-case recommended).
- `label` is the human-readable display name shown in the UI.
- `content` contains the skill instructions — this is the text the AI agent uses.
- `icon` (optional) sets the icon displayed in the UI.
- `description` (optional) provides additional context about the skill's purpose.
You can create new skills in two ways:
- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
- **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
### Generated typed client
The typed client is auto-generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated` based on your workspace schema. Use it in your functions:
@@ -754,6 +793,51 @@ Notes:
- The API key's permissions are determined by the role referenced in your `application-config.ts` via `defaultRoleUniversalIdentifier`. This is the default role used by logic functions of your application.
- Applications can define roles to follow leastprivilege. Grant only the permissions your functions need, then point `defaultRoleUniversalIdentifier` to that role's universal identifier.
#### Uploading files
The generated `Twenty` client includes an `uploadFile` method for attaching files to file-type fields on your workspace objects. Because standard GraphQL clients do not support multipart file uploads natively, the client provides this dedicated method that implements the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec) under the hood.
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
The method signature:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parameter | Type | Description |
|-----------|------|-------------|
| `fileBuffer` | `Buffer` | The raw file contents |
| `filename` | `string` | The name of the file (used for storage and display) |
| `contentType` | `string` | MIME type of the file (defaults to `application/octet-stream` if omitted) |
| `fieldMetadataUniversalIdentifier` | `string` | The `universalIdentifier` of the file-type field on your object |
Key points:
- The method sends the file to the **metadata endpoint** (not the main GraphQL endpoint), where the upload mutation is resolved.
- It uses the field's `universalIdentifier` (not its workspace-specific ID), so your upload code works across any workspace where your app is installed — consistent with how apps reference fields everywhere else.
- The returned `url` is a signed URL you can use to access the uploaded file.
### Hello World example
@@ -15,6 +15,7 @@ description: أنشئ وأدِر تخصيصات Twenty على هيئة كود.
* عرِّف كائنات وحقولًا مخصصة على شكل كود (نموذج بيانات مُدار)
* أنشئ وظائف منطقية مع مشغلات مخصصة
* حدد المهارات لوكلاء الذكاء الاصطناعي
* انشر التطبيق نفسه عبر مساحات عمل متعددة
## المتطلبات الأساسية
@@ -45,7 +46,7 @@ yarn twenty app:dev
يدعم المُنشئ ثلاثة أوضاع للتحكم في ملفات الأمثلة التي سيتم تضمينها:
```bash filename="Terminal"
# الافتراضي (شامل): جميع الأمثلة (كائن، حقل، دالة منطقية، مكوّن الواجهة الأمامية، عرض، عنصر قائمة التنقل)
# الافتراضي (شامل): جميع الأمثلة (كائن، حقل، دالة منطقية، مكوّن الواجهة الأمامية، عرض، عنصر قائمة التنقل، مهارة)
npx create-twenty-app@latest my-app
# الأدنى: الملفات الأساسية فقط (application-config.ts و default-role.ts)
@@ -118,8 +119,10 @@ my-twenty-app/
│ └── hello-world.tsx # مكوّن واجهة أمامية — مثال
├── views/
│ └── example-view.ts # تعريف عرض محفوظ — مثال
── navigation-menu-items/
└── example-navigation-menu-item.ts # رابط تنقّل في الشريط الجانبي — مثال
── navigation-menu-items/
└── example-navigation-menu-item.ts # رابط تنقّل في الشريط الجانبي — مثال
└── skills/
└── example-skill.ts # تعريف مهارة لوكيل الذكاء الاصطناعي — مثال
```
مع `--minimal`، سيتم إنشاء الملفات الأساسية فقط (`application-config.ts` و`roles/default-role.ts` و`logic-functions/post-install.ts`). مع `--interactive`، تختار ملفات الأمثلة التي تريد تضمينها.
@@ -139,15 +142,16 @@ my-twenty-app/
يكتشف SDK الكيانات عبر تحليل ملفات TypeScript الخاصة بك بحثًا عن استدعاءات **`export default define<Entity>({...})`**. يحتوي كل نوع كيان على دالة مساعدة مقابلة يتم تصديرها من `twenty-sdk`:
| دالة مساعدة | نوع الكيان |
| ---------------------------- | --------------------------------- |
| `defineObject()` | تعريفات كائنات مخصصة |
| `defineLogicFunction()` | تعريفات الوظائف المنطقية |
| `defineFrontComponent()` | Front component definitions |
| `defineRole()` | تعريفات الأدوار |
| `defineField()` | امتدادات الحقول للكائنات الموجودة |
| `defineView()` | تعريفات العروض المحفوظة |
| `defineNavigationMenuItem()` | تعريفات عناصر قائمة التنقل |
| دالة مساعدة | نوع الكيان |
| ---------------------------- | ------------------------------------ |
| `defineObject()` | تعريفات كائنات مخصصة |
| `defineLogicFunction()` | تعريفات الوظائف المنطقية |
| `defineFrontComponent()` | Front component definitions |
| `defineRole()` | تعريفات الأدوار |
| `defineField()` | امتدادات الحقول للكائنات الموجودة |
| `defineView()` | تعريفات العروض المحفوظة |
| `defineNavigationMenuItem()` | تعريفات عناصر قائمة التنقل |
| `defineSkill()` | تعريفات مهارات وكيل الذكاء الاصطناعي |
<Note>
**تسمية الملفات مرنة.** يعتمد اكتشاف الكيانات على بنية الشجرة المجردة (AST) — إذ يقوم SDK بفحص ملفات المصدر لديك بحثًا عن النمط `export default define<Entity>({...})`. يمكنك تنظيم ملفاتك ومجلداتك كيفما تشاء. التجميع حسب نوع الكيان (مثلًا، `logic-functions/` و`roles/`) هو مجرد عرف لتنظيم الشيفرة، وليس مطلبًا إلزاميًا.
@@ -169,7 +173,7 @@ export default defineObject({
ستضيف الأوامر اللاحقة مزيدًا من الملفات والمجلدات:
* `yarn twenty app:dev` سيولّد تلقائيًا عميل API مضبوط الأنواع في `node_modules/twenty-sdk/generated` (عميل Twenty مضبوط الأنواع + أنواع مساحة العمل).
* `yarn twenty entity:add` سيضيف ملفات تعريف الكيانات تحت `src/` لكائناتك المخصصة أو الوظائف أو المكونات الواجهية أو الأدوار.
* `yarn twenty entity:add` سيضيف ملفات تعريف الكيانات ضمن `src/` لكائناتك المخصّصة، والوظائف، ومكوّنات الواجهة الأمامية، والأدوار، والمهارات، وغير ذلك.
## المصادقة
@@ -222,6 +226,7 @@ yarn twenty auth:status
| `defineField()` | وسّع الكائنات الموجودة بحقول إضافية |
| `defineView()` | تعريف العروض المحفوظة للكائنات |
| `defineNavigationMenuItem()` | تعريف روابط التنقل في الشريط الجانبي |
| `defineSkill()` | عرّف مهارات وكيل الذكاء الاصطناعي |
تتحقق هذه الدوال من تكوينك وقت البناء وتوفّر إكمالًا تلقائيًا في بيئة التطوير وأمان الأنواع.
@@ -741,6 +746,41 @@ export default defineFrontComponent({
* **مُنشأ بالقالب**: شغّل `yarn twenty entity:add` واختر خيار إضافة مكوّن أمامي جديد.
* **يدوي**: أنشئ ملفًا جديدًا `*.front-component.tsx` واستخدم `defineFrontComponent()`.
### المهارات
تُحدِّد المهارات تعليمات وإمكانات قابلة لإعادة الاستخدام يمكن لوكلاء الذكاء الاصطناعي استخدامها داخل مساحة العمل لديك. استخدم `defineSkill()` لتعريف مهارات مع تحقّق مدمج:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'التواصل البيعي',
description: 'يرشد وكيل الذكاء الاصطناعي خلال عملية منظّمة للتواصل البيعي',
icon: 'IconBrain',
content: `أنت مساعد للتواصل البيعي. عند التواصل مع عميل محتمل:
1. ابحث عن الشركة وآخر الأخبار
2. حدِّد دور العميل المحتمل ونقاط الألم المرجّحة
3. صِغ رسالة مخصّصة تشير إلى تفاصيل محدّدة
4. حافظ على نبرة احترافية ولكن حوارية`,
});
```
النقاط الرئيسية:
* `name` هي سلسلة معرّف فريدة للمهارة (يُنصَح باستخدام kebab-case).
* `label` هو اسم العرض المقروء للبشر الظاهر في واجهة المستخدم.
* `content` يحتوي على تعليمات المهارة — وهو النص الذي يستخدمه وكيل الذكاء الاصطناعي.
* `icon` (اختياري) يحدّد الأيقونة المعروضة في واجهة المستخدم.
* `description` (اختياري) يوفّر سياقًا إضافيًا حول غرض المهارة.
يمكنك إنشاء مهارات جديدة بطريقتين:
* **مُنشأ بالقالب**: شغِّل `yarn twenty entity:add` واختر خيار إضافة مهارة جديدة.
* **يدوي**: أنشئ ملفًا جديدًا واستخدم `defineSkill()` مع اتباع النمط نفسه.
### عميل مُولَّد مضبوط الأنواع
يُولَّد العميل مضبوط الأنواع تلقائيًا بواسطة `yarn twenty app:dev` ويُخزَّن في `node_modules/twenty-sdk/generated` استنادًا إلى مخطط مساحة العمل لديك. استخدمه في وظائفك:
@@ -767,6 +807,53 @@ const { me } = await client.query({ me: { id: true, displayName: true } });
* تُحدَّد أذونات مفتاح واجهة برمجة التطبيقات بواسطة الدور المشار إليه في `application-config.ts` عبر `defaultRoleUniversalIdentifier`. هذا هو الدور الافتراضي الذي تستخدمه الوظائف المنطقية في تطبيقك.
* يمكن للتطبيقات تعريف أدوار لاتباع مبدأ أقل الامتياز. امنح فقط الأذونات التي تحتاجها وظائفك، ثم وجّه `defaultRoleUniversalIdentifier` إلى المعرّف الشامل لذلك الدور.
#### رفع الملفات
يتضمن العميل `Twenty` المُولَّد طريقة `uploadFile` لإرفاق الملفات بالحقول من نوع ملف ضمن كائنات مساحة العمل الخاصة بك. نظرًا لأن عملاء GraphQL القياسيون لا يدعمون تحميل الملفات متعددة الأجزاء افتراضيًا، يوفر العميل هذه الطريقة المخصصة التي تطبق [مواصفة طلب GraphQL متعدد الأجزاء](https://github.com/jaydenseric/graphql-multipart-request-spec) في الخلفية.
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
توقيع الطريقة:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| المعلمة | النوع | الوصف |
| ---------------------------------- | -------- | ---------------------------------------------------------------------------------- |
| `fileBuffer` | `Buffer` | المحتوى الخام للملف |
| `filename` | `string` | اسم الملف (يُستخدم للتخزين والعرض) |
| `contentType` | `string` | نوع MIME للملف (القيمة الافتراضية هي `application/octet-stream` إذا لم يتم تحديده) |
| `fieldMetadataUniversalIdentifier` | `string` | قيمة `universalIdentifier` لحقل نوع الملف في كائنك |
النقاط الرئيسية:
* ترسل هذه الطريقة الملف إلى **نقطة نهاية البيانات الوصفية** (وليست نقطة النهاية الرئيسية لـ GraphQL)، حيث تُنفَّذ عملية الرفع.
* تستخدم `universalIdentifier` الخاص بالحقل (وليس المعرّف الخاص بمساحة العمل)، ليعمل كود الرفع لديك عبر أي مساحة عمل مُثبَّت فيها تطبيقك — بما يتماشى مع كيفية إشارة التطبيقات إلى الحقول في كل مكان آخر.
* العنوان `url` المُعاد هو عنوان URL موقّع يمكنك استخدامه للوصول إلى الملف المرفوع.
### مثال Hello World
استكشف مثالًا بسيطًا شاملًا من البداية إلى النهاية يوضح الكائنات والوظائف المنطقية والمكوّنات الأمامية ومشغّلات متعددة [هنا](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ Aplikace vám umožňují vytvářet a spravovat přizpůsobení Twenty **jako k
* Definujte vlastní objekty a pole jako kód (spravovaný datový model)
* Vytvářejte logické funkce s vlastními spouštěči
* Definujte dovednosti agentů AI
* Nasazujte stejnou aplikaci do více pracovních prostorů
## Předpoklady
@@ -45,7 +46,7 @@ yarn twenty app:dev
Nástroj pro generování kostry podporuje tři režimy pro řízení toho, které ukázkové soubory jsou zahrnuty:
```bash filename="Terminal"
# Výchozí (úplný): všechny příklady (objekt, pole, logická funkce, front-endová komponenta, zobrazení, položka navigační nabídky)
# Výchozí (úplný): všechny příklady (objekt, pole, logická funkce, front-endová komponenta, zobrazení, položka navigační nabídky, dovednost)
npx create-twenty-app@latest my-app
# Minimální: pouze základní soubory (application-config.ts a default-role.ts)
@@ -118,8 +119,10 @@ my-twenty-app/
│ └── hello-world.tsx # Ukázková front-endová komponenta
├── views/
│ └── example-view.ts # Ukázková definice uloženého zobrazení
── navigation-menu-items/
└── example-navigation-menu-item.ts # Ukázkový odkaz postranní navigace
── navigation-menu-items/
└── example-navigation-menu-item.ts # Ukázkový odkaz postranní navigace
└── skills/
└── example-skill.ts # Ukázková definice dovednosti agenta AI
```
S volbou `--minimal` se vytvoří pouze základní soubory (`application-config.ts`, `roles/default-role.ts` a `logic-functions/post-install.ts`). S volbou `--interactive` si vyberete, které ukázkové soubory chcete zahrnout.
@@ -148,6 +151,7 @@ SDK detekuje entity analýzou vašich souborů TypeScript a hledá volání **`e
| `defineField()` | Rozšíření polí u existujících objektů |
| `defineView()` | Definice uložených zobrazení |
| `defineNavigationMenuItem()` | Definice položek navigační nabídky |
| `defineSkill()` | Definice dovedností agenta AI |
<Note>
**Pojmenování souborů je flexibilní.** Detekce entit je založená na AST — SDK prochází vaše zdrojové soubory a hledá vzor `export default define<Entity>({...})`. Soubory a složky můžete organizovat, jak chcete. Seskupování podle typu entity (např. `logic-functions/`, `roles/`) je pouze konvence pro organizaci kódu, nikoli požadavek.
@@ -169,7 +173,7 @@ export default defineObject({
Pozdější příkazy přidají další soubory a složky:
* `yarn twenty app:dev` automaticky vygeneruje typovaného klienta API v `node_modules/twenty-sdk/generated` (typovaný klient Twenty + typy pracovního prostoru).
* `yarn twenty entity:add` přidá soubory s definicemi entit do `src/` pro vaše vlastní objekty, funkce, frontové komponenty nebo role.
* `yarn twenty entity:add` přidá soubory s definicemi entit do `src/` pro vaše vlastní objekty, funkce, frontové komponenty, role, dovednosti a další.
## Ověření
@@ -222,6 +226,7 @@ SDK poskytuje pomocné funkce pro definování entit vaší aplikace. Jak je pop
| `defineField()` | Rozšiřte existující objekty o další pole |
| `defineView()` | Definujte uložená zobrazení pro objekty |
| `defineNavigationMenuItem()` | Definujte odkazy postranní navigace |
| `defineSkill()` | Definuje dovednosti agenta AI |
Tyto funkce validují vaši konfiguraci v době sestavení a poskytují automatické doplňování v IDE a typovou bezpečnost.
@@ -741,6 +746,41 @@ Nové frontendové komponenty můžete vytvořit dvěma způsoby:
* **Vygenerované**: Spusťte `yarn twenty entity:add` a zvolte možnost přidat novou frontendovou komponentu.
* **Ruční**: Vytvořte nový soubor `*.front-component.tsx` a použijte `defineFrontComponent()`.
### Dovednosti
Dovednosti definují znovupoužitelné pokyny a schopnosti, které mohou agenti AI používat ve vašem pracovním prostoru. K definování dovedností s vestavěnou validací použijte `defineSkill()`:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Hlavní body:
* `name` je jedinečný identifikátor dovednosti (doporučuje se kebab-case).
* `label` je uživatelsky čitelný název zobrazovaný v UI.
* `content` obsahuje pokyny dovednosti — je to text, který agent AI používá.
* `icon` (volitelné) nastavuje ikonu zobrazovanou v UI.
* `description` (volitelné) poskytuje doplňující kontext o účelu dovednosti.
Nové dovednosti můžete vytvářet dvěma způsoby:
* **Vygenerované**: Spusťte `yarn twenty entity:add` a zvolte možnost přidat novou dovednost.
* **Ruční**: Vytvořte nový soubor a použijte `defineSkill()` podle stejného vzoru.
### Generovaný typovaný klient
Typovaný klient je automaticky generován pomocí `yarn twenty app:dev` a ukládá se do `node_modules/twenty-sdk/generated` podle schématu vašeho pracovního prostoru. Použijte jej ve svých funkcích:
@@ -767,6 +807,53 @@ Poznámky:
* Oprávnění klíče API jsou určena rolí odkazovanou ve vašem `application-config.ts` prostřednictvím `defaultRoleUniversalIdentifier`. Toto je výchozí role používaná logickými funkcemi vaší aplikace.
* Aplikace mohou definovat role podle principu nejmenších oprávnění. Udělte pouze oprávnění, která vaše funkce potřebují, a poté nastavte `defaultRoleUniversalIdentifier` na univerzální identifikátor této role.
#### Nahrávání souborů
Vygenerovaný klient `Twenty` obsahuje metodu `uploadFile` pro připojování souborů k polím typu souboru u objektů ve vašem pracovním prostoru. Protože standardní klienti GraphQL nativně nepodporují nahrávání souborů pomocí multipart, klient poskytuje tuto speciální metodu, která interně implementuje [specifikaci multipart požadavků GraphQL](https://github.com/jaydenseric/graphql-multipart-request-spec).
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
Signatura metody:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parametr | Typ | Popis |
| ---------------------------------- | -------- | --------------------------------------------------------------------------- |
| `fileBuffer` | `Buffer` | Surový obsah souboru |
| `filename` | `string` | Název souboru (používá se pro ukládání a zobrazení) |
| `contentType` | `string` | Typ MIME souboru (pokud je vynechán, výchozí je `application/octet-stream`) |
| `fieldMetadataUniversalIdentifier` | `string` | `universalIdentifier` pole typu souboru ve vašem objektu |
Hlavní body:
* Metoda odešle soubor na **koncový bod metadat** (nikoli na hlavní koncový bod GraphQL), kde se provede mutace nahrání.
* Používá `universalIdentifier` pole (nikoli jeho ID specifické pro pracovní prostor), takže váš kód pro nahrávání funguje ve všech pracovních prostorech, kde je vaše aplikace nainstalována — v souladu s tím, jak aplikace odkazují na pole všude jinde.
* Vrácená hodnota `url` je podepsaná adresa URL, kterou můžete použít k přístupu k nahranému souboru.
### Příklad Hello World
Prozkoumejte minimalistický end-to-end příklad, který demonstruje objekty, logické funkce, frontendové komponenty a více spouštěčů [zde](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ Mit Apps können Sie Twenty-Anpassungen **als Code** erstellen und verwalten. An
* Benutzerdefinierte Objekte und Felder als Code definieren (verwaltetes Datenmodell)
* Logikfunktionen mit benutzerdefinierten Triggern erstellen
* Fähigkeiten für KI-Agenten definieren
* Dieselbe App in mehreren Workspaces bereitstellen
## Voraussetzungen
@@ -45,7 +46,7 @@ yarn twenty app:dev
Das Scaffolding-Tool unterstützt drei Modi, um zu steuern, welche Beispieldateien enthalten sind:
```bash filename="Terminal"
# Standard (umfassend): alle Beispiele (Objekt, Feld, Logikfunktion, Frontend-Komponente, View, Navigationsmenüeintrag)
# Standard (umfassend): alle Beispiele (Objekt, Feld, Logikfunktion, Frontend-Komponente, View, Navigationsmenüeintrag, Skill)
npx create-twenty-app@latest my-app
# Minimal: nur Kerndateien (application-config.ts und default-role.ts)
@@ -104,22 +105,24 @@ my-twenty-app/
README.md
public/ # Ordner für öffentliche Assets (Bilder, Schriftarten usw.)
src/
application-config.ts # Erforderlich  Hauptkonfiguration der Anwendung
roles/
 default-role.ts # Standardrolle für Logikfunktionen
objects/
 example-object.ts # Beispiel für eine benutzerdefinierte Objektdefinition
fields/
 example-field.ts # Beispiel für eine eigenständige Felddefinition
logic-functions/
 hello-world.ts # Beispiel für eine Logikfunktion
 post-install.ts # Post-Installations-Logikfunktion
front-components/
 hello-world.tsx # Beispiel für eine Frontend-Komponente
views/
 example-view.ts # Beispiel für eine gespeicherte View-Definition
navigation-menu-items/
example-navigation-menu-item.ts # Beispiel für einen Navigationslink in der Seitenleiste
├── application-config.ts # Erforderlich - Hauptkonfiguration der Anwendung
├── roles/
│ └── default-role.ts # Standardrolle für Logikfunktionen
├── objects/
│ └── example-object.ts # Beispiel für eine benutzerdefinierte Objektdefinition
├── fields/
│ └── example-field.ts # Beispiel für eine eigenständige Felddefinition
├── logic-functions/
│ ├── hello-world.ts # Beispiel für eine Logikfunktion
│ └── post-install.ts # Post-Installations-Logikfunktion
├── front-components/
│ └── hello-world.tsx # Beispiel für eine Frontend-Komponente
├── views/
│ └── example-view.ts # Beispiel für eine gespeicherte View-Definition
├── navigation-menu-items/
└── example-navigation-menu-item.ts # Beispiel für einen Navigationslink in der Seitenleiste
└── skills/
└── example-skill.ts # Beispiel für eine Skill-Definition eines KI-Agenten
```
Mit `--minimal` werden nur die Kerndateien erstellt (`application-config.ts`, `roles/default-role.ts` und `logic-functions/post-install.ts`). Mit `--interactive` wählst du aus, welche Beispieldateien enthalten sein sollen.
@@ -148,6 +151,7 @@ Das SDK erkennt Entitäten, indem es Ihre TypeScript-Dateien nach Aufrufen von *
| `defineField()` | Felderweiterungen für bestehende Objekte |
| `defineView()` | Gespeicherte View-Definitionen |
| `defineNavigationMenuItem()` | Definitionen von Navigationsmenüeinträgen |
| `defineSkill()` | Skill-Definitionen für KI-Agenten |
<Note>
**Dateibenennung ist flexibel.** Die Entitätserkennung ist AST-basiert — das SDK durchsucht Ihre Quelldateien nach dem Muster `export default define<Entity>({...})`. Sie können Ihre Dateien und Ordner nach Belieben organisieren. Die Gruppierung nach Entitätstyp (z. B. `logic-functions/`, `roles/`) ist lediglich eine Konvention zur Codeorganisation, keine Voraussetzung.
@@ -169,7 +173,7 @@ export default defineObject({
Spätere Befehle fügen weitere Dateien und Ordner hinzu:
* `yarn twenty app:dev` generiert automatisch einen typisierten API-Client in `node_modules/twenty-sdk/generated` (typisierter Twenty-Client + Arbeitsbereichs-Typen).
* `yarn twenty entity:add` fügt unter `src/` Entitätsdefinitionsdateien für benutzerdefinierte Objekte, Funktionen, Frontend-Komponenten oder Rollen hinzu.
* `yarn twenty entity:add` fügt unter `src/` Entitätsdefinitionsdateien für Ihre benutzerdefinierten Objekte, Funktionen, Frontend-Komponenten, Rollen, Skills und mehr hinzu.
## Authentifizierung
@@ -222,6 +226,7 @@ Das SDK stellt Hilfsfunktionen bereit, um die Entitäten Ihrer App zu definieren
| `defineField()` | Bestehende Objekte mit zusätzlichen Feldern erweitern |
| `defineView()` | Gespeicherte Views für Objekte definieren |
| `defineNavigationMenuItem()` | Seitenleisten-Navigationslinks definieren |
| `defineSkill()` | Definieren Sie Skills für KI-Agenten |
Diese Funktionen validieren Ihre Konfiguration zur Build-Zeit und bieten IDE-Autovervollständigung sowie Typsicherheit.
@@ -741,6 +746,41 @@ Sie können neue Frontend-Komponenten auf zwei Arten erstellen:
* **Generiert**: Führen Sie `yarn twenty entity:add` aus und wählen Sie die Option zum Hinzufügen einer neuen Frontend-Komponente.
* **Manuell**: Erstellen Sie eine neue `*.front-component.tsx`-Datei und verwenden Sie `defineFrontComponent()`.
### Fähigkeiten
Skills definieren wiederverwendbare Anweisungen und Fähigkeiten, die KI-Agenten in Ihrem Arbeitsbereich verwenden können. Verwenden Sie `defineSkill()`, um Skills mit eingebauter Validierung zu definieren:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Hauptpunkte:
* `name` ist eine eindeutige Kennung (als Zeichenfolge) für den Skill (kebab-case empfohlen).
* `label` ist der menschenlesbare Anzeigename, der in der UI angezeigt wird.
* `content` enthält die Skill-Anweisungen — dies ist der Text, den der KI-Agent verwendet.
* `icon` (optional) legt das in der UI angezeigte Symbol fest.
* `description` (optional) liefert zusätzlichen Kontext zum Zweck des Skills.
Sie können neue Skills auf zwei Arten erstellen:
* **Generiert**: Führen Sie `yarn twenty entity:add` aus und wählen Sie die Option zum Hinzufügen eines neuen Skills.
* **Manuell**: Erstellen Sie eine neue Datei und verwenden Sie `defineSkill()` nach demselben Muster.
### Generierter typisierter Client
Der typisierte Client wird von `yarn twenty app:dev` automatisch generiert und basierend auf Ihrem Arbeitsbereichs-Schema in `node_modules/twenty-sdk/generated` gespeichert. Verwenden Sie ihn in Ihren Funktionen:
@@ -767,6 +807,53 @@ Notizen:
* Die Berechtigungen des API-Schlüssels werden durch die Rolle bestimmt, auf die in Ihrer `application-config.ts` über `defaultRoleUniversalIdentifier` verwiesen wird. Dies ist die Standardrolle, die von den Logikfunktionen Ihrer Anwendung verwendet wird.
* Anwendungen können Rollen definieren, um das Least-Privilege-Prinzip einzuhalten. Gewähren Sie nur die Berechtigungen, die Ihre Funktionen benötigen, und verweisen Sie dann mit `defaultRoleUniversalIdentifier` auf den universellen Bezeichner dieser Rolle.
#### Dateien hochladen
Der generierte `Twenty`-Client enthält eine Methode `uploadFile`, um Dateien an Felder des Typs Datei in Ihren Arbeitsbereichsobjekten anzuhängen. Da Standard-GraphQL-Clients Multipart-Datei-Uploads nicht nativ unterstützen, stellt der Client diese dedizierte Methode bereit, die unter der Haube die [GraphQL-Multipart-Anfragespezifikation](https://github.com/jaydenseric/graphql-multipart-request-spec) implementiert.
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
Die Methodensignatur:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parameter | Typ | Beschreibung |
| ---------------------------------- | -------- | ------------------------------------------------------------------------------- |
| `fileBuffer` | `Buffer` | Der Rohinhalt der Datei |
| `filename` | `string` | Der Name der Datei (wird für Speicherung und Anzeige verwendet) |
| `contentType` | `string` | MIME-Typ der Datei (standardmäßig `application/octet-stream`, wenn weggelassen) |
| `fieldMetadataUniversalIdentifier` | `string` | Der `universalIdentifier` des Dateityp-Felds in Ihrem Objekt |
Hauptpunkte:
* Die Methode sendet die Datei an den **metadata endpoint** (nicht den main GraphQL endpoint), wo die Upload-Mutation ausgeführt wird.
* Sie verwendet den `universalIdentifier` des Feldes (nicht dessen arbeitsbereichsspezifische ID), sodass Ihr Upload-Code in jedem Arbeitsbereich funktioniert, in dem Ihre App installiert ist — im Einklang damit, wie Apps Felder überall sonst referenzieren.
* Die zurückgegebene `url` ist eine signierte URL, mit der Sie auf die hochgeladene Datei zugreifen können.
### Hello-World-Beispiel
Ein minimales End-to-End-Beispiel, das Objekte, Logikfunktionen, Frontend-Komponenten und mehrere Trigger demonstriert, finden Sie [hier](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ Le app ti consentono di creare e gestire le personalizzazioni di Twenty **come c
* Definisci oggetti e campi personalizzati come codice (modello dati gestito)
* Crea funzioni logiche con trigger personalizzati
* Definire le abilità per gli agenti IA
* Distribuisci la stessa app su più spazi di lavoro
## Prerequisiti
@@ -45,13 +46,13 @@ yarn twenty app:dev
Lo strumento di scaffolding supporta tre modalità per controllare quali file di esempio vengono inclusi:
```bash filename="Terminal"
# Predefinita (esaustiva): tutti gli esempi (oggetto, campo, funzione logica, componente front-end, vista, voce del menu di navigazione)
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
npx create-twenty-app@latest my-app
# Minimale: solo i file principali (application-config.ts e default-role.ts)
# Minimal: only core files (application-config.ts and default-role.ts)
npx create-twenty-app@latest my-app --minimal
# Interattiva: seleziona quali esempi includere
# Interactive: select which examples to include
npx create-twenty-app@latest my-app --interactive
```
@@ -102,24 +103,26 @@ my-twenty-app/
eslint.config.mjs
tsconfig.json
README.md
public/ # Cartella delle risorse pubbliche (immagini, font, ecc.)
public/ # Public assets folder (images, fonts, etc.)
src/
├── application-config.ts # Obbligatorio - configurazione principale dell'applicazione
├── application-config.ts # Required - main application configuration
├── roles/
│ └── default-role.ts # Ruolo predefinito per le funzioni logiche
│ └── default-role.ts # Default role for logic functions
├── objects/
│ └── example-object.ts # Definizione di oggetto personalizzato di esempio
│ └── example-object.ts # Example custom object definition
├── fields/
│ └── example-field.ts # Definizione di campo autonomo di esempio
│ └── example-field.ts # Example standalone field definition
├── logic-functions/
│ ├── hello-world.ts # Funzione logica di esempio
│ └── post-install.ts # Funzione logica post-installazione
│ ├── hello-world.ts # Example logic function
│ └── post-install.ts # Post-install logic function
├── front-components/
│ └── hello-world.tsx # Componente front-end di esempio
│ └── hello-world.tsx # Example front component
├── views/
│ └── example-view.ts # Definizione di vista salvata di esempio
── navigation-menu-items/
└── example-navigation-menu-item.ts # Link di navigazione della barra laterale di esempio
│ └── example-view.ts # Example saved view definition
── navigation-menu-items/
└── example-navigation-menu-item.ts # Example sidebar navigation link
└── skills/
└── example-skill.ts # Example AI agent skill definition
```
Con `--minimal`, vengono creati solo i file principali (`application-config.ts`, `roles/default-role.ts` e `logic-functions/post-install.ts`). Con `--interactive`, scegli quali file di esempio includere.
@@ -148,6 +151,7 @@ L'SDK rileva le entità analizzando i tuoi file TypeScript alla ricerca di chiam
| `defineField()` | Estensioni di campo per oggetti esistenti |
| `defineView()` | Definizioni di viste salvate |
| `defineNavigationMenuItem()` | Definizioni delle voci del menu di navigazione |
| `defineSkill()` | AI agent skill definitions |
<Note>
**La denominazione dei file è flessibile.** Il rilevamento delle entità è basato sull'AST — l'SDK esegue la scansione dei file sorgente alla ricerca del pattern `export default define<Entity>({...})`. Puoi organizzare file e cartelle come preferisci. Raggruppare per tipo di entità (ad es., `logic-functions/`, `roles/`) è solo una convenzione per l'organizzazione del codice, non un requisito.
@@ -169,7 +173,7 @@ export default defineObject({
Comandi successivi aggiungeranno altri file e cartelle:
* `yarn twenty app:dev` genererà automaticamente un client API tipizzato in `node_modules/twenty-sdk/generated` (client Twenty tipizzato + tipi dell'area di lavoro).
* `yarn twenty entity:add` aggiungerà file di definizione delle entità sotto `src/` per i tuoi oggetti, funzioni, componenti front-end o ruoli personalizzati.
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
## Autenticazione
@@ -222,6 +226,7 @@ L'SDK fornisce funzioni helper per definire le entità della tua app. Come descr
| `defineField()` | Estendi gli oggetti esistenti con campi aggiuntivi |
| `defineView()` | Definisce viste salvate per gli oggetti |
| `defineNavigationMenuItem()` | Definisce i link di navigazione della barra laterale |
| `defineSkill()` | Define AI agent skills |
Queste funzioni convalidano la configurazione in fase di build e offrono il completamento automatico nell'IDE e la sicurezza dei tipi.
@@ -741,6 +746,41 @@ Puoi creare nuovi componenti front-end in due modi:
* **Generata dallo scaffolder**: Esegui `yarn twenty entity:add` e scegli l'opzione per aggiungere un nuovo componente front-end.
* **Manuale**: Crea un nuovo file `*.front-component.tsx` e usa `defineFrontComponent()`.
### Abilità
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Punti chiave:
* `name` is a unique identifier string for the skill (kebab-case recommended).
* `label` is the human-readable display name shown in the UI.
* `content` contains the skill instructions — this is the text the AI agent uses.
* `icon` (optional) sets the icon displayed in the UI.
* `description` (optional) provides additional context about the skill's purpose.
You can create new skills in two ways:
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
### Client tipizzato generato
Il client tipizzato è generato automaticamente da `yarn twenty app:dev` e salvato in `node_modules/twenty-sdk/generated` in base allo schema della tua area di lavoro. Usalo nelle tue funzioni:
@@ -767,6 +807,53 @@ Note:
* I permessi della chiave API sono determinati dal ruolo referenziato nel tuo `application-config.ts` tramite `defaultRoleUniversalIdentifier`. Questo è il ruolo predefinito utilizzato dalle funzioni logiche della tua applicazione.
* Le applicazioni possono definire ruoli per seguire il principio del privilegio minimo. Concedi solo i permessi necessari alle tue funzioni, quindi punta `defaultRoleUniversalIdentifier` all'identificatore universale di quel ruolo.
#### Caricamento dei file
Il client `Twenty` generato include un metodo `uploadFile` per allegare file ai campi di tipo file sugli oggetti del tuo spazio di lavoro. Poiché i client GraphQL standard non supportano nativamente il caricamento di file multipart, il client fornisce questo metodo dedicato che implementa la [specifica della richiesta GraphQL multipart](https://github.com/jaydenseric/graphql-multipart-request-spec) dietro le quinte.
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
La firma del metodo:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parametro | Tipo | Descrizione |
| ---------------------------------- | -------- | ------------------------------------------------------------------------ |
| `fileBuffer` | `Buffer` | Il contenuto grezzo del file |
| `filename` | `string` | Il nome del file (utilizzato per l'archiviazione e la visualizzazione) |
| `contentType` | `string` | Tipo MIME del file (predefinito su `application/octet-stream` se omesso) |
| `fieldMetadataUniversalIdentifier` | `string` | L'`universalIdentifier` del campo di tipo file nel tuo oggetto |
Punti chiave:
* Il metodo invia il file al **metadata endpoint** (non all'endpoint GraphQL principale), dove la mutation di upload viene risolta.
* Usa l'`universalIdentifier` del campo (non il suo ID specifico dello spazio di lavoro), quindi il tuo codice di upload funziona in qualsiasi spazio di lavoro in cui la tua app è installata — coerentemente con il modo in cui le app fanno riferimento ai campi altrove.
* L'`url` restituito è un URL firmato che puoi usare per accedere al file caricato.
### Esempio Hello World
Esplora un esempio minimale end-to-end che dimostra oggetti, funzioni logiche, componenti front-end e trigger multipli [qui](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ Os aplicativos permitem criar e gerenciar personalizações do Twenty **como có
* Defina objetos e campos personalizados como código (modelo de dados gerenciado)
* Crie funções de lógica com gatilhos personalizados
* Definir habilidades para agentes de IA
* Implemente o mesmo aplicativo em vários espaços de trabalho
## Pré-requisitos
@@ -45,7 +46,7 @@ yarn twenty app:dev
O gerador de estrutura oferece suporte a três modos para controlar quais arquivos de exemplo são incluídos:
```bash filename="Terminal"
# Padrão (exhaustivo): todos os exemplos (objeto, campo, função de lógica, componente de front-end, visualização, item do menu de navegação)
# Padrão (exhaustivo): todos os exemplos (objeto, campo, função de lógica, componente de front-end, visualização, item do menu de navegação, habilidade)
npx create-twenty-app@latest my-app
# Mínimo: apenas arquivos principais (application-config.ts e default-role.ts)
@@ -118,8 +119,10 @@ my-twenty-app/
│ └── hello-world.tsx # Exemplo de componente de front-end
├── views/
│ └── example-view.ts # Exemplo de definição de visualização salva
── navigation-menu-items/
└── example-navigation-menu-item.ts # Exemplo de link de navegação da barra lateral
── navigation-menu-items/
└── example-navigation-menu-item.ts # Exemplo de link de navegação da barra lateral
└── skills/
└── example-skill.ts # Exemplo de definição de habilidade de agente de IA
```
Com `--minimal`, apenas os arquivos principais são criados (`application-config.ts`, `roles/default-role.ts` e `logic-functions/post-install.ts`). Com `--interactive`, você escolhe quais arquivos de exemplo incluir.
@@ -148,6 +151,7 @@ O SDK detecta entidades analisando seus arquivos TypeScript em busca de chamadas
| `defineField()` | Extensões de campos para objetos existentes |
| `defineView()` | Definições de visualizações salvas |
| `defineNavigationMenuItem()` | Definições de itens do menu de navegação |
| `defineSkill()` | Definições de habilidades de agente de IA |
<Note>
**A nomeação de arquivos é flexível.** A detecção de entidades é baseada em AST — o SDK varre seus arquivos fonte em busca do padrão `export default define<Entity>({...})`. Você pode organizar seus arquivos e pastas como quiser. Agrupar por tipo de entidade (por exemplo, `logic-functions/`, `roles/`) é apenas uma convenção para organização do código, não um requisito.
@@ -169,7 +173,7 @@ export default defineObject({
Comandos posteriores adicionarão mais arquivos e pastas:
* `yarn twenty app:dev` vai gerar automaticamente um cliente de API tipado em `node_modules/twenty-sdk/generated` (cliente Twenty tipado + tipos do espaço de trabalho).
* `yarn twenty entity:add` adicionará arquivos de definição de entidade em `src/` para seus objetos, funções, componentes de front-end ou papéis personalizados.
* `yarn twenty entity:add` adicionará arquivos de definição de entidade em `src/` para seus objetos, funções, componentes de front-end, papéis e habilidades personalizados, entre outros.
## Autenticação
@@ -222,6 +226,7 @@ O SDK fornece funções utilitárias para definir as entidades do seu app. Confo
| `defineField()` | Estender objetos existentes com campos adicionais |
| `defineView()` | Define visualizações salvas para objetos |
| `defineNavigationMenuItem()` | Define links de navegação da barra lateral |
| `defineSkill()` | Define habilidades de agente de IA |
Essas funções validam sua configuração em tempo de compilação e oferecem autocompletar na IDE e segurança de tipos.
@@ -741,6 +746,41 @@ Você pode criar novos componentes de front-end de duas formas:
* **Gerado automaticamente**: Execute `yarn twenty entity:add` e escolha a opção para adicionar um novo componente de front-end.
* **Manual**: Crie um novo arquivo `*.front-component.tsx` e use `defineFrontComponent()`.
### Habilidades
As habilidades definem instruções e capacidades reutilizáveis que os agentes de IA podem usar no seu espaço de trabalho. Use `defineSkill()` para definir habilidades com validação integrada:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Pontos-chave:
* `name` é uma string de identificador exclusivo para a habilidade (recomenda-se kebab-case).
* `label` é o nome de exibição legível por humanos mostrado na UI.
* `content` contém as instruções da habilidade — este é o texto que o agente de IA usa.
* `icon` (opcional) define o ícone exibido na UI.
* `description` (opcional) fornece contexto adicional sobre a finalidade da habilidade.
Você pode criar novas habilidades de duas formas:
* **Gerado automaticamente**: Execute `yarn twenty entity:add` e escolha a opção para adicionar uma nova habilidade.
* **Manual**: Crie um novo arquivo e use `defineSkill()`, seguindo o mesmo padrão.
### Cliente tipado gerado
O cliente tipado é gerado automaticamente pelo `yarn twenty app:dev` e armazenado em `node_modules/twenty-sdk/generated` com base no esquema do seu espaço de trabalho. Use-o em suas funções:
@@ -767,6 +807,53 @@ Notas:
* As permissões da chave de API são determinadas pelo papel referenciado no seu `application-config.ts` via `defaultRoleUniversalIdentifier`. Este é o papel padrão usado pelas funções de lógica do seu app.
* Os aplicativos podem definir papéis para seguir o princípio do menor privilégio. Conceda apenas as permissões de que suas funções precisam e, em seguida, aponte `defaultRoleUniversalIdentifier` para o identificador universal desse papel.
#### Carregamento de ficheiros
O cliente `Twenty` gerado inclui um método `uploadFile` para anexar ficheiros a campos do tipo ficheiro nos objetos do seu espaço de trabalho. Como os clientes GraphQL padrão não suportam nativamente o carregamento de ficheiros multipart, o cliente fornece este método dedicado que implementa, nos bastidores, a [especificação de pedidos multipart do GraphQL](https://github.com/jaydenseric/graphql-multipart-request-spec).
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
A assinatura do método:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parâmetro | Tipo | Descrição |
| ---------------------------------- | -------- | ------------------------------------------------------------------------ |
| `fileBuffer` | `Buffer` | O conteúdo bruto do arquivo |
| `filename` | `string` | O nome do arquivo (usado para armazenamento e exibição) |
| `contentType` | `string` | Tipo MIME do arquivo (padrão para `application/octet-stream` se omitido) |
| `fieldMetadataUniversalIdentifier` | `string` | O `universalIdentifier` do campo do tipo arquivo no seu objeto |
Pontos-chave:
* O método envia o arquivo para o **endpoint de metadados** (não para o endpoint GraphQL principal), onde a mutação de upload é resolvida.
* Ele usa o `universalIdentifier` do campo (não o ID específico do espaço de trabalho), de modo que seu código de upload funcione em qualquer espaço de trabalho onde seu app esteja instalado — consistente com a forma como os apps referenciam campos em qualquer outro lugar.
* A `url` retornada é um URL assinado que você pode usar para acessar o arquivo enviado.
### Exemplo Hello World
Explore um exemplo mínimo de ponta a ponta que demonstra objetos, funções de lógica, componentes de front-end e vários gatilhos [aqui](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ Aplicațiile vă permit să construiți și să gestionați personalizările Twe
* Definiți obiecte și câmpuri personalizate sub formă de cod (model de date gestionat)
* Creați funcții de logică cu declanșatoare personalizate
* Definiți abilități pentru agenți de IA
* Implementați aceeași aplicație în mai multe spații de lucru
## Cerințe
@@ -45,7 +46,7 @@ yarn twenty app:dev
Generatorul de schelet acceptă trei moduri pentru a controla ce fișiere de exemplu sunt incluse:
```bash filename="Terminal"
# Implicit (exhaustiv): toate exemplele (obiect, câmp, funcție logică, componentă de interfață, vizualizare, element de meniu de navigare)
# Implicit (exhaustiv): toate exemplele (obiect, câmp, funcție logică, componentă de interfață, vizualizare, element de meniu de navigare, abilitate)
npx create-twenty-app@latest my-app
# Minimal: doar fișierele de bază (application-config.ts și default-role.ts)
@@ -118,8 +119,10 @@ my-twenty-app/
│ └── hello-world.tsx # Exemplu de componentă de interfață
├── views/
│ └── example-view.ts # Exemplu de definiție a unei vizualizări salvate
── navigation-menu-items/
└── example-navigation-menu-item.ts # Exemplu de link de navigare în bara laterală
── navigation-menu-items/
└── example-navigation-menu-item.ts # Exemplu de link de navigare în bara laterală
└── skills/
└── example-skill.ts # Exemplu de definiție a unei abilități a agentului AI
```
Cu `--minimal`, sunt create doar fișierele de bază (`application-config.ts`, `roles/default-role.ts` și `logic-functions/post-install.ts`). Cu `--interactive`, alegi ce fișiere de exemplu să incluzi.
@@ -148,6 +151,7 @@ SDK-ul detectează entitățile analizând fișierele TypeScript pentru apeluri
| `defineField()` | Extensii de câmp pentru obiectele existente |
| `defineView()` | Definiții pentru vizualizări salvate |
| `defineNavigationMenuItem()` | Definiții pentru elemente de meniu de navigare |
| `defineSkill()` | Definiții ale abilităților agentului AI |
<Note>
**Denumirea fișierelor este flexibilă.** Detectarea entităților se bazează pe AST — SDK-ul scanează fișierele sursă pentru tiparul `export default define<Entity>({...})`. Puteți organiza fișierele și folderele cum doriți. Gruparea după tipul de entitate (de exemplu, `logic-functions/`, `roles/`) este doar o convenție pentru organizarea codului, nu o cerință.
@@ -169,7 +173,7 @@ export default defineObject({
Comenzile ulterioare vor adăuga mai multe fișiere și foldere:
* `yarn twenty app:dev` va genera automat un client API tipizat în `node_modules/twenty-sdk/generated` (client Twenty tipizat + tipuri ale spațiului de lucru).
* `yarn twenty entity:add` va adăuga fișiere de definire a entităților în `src/` pentru obiectele, funcțiile, componentele front-end sau rolurile personalizate.
* `yarn twenty entity:add` va adăuga fișiere de definire a entităților în `src/` pentru obiectele, funcțiile, componentele front-end, rolurile, abilitățile și altele.
## Autentificare
@@ -222,6 +226,7 @@ SDK-ul oferă funcții ajutătoare pentru definirea entităților aplicației. D
| `defineField()` | Extindeți obiectele existente cu câmpuri suplimentare |
| `defineView()` | Definește vizualizări salvate pentru obiecte |
| `defineNavigationMenuItem()` | Definește linkuri de navigare în bara laterală |
| `defineSkill()` | Definiți abilități pentru agentul AI |
Aceste funcții validează configurația în timpul build-ului și oferă completare automată în IDE și siguranța tipurilor.
@@ -741,6 +746,41 @@ Puteți crea componente Front noi în două moduri:
* **Generat**: Rulați `yarn twenty entity:add` și alegeți opțiunea de a adăuga o componentă frontend nouă.
* **Manual**: Creați un fișier nou `*.front-component.tsx` și folosiți `defineFrontComponent()`.
### Abilități
Abilitățile definesc instrucțiuni și capabilități reutilizabile pe care agenții AI le pot folosi în spațiul dvs. de lucru. Folosiți `defineSkill()` pentru a defini abilități cu validare încorporată:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Abordare de vânzări',
description: 'Ghidează agentul AI printr-un proces structurat de abordare de vânzări',
icon: 'IconBrain',
content: `Ești un asistent pentru abordare de vânzări. Când contactezi un potențial client:
1. Cercetează compania și noutățile recente
2. Identifică rolul potențialului client și probabilele puncte sensibile
3. Redactează un mesaj personalizat care face referire la detalii specifice
4. Păstrează un ton profesionist, dar conversațional`,
});
```
Puncte cheie:
* `name` este un șir identificator unic pentru abilitate (se recomandă kebab-case).
* `label` este numele lizibil afișat în interfața cu utilizatorul (UI).
* `content` conține instrucțiunile abilității — acesta este textul pe care agentul AI îl folosește.
* `icon` (opțional) setează pictograma afișată în UI.
* `description` (opțional) oferă context suplimentar despre scopul abilității.
Puteți crea abilități noi în două moduri:
* **Generat**: Rulați `yarn twenty entity:add` și alegeți opțiunea de a adăuga o abilitate nouă.
* **Manual**: Creați un fișier nou și folosiți `defineSkill()`, urmând același model.
### Client tipizat generat
Clientul tipizat este generat automat de `yarn twenty app:dev` și stocat în `node_modules/twenty-sdk/generated`, pe baza schemei spațiului tău de lucru. Folosiți-l în funcțiile dvs.:
@@ -767,6 +807,53 @@ Notițe:
* Permisiunile cheii API sunt determinate de rolul referențiat în `application-config.ts` prin `defaultRoleUniversalIdentifier`. Acesta este rolul implicit folosit de funcțiile de logică ale aplicației.
* Aplicațiile pot defini roluri pentru a urma principiul celui mai mic privilegiu. Acordați doar permisiunile de care au nevoie funcțiile, apoi setați `defaultRoleUniversalIdentifier` la identificatorul universal al acelui rol.
#### Încărcarea fișierelor
Clientul `Twenty` generat include o metodă `uploadFile` pentru atașarea fișierelor la câmpuri de tip fișier ale obiectelor din spațiul de lucru. Deoarece clienții GraphQL standard nu acceptă în mod nativ încărcarea fișierelor multipart, clientul oferă această metodă dedicată care implementează, sub capotă, [specificația cererilor GraphQL multipart](https://github.com/jaydenseric/graphql-multipart-request-spec).
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
Semnătura metodei:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parametru | Tip | Descriere |
| ---------------------------------- | -------- | ------------------------------------------------------------------------------------------- |
| `fileBuffer` | `Buffer` | Conținutul brut al fișierului |
| `filename` | `string` | Numele fișierului (folosit pentru stocare și afișare) |
| `contentType` | `string` | Tipul MIME al fișierului (are valoarea implicită `application/octet-stream` dacă este omis) |
| `fieldMetadataUniversalIdentifier` | `string` | `universalIdentifier` al câmpului de tip fișier de pe obiectul tău |
Puncte cheie:
* Metoda trimite fișierul către **metadata endpoint** (nu către endpoint-ul principal GraphQL), unde mutația de încărcare este rezolvată.
* Folosește `universalIdentifier` al câmpului (nu ID-ul specific spațiului de lucru), astfel încât codul tău de încărcare funcționează în orice spațiu de lucru în care aplicația ta este instalată — în concordanță cu modul în care aplicațiile fac referire la câmpuri în rest.
* `url` returnat este un URL semnat pe care îl poți folosi pentru a accesa fișierul încărcat.
### Exemplu Hello World
Explorați un exemplu minim, cap la cap, care demonstrează obiecte, funcții de logică, componente Front și declanșatoare multiple [aici](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ description: Создавайте и управляйте настройками
* Определяйте пользовательские объекты и поля в виде кода (управляемая модель данных)
* Создавайте логические функции с пользовательскими триггерами
* Определите навыки для ИИ-агентов
* Развёртывайте одно и то же приложение в нескольких рабочих пространствах
## Требования
@@ -45,7 +46,7 @@ yarn twenty app:dev
Генератор каркаса поддерживает три режима для управления тем, какие примерные файлы включаются:
```bash filename="Terminal"
# По умолчанию (полный набор): все примеры (объект, поле, логическая функция, фронтенд-компонент, представление, пункт меню навигации)
# По умолчанию (полный набор): все примеры (объект, поле, логическая функция, фронтенд-компонент, представление, пункт меню навигации, навык)
npx create-twenty-app@latest my-app
# Минимальный: только основные файлы (application-config.ts и default-role.ts)
@@ -118,8 +119,10 @@ my-twenty-app/
│ └── hello-world.tsx # Пример фронтенд-компонента
├── views/
│ └── example-view.ts # Пример определения сохранённого представления
── navigation-menu-items/
└── example-navigation-menu-item.ts # Пример ссылки боковой панели навигации
── navigation-menu-items/
└── example-navigation-menu-item.ts # Пример ссылки боковой панели навигации
└── skills/
└── example-skill.ts # Пример определения навыка агента ИИ
```
С `--minimal` создаются только основные файлы (`application-config.ts`, `roles/default-role.ts` и `logic-functions/post-install.ts`). С `--interactive` вы выбираете, какие примерные файлы включить.
@@ -148,6 +151,7 @@ SDK обнаруживает сущности, разбирая ваши фай
| `defineField()` | Расширения полей для существующих объектов |
| `defineView()` | Определения сохранённых представлений |
| `defineNavigationMenuItem()` | Определения пунктов меню навигации |
| `defineSkill()` | Определения навыков агента ИИ |
<Note>
**Имена файлов заданы гибко.** Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона `export default define<Entity>({...})`. Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, `logic-functions/`, `roles/`) — это лишь соглашение для организации кода, а не требование.
@@ -169,7 +173,7 @@ export default defineObject({
Позднее команды добавят больше файлов и папок:
* `yarn twenty app:dev` автоматически сгенерирует типизированный клиент API в `node_modules/twenty-sdk/generated` (типизированный клиент Twenty + типы рабочего пространства).
* `yarn twenty entity:add` добавит файлы определений сущностей в `src/` для ваших пользовательских объектов, функций, фронтенд-компонентов или ролей.
* `yarn twenty entity:add` добавит файлы определений сущностей в `src/` для ваших пользовательских объектов, функций, фронтенд-компонентов, ролей, навыков и многого другого.
## Аутентификация
@@ -222,6 +226,7 @@ SDK предоставляет вспомогательные функции д
| `defineField()` | Расширение существующих объектов дополнительными полями |
| `defineView()` | Определяйте сохранённые представления для объектов |
| `defineNavigationMenuItem()` | Определяйте ссылки боковой панели навигации |
| `defineSkill()` | Определение навыков агента ИИ |
Эти функции проверяют вашу конфигурацию на этапе сборки и обеспечивают автодополнение в IDE и безопасность типов.
@@ -741,6 +746,41 @@ export default defineFrontComponent({
* **Сгенерировано**: Запустите `yarn twenty entity:add` и выберите опцию добавления нового фронтенд-компонента.
* **Вручную**: Создайте новый файл `*.front-component.tsx` и используйте `defineFrontComponent()`.
### Навыки
Навыки определяют многократно используемые инструкции и возможности, которые агенты ИИ могут использовать в вашем рабочем пространстве. Используйте `defineSkill()` для определения навыков со встроенной валидацией:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Основные моменты:
* `name` — уникальная строка-идентификатор навыка (рекомендуется kebab-case).
* `label` — читаемое человеком отображаемое имя, показываемое в UI.
* `content` содержит инструкции навыка — это текст, который использует агент ИИ.
* `icon` (необязательно) задаёт значок, отображаемый в UI.
* `description` (необязательно) предоставляет дополнительный контекст о назначении навыка.
Вы можете создать новые навыки двумя способами:
* **Сгенерировано**: Запустите `yarn twenty entity:add` и выберите опцию добавления нового навыка.
* **Вручную**: Создайте новый файл и используйте `defineSkill()`, следуя тому же шаблону.
### Сгенерированный типизированный клиент
Типизированный клиент автоматически генерируется с помощью `yarn twenty app:dev` и сохраняется в `node_modules/twenty-sdk/generated` на основе схемы вашего рабочего пространства. Используйте его в своих функциях:
@@ -767,6 +807,53 @@ const { me } = await client.query({ me: { id: true, displayName: true } });
* Права ключа API определяются ролью, на которую ссылается ваш `application-config.ts` через `defaultRoleUniversalIdentifier`. Это роль по умолчанию, используемая логическими функциями вашего приложения.
* Приложения могут определять роли, чтобы следовать принципу наименьших привилегий. Предоставляйте только те права, которые нужны вашим функциям, затем укажите в `defaultRoleUniversalIdentifier` универсальный идентификатор этой роли.
#### Загрузка файлов
Сгенерированный клиент `Twenty` включает метод `uploadFile` для прикрепления файлов к полям типа «файл» в объектах вашего рабочего пространства. Поскольку стандартные клиенты GraphQL изначально не поддерживают многочастовую загрузку файлов, клиент предоставляет специальный метод, который под капотом реализует [спецификацию многочастных запросов GraphQL](https://github.com/jaydenseric/graphql-multipart-request-spec).
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
Сигнатура метода:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Параметр | Тип | Описание |
| ---------------------------------- | -------- | ------------------------------------------------------------------------ |
| `fileBuffer` | `Buffer` | Необработанное содержимое файла |
| `filename` | `строка` | Имя файла (используется для хранения и отображения) |
| `contentType` | `строка` | Тип MIME файла (по умолчанию `application/octet-stream`, если не указан) |
| `fieldMetadataUniversalIdentifier` | `строка` | Значение `universalIdentifier` для поля типа файла в вашем объекте |
Основные моменты:
* Метод отправляет файл на **metadata endpoint** (не на основной GraphQL endpoint), где обрабатывается мутация загрузки.
* Он использует `universalIdentifier` поля (а не его идентификатор, специфичный для рабочего пространства), поэтому ваш код загрузки будет работать в любом рабочем пространстве, где установлено ваше приложение — в соответствии с тем, как приложения ссылаются на поля повсюду.
* Возвращаемый `url` — это подписанный URL, который можно использовать для доступа к загруженному файлу.
### Пример Hello World
Ознакомьтесь с минимальным сквозным примером, демонстрирующим объекты, логические функции, фронт-компоненты и несколько триггеров, [здесь](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
@@ -15,6 +15,7 @@ Uygulamalar, Twenty özelleştirmelerini **kod olarak** oluşturup yönetmenizi
* Özel nesneleri ve alanları kod olarak tanımlayın (yönetilen veri modeli)
* Özel tetikleyicilerle mantık fonksiyonları oluşturun
* Yapay zekâ ajanları için becerileri tanımlayın
* Aynı uygulamayı birden çok çalışma alanına dağıtın
## Ön Gereksinimler
@@ -45,13 +46,13 @@ yarn twenty app:dev
İskelet oluşturucu, hangi örnek dosyaların dahil edileceğini kontrol etmek için üç modu destekler:
```bash filename="Terminal"
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
# Varsayılan (kapsamlı): tüm örnekler (nesne, alan, mantık fonksiyonu, ön bileşen, görünüm, gezinme menüsü öğesi, yetenek)
npx create-twenty-app@latest my-app
# Minimal: only core files (application-config.ts and default-role.ts)
# Minimal: yalnızca çekirdek dosyalar (application-config.ts ve default-role.ts)
npx create-twenty-app@latest my-app --minimal
# Interactive: select which examples to include
# Etkileşimli: dahil edilecek örnekleri seçin
npx create-twenty-app@latest my-app --interactive
```
@@ -102,24 +103,26 @@ my-twenty-app/
eslint.config.mjs
tsconfig.json
README.md
public/ # Public assets folder (images, fonts, etc.)
public/ # Genel varlıklar klasörü (görseller, yazı tipleri vb.)
src/
├── application-config.ts # Required - main application configuration
├── application-config.ts # Gerekli - ana uygulama yapılandırması
├── roles/
│ └── default-role.ts # Default role for logic functions
│ └── default-role.ts # Mantık fonksiyonları için varsayılan rol
├── objects/
│ └── example-object.ts # Example custom object definition
│ └── example-object.ts # Örnek özel nesne tanımı
├── fields/
│ └── example-field.ts # Example standalone field definition
│ └── example-field.ts # Örnek bağımsız alan tanımı
├── logic-functions/
│ ├── hello-world.ts # Example logic function
│ └── post-install.ts # Post-install logic function
│ ├── hello-world.ts # Örnek mantık fonksiyonu
│ └── post-install.ts # Kurulum sonrası mantık fonksiyonu
├── front-components/
│ └── hello-world.tsx # Example front component
│ └── hello-world.tsx # Örnek ön bileşen
├── views/
│ └── example-view.ts # Example saved view definition
── navigation-menu-items/
└── example-navigation-menu-item.ts # Example sidebar navigation link
│ └── example-view.ts # Örnek kaydedilmiş görünüm tanımı
── navigation-menu-items/
└── example-navigation-menu-item.ts # Örnek kenar çubuğu gezinme bağlantısı
└── skills/
└── example-skill.ts # Örnek yapay zekâ ajanı yetenek tanımı
```
`--minimal` ile yalnızca çekirdek dosyalar oluşturulur (`application-config.ts`, `roles/default-role.ts` ve `logic-functions/post-install.ts`). `--interactive` ile hangi örnek dosyaların dahil edileceğini siz seçersiniz.
@@ -148,6 +151,7 @@ SDK, TypeScript dosyalarınızı **`export default define<Entity>({...})`** ça
| `defineField()` | Mevcut nesneler için alan genişletmeleri |
| `defineView()` | Kaydedilmiş görünüm tanımları |
| `defineNavigationMenuItem()` | Gezinme menüsü öğesi tanımları |
| `defineSkill()` | Yapay zekâ ajanı yetenek tanımları |
<Note>
**Dosya adlandırma esnektir.** Varlık algılama AST tabanlıdır — SDK, kaynak dosyalarınızı `export default define<Entity>({...})` desenini bulmak için tarar. Dosyalarınızı ve klasörlerinizi dilediğiniz gibi düzenleyebilirsiniz. Varlık türüne göre gruplama (örn. `logic-functions/`, `roles/`) bir gereklilik değil, yalnızca kod organizasyonu için bir gelenektir.
@@ -169,7 +173,7 @@ export default defineObject({
İlerideki komutlar daha fazla dosya ve klasör ekleyecektir:
* `yarn twenty app:dev`, `node_modules/twenty-sdk/generated` içinde tipli bir API istemcisini otomatik olarak oluşturur (tipli Twenty istemcisi + çalışma alanı türleri).
* `yarn twenty entity:add`, özel nesneleriniz, fonksiyonlarınız, ön bileşenleriniz veya rolleriniz için `src/` altında varlık tanım dosyaları ekler.
* `yarn twenty entity:add`, özel nesneleriniz, fonksiyonlarınız, ön bileşenleriniz, rolleriniz, yetenekleriniz ve daha fazlası için `src/` altında varlık tanım dosyaları ekler.
## Kimlik Doğrulama
@@ -222,6 +226,7 @@ SDK, uygulama varlıklarınızı tanımlamak için yardımcı fonksiyonlar sağl
| `defineField()` | Mevcut nesneleri ek alanlarla genişletin |
| `defineView()` | Nesneler için kaydedilmiş görünümler tanımlayın |
| `defineNavigationMenuItem()` | Kenar çubuğu gezinme bağlantılarını tanımlayın |
| `defineSkill()` | Yapay zekâ ajanı yeteneklerini tanımlayın |
Bu fonksiyonlar, derleme zamanında yapılandırmanızı doğrular ve IDE otomatik tamamlama ile tür güvenliği sağlar.
@@ -741,6 +746,41 @@ Yeni ön uç bileşenlerini iki şekilde oluşturabilirsiniz:
* **Şablondan**: `yarn twenty entity:add` çalıştırın ve yeni bir ön uç bileşeni ekleme seçeneğini seçin.
* **Manuel**: Yeni bir `*.front-component.tsx` dosyası oluşturun ve `defineFrontComponent()` kullanın.
### Beceriler
Yetenekler, yapay zekâ ajanlarının çalışma alanınızda kullanabileceği yeniden kullanılabilir yönergeleri ve kabiliyetleri tanımlar. Yerleşik doğrulamayla yetenekleri tanımlamak için `defineSkill()` kullanın:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
Önemli noktalar:
* `name`, yetenek için benzersiz bir tanımlayıcı dizedir (kebab-case önerilir).
* `label`, UI'de gösterilen, insan tarafından okunabilir addır.
* `content`, yetenek yönergelerini içerir — bu, yapay zekâ ajanının kullandığı metindir.
* `icon` (isteğe bağlı), UI'de gösterilen simgeyi ayarlar.
* `description` (isteğe bağlı), yeteneğin amacı hakkında ek bağlam sağlar.
Yeni yetenekleri iki şekilde oluşturabilirsiniz:
* **Şablondan**: `yarn twenty entity:add` komutunu çalıştırın ve yeni bir yetenek ekleme seçeneğini seçin.
* **Manuel**: Yeni bir dosya oluşturun ve aynı deseni izleyerek `defineSkill()` kullanın.
### Oluşturulmuş türlendirilmiş istemci
Tipli istemci, `yarn twenty app:dev` tarafından otomatik olarak oluşturulur ve çalışma alanı şemanıza göre `node_modules/twenty-sdk/generated` içine kaydedilir. Fonksiyonlarınızda kullanın:
@@ -767,6 +807,53 @@ Notlar:
* API anahtarının izinleri, `application-config.ts` içinde `defaultRoleUniversalIdentifier` aracılığıyla referans verilen role göre belirlenir. Bu, uygulamanızın mantık fonksiyonları tarafından kullanılan varsayılan roldür.
* Uygulamalar, en az ayrıcalık ilkesini izlemek için roller tanımlayabilir. Yalnızca fonksiyonlarınızın ihtiyaç duyduğu izinleri verin ve ardından `defaultRoleUniversalIdentifier` değerini o rolün evrensel tanımlayıcısına yönlendirin.
#### Dosya yükleme
Oluşturulan `Twenty` istemcisi, çalışma alanı nesnelerinizdeki dosya türündeki alanlara dosya eklemek için bir `uploadFile` yöntemi içerir. Standart GraphQL istemcileri çok parçalı dosya yüklemelerini yerel olarak desteklemediğinden, istemci arka planda [GraphQL çok parçalı istek belirtimi](https://github.com/jaydenseric/graphql-multipart-request-spec) uygulayan bu özel yöntemi sağlar.
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
Yöntem imzası:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| Parametre | Tür | Açıklama |
| ---------------------------------- | -------- | ------------------------------------------------------------------------------------------ |
| `fileBuffer` | `Buffer` | Dosyanın ham içeriği |
| `filename` | `string` | Dosyanın adı (depolama ve görüntüleme için kullanılır) |
| `contentType` | `string` | Dosyanın MIME türü (belirtilmezse varsayılan olarak `application/octet-stream` kullanılır) |
| `fieldMetadataUniversalIdentifier` | `string` | Nesnenizdeki dosya türü alanının `universalIdentifier` değeri |
Önemli noktalar:
* Yöntem dosyayı, yükleme mutasyonunun çözümlendiği **metadata endpoint**'e (ana GraphQL endpoint'ine değil) gönderir.
* Alan için `universalIdentifier` kullanılır (çalışma alanına özgü kimliği değil), böylece yükleme kodunuz uygulamanızın yüklü olduğu herhangi bir çalışma alanında çalışır — uygulamaların başka her yerde alanlara nasıl atıfta bulunduğuyla tutarlıdır.
* Döndürülen `url`, yüklenen dosyaya erişmek için kullanabileceğiniz imzalı bir URL'dir.
### Hello World örneği
Nesneleri, mantık fonksiyonlarını, ön uç bileşenlerini ve birden çok tetikleyiciyi gösteren minimal, uçtan uca bir örneği [buradan](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world) inceleyin:
@@ -15,6 +15,7 @@ description: 以代码的形式构建并管理 Twenty 自定义项。
* 以代码定义自定义对象和字段(受管理的数据模型)
* 构建带有自定义触发器的逻辑函数
* 为 AI 智能体定义技能
* 将同一个应用部署到多个工作空间
## 先决条件
@@ -45,13 +46,13 @@ yarn twenty app:dev
The scaffolder supports three modes for controlling which example files are included:
```bash filename="Terminal"
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
# 默认(完整):所有示例(对象、字段、逻辑函数、前端组件、视图、导航菜单项、技能)
npx create-twenty-app@latest my-app
# Minimal: only core files (application-config.ts and default-role.ts)
# 最小化:仅核心文件(application-config.ts default-role.ts
npx create-twenty-app@latest my-app --minimal
# Interactive: select which examples to include
# 交互式:选择要包含的示例
npx create-twenty-app@latest my-app --interactive
```
@@ -118,8 +119,10 @@ my-twenty-app/
│ └── hello-world.tsx # Example front component
├── views/
│ └── example-view.ts # Example saved view definition
── navigation-menu-items/
└── example-navigation-menu-item.ts # Example sidebar navigation link
── navigation-menu-items/
└── example-navigation-menu-item.ts # Example sidebar navigation link
└── skills/
└── example-skill.ts # Example AI agent skill definition
```
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
@@ -148,6 +151,7 @@ With `--minimal`, only the core files are created (`application-config.ts`, `rol
| `defineField()` | 现有对象的字段扩展 |
| `defineView()` | Saved view definitions |
| `defineNavigationMenuItem()` | Navigation menu item definitions |
| `defineSkill()` | AI agent skill definitions |
<Note>
**文件命名是灵活的。** 实体检测基于 AST — SDK 会扫描你的源文件以查找 `export default define<Entity>({...})` 模式。 你可以按照自己的喜好组织文件和文件夹。 按实体类型分组(例如 `logic-functions/`、`roles/`)只是代码组织的一种约定,并非必需。
@@ -169,7 +173,7 @@ export default defineObject({
后续命令将添加更多文件和文件夹:
* `yarn twenty app:dev` 将在 `node_modules/twenty-sdk/generated` 中自动生成一个类型化的 API 客户端(类型化的 Twenty 客户端 + 工作区类型)。
* `yarn twenty entity:add` 会在 `src/` 下为你的自定义对象、函数、前端组件或角色添加实体定义文件。
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
## 身份验证
@@ -222,6 +226,7 @@ twenty-sdk 提供你在应用中使用的类型化构件和辅助函数。 以
| `defineField()` | 为现有对象扩展额外字段 |
| `defineView()` | Define saved views for objects |
| `defineNavigationMenuItem()` | Define sidebar navigation links |
| `defineSkill()` | Define AI agent skills |
这些函数会在构建时校验你的配置,并提供 IDE 自动补全和类型安全。
@@ -741,6 +746,41 @@ export default defineFrontComponent({
* **脚手架生成**:运行 `yarn twenty entity:add` 并选择添加新前端组件的选项。
* **手动**:创建一个新的 `*.front-component.tsx` 文件,并使用 `defineFrontComponent()`。
### 技能
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
```typescript
// src/skills/example-skill.ts
import { defineSkill } from 'twenty-sdk';
export default defineSkill({
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
name: 'sales-outreach',
label: 'Sales Outreach',
description: 'Guides the AI agent through a structured sales outreach process',
icon: 'IconBrain',
content: `You are a sales outreach assistant. When reaching out to a prospect:
1. Research the company and recent news
2. Identify the prospect's role and likely pain points
3. Draft a personalized message referencing specific details
4. Keep the tone professional but conversational`,
});
```
关键点:
* `name` is a unique identifier string for the skill (kebab-case recommended).
* `label` is the human-readable display name shown in the UI.
* `content` contains the skill instructions — this is the text the AI agent uses.
* `icon` (optional) sets the icon displayed in the UI.
* `description` (optional) provides additional context about the skill's purpose.
You can create new skills in two ways:
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
### 生成的类型化客户端
类型化客户端由 `yarn twenty app:dev` 自动生成,并基于你的工作区架构存放在 `node_modules/twenty-sdk/generated`。 在你的函数中使用它:
@@ -767,6 +807,53 @@ const { me } = await client.query({ me: { id: true, displayName: true } });
* API 密钥的权限由 `application-config.ts` 中通过 `defaultRoleUniversalIdentifier` 引用的角色决定。 这是你的应用逻辑函数使用的默认角色。
* 应用可以定义角色以遵循最小权限原则。 仅授予函数所需的权限,然后将 `defaultRoleUniversalIdentifier` 指向该角色的通用标识符。
#### 上传文件
生成的 `Twenty` 客户端包含一个 `uploadFile` 方法,用于将文件附加到工作区对象的文件类型字段。 由于标准 GraphQL 客户端不原生支持多部分文件上传,该客户端提供了一个专用方法,在底层实现了 [GraphQL 多部分请求规范](https://github.com/jaydenseric/graphql-multipart-request-spec)。
```typescript
import Twenty from '~/generated';
import * as fs from 'fs';
const client = new Twenty();
const fileBuffer = fs.readFileSync('./invoice.pdf');
const uploadedFile = await client.uploadFile(
fileBuffer, // file contents as a Buffer
'invoice.pdf', // filename
'application/pdf', // MIME type (defaults to 'application/octet-stream')
'58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier
);
console.log(uploadedFile);
// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' }
```
方法签名:
```typescript
uploadFile(
fileBuffer: Buffer,
filename: string,
contentType: string,
fieldMetadataUniversalIdentifier: string,
): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }>
```
| 参数 | 类型 | 描述 |
| ---------------------------------- | -------- | ------------------------------------------------ |
| `fileBuffer` | `Buffer` | 原始文件内容 |
| `filename` | `string` | 文件名称(用于存储和显示) |
| `contentType` | `string` | 文件的 MIME 类型(如果省略,默认为 `application/octet-stream` |
| `fieldMetadataUniversalIdentifier` | `string` | 你的对象上文件类型字段的 `universalIdentifier` |
关键点:
* 该方法将文件发送到**元数据端点**(而不是主 GraphQL 端点),在那里处理上传变更操作。
* 它使用该字段的 `universalIdentifier`(而不是其工作区特定的 ID),因此你的上传代码可以在安装了你的应用的任何工作区中使用——这与应用在其他地方引用字段的方式保持一致。
* 返回的 `url` 是一个签名 URL,你可以用它来访问已上传的文件。
### Hello World 示例
在[此处](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world)查看一个最小的端到端示例,展示对象、逻辑函数、前端组件和多种触发器:
+1 -1
View File
@@ -19,7 +19,7 @@
},
"devDependencies": {
"@lingui/cli": "^5.1.2",
"@lingui/swc-plugin": "^5.6.0",
"@lingui/swc-plugin": "^5.11.0",
"@lingui/vite-plugin": "^5.1.2",
"@react-email/preview-server": "5.1.0",
"@tiptap/core": "^3.4.2",
+1 -1
View File
@@ -63,7 +63,7 @@ const jestConfig = {
global: {
statements: 49.5,
lines: 48,
functions: 40,
functions: 39.5,
},
},
collectCoverageFrom: ['<rootDir>/src/**/*.ts'],
+1 -1
View File
@@ -120,7 +120,7 @@
},
"devDependencies": {
"@lingui/cli": "^5.1.2",
"@lingui/swc-plugin": "^5.6.0",
"@lingui/swc-plugin": "^5.11.0",
"@lingui/vite-plugin": "^5.1.2",
"@playwright/test": "^1.56.1",
"@tiptap/suggestion": "3.4.2",
File diff suppressed because one or more lines are too long
@@ -3,7 +3,7 @@ import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePat
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { useParams } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
import { AppPath, SettingsPath } from 'twenty-shared/types';
import { getSettingsPath } from 'twenty-shared/utils';
@@ -63,14 +63,14 @@ const setupMockUseParams = (objectNamePlural?: string) => {
.mockReturnValueOnce({ objectNamePlural: objectNamePlural ?? '' });
};
jest.mock('recoil');
jest.mock('@/ui/utilities/state/jotai/hooks/useRecoilValueV2');
const setupMockRecoil = (
objectNamePlural?: string,
verifyEmailRedirectPath?: string,
calendarBookingPageId?: string | null,
) => {
jest
.mocked(useRecoilValue)
.mocked(useRecoilValueV2)
.mockReturnValueOnce(calendarBookingPageId ?? 'mock-calendar-id')
.mockReturnValueOnce([{ namePlural: objectNamePlural ?? '' }])
.mockReturnValueOnce(verifyEmailRedirectPath);
@@ -5,9 +5,9 @@ import { useIsCurrentLocationOnAWorkspace } from '@/domain-manager/hooks/useIsCu
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { useLocation, useParams } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { AppPath, SettingsPath } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { WorkspaceActivationStatus } from 'twenty-shared/workspace';
@@ -23,7 +23,7 @@ export const usePageChangeEffectNavigateLocation = () => {
);
const { defaultHomePagePath } = useDefaultHomePagePath();
const location = useLocation();
const calendarBookingPageId = useRecoilValue(calendarBookingPageIdState);
const calendarBookingPageId = useRecoilValueV2(calendarBookingPageIdState);
const someMatchingLocationOf = (appPaths: AppPath[]): boolean =>
appPaths.some((appPath) => isMatchingLocation(location, appPath));
@@ -45,11 +45,13 @@ export const usePageChangeEffectNavigateLocation = () => {
];
const objectNamePlural = useParams().objectNamePlural ?? '';
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
const objectMetadataItems = useRecoilValueV2(objectMetadataItemsState);
const objectMetadataItem = objectMetadataItems?.find(
(objectMetadataItem) => objectMetadataItem.namePlural === objectNamePlural,
);
const verifyEmailRedirectPath = useRecoilValue(verifyEmailRedirectPathState);
const verifyEmailRedirectPath = useRecoilValueV2(
verifyEmailRedirectPathState,
);
if (
(!isLoggedIn || (isLoggedIn && !isOnAWorkspace)) &&
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Objekte"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}ste} other {{num}de}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Voeg \"{trimmedName}\" by opsies"
msgid "Add a {objectLabelSingular}"
msgstr "Voeg 'n {objectLabelSingular} by"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Voeg 'n nodus by"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Gevorderde funksie om die werkverrigting van navrae te verbeter en uniek
msgid "Advanced filter"
msgstr "Gevorderde filter"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "KI"
msgid "AI Model"
msgstr "KI Model"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "'n Fout het voorgekom tydens die oplaai van die prent."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfigurasie"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Konfigureer hierdie widget om velde te vertoon"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Kern"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Kernskema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Besluit watter Subadresvelde jy wil vertoon"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Verstekland"
msgid "Default Country Code"
msgstr "Verstek landkode"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Kon nie rol opdateer nie"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Mislukkingskoers"
msgid "False"
msgstr "Vals"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr ""
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Algemeen"
@@ -7007,11 +7003,6 @@ msgstr "Instruksies vir KI"
msgid "Integrations - Settings"
msgstr "Integrasies - Instellings"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interaksie met jou werkspasie-data"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadata"
msgid "Metadata file generation failed"
msgstr "Metadataleêr generasie het misluk"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metadataskema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Missie voltooi!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Meer"
@@ -8522,6 +8514,11 @@ msgstr "Nuwe Veld"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Geen maatstawedata beskikbaar"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Geen modelle beskikbaar nie. Stel asseblief KI-modelle in jou werkruimte-instellings op."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Ander"
@@ -10256,11 +10252,6 @@ msgstr "Wagryprestasie"
msgid "Queue: {queueName}"
msgstr "Wagry: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Instelling van jou databasis..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Hemelblou"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount, plural, zero {لا كائنات} one {كائن وا
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr ""
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "أضف \"{trimmedName}\" إلى الخيارات"
msgid "Add a {objectLabelSingular}"
msgstr "أضف {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "إضافة عقدة"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "ميزة متقدمة لتحسين أداء الاستعلامات وف
msgid "Advanced filter"
msgstr "الفلتر المتقدم"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "الذكاء الاصطناعي"
msgid "AI Model"
msgstr "نموذج الذكاء الاصطناعي"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "حدث خطأ أثناء تحميل الصورة."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "التكوين"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "قم بتهيئة هذه الأداة لعرض الحقول"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "النواة"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "المخطط الأساسي"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "قرر أي حقول العناوين الفرعية تريد عرضها"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "البلد الافتراضي"
msgid "Default Country Code"
msgstr "رمز البلد الافتراضي"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "فشل في تحديث الدور"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "معدل الفشل"
msgid "False"
msgstr "خاطئ"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "الرسم البياني القياسي"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "عام"
@@ -7007,11 +7003,6 @@ msgstr "تعليمات إلى الذكاء الاصطناعي"
msgid "Integrations - Settings"
msgstr "التكاملات - إعدادات"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "تفاعل مع بيانات مساحة العمل الخاصة بك"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "البيانات الوصفية"
msgid "Metadata file generation failed"
msgstr "فشل في توليد ملف البيانات الوصفية"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "مخطط البيانات الوصفية"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "تم إنجاز المهمة!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "المزيد"
@@ -8522,6 +8514,11 @@ msgstr "حقل جديد"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "لا توجد بيانات قياسات متاحة"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "لا توجد نماذج متاحة. يرجى تهيئة نماذج الذكاء الاصطناعي في إعدادات مكان العمل الخاص بك."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "أخرى"
@@ -10256,11 +10252,6 @@ msgstr "أداء الطابور"
msgid "Queue: {queueName}"
msgstr "الطابور: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "إعداد قاعدة البيانات الخاصة بك..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "سمائي"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objectes"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}r} other {{num}è}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Afegeix \"{trimmedName}\" a les opcions"
msgid "Add a {objectLabelSingular}"
msgstr "Afegeix un {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Afegeix un node"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Funció avançada per millorar el rendiment de les consultes i fer compl
msgid "Advanced filter"
msgstr "Filtre avançat"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "IA"
msgid "AI Model"
msgstr "Model IA"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "S'ha produït un error en carregar la imatge."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Configuració"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Configura aquest giny per mostrar camps"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Nucli"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Esquema del nucli"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Decideix quins camps de Sub-adreça vols mostrar"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "País predeterminat"
msgid "Default Country Code"
msgstr "Codi de país predeterminat"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Ha fallat l'actualització del rol"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Taxa de fallades"
msgid "False"
msgstr "Fals"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Gràfic de mesurador"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "General"
@@ -7007,11 +7003,6 @@ msgstr "Instruccions per a la IA"
msgid "Integrations - Settings"
msgstr "Integracions - Configuració"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interactua amb les dades del teu espai de treball"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadades"
msgid "Metadata file generation failed"
msgstr "Error en la generació del fitxer de metadades"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Esquema de metadades"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Missió acomplerta!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Més"
@@ -8522,6 +8514,11 @@ msgstr "Nou camp"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "No hi ha dades de mètriques disponibles"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "No hi ha models disponibles. Si us plau, configureu models d'IA a la configuració del vostre espai de treball."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Altres"
@@ -10256,11 +10252,6 @@ msgstr "Rendiment de la cua"
msgid "Queue: {queueName}"
msgstr "Cua: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Configurant la teva base de dades..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Cel"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objektů"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}.} few {{num}.} many {{num}.} other {{num}.}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Přidat \"{trimmedName}\" do možností"
msgid "Add a {objectLabelSingular}"
msgstr "Přidat {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Přidat uzel"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Pokročilá funkce pro zlepšení výkonu dotazů a prosazení jedinečn
msgid "Advanced filter"
msgstr "Pokročilý filtr"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI Model"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Při nahrávání obrázku došlo k chybě."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfigurace"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Nakonfigurujte tento widget, aby zobrazoval pole."
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Jádro"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Základní schéma"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Rozhodněte se, která pole podadresy chcete zobrazit"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Výchozí země"
msgid "Default Country Code"
msgstr "Výchozí číselný kód země"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Nepodařilo se aktualizovat roli"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Míra selhání"
msgid "False"
msgstr "Nepravdivé"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Ukazatelový graf"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Obecné"
@@ -7007,11 +7003,6 @@ msgstr "Pokyny pro AI"
msgid "Integrations - Settings"
msgstr "Integrace - Nastavení"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interakce s daty vašeho pracovního prostoru"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadata"
msgid "Metadata file generation failed"
msgstr "Generování souboru metadat selhalo"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Schéma metadat"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Mise splněna!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Více"
@@ -8522,6 +8514,11 @@ msgstr "Nové pole"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Žádná data metrik nejsou k dispozici"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Nejsou dostupné žádné modely. Prosím, nakonfigurujte AI modely v nastavení vašeho pracovního prostoru."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Ostatní"
@@ -10256,11 +10252,6 @@ msgstr "Výkon fronty"
msgid "Queue: {queueName}"
msgstr "Fronta: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Nastavení vaší databáze..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Nebesky modrá"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objekter"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}ste} other {{num}te}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Tilføj \"{trimmedName}\" til muligheder"
msgid "Add a {objectLabelSingular}"
msgstr "Tilføj {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Tilføj en node"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Avanceret funktion til at forbedre ydeevnen af forespørgsler og håndh
msgid "Advanced filter"
msgstr "Avanceret filter"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI Model"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Der opstod en fejl under upload af billedet."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfiguration"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Konfigurer denne widget til at vise felter"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Kerne"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Kerneskema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Vælg hvilke underadressefelter du vil vise"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Standardland"
msgid "Default Country Code"
msgstr "Standardlandekode"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Kunne ikke ændre rollen"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Fejlrate"
msgid "False"
msgstr "Falsk"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Målediagram"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Generelt"
@@ -7007,11 +7003,6 @@ msgstr "Instruktioner til AI"
msgid "Integrations - Settings"
msgstr "Integrationer - Indstillinger"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interagér med dine arbejdspladsdata"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadata"
msgid "Metadata file generation failed"
msgstr "Generering af metadatafil mislykkedes"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metadata-skema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Mission fuldført!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Mere"
@@ -8522,6 +8514,11 @@ msgstr "Nyt felt"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Ingen metrikdata tilgængelige"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Ingen modeller tilgængelige. Konfigurer venligst AI-modeller i dine arbejdsområdeindstillinger."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Andet"
@@ -10256,11 +10252,6 @@ msgstr "Køydelse"
msgid "Queue: {queueName}"
msgstr "Kø: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Opsætning af din database..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Himmel"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Objekte"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}.} other {{num}.}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\" zu den Optionen hinzufügen"
msgid "Add a {objectLabelSingular}"
msgstr "Ein {objectLabelSingular} hinzufügen"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Knoten hinzufügen"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Erweiterte Funktion zur Verbesserung der Abfrageleistung und zur Durchse
msgid "Advanced filter"
msgstr "Erweiterter Filter"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "KI"
msgid "AI Model"
msgstr "KI-Modell"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Beim Hochladen des Bildes ist ein Fehler aufgetreten."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfiguration"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Konfigurieren Sie dieses Widget, um Felder anzuzeigen."
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Kern"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Kernschema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Entscheiden Sie, welche Unteradressfelder Sie anzeigen möchten"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Standardland"
msgid "Default Country Code"
msgstr "Standard-Ländercode"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Fehler beim Aktualisieren der Rolle"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Fehlerquote"
msgid "False"
msgstr "Falsch"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr ""
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Allgemein"
@@ -7007,11 +7003,6 @@ msgstr "Anweisungen für die KI"
msgid "Integrations - Settings"
msgstr "Integrationen - Einstellungen"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interagieren Sie mit Ihren Arbeitsbereichsdaten"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadaten"
msgid "Metadata file generation failed"
msgstr "Generierung der Metadatendatei fehlgeschlagen"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metadaten-Schema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Mission erfüllt!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Mehr"
@@ -8522,6 +8514,11 @@ msgstr "Neues Feld"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Keine Metrik-Daten verfügbar"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Keine Modelle verfügbar. Bitte konfigurieren Sie KI-Modelle in Ihren Arbeitsbereichseinstellungen."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Andere"
@@ -10256,11 +10252,6 @@ msgstr "Queue-Leistung"
msgid "Queue: {queueName}"
msgstr "Warteschlange: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Einrichten Ihrer Datenbank..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Himmelblau"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Αντικείμενα"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}η} other {{num}η}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Προσθήκη \"{trimmedName}\" στις επιλογές"
msgid "Add a {objectLabelSingular}"
msgstr "Προσθήκη {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Προσθήκη κόμβου"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Σύνθετη λειτουργία για τη βελτίωση της
msgid "Advanced filter"
msgstr "Προηγμένο φίλτρο"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "Μοντέλο AI"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτω
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Διαμόρφωση"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Ρυθμίστε αυτό το γραφικό στοιχείο ώστε
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Πυρήνας"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Βασικό σχήμα"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Αποφασίστε ποια πεδία Υπο-διευθύνσεων θέλετε να εμφανίζονται"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Προεπιλεγμένη Χώρα"
msgid "Default Country Code"
msgstr "Προεπιλεγμένος Κωδικός Χώρας"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Αποτυχία ενημέρωσης ρόλου"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Ποσοστό αποτυχίας"
msgid "False"
msgstr "Ψευδής"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Διάγραμμα δείκτη"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Γενικά"
@@ -7007,11 +7003,6 @@ msgstr "Οδηγίες για το AI"
msgid "Integrations - Settings"
msgstr "Ενσωματώσεις - Ρυθμίσεις"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Αλληλεπιδράστε με τα δεδομένα του χώρου εργασίας σας"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Μεταδεδομένα"
msgid "Metadata file generation failed"
msgstr "Αποτυχία δημιουργίας αρχείου μεταδεδομένων"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Σχήμα μεταδεδομένων"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Αποστολή ολοκληρώθηκε!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Περισσότερα"
@@ -8522,6 +8514,11 @@ msgstr "Νέο Πεδίο"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Δεν υπάρχουν διαθέσιμα δεδομένα μετρήσ
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Δεν υπάρχουν διαθέσιμα μοντέλα. Παρακαλούμε ρυθμίστε τα μοντέλα AI στις ρυθμίσεις χώρου εργασίας σας."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Άλλο"
@@ -10256,11 +10252,6 @@ msgstr "Επιδόσεις Ουράς"
msgid "Queue: {queueName}"
msgstr "Ουρά: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Ρύθμιση της βάσης δεδομένων σας..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11873,16 +11863,6 @@ msgstr "Ουρανί"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+53 -73
View File
@@ -306,6 +306,11 @@ msgstr "{morphRelationCount} Objects"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr "{numberOfSelectedItems} workspace members"
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -765,6 +770,11 @@ msgstr "Add \"{trimmedName}\" to options"
msgid "Add a {objectLabelSingular}"
msgstr "Add a {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr "Add a Group"
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -781,11 +791,6 @@ msgstr "Add a node"
msgid "Add a record"
msgstr "Add a record"
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr "Add a Section"
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1140,11 +1145,6 @@ msgstr "Advanced feature to improve the performance of queries and to enforce un
msgid "Advanced filter"
msgstr "Advanced filter"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr "Advanced model for complex planning"
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1258,11 +1258,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI Model"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr "AI Models"
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1507,6 +1502,9 @@ msgstr "An error occurred while uploading the picture."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2878,11 +2876,6 @@ msgstr "Configuration"
msgid "Configure"
msgstr "Configure"
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr "Configure AI models for routing and planning"
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2948,6 +2941,11 @@ msgstr "Configure this widget to display fields"
msgid "Configure when this function should be executed"
msgstr "Configure when this function should be executed"
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr "Configure your default AI model"
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3238,11 +3236,6 @@ msgstr "Core"
msgid "Core Objects"
msgstr "Core Objects"
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Core Schema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3941,6 +3934,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Decide which Sub-address fields you want to display"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3956,6 +3950,21 @@ msgstr "Default Country"
msgid "Default Country Code"
msgstr "Default Country Code"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr "Default Model"
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr "Default model for new chats and agents"
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr "Default model updated successfully"
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5804,10 +5813,10 @@ msgstr "Failed to save role permissions: {errorMessage}"
msgid "Failed to save workspace instructions"
msgstr "Failed to save workspace instructions"
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
msgstr "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr "Failed to update default model"
#. js-lingui-id: P1NmNz
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -5829,11 +5838,6 @@ msgstr "Failed to update records. Please try again."
msgid "Failed to update role"
msgstr "Failed to update role"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr "Failed to update smart model"
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5881,16 +5885,6 @@ msgstr "Failure Rate"
msgid "False"
msgstr "False"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr "Fast Model"
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr "Fast model updated successfully"
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6278,7 +6272,9 @@ msgstr "Gauge Chart"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "General"
@@ -7002,11 +6998,6 @@ msgstr "Instructions for AI"
msgid "Integrations - Settings"
msgstr "Integrations - Settings"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interact with your workspace data"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8120,11 +8111,6 @@ msgstr "Metadata"
msgid "Metadata file generation failed"
msgstr "Metadata file generation failed"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metadata Schema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8183,6 +8169,11 @@ msgstr "Missing email draft permission."
msgid "Mission accomplished!"
msgstr "Mission accomplished!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr "Models"
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8228,6 +8219,7 @@ msgid "months"
msgstr "months"
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "More"
@@ -8517,6 +8509,11 @@ msgstr "New Field"
msgid "New folder"
msgstr "New folder"
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr "New Group"
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8925,7 +8922,6 @@ msgstr "No metrics data available"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "No models available. Please configure AI models in your workspace settings."
@@ -9563,7 +9559,7 @@ msgstr "Organize"
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Other"
@@ -10251,11 +10247,6 @@ msgstr "Queue performance"
msgid "Queue: {queueName}"
msgstr "Queue: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr "Quick model for routing decisions"
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11648,7 +11639,6 @@ msgstr "Setting up your database..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11866,16 +11856,6 @@ msgstr "Sky"
msgid "Small section heading"
msgstr "Small section heading"
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr "Smart Model"
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr "Smart model updated successfully"
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objetos"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}º} other {{num}.º}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Agregar \"{trimmedName}\" a las opciones"
msgid "Add a {objectLabelSingular}"
msgstr "Agregar un {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Añadir un nodo"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Característica avanzada para mejorar el rendimiento de consultas y para
msgid "Advanced filter"
msgstr "Filtro avanzado"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "IA"
msgid "AI Model"
msgstr "Modelo de IA"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Se produjo un error al subir la imagen."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Configuración"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Configura este widget para visualizar campos"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Núcleo"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Esquema principal"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Decide qué campos de subdirección deseas mostrar"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "País predeterminado"
msgid "Default Country Code"
msgstr "Código de país predeterminado"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr "Error al guardar los permisos de rol: {errorMessage}"
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Error al actualizar el rol"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Tasa de fallos"
msgid "False"
msgstr "Falso"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Gráfico de Medidor"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "General"
@@ -7007,11 +7003,6 @@ msgstr "Instrucciones para la IA"
msgid "Integrations - Settings"
msgstr "Integraciones - Ajustes"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interactúe con los datos de su espacio de trabajo"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadatos"
msgid "Metadata file generation failed"
msgstr "Fallo en la generación del archivo de metadatos"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Esquema de metadatos"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "¡Misión cumplida!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Más"
@@ -8522,6 +8514,11 @@ msgstr "Nuevo Campo"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "No hay datos de métricas disponibles"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "No hay modelos disponibles. Por favor configure modelos de IA en la configuración de su espacio de trabajo."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Otros"
@@ -10256,11 +10252,6 @@ msgstr "Rendimiento de la cola"
msgid "Queue: {queueName}"
msgstr "Cola: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Configurando su base de datos..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Cielo"
msgid "Small section heading"
msgstr "Encabezado de sección pequeña"
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objektia"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}.} other {{num}.}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Lisää \"{trimmedName}\" valintoihin"
msgid "Add a {objectLabelSingular}"
msgstr "Lisää {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Lisää solmu"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Edistynyt ominaisuus tiedusteluiden suorituskyvyn parantamiseksi ja ainu
msgid "Advanced filter"
msgstr "Tarkennettu suodatin"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI-malli"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Kuvaa ladattaessa tapahtui virhe."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Kokoonpano"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Määritä tämä pienoisohjelma näyttämään kenttiä"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Ydin"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Ydinskeema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Päätä, mitkä alikentät haluat näyttää"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Oletusmaa"
msgid "Default Country Code"
msgstr "Oletusmaakoodi"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Roolin päivitys epäonnistui"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Epäonnistumisprosentti"
msgid "False"
msgstr "Väärä"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Mittarikaavio"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Yleiset"
@@ -7007,11 +7003,6 @@ msgstr "Ohjeet tekoälylle"
msgid "Integrations - Settings"
msgstr "Integraatiot - Asetukset"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Vuorovaikuta työtilasi tietojen kanssa"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metatiedot"
msgid "Metadata file generation failed"
msgstr "Metatiedostotiedoston luonti epäonnistui"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metatietoskeema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Tehtävä suoritettu!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Lisää"
@@ -8522,6 +8514,11 @@ msgstr "Uusi kenttä"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Ei metriikkatietoja saatavilla"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Malitavoa ei ole saatavilla. Konfiguroi AI-mallit työtilan asetuksista."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Muu"
@@ -10256,11 +10252,6 @@ msgstr "Jonon suorituskyky"
msgid "Queue: {queueName}"
msgstr "Jono: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Asetetaan tietokantaasi..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Taivaansininen"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objets"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}er} other {{num}e}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Ajouter \"{trimmedName}\" aux options"
msgid "Add a {objectLabelSingular}"
msgstr "Ajouter un {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Ajouter un nœud"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Fonctionnalité avancée pour améliorer la performance des requêtes et
msgid "Advanced filter"
msgstr "Filtre avancé"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "IA"
msgid "AI Model"
msgstr "Modèle IA"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Une erreur s'est produite lors du téléversement de l'image."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Configuration"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Configurez ce widget pour afficher des champs"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Noyau"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Schéma principal"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Décidez quels champs de sous-adresse vous souhaitez afficher"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Pays par défaut"
msgid "Default Country Code"
msgstr "Code du pays par défaut"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Échec de la mise à jour du rôle"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Taux d'échec"
msgid "False"
msgstr "Faux"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr ""
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Général"
@@ -7007,11 +7003,6 @@ msgstr "Instructions pour l'IA"
msgid "Integrations - Settings"
msgstr "Intégrations - Paramètres"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interagissez avec les données de votre espace de travail"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Métadonnées"
msgid "Metadata file generation failed"
msgstr "Échec de la génération du fichier des métadonnées"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Schéma des métadonnées"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Mission accomplie !"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Plus"
@@ -8522,6 +8514,11 @@ msgstr "Nouveau champ"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Aucune donnée de métriques disponible"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Aucun modèle disponible. Veuillez configurer les modèles IA dans les paramètres de votre espace de travail."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Autres"
@@ -10256,11 +10252,6 @@ msgstr "Performance de la file d'attente"
msgid "Queue: {queueName}"
msgstr "File d'attente : {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Configuration de votre base de données..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Ciel"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} אובייקטים"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num} ראשון} two {{num} שני} many {{num} ־ות} other {{num} ־ות}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "הוסף \"{trimmedName}\" לאפשרויות"
msgid "Add a {objectLabelSingular}"
msgstr "הוסף {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "הוסף צומת"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "תכונה מתקדמת לשיפור ביצועי השאילתות וא
msgid "Advanced filter"
msgstr "מסנן מתקדם"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "בינה מלאכותית (AI)"
msgid "AI Model"
msgstr "מודל AI"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "אירעה שגיאה בעת העלאת התמונה."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "הגדרה"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "הגדירו את הווידג'ט הזה כדי להציג שדות"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "ליבה"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "סכימת ליבה"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "החליטו אילו שדות כתובת משנה אתם רוצים להציג"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "מדינת ברירת המחדל"
msgid "Default Country Code"
msgstr "קוד מדינה ברירת מחדל"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "העדכון של התפקיד נכשל"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "שיעור כשל"
msgid "False"
msgstr "שקר"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "תרשים מד"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "כללי"
@@ -7007,11 +7003,6 @@ msgstr "הוראות לבינה מלאכותית"
msgid "Integrations - Settings"
msgstr "אינטגרציות - הגדרות"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "אינטראקציה עם נתוני סביבת העבודה שלך"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "מטא-נתונים"
msgid "Metadata file generation failed"
msgstr "יצירת קובץ מטא נתונים נכשלה"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "סכימת מטא-נתונים"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "המשימה הושלמה!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "עוד"
@@ -8522,6 +8514,11 @@ msgstr "שדה חדש"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "אין נתונים זמינים"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "אין מודלים זמינים. נא להגדיר מודלים לבינה מלאכותית בהגדרות מרחב העבודה שלכם."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "אחר"
@@ -10256,11 +10252,6 @@ msgstr "ביצועי התור"
msgid "Queue: {queueName}"
msgstr "תור: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "מגדיר את מסד הנתונים שלך..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "תכלת"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objektum"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}-ik} other {{num}-ik}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\" hozzáadása az opciókhoz"
msgid "Add a {objectLabelSingular}"
msgstr "Új {objectLabelSingular} hozzáadása"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Csomópont hozzáadása"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Fejlett funkció a lekérdezések teljesítményének javítására és
msgid "Advanced filter"
msgstr "Speciális szűrő"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "MI"
msgid "AI Model"
msgstr "AI modell"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Hiba történt a kép feltöltése közben."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfiguráció"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Konfigurálja ezt a widgetet a mezők megjelenítéséhez"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Mag"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Alap séma"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Döntse el, melyik Al-cím mezőket szeretné megjeleníteni"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Alapértelmezett ország"
msgid "Default Country Code"
msgstr "Alapértelmezett országkód"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "A szerepkör frissítése sikertelen"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Hibaarány"
msgid "False"
msgstr "Hamis"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Mérőműszer diagram"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Általános"
@@ -7007,11 +7003,6 @@ msgstr "Utasítások az AI-nak"
msgid "Integrations - Settings"
msgstr "Integrációk - Beállítások"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Lépjen kapcsolatba a munkaterület adatával"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metaadatok"
msgid "Metadata file generation failed"
msgstr "Metadat fájl generálása sikertelen"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metaadatséma"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Küldetés teljesítve!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Több"
@@ -8522,6 +8514,11 @@ msgstr "Új mező"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Nincs elérhető metrikai adat"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Nincsenek elérhető modellek. Kérjük, állítsa be a MI modelleket a munkaterület beállításaiban."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Egyéb"
@@ -10256,11 +10252,6 @@ msgstr "Sor teljesítmény"
msgid "Queue: {queueName}"
msgstr "Sor: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Az adatbázis beállítása..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Égkék"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} oggetti"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr ""
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Aggiungi \"{trimmedName}\" alle opzioni"
msgid "Add a {objectLabelSingular}"
msgstr "Aggiungi {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Aggiungi un nodo"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Funzionalità avanzata per migliorare le prestazioni delle query e impor
msgid "Advanced filter"
msgstr "Filtro avanzato"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "Modello AI"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Si è verificato un errore durante il caricamento dell'immagine."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Configurazione"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Configura questo widget per visualizzare i campi"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Core"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Schema principale"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Decidere quali campi del sottoindirizzo visualizzare"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Paese predefinito"
msgid "Default Country Code"
msgstr "Prefisso internazionale predefinito"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Impossibile aggiornare il ruolo"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Tasso di errore"
msgid "False"
msgstr "Falso"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Grafico a Indicatore"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Generale"
@@ -7007,11 +7003,6 @@ msgstr "Istruzioni per l'AI"
msgid "Integrations - Settings"
msgstr "Integrazioni - Impostazioni"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interagisci con i dati del tuo spazio di lavoro"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadati"
msgid "Metadata file generation failed"
msgstr "Generazione del file di metadata fallita"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Schema dei metadati"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Missione compiuta!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Altro"
@@ -8522,6 +8514,11 @@ msgstr "Nuovo Campo"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Nessun dato metrico disponibile"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Nessun modello disponibile. Configurare i modelli AI nelle impostazioni del tuo workspace."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Altro"
@@ -10256,11 +10252,6 @@ msgstr "Prestazioni della coda"
msgid "Queue: {queueName}"
msgstr "Coda: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Configurazione del tuo database..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Cielo"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} 個のオブジェクト"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, other {{num}番目}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "「{trimmedName}」をオプションに追加"
msgid "Add a {objectLabelSingular}"
msgstr "{objectLabelSingular} を追加"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "ノードを追加する"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "クエリのパフォーマンスを向上させ、重複制約を強制
msgid "Advanced filter"
msgstr "高度なフィルター"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AIモデル"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "画像のアップロード中にエラーが発生しました。"
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "構成"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "フィールドを表示するには、このウィジェットを設定
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "コア"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "コアスキーマ"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "表示したいサブアドレスフィールドを選択してください"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "デフォルトの国"
msgid "Default Country Code"
msgstr "デフォルトの国コード"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "ロールの更新に失敗しました。"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "失敗率"
msgid "False"
msgstr "偽"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "ゲージチャート"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "一般"
@@ -7007,11 +7003,6 @@ msgstr "AIのための指示"
msgid "Integrations - Settings"
msgstr "統合 - 設定"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "ワークスペースデータとのインタラクション"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "メタデータ"
msgid "Metadata file generation failed"
msgstr "メタデータファイルの生成に失敗しました"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "メタデータスキーマ"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "任務完了!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "もっと"
@@ -8522,6 +8514,11 @@ msgstr "新規フィールド"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "利用可能なメトリックスデータがありません"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "モデルが利用可能ではありません。ワークスペース設定でAIモデルを設定してください。"
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "その他"
@@ -10256,11 +10252,6 @@ msgstr "キューのパフォーマンス"
msgid "Queue: {queueName}"
msgstr "キュー: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "データベースのセットアップ..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "スカイ"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "객체 {morphRelationCount}개"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, other {{num}번째}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\"을 옵션에 추가하기"
msgid "Add a {objectLabelSingular}"
msgstr "{objectLabelSingular} 추가"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "노드 추가"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "쿼리 성능을 개선하고 유니시티 제약 조건을 강제하는
msgid "Advanced filter"
msgstr "고급 필터"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI 모델"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "사진을 업로드하는 중 오류가 발생했습니다."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "구성"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "필드를 표시하도록 이 위젯을 구성하세요"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "코어"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "코어 스키마"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "표시할 하위 주소 필드를 선택하세요"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "기본 국가"
msgid "Default Country Code"
msgstr "기본 국가 코드"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "역할 업데이트 실패"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "실패율"
msgid "False"
msgstr "거짓"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "게이지 차트"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "일반"
@@ -7007,11 +7003,6 @@ msgstr "AI 사용 지침"
msgid "Integrations - Settings"
msgstr "통합 - 설정"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "작업 공간 데이터와 상호 작용"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "메타데이터"
msgid "Metadata file generation failed"
msgstr "메타데이터 파일 생성 실패"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "메타데이터 스키마"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "임무 완료!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "더보기"
@@ -8522,6 +8514,11 @@ msgstr "새 필드"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "사용 가능한 메트릭스 데이터 없음"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "사용 가능한 모델이 없습니다. 작업 공간 설정에서 AI 모델을 구성해주세요."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "기타"
@@ -10256,11 +10252,6 @@ msgstr "대기열 성능"
msgid "Queue: {queueName}"
msgstr "큐: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "데이터베이스 설정 중..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "하늘색"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objecten"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}e} other {{num}e}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Voeg \"{trimmedName}\" toe aan opties"
msgid "Add a {objectLabelSingular}"
msgstr "Voeg een {objectLabelSingular} toe"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Voeg een knooppunt toe"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Geavanceerde functie om de prestaties van query's te verbeteren en unici
msgid "Advanced filter"
msgstr "Geavanceerd filter"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI Model"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Er is een fout opgetreden bij het uploaden van de afbeelding."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Configuratie"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Configureer deze widget om velden weer te geven"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Kern"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Kernschema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Beslis welke sub-adresvelden je wilt weergeven"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Standaardland"
msgid "Default Country Code"
msgstr "Standaard landcode"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Fout bij het bijwerken van de rol"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Foutpercentage"
msgid "False"
msgstr "Vals"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr ""
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Algemeen"
@@ -7007,11 +7003,6 @@ msgstr "Instructies voor AI"
msgid "Integrations - Settings"
msgstr "Integraties - Instellingen"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Interageer met uw werkruimtegegevens"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadata"
msgid "Metadata file generation failed"
msgstr "Metadatabestandsgeneratie mislukt"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metadataschema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Missie volbracht!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Meer"
@@ -8522,6 +8514,11 @@ msgstr "Nieuw veld"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Geen metrische gegevens beschikbaar"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Geen modellen beschikbaar. Configureer AI-modellen in je werkruimte-instellingen."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Overige"
@@ -10256,11 +10252,6 @@ msgstr "Wachtrijprestatie"
msgid "Queue: {queueName}"
msgstr "Wachtrij: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Uw database opzetten..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Lucht"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objekter"
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}.} other {{num}.}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Legg til \"{trimmedName}\" i valg"
msgid "Add a {objectLabelSingular}"
msgstr "Legg til {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Legg til node"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Avansert funksjon for å forbedre ytelsen til spørringer og for å hån
msgid "Advanced filter"
msgstr "Avansert filter"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "AI-modell"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Det oppstod en feil under opplasting av bildet."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfigurasjon"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Konfigurer denne widgeten for å vise felt"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Kjerne"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Kjernesjema"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Bestem hvilke underadressefelt du vil vise"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Standardland"
msgid "Default Country Code"
msgstr "Standardlandkode"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Kunne ikke oppdatere rolle"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Feilrate"
msgid "False"
msgstr "Usann"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr "Målediagram"
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Generelt"
@@ -7007,11 +7003,6 @@ msgstr "Instruksjoner for AI"
msgid "Integrations - Settings"
msgstr "Integrasjoner - Innstillinger"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Samhandle med dataene i arbeidsområdet ditt"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadata"
msgid "Metadata file generation failed"
msgstr "Generering av metadatafil mislyktes"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Metadataskjema"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Oppdrag utført!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Mer"
@@ -8522,6 +8514,11 @@ msgstr "Nytt felt"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Ingen metrikkdata tilgjengelig"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Ingen modeller tilgjengelig. Vennligst konfigurer AI-modeller i arbeidsområdeinnstillingene dine."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Annen"
@@ -10256,11 +10252,6 @@ msgstr "Køyteytelse"
msgid "Queue: {queueName}"
msgstr "Kø: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Konfigurere databasen din..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Himmel"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount, plural, one {# obiekt} few {# obiekty} many {# obie
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr "{num, selectordinal, one {{num}sz} two {{num}gi} few {{num}ci} other {{num}ty}}"
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -770,6 +775,11 @@ msgstr "Dodaj \"{trimmedName}\" do opcji"
msgid "Add a {objectLabelSingular}"
msgstr "Dodaj {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -786,11 +796,6 @@ msgstr "Dodaj węzeł"
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1145,11 +1150,6 @@ msgstr "Zaawansowana funkcja poprawiająca wydajność zapytań i wymuszająca u
msgid "Advanced filter"
msgstr "Zaawansowany filtr"
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1263,11 +1263,6 @@ msgstr "AI"
msgid "AI Model"
msgstr "Model AI"
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1512,6 +1507,9 @@ msgstr "Wystąpił błąd podczas przesyłania zdjęcia."
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2883,11 +2881,6 @@ msgstr "Konfiguracja"
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2953,6 +2946,11 @@ msgstr "Skonfiguruj ten widżet, aby wyświetlał pola"
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3243,11 +3241,6 @@ msgstr "Trzon"
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr "Główny schemat"
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3946,6 +3939,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr "Zdecyduj, które pola podrzędnego adresu chcesz wyświetlić"
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3961,6 +3955,21 @@ msgstr "Domyślny kraj"
msgid "Default Country Code"
msgstr "Domyślny kod kraju"
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5809,9 +5818,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5834,11 +5843,6 @@ msgstr ""
msgid "Failed to update role"
msgstr "Nie udało się zaktualizować roli"
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5886,16 +5890,6 @@ msgstr "Wskaźnik niepowodzeń"
msgid "False"
msgstr "Fałsz"
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6283,7 +6277,9 @@ msgstr ""
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr "Ogólne"
@@ -7007,11 +7003,6 @@ msgstr "Instrukcje dla AI"
msgid "Integrations - Settings"
msgstr "Integracje - Ustawienia"
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr "Wejdź w interakcję z danymi w swoim miejscu pracy"
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8125,11 +8116,6 @@ msgstr "Metadane"
msgid "Metadata file generation failed"
msgstr "Generowanie pliku metadanych nie powiodło się"
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr "Schemat metadanych"
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8188,6 +8174,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr "Misja zakończona!"
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8233,6 +8224,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr "Więcej"
@@ -8522,6 +8514,11 @@ msgstr "Nowe pole"
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8930,7 +8927,6 @@ msgstr "Brak dostępnych danych o metrykach"
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr "Brak dostępnych modeli. Skonfiguruj modele AI w ustawieniach przestrzeni roboczej."
@@ -9568,7 +9564,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr "Inne"
@@ -10256,11 +10252,6 @@ msgstr "Wydajność kolejki"
msgid "Queue: {queueName}"
msgstr "Kolejka: {queueName}"
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11653,7 +11644,6 @@ msgstr "Ustawianie twojej bazy danych..."
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11871,16 +11861,6 @@ msgstr "Błękitny"
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"
+52 -72
View File
@@ -306,6 +306,11 @@ msgstr ""
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
msgstr ""
#. js-lingui-id: fTSz8d
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
msgid "{numberOfSelectedItems} workspace members"
msgstr ""
#. js-lingui-id: 7kYa/u
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
msgid "{objectLabelPlural} ({totalCount})"
@@ -765,6 +770,11 @@ msgstr ""
msgid "Add a {objectLabelSingular}"
msgstr ""
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -781,11 +791,6 @@ msgstr ""
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -1140,11 +1145,6 @@ msgstr ""
msgid "Advanced filter"
msgstr ""
#. js-lingui-id: luNzWN
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Advanced model for complex planning"
msgstr ""
#. js-lingui-id: miuPUc
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartDataSourceDropdownContent.tsx
@@ -1258,11 +1258,6 @@ msgstr ""
msgid "AI Model"
msgstr ""
#. js-lingui-id: tGx4Zn
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "AI Models"
msgstr ""
#. js-lingui-id: Sfwld8
#: src/modules/ai/components/AIChatApiKeyNotConfiguredMessage.tsx
msgid "AI not configured. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or XAI_API_KEY in your environment."
@@ -1507,6 +1502,9 @@ msgstr ""
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
@@ -2878,11 +2876,6 @@ msgstr ""
msgid "Configure"
msgstr ""
#. js-lingui-id: 9px+al
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Configure AI models for routing and planning"
msgstr ""
#. js-lingui-id: +zUMwJ
#: src/pages/settings/security/SettingsSecurity.tsx
msgid "Configure an SSO connection"
@@ -2948,6 +2941,11 @@ msgstr ""
msgid "Configure when this function should be executed"
msgstr ""
#. js-lingui-id: hzDiM0
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Configure your default AI model"
msgstr ""
#. js-lingui-id: Bh4GBD
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
msgid "Configure your emails and calendar settings."
@@ -3238,11 +3236,6 @@ msgstr ""
msgid "Core Objects"
msgstr ""
#. js-lingui-id: cfa2VJ
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Core Schema"
msgstr ""
#. js-lingui-id: I99Miw
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
@@ -3941,6 +3934,7 @@ msgid "Decide which Sub-address fields you want to display"
msgstr ""
#. js-lingui-id: ovBPCi
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
#: src/modules/settings/data-model/fields/forms/address/components/MultiSelectAddressFields.tsx
msgid "Default"
@@ -3956,6 +3950,21 @@ msgstr ""
msgid "Default Country Code"
msgstr ""
#. js-lingui-id: J6v1s/
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default Model"
msgstr ""
#. js-lingui-id: n4U+0E
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model for new chats and agents"
msgstr ""
#. js-lingui-id: K/FKkg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Default model updated successfully"
msgstr ""
#. js-lingui-id: 4HDpKr
#: src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartColorPaletteOption.tsx
msgid "Default palette"
@@ -5804,9 +5813,9 @@ msgstr ""
msgid "Failed to save workspace instructions"
msgstr ""
#. js-lingui-id: YMSYb+
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update fast model"
#. js-lingui-id: 2D6TRg
#: src/pages/settings/ai/components/SettingsAIModelsTab.tsx
msgid "Failed to update default model"
msgstr ""
#. js-lingui-id: P1NmNz
@@ -5829,11 +5838,6 @@ msgstr ""
msgid "Failed to update role"
msgstr ""
#. js-lingui-id: h/0aT5
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Failed to update smart model"
msgstr ""
#. js-lingui-id: Dzh4a2
#: src/modules/settings/admin-panel/config-variables/hooks/useConfigVariableActions.ts
msgid "Failed to update variable"
@@ -5881,16 +5885,6 @@ msgstr ""
msgid "False"
msgstr ""
#. js-lingui-id: XVIZ7v
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast Model"
msgstr ""
#. js-lingui-id: UJHTjm
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Fast model updated successfully"
msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
@@ -6278,7 +6272,9 @@ msgstr ""
#: src/pages/settings/SettingsWorkspace.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
msgid "General"
msgstr ""
@@ -7002,11 +6998,6 @@ msgstr ""
msgid "Integrations - Settings"
msgstr ""
#. js-lingui-id: ntgzzG
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Interact with your workspace data"
msgstr ""
#. js-lingui-id: jyjroS
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Interval switching has been cancelled."
@@ -8120,11 +8111,6 @@ msgstr ""
msgid "Metadata file generation failed"
msgstr ""
#. js-lingui-id: 0BF9eC
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Metadata Schema"
msgstr ""
#. js-lingui-id: onCJJ6
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Metered tier switching has been cancelled."
@@ -8183,6 +8169,11 @@ msgstr ""
msgid "Mission accomplished!"
msgstr ""
#. js-lingui-id: //nm2/
#: src/pages/settings/ai/SettingsAI.tsx
msgid "Models"
msgstr ""
#. js-lingui-id: hty0d5
#: src/pages/settings/profile/appearance/components/DateTimeSettingsCalendarStartDaySelect.tsx
msgid "Monday"
@@ -8228,6 +8219,7 @@ msgid "months"
msgstr ""
#. js-lingui-id: 2FYpfJ
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/ui/layout/tab-list/components/TabMoreButton.tsx
msgid "More"
msgstr ""
@@ -8517,6 +8509,11 @@ msgstr ""
msgid "New folder"
msgstr ""
#. js-lingui-id: 93KA8w
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "New Group"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -8925,7 +8922,6 @@ msgstr ""
#. js-lingui-id: UWZZdQ
#: src/pages/settings/ai/forms/components/SettingsAIAgentForm.tsx
#: src/pages/settings/ai/components/SettingsAgentSettingsTab.tsx
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "No models available. Please configure AI models in your workspace settings."
msgstr ""
@@ -9563,7 +9559,7 @@ msgstr ""
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
msgid "Other"
msgstr ""
@@ -10251,11 +10247,6 @@ msgstr ""
msgid "Queue: {queueName}"
msgstr ""
#. js-lingui-id: GaAG2G
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Quick model for routing decisions"
msgstr ""
#. js-lingui-id: opSifa
#: src/modules/ai/utils/getToolDisplayMessage.ts
msgid "Ran {formattedName}"
@@ -11648,7 +11639,6 @@ msgstr ""
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
#: src/pages/settings/ai/SettingsAI.tsx
#: src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx
#: src/modules/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection.tsx
#: src/modules/settings/roles/role/components/SettingsRole.tsx
@@ -11866,16 +11856,6 @@ msgstr ""
msgid "Small section heading"
msgstr ""
#. js-lingui-id: 5J8ZFl
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart Model"
msgstr ""
#. js-lingui-id: qgvZ/2
#: src/pages/settings/ai/components/SettingsAIRouterSettings.tsx
msgid "Smart model updated successfully"
msgstr ""
#. js-lingui-id: w+rJId
#: src/modules/settings/accounts/components/SettingsAccountsConnectionForm.tsx
msgid "SMTP Configuration"

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