Compare commits

...
Author SHA1 Message Date
Thomas Trompette 970d2a1943 Build base objects + empty endpoint 2026-02-24 17:05:23 +01:00
Thomas Trompette ec4fd104e4 Add call recording app 2026-02-24 16:18:23 +01:00
Félix MalfaitandGitHub 458a61ed30 Change runner from depot-ubuntu-24.04 to ubuntu-latest (#18182) 2026-02-24 10:17:38 +01:00
9a3852bf04 feat: add two-layer AI model availability filtering (#18170)
## Summary

- **Admin-level filtering**: New AI tab in admin panel with server-wide
model availability controls (whitelist/blacklist via
`AI_AUTO_ENABLE_NEW_MODELS`, `AI_DISABLED_MODEL_IDS`,
`AI_ENABLED_MODEL_IDS` config variables). Dedicated
`setAdminAiModelEnabled` mutation replaces frontend config-variable
manipulation. Filter dropdown to show/hide unconfigured and deprecated
models.
- **Workspace-level filtering**: Per-workspace controls with "Use best
models only" mode (curated list backed by `isRecommended` flag), or
custom whitelist/blacklist. Separate Smart/Fast model selectors with
"Best (...)" virtual options.
- **Security enforcement**: Both layers enforced at every backend
execution point — workspace update, agent create/update, chat execution.
Model ID validated against known models before config mutation. All
admin endpoints protected by `AdminPanelGuard`.

## Changes

### Backend (`twenty-server`)
- New config variables for admin-level model filtering
- `AiModelRegistryService`: `getAllModelsWithStatus()`,
`setModelAdminEnabled()` with model ID validation,
`isModelAdminAllowed()`
- `AdminPanelResolver`: `getAdminAiModels` query,
`setAdminAiModelEnabled` mutation
- `WorkspaceEntity`: new fields (`autoEnableNewAiModels`,
`disabledAiModelIds`, `enabledAiModelIds`, `useRecommendedModels`)
- `WorkspaceService`: model validation on `smartModel`/`fastModel`
updates
- `AgentResolver`: model availability checks on create/update
- `isModelAllowedByWorkspace` centralized utility
- `isRecommended` flag on model definitions
- Two TypeORM migrations

### Frontend (`twenty-front`)
- New `SettingsAdminAI` component with search, filter dropdown
(unconfigured/deprecated), and model toggle cards
- AI tab added to admin panel navigation
- `useWorkspaceAiModelAvailability` hook for workspace-level filtering
- `SettingsAIModelsTab` redesigned: merged sections, "Use best models
only" toggle, conditional available models list
- `getModelIcon`/`getModelProviderLabel` shared utilities with GraphQL
enum casing normalization
- Updated generated GraphQL types and mock data

## Test plan
- [ ] Toggle models on/off in admin panel AI tab and verify they
appear/disappear in workspace settings
- [ ] Enable "Use best models only" in workspace settings and verify
only recommended models are selectable
- [ ] Disable recommended mode and verify whitelist/blacklist toggles
work correctly
- [ ] Verify deprecated models hidden by default, shown greyed out when
filter enabled
- [ ] Verify unconfigured models hidden by default, shown disabled when
filter enabled
- [ ] Try setting a disabled model as Smart/Fast model — should be
rejected
- [ ] Try creating an agent with a disabled model — should be rejected
- [ ] Verify admin panel AI tab requires admin access


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

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 10:14:24 +01:00
c369baf63a i18n - translations (#18176)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-02-24 10:07:16 +01:00
Paul RastoinandGitHub 9e8024a07a Restore depot (#18179) 2026-02-24 09:59:54 +01:00
a827681306andGitHub df196b4a03 fix: use default Apollo client for AI chat file upload (#18158)
## Summary

Fix file uploads in AI chat (Agent Chat) failing with "Failed to upload
file" for all file types.

## Root Cause

`useAIChatFileUpload.ts` was using `useApolloCoreClient()` which points
to the `/graphql` (workspace) endpoint. However, `FileUploadResolver` is
decorated with `@MetadataResolver()`, meaning `uploadFile` is only
registered on the `/metadata` endpoint.

## Fix

Replace `useApolloCoreClient()` with `useApolloClient()` from
`@apollo/client`, which is the default Apollo client pointing to the
`/metadata` endpoint. This is consistent with how
`useUploadAttachmentFile.tsx` handles file uploads.

## Changes

- Replaced `useApolloCoreClient` import with `useApolloClient` from
`@apollo/client`
- Updated the client variable to use the default Apollo client
- Removed unused `useApolloCoreClient` import

Fixes #18153
2026-02-24 09:54:29 +01:00
Paul RastoinandGitHub 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 BochetandGitHub 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 TrompetteandGitHub ccddd105d8 Add generate key command (#18171)
Will be useful to auto log users on app creation
2026-02-23 19:56:44 +01:00
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
WeikoandGitHub 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
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>DevessierBaptiste Devessier
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
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
EtienneGitHubgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
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 BochetandGitHub 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
b51eb6471f Jotai 12 (#18160)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 12:01:37 +01:00
Raphaël BosiandGitHub 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 BochetandGitHub 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
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
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
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
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
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
martmullandGitHub 088be4c47b Expose standard universal identifiers (#18152)
as title
2026-02-21 23:53:55 +00:00
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
877 changed files with 20343 additions and 7457 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
+2 -2
View File
@@ -25,7 +25,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 10
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
steps:
- name: Fetch custom Github Actions and base branch history
uses: actions/checkout@v4
@@ -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
+12 -11
View File
@@ -14,8 +14,8 @@ concurrency:
env:
# restore-cache action adds 'v4-' prefix and '-<branch>-<sha>' suffix to the key
STORYBOOK_BUILD_CACHE_KEY_FOR_RESTORE_ACTION: storybook-build-ubuntu-latest-8-cores-runner
STORYBOOK_BUILD_CACHE_KEY_FOR_SAVE_ACTION: v4-storybook-build-ubuntu-latest-8-cores-runner-${{ github.ref_name }}-${{ github.sha }}
STORYBOOK_BUILD_CACHE_KEY_FOR_RESTORE_ACTION: storybook-build-depot-ubuntu-24.04-8-runner
STORYBOOK_BUILD_CACHE_KEY_FOR_SAVE_ACTION: v4-storybook-build-depot-ubuntu-24.04-8-runner-${{ github.ref_name }}-${{ github.sha }}
jobs:
changed-files-check:
@@ -42,7 +42,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
env:
REACT_APP_SERVER_BASE_URL: http://localhost:3000
steps:
@@ -68,7 +68,7 @@ jobs:
key: ${{ env.STORYBOOK_BUILD_CACHE_KEY_FOR_SAVE_ACTION }}
front-sb-test:
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
needs: front-sb-build
strategy:
fail-fast: false
@@ -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
@@ -143,7 +143,7 @@ jobs:
timeout-minutes: 30
if: false
needs: front-sb-build
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
env:
REACT_APP_SERVER_BASE_URL: http://127.0.0.1:3000
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
@@ -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:
@@ -210,7 +211,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
env:
NODE_OPTIONS: "--max-old-space-size=10240"
steps:
@@ -235,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() &&
@@ -345,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,
@@ -362,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
+3 -3
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]
@@ -50,7 +50,7 @@ jobs:
tasks: ${{ matrix.task }}
sdk-e2e-test:
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
needs: [changed-files-check, sdk-test]
if: needs.changed-files-check.outputs.any_changed == 'true'
services:
@@ -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
+4 -4
View File
@@ -31,7 +31,7 @@ jobs:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
services:
postgres:
image: twentycrm/twenty-postgres-spilo
@@ -143,7 +143,7 @@ jobs:
key: ${{ steps.restore-server-setup-cache.outputs.cache-primary-key }}
server-test:
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
needs: server-setup
steps:
- name: Fetch custom Github Actions and base branch history
@@ -164,7 +164,7 @@ jobs:
server-integration-test:
timeout-minutes: 30
runs-on: ubuntu-latest-8-cores
runs-on: depot-ubuntu-24.04-8
needs: server-setup
strategy:
fail-fast: false
@@ -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
+20 -20
View File
@@ -17,7 +17,7 @@ jobs:
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).
@@ -0,0 +1,38 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn
# codegen
generated
# testing
/coverage
# dev
/dist/
.twenty/*
!.twenty/output/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# typescript
*.tsbuildinfo
@@ -0,0 +1 @@
24.5.0
@@ -0,0 +1 @@
nodeLinker: node-modules
@@ -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.
@@ -0,0 +1,51 @@
This is a [Twenty](https://twenty.com) application project bootstrapped with [`create-twenty-app`](https://www.npmjs.com/package/create-twenty-app).
## Getting Started
First, authenticate to your workspace:
```bash
yarn twenty auth:login
```
Then, start development mode to sync your app and watch for changes:
```bash
yarn twenty app:dev
```
Open your Twenty instance and go to `/settings/applications` section to see the result.
## Available Commands
Run `yarn twenty help` to list all available commands. Common commands:
```bash
# Authentication
yarn twenty auth:login # Authenticate with Twenty
yarn twenty auth:logout # Remove credentials
yarn twenty auth:status # Check auth status
yarn twenty auth:switch # Switch default workspace
yarn twenty auth:list # List all configured workspaces
# Application
yarn twenty app:dev # Start dev mode (watch, build, sync, and auto-generate typed client)
yarn twenty entity:add # Add a new entity (object, field, function, front-component, role, view, navigation-menu-item)
yarn twenty function:logs # Stream function logs
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:
- [twenty-sdk](https://www.npmjs.com/package/twenty-sdk) - learn about `twenty-sdk` tool.
- [Twenty doc](https://docs.twenty.com/) - Twenty's documentation.
- Join our [Discord](https://discord.gg/cx5n4Jzs57)
You can check out [the Twenty GitHub repository](https://github.com/twentyhq/twenty) - your feedback and contributions are welcome!
@@ -0,0 +1,29 @@
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
export default [
// Base JS recommended rules
js.configs.recommended,
// TypeScript recommended rules
...tseslint.configs.recommended,
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parserOptions: {
project: true,
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
// Common TypeScript-friendly tweaks
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_' },
],
'@typescript-eslint/no-explicit-any': 'off',
'no-unused-vars': 'off', // handled by TS rule
},
},
];
@@ -0,0 +1,27 @@
{
"name": "call-recording",
"version": "0.1.0",
"license": "MIT",
"engines": {
"node": "^24.5.0",
"npm": "please-use-yarn",
"yarn": ">=4.0.2"
},
"packageManager": "yarn@4.9.2",
"scripts": {
"twenty": "twenty",
"lint": "eslint",
"lint:fix": "eslint --fix"
},
"dependencies": {
"twenty-sdk": "latest"
},
"devDependencies": {
"@types/node": "^24.7.2",
"@types/react": "^18.2.0",
"eslint": "^9.32.0",
"react": "^18.2.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.50.0"
}
}
@@ -0,0 +1,9 @@
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
import { defineApplication } from 'twenty-sdk';
export default defineApplication({
universalIdentifier: '4daa5147-7e70-4e43-b091-c27e1e8a32e3',
displayName: 'Call recording',
description: 'Allows to record calls',
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
});
@@ -0,0 +1,17 @@
import { defineFrontComponent } from 'twenty-sdk';
export const HelloWorld = () => {
return (
<div style={{ padding: '20px', fontFamily: 'sans-serif' }}>
<h1>Hello, World!</h1>
<p>This is your first front component.</p>
</div>
);
};
export default defineFrontComponent({
universalIdentifier: '5c2fd1e8-dd18-4354-9d0e-424beedafde9',
name: 'hello-world-front-component',
description: 'A sample front component',
component: HelloWorld,
});
@@ -0,0 +1,18 @@
import { defineLogicFunction } from 'twenty-sdk';
const handler = async (): Promise<void> => {
// TODO: implement end recording logic
};
export default defineLogicFunction({
universalIdentifier: '471353f6-5933-417b-8062-9ad0fc44cd7f',
name: 'end-recording',
description: 'Endpoint to end a call recording',
timeoutSeconds: 30,
handler,
httpRouteTriggerSettings: {
path: '/end-recording',
httpMethod: 'POST',
isAuthRequired: false,
},
});
@@ -0,0 +1,10 @@
import { CALL_RECORDING_VIEW_UNIVERSAL_IDENTIFIER } from 'src/views/call-recording-view';
import { defineNavigationMenuItem } from 'twenty-sdk';
export default defineNavigationMenuItem({
universalIdentifier: '5248a62d-7d2e-43a7-ba45-6e8f61876a71',
name: 'Call recordings',
icon: 'IconPhone',
position: 0,
viewUniversalIdentifier: CALL_RECORDING_VIEW_UNIVERSAL_IDENTIFIER,
});
@@ -0,0 +1,50 @@
import { defineObject, FieldType } from 'twenty-sdk';
export const CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER =
'af251b70-85c6-49bd-bf4a-2631f34c8f1a';
export const NAME_FIELD_UNIVERSAL_IDENTIFIER =
'272dca6f-b3aa-49f5-b7ed-39780052f1fe';
export const CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER =
'c581a044-f646-464b-aa4b-56b8ea9bf05a';
export const ENDED_AT_FIELD_UNIVERSAL_IDENTIFIER =
'56185e64-6591-41c1-a3e0-af8de20a5471';
export default defineObject({
universalIdentifier: CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER,
nameSingular: 'callRecording',
namePlural: 'callRecordings',
labelSingular: 'Call recording',
labelPlural: 'Call recordings',
description: 'A recorded call',
icon: 'IconPhone',
labelIdentifierFieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER,
type: FieldType.TEXT,
name: 'name',
label: 'Name',
description: 'Name of the call recording',
icon: 'IconAbc',
},
{
universalIdentifier: CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER,
type: FieldType.DATE_TIME,
name: 'createdAt',
label: 'Created at',
description: 'When the call recording was created',
icon: 'IconCalendar',
},
{
universalIdentifier: ENDED_AT_FIELD_UNIVERSAL_IDENTIFIER,
type: FieldType.DATE_TIME,
name: 'endedAt',
label: 'Ended at',
description: 'When the call ended',
icon: 'IconCalendar',
},
],
});
@@ -0,0 +1,14 @@
import { defineRole } from 'twenty-sdk';
export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =
'f9cfb3ce-cb1e-4f55-af85-be45f6059054';
export default defineRole({
universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
label: 'Call recording default function role',
description: 'Call recording default function role',
canReadAllObjectRecords: true,
canUpdateAllObjectRecords: true,
canSoftDeleteAllObjectRecords: true,
canDestroyAllObjectRecords: false,
});
@@ -0,0 +1,36 @@
import { CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER, CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER, ENDED_AT_FIELD_UNIVERSAL_IDENTIFIER, NAME_FIELD_UNIVERSAL_IDENTIFIER } from 'src/objects/call-recording';
import { defineView } from 'twenty-sdk';
export const CALL_RECORDING_VIEW_UNIVERSAL_IDENTIFIER =
'9c9c09bb-de9f-4248-89f2-e7d91f29c3ed';
export default defineView({
universalIdentifier: CALL_RECORDING_VIEW_UNIVERSAL_IDENTIFIER,
name: 'Call recordings',
objectUniversalIdentifier: CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER,
icon: 'IconPhone',
position: 0,
fields: [
{
universalIdentifier: 'b5609679-8451-45ec-ad52-5a4e3720af45',
fieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER,
isVisible: true,
size: 12,
position: 0,
},
{
universalIdentifier: 'd791bea6-c49e-4d6f-8864-737ed00276f8',
fieldMetadataUniversalIdentifier: CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER,
isVisible: true,
size: 12,
position: 1,
},
{
universalIdentifier: 'db96d9cf-cbd8-407b-b748-7b12913f018b',
fieldMetadataUniversalIdentifier: ENDED_AT_FIELD_UNIVERSAL_IDENTIFIER,
isVisible: true,
size: 12,
position: 2,
},
],
});
@@ -0,0 +1,31 @@
{
"compileOnSave": false,
"compilerOptions": {
"sourceMap": true,
"declaration": true,
"outDir": "./dist",
"rootDir": ".",
"jsx": "react-jsx",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"allowUnreachableCode": false,
"strict": true,
"alwaysStrict": true,
"noImplicitAny": true,
"strictBindCallApply": false,
"target": "es2018",
"module": "esnext",
"lib": ["es2020", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"resolveJsonModule": true,
"paths": {
"src/*": ["./src/*"],
"~/*": ["./*"]
}
},
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
}
File diff suppressed because it is too large Load Diff
@@ -807,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):
@@ -807,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):
@@ -807,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):
@@ -807,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):
@@ -46,13 +46,13 @@ 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"
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
# 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
# Minimal: only core files (application-config.ts and default-role.ts)
# Mínimo: apenas arquivos principais (application-config.ts e default-role.ts)
npx create-twenty-app@latest my-app --minimal
# Interactive: select which examples to include
# Interativo: selecione quais exemplos incluir
npx create-twenty-app@latest my-app --interactive
```
@@ -103,26 +103,26 @@ my-twenty-app/
eslint.config.mjs
tsconfig.json
README.md
public/ # Public assets folder (images, fonts, etc.)
public/ # Pasta de recursos públicos (imagens, fontes, etc.)
src/
├── application-config.ts # Required - main application configuration
├── application-config.ts # Obrigatório - configuração principal da aplicação
├── roles/
│ └── default-role.ts # Default role for logic functions
│ └── default-role.ts # Papel padrão para funções de lógica
├── objects/
│ └── example-object.ts # Example custom object definition
│ └── example-object.ts # Exemplo de definição de objeto personalizado
├── fields/
│ └── example-field.ts # Example standalone field definition
│ └── example-field.ts # Exemplo de definição de campo independente
├── logic-functions/
│ ├── hello-world.ts # Example logic function
│ └── post-install.ts # Post-install logic function
│ ├── hello-world.ts # Exemplo de função de lógica
│ └── post-install.ts # Função de lógica de pós-instalação
├── front-components/
│ └── hello-world.tsx # Example front component
│ └── hello-world.tsx # Exemplo de componente de front-end
├── views/
│ └── example-view.ts # Example saved view definition
│ └── example-view.ts # Exemplo de definição de visualização salva
├── navigation-menu-items/
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
│ └── example-navigation-menu-item.ts # Exemplo de link de navegação da barra lateral
└── skills/
└── example-skill.ts # Example AI agent skill definition
└── 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.
@@ -151,7 +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()` | AI agent skill definitions |
| `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.
@@ -173,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` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
* `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
@@ -226,7 +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 AI agent skills |
| `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.
@@ -748,7 +748,7 @@ Você pode criar novos componentes de front-end de duas formas:
### Habilidades
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
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
@@ -770,16 +770,16 @@ export default defineSkill({
Pontos-chave:
* `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.
* `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.
You can create new skills in two ways:
Você pode criar novas habilidades de duas formas:
* **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.
* **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
@@ -807,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):
@@ -807,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):
@@ -46,13 +46,13 @@ yarn twenty app:dev
Генератор каркаса поддерживает три режима для управления тем, какие примерные файлы включаются:
```bash filename="Terminal"
# 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)
# Минимальный: только основные файлы (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
```
@@ -103,26 +103,26 @@ my-twenty-app/
eslint.config.mjs
tsconfig.json
README.md
public/ # Public assets folder (images, fonts, etc.)
public/ # Папка публичных ресурсов (изображения, шрифты и т. д.)
src/
├── application-config.ts # Required - main application configuration
├── application-config.ts # Обязательный — основная конфигурация приложения
├── roles/
│ └── default-role.ts # Default role for logic functions
│ └── default-role.ts # Роль по умолчанию для логических функций
├── objects/
│ └── example-object.ts # Example custom object definition
│ └── example-object.ts # Пример определения пользовательского объекта
├── fields/
│ └── example-field.ts # Example standalone field definition
│ └── example-field.ts # Пример определения отдельного поля
├── logic-functions/
│ ├── hello-world.ts # Example logic function
│ └── post-install.ts # Post-install logic function
│ ├── hello-world.ts # Пример логической функции
│ └── post-install.ts # Постустановочная логическая функция
├── front-components/
│ └── hello-world.tsx # Example front component
│ └── hello-world.tsx # Пример фронтенд-компонента
├── views/
│ └── example-view.ts # Example saved view definition
│ └── example-view.ts # Пример определения сохранённого представления
├── navigation-menu-items/
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
│ └── example-navigation-menu-item.ts # Пример ссылки боковой панели навигации
└── skills/
└── example-skill.ts # Example AI agent skill definition
└── example-skill.ts # Пример определения навыка агента ИИ
```
С `--minimal` создаются только основные файлы (`application-config.ts`, `roles/default-role.ts` и `logic-functions/post-install.ts`). С `--interactive` вы выбираете, какие примерные файлы включить.
@@ -151,7 +151,7 @@ SDK обнаруживает сущности, разбирая ваши фай
| `defineField()` | Расширения полей для существующих объектов |
| `defineView()` | Определения сохранённых представлений |
| `defineNavigationMenuItem()` | Определения пунктов меню навигации |
| `defineSkill()` | AI agent skill definitions |
| `defineSkill()` | Определения навыков агента ИИ |
<Note>
**Имена файлов заданы гибко.** Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона `export default define<Entity>({...})`. Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, `logic-functions/`, `roles/`) — это лишь соглашение для организации кода, а не требование.
@@ -173,7 +173,7 @@ export default defineObject({
Позднее команды добавят больше файлов и папок:
* `yarn twenty app:dev` автоматически сгенерирует типизированный клиент API в `node_modules/twenty-sdk/generated` (типизированный клиент Twenty + типы рабочего пространства).
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
* `yarn twenty entity:add` добавит файлы определений сущностей в `src/` для ваших пользовательских объектов, функций, фронтенд-компонентов, ролей, навыков и многого другого.
## Аутентификация
@@ -226,7 +226,7 @@ SDK предоставляет вспомогательные функции д
| `defineField()` | Расширение существующих объектов дополнительными полями |
| `defineView()` | Определяйте сохранённые представления для объектов |
| `defineNavigationMenuItem()` | Определяйте ссылки боковой панели навигации |
| `defineSkill()` | Define AI agent skills |
| `defineSkill()` | Определение навыков агента ИИ |
Эти функции проверяют вашу конфигурацию на этапе сборки и обеспечивают автодополнение в IDE и безопасность типов.
@@ -748,7 +748,7 @@ export default defineFrontComponent({
### Навыки
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
Навыки определяют многократно используемые инструкции и возможности, которые агенты ИИ могут использовать в вашем рабочем пространстве. Используйте `defineSkill()` для определения навыков со встроенной валидацией:
```typescript
// src/skills/example-skill.ts
@@ -770,16 +770,16 @@ export default defineSkill({
Основные моменты:
* `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.
* `name` — уникальная строка-идентификатор навыка (рекомендуется kebab-case).
* `label` — читаемое человеком отображаемое имя, показываемое в UI.
* `content` содержит инструкции навыка — это текст, который использует агент ИИ.
* `icon` (необязательно) задаёт значок, отображаемый в UI.
* `description` (необязательно) предоставляет дополнительный контекст о назначении навыка.
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 entity:add` и выберите опцию добавления нового навыка.
* **Вручную**: Создайте новый файл и используйте `defineSkill()`, следуя тому же шаблону.
### Сгенерированный типизированный клиент
@@ -807,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):
@@ -46,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, skill)
# 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
```
@@ -103,26 +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
│ └── example-view.ts # Örnek kaydedilmiş görünüm tanımı
├── navigation-menu-items/
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
│ └── example-navigation-menu-item.ts # Örnek kenar çubuğu gezinme bağlantısı
└── skills/
└── example-skill.ts # Example AI agent skill definition
└── 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.
@@ -151,7 +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()` | AI agent skill definitions |
| `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.
@@ -173,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` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
* `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
@@ -226,7 +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()` | Define AI agent skills |
| `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.
@@ -748,7 +748,7 @@ Yeni ön uç bileşenlerini iki şekilde oluşturabilirsiniz:
### Beceriler
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
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
@@ -770,16 +770,16 @@ export default defineSkill({
Önemli noktalar:
* `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.
* `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.
You can create new skills in two ways:
Yeni yetenekleri iki şekilde oluşturabilirsiniz:
* **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.
* **Ş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
@@ -807,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:
@@ -46,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, skill)
# 默认(完整):所有示例(对象、字段、逻辑函数、前端组件、视图、导航菜单项、技能)
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
```
@@ -807,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
@@ -63,7 +63,7 @@ const jestConfig = {
global: {
statements: 49.5,
lines: 48,
functions: 40,
functions: 39.5,
},
},
collectCoverageFrom: ['<rootDir>/src/**/*.ts'],
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)) &&
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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 "المزيد"
@@ -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 "لا توجد نماذج متاحة. يرجى تهيئة نماذج الذكاء الاصطناعي في إعدادات مكان العمل الخاص بك."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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 "Περισσότερα"
@@ -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 στις ρυθμίσεις χώρου εργασίας σας."
@@ -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"
+31 -51
View File
@@ -1145,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
@@ -1263,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."
@@ -2886,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"
@@ -2956,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."
@@ -3944,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"
@@ -3959,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"
@@ -5807,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
@@ -5832,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"
@@ -5884,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
@@ -8178,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"
@@ -8223,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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ää"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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 "עוד"
@@ -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 "אין מודלים זמינים. נא להגדיר מודלים לבינה מלאכותית בהגדרות מרחב העבודה שלכם."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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"
@@ -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."
@@ -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"
+30 -50
View File
@@ -1150,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
@@ -1268,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."
@@ -2891,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"
@@ -2961,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."
@@ -3949,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"
@@ -3964,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"
@@ -5812,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
@@ -5837,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"
@@ -5889,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
@@ -8183,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"
@@ -8228,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 "もっと"
@@ -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モデルを設定してください。"
@@ -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"

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