Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5595909fa | ||
|
|
d230389cdc | ||
|
|
41a7d6928b | ||
|
|
8d001eb33f | ||
|
|
a3f2fafce6 | ||
|
|
ff65b5001d | ||
|
|
dd3b6f2a2f | ||
|
|
e3be1f4971 | ||
|
|
59107b5b23 | ||
|
|
7c4302d02a | ||
|
|
fda2295beb | ||
|
|
df63dbff05 | ||
|
|
01b4754e62 | ||
|
|
e6399b180e | ||
|
|
8c2885f9ed | ||
|
|
a76047f28b | ||
|
|
281eaa3721 | ||
|
|
c804f27846 | ||
|
|
54e22423df | ||
|
|
a0dd7d9e22 | ||
|
|
97ec720d2c | ||
|
|
95a34d8517 | ||
|
|
4852ac401a | ||
|
|
1cd983a330 | ||
|
|
37ca09e8f9 | ||
|
|
91124a3cb8 | ||
|
|
41ad63a8ab | ||
|
|
9ddf9af4c4 | ||
|
|
3ffda0a29e | ||
|
|
0bb345b75f | ||
|
|
3c7c62c79f | ||
|
|
596ce32bd6 | ||
|
|
d2cfbf319b | ||
|
|
a3cf565ba3 | ||
|
|
fa8304d323 | ||
|
|
467ddaa27a | ||
|
|
fc4cf7fe09 | ||
|
|
9e94045fa5 | ||
|
|
ff22988caf | ||
|
|
74cc2b4c87 | ||
|
|
7aa2afc67e | ||
|
|
a025dc368b | ||
|
|
5bf7e8b101 | ||
|
|
276d4f6e84 | ||
|
|
4f439bbe43 | ||
|
|
4fbd8b207d | ||
|
|
f7d812fca6 | ||
|
|
c3a320c27b | ||
|
|
85752f8a61 | ||
|
|
8a0225e974 | ||
|
|
abc67efd40 | ||
|
|
636deffb93 | ||
|
|
e1828b6f41 | ||
|
|
4b76457217 | ||
|
|
d8bd717f1f | ||
|
|
b44fb1ad23 | ||
|
|
f32b03a3ec | ||
|
|
731d0256d1 | ||
|
|
abf3dc49bd | ||
|
|
91ab638b30 | ||
|
|
d15625984c | ||
|
|
c8e405cb4e | ||
|
|
046bc6f475 | ||
|
|
94a1502774 | ||
|
|
83db37d33f | ||
|
|
5bdbfe651e | ||
|
|
3fbb70c13f | ||
|
|
c6b6c824d4 | ||
|
|
b21bf66b38 | ||
|
|
22838ac6de | ||
|
|
bddd23fd9c | ||
|
|
842e679cc6 | ||
|
|
a3c2599b2f | ||
|
|
3dc80f91c6 | ||
|
|
406b535193 | ||
|
|
a713f8d87f | ||
|
|
520d8d0be1 | ||
|
|
fd6d5f895d | ||
|
|
42bc5d4485 | ||
|
|
11628d19a3 | ||
|
|
d23aa660c3 | ||
|
|
46ba5fd16c | ||
|
|
4649736d49 | ||
|
|
aba3aeb8c6 |
@@ -106,34 +106,35 @@ Replace `{VERSION}` with the actual version number (e.g., `1.9.0`)
|
||||
### 2. Create File Structure
|
||||
|
||||
**Create changelog file:**
|
||||
- Path: `packages/twenty-website/src/content/releases/{VERSION}.mdx`
|
||||
- Example: `packages/twenty-website/src/content/releases/1.9.0.mdx`
|
||||
- Path: `packages/twenty-website-new/src/content/releases/{VERSION}.mdx`
|
||||
- Example: `packages/twenty-website-new/src/content/releases/1.9.0.mdx`
|
||||
|
||||
**Create image folder:**
|
||||
- Path: `packages/twenty-website/public/images/releases/{MINOR_VERSION}/`
|
||||
- Example for version 1.9.0: `packages/twenty-website/public/images/releases/1.9/`
|
||||
- Example for version 2.0.0: `packages/twenty-website/public/images/releases/2.0/`
|
||||
- Path: `packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/`
|
||||
- Example for version 1.9.0: `packages/twenty-website-new/public/images/releases/1.9/`
|
||||
- Example for version 2.0.0: `packages/twenty-website-new/public/images/releases/2.0/`
|
||||
|
||||
```bash
|
||||
# Create the image folder
|
||||
mkdir -p packages/twenty-website/public/images/releases/{MINOR_VERSION}
|
||||
mkdir -p packages/twenty-website-new/public/images/releases/{MINOR_VERSION}
|
||||
```
|
||||
|
||||
### 3. Move Illustration Files
|
||||
|
||||
**Source:** `/Users/thomascolasdesfrancs/Downloads/🆕`
|
||||
|
||||
**Destination:** `packages/twenty-website/public/images/releases/{MINOR_VERSION}/`
|
||||
**Destination:** `packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/`
|
||||
|
||||
**Naming Convention:** `{VERSION}-descriptive-name.png`
|
||||
**Naming Convention:** `{VERSION}-descriptive-name.webp`
|
||||
|
||||
Examples:
|
||||
- `1.9.0-feature-name.png`
|
||||
- `1.9.0-another-feature.png`
|
||||
- `1.9.0-feature-name.webp`
|
||||
- `1.9.0-another-feature.webp`
|
||||
|
||||
```bash
|
||||
# Move and rename files
|
||||
cp ~/Downloads/🆕/source-file.png packages/twenty-website/public/images/releases/{MINOR_VERSION}/{VERSION}-feature-name.png
|
||||
# Move and rename source files, then convert to webp if needed
|
||||
cp ~/Downloads/🆕/source-file.png packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/{VERSION}-feature-name.png
|
||||
cd packages/twenty-website-new && node scripts/convert-png-to-webp.mjs
|
||||
```
|
||||
|
||||
### 4. Research Features (if needed)
|
||||
@@ -158,19 +159,19 @@ Date: {YYYY-MM-DD}
|
||||
|
||||
Short description explaining what the feature does and why it's useful. Keep it user-focused and concise (1-2 sentences).
|
||||
|
||||

|
||||

|
||||
|
||||
# Feature 2 Name
|
||||
|
||||
Another short description of the second feature.
|
||||
|
||||

|
||||

|
||||
|
||||
# Feature 3 Name
|
||||
|
||||
Description of the third feature.
|
||||
|
||||

|
||||

|
||||
```
|
||||
|
||||
**Style Guidelines:**
|
||||
@@ -182,7 +183,7 @@ Description of the third feature.
|
||||
- **NEVER mention the brand name "Twenty"** in changelog text - use "your workspace", "the platform", or similar neutral references instead
|
||||
|
||||
**Reference Previous Changelogs:**
|
||||
- Check `packages/twenty-website/src/content/releases/` for examples
|
||||
- Check `packages/twenty-website-new/src/content/releases/` for examples
|
||||
- Recent releases: 1.7.0.mdx, 1.6.0.mdx, 1.5.0.mdx
|
||||
|
||||
### 6. Review
|
||||
@@ -190,10 +191,10 @@ Description of the third feature.
|
||||
Open the changelog file for review:
|
||||
```bash
|
||||
# Open in Cursor
|
||||
cursor packages/twenty-website/src/content/releases/{VERSION}.mdx
|
||||
cursor packages/twenty-website-new/src/content/releases/{VERSION}.mdx
|
||||
|
||||
# Open image folder to verify illustrations
|
||||
open packages/twenty-website/public/images/releases/{MINOR_VERSION}
|
||||
open packages/twenty-website-new/public/images/releases/{MINOR_VERSION}
|
||||
```
|
||||
|
||||
Review checklist:
|
||||
@@ -221,8 +222,8 @@ I've created the changelog for version {VERSION}. Here's the content for your re
|
||||
[Show full MDX content]
|
||||
|
||||
Images moved to:
|
||||
- packages/twenty-website/public/images/releases/{MINOR_VERSION}/{VERSION}-feature-1.png
|
||||
- packages/twenty-website/public/images/releases/{MINOR_VERSION}/{VERSION}-feature-2.png
|
||||
- packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/{VERSION}-feature-1.webp
|
||||
- packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/{VERSION}-feature-2.webp
|
||||
|
||||
Please review the content. Once you approve, I'll commit the changes and create the pull request.
|
||||
```
|
||||
@@ -241,8 +242,8 @@ Possible user responses:
|
||||
git status
|
||||
|
||||
# Add files
|
||||
git add packages/twenty-website/src/content/releases/{VERSION}.mdx
|
||||
git add packages/twenty-website/public/images/releases/{MINOR_VERSION}/
|
||||
git add packages/twenty-website-new/src/content/releases/{VERSION}.mdx
|
||||
git add packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/
|
||||
|
||||
# Commit
|
||||
git commit -m "Add {VERSION} release changelog"
|
||||
@@ -265,7 +266,7 @@ This release includes:
|
||||
- Feature 2
|
||||
- Feature 3
|
||||
|
||||
Changelog file: \`packages/twenty-website/src/content/releases/{VERSION}.mdx\`
|
||||
Changelog file: \`packages/twenty-website-new/src/content/releases/{VERSION}.mdx\`
|
||||
Release date: {DATE}" \
|
||||
--base main \
|
||||
--head {VERSION}
|
||||
@@ -279,21 +280,21 @@ Or visit: `https://github.com/twentyhq/twenty/pull/new/{VERSION}`
|
||||
- **Format**: `{MAJOR}.{MINOR}.{PATCH}.mdx`
|
||||
- **Convention**: One file per complete version
|
||||
- **Examples**: `1.6.0.mdx`, `1.7.0.mdx`, `2.0.0.mdx`
|
||||
- **Location**: `packages/twenty-website/src/content/releases/`
|
||||
- **Location**: `packages/twenty-website-new/src/content/releases/`
|
||||
|
||||
### Image Folders
|
||||
- **Format**: `{MAJOR}.{MINOR}/`
|
||||
- **Convention**: One folder per minor version (shared across patches)
|
||||
- **Examples**: `1.6/`, `1.7/`, `2.0/`
|
||||
- **Location**: `packages/twenty-website/public/images/releases/`
|
||||
- **Location**: `packages/twenty-website-new/public/images/releases/`
|
||||
|
||||
### Image Files
|
||||
- **Format**: `{VERSION}-descriptive-name.png`
|
||||
- **Format**: `{VERSION}-descriptive-name.webp`
|
||||
- **Convention**: Kebab-case descriptive names
|
||||
- **Examples**:
|
||||
- `1.8.0-workflow-iterator.png`
|
||||
- `1.8.0-bulk-select.png`
|
||||
- `1.9.0-new-feature.png`
|
||||
- `1.8.0-workflow-iterator.webp`
|
||||
- `1.8.0-bulk-select.webp`
|
||||
- `1.9.0-new-feature.webp`
|
||||
|
||||
## Quick Reference Template
|
||||
|
||||
@@ -310,8 +311,8 @@ Features to document:
|
||||
3. ___________________________
|
||||
|
||||
Branch name: {VERSION}
|
||||
Changelog path: packages/twenty-website/src/content/releases/{VERSION}.mdx
|
||||
Images path: packages/twenty-website/public/images/releases/{MINOR_VERSION}/
|
||||
Changelog path: packages/twenty-website-new/src/content/releases/{VERSION}.mdx
|
||||
Images path: packages/twenty-website-new/public/images/releases/{MINOR_VERSION}/
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
@@ -7,6 +7,17 @@ inputs:
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Free disk space for install
|
||||
if: runner.os == 'Linux'
|
||||
shell: bash
|
||||
run: |
|
||||
# Default GitHub images ship large SDKs this repo does not use; removing
|
||||
# them avoids ENOSPC when restoring or linking a full Yarn node_modules.
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf /opt/hostedtoolcache/CodeQL
|
||||
df -h
|
||||
- name: Cache primary key builder
|
||||
id: globals
|
||||
shell: bash
|
||||
|
||||
@@ -4,20 +4,19 @@
|
||||
# See https://crowdin.github.io/crowdin-cli/configuration for more information
|
||||
#
|
||||
|
||||
"preserve_hierarchy": true
|
||||
"base_path": ".."
|
||||
|
||||
files: [
|
||||
{
|
||||
#
|
||||
# Source files filter - PO files for Lingui
|
||||
#
|
||||
"source": "**/en.po",
|
||||
preserve_hierarchy: true
|
||||
base_path: ..
|
||||
|
||||
files:
|
||||
#
|
||||
# Source files filter - PO files for Lingui
|
||||
#
|
||||
- source: packages/twenty-front/src/locales/en.po
|
||||
#
|
||||
# Translation files path
|
||||
#
|
||||
"translation": "%original_path%/%locale%.po",
|
||||
}
|
||||
]
|
||||
|
||||
translation: '%original_path%/%locale%.po'
|
||||
- source: packages/twenty-server/src/engine/core-modules/i18n/locales/en.po
|
||||
translation: '%original_path%/%locale%.po'
|
||||
- source: packages/twenty-emails/src/locales/en.po
|
||||
translation: '%original_path%/%locale%.po'
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#
|
||||
# Crowdin CLI configuration for Website translations (twenty-website-new)
|
||||
# Project ID: 4
|
||||
# See https://crowdin.github.io/crowdin-cli/configuration for more information
|
||||
#
|
||||
|
||||
project_id: 4
|
||||
preserve_hierarchy: true
|
||||
base_url: 'https://twenty.api.crowdin.com'
|
||||
base_path: ..
|
||||
languages_mapping:
|
||||
locale:
|
||||
fr: fr-FR
|
||||
|
||||
files:
|
||||
#
|
||||
# Source file - PO file for Lingui
|
||||
#
|
||||
- source: packages/twenty-website-new/src/locales/en.po
|
||||
#
|
||||
# Translation files path
|
||||
#
|
||||
translation: '%original_path%/%locale%.po'
|
||||
@@ -1,71 +0,0 @@
|
||||
name: CI Website
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
merge_group:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
||||
|
||||
jobs:
|
||||
changed-files-check:
|
||||
if: github.event_name != 'merge_group'
|
||||
uses: ./.github/workflows/changed-files.yaml
|
||||
with:
|
||||
files: |
|
||||
package.json
|
||||
packages/twenty-website/**
|
||||
website-build:
|
||||
needs: changed-files-check
|
||||
if: needs.changed-files-check.outputs.any_changed == 'true'
|
||||
timeout-minutes: 10
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:18
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
ports:
|
||||
- 5432:5432
|
||||
options: >-
|
||||
--health-cmd pg_isready
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 10
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Server / Create DB
|
||||
run: PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
|
||||
|
||||
- name: Website / Run migrations
|
||||
run: npx nx database:migrate twenty-website
|
||||
env:
|
||||
DATABASE_PG_URL: postgres://postgres:postgres@localhost:5432/default
|
||||
- name: Website / Build Website
|
||||
run: npx nx build twenty-website
|
||||
env:
|
||||
DATABASE_PG_URL: postgres://postgres:postgres@localhost:5432/default
|
||||
KEYSTATIC_GITHUB_CLIENT_ID: xxx
|
||||
KEYSTATIC_GITHUB_CLIENT_SECRET: xxx
|
||||
KEYSTATIC_SECRET: xxx
|
||||
NEXT_PUBLIC_KEYSTATIC_GITHUB_APP_SLUG: xxx
|
||||
ci-website-status-check:
|
||||
if: always() && !cancelled()
|
||||
timeout-minutes: 5
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changed-files-check, website-build]
|
||||
steps:
|
||||
- name: Fail job if any needs failed
|
||||
if: contains(needs.*.result, 'failure')
|
||||
run: exit 1
|
||||
@@ -58,7 +58,6 @@ jobs:
|
||||
npx nx run twenty-server:lingui:compile --strict
|
||||
npx nx run twenty-emails:lingui:compile --strict
|
||||
npx nx run twenty-front:lingui:compile --strict
|
||||
npx nx run twenty-website-new:lingui:compile --strict
|
||||
continue-on-error: true
|
||||
|
||||
- name: Stash any changes before pulling translations
|
||||
@@ -75,8 +74,6 @@ jobs:
|
||||
upload_sources: false
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
source: '**/en.po'
|
||||
translation: '%original_path%/%locale%.po'
|
||||
export_only_approved: false
|
||||
localization_branch_name: i18n
|
||||
base_url: 'https://twenty.api.crowdin.com'
|
||||
@@ -116,7 +113,6 @@ jobs:
|
||||
npx nx run twenty-server:lingui:compile
|
||||
npx nx run twenty-emails:lingui:compile
|
||||
npx nx run twenty-front:lingui:compile
|
||||
npx nx run twenty-website-new:lingui:compile
|
||||
git status
|
||||
git add .
|
||||
if ! git diff --staged --quiet --exit-code; then
|
||||
|
||||
@@ -41,7 +41,6 @@ jobs:
|
||||
npx nx run twenty-server:lingui:extract
|
||||
npx nx run twenty-emails:lingui:extract
|
||||
npx nx run twenty-front:lingui:extract
|
||||
npx nx run twenty-website-new:lingui:extract
|
||||
|
||||
- name: Check and commit extracted files
|
||||
id: check_extract_changes
|
||||
@@ -61,7 +60,6 @@ jobs:
|
||||
npx nx run twenty-server:lingui:compile
|
||||
npx nx run twenty-emails:lingui:compile
|
||||
npx nx run twenty-front:lingui:compile
|
||||
npx nx run twenty-website-new:lingui:compile
|
||||
|
||||
- name: Check and commit compiled files
|
||||
id: check_compile_changes
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
# Pull down website translations from Crowdin every two hours or when triggered manually.
|
||||
# When force_pull input is true, translations will be pulled regardless of compilation status.
|
||||
|
||||
name: 'Pull website translations from Crowdin'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 */2 * * *' # Every two hours.
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
force_pull:
|
||||
description: 'Force pull translations regardless of compilation status'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
workflow_call:
|
||||
inputs:
|
||||
force_pull:
|
||||
description: 'Force pull translations regardless of compilation status'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
||||
|
||||
jobs:
|
||||
pull_website_translations:
|
||||
name: Pull website translations
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
ref: ${{ github.head_ref || github.ref_name }}
|
||||
|
||||
- name: Setup website i18n branch
|
||||
run: |
|
||||
git fetch origin i18n-website || true
|
||||
git checkout -B i18n-website origin/i18n-website || git checkout -b i18n-website
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Build twenty-shared
|
||||
run: npx nx build twenty-shared
|
||||
|
||||
# Strict mode fails if there are missing website translations.
|
||||
- name: Compile website translations
|
||||
id: compile_translations_strict
|
||||
run: npx nx run twenty-website-new:lingui:compile --strict
|
||||
continue-on-error: true
|
||||
|
||||
- name: Stash any changes before pulling translations
|
||||
run: |
|
||||
git config --global user.name 'github-actions'
|
||||
git config --global user.email 'github-actions@twenty.com'
|
||||
git add .
|
||||
git stash
|
||||
|
||||
- name: Pull website translations from Crowdin
|
||||
if: inputs.force_pull || steps.compile_translations_strict.outcome == 'failure'
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
upload_sources: false
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
source: 'packages/twenty-website-new/src/locales/en.po'
|
||||
translation: 'packages/twenty-website-new/src/locales/%locale%.po'
|
||||
export_only_approved: false
|
||||
localization_branch_name: i18n-website
|
||||
base_url: 'https://twenty.api.crowdin.com'
|
||||
auto_approve_imported: false
|
||||
import_eq_suggestions: false
|
||||
download_sources: false
|
||||
push_sources: false
|
||||
skip_untranslated_strings: false
|
||||
skip_untranslated_files: false
|
||||
push_translations: false
|
||||
create_pull_request: false
|
||||
skip_ref_checkout: true
|
||||
dryrun_action: false
|
||||
config: '.github/crowdin-website.yml'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
# Website translations project
|
||||
CROWDIN_PROJECT_ID: '4'
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
|
||||
# As the files are extracted from a Docker container, they belong to root:root.
|
||||
# We need to fix this before the next steps.
|
||||
- name: Fix file permissions
|
||||
run: sudo chown -R runner:docker .
|
||||
|
||||
- name: Compile website translations
|
||||
id: compile_translations
|
||||
run: |
|
||||
npx nx run twenty-website-new:lingui:compile
|
||||
git status
|
||||
git add packages/twenty-website-new/src/locales
|
||||
if ! git diff --staged --quiet --exit-code; then
|
||||
git commit -m "chore: compile website translations"
|
||||
echo "changes_detected=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "changes_detected=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Push changes
|
||||
if: steps.compile_translations.outputs.changes_detected == 'true'
|
||||
run: git push origin HEAD:i18n-website
|
||||
|
||||
- name: Create pull request
|
||||
if: steps.compile_translations.outputs.changes_detected == 'true'
|
||||
run: |
|
||||
if git diff --name-only origin/main..HEAD | grep -q .; then
|
||||
gh pr create -B main -H i18n-website --title 'i18n - website translations' --body 'Created by Github action' || true
|
||||
else
|
||||
echo "No file differences between branches, skipping PR creation"
|
||||
fi
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Trigger i18n automerge
|
||||
if: steps.compile_translations.outputs.changes_detected == 'true'
|
||||
uses: peter-evans/repository-dispatch@v2
|
||||
with:
|
||||
token: ${{ secrets.TWENTY_INFRA_TOKEN }}
|
||||
repository: twentyhq/twenty-infra
|
||||
event-type: i18n-pr-ready
|
||||
@@ -0,0 +1,111 @@
|
||||
name: 'Push website translations to Crowdin'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
push:
|
||||
branches: ['main']
|
||||
paths:
|
||||
- 'packages/twenty-website-new/**'
|
||||
- '.github/crowdin-website.yml'
|
||||
- '.github/workflows/website-i18n-push.yaml'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
||||
|
||||
jobs:
|
||||
extract_website_translations:
|
||||
name: Extract and upload website translations
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
ref: main
|
||||
|
||||
- name: Setup website i18n branch
|
||||
run: |
|
||||
git fetch origin i18n-website || true
|
||||
git checkout -B i18n-website origin/i18n-website || git checkout -b i18n-website
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Build dependencies
|
||||
run: npx nx build twenty-shared
|
||||
|
||||
- name: Extract website translations
|
||||
run: npx nx run twenty-website-new:lingui:extract
|
||||
|
||||
- name: Check and commit extracted files
|
||||
id: check_extract_changes
|
||||
run: |
|
||||
git config --global user.name 'github-actions'
|
||||
git config --global user.email 'github-actions@twenty.com'
|
||||
git add packages/twenty-website-new/src/locales
|
||||
if ! git diff --staged --quiet --exit-code; then
|
||||
git commit -m "chore: extract website translations"
|
||||
echo "changes_detected=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "changes_detected=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Compile website translations
|
||||
run: npx nx run twenty-website-new:lingui:compile
|
||||
|
||||
- name: Check and commit compiled files
|
||||
id: check_compile_changes
|
||||
run: |
|
||||
git config --global user.name 'github-actions'
|
||||
git config --global user.email 'github-actions@twenty.com'
|
||||
git add packages/twenty-website-new/src/locales/generated
|
||||
if ! git diff --staged --quiet --exit-code; then
|
||||
git commit -m "chore: compile website translations"
|
||||
echo "changes_detected=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "changes_detected=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Push changes and create remote branch if needed
|
||||
if: steps.check_extract_changes.outputs.changes_detected == 'true' || steps.check_compile_changes.outputs.changes_detected == 'true'
|
||||
run: git push origin HEAD:i18n-website
|
||||
|
||||
- name: Upload missing website translations
|
||||
if: steps.check_extract_changes.outputs.changes_detected == 'true'
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_translations: true
|
||||
download_translations: false
|
||||
localization_branch_name: i18n-website
|
||||
base_url: 'https://twenty.api.crowdin.com'
|
||||
config: '.github/crowdin-website.yml'
|
||||
env:
|
||||
# Website translations project
|
||||
CROWDIN_PROJECT_ID: '4'
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
|
||||
- name: Create a pull request
|
||||
if: steps.check_extract_changes.outputs.changes_detected == 'true' || steps.check_compile_changes.outputs.changes_detected == 'true'
|
||||
run: |
|
||||
if git diff --name-only origin/main..HEAD | grep -q .; then
|
||||
gh pr create -B main -H i18n-website --title 'i18n - website translations' --body 'Created by Github action' || true
|
||||
else
|
||||
echo "No file differences between branches, skipping PR creation"
|
||||
fi
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Trigger i18n automerge
|
||||
if: steps.check_extract_changes.outputs.changes_detected == 'true' || steps.check_compile_changes.outputs.changes_detected == 'true'
|
||||
uses: peter-evans/repository-dispatch@v2
|
||||
with:
|
||||
token: ${{ secrets.TWENTY_INFRA_TOKEN }}
|
||||
repository: twentyhq/twenty-infra
|
||||
event-type: i18n-pr-ready
|
||||
@@ -110,7 +110,8 @@ packages/
|
||||
├── twenty-ui/ # Shared UI components library
|
||||
├── twenty-shared/ # Common types and utilities
|
||||
├── twenty-emails/ # Email templates with React Email
|
||||
├── twenty-website/ # Next.js documentation website
|
||||
├── twenty-website-new/ # Next.js marketing website
|
||||
├── twenty-docs/ # Documentation website
|
||||
├── twenty-zapier/ # Zapier integration
|
||||
└── twenty-e2e-testing/ # Playwright E2E tests
|
||||
```
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<p align="center">
|
||||
<a href="https://www.twenty.com">
|
||||
<img src="./packages/twenty-website/public/images/core/logo.svg" width="100px" alt="Twenty logo" />
|
||||
<img src="./packages/twenty-website-new/public/images/core/logo.svg" width="100px" alt="Twenty logo" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h2 align="center" >The #1 Open-Source CRM</h2>
|
||||
|
||||
<p align="center"><a href="https://twenty.com"><img src="./packages/twenty-website/public/images/readme/globe-icon.svg" width="12" height="12"/> Website</a> · <a href="https://docs.twenty.com"><img src="./packages/twenty-website/public/images/readme/book-icon.svg" width="12" height="12"/> Documentation</a> · <a href="https://github.com/orgs/twentyhq/projects/1"><img src="./packages/twenty-website/public/images/readme/map-icon.svg" width="12" height="12"/> Roadmap </a> · <a href="https://discord.gg/cx5n4Jzs57"><img src="./packages/twenty-website/public/images/readme/discord-icon.svg" width="12" height="12"/> Discord</a> · <a href="https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty"><img src="./packages/twenty-website/public/images/readme/figma-icon.png" width="12" height="12"/> Figma</a></p>
|
||||
<p align="center"><a href="https://twenty.com"><img src="./packages/twenty-website-new/public/images/readme/globe-icon.svg" width="12" height="12"/> Website</a> · <a href="https://docs.twenty.com"><img src="./packages/twenty-website-new/public/images/readme/book-icon.svg" width="12" height="12"/> Documentation</a> · <a href="https://github.com/orgs/twentyhq/projects/1"><img src="./packages/twenty-website-new/public/images/readme/map-icon.svg" width="12" height="12"/> Roadmap </a> · <a href="https://discord.gg/cx5n4Jzs57"><img src="./packages/twenty-website-new/public/images/readme/discord-icon.svg" width="12" height="12"/> Discord</a> · <a href="https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty"><img src="./packages/twenty-website-new/public/images/readme/figma-icon.png" width="12" height="12"/> Figma</a></p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.twenty.com">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/github-cover-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/github-cover-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/github-cover-light.png" alt="Twenty banner" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/github-cover-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/github-cover-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/github-cover-light.png" alt="Twenty banner" />
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -24,17 +24,17 @@
|
||||
|
||||
Twenty gives technical teams the building blocks for a custom CRM that meets complex business needs and quickly adapts as the business evolves. Twenty is the CRM you build, ship, and version like the rest of your stack.
|
||||
|
||||
<a href="https://twenty.com/why-twenty"><img src="./packages/twenty-website/public/images/readme/star-icon.svg" width="14" height="14"/> Learn more about why we built Twenty</a>
|
||||
<a href="https://twenty.com/why-twenty"><img src="./packages/twenty-website-new/public/images/readme/star-icon.svg" width="14" height="14"/> Learn more about why we built Twenty</a>
|
||||
|
||||
<br />
|
||||
|
||||
# Installation
|
||||
|
||||
### <img src="./packages/twenty-website/public/images/readme/globe-icon.svg" width="14" height="14"/> Cloud
|
||||
### <img src="./packages/twenty-website-new/public/images/readme/globe-icon.svg" width="14" height="14"/> Cloud
|
||||
|
||||
The fastest way to get started. Sign up at [twenty.com](https://twenty.com) and spin up a workspace in under a minute, with no infrastructure to manage and always up to date.
|
||||
|
||||
### <img src="./packages/twenty-website/public/images/readme/book-icon.svg" width="14" height="14"/> Build an app
|
||||
### <img src="./packages/twenty-website-new/public/images/readme/book-icon.svg" width="14" height="14"/> Build an app
|
||||
|
||||
Scaffold a new app with the Twenty CLI:
|
||||
|
||||
@@ -68,7 +68,7 @@ npx twenty deploy
|
||||
|
||||
See the [app development guide](https://docs.twenty.com/developers/extend/apps/getting-started) for objects, views, agents, and logic functions.
|
||||
|
||||
### <img src="./packages/twenty-website/public/images/readme/rocket-icon.svg" width="14" height="14"/> Self-hosting
|
||||
### <img src="./packages/twenty-website-new/public/images/readme/rocket-icon.svg" width="14" height="14"/> Self-hosting
|
||||
|
||||
Run Twenty on your own infrastructure with [Docker Compose](https://docs.twenty.com/developers/self-host/capabilities/docker-compose), or contribute locally via the [local setup guide](https://docs.twenty.com/developers/contribute/capabilities/local-setup).
|
||||
|
||||
@@ -79,61 +79,61 @@ Run Twenty on your own infrastructure with [Docker Compose](https://docs.twenty.
|
||||
|
||||
Twenty gives you the building blocks of a modern CRM (objects, views, workflows, and agents) and lets you extend them as code. Here's a tour of what's in the box.
|
||||
|
||||
Want to go deeper? Read the <a href="https://docs.twenty.com/user-guide/introduction"><img src="./packages/twenty-website/public/images/readme/planner-icon.svg" width="14" height="14"/> User Guide</a> for product walkthroughs, or the <a href="https://docs.twenty.com"><img src="./packages/twenty-website/public/images/readme/book-icon.svg" width="14" height="14"/> Documentation</a> for developer reference.
|
||||
Want to go deeper? Read the <a href="https://docs.twenty.com/user-guide/introduction"><img src="./packages/twenty-website-new/public/images/readme/planner-icon.svg" width="14" height="14"/> User Guide</a> for product walkthroughs, or the <a href="https://docs.twenty.com"><img src="./packages/twenty-website-new/public/images/readme/book-icon.svg" width="14" height="14"/> Documentation</a> for developer reference.
|
||||
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/v2-build-apps-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/v2-build-apps-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/v2-build-apps-light.png" alt="Create your apps" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/v2-build-apps-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/v2-build-apps-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/v2-build-apps-light.png" alt="Create your apps" />
|
||||
</picture>
|
||||
<p align="center"><a href="https://docs.twenty.com/developers/extend/apps/getting-started"><img src="./packages/twenty-website/public/images/readme/code-icon.svg" width="16" height="16"/> Learn more about apps in doc</a></p>
|
||||
<p align="center"><a href="https://docs.twenty.com/developers/extend/apps/getting-started"><img src="./packages/twenty-website-new/public/images/readme/code-icon.svg" width="16" height="16"/> Learn more about apps in doc</a></p>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/v2-version-control-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/v2-version-control-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/v2-version-control-light.png" alt="Stay on top with version control" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/v2-version-control-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/v2-version-control-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/v2-version-control-light.png" alt="Stay on top with version control" />
|
||||
</picture>
|
||||
<p align="center"><a href="https://docs.twenty.com/developers/extend/apps/publishing"><img src="./packages/twenty-website/public/images/readme/monitor-icon.svg" width="16" height="16"/> Learn more about version control in doc</a></p>
|
||||
<p align="center"><a href="https://docs.twenty.com/developers/extend/apps/publishing"><img src="./packages/twenty-website-new/public/images/readme/monitor-icon.svg" width="16" height="16"/> Learn more about version control in doc</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/v2-all-tools-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/v2-all-tools-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/v2-all-tools-light.png" alt="All the tools you need to build anything" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/v2-all-tools-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/v2-all-tools-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/v2-all-tools-light.png" alt="All the tools you need to build anything" />
|
||||
</picture>
|
||||
<p align="center"><a href="https://docs.twenty.com/developers/extend/apps/building"><img src="./packages/twenty-website/public/images/readme/rocket-icon.svg" width="16" height="16"/> Learn more about primitives in doc</a></p>
|
||||
<p align="center"><a href="https://docs.twenty.com/developers/extend/apps/building"><img src="./packages/twenty-website-new/public/images/readme/rocket-icon.svg" width="16" height="16"/> Learn more about primitives in doc</a></p>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/v2-tools-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/v2-tools-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/v2-tools-light.png" alt="Customize your layouts" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/v2-tools-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/v2-tools-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/v2-tools-light.png" alt="Customize your layouts" />
|
||||
</picture>
|
||||
<p align="center"><a href="https://docs.twenty.com/user-guide/layout/overview"><img src="./packages/twenty-website/public/images/readme/planner-icon.svg" width="16" height="16"/> Learn more about layouts in doc</a></p>
|
||||
<p align="center"><a href="https://docs.twenty.com/user-guide/layout/overview"><img src="./packages/twenty-website-new/public/images/readme/planner-icon.svg" width="16" height="16"/> Learn more about layouts in doc</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/v2-ai-agents-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/v2-ai-agents-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/v2-ai-agents-light.png" alt="AI agents and chats" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/v2-ai-agents-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/v2-ai-agents-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/v2-ai-agents-light.png" alt="AI agents and chats" />
|
||||
</picture>
|
||||
<p align="center"><a href="https://docs.twenty.com/user-guide/ai/overview"><img src="./packages/twenty-website/public/images/readme/message-icon.svg" width="16" height="16"/> Learn more about AI in doc</a></p>
|
||||
<p align="center"><a href="https://docs.twenty.com/user-guide/ai/overview"><img src="./packages/twenty-website-new/public/images/readme/message-icon.svg" width="16" height="16"/> Learn more about AI in doc</a></p>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website/public/images/readme/v2-crm-tools-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website/public/images/readme/v2-crm-tools-light.png" />
|
||||
<img src="./packages/twenty-website/public/images/readme/v2-crm-tools-light.png" alt="Plus all the tools of a good CRM" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="./packages/twenty-website-new/public/images/readme/v2-crm-tools-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="./packages/twenty-website-new/public/images/readme/v2-crm-tools-light.png" />
|
||||
<img src="./packages/twenty-website-new/public/images/readme/v2-crm-tools-light.png" alt="Plus all the tools of a good CRM" />
|
||||
</picture>
|
||||
<p align="center"><a href="https://docs.twenty.com/user-guide/introduction"><img src="./packages/twenty-website/public/images/readme/star-icon.svg" width="16" height="16"/> Learn more about CRM features in doc</a></p>
|
||||
<p align="center"><a href="https://docs.twenty.com/user-guide/introduction"><img src="./packages/twenty-website-new/public/images/readme/star-icon.svg" width="16" height="16"/> Learn more about CRM features in doc</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -142,23 +142,23 @@ Want to go deeper? Read the <a href="https://docs.twenty.com/user-guide/introduc
|
||||
|
||||
# Stack
|
||||
|
||||
- <a href="https://www.typescriptlang.org/"><img src="./packages/twenty-website/public/images/readme/stack-typescript.svg" width="14" height="14"/> TypeScript</a>
|
||||
- <a href="https://nx.dev/"><img src="./packages/twenty-website/public/images/readme/stack-nx.svg" width="14" height="14"/> Nx</a>
|
||||
- <a href="https://nestjs.com/"><img src="./packages/twenty-website/public/images/readme/stack-nestjs.svg" width="14" height="14"/> NestJS</a>, with <a href="https://bullmq.io/">BullMQ</a>, <a href="https://www.postgresql.org/"><img src="./packages/twenty-website/public/images/readme/stack-postgresql.svg" width="14" height="14"/> PostgreSQL</a>, <a href="https://redis.io/"><img src="./packages/twenty-website/public/images/readme/stack-redis.svg" width="14" height="14"/> Redis</a>
|
||||
- <a href="https://reactjs.org/"><img src="./packages/twenty-website/public/images/readme/stack-react.svg" width="14" height="14"/> React</a>, with <a href="https://jotai.org/">Jotai</a>, <a href="https://linaria.dev/">Linaria</a> and <a href="https://lingui.dev/">Lingui</a>
|
||||
- <a href="https://www.typescriptlang.org/"><img src="./packages/twenty-website-new/public/images/readme/stack-typescript.svg" width="14" height="14"/> TypeScript</a>
|
||||
- <a href="https://nx.dev/"><img src="./packages/twenty-website-new/public/images/readme/stack-nx.svg" width="14" height="14"/> Nx</a>
|
||||
- <a href="https://nestjs.com/"><img src="./packages/twenty-website-new/public/images/readme/stack-nestjs.svg" width="14" height="14"/> NestJS</a>, with <a href="https://bullmq.io/">BullMQ</a>, <a href="https://www.postgresql.org/"><img src="./packages/twenty-website-new/public/images/readme/stack-postgresql.svg" width="14" height="14"/> PostgreSQL</a>, <a href="https://redis.io/"><img src="./packages/twenty-website-new/public/images/readme/stack-redis.svg" width="14" height="14"/> Redis</a>
|
||||
- <a href="https://reactjs.org/"><img src="./packages/twenty-website-new/public/images/readme/stack-react.svg" width="14" height="14"/> React</a>, with <a href="https://jotai.org/">Jotai</a>, <a href="https://linaria.dev/">Linaria</a> and <a href="https://lingui.dev/">Lingui</a>
|
||||
|
||||
|
||||
|
||||
# Thanks
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.chromatic.com/"><img src="./packages/twenty-website/public/images/readme/chromatic.png" height="28" alt="Chromatic" /></a>
|
||||
<a href="https://www.chromatic.com/"><img src="./packages/twenty-website-new/public/images/readme/chromatic.png" height="28" alt="Chromatic" /></a>
|
||||
|
||||
<a href="https://greptile.com"><img src="./packages/twenty-website/public/images/readme/greptile.png" height="28" alt="Greptile" /></a>
|
||||
<a href="https://greptile.com"><img src="./packages/twenty-website-new/public/images/readme/greptile.png" height="28" alt="Greptile" /></a>
|
||||
|
||||
<a href="https://sentry.io/"><img src="./packages/twenty-website/public/images/readme/sentry.png" height="28" alt="Sentry" /></a>
|
||||
<a href="https://sentry.io/"><img src="./packages/twenty-website-new/public/images/readme/sentry.png" height="28" alt="Sentry" /></a>
|
||||
|
||||
<a href="https://crowdin.com/"><img src="./packages/twenty-website/public/images/readme/crowdin.png" height="28" alt="Crowdin" /></a>
|
||||
<a href="https://crowdin.com/"><img src="./packages/twenty-website-new/public/images/readme/crowdin.png" height="28" alt="Crowdin" /></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).
|
||||
@@ -166,4 +166,4 @@ Want to go deeper? Read the <a href="https://docs.twenty.com/user-guide/introduc
|
||||
|
||||
# Join the Community
|
||||
|
||||
<p><a href="https://github.com/twentyhq/twenty"><img src="./packages/twenty-website/public/images/readme/star-icon.svg" width="12" height="12"/> Star the repo</a> · <a href="https://discord.gg/cx5n4Jzs57"><img src="./packages/twenty-website/public/images/readme/discord-icon.svg" width="12" height="12"/> Discord</a> · <a href="https://github.com/twentyhq/twenty/discussions"><img src="./packages/twenty-website/public/images/readme/message-icon.svg" width="12" height="12"/> Feature requests</a> · <a href="https://github.com/orgs/twentyhq/projects/1/views/35"><img src="./packages/twenty-website/public/images/readme/rocket-icon.svg" width="12" height="12"/> Releases</a> · <a href="https://twitter.com/twentycrm"><img src="./packages/twenty-website/public/images/readme/x-icon.svg" width="12" height="12"/> X</a> · <a href="https://www.linkedin.com/company/twenty/"><img src="./packages/twenty-website/public/images/readme/linkedin-icon.svg" width="12" height="12"/> LinkedIn</a> · <a href="https://twenty.crowdin.com/twenty"><img src="./packages/twenty-website/public/images/readme/language-icon.svg" width="12" height="12"/> Crowdin</a> · <a href="https://github.com/twentyhq/twenty/contribute"><img src="./packages/twenty-website/public/images/readme/code-icon.svg" width="12" height="12"/> Contribute</a></p>
|
||||
<p><a href="https://github.com/twentyhq/twenty"><img src="./packages/twenty-website-new/public/images/readme/star-icon.svg" width="12" height="12"/> Star the repo</a> · <a href="https://discord.gg/cx5n4Jzs57"><img src="./packages/twenty-website-new/public/images/readme/discord-icon.svg" width="12" height="12"/> Discord</a> · <a href="https://github.com/twentyhq/twenty/discussions"><img src="./packages/twenty-website-new/public/images/readme/message-icon.svg" width="12" height="12"/> Feature requests</a> · <a href="https://github.com/orgs/twentyhq/projects/1/views/35"><img src="./packages/twenty-website-new/public/images/readme/rocket-icon.svg" width="12" height="12"/> Releases</a> · <a href="https://twitter.com/twentycrm"><img src="./packages/twenty-website-new/public/images/readme/x-icon.svg" width="12" height="12"/> X</a> · <a href="https://www.linkedin.com/company/twenty/"><img src="./packages/twenty-website-new/public/images/readme/linkedin-icon.svg" width="12" height="12"/> LinkedIn</a> · <a href="https://twenty.crowdin.com/twenty"><img src="./packages/twenty-website-new/public/images/readme/language-icon.svg" width="12" height="12"/> Crowdin</a> · <a href="https://github.com/twentyhq/twenty/contribute"><img src="./packages/twenty-website-new/public/images/readme/code-icon.svg" width="12" height="12"/> Contribute</a></p>
|
||||
|
||||
@@ -1,172 +1,19 @@
|
||||
{
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@apollo/client": "^4.0.0",
|
||||
"@floating-ui/react": "^0.24.3",
|
||||
"@linaria/core": "^6.2.0",
|
||||
"@linaria/react": "^6.2.1",
|
||||
"@radix-ui/colors": "^3.0.0",
|
||||
"@sniptt/guards": "^0.2.0",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@wyw-in-js/babel-preset": "^1.0.6",
|
||||
"@wyw-in-js/vite": "^0.7.0",
|
||||
"archiver": "^7.0.1",
|
||||
"danger-plugin-todos": "^1.3.1",
|
||||
"date-fns": "^2.30.0",
|
||||
"date-fns-tz": "^2.0.0",
|
||||
"deep-equal": "^2.2.2",
|
||||
"file-type": "16.5.4",
|
||||
"framer-motion": "^11.18.0",
|
||||
"fuse.js": "^7.1.0",
|
||||
"googleapis": "105",
|
||||
"hex-rgb": "^5.0.0",
|
||||
"immer": "^10.1.1",
|
||||
"jotai": "^2.17.1",
|
||||
"libphonenumber-js": "^1.10.26",
|
||||
"lodash.camelcase": "^4.3.0",
|
||||
"lodash.chunk": "^4.2.0",
|
||||
"lodash.compact": "^3.0.1",
|
||||
"lodash.escaperegexp": "^4.1.2",
|
||||
"lodash.groupby": "^4.6.0",
|
||||
"lodash.identity": "^3.0.0",
|
||||
"lodash.isempty": "^4.4.0",
|
||||
"lodash.isequal": "^4.5.0",
|
||||
"lodash.isobject": "^3.0.2",
|
||||
"lodash.kebabcase": "^4.1.1",
|
||||
"lodash.mapvalues": "^4.6.0",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"lodash.omit": "^4.5.0",
|
||||
"lodash.pickby": "^4.6.0",
|
||||
"lodash.snakecase": "^4.1.1",
|
||||
"lodash.upperfirst": "^4.3.1",
|
||||
"microdiff": "^1.3.2",
|
||||
"next-with-linaria": "^1.3.0",
|
||||
"planer": "^1.2.0",
|
||||
"pluralize": "^8.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-responsive": "^9.0.2",
|
||||
"react-router-dom": "^6.30.3",
|
||||
"react-tooltip": "^5.13.1",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"rxjs": "^7.2.0",
|
||||
"semver": "^7.5.4",
|
||||
"slash": "^5.1.0",
|
||||
"temporal-polyfill": "^0.3.0",
|
||||
"ts-key-enum": "^2.0.12",
|
||||
"tslib": "^2.8.1",
|
||||
"type-fest": "4.10.1",
|
||||
"typescript": "5.9.2",
|
||||
"uuid": "^9.0.0",
|
||||
"vite-tsconfig-paths": "^4.2.1",
|
||||
"xlsx-ugnis": "^0.19.3",
|
||||
"zod": "^4.1.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.14.5",
|
||||
"@babel/preset-react": "^7.14.5",
|
||||
"@babel/preset-typescript": "^7.24.6",
|
||||
"@chromatic-com/storybook": "^4.1.3",
|
||||
"@graphql-codegen/cli": "^3.3.1",
|
||||
"@graphql-codegen/client-preset": "^4.1.0",
|
||||
"@graphql-codegen/typescript": "^3.0.4",
|
||||
"@graphql-codegen/typescript-operations": "^3.0.4",
|
||||
"@graphql-codegen/typescript-react-apollo": "^3.3.7",
|
||||
"@nx/jest": "22.5.4",
|
||||
"@nx/js": "22.5.4",
|
||||
"@nx/react": "22.5.4",
|
||||
"@nx/storybook": "22.5.4",
|
||||
"@nx/vite": "22.5.4",
|
||||
"@nx/web": "22.5.4",
|
||||
"@oxlint/plugins": "^1.51.0",
|
||||
"@sentry/types": "^8",
|
||||
"@storybook-community/storybook-addon-cookie": "^5.0.0",
|
||||
"@storybook/addon-coverage": "^3.0.0",
|
||||
"@storybook/addon-docs": "^10.3.3",
|
||||
"@storybook/addon-links": "^10.3.3",
|
||||
"@storybook/addon-vitest": "^10.3.3",
|
||||
"@storybook/icons": "^2.0.1",
|
||||
"@storybook/react-vite": "^10.3.3",
|
||||
"@storybook/test-runner": "^0.24.2",
|
||||
"@swc-node/register": "^1.11.1",
|
||||
"@swc/cli": "^0.7.10",
|
||||
"@swc/core": "^1.15.11",
|
||||
"@swc/helpers": "~0.5.19",
|
||||
"@swc/jest": "^0.2.39",
|
||||
"@testing-library/dom": "^10.4.0",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
"@testing-library/react": "^16.3.0",
|
||||
"@types/addressparser": "^1.0.3",
|
||||
"@types/bcrypt": "^5.0.0",
|
||||
"@types/bytes": "^3.1.1",
|
||||
"@types/chrome": "^0.0.267",
|
||||
"@types/deep-equal": "^1.0.1",
|
||||
"@types/fs-extra": "^11.0.4",
|
||||
"@types/graphql-fields": "^1.3.6",
|
||||
"@types/inquirer": "^9.0.9",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/lodash.camelcase": "^4.3.7",
|
||||
"@types/lodash.compact": "^3.0.9",
|
||||
"@types/lodash.escaperegexp": "^4.1.9",
|
||||
"@types/lodash.groupby": "^4.6.9",
|
||||
"@types/lodash.identity": "^3.0.9",
|
||||
"@types/lodash.isempty": "^4.4.7",
|
||||
"@types/lodash.isequal": "^4.5.7",
|
||||
"@types/lodash.isobject": "^3.0.7",
|
||||
"@types/lodash.kebabcase": "^4.1.7",
|
||||
"@types/lodash.mapvalues": "^4.6.9",
|
||||
"@types/lodash.omit": "^4.5.9",
|
||||
"@types/lodash.pickby": "^4.6.9",
|
||||
"@types/lodash.snakecase": "^4.1.7",
|
||||
"@types/lodash.upperfirst": "^4.3.7",
|
||||
"@types/ms": "^0.7.31",
|
||||
"@types/node": "^24.0.0",
|
||||
"@types/passport-google-oauth20": "^2.0.11",
|
||||
"@types/passport-jwt": "^3.0.8",
|
||||
"@types/passport-microsoft": "^2.1.0",
|
||||
"@types/pluralize": "^0.0.33",
|
||||
"@types/react": "^18.2.39",
|
||||
"@types/react-datepicker": "^6.2.0",
|
||||
"@types/react-dom": "^18.2.15",
|
||||
"@types/supertest": "^2.0.11",
|
||||
"@types/uuid": "^9.0.2",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260116.1",
|
||||
"@vitejs/plugin-react-swc": "4.2.3",
|
||||
"@vitest/browser-playwright": "^4.0.18",
|
||||
"@vitest/coverage-istanbul": "^4.0.18",
|
||||
"@vitest/coverage-v8": "^4.0.18",
|
||||
"@yarnpkg/types": "^4.0.0",
|
||||
"chromatic": "^6.18.0",
|
||||
"concurrently": "^8.2.2",
|
||||
"danger": "^13.0.4",
|
||||
"dotenv-cli": "^7.4.4",
|
||||
"esbuild": "^0.25.10",
|
||||
"http-server": "^14.1.1",
|
||||
"jest": "29.7.0",
|
||||
"jest-environment-jsdom": "30.0.0-beta.3",
|
||||
"jest-environment-node": "^29.4.1",
|
||||
"jest-fetch-mock": "^3.0.3",
|
||||
"jsdom": "~22.1.0",
|
||||
"msw": "^2.12.7",
|
||||
"msw-storybook-addon": "^2.0.6",
|
||||
"nx": "22.5.4",
|
||||
"prettier": "^3.1.1",
|
||||
"raw-loader": "^4.0.2",
|
||||
"rimraf": "^5.0.5",
|
||||
"source-map-support": "^0.5.20",
|
||||
"storybook": "^10.3.3",
|
||||
"storybook-addon-mock-date": "2.0.0",
|
||||
"storybook-addon-pseudo-states": "^10.3.3",
|
||||
"supertest": "^6.1.3",
|
||||
"ts-jest": "^29.1.1",
|
||||
"ts-loader": "^9.2.3",
|
||||
"ts-node": "10.9.1",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"tsconfig-paths": "^4.2.0",
|
||||
"tsx": "^4.17.0",
|
||||
"verdaccio": "^6.3.1",
|
||||
"vite": "^7.0.0",
|
||||
"vitest": "^4.0.18"
|
||||
"verdaccio": "^6.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
@@ -185,7 +32,8 @@
|
||||
"@lingui/core": "5.1.2",
|
||||
"@types/qs": "6.9.16",
|
||||
"@wyw-in-js/transform@npm:0.6.0": "patch:@wyw-in-js/transform@npm%3A0.7.0#~/.yarn/patches/@wyw-in-js-transform-npm-0.7.0-ba641dc99f.patch",
|
||||
"@wyw-in-js/transform@npm:0.7.0": "patch:@wyw-in-js/transform@npm%3A0.7.0#~/.yarn/patches/@wyw-in-js-transform-npm-0.7.0-ba641dc99f.patch"
|
||||
"@wyw-in-js/transform@npm:0.7.0": "patch:@wyw-in-js/transform@npm%3A0.7.0#~/.yarn/patches/@wyw-in-js-transform-npm-0.7.0-ba641dc99f.patch",
|
||||
"@opentelemetry/api": "1.9.1"
|
||||
},
|
||||
"version": "0.2.1",
|
||||
"nx": {},
|
||||
@@ -203,7 +51,6 @@
|
||||
"packages/twenty-ui",
|
||||
"packages/twenty-utils",
|
||||
"packages/twenty-zapier",
|
||||
"packages/twenty-website",
|
||||
"packages/twenty-website-new",
|
||||
"packages/twenty-docs",
|
||||
"packages/twenty-e2e-testing",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div align="center">
|
||||
<a href="https://twenty.com">
|
||||
<picture>
|
||||
<img alt="Twenty logo" src="https://raw.githubusercontent.com/twentyhq/twenty/2f25922f4cd5bd61e1427c57c4f8ea224e1d552c/packages/twenty-website/public/images/core/logo.svg" height="128">
|
||||
<img alt="Twenty logo" src="https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-website-new/public/images/core/logo.svg" height="128">
|
||||
</picture>
|
||||
</a>
|
||||
<h1>Create Twenty App</h1>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "create-twenty-app",
|
||||
"version": "2.1.0",
|
||||
"version": "2.3.0",
|
||||
"description": "Command-line interface to create Twenty application",
|
||||
"main": "dist/cli.cjs",
|
||||
"bin": "dist/cli.cjs",
|
||||
@@ -40,12 +40,17 @@
|
||||
"uuid": "^13.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/core": "^1.15.11",
|
||||
"@swc/jest": "^0.2.39",
|
||||
"@types/fs-extra": "^11.0.0",
|
||||
"@types/inquirer": "^9.0.0",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/lodash.camelcase": "^4.3.7",
|
||||
"@types/lodash.kebabcase": "^4.1.7",
|
||||
"@types/lodash.startcase": "^4",
|
||||
"@types/node": "^20.0.0",
|
||||
"jest": "29.7.0",
|
||||
"jest-environment-node": "^29.4.1",
|
||||
"twenty-shared": "workspace:*",
|
||||
"typescript": "^5.9.2",
|
||||
"vite": "^7.0.0",
|
||||
|
||||
@@ -26,6 +26,7 @@ const program = new Command(packageJson.name)
|
||||
'--skip-local-instance',
|
||||
'Skip the local Twenty instance setup prompt',
|
||||
)
|
||||
.option('-y, --yes', 'Auto-confirm prompts (e.g. start existing container)')
|
||||
.helpOption('-h, --help', 'Display this help message.')
|
||||
.action(
|
||||
async (
|
||||
@@ -36,6 +37,7 @@ const program = new Command(packageJson.name)
|
||||
displayName?: string;
|
||||
description?: string;
|
||||
skipLocalInstance?: boolean;
|
||||
yes?: boolean;
|
||||
},
|
||||
) => {
|
||||
if (directory && !/^[a-z0-9-]+$/.test(directory)) {
|
||||
@@ -59,6 +61,7 @@ const program = new Command(packageJson.name)
|
||||
displayName: options?.displayName,
|
||||
description: options?.description,
|
||||
skipLocalInstance: options?.skipLocalInstance,
|
||||
yes: options?.yes,
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
@@ -11,7 +11,9 @@ import * as path from 'path';
|
||||
import { basename } from 'path';
|
||||
import {
|
||||
authLoginOAuth,
|
||||
checkDockerRunning,
|
||||
ConfigService,
|
||||
containerExists,
|
||||
detectLocalServer,
|
||||
serverStart,
|
||||
type ServerStartResult,
|
||||
@@ -27,6 +29,7 @@ type CreateAppOptions = {
|
||||
displayName?: string;
|
||||
description?: string;
|
||||
skipLocalInstance?: boolean;
|
||||
yes?: boolean;
|
||||
};
|
||||
|
||||
export class CreateAppCommand {
|
||||
@@ -71,7 +74,7 @@ export class CreateAppCommand {
|
||||
let serverResult: ServerStartResult | undefined;
|
||||
|
||||
if (!options.skipLocalInstance) {
|
||||
const shouldStartServer = await this.shouldStartServer();
|
||||
const shouldStartServer = await this.shouldStartServer(options.yes);
|
||||
|
||||
if (shouldStartServer) {
|
||||
const startResult = await serverStart({
|
||||
@@ -223,13 +226,35 @@ export class CreateAppCommand {
|
||||
);
|
||||
}
|
||||
|
||||
private async shouldStartServer(): Promise<boolean> {
|
||||
private async shouldStartServer(autoConfirm?: boolean): Promise<boolean> {
|
||||
const existingServerUrl = await detectLocalServer();
|
||||
|
||||
if (existingServerUrl) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (checkDockerRunning() && containerExists()) {
|
||||
if (autoConfirm) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const { startExisting } = await inquirer.prompt([
|
||||
{
|
||||
type: 'confirm',
|
||||
name: 'startExisting',
|
||||
message:
|
||||
'An existing Twenty server container was found. Would you like to start it?',
|
||||
default: true,
|
||||
},
|
||||
]);
|
||||
|
||||
return startExisting;
|
||||
}
|
||||
|
||||
if (autoConfirm) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const { startDocker } = await inquirer.prompt([
|
||||
{
|
||||
type: 'confirm',
|
||||
|
||||
@@ -56,7 +56,7 @@ export default definePageLayout({
|
||||
title: 'PRs Merged This Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: PULL_REQUEST_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 0, ...COL_1, rowSpan: 3 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 0, ...COL_1, rowSpan: 3 },
|
||||
configuration: {
|
||||
configurationType: 'AGGREGATE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -84,7 +84,7 @@ export default definePageLayout({
|
||||
title: 'PR Reviews This Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: PULL_REQUEST_REVIEW_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 3, ...COL_1, rowSpan: 3 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 3, ...COL_1, rowSpan: 3 },
|
||||
configuration: {
|
||||
configurationType: 'AGGREGATE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -112,7 +112,7 @@ export default definePageLayout({
|
||||
title: 'PRs Opened This Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: PULL_REQUEST_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 6, ...COL_1, rowSpan: 3 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 6, ...COL_1, rowSpan: 3 },
|
||||
configuration: {
|
||||
configurationType: 'AGGREGATE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -140,7 +140,7 @@ export default definePageLayout({
|
||||
title: 'Issues Opened This Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: ISSUE_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 9, ...COL_1, rowSpan: 3 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 9, ...COL_1, rowSpan: 3 },
|
||||
configuration: {
|
||||
configurationType: 'AGGREGATE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -168,7 +168,7 @@ export default definePageLayout({
|
||||
title: 'PRs by State',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: PULL_REQUEST_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 12, ...COL_1, rowSpan: 6 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 12, ...COL_1, rowSpan: 6 },
|
||||
configuration: {
|
||||
configurationType: 'PIE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -187,7 +187,7 @@ export default definePageLayout({
|
||||
title: 'PRs Merged per Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: PULL_REQUEST_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 0, ...COL_2, rowSpan: 6 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 0, ...COL_2, rowSpan: 6 },
|
||||
configuration: {
|
||||
configurationType: 'BAR_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -210,7 +210,7 @@ export default definePageLayout({
|
||||
title: 'PR Reviews per Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: PULL_REQUEST_REVIEW_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 6, ...COL_2, rowSpan: 6 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 6, ...COL_2, rowSpan: 6 },
|
||||
configuration: {
|
||||
configurationType: 'BAR_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -233,7 +233,7 @@ export default definePageLayout({
|
||||
title: 'Issues per Week',
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier: ISSUE_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 12, ...COL_2, rowSpan: 6 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 12, ...COL_2, rowSpan: 6 },
|
||||
configuration: {
|
||||
configurationType: 'BAR_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -257,7 +257,7 @@ export default definePageLayout({
|
||||
universalIdentifier: '7b3e9c4a-1d52-4f8b-ac76-3e5b8d2f1a9c',
|
||||
title: 'Top PR Authors',
|
||||
type: 'FRONT_COMPONENT',
|
||||
gridPosition: { row: 0, ...COL_3, rowSpan: 9 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 0, ...COL_3, rowSpan: 9 },
|
||||
configuration: {
|
||||
configurationType: 'FRONT_COMPONENT',
|
||||
frontComponentUniversalIdentifier:
|
||||
@@ -268,7 +268,7 @@ export default definePageLayout({
|
||||
universalIdentifier: '5e4a8c1d-7f93-4b2e-9d6c-3a8f1b5e7d4c',
|
||||
title: 'Top Reviewers',
|
||||
type: 'FRONT_COMPONENT',
|
||||
gridPosition: { row: 9, ...COL_3, rowSpan: 9 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.GRID, row: 9, ...COL_3, rowSpan: 9 },
|
||||
configuration: {
|
||||
configurationType: 'FRONT_COMPONENT',
|
||||
frontComponentUniversalIdentifier:
|
||||
|
||||
@@ -8,7 +8,6 @@ export default defineApplication({
|
||||
universalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
|
||||
displayName: 'Postcard App',
|
||||
description: 'Send postcards easily with Twenty',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -4,6 +4,5 @@ export default defineApplication({
|
||||
universalIdentifier: 'e1e2e3e4-e5e6-4000-8000-000000000001',
|
||||
displayName: 'Root App',
|
||||
description: 'An app with all entities at root level',
|
||||
icon: 'IconFolder',
|
||||
defaultRoleUniversalIdentifier: 'e1e2e3e4-e5e6-4000-8000-000000000002',
|
||||
});
|
||||
|
||||
@@ -5,7 +5,6 @@ export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
displayName: 'Rich App',
|
||||
description: 'A simple rich app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -30,31 +30,31 @@ export default defineView({
|
||||
],
|
||||
groups: [
|
||||
{
|
||||
universalIdentifier: 'bg1a2b3c-0001-4a7b-8c9d-0e1f2a3b4c5d',
|
||||
universalIdentifier: 'e9ed34f1-3c3d-41b1-869b-00aae0033d9c',
|
||||
fieldValue: 'DRAFT',
|
||||
position: 0,
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
universalIdentifier: 'bg1a2b3c-0002-4a7b-8c9d-0e1f2a3b4c5d',
|
||||
universalIdentifier: '19b1a3c1-53f0-4d32-b072-d645dac98e38',
|
||||
fieldValue: 'SENT',
|
||||
position: 1,
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
universalIdentifier: 'bg1a2b3c-0003-4a7b-8c9d-0e1f2a3b4c5d',
|
||||
universalIdentifier: 'f545cb5a-370d-423f-9b4e-278a9a465bdf',
|
||||
fieldValue: 'DELIVERED',
|
||||
position: 2,
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
universalIdentifier: 'bg1a2b3c-0004-4a7b-8c9d-0e1f2a3b4c5d',
|
||||
universalIdentifier: '5d4c6d5f-af53-4cd0-a843-df38915561b2',
|
||||
fieldValue: 'RETURNED',
|
||||
position: 3,
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
universalIdentifier: 'bg1a2b3c-0005-4a7b-8c9d-0e1f2a3b4c5d',
|
||||
universalIdentifier: '5ebbd7dc-9939-4594-b2a0-519269b4531f',
|
||||
fieldValue: 'LOST',
|
||||
position: 4,
|
||||
isVisible: true,
|
||||
|
||||
@@ -28,7 +28,7 @@ export default definePageLayout({
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier:
|
||||
CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 0, column: 0, rowSpan: 2, columnSpan: 3 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'AGGREGATE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -43,7 +43,7 @@ export default definePageLayout({
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier:
|
||||
CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 0, column: 3, rowSpan: 6, columnSpan: 4 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'PIE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -64,7 +64,7 @@ export default definePageLayout({
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier:
|
||||
CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 0, column: 7, rowSpan: 6, columnSpan: 5 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'BAR_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
@@ -85,7 +85,7 @@ export default definePageLayout({
|
||||
type: 'GRAPH',
|
||||
objectUniversalIdentifier:
|
||||
CALL_RECORDING_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
gridPosition: { row: 6, column: 0, rowSpan: 6, columnSpan: 12 },
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'LINE_CHART',
|
||||
aggregateFieldMetadataUniversalIdentifier:
|
||||
|
||||
@@ -20,6 +20,7 @@ export default definePageLayout({
|
||||
universalIdentifier: 'e5c93fce-76b4-41e9-9c5d-9b17e034366c',
|
||||
title: 'Summary',
|
||||
type: 'FRONT_COMPONENT',
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'FRONT_COMPONENT',
|
||||
frontComponentUniversalIdentifier:
|
||||
@@ -39,6 +40,7 @@ export default definePageLayout({
|
||||
universalIdentifier: 'd5a9f3b7-4e82-4c06-9f1d-2b0a7e6c8d45',
|
||||
title: 'Media Player',
|
||||
type: 'FRONT_COMPONENT',
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'FRONT_COMPONENT',
|
||||
frontComponentUniversalIdentifier:
|
||||
@@ -58,6 +60,7 @@ export default definePageLayout({
|
||||
universalIdentifier: '23c87a9c-25e3-4e83-84d9-02fb1a6fde76',
|
||||
title: 'Timeline',
|
||||
type: 'TIMELINE',
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'TIMELINE',
|
||||
},
|
||||
@@ -75,6 +78,7 @@ export default definePageLayout({
|
||||
universalIdentifier: 'ae93482f-384f-42a8-9c06-6bc14b10da6a',
|
||||
title: 'Tasks',
|
||||
type: 'TASKS',
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'TASKS',
|
||||
},
|
||||
@@ -92,6 +96,7 @@ export default definePageLayout({
|
||||
universalIdentifier: 'e2b6a0c4-1f59-4d73-a684-9c7b4f3d5e12',
|
||||
title: 'Notes',
|
||||
type: 'NOTES',
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'NOTES',
|
||||
},
|
||||
@@ -109,6 +114,7 @@ export default definePageLayout({
|
||||
universalIdentifier: 'a17bf74a-a7ff-48a0-8628-3fd905539c8d',
|
||||
title: 'Files',
|
||||
type: 'FILES',
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
configuration: {
|
||||
configurationType: 'FILES',
|
||||
},
|
||||
|
||||
@@ -29,12 +29,7 @@ export default definePageLayout({
|
||||
frontComponentUniversalIdentifier:
|
||||
RESEND_SYNC_STATUS_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER,
|
||||
},
|
||||
gridPosition: {
|
||||
row: 0,
|
||||
column: 0,
|
||||
rowSpan: 12,
|
||||
columnSpan: 12,
|
||||
},
|
||||
position: { layoutMode: PageLayoutTabLayoutMode.CANVAS },
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
||||
"plugins": ["typescript"],
|
||||
"categories": {
|
||||
"correctness": "off"
|
||||
},
|
||||
"ignorePatterns": ["node_modules", "dist"],
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
|
||||
"typescript/no-unused-vars": [
|
||||
"warn",
|
||||
{
|
||||
"argsIgnorePattern": "^_"
|
||||
}
|
||||
],
|
||||
"typescript/no-explicit-any": "off"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
# Linear for Twenty
|
||||
|
||||
Connect your Linear account to Twenty to create issues and look up teams
|
||||
straight from your workflows or the AI chat.
|
||||
|
||||
## What you can do
|
||||
|
||||
Once installed and connected, two tools become available:
|
||||
|
||||
- **Create Linear issue** — from the AI chat, ask something like
|
||||
*"create a Linear issue in the Engineering team titled 'Fix login bug'"*
|
||||
and the AI will file it for you. From a workflow, add it as a step
|
||||
with `teamId` + `title` (and optional `description`).
|
||||
- **List Linear teams** — discovers the teams in your Linear workspace,
|
||||
useful when you need to pick a `teamId` for the create-issue step.
|
||||
|
||||
## Installing
|
||||
|
||||
1. Open **Settings → Applications** in your Twenty workspace.
|
||||
2. Find **Linear** in the available apps and click **Install**.
|
||||
3. Open the app, go to the **Connections** tab, and click **Add connection**.
|
||||
4. Choose **Just for me** (your personal Linear account) or
|
||||
**Workspace shared** (a team-managed Linear account anyone in this
|
||||
workspace can act through), then complete the Linear sign-in.
|
||||
|
||||
That's it — you can now use the tools above.
|
||||
|
||||
> If you see a "Linear OAuth is not yet set up by your server administrator"
|
||||
> notice on the Connections tab, ask your Twenty admin to follow the
|
||||
> **Self-hosting setup** below — they need to provide the OAuth credentials
|
||||
> before connections can be added.
|
||||
|
||||
---
|
||||
|
||||
## Self-hosting setup
|
||||
|
||||
This section is for Twenty server admins. If you're on Twenty Cloud, skip
|
||||
this — the OAuth credentials are already configured.
|
||||
|
||||
### 1. Register an OAuth app in Linear
|
||||
|
||||
1. Visit https://linear.app/settings/api/applications/new.
|
||||
2. Set the **Redirect URI** to `<SERVER_URL>/apps/oauth/callback` (for
|
||||
local dev: `http://localhost:3000/apps/oauth/callback`).
|
||||
3. Copy the generated **Client ID** and **Client Secret**.
|
||||
|
||||
### 2. Wire the credentials into Twenty
|
||||
|
||||
1. In **Settings → Applications**, find **Linear**, click into it, and go
|
||||
to the **Application registration** tab (admin-only).
|
||||
2. Paste your Linear **Client ID** into `LINEAR_CLIENT_ID` and the
|
||||
**Client Secret** into `LINEAR_CLIENT_SECRET`.
|
||||
|
||||
Workspace users will now be able to add Linear connections from the
|
||||
**Connections** tab as described above.
|
||||
|
||||
### 3. (Developers only) Building the app from source
|
||||
|
||||
If you're working on this app rather than installing the published version:
|
||||
|
||||
```bash
|
||||
cd packages/twenty-apps/internal/twenty-linear
|
||||
|
||||
# For day-to-day development (publish + install + watch in one):
|
||||
yarn twenty dev
|
||||
|
||||
# Manual publish flow (deploy registers the app, install activates it):
|
||||
yarn twenty deploy
|
||||
yarn twenty install
|
||||
```
|
||||
|
||||
`twenty dev` is recommended for iteration — it publishes, installs, and
|
||||
watches for changes in one command. Use `twenty deploy` + `twenty install`
|
||||
when you want to control each step separately (e.g. deploying to a
|
||||
production server without auto-installing).
|
||||
|
||||
This serves as the reference implementation for Twenty's
|
||||
`defineConnectionProvider({ type: 'oauth' })` flow — useful as a template
|
||||
when adding OAuth integrations for other providers.
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "twenty-linear",
|
||||
"version": "0.1.5",
|
||||
"description": "Linear integration for Twenty. Connect a user's Linear account and create issues from logic functions.",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"npm": "please-use-yarn",
|
||||
"yarn": ">=4.0.2"
|
||||
},
|
||||
"keywords": [
|
||||
"twenty-app"
|
||||
],
|
||||
"packageManager": "yarn@4.9.2",
|
||||
"scripts": {
|
||||
"twenty": "twenty",
|
||||
"lint": "oxlint -c .oxlintrc.json .",
|
||||
"lint:fix": "oxlint --fix -c .oxlintrc.json .",
|
||||
"test": "vitest run --config vitest.unit.config.ts",
|
||||
"test:watch": "vitest --config vitest.unit.config.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"twenty-sdk": "2.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.7.2",
|
||||
"oxlint": "^0.16.0",
|
||||
"typescript": "^5.9.3",
|
||||
"vite-tsconfig-paths": "^4.3.2",
|
||||
"vitest": "^3.1.1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg fill="#5E6AD2" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linear</title><path d="M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z"/></svg>
|
||||
|
After Width: | Height: | Size: 469 B |
@@ -0,0 +1,32 @@
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
import {
|
||||
APPLICATION_UNIVERSAL_IDENTIFIER,
|
||||
DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
} from 'src/constants/universal-identifiers';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
|
||||
displayName: 'Linear',
|
||||
description:
|
||||
'Connect Linear to Twenty. Each workspace member connects their own Linear account; logic functions can then create issues and read team data on their behalf.',
|
||||
logoUrl: 'public/linear-logomark.svg',
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
// OAuth client_id/secret live at the registration level (one OAuth app per
|
||||
// Twenty server, configured by the server admin) — not per-workspace —
|
||||
// so they're declared as serverVariables, not applicationVariables.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description:
|
||||
'OAuth client ID from your Linear OAuth application (linear.app/settings/api/applications).',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description:
|
||||
'OAuth client secret from your Linear OAuth application. Stored encrypted; never exposed in API responses.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
import { LINEAR_CONNECTION_PROVIDER_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: LINEAR_CONNECTION_PROVIDER_UNIVERSAL_IDENTIFIER,
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
revokeEndpoint: 'https://api.linear.app/oauth/revoke',
|
||||
scopes: ['read', 'write'],
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Linear supports PKCE but doesn't require it for confidential clients.
|
||||
// Disabled to keep the test surface minimal.
|
||||
usePkce: false,
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
// Group all universal identifiers in a single file. Per the codebase
|
||||
// convention (see twenty-for-twenty), closely-related constants live
|
||||
// together so the rest of the app's source files can stay at one
|
||||
// `export default` per file.
|
||||
|
||||
export const APPLICATION_UNIVERSAL_IDENTIFIER =
|
||||
'6f4e7c2a-3d8e-4a91-b2cf-9e0b8d5f4a2e';
|
||||
|
||||
export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =
|
||||
'b6c33347-e41c-4b90-8a37-7b3c49baa85a';
|
||||
|
||||
export const LINEAR_CONNECTION_PROVIDER_UNIVERSAL_IDENTIFIER =
|
||||
'9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f';
|
||||
|
||||
export const CREATE_LINEAR_ISSUE_UNIVERSAL_IDENTIFIER =
|
||||
'01f829c9-1661-41fa-9ee1-b67e64716c2e';
|
||||
|
||||
export const LIST_LINEAR_TEAMS_UNIVERSAL_IDENTIFIER =
|
||||
'15824bbc-9c64-4f97-b45f-d0a44b402bb8';
|
||||
@@ -0,0 +1,126 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { createLinearIssueHandler } from '../handlers/create-linear-issue-handler';
|
||||
|
||||
import { buildConnection, stubConnectionsThenLinear } from './test-utils';
|
||||
|
||||
const SAVED_ENV = { ...process.env };
|
||||
|
||||
describe('createLinearIssueHandler', () => {
|
||||
beforeEach(() => {
|
||||
process.env.TWENTY_API_URL = 'http://api.test';
|
||||
process.env.TWENTY_APP_ACCESS_TOKEN = 'app-token';
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
process.env = { ...SAVED_ENV };
|
||||
vi.unstubAllGlobals();
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
it('returns an error when required input fields are missing', async () => {
|
||||
const result = await createLinearIssueHandler({ title: 'no team' });
|
||||
|
||||
expect(result).toMatchObject({
|
||||
success: false,
|
||||
error: expect.stringContaining('teamId'),
|
||||
});
|
||||
});
|
||||
|
||||
it('returns an error when no Linear connection exists', async () => {
|
||||
stubConnectionsThenLinear([], {});
|
||||
|
||||
const result = await createLinearIssueHandler({
|
||||
teamId: 'team_1',
|
||||
title: 'hi',
|
||||
});
|
||||
|
||||
expect(result).toMatchObject({
|
||||
success: false,
|
||||
error: expect.stringContaining('not connected'),
|
||||
});
|
||||
});
|
||||
|
||||
it('calls Linear with the only available connection and returns the issue', async () => {
|
||||
const issue = {
|
||||
id: 'issue_1',
|
||||
identifier: 'TEAM-1',
|
||||
title: 'Hello from Twenty',
|
||||
url: 'https://linear.app/twenty/issue/TEAM-1',
|
||||
};
|
||||
|
||||
const fetchMock = stubConnectionsThenLinear([buildConnection()], {
|
||||
data: { issueCreate: { success: true, issue } },
|
||||
});
|
||||
|
||||
const result = await createLinearIssueHandler({
|
||||
teamId: 'team_1',
|
||||
title: 'Hello from Twenty',
|
||||
description: 'Body',
|
||||
});
|
||||
|
||||
expect(result).toEqual({ success: true, issue });
|
||||
|
||||
const [url, init] = fetchMock.mock.calls[1];
|
||||
|
||||
expect(url).toBe('https://api.linear.app/graphql');
|
||||
expect(init.headers.Authorization).toBe('Bearer lin_test_access_token');
|
||||
expect(JSON.parse(init.body as string).variables.input).toEqual({
|
||||
teamId: 'team_1',
|
||||
title: 'Hello from Twenty',
|
||||
description: 'Body',
|
||||
});
|
||||
});
|
||||
|
||||
it('prefers a workspace-shared connection over a user-visibility one', async () => {
|
||||
const userConnection = buildConnection({
|
||||
id: 'conn_user',
|
||||
accessToken: 'lin_user',
|
||||
});
|
||||
const sharedConnection = buildConnection({
|
||||
id: 'conn_shared',
|
||||
visibility: 'workspace',
|
||||
accessToken: 'lin_shared',
|
||||
});
|
||||
|
||||
const fetchMock = stubConnectionsThenLinear(
|
||||
[userConnection, sharedConnection],
|
||||
{
|
||||
data: {
|
||||
issueCreate: {
|
||||
success: true,
|
||||
issue: {
|
||||
id: 'issue_2',
|
||||
identifier: 'T-2',
|
||||
title: 'Hi',
|
||||
url: 'https://linear.app/x/T-2',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
const result = await createLinearIssueHandler({
|
||||
teamId: 'team_1',
|
||||
title: 'Hi',
|
||||
});
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
expect(fetchMock.mock.calls[1][1].headers.Authorization).toBe(
|
||||
'Bearer lin_shared',
|
||||
);
|
||||
});
|
||||
|
||||
it('surfaces Linear GraphQL errors as the handler error', async () => {
|
||||
stubConnectionsThenLinear([buildConnection()], {
|
||||
errors: [{ message: 'Invalid teamId' }],
|
||||
});
|
||||
|
||||
const result = await createLinearIssueHandler({
|
||||
teamId: 'bogus',
|
||||
title: 'hi',
|
||||
});
|
||||
|
||||
expect(result).toEqual({ success: false, error: 'Invalid teamId' });
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,56 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { listLinearTeamsHandler } from '../handlers/list-linear-teams-handler';
|
||||
|
||||
import { buildConnection, stubConnectionsThenLinear } from './test-utils';
|
||||
|
||||
const SAVED_ENV = { ...process.env };
|
||||
|
||||
describe('listLinearTeamsHandler', () => {
|
||||
beforeEach(() => {
|
||||
process.env.TWENTY_API_URL = 'http://api.test';
|
||||
process.env.TWENTY_APP_ACCESS_TOKEN = 'app-token';
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
process.env = { ...SAVED_ENV };
|
||||
vi.unstubAllGlobals();
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
it('returns the teams when the Linear query succeeds', async () => {
|
||||
const teams = [
|
||||
{ id: 'team_1', name: 'Engineering', key: 'ENG' },
|
||||
{ id: 'team_2', name: 'Design', key: 'DES' },
|
||||
];
|
||||
|
||||
const fetchMock = stubConnectionsThenLinear([buildConnection()], {
|
||||
data: { teams: { nodes: teams } },
|
||||
});
|
||||
|
||||
const result = await listLinearTeamsHandler();
|
||||
|
||||
expect(result).toEqual({ success: true, teams });
|
||||
expect(fetchMock.mock.calls[1][1].headers.Authorization).toBe(
|
||||
'Bearer lin_test_access_token',
|
||||
);
|
||||
});
|
||||
|
||||
it('returns success=false when no Linear connection exists', async () => {
|
||||
stubConnectionsThenLinear([], { data: { teams: { nodes: [] } } });
|
||||
|
||||
const result = await listLinearTeamsHandler();
|
||||
|
||||
expect(result.success).toBe(false);
|
||||
});
|
||||
|
||||
it('surfaces Linear errors', async () => {
|
||||
stubConnectionsThenLinear([buildConnection()], {
|
||||
errors: [{ message: 'rate limited' }],
|
||||
});
|
||||
|
||||
const result = await listLinearTeamsHandler();
|
||||
|
||||
expect(result).toEqual({ success: false, error: 'rate limited' });
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { vi } from 'vitest';
|
||||
|
||||
export const USER_WORKSPACE_ID = '11111111-1111-1111-1111-111111111111';
|
||||
|
||||
export const buildConnection = (
|
||||
overrides: Partial<Record<string, unknown>> = {},
|
||||
) => ({
|
||||
id: 'conn_1',
|
||||
name: 'octocat@example.com',
|
||||
visibility: 'user' as const,
|
||||
providerName: 'linear',
|
||||
userWorkspaceId: USER_WORKSPACE_ID,
|
||||
accessToken: 'lin_test_access_token',
|
||||
scopes: ['read', 'write'],
|
||||
handle: 'octocat@example.com',
|
||||
lastRefreshedAt: '2024-01-01T00:00:00.000Z',
|
||||
authFailedAt: null,
|
||||
...overrides,
|
||||
});
|
||||
|
||||
// Stubs `fetch` to first answer the SDK's `/apps/connections/list` call, then
|
||||
// the handler's downstream Linear GraphQL request.
|
||||
export const stubConnectionsThenLinear = (
|
||||
connections: ReturnType<typeof buildConnection>[],
|
||||
linearJson: unknown,
|
||||
) => {
|
||||
const fetchMock = vi.fn(async (url: string) => {
|
||||
if (url.endsWith('/apps/connections/list')) {
|
||||
return {
|
||||
ok: true,
|
||||
status: 200,
|
||||
json: async () => connections,
|
||||
text: async () => JSON.stringify(connections),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
ok: true,
|
||||
status: 200,
|
||||
json: async () => linearJson,
|
||||
text: async () => JSON.stringify(linearJson),
|
||||
};
|
||||
});
|
||||
|
||||
vi.stubGlobal('fetch', fetchMock);
|
||||
|
||||
return fetchMock;
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
export const ISSUE_CREATE_MUTATION = `
|
||||
mutation IssueCreate($input: IssueCreateInput!) {
|
||||
issueCreate(input: $input) {
|
||||
success
|
||||
issue { id identifier title url }
|
||||
}
|
||||
}
|
||||
`;
|
||||
@@ -0,0 +1,33 @@
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
|
||||
import { CREATE_LINEAR_ISSUE_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
|
||||
import { createLinearIssueHandler } from 'src/logic-functions/handlers/create-linear-issue-handler';
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: CREATE_LINEAR_ISSUE_UNIVERSAL_IDENTIFIER,
|
||||
name: 'create-linear-issue',
|
||||
description:
|
||||
'Create a Linear issue on behalf of the connected user. Requires a teamId (call list-linear-teams to discover one) and a title.',
|
||||
timeoutSeconds: 30,
|
||||
handler: createLinearIssueHandler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
teamId: {
|
||||
type: 'string',
|
||||
description:
|
||||
'The Linear team ID to create the issue in. Use list-linear-teams to discover available teams.',
|
||||
},
|
||||
title: {
|
||||
type: 'string',
|
||||
description: 'The issue title.',
|
||||
},
|
||||
description: {
|
||||
type: 'string',
|
||||
description: 'Optional issue description (Markdown supported).',
|
||||
},
|
||||
},
|
||||
required: ['teamId', 'title'],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,73 @@
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
import { ISSUE_CREATE_MUTATION } from 'src/logic-functions/constants/issue-create-mutation.constant';
|
||||
import { type CreateIssueInput } from 'src/logic-functions/types/create-issue-input.type';
|
||||
import { type CreateIssueMutationResult } from 'src/logic-functions/types/create-issue-mutation-result.type';
|
||||
import { callLinearGraphQL } from 'src/logic-functions/utils/call-linear-graphql';
|
||||
|
||||
type HandlerResult =
|
||||
| {
|
||||
success: true;
|
||||
issue: {
|
||||
id: string;
|
||||
identifier: string;
|
||||
title: string;
|
||||
url: string;
|
||||
};
|
||||
}
|
||||
| { success: false; error: string };
|
||||
|
||||
export const createLinearIssueHandler = async (
|
||||
input: CreateIssueInput,
|
||||
): Promise<HandlerResult> => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Both `teamId` and `title` are required.',
|
||||
};
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
// Workspace-shared credentials win when present (a team-managed service
|
||||
// account); otherwise fall back to the first user-scoped connection.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection" first.',
|
||||
};
|
||||
}
|
||||
|
||||
const result = await callLinearGraphQL<CreateIssueMutationResult>({
|
||||
accessToken: connection.accessToken,
|
||||
query: ISSUE_CREATE_MUTATION,
|
||||
variables: {
|
||||
input: {
|
||||
teamId: input.teamId,
|
||||
title: input.title,
|
||||
description: input.description,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (result.errors || !result.data) {
|
||||
return {
|
||||
success: false,
|
||||
error: result.errors?.[0]?.message ?? 'Unknown Linear API error',
|
||||
};
|
||||
}
|
||||
|
||||
const { success, issue } = result.data.issueCreate;
|
||||
|
||||
if (!success || !issue) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Linear reported the mutation as unsuccessful.',
|
||||
};
|
||||
}
|
||||
|
||||
return { success: true, issue };
|
||||
};
|
||||
@@ -0,0 +1,49 @@
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
import { callLinearGraphQL } from 'src/logic-functions/utils/call-linear-graphql';
|
||||
|
||||
type LinearTeam = {
|
||||
id: string;
|
||||
name: string;
|
||||
key: string;
|
||||
};
|
||||
|
||||
type TeamsQueryResult = {
|
||||
teams: { nodes: LinearTeam[] };
|
||||
};
|
||||
|
||||
type HandlerResult =
|
||||
| { success: true; teams: LinearTeam[] }
|
||||
| { success: false; error: string };
|
||||
|
||||
export const listLinearTeamsHandler = async (): Promise<HandlerResult> => {
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection" first.',
|
||||
};
|
||||
}
|
||||
|
||||
const result = await callLinearGraphQL<TeamsQueryResult>({
|
||||
accessToken: connection.accessToken,
|
||||
query: `
|
||||
query Teams {
|
||||
teams { nodes { id name key } }
|
||||
}
|
||||
`,
|
||||
});
|
||||
|
||||
if (result.errors || !result.data) {
|
||||
return {
|
||||
success: false,
|
||||
error: result.errors?.[0]?.message ?? 'Unknown Linear API error',
|
||||
};
|
||||
}
|
||||
|
||||
return { success: true, teams: result.data.teams.nodes };
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
|
||||
import { LIST_LINEAR_TEAMS_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
|
||||
import { listLinearTeamsHandler } from 'src/logic-functions/handlers/list-linear-teams-handler';
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: LIST_LINEAR_TEAMS_UNIVERSAL_IDENTIFIER,
|
||||
name: 'list-linear-teams',
|
||||
description:
|
||||
"Returns the connected user's Linear teams. Useful for picking a teamId to pass to create-linear-issue.",
|
||||
timeoutSeconds: 15,
|
||||
handler: listLinearTeamsHandler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {},
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,5 @@
|
||||
export type CreateIssueInput = {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
description?: string;
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
export type CreateIssueMutationResult = {
|
||||
issueCreate: {
|
||||
success: boolean;
|
||||
issue: {
|
||||
id: string;
|
||||
identifier: string;
|
||||
title: string;
|
||||
url: string;
|
||||
} | null;
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,58 @@
|
||||
import { type LinearGraphQLResult } from 'src/logic-functions/utils/types/linear-graphql-result.type';
|
||||
|
||||
const LINEAR_GRAPHQL_ENDPOINT = 'https://api.linear.app/graphql';
|
||||
|
||||
export const callLinearGraphQL = async <TData>({
|
||||
accessToken,
|
||||
query,
|
||||
variables,
|
||||
}: {
|
||||
accessToken: string;
|
||||
query: string;
|
||||
variables?: Record<string, unknown>;
|
||||
}): Promise<LinearGraphQLResult<TData>> => {
|
||||
let response: Response;
|
||||
|
||||
try {
|
||||
response = await fetch(LINEAR_GRAPHQL_ENDPOINT, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${accessToken}`,
|
||||
},
|
||||
body: JSON.stringify({ query, variables }),
|
||||
});
|
||||
} catch (error) {
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
message: `Linear API request failed: ${(error as Error).message}`,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
if (!response.ok) {
|
||||
const text = await response.text().catch(() => '');
|
||||
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
message: `Linear API responded with ${response.status}: ${text.slice(0, 500)}`,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
return (await response.json()) as LinearGraphQLResult<TData>;
|
||||
} catch (error) {
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
message: `Linear API returned a non-JSON response: ${(error as Error).message}`,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
export type LinearGraphQLResult<TData> = {
|
||||
data?: TData;
|
||||
errors?: Array<{ message: string }>;
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
import { defineRole } from 'twenty-sdk/define';
|
||||
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
|
||||
|
||||
// The Linear logic functions never read workspace data — they only call
|
||||
// Linear's GraphQL API on behalf of the connected user.
|
||||
export default defineRole({
|
||||
universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
label: 'Linear function role',
|
||||
description: 'No-op role for Linear logic functions',
|
||||
canReadAllObjectRecords: false,
|
||||
canUpdateAllObjectRecords: false,
|
||||
canSoftDeleteAllObjectRecords: false,
|
||||
canDestroyAllObjectRecords: false,
|
||||
canUpdateAllSettings: false,
|
||||
canBeAssignedToAgents: false,
|
||||
canBeAssignedToUsers: false,
|
||||
canBeAssignedToApiKeys: false,
|
||||
objectPermissions: [],
|
||||
fieldPermissions: [],
|
||||
permissionFlags: [],
|
||||
});
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"compileOnSave": false,
|
||||
"compilerOptions": {
|
||||
"sourceMap": true,
|
||||
"declaration": true,
|
||||
"outDir": "./dist",
|
||||
"rootDir": ".",
|
||||
"moduleResolution": "bundler",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"importHelpers": true,
|
||||
"allowUnreachableCode": false,
|
||||
"strict": true,
|
||||
"alwaysStrict": true,
|
||||
"noImplicitAny": true,
|
||||
"strictBindCallApply": false,
|
||||
"target": "es2020",
|
||||
"module": "esnext",
|
||||
"lib": ["es2020"],
|
||||
"skipLibCheck": true,
|
||||
"skipDefaultLibCheck": true,
|
||||
"resolveJsonModule": true,
|
||||
"paths": {
|
||||
"src/*": ["./src/*"],
|
||||
"~/*": ["./*"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"types": ["vitest/globals", "node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import path from 'node:path';
|
||||
|
||||
import tsconfigPaths from 'vite-tsconfig-paths';
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
const TWENTY_SDK_SRC = path.resolve(
|
||||
__dirname,
|
||||
'../../../twenty-sdk/src/sdk',
|
||||
);
|
||||
|
||||
// twenty-sdk's `exports` map points at compiled `./dist/*`. Aliasing the
|
||||
// subpaths to source keeps unit tests self-contained — no `yarn build` in
|
||||
// twenty-sdk required before running them.
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
tsconfigPaths({
|
||||
projects: ['tsconfig.spec.json'],
|
||||
ignoreConfigErrors: true,
|
||||
}),
|
||||
],
|
||||
resolve: {
|
||||
alias: [
|
||||
{
|
||||
find: 'twenty-sdk/logic-function',
|
||||
replacement: path.join(TWENTY_SDK_SRC, 'logic-function/index.ts'),
|
||||
},
|
||||
{
|
||||
find: 'twenty-sdk/define',
|
||||
replacement: path.join(TWENTY_SDK_SRC, 'define/index.ts'),
|
||||
},
|
||||
// The SDK source uses `@/*` to refer to its own `src/`. Vitest
|
||||
// doesn't pick up the SDK's tsconfig path mapping when resolving
|
||||
// a different package, so map the alias here.
|
||||
{
|
||||
find: /^@\/(.*)$/,
|
||||
replacement: path.resolve(__dirname, '../../../twenty-sdk/src/$1'),
|
||||
},
|
||||
],
|
||||
},
|
||||
test: {
|
||||
include: ['src/**/*.test.ts'],
|
||||
},
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "twenty-client-sdk",
|
||||
"version": "2.1.0",
|
||||
"version": "2.3.0",
|
||||
"sideEffects": false,
|
||||
"license": "AGPL-3.0",
|
||||
"scripts": {
|
||||
@@ -46,6 +46,8 @@
|
||||
"graphql": "^16.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260116.1",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"twenty-shared": "workspace:*",
|
||||
"typescript": "^5.9.2",
|
||||
"vite": "^7.0.0",
|
||||
|
||||
@@ -580,6 +580,7 @@ type Application {
|
||||
id: UUID!
|
||||
name: String!
|
||||
description: String
|
||||
logo: String
|
||||
version: String
|
||||
universalIdentifier: String!
|
||||
packageJsonChecksum: String
|
||||
@@ -862,7 +863,6 @@ type User {
|
||||
firstName: String!
|
||||
lastName: String!
|
||||
email: String!
|
||||
defaultAvatarUrl: String
|
||||
isEmailVerified: Boolean!
|
||||
disabled: Boolean
|
||||
canImpersonate: Boolean!
|
||||
@@ -925,7 +925,7 @@ type PageLayoutWidget {
|
||||
title: String!
|
||||
type: WidgetType!
|
||||
objectMetadataId: UUID
|
||||
gridPosition: GridPosition! @deprecated(reason: "Use `position` instead. Will be removed in a future release.")
|
||||
gridPosition: GridPosition @deprecated(reason: "Use `position` instead. Will be removed in a future release.")
|
||||
position: PageLayoutWidgetPosition
|
||||
configuration: WidgetConfiguration!
|
||||
conditionalDisplay: JSON
|
||||
@@ -1292,6 +1292,20 @@ enum PageLayoutType {
|
||||
STANDALONE_PAGE
|
||||
}
|
||||
|
||||
type ApplicationConnectionProviderOAuthConfig {
|
||||
scopes: [String!]!
|
||||
isClientCredentialsConfigured: Boolean!
|
||||
}
|
||||
|
||||
type ApplicationConnectionProvider {
|
||||
id: UUID!
|
||||
applicationId: String!
|
||||
type: String!
|
||||
name: String!
|
||||
displayName: String!
|
||||
oauth: ApplicationConnectionProviderOAuthConfig
|
||||
}
|
||||
|
||||
type Analytics {
|
||||
"""Boolean that confirms query was dispatched"""
|
||||
success: Boolean!
|
||||
@@ -2202,7 +2216,6 @@ type MarketplaceApp {
|
||||
id: String!
|
||||
name: String!
|
||||
description: String!
|
||||
icon: String!
|
||||
author: String!
|
||||
category: String!
|
||||
logo: String
|
||||
@@ -2537,6 +2550,10 @@ type ConnectedAccountDTO {
|
||||
connectionParameters: ImapSmtpCaldavConnectionParameters
|
||||
lastSignedInAt: DateTime
|
||||
userWorkspaceId: UUID!
|
||||
connectionProviderId: UUID
|
||||
applicationId: UUID
|
||||
name: String
|
||||
visibility: String!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
}
|
||||
@@ -2564,6 +2581,10 @@ type ConnectedAccountPublicDTO {
|
||||
scopes: [String!]
|
||||
lastSignedInAt: DateTime
|
||||
userWorkspaceId: UUID!
|
||||
connectionProviderId: UUID
|
||||
applicationId: UUID
|
||||
name: String
|
||||
visibility: String!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
connectionParameters: PublicImapSmtpCaldavConnectionParameters
|
||||
@@ -2609,19 +2630,6 @@ type Skill {
|
||||
updatedAt: DateTime!
|
||||
}
|
||||
|
||||
type AgentChatThread {
|
||||
id: UUID!
|
||||
title: String
|
||||
totalInputTokens: Int!
|
||||
totalOutputTokens: Int!
|
||||
contextWindowTokens: Int
|
||||
conversationSize: Int!
|
||||
totalInputCredits: Float!
|
||||
totalOutputCredits: Float!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
}
|
||||
|
||||
type AgentMessage {
|
||||
id: UUID!
|
||||
threadId: UUID!
|
||||
@@ -2634,6 +2642,21 @@ type AgentMessage {
|
||||
createdAt: DateTime!
|
||||
}
|
||||
|
||||
type AgentChatThread {
|
||||
id: ID!
|
||||
title: String
|
||||
totalInputTokens: Int!
|
||||
totalOutputTokens: Int!
|
||||
contextWindowTokens: Int
|
||||
conversationSize: Int!
|
||||
totalInputCredits: Float!
|
||||
totalOutputCredits: Float!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
deletedAt: DateTime
|
||||
lastMessageAt: DateTime
|
||||
}
|
||||
|
||||
type AiSystemPromptSection {
|
||||
title: String!
|
||||
content: String!
|
||||
@@ -2661,22 +2684,6 @@ type AgentChatEvent {
|
||||
event: JSON!
|
||||
}
|
||||
|
||||
type AgentChatThreadEdge {
|
||||
"""The node containing the AgentChatThread"""
|
||||
node: AgentChatThread!
|
||||
|
||||
"""Cursor for this node."""
|
||||
cursor: ConnectionCursor!
|
||||
}
|
||||
|
||||
type AgentChatThreadConnection {
|
||||
"""Paging information"""
|
||||
pageInfo: PageInfo!
|
||||
|
||||
"""Array of edges."""
|
||||
edges: [AgentChatThreadEdge!]!
|
||||
}
|
||||
|
||||
type AgentTurnEvaluation {
|
||||
id: UUID!
|
||||
turnId: UUID!
|
||||
@@ -2863,6 +2870,7 @@ enum AllMetadataName {
|
||||
fieldPermission
|
||||
frontComponent
|
||||
webhook
|
||||
connectionProvider
|
||||
}
|
||||
|
||||
type MinimalObjectMetadata {
|
||||
@@ -2933,6 +2941,7 @@ type Query {
|
||||
getPageLayoutTab(id: String!): PageLayoutTab!
|
||||
getPageLayouts(objectMetadataId: String, pageLayoutType: PageLayoutType): [PageLayout!]!
|
||||
getPageLayout(id: String!): PageLayout
|
||||
applicationConnectionProviders(applicationId: UUID!): [ApplicationConnectionProvider!]!
|
||||
getPageLayoutWidgets(pageLayoutTabId: String!): [PageLayoutWidget!]!
|
||||
getPageLayoutWidget(id: String!): PageLayoutWidget!
|
||||
findOneLogicFunction(input: LogicFunctionIdInput!): LogicFunction!
|
||||
@@ -2993,22 +3002,13 @@ type Query {
|
||||
webhooks: [Webhook!]!
|
||||
webhook(id: UUID!): Webhook
|
||||
minimalMetadata: MinimalMetadata!
|
||||
chatThreads: [AgentChatThread!]!
|
||||
chatThread(id: UUID!): AgentChatThread!
|
||||
chatMessages(threadId: UUID!): [AgentMessage!]!
|
||||
chatStreamCatchupChunks(threadId: UUID!): ChatStreamCatchupChunks!
|
||||
getAiSystemPromptPreview: AiSystemPromptPreview!
|
||||
skills: [Skill!]!
|
||||
skill(id: UUID!): Skill
|
||||
chatThreads(
|
||||
"""Limit or page results."""
|
||||
paging: CursorPaging! = {first: 10}
|
||||
|
||||
"""Specify to filter the records returned."""
|
||||
filter: AgentChatThreadFilter! = {}
|
||||
|
||||
"""Specify to sort results."""
|
||||
sorting: [AgentChatThreadSort!]! = [{field: updatedAt, direction: DESC}]
|
||||
): AgentChatThreadConnection!
|
||||
agentTurns(agentId: UUID!): [AgentTurn!]!
|
||||
checkUserExists(email: String!, captchaToken: String): CheckUserExist!
|
||||
checkWorkspaceInviteHashIsValid(inviteHash: String!): WorkspaceInviteHashValid!
|
||||
@@ -3057,56 +3057,6 @@ input AgentIdInput {
|
||||
id: UUID!
|
||||
}
|
||||
|
||||
input AgentChatThreadFilter {
|
||||
and: [AgentChatThreadFilter!]
|
||||
or: [AgentChatThreadFilter!]
|
||||
id: UUIDFilterComparison
|
||||
updatedAt: DateFieldComparison
|
||||
}
|
||||
|
||||
input DateFieldComparison {
|
||||
is: Boolean
|
||||
isNot: Boolean
|
||||
eq: DateTime
|
||||
neq: DateTime
|
||||
gt: DateTime
|
||||
gte: DateTime
|
||||
lt: DateTime
|
||||
lte: DateTime
|
||||
in: [DateTime!]
|
||||
notIn: [DateTime!]
|
||||
between: DateFieldComparisonBetween
|
||||
notBetween: DateFieldComparisonBetween
|
||||
}
|
||||
|
||||
input DateFieldComparisonBetween {
|
||||
lower: DateTime!
|
||||
upper: DateTime!
|
||||
}
|
||||
|
||||
input AgentChatThreadSort {
|
||||
field: AgentChatThreadSortFields!
|
||||
direction: SortDirection!
|
||||
nulls: SortNulls
|
||||
}
|
||||
|
||||
enum AgentChatThreadSortFields {
|
||||
id
|
||||
updatedAt
|
||||
}
|
||||
|
||||
"""Sort Directions"""
|
||||
enum SortDirection {
|
||||
ASC
|
||||
DESC
|
||||
}
|
||||
|
||||
"""Sort Nulls Options"""
|
||||
enum SortNulls {
|
||||
NULLS_FIRST
|
||||
NULLS_LAST
|
||||
}
|
||||
|
||||
input EventLogQueryInput {
|
||||
table: EventLogTable!
|
||||
filters: EventLogFiltersInput
|
||||
@@ -3243,6 +3193,7 @@ type Mutation {
|
||||
resetPageLayoutToDefault(id: String!): PageLayout!
|
||||
resetPageLayoutWidgetToDefault(id: String!): PageLayoutWidget!
|
||||
resetPageLayoutTabToDefault(id: String!): PageLayoutTab!
|
||||
updateOneApplicationVariable(key: String!, value: String!, applicationId: UUID!): Boolean!
|
||||
createPageLayoutWidget(input: CreatePageLayoutWidgetInput!): PageLayoutWidget!
|
||||
updatePageLayoutWidget(id: String!, input: UpdatePageLayoutWidgetInput!): PageLayoutWidget!
|
||||
destroyPageLayoutWidget(id: String!): Boolean!
|
||||
@@ -3292,6 +3243,10 @@ type Mutation {
|
||||
createChatThread: AgentChatThread!
|
||||
sendChatMessage(threadId: UUID!, text: String!, messageId: UUID!, browsingContext: JSON, modelId: String, fileIds: [UUID!]): SendChatMessageResult!
|
||||
stopAgentChatStream(threadId: UUID!): Boolean!
|
||||
renameChatThread(id: UUID!, title: String!): AgentChatThread!
|
||||
archiveChatThread(id: UUID!): AgentChatThread!
|
||||
unarchiveChatThread(id: UUID!): AgentChatThread!
|
||||
deleteChatThread(id: UUID!): Boolean!
|
||||
deleteQueuedChatMessage(messageId: UUID!): Boolean!
|
||||
createSkill(input: CreateSkillInput!): Skill!
|
||||
updateSkill(input: UpdateSkillInput!): Skill!
|
||||
@@ -3341,7 +3296,6 @@ type Mutation {
|
||||
installApplication(appRegistrationId: String!, version: String): Boolean!
|
||||
runWorkspaceMigration(workspaceMigration: WorkspaceMigrationInput!): Boolean!
|
||||
uninstallApplication(universalIdentifier: String!): Boolean!
|
||||
updateOneApplicationVariable(key: String!, value: String!, applicationId: UUID!): Boolean!
|
||||
createOIDCIdentityProvider(input: SetupOIDCSsoInput!): SetupSso!
|
||||
createSAMLIdentityProvider(input: SetupSAMLSsoInput!): SetupSso!
|
||||
deleteSSOIdentityProvider(input: DeleteSsoInput!): DeleteSso!
|
||||
@@ -3783,7 +3737,7 @@ input UpdatePageLayoutWidgetWithIdInput {
|
||||
title: String!
|
||||
type: WidgetType!
|
||||
objectMetadataId: UUID
|
||||
gridPosition: GridPositionInput!
|
||||
gridPosition: GridPositionInput
|
||||
position: JSON
|
||||
configuration: JSON
|
||||
conditionalDisplay: JSON
|
||||
@@ -3802,7 +3756,7 @@ input CreatePageLayoutWidgetInput {
|
||||
title: String!
|
||||
type: WidgetType!
|
||||
objectMetadataId: UUID
|
||||
gridPosition: GridPositionInput!
|
||||
gridPosition: GridPositionInput
|
||||
position: JSON
|
||||
configuration: JSON!
|
||||
}
|
||||
|
||||
@@ -414,6 +414,7 @@ export interface Application {
|
||||
id: Scalars['UUID']
|
||||
name: Scalars['String']
|
||||
description?: Scalars['String']
|
||||
logo?: Scalars['String']
|
||||
version?: Scalars['String']
|
||||
universalIdentifier: Scalars['String']
|
||||
packageJsonChecksum?: Scalars['String']
|
||||
@@ -647,7 +648,6 @@ export interface User {
|
||||
firstName: Scalars['String']
|
||||
lastName: Scalars['String']
|
||||
email: Scalars['String']
|
||||
defaultAvatarUrl?: Scalars['String']
|
||||
isEmailVerified: Scalars['Boolean']
|
||||
disabled?: Scalars['Boolean']
|
||||
canImpersonate: Scalars['Boolean']
|
||||
@@ -703,7 +703,7 @@ export interface PageLayoutWidget {
|
||||
type: WidgetType
|
||||
objectMetadataId?: Scalars['UUID']
|
||||
/** @deprecated Use `position` instead. Will be removed in a future release. */
|
||||
gridPosition: GridPosition
|
||||
gridPosition?: GridPosition
|
||||
position?: PageLayoutWidgetPosition
|
||||
configuration: WidgetConfiguration
|
||||
conditionalDisplay?: Scalars['JSON']
|
||||
@@ -1018,6 +1018,22 @@ export interface PageLayout {
|
||||
|
||||
export type PageLayoutType = 'RECORD_INDEX' | 'RECORD_PAGE' | 'DASHBOARD' | 'STANDALONE_PAGE'
|
||||
|
||||
export interface ApplicationConnectionProviderOAuthConfig {
|
||||
scopes: Scalars['String'][]
|
||||
isClientCredentialsConfigured: Scalars['Boolean']
|
||||
__typename: 'ApplicationConnectionProviderOAuthConfig'
|
||||
}
|
||||
|
||||
export interface ApplicationConnectionProvider {
|
||||
id: Scalars['UUID']
|
||||
applicationId: Scalars['String']
|
||||
type: Scalars['String']
|
||||
name: Scalars['String']
|
||||
displayName: Scalars['String']
|
||||
oauth?: ApplicationConnectionProviderOAuthConfig
|
||||
__typename: 'ApplicationConnectionProvider'
|
||||
}
|
||||
|
||||
export interface Analytics {
|
||||
/** Boolean that confirms query was dispatched */
|
||||
success: Scalars['Boolean']
|
||||
@@ -1940,7 +1956,6 @@ export interface MarketplaceApp {
|
||||
id: Scalars['String']
|
||||
name: Scalars['String']
|
||||
description: Scalars['String']
|
||||
icon: Scalars['String']
|
||||
author: Scalars['String']
|
||||
category: Scalars['String']
|
||||
logo?: Scalars['String']
|
||||
@@ -2223,6 +2238,10 @@ export interface ConnectedAccountDTO {
|
||||
connectionParameters?: ImapSmtpCaldavConnectionParameters
|
||||
lastSignedInAt?: Scalars['DateTime']
|
||||
userWorkspaceId: Scalars['UUID']
|
||||
connectionProviderId?: Scalars['UUID']
|
||||
applicationId?: Scalars['UUID']
|
||||
name?: Scalars['String']
|
||||
visibility: Scalars['String']
|
||||
createdAt: Scalars['DateTime']
|
||||
updatedAt: Scalars['DateTime']
|
||||
__typename: 'ConnectedAccountDTO'
|
||||
@@ -2253,6 +2272,10 @@ export interface ConnectedAccountPublicDTO {
|
||||
scopes?: Scalars['String'][]
|
||||
lastSignedInAt?: Scalars['DateTime']
|
||||
userWorkspaceId: Scalars['UUID']
|
||||
connectionProviderId?: Scalars['UUID']
|
||||
applicationId?: Scalars['UUID']
|
||||
name?: Scalars['String']
|
||||
visibility: Scalars['String']
|
||||
createdAt: Scalars['DateTime']
|
||||
updatedAt: Scalars['DateTime']
|
||||
connectionParameters?: PublicImapSmtpCaldavConnectionParameters
|
||||
@@ -2304,20 +2327,6 @@ export interface Skill {
|
||||
__typename: 'Skill'
|
||||
}
|
||||
|
||||
export interface AgentChatThread {
|
||||
id: Scalars['UUID']
|
||||
title?: Scalars['String']
|
||||
totalInputTokens: Scalars['Int']
|
||||
totalOutputTokens: Scalars['Int']
|
||||
contextWindowTokens?: Scalars['Int']
|
||||
conversationSize: Scalars['Int']
|
||||
totalInputCredits: Scalars['Float']
|
||||
totalOutputCredits: Scalars['Float']
|
||||
createdAt: Scalars['DateTime']
|
||||
updatedAt: Scalars['DateTime']
|
||||
__typename: 'AgentChatThread'
|
||||
}
|
||||
|
||||
export interface AgentMessage {
|
||||
id: Scalars['UUID']
|
||||
threadId: Scalars['UUID']
|
||||
@@ -2331,6 +2340,22 @@ export interface AgentMessage {
|
||||
__typename: 'AgentMessage'
|
||||
}
|
||||
|
||||
export interface AgentChatThread {
|
||||
id: Scalars['ID']
|
||||
title?: Scalars['String']
|
||||
totalInputTokens: Scalars['Int']
|
||||
totalOutputTokens: Scalars['Int']
|
||||
contextWindowTokens?: Scalars['Int']
|
||||
conversationSize: Scalars['Int']
|
||||
totalInputCredits: Scalars['Float']
|
||||
totalOutputCredits: Scalars['Float']
|
||||
createdAt: Scalars['DateTime']
|
||||
updatedAt: Scalars['DateTime']
|
||||
deletedAt?: Scalars['DateTime']
|
||||
lastMessageAt?: Scalars['DateTime']
|
||||
__typename: 'AgentChatThread'
|
||||
}
|
||||
|
||||
export interface AiSystemPromptSection {
|
||||
title: Scalars['String']
|
||||
content: Scalars['String']
|
||||
@@ -2363,22 +2388,6 @@ export interface AgentChatEvent {
|
||||
__typename: 'AgentChatEvent'
|
||||
}
|
||||
|
||||
export interface AgentChatThreadEdge {
|
||||
/** The node containing the AgentChatThread */
|
||||
node: AgentChatThread
|
||||
/** Cursor for this node. */
|
||||
cursor: Scalars['ConnectionCursor']
|
||||
__typename: 'AgentChatThreadEdge'
|
||||
}
|
||||
|
||||
export interface AgentChatThreadConnection {
|
||||
/** Paging information */
|
||||
pageInfo: PageInfo
|
||||
/** Array of edges. */
|
||||
edges: AgentChatThreadEdge[]
|
||||
__typename: 'AgentChatThreadConnection'
|
||||
}
|
||||
|
||||
export interface AgentTurnEvaluation {
|
||||
id: Scalars['UUID']
|
||||
turnId: Scalars['UUID']
|
||||
@@ -2484,7 +2493,7 @@ export interface CollectionHash {
|
||||
__typename: 'CollectionHash'
|
||||
}
|
||||
|
||||
export type AllMetadataName = 'fieldMetadata' | 'objectMetadata' | 'view' | 'viewField' | 'viewFieldGroup' | 'viewGroup' | 'viewSort' | 'rowLevelPermissionPredicate' | 'rowLevelPermissionPredicateGroup' | 'viewFilterGroup' | 'index' | 'logicFunction' | 'viewFilter' | 'role' | 'roleTarget' | 'agent' | 'skill' | 'pageLayout' | 'pageLayoutWidget' | 'pageLayoutTab' | 'commandMenuItem' | 'navigationMenuItem' | 'permissionFlag' | 'objectPermission' | 'fieldPermission' | 'frontComponent' | 'webhook'
|
||||
export type AllMetadataName = 'fieldMetadata' | 'objectMetadata' | 'view' | 'viewField' | 'viewFieldGroup' | 'viewGroup' | 'viewSort' | 'rowLevelPermissionPredicate' | 'rowLevelPermissionPredicateGroup' | 'viewFilterGroup' | 'index' | 'logicFunction' | 'viewFilter' | 'role' | 'roleTarget' | 'agent' | 'skill' | 'pageLayout' | 'pageLayoutWidget' | 'pageLayoutTab' | 'commandMenuItem' | 'navigationMenuItem' | 'permissionFlag' | 'objectPermission' | 'fieldPermission' | 'frontComponent' | 'webhook' | 'connectionProvider'
|
||||
|
||||
export interface MinimalObjectMetadata {
|
||||
id: Scalars['UUID']
|
||||
@@ -2558,6 +2567,7 @@ export interface Query {
|
||||
getPageLayoutTab: PageLayoutTab
|
||||
getPageLayouts: PageLayout[]
|
||||
getPageLayout?: PageLayout
|
||||
applicationConnectionProviders: ApplicationConnectionProvider[]
|
||||
getPageLayoutWidgets: PageLayoutWidget[]
|
||||
getPageLayoutWidget: PageLayoutWidget
|
||||
findOneLogicFunction: LogicFunction
|
||||
@@ -2591,13 +2601,13 @@ export interface Query {
|
||||
webhooks: Webhook[]
|
||||
webhook?: Webhook
|
||||
minimalMetadata: MinimalMetadata
|
||||
chatThreads: AgentChatThread[]
|
||||
chatThread: AgentChatThread
|
||||
chatMessages: AgentMessage[]
|
||||
chatStreamCatchupChunks: ChatStreamCatchupChunks
|
||||
getAiSystemPromptPreview: AiSystemPromptPreview
|
||||
skills: Skill[]
|
||||
skill?: Skill
|
||||
chatThreads: AgentChatThreadConnection
|
||||
agentTurns: AgentTurn[]
|
||||
checkUserExists: CheckUserExist
|
||||
checkWorkspaceInviteHashIsValid: WorkspaceInviteHashValid
|
||||
@@ -2633,16 +2643,6 @@ export interface Query {
|
||||
__typename: 'Query'
|
||||
}
|
||||
|
||||
export type AgentChatThreadSortFields = 'id' | 'updatedAt'
|
||||
|
||||
|
||||
/** Sort Directions */
|
||||
export type SortDirection = 'ASC' | 'DESC'
|
||||
|
||||
|
||||
/** Sort Nulls Options */
|
||||
export type SortNulls = 'NULLS_FIRST' | 'NULLS_LAST'
|
||||
|
||||
export type EventLogTable = 'WORKSPACE_EVENT' | 'PAGEVIEW' | 'OBJECT_EVENT' | 'USAGE_EVENT' | 'APPLICATION_LOG'
|
||||
|
||||
export type UsageOperationType = 'AI_CHAT_TOKEN' | 'AI_WORKFLOW_TOKEN' | 'WORKFLOW_EXECUTION' | 'CODE_EXECUTION' | 'WEB_SEARCH'
|
||||
@@ -2725,6 +2725,7 @@ export interface Mutation {
|
||||
resetPageLayoutToDefault: PageLayout
|
||||
resetPageLayoutWidgetToDefault: PageLayoutWidget
|
||||
resetPageLayoutTabToDefault: PageLayoutTab
|
||||
updateOneApplicationVariable: Scalars['Boolean']
|
||||
createPageLayoutWidget: PageLayoutWidget
|
||||
updatePageLayoutWidget: PageLayoutWidget
|
||||
destroyPageLayoutWidget: Scalars['Boolean']
|
||||
@@ -2774,6 +2775,10 @@ export interface Mutation {
|
||||
createChatThread: AgentChatThread
|
||||
sendChatMessage: SendChatMessageResult
|
||||
stopAgentChatStream: Scalars['Boolean']
|
||||
renameChatThread: AgentChatThread
|
||||
archiveChatThread: AgentChatThread
|
||||
unarchiveChatThread: AgentChatThread
|
||||
deleteChatThread: Scalars['Boolean']
|
||||
deleteQueuedChatMessage: Scalars['Boolean']
|
||||
createSkill: Skill
|
||||
updateSkill: Skill
|
||||
@@ -2823,7 +2828,6 @@ export interface Mutation {
|
||||
installApplication: Scalars['Boolean']
|
||||
runWorkspaceMigration: Scalars['Boolean']
|
||||
uninstallApplication: Scalars['Boolean']
|
||||
updateOneApplicationVariable: Scalars['Boolean']
|
||||
createOIDCIdentityProvider: SetupSso
|
||||
createSAMLIdentityProvider: SetupSso
|
||||
deleteSSOIdentityProvider: DeleteSso
|
||||
@@ -3314,6 +3318,7 @@ export interface ApplicationGenqlSelection{
|
||||
id?: boolean | number
|
||||
name?: boolean | number
|
||||
description?: boolean | number
|
||||
logo?: boolean | number
|
||||
version?: boolean | number
|
||||
universalIdentifier?: boolean | number
|
||||
packageJsonChecksum?: boolean | number
|
||||
@@ -3537,7 +3542,6 @@ export interface UserGenqlSelection{
|
||||
firstName?: boolean | number
|
||||
lastName?: boolean | number
|
||||
email?: boolean | number
|
||||
defaultAvatarUrl?: boolean | number
|
||||
isEmailVerified?: boolean | number
|
||||
disabled?: boolean | number
|
||||
canImpersonate?: boolean | number
|
||||
@@ -3935,6 +3939,24 @@ export interface PageLayoutGenqlSelection{
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface ApplicationConnectionProviderOAuthConfigGenqlSelection{
|
||||
scopes?: boolean | number
|
||||
isClientCredentialsConfigured?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface ApplicationConnectionProviderGenqlSelection{
|
||||
id?: boolean | number
|
||||
applicationId?: boolean | number
|
||||
type?: boolean | number
|
||||
name?: boolean | number
|
||||
displayName?: boolean | number
|
||||
oauth?: ApplicationConnectionProviderOAuthConfigGenqlSelection
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AnalyticsGenqlSelection{
|
||||
/** Boolean that confirms query was dispatched */
|
||||
success?: boolean | number
|
||||
@@ -4923,7 +4945,6 @@ export interface MarketplaceAppGenqlSelection{
|
||||
id?: boolean | number
|
||||
name?: boolean | number
|
||||
description?: boolean | number
|
||||
icon?: boolean | number
|
||||
author?: boolean | number
|
||||
category?: boolean | number
|
||||
logo?: boolean | number
|
||||
@@ -5229,6 +5250,10 @@ export interface ConnectedAccountDTOGenqlSelection{
|
||||
connectionParameters?: ImapSmtpCaldavConnectionParametersGenqlSelection
|
||||
lastSignedInAt?: boolean | number
|
||||
userWorkspaceId?: boolean | number
|
||||
connectionProviderId?: boolean | number
|
||||
applicationId?: boolean | number
|
||||
name?: boolean | number
|
||||
visibility?: boolean | number
|
||||
createdAt?: boolean | number
|
||||
updatedAt?: boolean | number
|
||||
__typename?: boolean | number
|
||||
@@ -5262,6 +5287,10 @@ export interface ConnectedAccountPublicDTOGenqlSelection{
|
||||
scopes?: boolean | number
|
||||
lastSignedInAt?: boolean | number
|
||||
userWorkspaceId?: boolean | number
|
||||
connectionProviderId?: boolean | number
|
||||
applicationId?: boolean | number
|
||||
name?: boolean | number
|
||||
visibility?: boolean | number
|
||||
createdAt?: boolean | number
|
||||
updatedAt?: boolean | number
|
||||
connectionParameters?: PublicImapSmtpCaldavConnectionParametersGenqlSelection
|
||||
@@ -5319,6 +5348,20 @@ export interface SkillGenqlSelection{
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AgentMessageGenqlSelection{
|
||||
id?: boolean | number
|
||||
threadId?: boolean | number
|
||||
turnId?: boolean | number
|
||||
agentId?: boolean | number
|
||||
role?: boolean | number
|
||||
status?: boolean | number
|
||||
parts?: AgentMessagePartGenqlSelection
|
||||
processedAt?: boolean | number
|
||||
createdAt?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AgentChatThreadGenqlSelection{
|
||||
id?: boolean | number
|
||||
title?: boolean | number
|
||||
@@ -5330,20 +5373,8 @@ export interface AgentChatThreadGenqlSelection{
|
||||
totalOutputCredits?: boolean | number
|
||||
createdAt?: boolean | number
|
||||
updatedAt?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AgentMessageGenqlSelection{
|
||||
id?: boolean | number
|
||||
threadId?: boolean | number
|
||||
turnId?: boolean | number
|
||||
agentId?: boolean | number
|
||||
role?: boolean | number
|
||||
status?: boolean | number
|
||||
parts?: AgentMessagePartGenqlSelection
|
||||
processedAt?: boolean | number
|
||||
createdAt?: boolean | number
|
||||
deletedAt?: boolean | number
|
||||
lastMessageAt?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
@@ -5385,24 +5416,6 @@ export interface AgentChatEventGenqlSelection{
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AgentChatThreadEdgeGenqlSelection{
|
||||
/** The node containing the AgentChatThread */
|
||||
node?: AgentChatThreadGenqlSelection
|
||||
/** Cursor for this node. */
|
||||
cursor?: boolean | number
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AgentChatThreadConnectionGenqlSelection{
|
||||
/** Paging information */
|
||||
pageInfo?: PageInfoGenqlSelection
|
||||
/** Array of edges. */
|
||||
edges?: AgentChatThreadEdgeGenqlSelection
|
||||
__typename?: boolean | number
|
||||
__scalar?: boolean | number
|
||||
}
|
||||
|
||||
export interface AgentTurnEvaluationGenqlSelection{
|
||||
id?: boolean | number
|
||||
turnId?: boolean | number
|
||||
@@ -5566,6 +5579,7 @@ export interface QueryGenqlSelection{
|
||||
getPageLayoutTab?: (PageLayoutTabGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
getPageLayouts?: (PageLayoutGenqlSelection & { __args?: {objectMetadataId?: (Scalars['String'] | null), pageLayoutType?: (PageLayoutType | null)} })
|
||||
getPageLayout?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
applicationConnectionProviders?: (ApplicationConnectionProviderGenqlSelection & { __args: {applicationId: Scalars['UUID']} })
|
||||
getPageLayoutWidgets?: (PageLayoutWidgetGenqlSelection & { __args: {pageLayoutTabId: Scalars['String']} })
|
||||
getPageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
findOneLogicFunction?: (LogicFunctionGenqlSelection & { __args: {input: LogicFunctionIdInput} })
|
||||
@@ -5617,19 +5631,13 @@ export interface QueryGenqlSelection{
|
||||
webhooks?: WebhookGenqlSelection
|
||||
webhook?: (WebhookGenqlSelection & { __args: {id: Scalars['UUID']} })
|
||||
minimalMetadata?: MinimalMetadataGenqlSelection
|
||||
chatThreads?: AgentChatThreadGenqlSelection
|
||||
chatThread?: (AgentChatThreadGenqlSelection & { __args: {id: Scalars['UUID']} })
|
||||
chatMessages?: (AgentMessageGenqlSelection & { __args: {threadId: Scalars['UUID']} })
|
||||
chatStreamCatchupChunks?: (ChatStreamCatchupChunksGenqlSelection & { __args: {threadId: Scalars['UUID']} })
|
||||
getAiSystemPromptPreview?: AiSystemPromptPreviewGenqlSelection
|
||||
skills?: SkillGenqlSelection
|
||||
skill?: (SkillGenqlSelection & { __args: {id: Scalars['UUID']} })
|
||||
chatThreads?: (AgentChatThreadConnectionGenqlSelection & { __args: {
|
||||
/** Limit or page results. */
|
||||
paging: CursorPaging,
|
||||
/** Specify to filter the records returned. */
|
||||
filter: AgentChatThreadFilter,
|
||||
/** Specify to sort results. */
|
||||
sorting: AgentChatThreadSort[]} })
|
||||
agentTurns?: (AgentTurnGenqlSelection & { __args: {agentId: Scalars['UUID']} })
|
||||
checkUserExists?: (CheckUserExistGenqlSelection & { __args: {email: Scalars['String'], captchaToken?: (Scalars['String'] | null)} })
|
||||
checkWorkspaceInviteHashIsValid?: (WorkspaceInviteHashValidGenqlSelection & { __args: {inviteHash: Scalars['String']} })
|
||||
@@ -5676,14 +5684,6 @@ export interface AgentIdInput {
|
||||
/** The id of the agent. */
|
||||
id: Scalars['UUID']}
|
||||
|
||||
export interface AgentChatThreadFilter {and?: (AgentChatThreadFilter[] | null),or?: (AgentChatThreadFilter[] | null),id?: (UUIDFilterComparison | null),updatedAt?: (DateFieldComparison | null)}
|
||||
|
||||
export interface DateFieldComparison {is?: (Scalars['Boolean'] | null),isNot?: (Scalars['Boolean'] | null),eq?: (Scalars['DateTime'] | null),neq?: (Scalars['DateTime'] | null),gt?: (Scalars['DateTime'] | null),gte?: (Scalars['DateTime'] | null),lt?: (Scalars['DateTime'] | null),lte?: (Scalars['DateTime'] | null),in?: (Scalars['DateTime'][] | null),notIn?: (Scalars['DateTime'][] | null),between?: (DateFieldComparisonBetween | null),notBetween?: (DateFieldComparisonBetween | null)}
|
||||
|
||||
export interface DateFieldComparisonBetween {lower: Scalars['DateTime'],upper: Scalars['DateTime']}
|
||||
|
||||
export interface AgentChatThreadSort {field: AgentChatThreadSortFields,direction: SortDirection,nulls?: (SortNulls | null)}
|
||||
|
||||
export interface EventLogQueryInput {table: EventLogTable,filters?: (EventLogFiltersInput | null),first?: (Scalars['Int'] | null),after?: (Scalars['String'] | null)}
|
||||
|
||||
export interface EventLogFiltersInput {eventType?: (Scalars['String'] | null),userWorkspaceId?: (Scalars['String'] | null),dateRange?: (EventLogDateRangeInput | null),recordId?: (Scalars['String'] | null),objectMetadataId?: (Scalars['String'] | null)}
|
||||
@@ -5776,6 +5776,7 @@ export interface MutationGenqlSelection{
|
||||
resetPageLayoutToDefault?: (PageLayoutGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
resetPageLayoutWidgetToDefault?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
resetPageLayoutTabToDefault?: (PageLayoutTabGenqlSelection & { __args: {id: Scalars['String']} })
|
||||
updateOneApplicationVariable?: { __args: {key: Scalars['String'], value: Scalars['String'], applicationId: Scalars['UUID']} }
|
||||
createPageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {input: CreatePageLayoutWidgetInput} })
|
||||
updatePageLayoutWidget?: (PageLayoutWidgetGenqlSelection & { __args: {id: Scalars['String'], input: UpdatePageLayoutWidgetInput} })
|
||||
destroyPageLayoutWidget?: { __args: {id: Scalars['String']} }
|
||||
@@ -5825,6 +5826,10 @@ export interface MutationGenqlSelection{
|
||||
createChatThread?: AgentChatThreadGenqlSelection
|
||||
sendChatMessage?: (SendChatMessageResultGenqlSelection & { __args: {threadId: Scalars['UUID'], text: Scalars['String'], messageId: Scalars['UUID'], browsingContext?: (Scalars['JSON'] | null), modelId?: (Scalars['String'] | null), fileIds?: (Scalars['UUID'][] | null)} })
|
||||
stopAgentChatStream?: { __args: {threadId: Scalars['UUID']} }
|
||||
renameChatThread?: (AgentChatThreadGenqlSelection & { __args: {id: Scalars['UUID'], title: Scalars['String']} })
|
||||
archiveChatThread?: (AgentChatThreadGenqlSelection & { __args: {id: Scalars['UUID']} })
|
||||
unarchiveChatThread?: (AgentChatThreadGenqlSelection & { __args: {id: Scalars['UUID']} })
|
||||
deleteChatThread?: { __args: {id: Scalars['UUID']} }
|
||||
deleteQueuedChatMessage?: { __args: {messageId: Scalars['UUID']} }
|
||||
createSkill?: (SkillGenqlSelection & { __args: {input: CreateSkillInput} })
|
||||
updateSkill?: (SkillGenqlSelection & { __args: {input: UpdateSkillInput} })
|
||||
@@ -5874,7 +5879,6 @@ export interface MutationGenqlSelection{
|
||||
installApplication?: { __args: {appRegistrationId: Scalars['String'], version?: (Scalars['String'] | null)} }
|
||||
runWorkspaceMigration?: { __args: {workspaceMigration: WorkspaceMigrationInput} }
|
||||
uninstallApplication?: { __args: {universalIdentifier: Scalars['String']} }
|
||||
updateOneApplicationVariable?: { __args: {key: Scalars['String'], value: Scalars['String'], applicationId: Scalars['UUID']} }
|
||||
createOIDCIdentityProvider?: (SetupSsoGenqlSelection & { __args: {input: SetupOIDCSsoInput} })
|
||||
createSAMLIdentityProvider?: (SetupSsoGenqlSelection & { __args: {input: SetupSAMLSsoInput} })
|
||||
deleteSSOIdentityProvider?: (DeleteSsoGenqlSelection & { __args: {input: DeleteSsoInput} })
|
||||
@@ -6064,11 +6068,11 @@ export interface UpdatePageLayoutWithTabsInput {name: Scalars['String'],type: Pa
|
||||
|
||||
export interface UpdatePageLayoutTabWithWidgetsInput {id: Scalars['UUID'],title: Scalars['String'],position: Scalars['Float'],icon?: (Scalars['String'] | null),layoutMode?: (PageLayoutTabLayoutMode | null),widgets: UpdatePageLayoutWidgetWithIdInput[]}
|
||||
|
||||
export interface UpdatePageLayoutWidgetWithIdInput {id: Scalars['UUID'],pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition: GridPositionInput,position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null),conditionalDisplay?: (Scalars['JSON'] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null)}
|
||||
export interface UpdatePageLayoutWidgetWithIdInput {id: Scalars['UUID'],pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition?: (GridPositionInput | null),position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null),conditionalDisplay?: (Scalars['JSON'] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null)}
|
||||
|
||||
export interface GridPositionInput {row: Scalars['Float'],column: Scalars['Float'],rowSpan: Scalars['Float'],columnSpan: Scalars['Float']}
|
||||
|
||||
export interface CreatePageLayoutWidgetInput {pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition: GridPositionInput,position?: (Scalars['JSON'] | null),configuration: Scalars['JSON']}
|
||||
export interface CreatePageLayoutWidgetInput {pageLayoutTabId: Scalars['UUID'],title: Scalars['String'],type: WidgetType,objectMetadataId?: (Scalars['UUID'] | null),gridPosition?: (GridPositionInput | null),position?: (Scalars['JSON'] | null),configuration: Scalars['JSON']}
|
||||
|
||||
export interface UpdatePageLayoutWidgetInput {pageLayoutTabId?: (Scalars['UUID'] | null),title?: (Scalars['String'] | null),type?: (WidgetType | null),objectMetadataId?: (Scalars['UUID'] | null),gridPosition?: (GridPositionInput | null),position?: (Scalars['JSON'] | null),configuration?: (Scalars['JSON'] | null),conditionalDisplay?: (Scalars['JSON'] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null)}
|
||||
|
||||
@@ -6853,6 +6857,22 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
|
||||
|
||||
|
||||
|
||||
const ApplicationConnectionProviderOAuthConfig_possibleTypes: string[] = ['ApplicationConnectionProviderOAuthConfig']
|
||||
export const isApplicationConnectionProviderOAuthConfig = (obj?: { __typename?: any } | null): obj is ApplicationConnectionProviderOAuthConfig => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationConnectionProviderOAuthConfig"')
|
||||
return ApplicationConnectionProviderOAuthConfig_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const ApplicationConnectionProvider_possibleTypes: string[] = ['ApplicationConnectionProvider']
|
||||
export const isApplicationConnectionProvider = (obj?: { __typename?: any } | null): obj is ApplicationConnectionProvider => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationConnectionProvider"')
|
||||
return ApplicationConnectionProvider_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const Analytics_possibleTypes: string[] = ['Analytics']
|
||||
export const isAnalytics = (obj?: { __typename?: any } | null): obj is Analytics => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAnalytics"')
|
||||
@@ -8045,14 +8065,6 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
|
||||
|
||||
|
||||
|
||||
const AgentChatThread_possibleTypes: string[] = ['AgentChatThread']
|
||||
export const isAgentChatThread = (obj?: { __typename?: any } | null): obj is AgentChatThread => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThread"')
|
||||
return AgentChatThread_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const AgentMessage_possibleTypes: string[] = ['AgentMessage']
|
||||
export const isAgentMessage = (obj?: { __typename?: any } | null): obj is AgentMessage => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAgentMessage"')
|
||||
@@ -8061,6 +8073,14 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
|
||||
|
||||
|
||||
|
||||
const AgentChatThread_possibleTypes: string[] = ['AgentChatThread']
|
||||
export const isAgentChatThread = (obj?: { __typename?: any } | null): obj is AgentChatThread => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThread"')
|
||||
return AgentChatThread_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const AiSystemPromptSection_possibleTypes: string[] = ['AiSystemPromptSection']
|
||||
export const isAiSystemPromptSection = (obj?: { __typename?: any } | null): obj is AiSystemPromptSection => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAiSystemPromptSection"')
|
||||
@@ -8101,22 +8121,6 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
|
||||
|
||||
|
||||
|
||||
const AgentChatThreadEdge_possibleTypes: string[] = ['AgentChatThreadEdge']
|
||||
export const isAgentChatThreadEdge = (obj?: { __typename?: any } | null): obj is AgentChatThreadEdge => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThreadEdge"')
|
||||
return AgentChatThreadEdge_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const AgentChatThreadConnection_possibleTypes: string[] = ['AgentChatThreadConnection']
|
||||
export const isAgentChatThreadConnection = (obj?: { __typename?: any } | null): obj is AgentChatThreadConnection => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAgentChatThreadConnection"')
|
||||
return AgentChatThreadConnection_possibleTypes.includes(obj.__typename)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const AgentTurnEvaluation_possibleTypes: string[] = ['AgentTurnEvaluation']
|
||||
export const isAgentTurnEvaluation = (obj?: { __typename?: any } | null): obj is AgentTurnEvaluation => {
|
||||
if (!obj?.__typename) throw new Error('__typename is missing in "isAgentTurnEvaluation"')
|
||||
@@ -8845,22 +8849,8 @@ export const enumAllMetadataName = {
|
||||
objectPermission: 'objectPermission' as const,
|
||||
fieldPermission: 'fieldPermission' as const,
|
||||
frontComponent: 'frontComponent' as const,
|
||||
webhook: 'webhook' as const
|
||||
}
|
||||
|
||||
export const enumAgentChatThreadSortFields = {
|
||||
id: 'id' as const,
|
||||
updatedAt: 'updatedAt' as const
|
||||
}
|
||||
|
||||
export const enumSortDirection = {
|
||||
ASC: 'ASC' as const,
|
||||
DESC: 'DESC' as const
|
||||
}
|
||||
|
||||
export const enumSortNulls = {
|
||||
NULLS_FIRST: 'NULLS_FIRST' as const,
|
||||
NULLS_LAST: 'NULLS_LAST' as const
|
||||
webhook: 'webhook' as const,
|
||||
connectionProvider: 'connectionProvider' as const
|
||||
}
|
||||
|
||||
export const enumEventLogTable = {
|
||||
|
||||
@@ -26,11 +26,11 @@ prod-run:
|
||||
prod-postgres-run:
|
||||
@docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres --name twenty-postgres twenty-postgres:$(TAG)
|
||||
|
||||
prod-website-build:
|
||||
@cd ../.. && docker build -f ./packages/twenty-docker/twenty-website/Dockerfile --platform $(PLATFORM) --tag twenty-website:$(TAG) . && cd -
|
||||
prod-website-new-build:
|
||||
@cd ../.. && docker build -f ./packages/twenty-docker/twenty-website-new/Dockerfile --platform $(PLATFORM) --tag twenty-website-new:$(TAG) . && cd -
|
||||
|
||||
prod-website-run:
|
||||
@docker run -d -p 3000:3000 --name twenty-website twenty-website:$(TAG)
|
||||
prod-website-new-run:
|
||||
@docker run -d -p 3000:3000 --name twenty-website-new twenty-website-new:$(TAG)
|
||||
|
||||
# =============================================================================
|
||||
# Local Development Services
|
||||
|
||||
@@ -4,6 +4,6 @@ set -e
|
||||
echo "==> START Registering cron jobs"
|
||||
|
||||
cd /app/packages/twenty-server
|
||||
yarn command:prod cron:register:all --dev-mode
|
||||
yarn command:prod cron:register:all
|
||||
|
||||
echo "==> DONE"
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
FROM node:24-alpine AS twenty-website-build
|
||||
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY ./package.json .
|
||||
COPY ./yarn.lock .
|
||||
COPY ./.yarnrc.yml .
|
||||
COPY ./.yarn/releases /app/.yarn/releases
|
||||
COPY ./.yarn/patches /app/.yarn/patches
|
||||
COPY ./packages/twenty-oxlint-rules /app/packages/twenty-oxlint-rules
|
||||
COPY ./packages/twenty-ui/package.json /app/packages/twenty-ui/
|
||||
COPY ./packages/twenty-shared/package.json /app/packages/twenty-shared/
|
||||
COPY ./packages/twenty-website/package.json /app/packages/twenty-website/package.json
|
||||
|
||||
RUN yarn
|
||||
|
||||
ENV KEYSTATIC_GITHUB_CLIENT_ID="<fake build value>"
|
||||
ENV KEYSTATIC_GITHUB_CLIENT_SECRET="<fake build value>"
|
||||
ENV KEYSTATIC_SECRET="<fake build value>"
|
||||
ENV NEXT_PUBLIC_KEYSTATIC_GITHUB_APP_SLUG="<fake build value>"
|
||||
|
||||
COPY ./packages/twenty-ui /app/packages/twenty-ui
|
||||
COPY ./packages/twenty-website /app/packages/twenty-website
|
||||
RUN npx nx build twenty-website
|
||||
|
||||
FROM node:24-alpine AS twenty-website
|
||||
|
||||
WORKDIR /app/packages/twenty-website
|
||||
|
||||
COPY --from=twenty-website-build /app /app
|
||||
|
||||
WORKDIR /app/packages/twenty-website
|
||||
|
||||
LABEL org.opencontainers.image.source=https://github.com/twentyhq/twenty
|
||||
LABEL org.opencontainers.image.description="This image provides a consistent and reproducible environment for the website."
|
||||
|
||||
RUN chown -R 1000 /app
|
||||
|
||||
# Use non root user with uid 1000
|
||||
USER 1000
|
||||
|
||||
CMD ["/bin/sh", "-c", "npx nx start"]
|
||||
@@ -1,8 +1,26 @@
|
||||
# ===========================================================================
|
||||
# Shared build stages (used by both targets)
|
||||
# Dependency stages
|
||||
# ===========================================================================
|
||||
|
||||
FROM node:24-alpine AS common-deps
|
||||
FROM node:24-alpine AS front-deps
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY ./package.json ./yarn.lock ./.yarnrc.yml ./tsconfig.base.json ./nx.json /app/
|
||||
COPY ./.yarn/releases /app/.yarn/releases
|
||||
COPY ./.yarn/patches /app/.yarn/patches
|
||||
|
||||
COPY ./packages/twenty-ui/package.json /app/packages/twenty-ui/
|
||||
COPY ./packages/twenty-shared/package.json /app/packages/twenty-shared/
|
||||
COPY ./packages/twenty-front/package.json /app/packages/twenty-front/
|
||||
COPY ./packages/twenty-front-component-renderer/package.json /app/packages/twenty-front-component-renderer/
|
||||
COPY ./packages/twenty-sdk/package.json /app/packages/twenty-sdk/
|
||||
COPY ./packages/twenty-client-sdk/package.json /app/packages/twenty-client-sdk/
|
||||
|
||||
RUN yarn workspaces focus twenty twenty-front twenty-front-component-renderer twenty-ui twenty-shared twenty-sdk twenty-client-sdk && yarn cache clean && npx nx reset
|
||||
|
||||
|
||||
FROM node:24-alpine AS server-deps
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -13,22 +31,16 @@ COPY ./.yarn/patches /app/.yarn/patches
|
||||
COPY ./packages/twenty-emails/package.json /app/packages/twenty-emails/
|
||||
COPY ./packages/twenty-server/package.json /app/packages/twenty-server/
|
||||
COPY ./packages/twenty-server/patches /app/packages/twenty-server/patches
|
||||
COPY ./packages/twenty-ui/package.json /app/packages/twenty-ui/
|
||||
COPY ./packages/twenty-shared/package.json /app/packages/twenty-shared/
|
||||
COPY ./packages/twenty-front/package.json /app/packages/twenty-front/
|
||||
COPY ./packages/twenty-front-component-renderer/package.json /app/packages/twenty-front-component-renderer/
|
||||
COPY ./packages/twenty-sdk/package.json /app/packages/twenty-sdk/
|
||||
COPY ./packages/twenty-client-sdk/package.json /app/packages/twenty-client-sdk/
|
||||
|
||||
RUN yarn && yarn cache clean && npx nx reset
|
||||
RUN yarn workspaces focus twenty twenty-server twenty-emails twenty-shared twenty-client-sdk && yarn cache clean && npx nx reset
|
||||
|
||||
|
||||
FROM common-deps AS twenty-server-build
|
||||
FROM server-deps AS twenty-server-build
|
||||
|
||||
COPY ./packages/twenty-emails /app/packages/twenty-emails
|
||||
COPY ./packages/twenty-shared /app/packages/twenty-shared
|
||||
COPY ./packages/twenty-ui /app/packages/twenty-ui
|
||||
COPY ./packages/twenty-sdk /app/packages/twenty-sdk
|
||||
COPY ./packages/twenty-client-sdk /app/packages/twenty-client-sdk
|
||||
COPY ./packages/twenty-server /app/packages/twenty-server
|
||||
|
||||
@@ -44,10 +56,10 @@ RUN npx nx run twenty-server:build
|
||||
RUN find /app/packages/twenty-server/dist -name '*.d.ts' -delete \
|
||||
&& rm -rf /app/packages/twenty-server/dist/packages/twenty-server/test
|
||||
|
||||
RUN yarn workspaces focus --production twenty-emails twenty-shared twenty-sdk twenty-client-sdk twenty-server
|
||||
RUN yarn workspaces focus --production twenty-emails twenty-shared twenty-client-sdk twenty-server
|
||||
|
||||
|
||||
FROM common-deps AS twenty-front-build
|
||||
FROM front-deps AS twenty-front-build
|
||||
|
||||
COPY ./packages/twenty-front /app/packages/twenty-front
|
||||
COPY ./packages/twenty-front-component-renderer /app/packages/twenty-front-component-renderer
|
||||
@@ -99,11 +111,8 @@ COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-shared/package
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-shared/dist /app/packages/twenty-shared/dist
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-emails/package.json /app/packages/twenty-emails/
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-emails/dist /app/packages/twenty-emails/dist
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-sdk/package.json /app/packages/twenty-sdk/
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-client-sdk/package.json /app/packages/twenty-client-sdk/
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-client-sdk/dist /app/packages/twenty-client-sdk/dist
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-ui/package.json /app/packages/twenty-ui/
|
||||
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-front/package.json /app/packages/twenty-front/
|
||||
|
||||
LABEL org.opencontainers.image.source=https://github.com/twentyhq/twenty
|
||||
LABEL org.opencontainers.image.description="Twenty server image (no frontend)."
|
||||
@@ -208,11 +217,8 @@ COPY --from=twenty-server-build /app/packages/twenty-shared/package.json /app/pa
|
||||
COPY --from=twenty-server-build /app/packages/twenty-shared/dist /app/packages/twenty-shared/dist
|
||||
COPY --from=twenty-server-build /app/packages/twenty-emails/package.json /app/packages/twenty-emails/
|
||||
COPY --from=twenty-server-build /app/packages/twenty-emails/dist /app/packages/twenty-emails/dist
|
||||
COPY --from=twenty-server-build /app/packages/twenty-sdk/package.json /app/packages/twenty-sdk/
|
||||
COPY --from=twenty-server-build /app/packages/twenty-client-sdk/package.json /app/packages/twenty-client-sdk/
|
||||
COPY --from=twenty-server-build /app/packages/twenty-client-sdk/dist /app/packages/twenty-client-sdk/dist
|
||||
COPY --from=twenty-server-build /app/packages/twenty-ui/package.json /app/packages/twenty-ui/
|
||||
COPY --from=twenty-server-build /app/packages/twenty-front/package.json /app/packages/twenty-front/
|
||||
|
||||
# Frontend static build
|
||||
COPY --from=twenty-front-build /app/packages/twenty-front/build /app/packages/twenty-server/dist/front
|
||||
|
||||
@@ -77,14 +77,10 @@ To deploy to Mintlify:
|
||||
3. Set subdirectory to `packages/twenty-docs`
|
||||
4. Mintlify will auto-deploy and generate search embeddings
|
||||
|
||||
## Next Steps
|
||||
## Status
|
||||
|
||||
1. **Manual Review** - Check for any component conversion issues
|
||||
2. **Fix Image Paths** - Verify all images render correctly
|
||||
3. **Test Navigation** - Ensure all internal links work
|
||||
4. **Deploy** - Push to production Mintlify
|
||||
5. **Update Helper Agent** - Verify searchArticles tool works with full content
|
||||
6. **Deprecate twenty-website docs** - Once migration is confirmed working
|
||||
This migration has been completed. The legacy `packages/twenty-website` package
|
||||
has been removed, and documentation now lives in `packages/twenty-docs`.
|
||||
|
||||
## Known Issues to Review
|
||||
|
||||
@@ -92,4 +88,3 @@ To deploy to Mintlify:
|
||||
- Some images may have incorrect paths
|
||||
- Custom styled components may need adjustment
|
||||
- Video embeds might need review
|
||||
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: Connections
|
||||
description: Let your app act on a user's behalf in third-party services via OAuth.
|
||||
icon: 'plug'
|
||||
---
|
||||
|
||||
Connections are credentials a user holds for an external service (Linear, GitHub, Slack, ...). Your app declares **how** those credentials are obtained — a **connection provider** — and consumes them at runtime to make authenticated calls to the third-party API.
|
||||
|
||||
Today only OAuth 2.0 is supported. Future credential types (personal access tokens, API keys, basic auth) will plug into the same surface — apps already using `defineConnectionProvider({ type: 'oauth', ... })` won't need to migrate.
|
||||
|
||||
<AccordionGroup>
|
||||
|
||||
<Accordion title="defineConnectionProvider" description="Declare how your app's connections are obtained">
|
||||
|
||||
A connection provider describes the OAuth handshake your app needs. The user clicks "Add connection" in your app's settings, completes the provider's consent screen, and a `ConnectedAccount` row is created in their workspace.
|
||||
|
||||
A working setup needs **two files** — the connection provider, and a matching `serverVariables` declaration on `defineApplication` that holds the OAuth client credentials.
|
||||
|
||||
```ts src/connection-providers/linear-connection.ts
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: '9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f',
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
icon: 'IconBrandLinear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
scopes: ['read', 'write'],
|
||||
// These must match keys in `defineApplication.serverVariables` below.
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
// Optional: defaults to 'json'. Some providers (Linear, Slack) want
|
||||
// 'form-urlencoded' for the token request.
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Optional: defaults to true. Disable only if the provider rejects PKCE.
|
||||
usePkce: false,
|
||||
// Optional: extra query params on the authorize URL.
|
||||
// authorizationParams: { prompt: 'consent' },
|
||||
// Optional: provider's RFC 7009 token revocation endpoint, called on disconnect.
|
||||
// revokeEndpoint: 'https://example.com/oauth/revoke',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
```ts src/application.config.ts
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '...',
|
||||
displayName: 'Linear',
|
||||
description: 'Connect Linear to Twenty.',
|
||||
defaultRoleUniversalIdentifier: '...',
|
||||
// OAuth client credentials live on the app registration (one OAuth app per
|
||||
// Twenty server, configured by the admin) — not per-workspace. Declare them
|
||||
// as serverVariables so the admin can fill them in once for all installs.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description: 'OAuth client ID from your Linear OAuth application.',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description: 'OAuth client secret from your Linear OAuth application.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Key points:
|
||||
|
||||
- `name` is the unique identifier string used in `listConnections({ providerName })` (kebab-case, must match `^[a-z][a-z0-9-]*$`).
|
||||
- `displayName` shows in the per-app settings tab and in the AI tool list.
|
||||
- `clientIdVariable` / `clientSecretVariable` are **names**, not values — they must match keys declared in `defineApplication.serverVariables`. The actual `client_id` and `client_secret` are entered by the server admin through the app registration UI, never committed to your repo.
|
||||
- Use `serverVariables` (not `applicationVariables`) — OAuth credentials are server-wide and one OAuth app per Twenty server.
|
||||
- Until both `serverVariables` are filled in, the per-app settings tab shows a "needs server admin" hint and the "Add connection" button is disabled.
|
||||
- `type: 'oauth'` is the only supported value today. The discriminator is forward-compatible: future types (`'pat'`, `'api-key'`, ...) will add new sub-config blocks alongside `oauth`.
|
||||
|
||||
The OAuth callback URL your provider needs to whitelist is:
|
||||
|
||||
```
|
||||
https://<your-twenty-server>/apps/oauth/callback
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="listConnections / getConnection" description="Use connections from a logic function">
|
||||
|
||||
Inside a logic function handler, `listConnections({ providerName })` returns this app's `ConnectedAccount` rows for the given provider, with refreshed access tokens.
|
||||
|
||||
```ts src/logic-functions/handlers/create-linear-issue-handler.ts
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
export const createLinearIssueHandler = async (input: {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
}) => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return { success: false, error: 'teamId and title are required' };
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
|
||||
// Workspace-shared credentials win when present; fall back to the first
|
||||
// user-visibility one. For HTTP-route triggers you typically pick the
|
||||
// request user's connection via event.userWorkspaceId instead.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection".',
|
||||
};
|
||||
}
|
||||
|
||||
// Use connection.accessToken to call the third-party API.
|
||||
const response = await fetch('https://api.linear.app/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${connection.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: `mutation { issueCreate(input: { teamId: "${input.teamId}", title: "${input.title}" }) { success } }`,
|
||||
}),
|
||||
});
|
||||
|
||||
return { success: response.ok };
|
||||
};
|
||||
```
|
||||
|
||||
Each connection has:
|
||||
|
||||
| Field | Description |
|
||||
| ----------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Unique row id; pass to `getConnection(id)` to refetch a single one |
|
||||
| `visibility` | `'user'` (private to one workspace member) or `'workspace'` (shared with all members) |
|
||||
| `scopes` | OAuth permissions granted by the upstream provider (distinct from `visibility` — those are unrelated) |
|
||||
| `userWorkspaceId` | The owner's userWorkspace id — useful for picking "the request user's connection" in HTTP-route triggers |
|
||||
| `accessToken` | Fresh OAuth access token (refreshed automatically if expired) |
|
||||
| `name` / `handle` | The connection's display name (auto-derived at OAuth callback, user-renameable) |
|
||||
| `authFailedAt` | Set when the most recent refresh failed; the user must reconnect |
|
||||
|
||||
Key points:
|
||||
|
||||
- Pass `{ providerName }` to filter by provider; omit it to get all connections this app owns across all providers.
|
||||
- The server transparently refreshes the access token before returning. Your handler always sees a usable token (or `authFailedAt` set).
|
||||
- `getConnection(id)` is the single-row equivalent.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Per-user vs workspace-shared visibility" description="How users choose between private and shared credentials">
|
||||
|
||||
When a user clicks "Add connection," they're prompted to pick a visibility:
|
||||
|
||||
- **Just for me** — the credential is private to the connecting user. Any logic function called on their behalf (HTTP-route trigger with `isAuthRequired: true`) sees it; cron triggers and database events do not.
|
||||
- **Workspace shared** — any workspace member can use the credential. Cron / database triggers also see it, since they have no request user.
|
||||
|
||||
Use the right one for each handler:
|
||||
|
||||
```ts
|
||||
// HTTP-route trigger — prefer the request user's own connection.
|
||||
const conn =
|
||||
connections.find((c) => c.userWorkspaceId === event.userWorkspaceId) ??
|
||||
connections.find((c) => c.visibility === 'workspace');
|
||||
|
||||
// Cron trigger — no request user; only shared credentials are sensible.
|
||||
const conn = connections.find((c) => c.visibility === 'workspace');
|
||||
```
|
||||
|
||||
Multiple connections per (user, provider) are allowed, so the same user can hold "Personal Linear" and "Work Linear" side by side.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="One-time provider setup" description="Register your OAuth app with the third-party service">
|
||||
|
||||
For each connection provider, the server admin needs to register an OAuth app at the third party first.
|
||||
|
||||
1. Go to the provider's developer settings (e.g. https://linear.app/settings/api/applications/new).
|
||||
2. Set the **Redirect URI** to `<SERVER_URL>/apps/oauth/callback`.
|
||||
3. Copy the generated **Client ID** and **Client Secret**.
|
||||
4. Open the installed app in Twenty as a server admin → set the values on the corresponding `serverVariables`.
|
||||
5. Workspace members can then add connections from the per-app **Connections** section.
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
@@ -77,7 +77,6 @@ export default defineApplication({
|
||||
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
||||
displayName: 'My Twenty App',
|
||||
description: 'My first Twenty app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -88,11 +88,11 @@ yarn twenty dev --verbose
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Dev mode is only available on Twenty instances running in development (`NODE_ENV=development`). Production instances reject dev sync requests. Use `yarn twenty deploy` to deploy to production servers — see [Publishing Apps](/developers/extend/apps/publishing) for details.
|
||||
Dev mode is only available on Twenty instances running in development (`NODE_ENV=development`). Production instances reject dev sync requests. Use `yarn twenty deploy` followed by `yarn twenty install` to publish and install on production servers — `deploy` publishes to the application registry, while `install` installs it on a given workspace. See [Publishing Apps](/developers/extend/apps/publishing) for details.
|
||||
</Warning>
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Dev mode terminal output" />
|
||||
<img src="/images/docs/developers/extends/apps/dev.png" alt="Dev mode terminal output" />
|
||||
</div>
|
||||
|
||||
#### One-shot sync with `yarn twenty dev --once`
|
||||
@@ -127,13 +127,7 @@ Click on **My twenty app** to open its **application registration**. A registrat
|
||||
Click **View installed app** to see the installed app. The **About** tab shows the current version and management options:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Installed app — About tab" />
|
||||
</div>
|
||||
|
||||
Switch to the **Content** tab to see everything your app provides — objects, fields, logic functions, and agents:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-4.png" alt="Installed app — Content tab" />
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Installed app" />
|
||||
</div>
|
||||
|
||||
You are all set! Edit any file in `src/` and the changes will be picked up automatically.
|
||||
@@ -219,13 +213,31 @@ The scaffolder already started a local Twenty server for you. To manage it later
|
||||
| `yarn twenty server start --port 3030` | Start on a custom port |
|
||||
| `yarn twenty server start --test` | Start a separate test instance on port 2021 |
|
||||
| `yarn twenty server stop` | Stop the server (preserves data) |
|
||||
| `yarn twenty server status` | Show server status, URL, and credentials |
|
||||
| `yarn twenty server status` | Show server status, URL, version, and credentials |
|
||||
| `yarn twenty server logs` | Stream server logs |
|
||||
| `yarn twenty server logs --lines 100` | Show the last 100 log lines |
|
||||
| `yarn twenty server reset` | Delete all data and start fresh |
|
||||
| `yarn twenty server upgrade` | Pull the latest `twenty-app-dev` image and recreate the container |
|
||||
| `yarn twenty server upgrade 2.2.0` | Upgrade to a specific version |
|
||||
|
||||
Data is persisted across restarts in two Docker volumes (`twenty-app-dev-data` for PostgreSQL, `twenty-app-dev-storage` for files). Use `reset` to wipe everything and start fresh.
|
||||
|
||||
### Upgrading the server image
|
||||
|
||||
Use `yarn twenty server upgrade` to check for a newer `twenty-app-dev` Docker image and update the container. The command pulls the image, compares it against the one the container was created from, and only recreates the container if the image actually changed. Your data volumes are preserved — only the container is replaced.
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Upgrade to the latest version (skips recreation if already up to date)
|
||||
yarn twenty server upgrade
|
||||
|
||||
# Upgrade to a specific version
|
||||
yarn twenty server upgrade 2.2.0
|
||||
```
|
||||
|
||||
If a newer image is available and the container was running, the upgrade command automatically starts a new container with the updated image. Run `yarn twenty server start` afterward to wait for it to become healthy. If the image hasn't changed, the container is left untouched.
|
||||
|
||||
You can verify the running version with `yarn twenty server status`, which displays the `APP_VERSION` from the container.
|
||||
|
||||
### Running a test instance
|
||||
|
||||
Pass `--test` to any `server` command to manage a second, fully isolated instance — useful for running integration tests or experimenting without touching your main dev data.
|
||||
@@ -234,9 +246,10 @@ Pass `--test` to any `server` command to manage a second, fully isolated instanc
|
||||
|---------|-------------|
|
||||
| `yarn twenty server start --test` | Start the test instance (defaults to port 2021) |
|
||||
| `yarn twenty server stop --test` | Stop the test instance |
|
||||
| `yarn twenty server status --test` | Show test instance status, URL, and credentials |
|
||||
| `yarn twenty server status --test` | Show test instance status, URL, version, and credentials |
|
||||
| `yarn twenty server logs --test` | Stream test instance logs |
|
||||
| `yarn twenty server reset --test` | Wipe test data and start fresh |
|
||||
| `yarn twenty server upgrade --test` | Upgrade the test instance image |
|
||||
|
||||
The test instance runs in its own Docker container (`twenty-app-dev-test`) with dedicated volumes (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) and config, so it can run in parallel with your main instance without conflicts. Combine `--test` with `--port` to override the default 2021.
|
||||
|
||||
|
||||
@@ -77,6 +77,39 @@ Pre-release tags work as expected: bumping `1.0.0-rc.1` → `1.0.0-rc.2` is allo
|
||||
|
||||
{/* TODO: add screenshot of the Upgrade button */}
|
||||
|
||||
### Server version compatibility
|
||||
|
||||
If your app uses a feature introduced in a specific Twenty server version (for example, OAuth providers added in v2.3.0), you should declare the minimum server version your app requires using the `engines.twenty` field in `package.json`:
|
||||
|
||||
```json filename="package.json"
|
||||
{
|
||||
"name": "twenty-my-app",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"twenty": ">=2.3.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The value is a standard [semver range](https://github.com/npm/node-semver#ranges). Common patterns:
|
||||
|
||||
| Range | Meaning |
|
||||
|-------|---------|
|
||||
| `>=2.3.0` | Any server from 2.3.0 onward |
|
||||
| `>=2.3.0 <3.0.0` | 2.3.0 or later, but below the next major |
|
||||
| `^2.3.0` | Same as `>=2.3.0 <3.0.0` |
|
||||
|
||||
**What happens at deploy and install time:**
|
||||
|
||||
- If `engines.twenty` is set and the target server's version does not satisfy the range, the deploy (tarball upload) or install is rejected with a `SERVER_VERSION_INCOMPATIBLE` error and a message indicating both the required range and the actual server version.
|
||||
- If `engines.twenty` is **not set**, the app is accepted on any server version (backward-compatible with existing apps).
|
||||
- If the server has no `APP_VERSION` configured, the check is skipped.
|
||||
|
||||
<Note>
|
||||
The server is the authoritative check — it validates `engines.twenty` on both tarball upload and workspace install. If you deploy a tarball out-of-band or install from the marketplace, the server still enforces compatibility.
|
||||
</Note>
|
||||
|
||||
## Automated CI/CD (scaffolded workflows)
|
||||
|
||||
Apps generated with `create-twenty-app` ship with two GitHub Actions workflows out of the box, under `.github/workflows/`. They are ready to run as soon as you push the repo to GitHub — no extra setup is needed for CI, and CD only requires a single secret.
|
||||
|
||||
@@ -36,8 +36,8 @@ Everything is detected via AST analysis at build time — no config files, no re
|
||||
## The developer experience
|
||||
|
||||
```bash
|
||||
npx create-twenty-app@latest my-app
|
||||
cd my-app
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
yarn twenty dev
|
||||
```
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 773 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 724 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 662 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 108 KiB |
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: Verbindungen
|
||||
description: Ermöglichen Sie Ihrer App, im Namen eines Benutzers über OAuth in Diensten von Drittanbietern zu handeln.
|
||||
icon: plug
|
||||
---
|
||||
|
||||
Verbindungen sind Anmeldedaten, die ein Benutzer für einen externen Dienst besitzt (Linear, GitHub, Slack, ...). Ihre App legt fest, **wie** diese Anmeldedaten bezogen werden — ein **Verbindungsanbieter** — und verwendet sie zur Laufzeit, um authentifizierte Aufrufe an die Drittanbieter-API zu tätigen.
|
||||
|
||||
Derzeit wird nur OAuth 2.0 unterstützt. Zukünftige Anmeldedatentypen (Personal Access Tokens, API-Schlüssel, Basic Auth) werden in dieselbe Oberfläche integriert — Apps, die bereits `defineConnectionProvider({ type: 'oauth', ... })` müssen nicht migriert werden.
|
||||
|
||||
<AccordionGroup>
|
||||
|
||||
<Accordion title="defineConnectionProvider" description="Legen Sie fest, wie die Verbindungen Ihrer App bezogen werden">
|
||||
|
||||
Ein Verbindungsanbieter beschreibt den OAuth-Handshake, den Ihre App benötigt. Der Benutzer klickt in den Einstellungen Ihrer App auf "Verbindung hinzufügen", schließt den Zustimmungsbildschirm des Anbieters ab, und in seinem Arbeitsbereich wird eine `ConnectedAccount`-Zeile erstellt.
|
||||
|
||||
Eine funktionierende Einrichtung benötigt **zwei Dateien** — den Verbindungsanbieter und eine passende `serverVariables`-Deklaration in `defineApplication`, die die OAuth-Client-Anmeldedaten enthält.
|
||||
|
||||
```ts src/connection-providers/linear-connection.ts
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: '9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f',
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
icon: 'IconBrandLinear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
scopes: ['read', 'write'],
|
||||
// These must match keys in `defineApplication.serverVariables` below.
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
// Optional: defaults to 'json'. Some providers (Linear, Slack) want
|
||||
// 'form-urlencoded' for the token request.
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Optional: defaults to true. Disable only if the provider rejects PKCE.
|
||||
usePkce: false,
|
||||
// Optional: extra query params on the authorize URL.
|
||||
// authorizationParams: { prompt: 'consent' },
|
||||
// Optional: provider's RFC 7009 token revocation endpoint, called on disconnect.
|
||||
// revokeEndpoint: 'https://example.com/oauth/revoke',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
```ts src/application.config.ts
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '...',
|
||||
displayName: 'Linear',
|
||||
description: 'Connect Linear to Twenty.',
|
||||
defaultRoleUniversalIdentifier: '...',
|
||||
// OAuth client credentials live on the app registration (one OAuth app per
|
||||
// Twenty server, configured by the admin) — not per-workspace. Declare them
|
||||
// as serverVariables so the admin can fill them in once for all installs.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description: 'OAuth client ID from your Linear OAuth application.',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description: 'OAuth client secret from your Linear OAuth application.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Hauptpunkte:
|
||||
|
||||
* `name` ist die eindeutige Bezeichner-Zeichenfolge, die in `listConnections({ providerName })` verwendet wird (kebab-case, muss `^[a-z][a-z0-9-]*$` entsprechen).
|
||||
* `displayName` wird im Einstellungs-Tab der jeweiligen App und in der KI-Toolliste angezeigt.
|
||||
* `clientIdVariable` / `clientSecretVariable` sind **Namen**, keine Werte — sie müssen den in `defineApplication.serverVariables` deklarierten Schlüsseln entsprechen. Die tatsächlichen `client_id` und `client_secret` werden vom Serveradministrator über die App-Registrierungsoberfläche eingegeben und niemals in Ihr Repository eingecheckt.
|
||||
* Verwenden Sie `serverVariables` (nicht `applicationVariables`) — OAuth-Anmeldedaten gelten serverweit und es gibt eine OAuth-App pro Twenty-Server.
|
||||
* Solange beide `serverVariables` nicht ausgefüllt sind, zeigt der Einstellungs-Tab pro App den Hinweis "Benötigt Server-Admin" an und der Button "Verbindung hinzufügen" ist deaktiviert.
|
||||
* `type: 'oauth'` ist derzeit der einzige unterstützte Wert. Der Diskriminator ist vorwärtskompatibel: zukünftige Typen (`'pat'`, `'api-key'`, ...) werden neue Unterkonfigurationsblöcke neben `oauth` hinzufügen.
|
||||
|
||||
Die OAuth-Callback-URL, die Ihr Anbieter auf die Whitelist setzen muss, lautet:
|
||||
|
||||
```
|
||||
https://<your-twenty-server>/apps/oauth/callback
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="listConnections / getConnection" description="Verbindungen aus einer Logikfunktion verwenden">
|
||||
|
||||
Innerhalb eines Logikfunktions-Handlers gibt `listConnections({ providerName })` die `ConnectedAccount`-Zeilen dieser App für den angegebenen Anbieter zurück, mit aktualisierten Zugriffstoken.
|
||||
|
||||
```ts src/logic-functions/handlers/create-linear-issue-handler.ts
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
export const createLinearIssueHandler = async (input: {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
}) => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return { success: false, error: 'teamId and title are required' };
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
|
||||
// Workspace-shared credentials win when present; fall back to the first
|
||||
// user-visibility one. For HTTP-route triggers you typically pick the
|
||||
// request user's connection via event.userWorkspaceId instead.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection".',
|
||||
};
|
||||
}
|
||||
|
||||
// Use connection.accessToken to call the third-party API.
|
||||
const response = await fetch('https://api.linear.app/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${connection.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: `mutation { issueCreate(input: { teamId: "${input.teamId}", title: "${input.title}" }) { success } }`,
|
||||
}),
|
||||
});
|
||||
|
||||
return { success: response.ok };
|
||||
};
|
||||
```
|
||||
|
||||
Jede Verbindung hat:
|
||||
|
||||
| Feld | Beschreibung |
|
||||
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Eindeutige Zeilen-ID; an `getConnection(id)` übergeben, um eine einzelne Verbindung erneut abzurufen |
|
||||
| `sichtbarkeit` | `'user'` (privat für ein Mitglied des Arbeitsbereichs) oder `'workspace'` (mit allen Mitgliedern geteilt) |
|
||||
| `geltungsbereiche` | Vom Upstream-Anbieter gewährte OAuth-Berechtigungen (unabhängig von `visibility` — diese sind nicht miteinander verknüpft) |
|
||||
| `userWorkspaceId` | Die userWorkspace-ID des Eigentümers — nützlich, um "die Verbindung des anfragenden Benutzers" in HTTP-Routen-Triggern auszuwählen |
|
||||
| `accessToken` | Frisches OAuth-Zugriffstoken (wird bei Ablauf automatisch erneuert) |
|
||||
| `name` / `handle` | Anzeigename der Verbindung (automatisch beim OAuth-Callback abgeleitet, vom Benutzer umbenennbar) |
|
||||
| `authFailedAt` | Gesetzt, wenn die jüngste Aktualisierung fehlgeschlagen ist; der Benutzer muss die Verbindung erneut herstellen |
|
||||
|
||||
Hauptpunkte:
|
||||
|
||||
* Übergeben Sie `{ providerName }`, um nach Anbieter zu filtern; lassen Sie es weg, um alle Verbindungen dieser App über alle Anbieter hinweg zu erhalten.
|
||||
* Der Server aktualisiert das Zugriffstoken vor der Rückgabe transparent. Ihr Handler sieht stets ein verwendbares Token (oder `authFailedAt` ist gesetzt).
|
||||
* `getConnection(id)` ist das Pendant für eine einzelne Zeile.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Sichtbarkeit: pro Benutzer vs. im Arbeitsbereich geteilt" description="Wie Benutzer zwischen privaten und geteilten Anmeldedaten wählen">
|
||||
|
||||
Wenn ein Benutzer auf "Verbindung hinzufügen" klickt, wird er aufgefordert, eine Sichtbarkeit auszuwählen:
|
||||
|
||||
* **Nur für mich** — die Anmeldedaten sind für den sich verbindenden Benutzer privat. Jede Logikfunktion, die in seinem/ihrem Auftrag aufgerufen wird (HTTP-Routen-Trigger mit `isAuthRequired: true`), sieht sie; Cron-Trigger und Datenbankereignisse nicht.
|
||||
* **Im Arbeitsbereich geteilt** — jedes Arbeitsbereichsmitglied kann die Anmeldedaten verwenden. Cron-/Datenbank-Trigger sehen sie ebenfalls, da sie keinen anfragenden Benutzer haben.
|
||||
|
||||
Verwenden Sie für jeden Handler die richtige Option:
|
||||
|
||||
```ts
|
||||
// HTTP-route trigger — prefer the request user's own connection.
|
||||
const conn =
|
||||
connections.find((c) => c.userWorkspaceId === event.userWorkspaceId) ??
|
||||
connections.find((c) => c.visibility === 'workspace');
|
||||
|
||||
// Cron trigger — no request user; only shared credentials are sensible.
|
||||
const conn = connections.find((c) => c.visibility === 'workspace');
|
||||
```
|
||||
|
||||
Mehrere Verbindungen pro (Benutzer, Anbieter) sind erlaubt, sodass derselbe Benutzer "Persönliches Linear" und "Arbeits-Linear" nebeneinander haben kann.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Einmalige Anbietereinrichtung" description="Registrieren Sie Ihre OAuth-App beim Drittanbieterdienst">
|
||||
|
||||
Für jeden Verbindungsanbieter muss der Serveradministrator zunächst eine OAuth-App beim Drittanbieter registrieren.
|
||||
|
||||
1. Gehen Sie zu den Entwickler-Einstellungen des Anbieters (z. B. https://linear.app/settings/api/applications/new).
|
||||
2. Setzen Sie die **Redirect-URI** auf `\<SERVER_URL>/apps/oauth/callback`.
|
||||
3. Kopieren Sie die generierte **Client ID** und das **Client Secret**.
|
||||
4. Öffnen Sie die installierte App in Twenty als Serveradministrator → setzen Sie die Werte in den entsprechenden `serverVariables`.
|
||||
5. Mitglieder des Arbeitsbereichs können dann Verbindungen im **Verbindungen**-Abschnitt der jeweiligen App hinzufügen.
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
@@ -77,7 +77,6 @@ export default defineApplication({
|
||||
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
||||
displayName: 'My Twenty App',
|
||||
description: 'My first Twenty app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -88,11 +88,11 @@ yarn twenty dev --verbose
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Der Dev-Modus ist nur auf Twenty-Instanzen verfügbar, die im Entwicklungsmodus laufen (`NODE_ENV=development`). Produktionsinstanzen lehnen Dev-Synchronisierungsanfragen ab. Verwenden Sie `yarn twenty deploy`, um auf Produktionsservern bereitzustellen — Details finden Sie unter [Apps veröffentlichen](/l/de/developers/extend/apps/publishing).
|
||||
Der Dev-Modus ist nur auf Twenty-Instanzen verfügbar, die im Entwicklungsmodus laufen (`NODE_ENV=development`). Produktionsinstanzen lehnen Dev-Synchronisierungsanfragen ab. Verwenden Sie `yarn twenty deploy`, gefolgt von `yarn twenty install`, um auf Produktionsservern zu veröffentlichen und zu installieren — `deploy` veröffentlicht im Anwendungsregister, während `install` es in einem angegebenen Arbeitsbereich installiert. Details finden Sie unter [Apps veröffentlichen](/l/de/developers/extend/apps/publishing).
|
||||
</Warning>
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Terminalausgabe im Dev-Modus" />
|
||||
<img src="/images/docs/developers/extends/apps/dev.png" alt="Terminalausgabe im Dev-Modus" />
|
||||
</div>
|
||||
|
||||
#### Einmalige Synchronisierung mit `yarn twenty dev --once`
|
||||
@@ -127,13 +127,7 @@ Klicken Sie auf **My twenty app**, um die **Anwendungsregistrierung** zu öffnen
|
||||
Klicken Sie auf **View installed app**, um die installierte App anzuzeigen. Die Registerkarte **About** zeigt die aktuelle Version und Verwaltungsoptionen:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Installierte App — Registerkarte About" />
|
||||
</div>
|
||||
|
||||
Wechseln Sie zur Registerkarte **Content**, um alles zu sehen, was Ihre App bereitstellt — Objekte, Felder, Logikfunktionen und Agenten:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-4.png" alt="Installierte App — Registerkarte Content" />
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Installierte App" />
|
||||
</div>
|
||||
|
||||
Alles erledigt! Bearbeiten Sie eine beliebige Datei in `src/`, und die Änderungen werden automatisch übernommen.
|
||||
@@ -213,30 +207,49 @@ Die Beispiele stammen aus dem Verzeichnis [twenty-apps/examples](https://github.
|
||||
|
||||
Der Scaffolder hat bereits einen lokalen Twenty-Server für Sie gestartet. Um ihn später zu verwalten, verwenden Sie `yarn twenty server`:
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
| -------------------------------------- | ----------------------------------------------------------- |
|
||||
| `yarn twenty server start` | Lokalen Server starten (lädt das Image bei Bedarf herunter) |
|
||||
| `yarn twenty server start --port 3030` | Auf einem benutzerdefinierten Port starten |
|
||||
| `yarn twenty server start --test` | Starten Sie eine separate Testinstanz auf Port 2021 |
|
||||
| `yarn twenty server stop` | Server stoppen (Daten bleiben erhalten) |
|
||||
| `yarn twenty server status` | Serverstatus, URL und Anmeldedaten anzeigen |
|
||||
| `yarn twenty server logs` | Serverprotokolle streamen |
|
||||
| `yarn twenty server logs --lines 100` | Die letzten 100 Protokollzeilen anzeigen |
|
||||
| `yarn twenty server reset` | Alle Daten löschen und neu starten |
|
||||
| Befehl | Beschreibung |
|
||||
| -------------------------------------- | -------------------------------------------------------------------------------- |
|
||||
| `yarn twenty server start` | Lokalen Server starten (lädt das Image bei Bedarf herunter) |
|
||||
| `yarn twenty server start --port 3030` | Auf einem benutzerdefinierten Port starten |
|
||||
| `yarn twenty server start --test` | Starten Sie eine separate Testinstanz auf Port 2021 |
|
||||
| `yarn twenty server stop` | Server stoppen (Daten bleiben erhalten) |
|
||||
| `yarn twenty server status` | Serverstatus, URL, Version und Anmeldedaten anzeigen |
|
||||
| `yarn twenty server logs` | Serverprotokolle streamen |
|
||||
| `yarn twenty server logs --lines 100` | Die letzten 100 Protokollzeilen anzeigen |
|
||||
| `yarn twenty server reset` | Alle Daten löschen und neu starten |
|
||||
| `yarn twenty server upgrade` | Das neueste `twenty-app-dev`-Image herunterladen und den Container neu erstellen |
|
||||
| `yarn twenty server upgrade 2.2.0` | Auf eine bestimmte Version aktualisieren |
|
||||
|
||||
Daten bleiben über Neustarts hinweg in zwei Docker-Volumes bestehen (`twenty-app-dev-data` für PostgreSQL, `twenty-app-dev-storage` für Dateien). Verwenden Sie `reset`, um alles zu löschen und neu zu beginnen.
|
||||
|
||||
### Aktualisieren des Server-Images
|
||||
|
||||
Verwenden Sie `yarn twenty server upgrade`, um nach einem neueren `twenty-app-dev`-Docker-Image zu suchen und den Container zu aktualisieren. Der Befehl lädt das Image herunter, vergleicht es mit dem, aus dem der Container erstellt wurde, und erstellt den Container nur neu, wenn sich das Image tatsächlich geändert hat. Ihre Daten-Volumes bleiben erhalten — nur der Container wird ersetzt.
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Upgrade to the latest version (skips recreation if already up to date)
|
||||
yarn twenty server upgrade
|
||||
|
||||
# Upgrade to a specific version
|
||||
yarn twenty server upgrade 2.2.0
|
||||
```
|
||||
|
||||
Wenn ein neueres Image verfügbar ist und der Container lief, startet der Upgrade-Befehl automatisch einen neuen Container mit dem aktualisierten Image. Führen Sie anschließend `yarn twenty server start` aus, um zu warten, bis er betriebsbereit ist. Wenn sich das Image nicht geändert hat, bleibt der Container unverändert.
|
||||
|
||||
Sie können die laufende Version mit `yarn twenty server status` überprüfen; dieser Befehl zeigt die `APP_VERSION` des Containers an.
|
||||
|
||||
### Eine Testinstanz ausführen
|
||||
|
||||
Übergeben Sie `--test` an jeden `server`-Befehl, um eine zweite, vollständig isolierte Instanz zu verwalten — nützlich, um Integrationstests auszuführen oder zu experimentieren, ohne Ihre Hauptentwicklungsdaten anzutasten.
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
| ---------------------------------- | ----------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Die Testinstanz starten (standardmäßig Port 2021) |
|
||||
| `yarn twenty server stop --test` | Die Testinstanz stoppen |
|
||||
| `yarn twenty server status --test` | Status, URL und Anmeldedaten der Testinstanz anzeigen |
|
||||
| `yarn twenty server logs --test` | Protokolle der Testinstanz streamen |
|
||||
| `yarn twenty server reset --test` | Alle Testdaten löschen und neu starten |
|
||||
| Befehl | Beschreibung |
|
||||
| ----------------------------------- | -------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Die Testinstanz starten (standardmäßig Port 2021) |
|
||||
| `yarn twenty server stop --test` | Die Testinstanz stoppen |
|
||||
| `yarn twenty server status --test` | Status, URL, Version und Anmeldedaten der Testinstanz anzeigen |
|
||||
| `yarn twenty server logs --test` | Protokolle der Testinstanz streamen |
|
||||
| `yarn twenty server reset --test` | Alle Testdaten löschen und neu starten |
|
||||
| `yarn twenty server upgrade --test` | Das Image der Testinstanz aktualisieren |
|
||||
|
||||
Die Testinstanz läuft in einem eigenen Docker-Container (`twenty-app-dev-test`) mit dedizierten Volumes (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) und eigener Konfiguration, sodass sie parallel zu Ihrer Hauptinstanz ohne Konflikte ausgeführt werden kann. Kombinieren Sie `--test` mit `--port`, um den Standardport 2021 zu überschreiben.
|
||||
|
||||
|
||||
@@ -77,6 +77,39 @@ Pre-Release-Tags funktionieren wie erwartet: Das Erhöhen von `1.0.0-rc.1` → `
|
||||
|
||||
{/* TODO: add screenshot of the Upgrade button */}
|
||||
|
||||
### Kompatibilität der Serverversionen
|
||||
|
||||
Wenn Ihre App eine Funktion verwendet, die in einer bestimmten Twenty-Serverversion eingeführt wurde (z. B. OAuth-Anbieter, die in v2.3.0 hinzugefügt wurden), sollten Sie die minimale Serverversion, die Ihre App benötigt, mithilfe des Felds `engines.twenty` in `package.json` angeben:
|
||||
|
||||
```json filename="package.json"
|
||||
{
|
||||
"name": "twenty-my-app",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"twenty": ">=2.3.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Der Wert ist ein standardmäßiger [semver-Bereich](https://github.com/npm/node-semver#ranges). Häufige Muster:
|
||||
|
||||
| Bereich | Bedeutung |
|
||||
| ---------------------------------- | ------------------------------------------------------ |
|
||||
| `>=2.3.0` | Jeder Server ab 2.3.0 |
|
||||
| `>=2.3.0 \<3.0.0` | 2.3.0 oder höher, aber unter der nächsten Hauptversion |
|
||||
| `^2.3.0` | Entspricht `>=2.3.0 \<3.0.0` |
|
||||
|
||||
**Was bei Bereitstellung und Installation passiert:**
|
||||
|
||||
* Wenn `engines.twenty` gesetzt ist und die Version des Zielservers den Bereich nicht erfüllt, wird die Bereitstellung (Tarball-Upload) oder Installation mit dem Fehler `SERVER_VERSION_INCOMPATIBLE` abgelehnt, zusammen mit einer Meldung, die sowohl den erforderlichen Bereich als auch die tatsächliche Serverversion angibt.
|
||||
* Wenn `engines.twenty` nicht gesetzt ist, wird die App auf jeder Serverversion akzeptiert (abwärtskompatibel mit bestehenden Apps).
|
||||
* Wenn auf dem Server keine `APP_VERSION` konfiguriert ist, wird die Prüfung übersprungen.
|
||||
|
||||
<Note>
|
||||
Der Server ist die maßgebliche Prüfinstanz — er validiert `engines.twenty` sowohl beim Tarball-Upload als auch bei der Workspace-Installation. Auch wenn Sie ein Tarball außerhalb des regulären Prozesses bereitstellen oder aus dem Marketplace installieren, erzwingt der Server weiterhin die Kompatibilität.
|
||||
</Note>
|
||||
|
||||
## Automatisiertes CI/CD (vorgefertigte Workflows)
|
||||
|
||||
Apps, die mit `create-twenty-app` erzeugt wurden, enthalten von Haus aus zwei GitHub-Actions-Workflows unter `.github/workflows/`. Sie sind einsatzbereit, sobald Sie das Repository zu GitHub pushen — für CI ist keine zusätzliche Einrichtung erforderlich, und für CD ist nur ein einziges Secret nötig.
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: Conexões
|
||||
description: Permita que seu aplicativo aja em nome de um usuário em serviços de terceiros via OAuth.
|
||||
icon: plug
|
||||
---
|
||||
|
||||
Conexões são credenciais que um usuário mantém para um serviço externo (Linear, GitHub, Slack, ...). Seu app declara **como** essas credenciais são obtidas — um **provedor de conexão** — e as consome em tempo de execução para fazer chamadas autenticadas à API de terceiros.
|
||||
|
||||
Atualmente, apenas o OAuth 2.0 tem suporte. Tipos de credenciais futuros (tokens de acesso pessoal, chaves de API, autenticação básica) serão conectados à mesma interface — apps que já usam `defineConnectionProvider({ type: 'oauth', ... })` não precisarão migrar.
|
||||
|
||||
<AccordionGroup>
|
||||
|
||||
<Accordion title="defineConnectionProvider" description="Declare como as conexões do seu app são obtidas">
|
||||
|
||||
Um provedor de conexão descreve o handshake OAuth de que seu app precisa. O usuário clica em "Adicionar conexão" nas configurações do seu app, conclui a tela de consentimento do provedor e uma linha `ConnectedAccount` é criada no seu workspace.
|
||||
|
||||
Uma configuração funcional precisa de **dois arquivos** — o provedor de conexão e uma declaração correspondente de `serverVariables` em `defineApplication` que contém as credenciais do cliente OAuth.
|
||||
|
||||
```ts src/connection-providers/linear-connection.ts
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: '9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f',
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
icon: 'IconBrandLinear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
scopes: ['read', 'write'],
|
||||
// These must match keys in `defineApplication.serverVariables` below.
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
// Optional: defaults to 'json'. Some providers (Linear, Slack) want
|
||||
// 'form-urlencoded' for the token request.
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Optional: defaults to true. Disable only if the provider rejects PKCE.
|
||||
usePkce: false,
|
||||
// Optional: extra query params on the authorize URL.
|
||||
// authorizationParams: { prompt: 'consent' },
|
||||
// Optional: provider's RFC 7009 token revocation endpoint, called on disconnect.
|
||||
// revokeEndpoint: 'https://example.com/oauth/revoke',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
```ts src/application.config.ts
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '...',
|
||||
displayName: 'Linear',
|
||||
description: 'Connect Linear to Twenty.',
|
||||
defaultRoleUniversalIdentifier: '...',
|
||||
// OAuth client credentials live on the app registration (one OAuth app per
|
||||
// Twenty server, configured by the admin) — not per-workspace. Declare them
|
||||
// as serverVariables so the admin can fill them in once for all installs.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description: 'OAuth client ID from your Linear OAuth application.',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description: 'OAuth client secret from your Linear OAuth application.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* `name` é a string de identificador exclusivo usada em `listConnections({ providerName })` (kebab-case, deve corresponder a `^[a-z][a-z0-9-]*$`).
|
||||
* `displayName` aparece na aba de configurações do app e na lista de ferramentas de IA.
|
||||
* `clientIdVariable` / `clientSecretVariable` são **nomes**, não valores — devem corresponder às chaves declaradas em `defineApplication.serverVariables`. Os `client_id` e `client_secret` reais são inseridos pelo administrador do servidor por meio da interface de registro do app e nunca são versionados no seu repositório.
|
||||
* Use `serverVariables` (não `applicationVariables`) — as credenciais OAuth são do servidor como um todo e há um app OAuth por servidor do Twenty.
|
||||
* Até que ambos os `serverVariables` sejam preenchidos, a aba de configurações do app mostra uma dica "precisa de administrador do servidor" e o botão "Adicionar conexão" fica desativado.
|
||||
* `type: 'oauth'` é o único valor compatível atualmente. O discriminador é compatível com versões futuras: tipos futuros (`'pat'`, `'api-key'`, ...) adicionarão novos blocos de subconfiguração ao lado de `oauth`.
|
||||
|
||||
O URL de callback do OAuth que seu provedor precisa adicionar à lista de permissões é:
|
||||
|
||||
```
|
||||
https://<your-twenty-server>/apps/oauth/callback
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="listConnections / getConnection" description="Use conexões a partir de uma função de lógica">
|
||||
|
||||
Dentro de um handler de função de lógica, `listConnections({ providerName })` retorna as linhas `ConnectedAccount` deste app para o provedor fornecido, com tokens de acesso atualizados.
|
||||
|
||||
```ts src/logic-functions/handlers/create-linear-issue-handler.ts
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
export const createLinearIssueHandler = async (input: {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
}) => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return { success: false, error: 'teamId and title are required' };
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
|
||||
// Workspace-shared credentials win when present; fall back to the first
|
||||
// user-visibility one. For HTTP-route triggers you typically pick the
|
||||
// request user's connection via event.userWorkspaceId instead.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection".',
|
||||
};
|
||||
}
|
||||
|
||||
// Use connection.accessToken to call the third-party API.
|
||||
const response = await fetch('https://api.linear.app/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${connection.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: `mutation { issueCreate(input: { teamId: "${input.teamId}", title: "${input.title}" }) { success } }`,
|
||||
}),
|
||||
});
|
||||
|
||||
return { success: response.ok };
|
||||
};
|
||||
```
|
||||
|
||||
Cada conexão tem:
|
||||
|
||||
| Campo | Descrição |
|
||||
| ----------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | ID de linha exclusivo; passe para `getConnection(id)` para buscar novamente um único registro |
|
||||
| `visibilidade` | `'user'` (privada para um membro do workspace) ou `'workspace'` (compartilhada com todos os membros) |
|
||||
| `escopos` | Permissões OAuth concedidas pelo provedor de origem (distintas de `visibility` — não têm relação) |
|
||||
| `userWorkspaceId` | O id de userWorkspace do proprietário — útil para selecionar "a conexão do usuário da requisição" em gatilhos de rota HTTP |
|
||||
| `accessToken` | Token de acesso OAuth recente (atualizado automaticamente se estiver expirado) |
|
||||
| `name` / `handle` | O nome de exibição da conexão (derivado automaticamente no callback do OAuth, renomeável pelo usuário) |
|
||||
| `authFailedAt` | Definido quando a atualização mais recente falhou; o usuário deve reconectar |
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* Passe `{ providerName }` para filtrar por provedor; omita para obter todas as conexões que este app possui em todos os provedores.
|
||||
* O servidor atualiza transparentemente o token de acesso antes de retornar. Seu handler sempre vê um token utilizável (ou `authFailedAt` definido).
|
||||
* `getConnection(id)` é o equivalente de uma única linha.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Visibilidade por usuário vs. compartilhada no workspace" description="Como os usuários escolhem entre credenciais privadas e compartilhadas">
|
||||
|
||||
Quando um usuário clica em "Adicionar conexão", é solicitado que escolha uma visibilidade:
|
||||
|
||||
* **Apenas para mim** — a credencial é privada para o usuário que a conectou. Qualquer função de lógica chamada em seu nome (gatilho de rota HTTP com `isAuthRequired: true`) a vê; gatilhos cron e eventos de banco de dados não.
|
||||
* **Compartilhada no workspace** — qualquer membro do workspace pode usar a credencial. Gatilhos de cron / banco de dados também a veem, pois não há um usuário da requisição.
|
||||
|
||||
Use a adequada para cada handler:
|
||||
|
||||
```ts
|
||||
// HTTP-route trigger — prefer the request user's own connection.
|
||||
const conn =
|
||||
connections.find((c) => c.userWorkspaceId === event.userWorkspaceId) ??
|
||||
connections.find((c) => c.visibility === 'workspace');
|
||||
|
||||
// Cron trigger — no request user; only shared credentials are sensible.
|
||||
const conn = connections.find((c) => c.visibility === 'workspace');
|
||||
```
|
||||
|
||||
Várias conexões por (usuário, provedor) são permitidas, então o mesmo usuário pode manter "Linear pessoal" e "Linear de trabalho" lado a lado.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Configuração única do provedor" description="Registre seu app OAuth no serviço de terceiros">
|
||||
|
||||
Para cada provedor de conexão, o administrador do servidor precisa primeiro registrar um app OAuth no serviço de terceiros.
|
||||
|
||||
1. Acesse as configurações de desenvolvedor do provedor (por exemplo, https://linear.app/settings/api/applications/new).
|
||||
2. Defina a **URI de redirecionamento** como `\<SERVER_URL>/apps/oauth/callback`.
|
||||
3. Copie o **ID do cliente** e o **Segredo do cliente** gerados.
|
||||
4. Abra o app instalado no Twenty como administrador do servidor → defina os valores nos `serverVariables` correspondentes.
|
||||
5. Os membros do workspace podem então adicionar conexões na seção **Conexões** de cada app.
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
@@ -77,7 +77,6 @@ export default defineApplication({
|
||||
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
||||
displayName: 'My Twenty App',
|
||||
description: 'My first Twenty app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -88,11 +88,11 @@ yarn twenty dev --verbose
|
||||
```
|
||||
|
||||
<Warning>
|
||||
O modo de desenvolvimento só está disponível em instâncias do Twenty em modo de desenvolvimento (`NODE_ENV=development`). Instâncias de produção rejeitam solicitações de sincronização de desenvolvimento. Use `yarn twenty deploy` para fazer o deploy em servidores de produção — veja [Publicando aplicativos](/l/pt/developers/extend/apps/publishing) para detalhes.
|
||||
O modo de desenvolvimento só está disponível em instâncias do Twenty em modo de desenvolvimento (`NODE_ENV=development`). Instâncias de produção rejeitam solicitações de sincronização de desenvolvimento. Use `yarn twenty deploy` seguido de `yarn twenty install` para publicar e instalar em servidores de produção — `deploy` publica no registro de aplicativos, enquanto `install` o instala em um determinado workspace. Veja [Publicação de aplicativos](/l/pt/developers/extend/apps/publishing) para detalhes.
|
||||
</Warning>
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Saída do terminal no modo de desenvolvimento" />
|
||||
<img src="/images/docs/developers/extends/apps/dev.png" alt="Saída do terminal no modo de desenvolvimento" />
|
||||
</div>
|
||||
|
||||
#### Sincronização única com `yarn twenty dev --once`
|
||||
@@ -127,13 +127,7 @@ Clique em **My twenty app** para abrir o seu **registro do aplicativo**. Um regi
|
||||
Clique em **View installed app** para ver o aplicativo instalado. A aba **About** mostra a versão atual e as opções de gerenciamento:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Aplicativo instalado — aba About" />
|
||||
</div>
|
||||
|
||||
Altere para a aba **Content** para ver tudo o que seu aplicativo oferece — objetos, campos, funções de lógica e agentes:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-4.png" alt="Aplicativo instalado — aba Content" />
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Aplicação instalada" />
|
||||
</div>
|
||||
|
||||
Tudo pronto! Edite qualquer arquivo em `src/` e as alterações serão detectadas automaticamente.
|
||||
@@ -213,30 +207,49 @@ Os exemplos são obtidos do diretório [twenty-apps/examples](https://github.com
|
||||
|
||||
A ferramenta de scaffolding já iniciou um servidor local do Twenty para você. Para gerenciá-lo depois, use `yarn twenty server`:
|
||||
|
||||
| Comando | Descrição |
|
||||
| -------------------------------------- | ------------------------------------------------------ |
|
||||
| `yarn twenty server start` | Inicia o servidor local (baixa a imagem se necessário) |
|
||||
| `yarn twenty server start --port 3030` | Iniciar em uma porta personalizada |
|
||||
| `yarn twenty server start --test` | Inicie uma instância de teste separada na porta 2021 |
|
||||
| `yarn twenty server stop` | Interrompe o servidor (preserva os dados) |
|
||||
| `yarn twenty server status` | Mostra o status do servidor, a URL e as credenciais |
|
||||
| `yarn twenty server logs` | Transmite os logs do servidor |
|
||||
| `yarn twenty server logs --lines 100` | Mostra as últimas 100 linhas de log |
|
||||
| `yarn twenty server reset` | Exclui todos os dados e inicia do zero |
|
||||
| Comando | Descrição |
|
||||
| -------------------------------------- | ----------------------------------------------------------------- |
|
||||
| `yarn twenty server start` | Inicia o servidor local (baixa a imagem se necessário) |
|
||||
| `yarn twenty server start --port 3030` | Iniciar em uma porta personalizada |
|
||||
| `yarn twenty server start --test` | Inicie uma instância de teste separada na porta 2021 |
|
||||
| `yarn twenty server stop` | Interrompe o servidor (preserva os dados) |
|
||||
| `yarn twenty server status` | Mostra o status do servidor, a URL, a versão e as credenciais |
|
||||
| `yarn twenty server logs` | Transmite os logs do servidor |
|
||||
| `yarn twenty server logs --lines 100` | Mostra as últimas 100 linhas de log |
|
||||
| `yarn twenty server reset` | Exclui todos os dados e inicia do zero |
|
||||
| `yarn twenty server upgrade` | Baixe a imagem mais recente `twenty-app-dev` e recrie o contêiner |
|
||||
| `yarn twenty server upgrade 2.2.0` | Atualizar para uma versão específica |
|
||||
|
||||
Os dados são persistidos entre reinicializações em dois volumes do Docker (`twenty-app-dev-data` para PostgreSQL, `twenty-app-dev-storage` para arquivos). Use `reset` para apagar tudo e começar do zero.
|
||||
|
||||
### Atualizando a imagem do servidor
|
||||
|
||||
Use `yarn twenty server upgrade` para verificar se há uma imagem do Docker `twenty-app-dev` mais recente e atualizar o container. O comando baixa a imagem, a compara com aquela a partir da qual o container foi criado e só recria o container se a imagem realmente tiver sido alterada. Seus volumes de dados são preservados — apenas o container é substituído.
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Upgrade to the latest version (skips recreation if already up to date)
|
||||
yarn twenty server upgrade
|
||||
|
||||
# Upgrade to a specific version
|
||||
yarn twenty server upgrade 2.2.0
|
||||
```
|
||||
|
||||
Se uma imagem mais recente estiver disponível e o container estiver em execução, o comando de atualização iniciará automaticamente um novo container com a imagem atualizada. Em seguida, execute `yarn twenty server start` para aguardar até que ele fique saudável. Se a imagem não tiver mudado, o container permanece inalterado.
|
||||
|
||||
Você pode verificar a versão em execução com `yarn twenty server status`, que exibe o `APP_VERSION` do container.
|
||||
|
||||
### Executando uma instância de teste
|
||||
|
||||
Passe `--test` para qualquer comando de `server` para gerenciar uma segunda instância totalmente isolada — útil para executar testes de integração ou experimentar sem tocar nos seus dados principais de desenvolvimento.
|
||||
|
||||
| Comando | Descrição |
|
||||
| ---------------------------------- | ------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Inicia a instância de teste (padrão: porta 2021) |
|
||||
| `yarn twenty server stop --test` | Interrompe a instância de teste |
|
||||
| `yarn twenty server status --test` | Mostra o status da instância de teste, a URL e as credenciais |
|
||||
| `yarn twenty server logs --test` | Transmite os logs da instância de teste |
|
||||
| `yarn twenty server reset --test` | Exclui os dados de teste e inicia do zero |
|
||||
| Comando | Descrição |
|
||||
| ----------------------------------- | ----------------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Inicia a instância de teste (padrão: porta 2021) |
|
||||
| `yarn twenty server stop --test` | Interrompe a instância de teste |
|
||||
| `yarn twenty server status --test` | Mostra o status da instância de teste, a URL, a versão e as credenciais |
|
||||
| `yarn twenty server logs --test` | Transmite os logs da instância de teste |
|
||||
| `yarn twenty server reset --test` | Exclui os dados de teste e inicia do zero |
|
||||
| `yarn twenty server upgrade --test` | Atualiza a imagem da instância de teste |
|
||||
|
||||
A instância de teste é executada em seu próprio contêiner Docker (`twenty-app-dev-test`) com volumes dedicados (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) e configuração própria, para que possa ser executada em paralelo com sua instância principal sem conflitos. Combine `--test` com `--port` para substituir a porta padrão 2021.
|
||||
|
||||
|
||||
@@ -77,6 +77,39 @@ Tags de pré-lançamento funcionam como esperado: incrementar `1.0.0-rc.1` → `
|
||||
|
||||
{/* TODO: add screenshot of the Upgrade button */}
|
||||
|
||||
### Compatibilidade da versão do servidor
|
||||
|
||||
Se o seu aplicativo usar um recurso introduzido em uma versão específica do servidor Twenty (por exemplo, provedores OAuth adicionados na v2.3.0), você deve declarar a versão mínima do servidor que seu aplicativo requer usando o campo `engines.twenty` em `package.json`:
|
||||
|
||||
```json filename="package.json"
|
||||
{
|
||||
"name": "twenty-my-app",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"twenty": ">=2.3.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
O valor é um [intervalo semver](https://github.com/npm/node-semver#ranges) padrão. Padrões comuns:
|
||||
|
||||
| Intervalo | Significado |
|
||||
| ---------------------------------- | ---------------------------------------------------------- |
|
||||
| `>=2.3.0` | Qualquer servidor a partir de 2.3.0 |
|
||||
| `>=2.3.0 \<3.0.0` | 2.3.0 ou posterior, mas abaixo da próxima versão principal |
|
||||
| `^2.3.0` | O mesmo que `>=2.3.0 \<3.0.0` |
|
||||
|
||||
**O que acontece no momento da implantação e da instalação:**
|
||||
|
||||
* Se `engines.twenty` estiver definido e a versão do servidor de destino não satisfizer o intervalo, a implantação (upload do tarball) ou a instalação será rejeitada com o erro `SERVER_VERSION_INCOMPATIBLE` e uma mensagem indicando tanto o intervalo exigido quanto a versão real do servidor.
|
||||
* Se `engines.twenty` **não estiver definido**, o aplicativo é aceito em qualquer versão do servidor (retrocompatível com os aplicativos existentes).
|
||||
* Se o servidor não tiver `APP_VERSION` configurado, a verificação será ignorada.
|
||||
|
||||
<Note>
|
||||
O servidor realiza a verificação definitiva — ele valida `engines.twenty` tanto no upload do tarball quanto na instalação no workspace. Se você implantar um tarball fora de banda ou instalar a partir do marketplace, o servidor ainda impõe a compatibilidade.
|
||||
</Note>
|
||||
|
||||
## CI/CD automatizado (fluxos de trabalho pré-configurados)
|
||||
|
||||
Os apps gerados com `create-twenty-app` já vêm com dois fluxos de trabalho do GitHub Actions prontos, em `.github/workflows/`. Eles estão prontos para executar assim que você fizer push do repositório para o GitHub — nenhuma configuração extra é necessária para CI, e CD requer apenas um único segredo.
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: Подключения
|
||||
description: Разрешите вашему приложению действовать от имени пользователя в сторонних сервисах с помощью OAuth.
|
||||
icon: plug
|
||||
---
|
||||
|
||||
Подключения — это учетные данные, которыми пользователь располагает для внешнего сервиса (Linear, GitHub, Slack, ...). Ваше приложение определяет, **как** получают эти учетные данные — через **провайдера подключения** — и использует их во время выполнения для выполнения аутентифицированных вызовов к стороннему API.
|
||||
|
||||
На данный момент поддерживается только OAuth 2.0. Будущие типы учетных данных (персональные токены доступа, ключи API, базовая аутентификация) будут подключаться к тому же интерфейсу — приложения, уже использующие `defineConnectionProvider({ type: 'oauth', ... })` не потребуют миграции.
|
||||
|
||||
<AccordionGroup>
|
||||
|
||||
<Accordion title="defineConnectionProvider" description="Определите, как в вашем приложении получаются подключения">
|
||||
|
||||
Провайдер подключения описывает процедуру OAuth-обмена, которая требуется вашему приложению. Пользователь нажимает "Добавить подключение" в настройках вашего приложения, подтверждает разрешения на экране согласия провайдера, и в его рабочем пространстве создается запись `ConnectedAccount`.
|
||||
|
||||
Рабочей конфигурации нужны **два файла** — провайдер подключения и соответствующее объявление `serverVariables` в `defineApplication`, которое содержит учетные данные клиента OAuth.
|
||||
|
||||
```ts src/connection-providers/linear-connection.ts
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: '9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f',
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
icon: 'IconBrandLinear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
scopes: ['read', 'write'],
|
||||
// These must match keys in `defineApplication.serverVariables` below.
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
// Optional: defaults to 'json'. Some providers (Linear, Slack) want
|
||||
// 'form-urlencoded' for the token request.
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Optional: defaults to true. Disable only if the provider rejects PKCE.
|
||||
usePkce: false,
|
||||
// Optional: extra query params on the authorize URL.
|
||||
// authorizationParams: { prompt: 'consent' },
|
||||
// Optional: provider's RFC 7009 token revocation endpoint, called on disconnect.
|
||||
// revokeEndpoint: 'https://example.com/oauth/revoke',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
```ts src/application.config.ts
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '...',
|
||||
displayName: 'Linear',
|
||||
description: 'Connect Linear to Twenty.',
|
||||
defaultRoleUniversalIdentifier: '...',
|
||||
// OAuth client credentials live on the app registration (one OAuth app per
|
||||
// Twenty server, configured by the admin) — not per-workspace. Declare them
|
||||
// as serverVariables so the admin can fill them in once for all installs.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description: 'OAuth client ID from your Linear OAuth application.',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description: 'OAuth client secret from your Linear OAuth application.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* `name` — это уникальная строка-идентификатор, используемая в `listConnections({ providerName })` (kebab-case, должна соответствовать `^[a-z][a-z0-9-]*$`).
|
||||
* `displayName` отображается на вкладке настроек приложения и в списке инструментов ИИ.
|
||||
* `clientIdVariable` / `clientSecretVariable` — это **имена**, а не значения — они должны совпадать с ключами, объявленными в `defineApplication.serverVariables`. Фактические `client_id` и `client_secret` вводятся администратором сервера через интерфейс регистрации приложения и никогда не коммитятся в ваш репозиторий.
|
||||
* Используйте `serverVariables` (не `applicationVariables`) — учетные данные OAuth являются общими для сервера, и на каждом сервере Twenty используется одно приложение OAuth.
|
||||
* Пока оба `serverVariables` не заполнены, на вкладке настроек приложения показывается подсказка "нужен администратор сервера", а кнопка "Добавить подключение" отключена.
|
||||
* `type: 'oauth'` — единственное поддерживаемое сегодня значение. Дискриминатор совместим с будущими версиями: будущие типы (`'pat'`, `'api-key'`, ...) добавят новые блоки подконфигурации рядом с `oauth`.
|
||||
|
||||
URL обратного вызова OAuth, который вашему провайдеру нужно добавить в список разрешенных:
|
||||
|
||||
```
|
||||
https://<your-twenty-server>/apps/oauth/callback
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="listConnections / getConnection" description="Используйте подключения из логической функции">
|
||||
|
||||
Внутри обработчика логической функции `listConnections({ providerName })` возвращает записи `ConnectedAccount` этого приложения для указанного провайдера с обновленными токенами доступа.
|
||||
|
||||
```ts src/logic-functions/handlers/create-linear-issue-handler.ts
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
export const createLinearIssueHandler = async (input: {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
}) => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return { success: false, error: 'teamId and title are required' };
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
|
||||
// Workspace-shared credentials win when present; fall back to the first
|
||||
// user-visibility one. For HTTP-route triggers you typically pick the
|
||||
// request user's connection via event.userWorkspaceId instead.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection".',
|
||||
};
|
||||
}
|
||||
|
||||
// Use connection.accessToken to call the third-party API.
|
||||
const response = await fetch('https://api.linear.app/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${connection.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: `mutation { issueCreate(input: { teamId: "${input.teamId}", title: "${input.title}" }) { success } }`,
|
||||
}),
|
||||
});
|
||||
|
||||
return { success: response.ok };
|
||||
};
|
||||
```
|
||||
|
||||
Каждое подключение имеет:
|
||||
|
||||
| Поле | Описание |
|
||||
| ----------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Уникальный идентификатор записи; передайте его в `getConnection(id)`, чтобы повторно получить одну запись |
|
||||
| `visibility` | `'user'` (приватно для одного участника рабочего пространства) или `'workspace'` (доступно всем участникам) |
|
||||
| `scopes` | Разрешения OAuth, предоставленные внешним провайдером (отличаются от `visibility` — это несвязанные вещи) |
|
||||
| `userWorkspaceId` | Идентификатор userWorkspace владельца — полезно для выбора "подключения пользователя запроса" в триггерах HTTP-маршрутов |
|
||||
| `accessToken` | Актуальный токен доступа OAuth (обновляется автоматически при истечении срока действия) |
|
||||
| `name` / `handle` | Отображаемое имя подключения (автоматически определяется при обратном вызове OAuth, может быть переименовано пользователем) |
|
||||
| `authFailedAt` | Устанавливается, если последняя попытка обновления не удалась; пользователю нужно переподключиться |
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* Передайте `{ providerName }`, чтобы отфильтровать по провайдеру; опустите, чтобы получить все подключения этого приложения у всех провайдеров.
|
||||
* Сервер прозрачно обновляет токен доступа перед возвратом. Ваш обработчик всегда получает рабочий токен (или установлено `authFailedAt`).
|
||||
* `getConnection(id)` — эквивалент для одной записи.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Индивидуальная и общая для рабочего пространства видимость" description="Как пользователи выбирают между приватными и общими учетными данными">
|
||||
|
||||
Когда пользователь нажимает "Добавить подключение", ему предлагается выбрать видимость:
|
||||
|
||||
* **Только для меня** — учетные данные приватны для подключившегося пользователя. Любая логическая функция, вызываемая от его имени (триггер HTTP-маршрута с `isAuthRequired: true`), видит их; триггеры cron и события базы данных — нет.
|
||||
* **Общее для рабочего пространства** — любой участник рабочего пространства может использовать эти учетные данные. Триггеры cron/базы данных также видят их, поскольку у них нет пользователя запроса.
|
||||
|
||||
Используйте подходящий вариант для каждого обработчика:
|
||||
|
||||
```ts
|
||||
// HTTP-route trigger — prefer the request user's own connection.
|
||||
const conn =
|
||||
connections.find((c) => c.userWorkspaceId === event.userWorkspaceId) ??
|
||||
connections.find((c) => c.visibility === 'workspace');
|
||||
|
||||
// Cron trigger — no request user; only shared credentials are sensible.
|
||||
const conn = connections.find((c) => c.visibility === 'workspace');
|
||||
```
|
||||
|
||||
Допускается несколько подключений на пару (пользователь, провайдер), поэтому один и тот же пользователь может иметь "Personal Linear" и "Work Linear" одновременно.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Единоразовая настройка провайдера" description="Зарегистрируйте свое приложение OAuth у стороннего сервиса">
|
||||
|
||||
Для каждого провайдера подключения администратору сервера сначала нужно зарегистрировать у стороннего сервиса приложение OAuth.
|
||||
|
||||
1. Перейдите в настройки разработчика провайдера (например, https://linear.app/settings/api/applications/new).
|
||||
2. Установите **Redirect URI** в значение `\<SERVER_URL>/apps/oauth/callback`.
|
||||
3. Скопируйте сгенерированные **Client ID** и **Client Secret**.
|
||||
4. Откройте установленное приложение в Twenty под учетной записью администратора сервера → задайте значения в соответствующих `serverVariables`.
|
||||
5. Затем участники рабочего пространства смогут добавлять подключения в разделе **Подключения** конкретного приложения.
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
@@ -77,7 +77,6 @@ export default defineApplication({
|
||||
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
||||
displayName: 'My Twenty App',
|
||||
description: 'My first Twenty app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -88,11 +88,11 @@ yarn twenty dev --verbose
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Режим разработки доступен только на экземплярах Twenty, запущенных в режиме разработки (`NODE_ENV=development`). Экземпляры в продакшене отклоняют запросы синхронизации из режима разработки. Используйте `yarn twenty deploy` для развёртывания на продакшен-серверах — подробности см. в разделе [Публикация приложений](/l/ru/developers/extend/apps/publishing).
|
||||
Режим разработки доступен только на экземплярах Twenty, запущенных в режиме разработки (`NODE_ENV=development`). Экземпляры в продакшене отклоняют запросы синхронизации из режима разработки. Используйте `yarn twenty deploy`, а затем `yarn twenty install`, чтобы выполнить публикацию и установку на продакшн-серверах — `deploy` публикует в реестр приложений, а `install` устанавливает его в указанное рабочее пространство. См. [Публикация приложений](/l/ru/developers/extend/apps/publishing) для подробностей.
|
||||
</Warning>
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Вывод терминала в режиме разработки" />
|
||||
<img src="/images/docs/developers/extends/apps/dev.png" alt="Вывод терминала в режиме разработки" />
|
||||
</div>
|
||||
|
||||
#### Разовая синхронизация с `yarn twenty dev --once`
|
||||
@@ -127,13 +127,7 @@ yarn twenty dev --once
|
||||
Нажмите **View installed app**, чтобы посмотреть установленное приложение. Вкладка **About** показывает текущую версию и параметры управления:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Установленное приложение — вкладка About" />
|
||||
</div>
|
||||
|
||||
Переключитесь на вкладку **Content**, чтобы увидеть всё, что предоставляет ваше приложение: объекты, поля, логические функции и агенты:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-4.png" alt="Установленное приложение — вкладка Content" />
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Установленное приложение" />
|
||||
</div>
|
||||
|
||||
Готово! Отредактируйте любой файл в `src/`, и изменения будут подхвачены автоматически.
|
||||
@@ -213,30 +207,49 @@ npx create-twenty-app@latest my-twenty-app --example postcard
|
||||
|
||||
Генератор каркаса уже запустил для вас локальный сервер Twenty. Чтобы управлять им позже, используйте `yarn twenty server`:
|
||||
|
||||
| Команда | Описание |
|
||||
| -------------------------------------- | -------------------------------------------------------------- |
|
||||
| `yarn twenty server start` | Запустить локальный сервер (при необходимости скачивает образ) |
|
||||
| `yarn twenty server start --port 3030` | Запустить на пользовательском порту |
|
||||
| `yarn twenty server start --test` | Запускает отдельный тестовый экземпляр на порту 2021 |
|
||||
| `yarn twenty server stop` | Остановить сервер (данные сохраняются) |
|
||||
| `yarn twenty server status` | Показать состояние сервера, URL и учётные данные |
|
||||
| `yarn twenty server logs` | Потоковый вывод журналов сервера |
|
||||
| `yarn twenty server logs --lines 100` | Показать последние 100 строк журнала |
|
||||
| `yarn twenty server reset` | Удалить все данные и начать с чистого листа |
|
||||
| Команда | Описание |
|
||||
| -------------------------------------- | ------------------------------------------------------------------ |
|
||||
| `yarn twenty server start` | Запустить локальный сервер (при необходимости скачивает образ) |
|
||||
| `yarn twenty server start --port 3030` | Запустить на пользовательском порту |
|
||||
| `yarn twenty server start --test` | Запускает отдельный тестовый экземпляр на порту 2021 |
|
||||
| `yarn twenty server stop` | Остановить сервер (данные сохраняются) |
|
||||
| `yarn twenty server status` | Показать состояние сервера, URL, версию и учётные данные |
|
||||
| `yarn twenty server logs` | Потоковый вывод журналов сервера |
|
||||
| `yarn twenty server logs --lines 100` | Показать последние 100 строк журнала |
|
||||
| `yarn twenty server reset` | Удалить все данные и начать с чистого листа |
|
||||
| `yarn twenty server upgrade` | Загрузить последний образ `twenty-app-dev` и пересоздать контейнер |
|
||||
| `yarn twenty server upgrade 2.2.0` | Обновить до конкретной версии |
|
||||
|
||||
Данные сохраняются между перезапусками в двух томах Docker (`twenty-app-dev-data` для PostgreSQL, `twenty-app-dev-storage` для файлов). Используйте `reset`, чтобы стереть всё и начать заново.
|
||||
|
||||
### Обновление образа сервера
|
||||
|
||||
Используйте `yarn twenty server upgrade`, чтобы проверить наличие более нового Docker-образа `twenty-app-dev` и обновить контейнер. Команда скачивает образ, сравнивает его с тем, из которого был создан контейнер, и пересоздаёт контейнер только если образ действительно изменился. Ваши тома данных сохраняются — заменяется только контейнер.
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Upgrade to the latest version (skips recreation if already up to date)
|
||||
yarn twenty server upgrade
|
||||
|
||||
# Upgrade to a specific version
|
||||
yarn twenty server upgrade 2.2.0
|
||||
```
|
||||
|
||||
Если доступен более новый образ и контейнер был запущен, команда обновления автоматически запускает новый контейнер с обновлённым образом. Затем выполните `yarn twenty server start`, чтобы дождаться перехода контейнера в состояние healthy. Если образ не изменился, контейнер остаётся без изменений.
|
||||
|
||||
Вы можете проверить запущенную версию с помощью `yarn twenty server status` — эта команда показывает `APP_VERSION` из контейнера.
|
||||
|
||||
### Запуск тестового экземпляра
|
||||
|
||||
Передайте `--test` любой команде `server`, чтобы управлять вторым, полностью изолированным экземпляром — это полезно для запуска интеграционных тестов или экспериментов, не затрагивая ваши основные данные разработки.
|
||||
|
||||
| Команда | Описание |
|
||||
| ---------------------------------- | ------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Запустить тестовый экземпляр (по умолчанию — порт 2021) |
|
||||
| `yarn twenty server stop --test` | Остановить тестовый экземпляр |
|
||||
| `yarn twenty server status --test` | Показать состояние тестового экземпляра, URL и учётные данные |
|
||||
| `yarn twenty server logs --test` | Выводить журналы тестового экземпляра в потоковом режиме |
|
||||
| `yarn twenty server reset --test` | Удалить тестовые данные и начать с чистого листа |
|
||||
| Команда | Описание |
|
||||
| ----------------------------------- | --------------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Запустить тестовый экземпляр (по умолчанию — порт 2021) |
|
||||
| `yarn twenty server stop --test` | Остановить тестовый экземпляр |
|
||||
| `yarn twenty server status --test` | Показать состояние тестового экземпляра, URL, версию и учётные данные |
|
||||
| `yarn twenty server logs --test` | Выводить журналы тестового экземпляра в потоковом режиме |
|
||||
| `yarn twenty server reset --test` | Удалить тестовые данные и начать с чистого листа |
|
||||
| `yarn twenty server upgrade --test` | Обновить образ тестового экземпляра |
|
||||
|
||||
Тестовый экземпляр запускается в собственном контейнере Docker (`twenty-app-dev-test`) с выделенными томами (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) и собственной конфигурацией, поэтому он может работать параллельно с вашим основным экземпляром без конфликтов. Совместите `--test` с `--port`, чтобы переопределить значение по умолчанию (2021).
|
||||
|
||||
|
||||
@@ -77,6 +77,39 @@ When updating an already deployed tarball app, the server requires the `version`
|
||||
|
||||
{/* TODO: add screenshot of the Upgrade button */}
|
||||
|
||||
### Совместимость версий сервера
|
||||
|
||||
Если ваше приложение использует функцию, появившуюся в конкретной версии сервера Twenty (например, провайдеры OAuth, добавленные в v2.3.0), следует объявить минимальную требуемую версию сервера с помощью поля `engines.twenty` в `package.json`:
|
||||
|
||||
```json filename="package.json"
|
||||
{
|
||||
"name": "twenty-my-app",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"twenty": ">=2.3.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Значение — это стандартный [диапазон semver](https://github.com/npm/node-semver#ranges). Типовые шаблоны:
|
||||
|
||||
| Диапазон | Значение |
|
||||
| ---------------------------------- | -------------------------------------------------- |
|
||||
| `>=2.3.0` | Любой сервер версии 2.3.0 и новее |
|
||||
| `>=2.3.0 \<3.0.0` | 2.3.0 или новее, но ниже следующей мажорной версии |
|
||||
| `^2.3.0` | То же, что и `>=2.3.0 \<3.0.0` |
|
||||
|
||||
**Что происходит при развёртывании и установке:**
|
||||
|
||||
* Если `engines.twenty` задано и версия целевого сервера не удовлетворяет диапазону, развёртывание (загрузка tarball-архива) или установка отклоняются с ошибкой `SERVER_VERSION_INCOMPATIBLE` и сообщением, указывающим как требуемый диапазон, так и фактическую версию сервера.
|
||||
* Если `engines.twenty` **не задано**, приложение принимается на сервере любой версии (обратная совместимость с существующими приложениями).
|
||||
* Если на сервере `APP_VERSION` не задано, проверка пропускается.
|
||||
|
||||
<Note>
|
||||
Сервер выполняет окончательную проверку — он проверяет `engines.twenty` как при загрузке tarball-архива, так и при установке в рабочем пространстве. Если вы развёртываете tarball вне стандартного процесса или устанавливаете из маркетплейса, сервер всё равно принудительно проверяет совместимость.
|
||||
</Note>
|
||||
|
||||
## Автоматизированный CI/CD (рабочие процессы, сгенерированные шаблоном)
|
||||
|
||||
Приложения, созданные с помощью `create-twenty-app`, «из коробки» включают два рабочих процесса GitHub Actions в каталоге `.github/workflows/`. Они готовы к запуску, как только вы запушите репозиторий на GitHub — для CI не требуется дополнительной настройки, а для CD нужен лишь один секрет.
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: Bağlantılar
|
||||
description: Uygulamanızın, OAuth aracılığıyla üçüncü taraf hizmetlerde kullanıcı adına işlem yapmasına izin verin.
|
||||
icon: plug
|
||||
---
|
||||
|
||||
Bağlantılar, bir kullanıcının harici bir hizmet için (Linear, GitHub, Slack, ...) sahip olduğu kimlik bilgileridir. Uygulamanız bu kimlik bilgilerinin **nasıl** elde edildiğini — bir **bağlantı sağlayıcısı** — bildirir ve çalışma zamanında üçüncü taraf API'sine kimlik doğrulamalı çağrılar yapmak için bunları kullanır.
|
||||
|
||||
Bugün yalnızca OAuth 2.0 destekleniyor. Gelecekteki kimlik bilgisi türleri (kişisel erişim belirteçleri, API anahtarları, basic auth) aynı yüzeye bağlanacak — halihazırda `defineConnectionProvider({ type: 'oauth', ... })` kullanan uygulamaların geçiş yapması gerekmeyecek.
|
||||
|
||||
<AccordionGroup>
|
||||
|
||||
<Accordion title="defineConnectionProvider" description="Uygulamanızın bağlantılarının nasıl elde edildiğini belirtin">
|
||||
|
||||
Bir bağlantı sağlayıcısı, uygulamanızın ihtiyaç duyduğu OAuth el sıkışmasını açıklar. Kullanıcı, uygulamanızın ayarlarında "Bağlantı ekle"ye tıklar, sağlayıcının izin ekranını tamamlar ve çalışma alanında bir `ConnectedAccount` satırı oluşturulur.
|
||||
|
||||
Çalışan bir kurulum **iki dosya** gerektirir — bağlantı sağlayıcısı ve OAuth istemci kimlik bilgilerini tutan `defineApplication` üzerindeki eşleşen bir `serverVariables` bildirimi.
|
||||
|
||||
```ts src/connection-providers/linear-connection.ts
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: '9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f',
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
icon: 'IconBrandLinear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
scopes: ['read', 'write'],
|
||||
// These must match keys in `defineApplication.serverVariables` below.
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
// Optional: defaults to 'json'. Some providers (Linear, Slack) want
|
||||
// 'form-urlencoded' for the token request.
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Optional: defaults to true. Disable only if the provider rejects PKCE.
|
||||
usePkce: false,
|
||||
// Optional: extra query params on the authorize URL.
|
||||
// authorizationParams: { prompt: 'consent' },
|
||||
// Optional: provider's RFC 7009 token revocation endpoint, called on disconnect.
|
||||
// revokeEndpoint: 'https://example.com/oauth/revoke',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
```ts src/application.config.ts
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '...',
|
||||
displayName: 'Linear',
|
||||
description: 'Connect Linear to Twenty.',
|
||||
defaultRoleUniversalIdentifier: '...',
|
||||
// OAuth client credentials live on the app registration (one OAuth app per
|
||||
// Twenty server, configured by the admin) — not per-workspace. Declare them
|
||||
// as serverVariables so the admin can fill them in once for all installs.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description: 'OAuth client ID from your Linear OAuth application.',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description: 'OAuth client secret from your Linear OAuth application.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* `name`, `listConnections({ providerName })` içinde kullanılan benzersiz tanımlayıcı dizedir (kebab-case, `^[a-z][a-z0-9-]*$` ile eşleşmelidir).
|
||||
* `displayName` uygulama başına ayarlar sekmesinde ve Yapay Zeka araç listesinde gösterilir.
|
||||
* `clientIdVariable` / `clientSecretVariable` değer değil, **isimdir** — `defineApplication.serverVariables` içinde bildirilen anahtarlarla eşleşmelidir. Gerçek `client_id` ve `client_secret`, sunucu yöneticisi tarafından uygulama kayıt arayüzü üzerinden girilir; deponuza asla commit edilmez.
|
||||
* `serverVariables` kullanın (`applicationVariables` değil) — OAuth kimlik bilgileri sunucu genelidir ve her Twenty sunucusu için bir OAuth uygulaması vardır.
|
||||
* Her iki `serverVariables` da doldurulana kadar, uygulama başına ayarlar sekmesi "sunucu yöneticisine ihtiyaç var" ipucunu gösterir ve "Bağlantı ekle" düğmesi devre dışı bırakılır.
|
||||
* `type: 'oauth'` bugün desteklenen tek değerdir. Seçici ileriye dönük uyumludur: gelecekteki türler (`'pat'`, `'api-key'`, ...) `oauth` yanında yeni alt yapılandırma blokları eklenecektir.
|
||||
|
||||
Sağlayıcınızın beyaz listeye alması gereken OAuth geri çağrı URL'si şudur:
|
||||
|
||||
```
|
||||
https://<your-twenty-server>/apps/oauth/callback
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="listConnections / getConnection" description="Bir mantık işlevinden bağlantıları kullanın">
|
||||
|
||||
Bir mantık işlevi işleyicisi içinde, `listConnections({ providerName })`, verilen sağlayıcı için bu uygulamanın `ConnectedAccount` satırlarını, yenilenmiş erişim belirteçleriyle döndürür.
|
||||
|
||||
```ts src/logic-functions/handlers/create-linear-issue-handler.ts
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
export const createLinearIssueHandler = async (input: {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
}) => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return { success: false, error: 'teamId and title are required' };
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
|
||||
// Workspace-shared credentials win when present; fall back to the first
|
||||
// user-visibility one. For HTTP-route triggers you typically pick the
|
||||
// request user's connection via event.userWorkspaceId instead.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection".',
|
||||
};
|
||||
}
|
||||
|
||||
// Use connection.accessToken to call the third-party API.
|
||||
const response = await fetch('https://api.linear.app/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${connection.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: `mutation { issueCreate(input: { teamId: "${input.teamId}", title: "${input.title}" }) { success } }`,
|
||||
}),
|
||||
});
|
||||
|
||||
return { success: response.ok };
|
||||
};
|
||||
```
|
||||
|
||||
Her bağlantı şunlara sahiptir:
|
||||
|
||||
| Alan | Açıklama |
|
||||
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `id` | Tekil satır kimliği; tek bir tanesini yeniden getirmek için `getConnection(id)` işlevine iletin |
|
||||
| `visibility` | `'user'` (bir çalışma alanı üyesine özel) veya `'workspace'` (tüm üyelerle paylaşılan) |
|
||||
| `scopes` | Üst sağlayıcı tarafından verilen OAuth izinleri (`visibility` ile karıştırılmamalıdır — bunlar ilişkili değildir) |
|
||||
| `userWorkspaceId` | Sahibinin userWorkspace kimliği — HTTP rota tetikleyicilerinde "istek kullanıcısının bağlantısını" seçmek için kullanışlıdır |
|
||||
| `accessToken` | Yeni OAuth erişim belirteci (süresi dolmuşsa otomatik olarak yenilenir) |
|
||||
| `name` / `handle` | Bağlantının görünen adı (OAuth geri çağrısında otomatik türetilir, kullanıcı tarafından yeniden adlandırılabilir) |
|
||||
| `authFailedAt` | En son yenileme başarısız olduğunda ayarlanır; kullanıcı yeniden bağlanmalıdır |
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* Sağlayıcıya göre filtrelemek için `{ providerName }` iletin; bu uygulamanın tüm sağlayıcılardaki tüm bağlantılarını almak için bunu atlayın.
|
||||
* Sunucu, döndürmeden önce erişim belirtecini şeffaf bir şekilde yeniler. İşleyiciniz her zaman kullanılabilir bir belirteç görür (veya `authFailedAt` ayarlanmıştır).
|
||||
* `getConnection(id)`, tek satırlık karşılığıdır.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Kullanıcıya özel ve çalışma alanı paylaşımlı görünürlük" description="Kullanıcıların özel ve paylaşılan kimlik bilgileri arasında nasıl seçim yaptığı">
|
||||
|
||||
Bir kullanıcı "Bağlantı ekle"ye tıkladığında, bir görünürlük seçmesi istenir:
|
||||
|
||||
* **Yalnızca benim için** — kimlik bilgisi, bağlanan kullanıcıya özeldir. Adlarına çağrılan herhangi bir mantık işlevi (`isAuthRequired: true` ile HTTP rota tetikleyicisi) bunu görür; cron tetikleyicileri ve veritabanı olayları görmez.
|
||||
* **Çalışma alanı paylaşımlı** — herhangi bir çalışma alanı üyesi bu kimlik bilgisini kullanabilir. Cron / veritabanı tetikleyicileri de görür, çünkü istek kullanıcısı yoktur.
|
||||
|
||||
Her işleyici için doğru olanı kullanın:
|
||||
|
||||
```ts
|
||||
// HTTP-route trigger — prefer the request user's own connection.
|
||||
const conn =
|
||||
connections.find((c) => c.userWorkspaceId === event.userWorkspaceId) ??
|
||||
connections.find((c) => c.visibility === 'workspace');
|
||||
|
||||
// Cron trigger — no request user; only shared credentials are sensible.
|
||||
const conn = connections.find((c) => c.visibility === 'workspace');
|
||||
```
|
||||
|
||||
Kullanıcı ve sağlayıcı başına birden çok bağlantıya izin verilir; böylece aynı kullanıcı "Personal Linear" ve "Work Linear" bağlantılarını yan yana tutabilir.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Tek seferlik sağlayıcı kurulumu" description="OAuth uygulamanızı üçüncü taraf hizmete kaydedin">
|
||||
|
||||
Her bağlantı sağlayıcısı için, sunucu yöneticisinin önce üçüncü tarafta bir OAuth uygulaması kaydetmesi gerekir.
|
||||
|
||||
1. Sağlayıcının geliştirici ayarlarına gidin (örn. https://linear.app/settings/api/applications/new).
|
||||
2. **Redirect URI**'yi `\<SERVER_URL>/apps/oauth/callback` olarak ayarlayın.
|
||||
3. Oluşturulan **Client ID** ve **Client Secret**'ı kopyalayın.
|
||||
4. Yüklü uygulamayı Twenty'de bir sunucu yöneticisi olarak açın → karşılık gelen `serverVariables` üzerinde değerleri ayarlayın.
|
||||
5. Ardından çalışma alanı üyeleri, uygulama başına **Bağlantılar** bölümünden bağlantılar ekleyebilir.
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
@@ -77,7 +77,6 @@ export default defineApplication({
|
||||
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
||||
displayName: 'My Twenty App',
|
||||
description: 'My first Twenty app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -88,11 +88,11 @@ yarn twenty dev --verbose
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Geliştirme modu yalnızca geliştirme ortamında (`NODE_ENV=development`) çalışan Twenty örneklerinde kullanılabilir. Üretim örnekleri geliştirme eşitleme isteklerini reddeder. Üretim sunucularına dağıtmak için `yarn twenty deploy` komutunu kullanın — ayrıntılar için [Uygulamaları Yayınlama](/l/tr/developers/extend/apps/publishing) bölümüne bakın.
|
||||
Geliştirme modu yalnızca geliştirme ortamında (`NODE_ENV=development`) çalışan Twenty örneklerinde kullanılabilir. Üretim örnekleri geliştirme eşitleme isteklerini reddeder. Canlı sunucularda yayımlamak ve yüklemek için önce `yarn twenty deploy`, ardından `yarn twenty install` komutlarını kullanın — `deploy` uygulama kayıt defterine yayımlar, `install` ise bunu belirli bir çalışma alanına yükler. Ayrıntılar için [Uygulamaları Yayımlama](/l/tr/developers/extend/apps/publishing) bölümüne bakın.
|
||||
</Warning>
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="Geliştirme modu terminal çıktısı" />
|
||||
<img src="/images/docs/developers/extends/apps/dev.png" alt="Geliştirme modu terminal çıktısı" />
|
||||
</div>
|
||||
|
||||
#### Tek seferlik eşitleme `yarn twenty dev --once` ile
|
||||
@@ -127,13 +127,7 @@ Tarayıcınızda [http://localhost:2020/settings/applications#developer](http://
|
||||
Yüklü uygulamayı görmek için **View installed app**'e tıklayın. **About** sekmesi, geçerli sürümü ve yönetim seçeneklerini gösterir:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Yüklü uygulama — About sekmesi" />
|
||||
</div>
|
||||
|
||||
Uygulamanızın sağladığı her şeyi — nesneler, alanlar, mantık işlevleri ve ajanlar — görmek için **Content** sekmesine geçin:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-4.png" alt="Yüklü uygulama — Content sekmesi" />
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Yüklü uygulama" />
|
||||
</div>
|
||||
|
||||
Her şey hazır! `src/` içindeki herhangi bir dosyayı düzenleyin; değişiklikler otomatik olarak alınacaktır.
|
||||
@@ -213,30 +207,49 @@ npx create-twenty-app@latest my-twenty-app --example postcard
|
||||
|
||||
İskelet oluşturucu sizin için zaten yerel bir Twenty sunucusu başlattı. Daha sonra yönetmek için `yarn twenty server` komutunu kullanın:
|
||||
|
||||
| Komut | Açıklama |
|
||||
| -------------------------------------- | --------------------------------------------------------------- |
|
||||
| `yarn twenty server start` | Yerel sunucuyu başlatır (gerekirse imajı çeker) |
|
||||
| `yarn twenty server start --port 3030` | Özel bir portta başlatır |
|
||||
| `yarn twenty server start --test` | 2021 numaralı bağlantı noktasında ayrı bir test örneği başlatın |
|
||||
| `yarn twenty server stop` | Sunucuyu durdurur (verileri korur) |
|
||||
| `yarn twenty server status` | Sunucu durumunu, URL'yi ve kimlik bilgilerini gösterir |
|
||||
| `yarn twenty server logs` | Sunucu günlüklerini akış olarak iletir |
|
||||
| `yarn twenty server logs --lines 100` | Son 100 günlük satırını gösterir |
|
||||
| `yarn twenty server reset` | Tüm verileri siler ve sıfırdan başlatır |
|
||||
| Komut | Açıklama |
|
||||
| -------------------------------------- | --------------------------------------------------------------------- |
|
||||
| `yarn twenty server start` | Yerel sunucuyu başlatır (gerekirse imajı çeker) |
|
||||
| `yarn twenty server start --port 3030` | Özel bir portta başlatır |
|
||||
| `yarn twenty server start --test` | 2021 numaralı bağlantı noktasında ayrı bir test örneği başlatın |
|
||||
| `yarn twenty server stop` | Sunucuyu durdurur (verileri korur) |
|
||||
| `yarn twenty server status` | Sunucu durumunu, URL'yi, sürümü ve kimlik bilgilerini gösterir |
|
||||
| `yarn twenty server logs` | Sunucu günlüklerini akış olarak iletir |
|
||||
| `yarn twenty server logs --lines 100` | Son 100 günlük satırını gösterir |
|
||||
| `yarn twenty server reset` | Tüm verileri siler ve sıfırdan başlatır |
|
||||
| `yarn twenty server upgrade` | En son `twenty-app-dev` imajını çeker ve konteyneri yeniden oluşturur |
|
||||
| `yarn twenty server upgrade 2.2.0` | Belirli bir sürüme yükseltin |
|
||||
|
||||
Veriler, yeniden başlatmalar arasında iki Docker biriminde kalıcıdır (PostgreSQL için `twenty-app-dev-data`, dosyalar için `twenty-app-dev-storage`). Her şeyi silip baştan başlamak için `reset` kullanın.
|
||||
|
||||
### Sunucu imajını yükseltme
|
||||
|
||||
Daha yeni bir `twenty-app-dev` Docker imajı olup olmadığını kontrol etmek ve konteyneri güncellemek için `yarn twenty server upgrade` komutunu kullanın. Komut imajı çeker, konteynerin oluşturulduğu imajla karşılaştırır ve imaj gerçekten değiştiyse yalnızca konteyneri yeniden oluşturur. Veri birimleriniz korunur — yalnızca konteyner değiştirilir.
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Upgrade to the latest version (skips recreation if already up to date)
|
||||
yarn twenty server upgrade
|
||||
|
||||
# Upgrade to a specific version
|
||||
yarn twenty server upgrade 2.2.0
|
||||
```
|
||||
|
||||
Daha yeni bir imaj mevcutsa ve konteyner çalışıyorsa, yükseltme komutu güncellenmiş imajla yeni bir konteyneri otomatik olarak başlatır. Ardından sağlıklı hale gelmesini beklemek için `yarn twenty server start` komutunu çalıştırın. İmaj değişmediyse, konteyner olduğu gibi bırakılır.
|
||||
|
||||
`yarn twenty server status` ile çalışan sürümü doğrulayabilirsiniz; bu komut, konteynerden `APP_VERSION` değerini görüntüler.
|
||||
|
||||
### Test örneği çalıştırma
|
||||
|
||||
`server` komutlarının herhangi birine `--test` parametresini vererek ikinci, tamamen yalıtılmış bir örneği yönetin — entegrasyon testlerini çalıştırmak veya ana geliştirme verilerinize dokunmadan denemeler yapmak için kullanışlıdır.
|
||||
|
||||
| Komut | Açıklama |
|
||||
| ---------------------------------- | -------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Test örneğini başlatır (varsayılan bağlantı noktası 2021'dir) |
|
||||
| `yarn twenty server stop --test` | Test örneğini durdurur |
|
||||
| `yarn twenty server status --test` | Test örneğinin durumunu, URL'yi ve kimlik bilgilerini gösterir |
|
||||
| `yarn twenty server logs --test` | Test örneği günlüklerini akış olarak iletir |
|
||||
| `yarn twenty server reset --test` | Test verilerini siler ve sıfırdan başlatır |
|
||||
| Komut | Açıklama |
|
||||
| ----------------------------------- | ---------------------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Test örneğini başlatır (varsayılan bağlantı noktası 2021'dir) |
|
||||
| `yarn twenty server stop --test` | Test örneğini durdurur |
|
||||
| `yarn twenty server status --test` | Test örneğinin durumunu, URL'yi, sürümü ve kimlik bilgilerini gösterir |
|
||||
| `yarn twenty server logs --test` | Test örneği günlüklerini akış olarak iletir |
|
||||
| `yarn twenty server reset --test` | Test verilerini siler ve sıfırdan başlatır |
|
||||
| `yarn twenty server upgrade --test` | Test örneğinin imajını yükseltin |
|
||||
|
||||
Test örneği, kendine ait bir Docker konteynerinde (`twenty-app-dev-test`), ayrılmış birimlerle (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) ve yapılandırmayla çalışır; böylece ana örneğinizle çakışma olmadan paralel olarak çalışabilir. Varsayılan 2021'i geçersiz kılmak için `--test` ile `--port`'u birlikte kullanın.
|
||||
|
||||
|
||||
@@ -77,6 +77,39 @@ Bir güncelleme yayımlamak için:
|
||||
|
||||
{/* TODO: add screenshot of the Upgrade button */}
|
||||
|
||||
### Sunucu sürümü uyumluluğu
|
||||
|
||||
Uygulamanız belirli bir Twenty sunucu sürümünde sunulan bir özelliği kullanıyorsa (örneğin, v2.3.0'da eklenen OAuth sağlayıcıları), uygulamanızın gerektirdiği en düşük sunucu sürümünü `package.json` içindeki `engines.twenty` alanını kullanarak belirtmelisiniz:
|
||||
|
||||
```json filename="package.json"
|
||||
{
|
||||
"name": "twenty-my-app",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"twenty": ">=2.3.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Değer, standart bir [semver aralığı](https://github.com/npm/node-semver#ranges)dır. Yaygın Kalıplar:
|
||||
|
||||
| Aralık | Anlam |
|
||||
| ---------------------------------- | --------------------------------------------------------- |
|
||||
| `>=2.3.0` | 2.3.0'dan itibaren herhangi bir sunucu |
|
||||
| `>=2.3.0 \<3.0.0` | 2.3.0 veya sonrası, ancak bir sonraki ana sürümün altında |
|
||||
| `^2.3.0` | `>=2.3.0 \<3.0.0` ile aynı |
|
||||
|
||||
**Dağıtım ve yükleme sırasında ne olur:**
|
||||
|
||||
* `engines.twenty` ayarlanmışsa ve hedef sunucunun sürümü aralığı karşılamıyorsa, dağıtım (tarball yüklemesi) veya yükleme, gerekli aralığı ve gerçek sunucu sürümünü belirten bir mesajla birlikte `SERVER_VERSION_INCOMPATIBLE` hatasıyla reddedilir.
|
||||
* `engines.twenty` **ayarlı değilse**, uygulama herhangi bir sunucu sürümünde kabul edilir (mevcut uygulamalarla geriye dönük uyumludur).
|
||||
* Sunucuda `APP_VERSION` yapılandırılmamışsa, denetim atlanır.
|
||||
|
||||
<Note>
|
||||
Nihai denetim sunucudadır — hem tarball yüklemesinde hem de çalışma alanı (workspace) kurulumunda `engines.twenty`'yi doğrular. Bir tarball'ı bant dışı dağıtırsanız veya marketplace'ten kurarsanız, sunucu yine de uyumluluğu zorunlu kılar.
|
||||
</Note>
|
||||
|
||||
## Otomatik CI/CD (hazır şablonlu iş akışları)
|
||||
|
||||
`create-twenty-app` ile oluşturulan uygulamalar, kutudan çıktığı gibi `.github/workflows/` altında iki GitHub Actions iş akışıyla gelir. Depoyu GitHub’a iter itmez çalışmaya hazırdır — CI için ek bir kurulum gerekmez ve CD yalnızca tek bir gizli anahtar gerektirir.
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: 连接
|
||||
description: Let your app act on a user's behalf in third-party services via OAuth.
|
||||
icon: plug
|
||||
---
|
||||
|
||||
连接是用户为外部服务(Linear、GitHub、Slack 等)持有的凭据。 你的应用声明**如何**获取这些凭据——即**连接提供程序**——并在运行时使用它们向第三方 API 发起认证调用。
|
||||
|
||||
目前仅支持 OAuth 2.0。 将来的凭据类型(个人访问令牌、API 密钥、基本身份验证)将接入相同的接口——已经使用 `defineConnectionProvider({ type: 'oauth', ... })` 的应用将无需迁移。
|
||||
|
||||
<AccordionGroup>
|
||||
|
||||
<Accordion title="defineConnectionProvider" description="声明你的应用如何获取连接">
|
||||
|
||||
连接提供程序描述了你的应用所需的 OAuth 握手流程。 用户在你的应用设置中点击"添加连接",完成提供方的授权同意页面后,会在其工作区中创建一条 `ConnectedAccount` 行。
|
||||
|
||||
一个可用的配置需要**两个文件**——连接提供程序,以及在 `defineApplication` 上与之匹配、用于保存 OAuth 客户端凭据的 `serverVariables` 声明。
|
||||
|
||||
```ts src/connection-providers/linear-connection.ts
|
||||
import { defineConnectionProvider } from 'twenty-sdk/define';
|
||||
|
||||
export default defineConnectionProvider({
|
||||
universalIdentifier: '9c7d1f5e-6a0b-4d44-be0c-3f8b5a9d4e6f',
|
||||
name: 'linear',
|
||||
displayName: 'Linear',
|
||||
icon: 'IconBrandLinear',
|
||||
type: 'oauth',
|
||||
oauth: {
|
||||
authorizationEndpoint: 'https://linear.app/oauth/authorize',
|
||||
tokenEndpoint: 'https://api.linear.app/oauth/token',
|
||||
scopes: ['read', 'write'],
|
||||
// These must match keys in `defineApplication.serverVariables` below.
|
||||
clientIdVariable: 'LINEAR_CLIENT_ID',
|
||||
clientSecretVariable: 'LINEAR_CLIENT_SECRET',
|
||||
// Optional: defaults to 'json'. Some providers (Linear, Slack) want
|
||||
// 'form-urlencoded' for the token request.
|
||||
tokenRequestContentType: 'form-urlencoded',
|
||||
// Optional: defaults to true. Disable only if the provider rejects PKCE.
|
||||
usePkce: false,
|
||||
// Optional: extra query params on the authorize URL.
|
||||
// authorizationParams: { prompt: 'consent' },
|
||||
// Optional: provider's RFC 7009 token revocation endpoint, called on disconnect.
|
||||
// revokeEndpoint: 'https://example.com/oauth/revoke',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
```ts src/application.config.ts
|
||||
import { defineApplication } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '...',
|
||||
displayName: 'Linear',
|
||||
description: 'Connect Linear to Twenty.',
|
||||
defaultRoleUniversalIdentifier: '...',
|
||||
// OAuth client credentials live on the app registration (one OAuth app per
|
||||
// Twenty server, configured by the admin) — not per-workspace. Declare them
|
||||
// as serverVariables so the admin can fill them in once for all installs.
|
||||
serverVariables: {
|
||||
LINEAR_CLIENT_ID: {
|
||||
description: 'OAuth client ID from your Linear OAuth application.',
|
||||
isSecret: false,
|
||||
isRequired: true,
|
||||
},
|
||||
LINEAR_CLIENT_SECRET: {
|
||||
description: 'OAuth client secret from your Linear OAuth application.',
|
||||
isSecret: true,
|
||||
isRequired: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
关键点:
|
||||
|
||||
* `name` 是在 `listConnections({ providerName })` 中使用的唯一标识符字符串(短横线命名(kebab-case),必须匹配 `^[a-z][a-z0-9-]*$`)。
|
||||
* `displayName` 会显示在每个应用的设置选项卡以及 AI 工具列表中。
|
||||
* `clientIdVariable` / `clientSecretVariable` 是**名称**,而不是值——它们必须与 `defineApplication.serverVariables` 中声明的键匹配。 实际的 `client_id` 和 `client_secret` 由服务器管理员通过应用注册 UI 输入,绝不会提交到你的仓库。
|
||||
* 请使用 `serverVariables`(而非 `applicationVariables`)——OAuth 凭据是服务器范围的,并且每个 Twenty 服务器只配置一个 OAuth 应用。
|
||||
* 在两个 `serverVariables` 都填写之前,每个应用的设置选项卡会显示"需要服务器管理员"的提示,并且"添加连接"按钮将被禁用。
|
||||
* `type: 'oauth'` 是目前唯一受支持的取值。 该判别器具备前向兼容性:未来的类型(`'pat'`、`'api-key'` 等) 将会与 `oauth` 并列新增子配置块。
|
||||
|
||||
你的提供方需要加入白名单的 OAuth 回调 URL 为:
|
||||
|
||||
```
|
||||
https://<your-twenty-server>/apps/oauth/callback
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="listConnections / getConnection" description="在逻辑函数中使用连接">
|
||||
|
||||
在逻辑函数处理器内,`listConnections({ providerName })` 会返回此应用针对给定提供方的 `ConnectedAccount` 行,并附带已刷新的访问令牌。
|
||||
|
||||
```ts src/logic-functions/handlers/create-linear-issue-handler.ts
|
||||
import { listConnections } from 'twenty-sdk/logic-function';
|
||||
|
||||
export const createLinearIssueHandler = async (input: {
|
||||
teamId?: string;
|
||||
title?: string;
|
||||
}) => {
|
||||
if (!input.teamId || !input.title) {
|
||||
return { success: false, error: 'teamId and title are required' };
|
||||
}
|
||||
|
||||
const connections = await listConnections({ providerName: 'linear' });
|
||||
|
||||
// Workspace-shared credentials win when present; fall back to the first
|
||||
// user-visibility one. For HTTP-route triggers you typically pick the
|
||||
// request user's connection via event.userWorkspaceId instead.
|
||||
const connection =
|
||||
connections.find((c) => c.visibility === 'workspace') ?? connections[0];
|
||||
|
||||
if (!connection) {
|
||||
return {
|
||||
success: false,
|
||||
error:
|
||||
'Linear is not connected. Open the app settings and click "Add connection".',
|
||||
};
|
||||
}
|
||||
|
||||
// Use connection.accessToken to call the third-party API.
|
||||
const response = await fetch('https://api.linear.app/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${connection.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query: `mutation { issueCreate(input: { teamId: "${input.teamId}", title: "${input.title}" }) { success } }`,
|
||||
}),
|
||||
});
|
||||
|
||||
return { success: response.ok };
|
||||
};
|
||||
```
|
||||
|
||||
每个连接包含:
|
||||
|
||||
| 字段 | 描述 |
|
||||
| ----------------- | ---------------------------------------------------- |
|
||||
| `id` | 唯一的行 id;传给 `getConnection(id)` 以重新获取单个连接 |
|
||||
| `可见性` | `'user'`(仅对单个工作区成员私有)或 `'workspace'`(与所有成员共享) |
|
||||
| `范围` | 上游提供方授予的 OAuth 权限(不同于 `visibility`——两者不相关) |
|
||||
| `userWorkspaceId` | 所有者的 userWorkspace id——在 HTTP 路由触发器中用于选择"请求用户的连接"很有用 |
|
||||
| `accessToken` | 最新的 OAuth 访问令牌(若已过期会自动刷新) |
|
||||
| `name` / `handle` | 连接的显示名称(在 OAuth 回调时自动生成,用户可重命名) |
|
||||
| `authFailedAt` | 当最近一次刷新失败时会设置;用户必须重新连接 |
|
||||
|
||||
关键点:
|
||||
|
||||
* 传入 `{ providerName }` 以按提供方筛选;省略它则可获取此应用在所有提供方上的全部连接。
|
||||
* 服务器会在返回前透明地刷新访问令牌。 你的处理器始终会拿到可用的令牌(或已设置 `authFailedAt`)。
|
||||
* `getConnection(id)` 是获取单行记录的对应方法。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="按用户与工作区共享的可见性" description="用户如何在私有与共享凭据之间进行选择">
|
||||
|
||||
当用户点击"添加连接"时,系统会提示其选择可见性:
|
||||
|
||||
* **仅限我**——该凭据仅对连接的用户私有。 代表其调用的任何逻辑函数(带有 `isAuthRequired: true` 的 HTTP 路由触发器)都可以看到它;Cron 触发器和数据库事件则不可。
|
||||
* **工作区共享**——任何工作区成员都可以使用该凭据。 Cron / 数据库触发器也可以使用它,因为它们没有请求用户。
|
||||
|
||||
为每个处理器使用合适的类型:
|
||||
|
||||
```ts
|
||||
// HTTP-route trigger — prefer the request user's own connection.
|
||||
const conn =
|
||||
connections.find((c) => c.userWorkspaceId === event.userWorkspaceId) ??
|
||||
connections.find((c) => c.visibility === 'workspace');
|
||||
|
||||
// Cron trigger — no request user; only shared credentials are sensible.
|
||||
const conn = connections.find((c) => c.visibility === 'workspace');
|
||||
```
|
||||
|
||||
每个(用户、提供方)允许有多个连接,因此同一用户可以同时拥有"个人 Linear"和"工作 Linear"。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="一次性提供方设置" description="在第三方服务中注册你的 OAuth 应用">
|
||||
|
||||
对于每个连接提供方,服务器管理员需要先在第三方注册一个 OAuth 应用。
|
||||
|
||||
1. 前往提供方的开发者设置(例如 https://linear.app/settings/api/applications/new)。
|
||||
2. 将**Redirect URI** 设置为 `\<SERVER_URL>/apps/oauth/callback`。
|
||||
3. 复制生成的**Client ID**和**Client Secret**。
|
||||
4. 以服务器管理员身份在 Twenty 中打开已安装的应用 → 在相应的 `serverVariables` 上设置这些值。
|
||||
5. 之后,工作区成员可以在每个应用的**连接**部分添加连接。
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
@@ -77,7 +77,6 @@ export default defineApplication({
|
||||
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
||||
displayName: 'My Twenty App',
|
||||
description: 'My first Twenty app',
|
||||
icon: 'IconWorld',
|
||||
applicationVariables: {
|
||||
DEFAULT_RECIPIENT_NAME: {
|
||||
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
||||
|
||||
@@ -88,11 +88,11 @@ yarn twenty dev --verbose
|
||||
```
|
||||
|
||||
<Warning>
|
||||
开发模式仅适用于以开发模式运行的 Twenty 实例(`NODE_ENV=development`)。 生产实例会拒绝开发同步请求。 使用 `yarn twenty deploy` 部署到生产服务器——详见[发布应用](/l/zh/developers/extend/apps/publishing)。
|
||||
开发模式仅适用于以开发模式运行的 Twenty 实例(`NODE_ENV=development`)。 生产实例会拒绝开发同步请求。 使用 `yarn twenty deploy`,然后执行 `yarn twenty install`,即可在生产服务器上发布并安装 — `deploy` 会发布到应用注册表,而 `install` 会在指定的工作区中进行安装。 详情请参见[发布应用](/l/zh/developers/extend/apps/publishing)。
|
||||
</Warning>
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/dev.jpg" alt="开发模式终端输出" />
|
||||
<img src="/images/docs/developers/extends/apps/dev.png" alt="开发模式终端输出" />
|
||||
</div>
|
||||
|
||||
#### 使用 `yarn twenty dev --once` 进行一次性同步
|
||||
@@ -127,13 +127,7 @@ yarn twenty dev --once
|
||||
点击 **查看已安装的应用** 以查看已安装的应用。 **关于** 选项卡显示当前版本和管理选项:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="已安装的应用 — “关于”选项卡" />
|
||||
</div>
|
||||
|
||||
切换到 **内容** 选项卡,以查看你的应用提供的全部内容——对象、字段、逻辑函数和智能体:
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-4.png" alt="已安装的应用 — “内容”选项卡" />
|
||||
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="已安装的应用" />
|
||||
</div>
|
||||
|
||||
一切就绪! 编辑 `src/` 中的任意文件,更改会被自动检测到。
|
||||
@@ -213,30 +207,49 @@ npx create-twenty-app@latest my-twenty-app --example postcard
|
||||
|
||||
脚手架工具已经为你启动了一个本地 Twenty 服务器。 稍后要进行管理,请使用 `yarn twenty server`:
|
||||
|
||||
| 命令 | 描述 |
|
||||
| -------------------------------------- | -------------------- |
|
||||
| `yarn twenty server start` | 启动本地服务器(按需拉取镜像) |
|
||||
| `yarn twenty server start --port 3030` | 在自定义端口启动 |
|
||||
| `yarn twenty server start --test` | 在 2021 端口启动一个独立的测试实例 |
|
||||
| `yarn twenty server stop` | 停止服务器(保留数据) |
|
||||
| `yarn twenty server status` | 显示服务器状态、URL 和凭据 |
|
||||
| `yarn twenty server logs` | 流式输出服务器日志 |
|
||||
| `yarn twenty server logs --lines 100` | 显示最近 100 行日志 |
|
||||
| `yarn twenty server reset` | 删除所有数据并全新开始 |
|
||||
| 命令 | 描述 |
|
||||
| -------------------------------------- | -------------------------------- |
|
||||
| `yarn twenty server start` | 启动本地服务器(按需拉取镜像) |
|
||||
| `yarn twenty server start --port 3030` | 在自定义端口启动 |
|
||||
| `yarn twenty server start --test` | 在 2021 端口启动一个独立的测试实例 |
|
||||
| `yarn twenty server stop` | 停止服务器(保留数据) |
|
||||
| `yarn twenty server status` | 显示服务器状态、URL、版本和凭据 |
|
||||
| `yarn twenty server logs` | 流式输出服务器日志 |
|
||||
| `yarn twenty server logs --lines 100` | 显示最近 100 行日志 |
|
||||
| `yarn twenty server reset` | 删除所有数据并全新开始 |
|
||||
| `yarn twenty server upgrade` | 拉取最新的 `twenty-app-dev` 镜像并重新创建容器 |
|
||||
| `yarn twenty server upgrade 2.2.0` | 升级到指定版本 |
|
||||
|
||||
数据在重启后会保留,存储于两个 Docker 卷中(`twenty-app-dev-data` 用于 PostgreSQL,`twenty-app-dev-storage` 用于文件)。 使用 `reset` 清空所有内容并重新开始。
|
||||
|
||||
### 升级服务器镜像
|
||||
|
||||
使用 `yarn twenty server upgrade` 来检查是否有更新的 `twenty-app-dev` Docker 镜像并更新容器。 该命令会拉取镜像,与容器创建时所用的镜像进行比较,仅当镜像确实发生变化时才会重新创建容器。 您的数据卷将被保留——只会替换容器。
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Upgrade to the latest version (skips recreation if already up to date)
|
||||
yarn twenty server upgrade
|
||||
|
||||
# Upgrade to a specific version
|
||||
yarn twenty server upgrade 2.2.0
|
||||
```
|
||||
|
||||
如果有可用的新镜像且容器正在运行,升级命令会使用更新后的镜像自动启动一个新容器。 随后运行 `yarn twenty server start`,等待其变为健康状态。 如果镜像没有变化,容器将保持不变。
|
||||
|
||||
您可以使用 `yarn twenty server status` 验证正在运行的版本,该命令会显示容器中的 `APP_VERSION`。
|
||||
|
||||
### 运行测试实例
|
||||
|
||||
向任何 `server` 命令传递 `--test` 以管理第二个、完全隔离的实例——这对于运行集成测试或在不影响主开发数据的情况下进行试验非常有用。
|
||||
|
||||
| 命令 | 描述 |
|
||||
| ---------------------------------- | ------------------- |
|
||||
| `yarn twenty server start --test` | 启动测试实例 (默认端口为 2021) |
|
||||
| `yarn twenty server stop --test` | 停止测试实例 |
|
||||
| `yarn twenty server status --test` | 显示测试实例状态、URL 和凭据 |
|
||||
| `yarn twenty server logs --test` | 流式输出测试实例日志 |
|
||||
| `yarn twenty server reset --test` | 清除测试数据并全新开始 |
|
||||
| 命令 | 描述 |
|
||||
| ----------------------------------- | ------------------- |
|
||||
| `yarn twenty server start --test` | 启动测试实例 (默认端口为 2021) |
|
||||
| `yarn twenty server stop --test` | 停止测试实例 |
|
||||
| `yarn twenty server status --test` | 显示测试实例状态、URL、版本和凭据 |
|
||||
| `yarn twenty server logs --test` | 流式输出测试实例日志 |
|
||||
| `yarn twenty server reset --test` | 清除测试数据并全新开始 |
|
||||
| `yarn twenty server upgrade --test` | 升级测试实例镜像 |
|
||||
|
||||
测试实例在其独立的 Docker 容器 (`twenty-app-dev-test`) 中运行,配有专用的卷 (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) 和配置,因此可以与主实例并行运行且不会发生冲突。 将 `--test` 与 `--port` 一起使用以覆盖默认的 2021 端口。
|
||||
|
||||
|
||||
@@ -77,6 +77,39 @@ yarn twenty deploy
|
||||
|
||||
{/* TODO: add screenshot of the Upgrade button */}
|
||||
|
||||
### 服务器版本兼容性
|
||||
|
||||
如果你的应用使用了特定 Twenty 服务器版本中引入的功能(例如在 v2.3.0 中新增的 OAuth 提供方),应当在 `package.json` 的 `engines.twenty` 字段中声明应用所需的最低服务器版本:
|
||||
|
||||
```json filename="package.json"
|
||||
{
|
||||
"name": "twenty-my-app",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"node": "^24.5.0",
|
||||
"twenty": ">=2.3.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
该值是标准的 [semver 范围](https://github.com/npm/node-semver#ranges)。 常见模式:
|
||||
|
||||
| 范围 | 含义 |
|
||||
| ---------------------------------- | --------------------------------------- |
|
||||
| `>=2.3.0` | 任何 2.3.0 及以上的服务器 |
|
||||
| `>=2.3.0 \<3.0.0` | 2.3.0 或更高,但低于下一个主版本 |
|
||||
| `^2.3.0` | 与 `>=2.3.0 \<3.0.0` 相同 |
|
||||
|
||||
**在部署和安装时会发生什么:**
|
||||
|
||||
* 如果已设置 `engines.twenty`,且目标服务器的版本不满足该范围,则部署(tarball 上传)或安装将被拒绝,并返回 `SERVER_VERSION_INCOMPATIBLE` 错误以及一条同时指明所需范围和实际服务器版本的消息。
|
||||
* 如果 `engines.twenty` **未设置**,则该应用可在任何服务器版本上被接受(与现有应用向后兼容)。
|
||||
* 如果服务器未配置 `APP_VERSION`,则跳过该检查。
|
||||
|
||||
<Note>
|
||||
服务器是权威校验方——它会在 tarball 上传和工作区安装时验证 `engines.twenty`。 即使你通过带外方式部署 tarball 或从应用市场安装,服务器仍会强制执行兼容性要求。
|
||||
</Note>
|
||||
|
||||
## 自动化 CI/CD(脚手架生成的工作流)
|
||||
|
||||
使用 `create-twenty-app` 生成的应用开箱即带有两个 GitHub Actions 工作流,位于 `.github/workflows/`。 当你将仓库推送到 GitHub 后即可运行——CI 无需额外设置,CD 只需要一个机密。
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"dependencies": {
|
||||
"@lingui/core": "^5.1.2",
|
||||
"@lingui/react": "^5.1.2",
|
||||
"@react-email/components": "^0.5.3",
|
||||
"twenty-shared": "workspace:*"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -25,7 +26,10 @@
|
||||
"@tiptap/core": "^3.4.2",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260116.1",
|
||||
"@vitejs/plugin-react-swc": "4.2.3",
|
||||
"react-email": "5.1.0",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"vite-plugin-dts": "3.8.1"
|
||||
},
|
||||
"exports": {
|
||||
|
||||
@@ -38,11 +38,14 @@
|
||||
"@types/node": "^24.0.0",
|
||||
"@types/react": "^19.0.0",
|
||||
"@types/react-dom": "^19.0.0",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260116.1",
|
||||
"@vitest/browser-playwright": "^4.0.18",
|
||||
"playwright": "^1.56.1",
|
||||
"prettier": "^3.1.1",
|
||||
"storybook": "^10.2.13",
|
||||
"styled-components": "^6.1.0",
|
||||
"ts-morph": "^25.0.0",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"tsx": "^4.7.0",
|
||||
"twenty-sdk": "workspace:*",
|
||||
"twenty-shared": "workspace:*",
|
||||
|
||||
@@ -57,7 +57,8 @@
|
||||
"@react-email/components": "^0.5.3",
|
||||
"@react-pdf/renderer": "^4.1.6",
|
||||
"@scalar/api-reference-react": "^0.4.36",
|
||||
"@sentry/react": "^10.27.0",
|
||||
"@sentry/react": "^10.51.0",
|
||||
"@sniptt/guards": "^0.2.0",
|
||||
"@tiptap/core": "3.4.2",
|
||||
"@tiptap/extension-bold": "3.4.2",
|
||||
"@tiptap/extension-document": "3.4.2",
|
||||
@@ -79,24 +80,43 @@
|
||||
"apollo-link-rest": "^0.10.0-rc.2",
|
||||
"apollo-upload-client": "^19.0.0",
|
||||
"buffer": "^6.0.3",
|
||||
"country-flag-icons": "^1.5.11",
|
||||
"cron-parser": "5.1.1",
|
||||
"d3-shape": "^3.2.0",
|
||||
"date-fns": "^2.30.0",
|
||||
"date-fns-tz": "^2.0.0",
|
||||
"deep-equal": "^2.2.2",
|
||||
"file-saver": "^2.0.5",
|
||||
"framer-motion": "^11.18.0",
|
||||
"fuse.js": "^7.1.0",
|
||||
"graphiql": "^3.1.1",
|
||||
"graphql": "16.8.1",
|
||||
"graphql-sse": "^2.5.4",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"immer": "^10.1.1",
|
||||
"input-otp": "^1.4.2",
|
||||
"jotai": "^2.17.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"json-2-csv": "^5.4.0",
|
||||
"json-logic-js": "^2.0.5",
|
||||
"jwt-decode": "^4.0.0",
|
||||
"libphonenumber-js": "^1.10.26",
|
||||
"linkify-react": "^4.1.3",
|
||||
"linkifyjs": "^4.1.3",
|
||||
"lodash.camelcase": "^4.3.0",
|
||||
"lodash.groupby": "^4.6.0",
|
||||
"lodash.isempty": "^4.4.0",
|
||||
"lodash.omit": "^4.5.0",
|
||||
"lodash.uniqby": "^4.7.0",
|
||||
"marked": "^17.0.1",
|
||||
"microdiff": "^1.3.2",
|
||||
"papaparse": "^5.4.1",
|
||||
"pluralize": "^8.0.0",
|
||||
"qs": "^6.11.2",
|
||||
"react": "^18.2.0",
|
||||
"react-data-grid": "7.0.0-beta.13",
|
||||
"react-datepicker": "^6.7.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-error-boundary": "^4.0.11",
|
||||
"react-grid-layout": "^1.5.2",
|
||||
@@ -113,29 +133,72 @@
|
||||
"react-router-dom": "^6.4.4",
|
||||
"react-textarea-autosize": "^8.4.1",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"rxjs": "^7.2.0",
|
||||
"temporal-polyfill": "^0.3.0",
|
||||
"transliteration": "^2.3.5",
|
||||
"ts-key-enum": "^2.0.12",
|
||||
"twenty-front-component-renderer": "workspace:*",
|
||||
"twenty-shared": "workspace:*",
|
||||
"twenty-ui": "workspace:*",
|
||||
"use-debounce": "^10.0.0"
|
||||
"type-fest": "4.10.1",
|
||||
"use-debounce": "^10.0.0",
|
||||
"uuid": "^9.0.0",
|
||||
"xlsx-ugnis": "^0.19.3",
|
||||
"zod": "^4.1.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.14.5",
|
||||
"@babel/preset-typescript": "^7.24.6",
|
||||
"@chromatic-com/storybook": "^4.1.3",
|
||||
"@graphql-codegen/cli": "^3.3.1",
|
||||
"@graphql-codegen/typed-document-node": "^5.0.9",
|
||||
"@graphql-codegen/typescript": "^3.0.4",
|
||||
"@graphql-codegen/typescript-operations": "^3.0.4",
|
||||
"@lingui/cli": "^5.1.2",
|
||||
"@lingui/swc-plugin": "^5.11.0",
|
||||
"@lingui/vite-plugin": "^5.1.2",
|
||||
"@playwright/test": "^1.56.1",
|
||||
"@storybook-community/storybook-addon-cookie": "^5.0.0",
|
||||
"@storybook/addon-coverage": "^3.0.0",
|
||||
"@storybook/addon-docs": "^10.3.3",
|
||||
"@storybook/addon-links": "^10.3.3",
|
||||
"@storybook/react-vite": "^10.3.3",
|
||||
"@swc/core": "^1.15.11",
|
||||
"@swc/jest": "^0.2.39",
|
||||
"@testing-library/dom": "^10.4.0",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
"@testing-library/react": "^16.3.0",
|
||||
"@tiptap/suggestion": "3.4.2",
|
||||
"@types/deep-equal": "^1.0.1",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/js-cookie": "^3.0.3",
|
||||
"@types/json-logic-js": "^2",
|
||||
"@types/react-datepicker": "^6.2.0",
|
||||
"@types/react-grid-layout": "^1",
|
||||
"@types/uuid": "^9.0.2",
|
||||
"@vitejs/plugin-react-swc": "4.2.3",
|
||||
"@vitest/coverage-istanbul": "^4.0.18",
|
||||
"@wyw-in-js/vite": "^0.7.0",
|
||||
"chromatic": "^6.18.0",
|
||||
"dotenv-cli": "^7.4.4",
|
||||
"jest": "29.7.0",
|
||||
"jest-environment-jsdom": "30.0.0-beta.3",
|
||||
"jest-fetch-mock": "^3.0.3",
|
||||
"monaco-editor": "^0.51.0",
|
||||
"monaco-editor-auto-typings": "^0.4.5",
|
||||
"msw": "^2.12.7",
|
||||
"msw-storybook-addon": "^2.0.6",
|
||||
"optionator": "^0.9.1",
|
||||
"oxlint": "^1.51.0",
|
||||
"oxlint-tsgolint": "^0.16.0",
|
||||
"playwright": "^1.56.1",
|
||||
"prettier": "^3.1.1",
|
||||
"rollup-plugin-node-polyfills": "^0.2.1",
|
||||
"rollup-plugin-visualizer": "^5.14.0",
|
||||
"storybook-addon-mock-date": "2.0.0",
|
||||
"storybook-addon-pseudo-states": "^10.3.3",
|
||||
"ts-jest": "^29.1.1",
|
||||
"vite-plugin-svgr": "^4.3.0",
|
||||
"vite-tsconfig-paths": "^4.2.1"
|
||||
}
|
||||
|
||||
@@ -291,6 +291,21 @@ export enum HealthIndicatorId {
|
||||
worker = 'worker'
|
||||
}
|
||||
|
||||
export type InstanceAndAllWorkspacesUpgradeStatus = {
|
||||
__typename?: 'InstanceAndAllWorkspacesUpgradeStatus';
|
||||
computedAt: Scalars['DateTime'];
|
||||
instanceUpgradeStatus: InstanceUpgradeStatus;
|
||||
workspacesBehind: Array<WorkspaceUpgradeRef>;
|
||||
workspacesFailed: Array<WorkspaceUpgradeRef>;
|
||||
};
|
||||
|
||||
export type InstanceUpgradeStatus = {
|
||||
__typename?: 'InstanceUpgradeStatus';
|
||||
health: UpgradeHealth;
|
||||
inferredVersion?: Maybe<Scalars['String']>;
|
||||
latestCommand?: Maybe<LatestUpgradeCommand>;
|
||||
};
|
||||
|
||||
export type JobOperationResult = {
|
||||
__typename?: 'JobOperationResult';
|
||||
error?: Maybe<Scalars['String']>;
|
||||
@@ -309,6 +324,15 @@ export enum JobState {
|
||||
WAITING_CHILDREN = 'WAITING_CHILDREN'
|
||||
}
|
||||
|
||||
export type LatestUpgradeCommand = {
|
||||
__typename?: 'LatestUpgradeCommand';
|
||||
createdAt: Scalars['DateTime'];
|
||||
errorMessage?: Maybe<Scalars['String']>;
|
||||
executedByVersion: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
status: Scalars['String'];
|
||||
};
|
||||
|
||||
export type MaintenanceMode = {
|
||||
__typename?: 'MaintenanceMode';
|
||||
endAt: Scalars['DateTime'];
|
||||
@@ -353,6 +377,7 @@ export type Mutation = {
|
||||
createDatabaseConfigVariable: Scalars['Boolean'];
|
||||
deleteDatabaseConfigVariable: Scalars['Boolean'];
|
||||
deleteJobs: DeleteJobsResponse;
|
||||
refreshUpgradeStatus: InstanceAndAllWorkspacesUpgradeStatus;
|
||||
removeAiProvider: Scalars['Boolean'];
|
||||
removeModelFromProvider: Scalars['Boolean'];
|
||||
retryJobs: RetryJobsResponse;
|
||||
@@ -476,12 +501,14 @@ export type Query = {
|
||||
getConfigVariablesGrouped: ConfigVariables;
|
||||
getDatabaseConfigVariable: ConfigVariable;
|
||||
getIndicatorHealthStatus: AdminPanelHealthServiceData;
|
||||
getInstanceAndAllWorkspacesUpgradeStatus: InstanceAndAllWorkspacesUpgradeStatus;
|
||||
getMaintenanceMode?: Maybe<MaintenanceMode>;
|
||||
getModelsDevProviders: Array<ModelsDevProviderSuggestion>;
|
||||
getModelsDevSuggestions: Array<ModelsDevModelSuggestion>;
|
||||
getQueueJobs: QueueJobsResponse;
|
||||
getQueueMetrics: QueueMetricsData;
|
||||
getSystemHealthStatus: SystemHealth;
|
||||
getUpgradeStatus: Array<WorkspaceUpgradeStatus>;
|
||||
userLookupAdminPanel: UserLookup;
|
||||
versionInfo: VersionInfo;
|
||||
workspaceBillingAdminPanel?: Maybe<AdminPanelWorkspaceBilling>;
|
||||
@@ -549,6 +576,11 @@ export type QueryGetQueueMetricsArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type QueryGetUpgradeStatusArgs = {
|
||||
workspaceIds: Array<Scalars['UUID']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserLookupAdminPanelArgs = {
|
||||
userIdentifier: Scalars['String'];
|
||||
};
|
||||
@@ -659,6 +691,12 @@ export type SystemHealthService = {
|
||||
status: AdminPanelHealthServiceStatus;
|
||||
};
|
||||
|
||||
export enum UpgradeHealth {
|
||||
BEHIND = 'BEHIND',
|
||||
FAILED = 'FAILED',
|
||||
UP_TO_DATE = 'UP_TO_DATE'
|
||||
}
|
||||
|
||||
export type UsageBreakdownItem = {
|
||||
__typename?: 'UsageBreakdownItem';
|
||||
creditsUsed: Scalars['Float'];
|
||||
@@ -678,7 +716,7 @@ export type UserInfo = {
|
||||
|
||||
export type UserLookup = {
|
||||
__typename?: 'UserLookup';
|
||||
user: UserInfo;
|
||||
user?: Maybe<UserInfo>;
|
||||
workspaces: Array<WorkspaceInfo>;
|
||||
};
|
||||
|
||||
@@ -722,6 +760,21 @@ export type WorkspaceInfo = {
|
||||
workspaceUrls: WorkspaceUrls;
|
||||
};
|
||||
|
||||
export type WorkspaceUpgradeRef = {
|
||||
__typename?: 'WorkspaceUpgradeRef';
|
||||
id: Scalars['UUID'];
|
||||
name?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type WorkspaceUpgradeStatus = {
|
||||
__typename?: 'WorkspaceUpgradeStatus';
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
health: UpgradeHealth;
|
||||
inferredVersion?: Maybe<Scalars['String']>;
|
||||
latestCommand?: Maybe<LatestUpgradeCommand>;
|
||||
workspaceId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
export type WorkspaceUrls = {
|
||||
__typename?: 'WorkspaceUrls';
|
||||
customUrl?: Maybe<Scalars['String']>;
|
||||
@@ -915,6 +968,13 @@ export type GetAdminWorkspaceChatThreadsQueryVariables = Exact<{
|
||||
|
||||
export type GetAdminWorkspaceChatThreadsQuery = { __typename?: 'Query', getAdminWorkspaceChatThreads: Array<{ __typename?: 'AdminWorkspaceChatThread', id: string, title?: string | null, totalInputTokens: number, totalOutputTokens: number, conversationSize: number, createdAt: string, updatedAt: string }> };
|
||||
|
||||
export type GetUpgradeStatusQueryVariables = Exact<{
|
||||
workspaceIds: Array<Scalars['UUID']> | Scalars['UUID'];
|
||||
}>;
|
||||
|
||||
|
||||
export type GetUpgradeStatusQuery = { __typename?: 'Query', getUpgradeStatus: Array<{ __typename?: 'WorkspaceUpgradeStatus', workspaceId: string, displayName?: string | null, inferredVersion?: string | null, health: UpgradeHealth, latestCommand?: { __typename?: 'LatestUpgradeCommand', name: string, status: string, executedByVersion: string, errorMessage?: string | null, createdAt: string } | null }> };
|
||||
|
||||
export type GetVersionInfoQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
@@ -932,14 +992,14 @@ export type UserLookupAdminPanelQueryVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type UserLookupAdminPanelQuery = { __typename?: 'Query', userLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, allowImpersonation: boolean, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
|
||||
export type UserLookupAdminPanelQuery = { __typename?: 'Query', userLookupAdminPanel: { __typename?: 'UserLookup', user?: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string } | null, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, allowImpersonation: boolean, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
|
||||
|
||||
export type WorkspaceLookupAdminPanelQueryVariables = Exact<{
|
||||
workspaceId: Scalars['UUID'];
|
||||
}>;
|
||||
|
||||
|
||||
export type WorkspaceLookupAdminPanelQuery = { __typename?: 'Query', workspaceLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, allowImpersonation: boolean, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, avatarUrl?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
|
||||
export type WorkspaceLookupAdminPanelQuery = { __typename?: 'Query', workspaceLookupAdminPanel: { __typename?: 'UserLookup', user?: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string } | null, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, allowImpersonation: boolean, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, avatarUrl?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
|
||||
|
||||
export type DeleteJobsMutationVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
@@ -949,6 +1009,11 @@ export type DeleteJobsMutationVariables = Exact<{
|
||||
|
||||
export type DeleteJobsMutation = { __typename?: 'Mutation', deleteJobs: { __typename?: 'DeleteJobsResponse', deletedCount: number, results: Array<{ __typename?: 'JobOperationResult', jobId: string, success: boolean, error?: string | null }> } };
|
||||
|
||||
export type RefreshUpgradeStatusMutationVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type RefreshUpgradeStatusMutation = { __typename?: 'Mutation', refreshUpgradeStatus: { __typename?: 'InstanceAndAllWorkspacesUpgradeStatus', computedAt: string, instanceUpgradeStatus: { __typename?: 'InstanceUpgradeStatus', inferredVersion?: string | null, health: UpgradeHealth, latestCommand?: { __typename?: 'LatestUpgradeCommand', name: string, status: string, executedByVersion: string, errorMessage?: string | null, createdAt: string } | null }, workspacesBehind: Array<{ __typename?: 'WorkspaceUpgradeRef', id: string, name?: string | null }>, workspacesFailed: Array<{ __typename?: 'WorkspaceUpgradeRef', id: string, name?: string | null }> } };
|
||||
|
||||
export type RetryJobsMutationVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
jobIds: Array<Scalars['String']> | Scalars['String'];
|
||||
@@ -964,6 +1029,11 @@ export type GetIndicatorHealthStatusQueryVariables = Exact<{
|
||||
|
||||
export type GetIndicatorHealthStatusQuery = { __typename?: 'Query', getIndicatorHealthStatus: { __typename?: 'AdminPanelHealthServiceData', id: HealthIndicatorId, label: string, description: string, status: AdminPanelHealthServiceStatus, errorMessage?: string | null, details?: string | null, queues?: Array<{ __typename?: 'AdminPanelWorkerQueueHealth', id: string, queueName: string, status: AdminPanelHealthServiceStatus }> | null } };
|
||||
|
||||
export type GetInstanceAndAllWorkspacesUpgradeStatusQueryVariables = Exact<{ [key: string]: never; }>;
|
||||
|
||||
|
||||
export type GetInstanceAndAllWorkspacesUpgradeStatusQuery = { __typename?: 'Query', getInstanceAndAllWorkspacesUpgradeStatus: { __typename?: 'InstanceAndAllWorkspacesUpgradeStatus', computedAt: string, instanceUpgradeStatus: { __typename?: 'InstanceUpgradeStatus', inferredVersion?: string | null, health: UpgradeHealth, latestCommand?: { __typename?: 'LatestUpgradeCommand', name: string, status: string, executedByVersion: string, errorMessage?: string | null, createdAt: string } | null }, workspacesBehind: Array<{ __typename?: 'WorkspaceUpgradeRef', id: string, name?: string | null }>, workspacesFailed: Array<{ __typename?: 'WorkspaceUpgradeRef', id: string, name?: string | null }> } };
|
||||
|
||||
export type GetQueueJobsQueryVariables = Exact<{
|
||||
queueName: Scalars['String'];
|
||||
state: JobState;
|
||||
@@ -1036,13 +1106,16 @@ export const AdminPanelTopWorkspacesDocument = {"kind":"Document","definitions":
|
||||
export const FindOneAdminApplicationRegistrationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindOneAdminApplicationRegistration"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findOneAdminApplicationRegistration"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode<FindOneAdminApplicationRegistrationQuery, FindOneAdminApplicationRegistrationQueryVariables>;
|
||||
export const GetAdminChatThreadMessagesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminChatThreadMessages"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"threadId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminChatThreadMessages"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"threadId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"threadId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"thread"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"totalInputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"totalOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"conversationSize"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"messages"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"parts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"textContent"}},{"kind":"Field","name":{"kind":"Name","value":"toolName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode<GetAdminChatThreadMessagesQuery, GetAdminChatThreadMessagesQueryVariables>;
|
||||
export const GetAdminWorkspaceChatThreadsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminWorkspaceChatThreads"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminWorkspaceChatThreads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"totalInputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"totalOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"conversationSize"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode<GetAdminWorkspaceChatThreadsQuery, GetAdminWorkspaceChatThreadsQueryVariables>;
|
||||
export const GetUpgradeStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUpgradeStatus"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getUpgradeStatus"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"inferredVersion"}},{"kind":"Field","name":{"kind":"Name","value":"health"}},{"kind":"Field","name":{"kind":"Name","value":"latestCommand"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"executedByVersion"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode<GetUpgradeStatusQuery, GetUpgradeStatusQueryVariables>;
|
||||
export const GetVersionInfoDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetVersionInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"versionInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currentVersion"}},{"kind":"Field","name":{"kind":"Name","value":"latestVersion"}}]}}]}}]} as unknown as DocumentNode<GetVersionInfoQuery, GetVersionInfoQueryVariables>;
|
||||
export const WorkspaceBillingAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"WorkspaceBillingAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceBillingAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeCustomerId"}},{"kind":"Field","name":{"kind":"Name","value":"creditBalance"}},{"kind":"Field","name":{"kind":"Name","value":"subscription"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeSubscriptionId"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"interval"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"planKey"}},{"kind":"Field","name":{"kind":"Name","value":"currentPeriodStart"}},{"kind":"Field","name":{"kind":"Name","value":"currentPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"trialStart"}},{"kind":"Field","name":{"kind":"Name","value":"trialEnd"}},{"kind":"Field","name":{"kind":"Name","value":"cancelAt"}},{"kind":"Field","name":{"kind":"Name","value":"canceledAt"}},{"kind":"Field","name":{"kind":"Name","value":"cancelAtPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"productName"}},{"kind":"Field","name":{"kind":"Name","value":"productKey"}},{"kind":"Field","name":{"kind":"Name","value":"stripePriceId"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"unitAmount"}},{"kind":"Field","name":{"kind":"Name","value":"includedCredits"}}]}}]}}]}}]}}]} as unknown as DocumentNode<WorkspaceBillingAdminPanelQuery, WorkspaceBillingAdminPanelQueryVariables>;
|
||||
export const UserLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"UserLookupAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userLookupAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"userIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"UserInfoFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"activationStatus"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"UserInfoFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"UserInfo"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode<UserLookupAdminPanelQuery, UserLookupAdminPanelQueryVariables>;
|
||||
export const WorkspaceLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"WorkspaceLookupAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceLookupAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"UserInfoFragment"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"activationStatus"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"UserInfoFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"UserInfo"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode<WorkspaceLookupAdminPanelQuery, WorkspaceLookupAdminPanelQueryVariables>;
|
||||
export const DeleteJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"jobIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deletedCount"}},{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobId"}},{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode<DeleteJobsMutation, DeleteJobsMutationVariables>;
|
||||
export const RefreshUpgradeStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RefreshUpgradeStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"refreshUpgradeStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"instanceUpgradeStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"inferredVersion"}},{"kind":"Field","name":{"kind":"Name","value":"health"}},{"kind":"Field","name":{"kind":"Name","value":"latestCommand"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"executedByVersion"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspacesBehind"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspacesFailed"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"computedAt"}}]}}]}}]} as unknown as DocumentNode<RefreshUpgradeStatusMutation, RefreshUpgradeStatusMutationVariables>;
|
||||
export const RetryJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RetryJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"retryJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"jobIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"retriedCount"}},{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobId"}},{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode<RetryJobsMutation, RetryJobsMutationVariables>;
|
||||
export const GetIndicatorHealthStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetIndicatorHealthStatus"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"indicatorId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"HealthIndicatorId"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getIndicatorHealthStatus"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"indicatorId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"indicatorId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}},{"kind":"Field","name":{"kind":"Name","value":"details"}},{"kind":"Field","name":{"kind":"Name","value":"queues"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"queueName"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>;
|
||||
export const GetInstanceAndAllWorkspacesUpgradeStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetInstanceAndAllWorkspacesUpgradeStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getInstanceAndAllWorkspacesUpgradeStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"instanceUpgradeStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"inferredVersion"}},{"kind":"Field","name":{"kind":"Name","value":"health"}},{"kind":"Field","name":{"kind":"Name","value":"latestCommand"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"executedByVersion"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspacesBehind"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspacesFailed"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"computedAt"}}]}}]}}]} as unknown as DocumentNode<GetInstanceAndAllWorkspacesUpgradeStatusQuery, GetInstanceAndAllWorkspacesUpgradeStatusQueryVariables>;
|
||||
export const GetQueueJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetQueueJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"state"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JobState"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getQueueJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"state"},"value":{"kind":"Variable","name":{"kind":"Name","value":"state"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobs"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"timestamp"}},{"kind":"Field","name":{"kind":"Name","value":"failedReason"}},{"kind":"Field","name":{"kind":"Name","value":"processedOn"}},{"kind":"Field","name":{"kind":"Name","value":"finishedOn"}},{"kind":"Field","name":{"kind":"Name","value":"attemptsMade"}},{"kind":"Field","name":{"kind":"Name","value":"returnValue"}},{"kind":"Field","name":{"kind":"Name","value":"logs"}},{"kind":"Field","name":{"kind":"Name","value":"stackTrace"}}]}},{"kind":"Field","name":{"kind":"Name","value":"count"}},{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"hasMore"}},{"kind":"Field","name":{"kind":"Name","value":"retentionConfig"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"completedMaxAge"}},{"kind":"Field","name":{"kind":"Name","value":"completedMaxCount"}},{"kind":"Field","name":{"kind":"Name","value":"failedMaxAge"}},{"kind":"Field","name":{"kind":"Name","value":"failedMaxCount"}}]}}]}}]}}]} as unknown as DocumentNode<GetQueueJobsQuery, GetQueueJobsQueryVariables>;
|
||||
export const GetQueueMetricsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetQueueMetrics"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"timeRange"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"QueueMetricsTimeRange"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getQueueMetrics"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"timeRange"},"value":{"kind":"Variable","name":{"kind":"Name","value":"timeRange"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"queueName"}},{"kind":"Field","name":{"kind":"Name","value":"timeRange"}},{"kind":"Field","name":{"kind":"Name","value":"workers"}},{"kind":"Field","name":{"kind":"Name","value":"details"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"failed"}},{"kind":"Field","name":{"kind":"Name","value":"completed"}},{"kind":"Field","name":{"kind":"Name","value":"waiting"}},{"kind":"Field","name":{"kind":"Name","value":"active"}},{"kind":"Field","name":{"kind":"Name","value":"delayed"}},{"kind":"Field","name":{"kind":"Name","value":"failureRate"}}]}},{"kind":"Field","name":{"kind":"Name","value":"data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"x"}},{"kind":"Field","name":{"kind":"Name","value":"y"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetQueueMetricsQuery, GetQueueMetricsQueryVariables>;
|
||||
export const GetSystemHealthStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSystemHealthStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getSystemHealthStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"services"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { useOpenSettingsMenu } from '@/navigation/hooks/useOpenSettings';
|
||||
import { useCallback } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { type SettingsPath } from 'twenty-shared/types';
|
||||
import { getSettingsPath } from 'twenty-shared/utils';
|
||||
@@ -7,19 +8,22 @@ export const useNavigateSettings = () => {
|
||||
const navigate = useNavigate();
|
||||
const { openSettingsMenu } = useOpenSettingsMenu();
|
||||
|
||||
return <T extends SettingsPath>(
|
||||
to: T,
|
||||
params?: Parameters<typeof getSettingsPath<T>>[1],
|
||||
queryParams?: Record<string, any>,
|
||||
options?: {
|
||||
replace?: boolean;
|
||||
state?: any;
|
||||
},
|
||||
hash?: string,
|
||||
) => {
|
||||
openSettingsMenu();
|
||||
return useCallback(
|
||||
<T extends SettingsPath>(
|
||||
to: T,
|
||||
params?: Parameters<typeof getSettingsPath<T>>[1],
|
||||
queryParams?: Record<string, any>,
|
||||
options?: {
|
||||
replace?: boolean;
|
||||
state?: any;
|
||||
},
|
||||
hash?: string,
|
||||
) => {
|
||||
openSettingsMenu();
|
||||
|
||||
const path = getSettingsPath(to, params, queryParams, hash);
|
||||
return navigate(path, options);
|
||||
};
|
||||
const path = getSettingsPath(to, params, queryParams, hash);
|
||||
return navigate(path, options);
|
||||
},
|
||||
[navigate, openSettingsMenu],
|
||||
);
|
||||
};
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, one {{years} jaar} other {{years} jaar}}"
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, one {# Voorwerp} other {# Voorwerpe}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} van {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "{appName} wil toegang tot jou rekening hê"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "{duration} dae proeflopie"
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} 'n verwante {eventObject}"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} kan nie {humanReadableAction} {objectLabel} rekords nie"
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "{roleTargetName} sal aan die rol \"{newRoleName}\" toegewys word."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr "••••••••"
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "1 dag"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12u ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "2FA Metode is suksesvol verwyder."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "2FA Metode Terugstelling"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "500 Fout - {duration}ms"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "Besig om te aktiveer..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "Aktief"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "Voeg Blokkie By"
|
||||
msgid "Add CC"
|
||||
msgstr "Voeg CC by"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "Waarskuwing"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "Arabies"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "Argieflêers kan nie voorskou word nie. Laai asseblief die lêer af om toegang tot die inhoud daarvan te kry."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "Omdat hierdie werkvloei nie 'n handmatige sneller gebruik nie, sal die v
|
||||
msgid "Before"
|
||||
msgstr "Voor"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "Grafiek"
|
||||
msgid "Chat"
|
||||
msgstr "Gesels"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "Stad"
|
||||
msgid "Clear"
|
||||
msgstr "Maak skoon"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "voltooi"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "Voltooi"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "Voltooide werke behou vir {completedDuration}, mislukte werke behou vir
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "Verbind met Microsoft"
|
||||
msgid "Connected accounts"
|
||||
msgstr "Verbonde rekeninge"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "Huidige werksruimtelid nie gevind nie."
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "Paneelbord suksesvol gedupliseer"
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "Databasis gebeurtenis"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "verwyder"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "verwyder"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "Verwyder"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "Verwyder API-sleutel"
|
||||
msgid "Delete app"
|
||||
msgstr "Verwyder app"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "Vernietig rekords op alle voorwerpe"
|
||||
msgid "Detach"
|
||||
msgstr "Ontkoppel"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "Ontkoppel"
|
||||
msgid "Details"
|
||||
msgstr "Besonderhede"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "Ekstra Krediete Gebruik"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "Misluk"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "Kon nie rekords saamvoeg nie. Probeer asseblief weer."
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "Kon nie konteks ontleed nie: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "velde"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "Filter volgens rekord-ID"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "Groepeer"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "Groepeer volgens"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "Gesondheid"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "Indeks"
|
||||
msgid "Indexes"
|
||||
msgstr "Indekse"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "Installeer..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "Sluit aan by {workspaceName} span"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "Laaste 7 Dae (oudste → nuutste)"
|
||||
msgid "Last 90 days"
|
||||
msgstr "Laaste 90 dae"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "Laaste betaling het misluk. Kontak asseblief u admin."
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "Laaste betaling het misluk. Werk asseblief u faktureringsbesonderhede by."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "Bestuur rekening en intekeninge"
|
||||
msgid "Manage billing information"
|
||||
msgstr "Bestuur faktuurinligting"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "My ongemerkte uitsigte"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "Nuwe Goedgekeurde Toegangsdomein"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "Nuwe geselsie"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "Geen modelle beskikbaar nie. Stel asseblief KI-modelle in jou werkruimte
|
||||
msgid "No notes"
|
||||
msgstr "Geen notas"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "Geen veranderlikes gevind nie"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "Geen werkstroomlopies tot nou toe"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "Geen werkstroom weergawes tot nou toe"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "Node"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "Geen"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "Nie gedeel deur {notSharedByFullName} nie"
|
||||
msgid "Not synced"
|
||||
msgstr "Nie gesinkroniseer nie"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "objekte"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "objekte"
|
||||
msgid "Objects"
|
||||
msgstr "Objekte"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "\"Van die gebaande pad af\""
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "Ouer"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "Rangskik"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "Voorskou nie beskikbaar nie"
|
||||
msgid "Previous"
|
||||
msgstr "Vorige"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "Onlangse Gebeure (oudste → nuutste)"
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "Aanbevole Modelle"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "Herlaai"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "Rekordtipe"
|
||||
msgid "Record-level"
|
||||
msgstr "Rekordvlak"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "Rekords"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "Herleidings URI"
|
||||
msgid "Refresh"
|
||||
msgstr "Verfris"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "Verwyder veranderlike"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "Hernoem"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "Soek vir 'n objek"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13907,7 +14205,6 @@ msgstr "Fases"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13965,11 +14262,15 @@ msgstr "Staat"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "Toestand"
|
||||
|
||||
@@ -14715,11 +15016,6 @@ msgstr "Hierdie aksie sal hierdie vouer en al {2} navigasiekieslysitems daarin u
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "Hierdie aksie sal hierdie vouer en die navigasiekieslysitem daarin uitvee. Wil jy voortgaan?"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14973,7 +15269,7 @@ msgstr "Aan"
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "Vandag"
|
||||
|
||||
@@ -15368,6 +15664,11 @@ msgstr "Kon nie toepassingsbesonderhede laai nie. Probeer asseblief weer later."
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "Nie in staat om rugsteun te bereik nie"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15447,6 +15748,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "Onbekend"
|
||||
@@ -15479,6 +15784,11 @@ msgstr "Onbekende lêer"
|
||||
msgid "Unknown object"
|
||||
msgstr "Onbekende objek"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15533,7 +15843,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15570,6 +15880,11 @@ msgstr "Ongenoemde Werkvloei"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15658,11 +15973,39 @@ msgstr "Opdaterings"
|
||||
msgid "Upgrade"
|
||||
msgstr "Opgradering"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "Gradeer plan op"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16550,6 +16893,7 @@ msgstr "Werksvloeie"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16614,6 +16958,11 @@ msgstr "Werkruimte-inligting"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "Werkruimte-instruksies"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16634,6 +16983,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "Werkruimte naam"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16644,6 +17003,13 @@ msgstr "Werkruimte-uitsigte vereis bestuur-uitsigte mag"
|
||||
msgid "Workspaces"
|
||||
msgstr "Werkruimtes"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16748,7 +17114,7 @@ msgstr "Ja"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "Gister"
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, zero {{years} سنة} one {{years} سنة} two {{years} سن
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, zero {# أشياء} one {# شيء} two {# شيئان} few {# أشياء} many {# أشياء} other {# أشياء}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} من {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "{appName} يريد الوصول إلى حسابك"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "{duration, plural, zero {تجربة لمدة 0 يوم} one {تجربة
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} {eventObject} ذي صلة"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} لا يمكنه {humanReadableAction} سجلات {objectLabe
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "سيتم تعيين {roleTargetName} إلى الدور \"{newRoleName}\"."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr "••••••••"
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "يوم واحد"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12 ساعة ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "تم حذف طريقة 2FA بنجاح."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "إعادة ضبط طريقة 2FA"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "500 خطأ - {duration} مللي ثانية"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "جارٍ التفعيل..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "نشط"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "إضافة بلوك"
|
||||
msgid "Add CC"
|
||||
msgstr "إضافة نسخة كربونية"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "تنبيه"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "العربية"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "لا يمكن معاينة ملفات الأرشيف. يرجى تنزيل الملف للوصول إلى محتوياته."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "نظرًا لأن سير العمل هذا لا يستخدم مشغّل
|
||||
msgid "Before"
|
||||
msgstr "قبل"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "الرسم البياني"
|
||||
msgid "Chat"
|
||||
msgstr "الدردشة"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "المدينة"
|
||||
msgid "Clear"
|
||||
msgstr "مسح"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "مكتمل"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "مكتمل"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "تم الاحتفاظ بالوظائف المكتملة لمدة {comple
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "الاتصال بـ Microsoft"
|
||||
msgid "Connected accounts"
|
||||
msgstr "الحسابات المتصلة"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "لم يتم العثور على عضو مساحة العمل الحال
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "تم تكرار لوحة القيادة بنجاح"
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "حدث قاعدة البيانات"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "تاريخ"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "حذف"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "حذف"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "حذف"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "حذف مفتاح API"
|
||||
msgid "Delete app"
|
||||
msgstr "حذف التطبيق"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "إتلاف السجلات في جميع العناصر"
|
||||
msgid "Detach"
|
||||
msgstr "فصل"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "فصل"
|
||||
msgid "Details"
|
||||
msgstr "تفاصيل"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "الإعتمادات الإضافية المستخدمة"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "فشل"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "فشل دمج السجلات. يُرجى المحاولة مرة أخر
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "فشل في تحليل السياق: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "حقول"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "تصفية حسب معرّف السجل"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "مجموعة"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "المجموعة حسب"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "الصحة"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "الفهرس"
|
||||
msgid "Indexes"
|
||||
msgstr "الفهرسات"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "جاري التثبيت..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "انضم إلى فريق {workspaceName}"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "آخر 7 أيام (الأقدم ← الأحدث)"
|
||||
msgid "Last 90 days"
|
||||
msgstr "آخر 90 يومًا"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "فشلت الدفع الأخيرة. يرجى الاتصال بالمسؤ
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "فشلت الدفع الأخيرة. يرجى تحديث تفاصيل الفوترة الخاصة بك."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "إدارة الفوترة والاشتراكات"
|
||||
msgid "Manage billing information"
|
||||
msgstr "إدارة معلومات الفوترة"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "عروضي غير المدرجة"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "نطاق وصول معتمد جديد"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "دردشة جديدة"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "لا توجد نماذج متاحة. يرجى تهيئة نماذج ال
|
||||
msgid "No notes"
|
||||
msgstr "لا توجد ملاحظات"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "لم يتم العثور على متغيرات"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "لا يوجد تشغيلات لعمليات العمل بعد"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "لا توجد نسخ لعمليات العمل بعد"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "عقدة"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "لا شيء"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "لم تتم المشاركة من قِبَل {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "غير متزامن"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "الكائنات"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "الكائنات"
|
||||
msgid "Objects"
|
||||
msgstr "كائنات"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "خارج المألوف"
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "أقدم"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "تنظيم"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "المعاينة غير متاحة"
|
||||
msgid "Previous"
|
||||
msgstr "السابق"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "الأحداث الأخيرة (الأقدم ← الأحدث)"
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "النماذج الموصى بها"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "إعادة الاتصال"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "نوع السجل"
|
||||
msgid "Record-level"
|
||||
msgstr "مستوى السجل"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "السجلات"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "عنوان وموقع إعادة التوجيه"
|
||||
msgid "Refresh"
|
||||
msgstr "تحديث"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "إزالة المتغير"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "إعادة التسمية"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "ابحث عن كائن"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13907,7 +14205,6 @@ msgstr "مراحل"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13965,11 +14262,15 @@ msgstr "الولاية"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "الحالة"
|
||||
|
||||
@@ -14715,11 +15016,6 @@ msgstr "سيؤدي هذا الإجراء إلى حذف هذا المجلد وج
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "سيؤدي هذا الإجراء إلى حذف هذا المجلد وعنصر قائمة التنقل الموجود بداخله. هل تريد المتابعة؟"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14973,7 +15269,7 @@ msgstr "إلى"
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "اليوم"
|
||||
|
||||
@@ -15368,6 +15664,11 @@ msgstr "تعذر تحميل تفاصيل التطبيق. يرجى المحاول
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "غير قادر على الوصول إلى الخلفية"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15447,6 +15748,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "غير معروف"
|
||||
@@ -15479,6 +15784,11 @@ msgstr "ملف غير معروف"
|
||||
msgid "Unknown object"
|
||||
msgstr "كائن غير معروف"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15533,7 +15843,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15570,6 +15880,11 @@ msgstr "تدفق عمل بدون عنوان"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15658,11 +15973,39 @@ msgstr "التحديثات"
|
||||
msgid "Upgrade"
|
||||
msgstr "تحديث"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "ترقية الخطة"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16548,6 +16891,7 @@ msgstr "سير العمل"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16612,6 +16956,11 @@ msgstr "معلومات مساحة العمل"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "تعليمات مساحة العمل"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16632,6 +16981,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "اسم مساحة العمل"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16642,6 +17001,13 @@ msgstr "تتطلب عروض مساحة العمل أذونات لإدارة ال
|
||||
msgid "Workspaces"
|
||||
msgstr "مساحات العمل"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16746,7 +17112,7 @@ msgstr "نعم"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "أمس"
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, one {{years} any} other {{years} anys}}"
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, one {# Objecte} other {# Objectes}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} de {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "{appName} vol accedir al teu compte"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "Prova de {duration} dies"
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} un {eventObject} relacionat"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} no pot {humanReadableAction} registres de {objectLabel}"
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "{roleTargetName} s'assignarà al rol \"{newRoleName}\"."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr "••••••••"
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "1 dia"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12h ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "El mètode 2FA ha estat suprimit amb èxit."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "Restabliment del mètode 2FA"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "500 Error - {duration}ms"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "S'està activant..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "Actiu"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "Afegeix Bloc"
|
||||
msgid "Add CC"
|
||||
msgstr "Afegeix CC"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "Alerta"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "Àrab"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "Els fitxers comprimits no es poden previsualitzar. Si us plau, descarrega el fitxer per accedir al seu contingut."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "Com que aquest flux de treball no utilitza un activador manual, el formu
|
||||
msgid "Before"
|
||||
msgstr "Abans"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "Gràfic"
|
||||
msgid "Chat"
|
||||
msgstr "Xat"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "Ciutat"
|
||||
msgid "Clear"
|
||||
msgstr "Esborra"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "completat"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "Completat"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "Feines completades guardades per {completedDuration}, feines fallades gu
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "Connecta amb Microsoft"
|
||||
msgid "Connected accounts"
|
||||
msgstr "Comptes connectats"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "Membre de l'espai de treball actual no trobat."
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "Quadre de comandament duplicat correctament"
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "Esdeveniment de la base de dades"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "elimina"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "elimina"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "Elimina"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "Suprimeix la clau d'API"
|
||||
msgid "Delete app"
|
||||
msgstr "Suprimeix l'aplicació"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "Destruir registres de tots els objectes"
|
||||
msgid "Detach"
|
||||
msgstr "Desvincula"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "Desvincula"
|
||||
msgid "Details"
|
||||
msgstr "Detalls"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "Crèdits extres utilitzats"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "Error"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "No s'ha pogut fusionar els registres. Torna-ho a provar."
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "No s'ha pogut analitzar el context: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "camps"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "Filtra per ID del registre"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "Agrupament"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "Agrupa per"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "Salut"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "Índex"
|
||||
msgid "Indexes"
|
||||
msgstr "Índexs"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "Instal·lant..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "Uneix-te a l'equip de {workspaceName}"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "Darrers 7 Dies (més antic → més nou)"
|
||||
msgid "Last 90 days"
|
||||
msgstr "Últims 90 dies"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "L'últim pagament va fallar. Si us plau, contacta amb el teu administrad
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "L'últim pagament va fallar. Si us plau, actualitza les teves dades de facturació."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "Gestionar facturació i subscripcions"
|
||||
msgid "Manage billing information"
|
||||
msgstr "Gestiona la informació de facturació"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "Les meves vistes no llistades"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "Nou domini d'accés aprovat"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "Nou xat"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "No hi ha models disponibles. Si us plau, configureu models d'IA a la con
|
||||
msgid "No notes"
|
||||
msgstr "Sense notes"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "No s'han trobat variables"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "Encara no hi ha execucions de workflows"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "Encara no hi ha versions de workflows"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "Node"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "Cap"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "No compartit per {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "No sincronitzat"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "objectes"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "objectes"
|
||||
msgid "Objects"
|
||||
msgstr "Objectes"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "Fora del camí conegut"
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "Més antics"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "Organitza"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "Vista prèvia no disponible"
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "Esdeveniments recents (més antic → més nou)"
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "Models recomanats"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "Reconnecta"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "Tipus de registre"
|
||||
msgid "Record-level"
|
||||
msgstr "Nivell de registre"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "Registres"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "URI de redirecció"
|
||||
msgid "Refresh"
|
||||
msgstr "Actualitza"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "Elimina la variable"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "Canvia el nom"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "Cerca un objecte"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13907,7 +14205,6 @@ msgstr "Etapes"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13965,11 +14262,15 @@ msgstr "Estat"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "Estat"
|
||||
|
||||
@@ -14715,11 +15016,6 @@ msgstr "Aquesta acció suprimirà aquesta carpeta i tots els {2} elements del me
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "Aquesta acció suprimirà aquesta carpeta i l'element del menú de navegació que conté. Vols continuar?"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14973,7 +15269,7 @@ msgstr "A"
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "Avui"
|
||||
|
||||
@@ -15368,6 +15664,11 @@ msgstr "No s'han pogut carregar els detalls de l'aplicació. Torna-ho a intentar
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "No es pot contactar amb el backend"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15447,6 +15748,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "Desconegut"
|
||||
@@ -15479,6 +15784,11 @@ msgstr "Fitxer desconegut"
|
||||
msgid "Unknown object"
|
||||
msgstr "Objecte desconegut"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15533,7 +15843,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15570,6 +15880,11 @@ msgstr "Flux de treball sense títol"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15658,11 +15973,39 @@ msgstr "Actualitzacions"
|
||||
msgid "Upgrade"
|
||||
msgstr "Actualitzar"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "Actualitza el pla"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16550,6 +16893,7 @@ msgstr "Fluxos de treball"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16614,6 +16958,11 @@ msgstr "Informació de l'espai de treball"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "Instruccions de l'espai de treball"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16634,6 +16983,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "Nom de l'espai de treball"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16644,6 +17003,13 @@ msgstr "Les vistes d'espai de treball requereixen permís per gestionar vistes"
|
||||
msgid "Workspaces"
|
||||
msgstr "Espais de treball"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16748,7 +17114,7 @@ msgstr "Sí"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "Ahir"
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, one {{years} rok} few {{years} roky} many {{years} let} othe
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, one {# Objekt} few {# Objekty} many {# Objektů} other {# Objektů}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} z {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "{appName} chce získat přístup k vašemu účtu"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "Zkušební verze na {duration} dní"
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} související {eventObject}"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} nemůže {humanReadableAction} záznamy {objectLabel}"
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "{roleTargetName} bude přiřazen k roli \"{newRoleName}\"."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr "••••••••"
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "1 den"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12h ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "Metoda 2FA byla úspěšně odstraněna."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "Resetování metody 2FA"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "Chyba 500 - {duration}ms"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "Aktivace..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "Aktivní"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "Přidat blok"
|
||||
msgid "Add CC"
|
||||
msgstr "Přidat CC"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "Upozornění"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "Arabština"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "Archivní soubory nelze zobrazit v náhledu. Pro přístup k obsahu si soubor stáhněte."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "Protože tento pracovní postup není spouštěn ručně, formulář se
|
||||
msgid "Before"
|
||||
msgstr "Před"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "Graf"
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "Město"
|
||||
msgid "Clear"
|
||||
msgstr "Vymazat"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "dokončeno"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "Dokončeno"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "Dokončené úlohy uchovány po dobu {completedDuration}, neúspěšné
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "Připojit s Microsoft"
|
||||
msgid "Connected accounts"
|
||||
msgstr "Připojené účty"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "Současný člen pracovního prostoru nebyl nalezen."
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "Ovládací panel byl úspěšně duplikován"
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "Událost databáze"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "smazat"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "smazat"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "Smazat"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "Smazat API klíč"
|
||||
msgid "Delete app"
|
||||
msgstr "Smazat aplikaci"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "Zničit záznamy na všech objektech"
|
||||
msgid "Detach"
|
||||
msgstr "Odpojit"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "Odpojit"
|
||||
msgid "Details"
|
||||
msgstr "Podrobnosti"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "Použité extra kredity"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "Selhalo"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "Nepodařilo se sloučit záznamy. Zkuste to prosím znovu."
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "Nepodařilo se zpracovat kontext: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "pole"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "Filtrovat podle ID záznamu"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "Skupina"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "Skupina podle"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "Zdraví"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "Index"
|
||||
msgid "Indexes"
|
||||
msgstr "Indexy"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "Instaluje se..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "Připojit se k týmu {workspaceName}"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "Posledních 7 dní (od nejstarších → k nejnovějším)"
|
||||
msgid "Last 90 days"
|
||||
msgstr "Posledních 90 dní"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "Poslední platba selhala. Prosím, kontaktujte svého správce."
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "Poslední platba selhala. Prosím, aktualizujte své fakturační údaje."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "Správa fakturace a předplatného"
|
||||
msgid "Manage billing information"
|
||||
msgstr "Správa fakturačních údajů"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "Moje neveřejná zobrazení"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "Nová schválená přístupová doména"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "Nový chat"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "Nejsou dostupné žádné modely. Prosím, nakonfigurujte AI modely v na
|
||||
msgid "No notes"
|
||||
msgstr "Žádné poznámky"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "Žádné proměnné nenalezeny"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "Zatím žádné běhy workflow"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "Zatím žádné verze workflow"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "Uzel"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "Žádný"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "Nesdíleno uživatelem {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Nesynchronizováno"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "objekty"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "objekty"
|
||||
msgid "Objects"
|
||||
msgstr "Objekty"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "Mimo ušlapané cesty"
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "Starší"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "Uspořádat"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "Náhled není k dispozici"
|
||||
msgid "Previous"
|
||||
msgstr "Předchozí"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "Nedávné události (od nejstarších → k nejnovějším)"
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "Doporučené modely"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "Znovu připojit"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "Typ záznamu"
|
||||
msgid "Record-level"
|
||||
msgstr "Na úrovni záznamu"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "Záznamy"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "URI přesměrování"
|
||||
msgid "Refresh"
|
||||
msgstr "Obnovit"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "Odstranit proměnnou"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "Přejmenovat"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "Hledat objekt"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13907,7 +14205,6 @@ msgstr "Etapy"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13965,11 +14262,15 @@ msgstr "Stav"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "Stav"
|
||||
|
||||
@@ -14715,11 +15016,6 @@ msgstr "Tato akce smaže tuto složku včetně všech {2} položek navigačního
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "Tato akce smaže tuto složku a položku navigačního menu uvnitř. Chcete pokračovat?"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14973,7 +15269,7 @@ msgstr "Komu"
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "Dnes"
|
||||
|
||||
@@ -15368,6 +15664,11 @@ msgstr "Nepodařilo se načíst podrobnosti aplikace. Zkuste to prosím znovu po
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "Nepodařilo se dosáhnout zadního konce"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15447,6 +15748,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámý"
|
||||
@@ -15479,6 +15784,11 @@ msgstr "Neznámý soubor"
|
||||
msgid "Unknown object"
|
||||
msgstr "Neznámý objekt"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15533,7 +15843,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15570,6 +15880,11 @@ msgstr "Nepojmenovaný Workflow"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15658,11 +15973,39 @@ msgstr "Aktualizace"
|
||||
msgid "Upgrade"
|
||||
msgstr "Upgrade"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "Upgradovat plán"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16550,6 +16893,7 @@ msgstr "Pracovní postupy"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16614,6 +16958,11 @@ msgstr "Informace o pracovním prostoru"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "Pokyny pro pracovní prostor"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16634,6 +16983,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "Název pracovního prostoru"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16644,6 +17003,13 @@ msgstr "Pro zobrazení pracovního prostoru je třeba povolení ke správě zobr
|
||||
msgid "Workspaces"
|
||||
msgstr "Pracovní prostory"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16748,7 +17114,7 @@ msgstr "Ano"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "Včera"
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, one {{years} år} other {{years} år}}"
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, one {# objekt} other {# objekter}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} af {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "{appName} ønsker at få adgang til din konto"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "{duration} dages prøveperiode"
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} en relateret {eventObject}"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} kan ikke {humanReadableAction} {objectLabel} poster"
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "{roleTargetName} vil blive tildelt \"{newRoleName}\" rollen."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "1 dag"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12 timer ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "2FA-metode er blevet slettet med succes."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "2FA-metode nulstilling"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "500 Fejl - {duration}ms"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "Aktiverer..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "Aktiv"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "Tilføj blok"
|
||||
msgid "Add CC"
|
||||
msgstr "Tilføj CC"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "Advarsel"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisk"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "Arkivfiler kan ikke forhåndsvises. Download venligst filen for at få adgang til dens indhold."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "Da dette workflow ikke bruger en manuel udløser, åbnes formularen ikke
|
||||
msgid "Before"
|
||||
msgstr "Før"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "Diagram"
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "By"
|
||||
msgid "Clear"
|
||||
msgstr "Ryd"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "fuldført"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "Fuldført"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "Fuldførte jobs opbevares i {completedDuration}, mislykkede jobs opbevar
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "Forbind med Microsoft"
|
||||
msgid "Connected accounts"
|
||||
msgstr "Forbundne konti"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "Nuværende arbejdsområde medlem ikke fundet."
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "Dashboard duplikeret med succes"
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "Databasehændelse"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "Dato"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "slet"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "slet"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "Slet"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "Slet API nøgle"
|
||||
msgid "Delete app"
|
||||
msgstr "Slet app"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "Ødelæg poster på alle objekter"
|
||||
msgid "Detach"
|
||||
msgstr "Fjern tilknytning"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "Fjern tilknytning"
|
||||
msgid "Details"
|
||||
msgstr "Detaljer"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "Ekstra kreditter forbrugt"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "Mislykkedes"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "Kunne ikke flette poster. Prøv venligst igen."
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "Kunne ikke fortolke kontekst: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "felter"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "Filtrer efter post-ID"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "Gruppe"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "Gruppér efter"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "Sundhed"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "Indeks"
|
||||
msgid "Indexes"
|
||||
msgstr "Indekser"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "Installerer..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "Deltag i {workspaceName}-team"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "Sidste 7 dage (ældste → nyeste)"
|
||||
msgid "Last 90 days"
|
||||
msgstr "Sidste 90 dage"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "Sidste betaling mislykkedes. Kontakt venligst din administrator."
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "Sidste betaling mislykkedes. Opdater venligst dine faktureringsoplysninger."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "Administrer fakturering og abonnementer"
|
||||
msgid "Manage billing information"
|
||||
msgstr "Administrer faktureringsoplysninger"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "Mine ikke-listede visninger"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "Nyt godkendt adgangsdomæne"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "Ny chat"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "Ingen modeller tilgængelige. Konfigurer venligst AI-modeller i dine arb
|
||||
msgid "No notes"
|
||||
msgstr "Ingen noter"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "Ingen variabler fundet"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "Ingen workflow kørsler endnu"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "Ingen workflow versioner endnu"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "Node"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "Ikke delt af {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Ikke synkroniseret"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "objekter"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "objekter"
|
||||
msgid "Objects"
|
||||
msgstr "Objekter"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "Uden for alfarvej"
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "Ældre"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "Organiser"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "Forhåndsvisning er ikke tilgængelig"
|
||||
msgid "Previous"
|
||||
msgstr "Forrige"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "Seneste hændelser (ældste → nyeste)"
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "Anbefalede modeller"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "Genopret forbindelsen"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "Posttype"
|
||||
msgid "Record-level"
|
||||
msgstr "Postniveau"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "Protokoller"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "Omdirigerings-URI"
|
||||
msgid "Refresh"
|
||||
msgstr "Opdater"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "Fjern variabel"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "Omdøb"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "Søg efter et objekt"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13907,7 +14205,6 @@ msgstr "Faser"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13965,11 +14262,15 @@ msgstr "Tilstand"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@@ -14717,11 +15018,6 @@ msgstr "Denne handling vil slette denne mappe og alle de {2} navigationsmenupunk
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "Denne handling vil slette denne mappe og navigationsmenupunktet i den. Vil du fortsætte?"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14975,7 +15271,7 @@ msgstr ""
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "I dag"
|
||||
|
||||
@@ -15370,6 +15666,11 @@ msgstr "Kunne ikke indlæse applikationsoplysninger. Prøv venligst igen senere.
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "Kan ikke nå bagenden"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15449,6 +15750,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "Ukendt"
|
||||
@@ -15481,6 +15786,11 @@ msgstr "Ukendt fil"
|
||||
msgid "Unknown object"
|
||||
msgstr "Ukendt objekt"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15535,7 +15845,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15572,6 +15882,11 @@ msgstr "Uden titel workflow"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15660,11 +15975,39 @@ msgstr "Opdateringer"
|
||||
msgid "Upgrade"
|
||||
msgstr "Opgrader"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "Opgrader planen"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16552,6 +16895,7 @@ msgstr "Arbejdsgange"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16616,6 +16960,11 @@ msgstr "Arbejdsområde Info"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "Instruktioner for arbejdsområdet"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16636,6 +16985,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "Arbejdsområdets navn"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16646,6 +17005,13 @@ msgstr "Arbejdsområdevisninger kræver tilladelse til at administrere visninger
|
||||
msgid "Workspaces"
|
||||
msgstr "Arbejdsområder"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16750,7 +17116,7 @@ msgstr "Ja"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "I går"
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, one {{years} Jahr} other {{years} Jahre}}"
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, one {# Objekt} other {# Objekte}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} von {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "{appName} möchte auf Ihr Konto zugreifen"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "Testversion für {duration} Tage"
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} ein zugehöriges {eventObject}"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} kann {humanReadableAction} {objectLabel} Datensätze nicht"
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "{roleTargetName} wird die Rolle \"{newRoleName}\" zugewiesen."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr "••••••••"
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "1 Tag"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12h ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "2FA Methode wurde erfolgreich gelöscht."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "2FA Methode zurückgesetzt"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "500 Fehler - {duration}ms"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "Wird aktiviert..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "Aktiv"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "Block hinzufügen"
|
||||
msgid "Add CC"
|
||||
msgstr "CC hinzufügen"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "Meldung"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisch"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "Archivdateien können nicht in der Vorschau angezeigt werden. Bitte laden Sie die Datei herunter, um auf ihren Inhalt zuzugreifen."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "Da dieser Workflow keinen manuellen Auslöser verwendet, wird das Formul
|
||||
msgid "Before"
|
||||
msgstr "Vor"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "Diagramm"
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "Stadt"
|
||||
msgid "Clear"
|
||||
msgstr "Löschen"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "abgeschlossen"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "Abgeschlossen"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "Abgeschlossene Aufgaben werden für {completedDuration} aufbewahrt, fehl
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "Mit Microsoft verbinden"
|
||||
msgid "Connected accounts"
|
||||
msgstr "Verbundene Konten"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "Aktuelles Arbeitsbereichsmitglied nicht gefunden."
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "Dashboard erfolgreich dupliziert"
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "Datenbankereignis"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "löschen"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "löschen"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "API-Schlüssel löschen"
|
||||
msgid "Delete app"
|
||||
msgstr "App löschen"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "Datensätze auf allen Objekten zerstören"
|
||||
msgid "Detach"
|
||||
msgstr "Trennen"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "Trennen"
|
||||
msgid "Details"
|
||||
msgstr "Details"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "Verwendete zusätzliche Credits"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "Fehlgeschlagen"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "Zusammenführen der Datensätze fehlgeschlagen. Bitte versuchen Sie es e
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "Kontext konnte nicht geparst werden: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "Felder"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "Nach Datensatz-ID filtern"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "Gruppe"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "Gruppieren nach"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "Systemzustand"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "Indizes"
|
||||
msgid "Indexes"
|
||||
msgstr "Indizes"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "Wird installiert..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "Dem {workspaceName} Team beitreten"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "Letzte 7 Tage (älteste → neueste)"
|
||||
msgid "Last 90 days"
|
||||
msgstr "Letzte 90 Tage"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "Letzte Zahlung fehlgeschlagen. Bitte kontaktieren Sie Ihren Administrato
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "Letzte Zahlung fehlgeschlagen. Bitte aktualisieren Sie Ihre Rechnungsdaten."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "Abrechnung und Abonnements verwalten"
|
||||
msgid "Manage billing information"
|
||||
msgstr "Verwalten Sie die Rechnungsdaten"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "Meine nicht gelisteten Ansichten"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "Neue genehmigte Zugriffsdomäne"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "Neuer Chat"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "Keine Modelle verfügbar. Bitte konfigurieren Sie KI-Modelle in Ihren Ar
|
||||
msgid "No notes"
|
||||
msgstr "Keine Notizen"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "Keine Variablen gefunden"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "Noch keine Workflow-Ausführungen"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "Noch keine Workflow-Versionen"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "Knoten"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "Keine"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "Nicht geteilt von {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Nicht synchronisiert"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "Objekte"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "Objekte"
|
||||
msgid "Objects"
|
||||
msgstr "Objekte"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "Abseits der ausgetretenen Pfade"
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "Älter"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "Organisieren"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "Vorschau nicht verfügbar"
|
||||
msgid "Previous"
|
||||
msgstr "Vorherige"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "Aktuelle Ereignisse (älteste → neueste)"
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "Empfohlene Modelle"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "Erneut verbinden"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "Datensatztyp"
|
||||
msgid "Record-level"
|
||||
msgstr "Datensatzebene"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "Datensätze"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "Umleitungs-URI"
|
||||
msgid "Refresh"
|
||||
msgstr "Aktualisieren"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "Variable entfernen"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "Umbenennen"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "Ein Objekt suchen"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13907,7 +14205,6 @@ msgstr "Phasen"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13965,11 +14262,15 @@ msgstr "Zustand"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@@ -14715,11 +15016,6 @@ msgstr "Diese Aktion löscht diesen Ordner und alle {2} enthaltenen Navigationsm
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "Diese Aktion löscht diesen Ordner und das enthaltene Navigationsmenüelement. Möchten Sie fortfahren?"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14973,7 +15269,7 @@ msgstr "An"
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "Heute"
|
||||
|
||||
@@ -15368,6 +15664,11 @@ msgstr "Anwendungsdetails können nicht geladen werden. Bitte versuchen Sie es s
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "Backend nicht erreichbar"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15447,6 +15748,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
@@ -15479,6 +15784,11 @@ msgstr "Unbekannte Datei"
|
||||
msgid "Unknown object"
|
||||
msgstr "Unbekanntes Objekt"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15533,7 +15843,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15570,6 +15880,11 @@ msgstr "Unbenannter Workflow"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15658,11 +15973,39 @@ msgstr "Aktualisierungen"
|
||||
msgid "Upgrade"
|
||||
msgstr "Upgrade"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "Tarif upgraden"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16550,6 +16893,7 @@ msgstr "Workflows"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16614,6 +16958,11 @@ msgstr "Arbeitsbereichsinfo"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "Arbeitsbereichsanweisungen"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16634,6 +16983,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "Arbeitsbereichsname"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16644,6 +17003,13 @@ msgstr "Arbeitsplatzansichten erfordern das Verwaltensrecht von Ansichten"
|
||||
msgid "Workspaces"
|
||||
msgstr "Arbeitsbereiche"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16748,7 +17114,7 @@ msgstr "Ja"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "Gestern"
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ msgstr "{0, plural, one {{years} έτος} other {{years} έτη}}"
|
||||
msgid "{0, plural, one {# Object} other {# Objects}}"
|
||||
msgstr "{0, plural, one {# Αντικείμενο} other {# Αντικείμενα}}"
|
||||
|
||||
#. js-lingui-id: 8ob0vY
|
||||
#. placeholder {0}: failedCount + behindCount
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{0, plural, one {# workspace failed or behind} other {# workspaces failed or behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WTc9VY
|
||||
#. placeholder {0}: restriction.fieldNames.length
|
||||
#: src/modules/page-layout/widgets/components/PageLayoutWidgetForbiddenDisplay.tsx
|
||||
@@ -204,6 +210,12 @@ msgstr ""
|
||||
msgid "{0} widgets"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xTgz1F
|
||||
#. placeholder {1}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "{1} OAuth is not yet set up by your server administrator. They need to fill in the OAuth client ID and secret on the application registration before you can add a connection."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qdQhzv
|
||||
#: src/modules/views/advanced-filter-chip/components/AdvancedFilterChip.tsx
|
||||
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
|
||||
@@ -229,6 +241,12 @@ msgstr "{aggregateLabel} του {fieldLabel}"
|
||||
msgid "{appName} wants to access your account"
|
||||
msgstr "Το {appName} θέλει να αποκτήσει πρόσβαση στον λογαριασμό σας"
|
||||
|
||||
#. js-lingui-id: y9covz
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{behindCount, plural, one {# workspace behind} other {# workspaces behind}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SU5Crx
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "{cachedPercent}% cached"
|
||||
@@ -291,6 +309,12 @@ msgstr "Δοκιμή {duration} ημερών"
|
||||
msgid "{eventAction} a related {eventObject}"
|
||||
msgstr "{eventAction} ένα σχετικό {eventObject}"
|
||||
|
||||
#. js-lingui-id: nRKZKb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getWorkspacesUpgradeHealthText.ts
|
||||
msgid "{failedCount, plural, one {# workspace failed} other {# workspaces failed}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: POhzPf
|
||||
#: src/modules/ai/hooks/useAiChatFileUpload.ts
|
||||
msgid "{failedCount} file(s) failed to upload"
|
||||
@@ -443,6 +467,11 @@ msgstr "{roleLabel} δεν μπορεί να {humanReadableAction} αρχεία
|
||||
msgid "{roleTargetName} will be assigned to the \"{newRoleName}\" role."
|
||||
msgstr "Ο χρήστης {roleTargetName} θα εκχωρηθεί στο ρόλο \"{newRoleName}\"."
|
||||
|
||||
#. js-lingui-id: UsskHt
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "{scopeCount} scopes"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: kvVMdH
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
msgid "{selectedCount, plural, one {Delete {selectedCount} Job} other {Delete {selectedCount} Jobs}}"
|
||||
@@ -516,6 +545,12 @@ msgstr ""
|
||||
msgid "••••••••"
|
||||
msgstr "••••••••"
|
||||
|
||||
#. js-lingui-id: n9nj+X
|
||||
#. placeholder {0}: aiChatThreadPendingDelete?.threadTitle ?? ''
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "<0>{0}</0> and all its messages will be removed."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SMgdEJ
|
||||
#. placeholder {0}: formatNumber(preview.estimatedTokenCount, { abbreviate: true, decimals: 1, })
|
||||
#. placeholder {0}: formatNumber( section.estimatedTokenCount, { abbreviate: true, decimals: 1, }, )
|
||||
@@ -542,6 +577,11 @@ msgstr "0 */1 * * *"
|
||||
msgid "1 day"
|
||||
msgstr "1 ημέρα"
|
||||
|
||||
#. js-lingui-id: Mkh9C8
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 scope"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W/OU4i
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "1 tab"
|
||||
@@ -584,6 +624,11 @@ msgstr ""
|
||||
msgid "12h ({hour12Label})"
|
||||
msgstr "12ω ({hour12Label})"
|
||||
|
||||
#. js-lingui-id: wk1eMj
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "1d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yXvRMf
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
#: src/modules/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown.tsx
|
||||
@@ -630,6 +675,16 @@ msgstr "Η μέθοδος 2FA διαγράφηκε με επιτυχία."
|
||||
msgid "2FA Method Reset"
|
||||
msgstr "Επαναφορά Μεθόδου 2FA"
|
||||
|
||||
#. js-lingui-id: cI6f7l
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "30d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: XO2NLh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "3d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 2Lvxm0
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "50,000 workflow node executions"
|
||||
@@ -640,6 +695,11 @@ msgstr ""
|
||||
msgid "500 Error - {duration}ms"
|
||||
msgstr "500 Σφάλμα - {duration}ms"
|
||||
|
||||
#. js-lingui-id: wH8/eh
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
msgid "7d"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 43TqJC
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
msgid "A display name for this provider"
|
||||
@@ -873,6 +933,7 @@ msgstr "Ενεργοποίηση..."
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Active"
|
||||
msgstr "Ενεργό"
|
||||
|
||||
@@ -965,6 +1026,11 @@ msgstr "Προσθήκη Μπλοκ"
|
||||
msgid "Add CC"
|
||||
msgstr "Προσθήκη κοινοποίησης"
|
||||
|
||||
#. js-lingui-id: Rop0cs
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Add connection"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: RVp8im
|
||||
#: src/modules/settings/admin-panel/ai/components/SettingsAdminAI.tsx
|
||||
msgid "Add custom endpoints, private gateways, or additional regions."
|
||||
@@ -1307,7 +1373,10 @@ msgid "Admin Panel - General"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: v/zjIb
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
msgid "Admin Panel - Health"
|
||||
msgstr ""
|
||||
@@ -1568,6 +1637,8 @@ msgstr "Ειδοποίηση"
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx
|
||||
#: src/modules/settings/components/SettingsDatabaseEventsForm.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadLastActivityFilterLabels.ts
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
|
||||
#: src/modules/activities/notes/components/NotesCard.tsx
|
||||
#: src/modules/activities/files/components/FilesCard.tsx
|
||||
@@ -2029,6 +2100,7 @@ msgstr ""
|
||||
#. js-lingui-id: LMUw1U
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
|
||||
msgid "App"
|
||||
@@ -2150,11 +2222,21 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr "Αραβικά"
|
||||
|
||||
#. js-lingui-id: B495Gs
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i19Zro
|
||||
#: src/modules/activities/files/components/DocumentViewer.tsx
|
||||
msgid "Archive files cannot be previewed. Please download the file to access its contents."
|
||||
msgstr "Τα συμπιεσμένα αρχεία δεν μπορούν να προεπισκοπηθούν. Παρακαλούμε κάντε λήψη του αρχείου για να αποκτήσετε πρόσβαση στα περιεχόμενά του."
|
||||
|
||||
#. js-lingui-id: TdfEV7
|
||||
#: src/modules/ai/constants/AgentChatThreadFilterStatusLabels.ts
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 4CHeVx
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Are you sure you want to delete this evaluation input?"
|
||||
@@ -2591,6 +2673,12 @@ msgstr "Επειδή αυτή η ροή εργασίας δεν χρησιμοπ
|
||||
msgid "Before"
|
||||
msgstr "Πριν"
|
||||
|
||||
#. js-lingui-id: +MqoSu
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KYr9vA
|
||||
#: src/pages/settings/ai/components/SettingsAiModelsTab.tsx
|
||||
msgid "Best"
|
||||
@@ -3101,11 +3189,21 @@ msgstr "Διάγραμμα"
|
||||
msgid "Chat"
|
||||
msgstr "Συνομιλία"
|
||||
|
||||
#. js-lingui-id: rlwve5
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Chat actions"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eKz2ln
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
msgid "Chat conversation"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: tDlhkF
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
msgid "Chat name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jTS+KY
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
msgid "Chat Sessions"
|
||||
@@ -3225,6 +3323,11 @@ msgstr "Πόλη"
|
||||
msgid "Clear"
|
||||
msgstr "Καθαρισμός"
|
||||
|
||||
#. js-lingui-id: u8JHrO
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wu0RfR
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableHelpText.tsx
|
||||
msgid "Clear the field or \"X\" to revert to environment/default value."
|
||||
@@ -3460,7 +3563,9 @@ msgid "completed"
|
||||
msgstr "ολοκληρωμένο"
|
||||
|
||||
#. js-lingui-id: qqWcBV
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Completed"
|
||||
msgstr "Αποπερατωμένες"
|
||||
@@ -3475,6 +3580,11 @@ msgstr "Οι ολοκληρωμένες εργασίες διατηρούντα
|
||||
msgid "Component name"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: BglnOD
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Computed at"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0CuAor
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/if-else-action/components/WorkflowEditActionIfElseBody.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowEditActionFilterBody.tsx
|
||||
@@ -3658,6 +3768,16 @@ msgstr "Συνδέστε με τη Microsoft"
|
||||
msgid "Connected accounts"
|
||||
msgstr "Συνδεδεμένοι λογαριασμοί"
|
||||
|
||||
#. js-lingui-id: 54WNJ6
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "connection provider"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sbBqyy
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
msgid "Connection providers"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: W4Kgwq
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
msgid "Connection settings"
|
||||
@@ -4339,7 +4459,6 @@ msgstr "Το τρέχον μέλος του χώρου εργασίας δεν
|
||||
#. js-lingui-id: 8Tg/JR
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel.ts
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
@@ -4504,6 +4623,7 @@ msgstr "Ο πίνακας ελέγχου αντιγράφηκε με επιτυ
|
||||
|
||||
#. js-lingui-id: HKH+W+
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/workflow/trigger-type/components/SidePanelWorkflowSelectTriggerTypeContent.tsx
|
||||
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/constants/ChartSettingsHeadings.ts
|
||||
@@ -4596,6 +4716,7 @@ msgstr "Συμβάν βάσης δεδομένων"
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterDropdownContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownMenuContent.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "Date"
|
||||
msgstr "Ημερομηνία"
|
||||
|
||||
@@ -4838,6 +4959,7 @@ msgstr "διαγραφή"
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -4871,6 +4993,8 @@ msgstr "διαγραφή"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/blocknote-editor/components/CustomSideMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Delete"
|
||||
msgstr "Διαγραφή"
|
||||
@@ -4931,6 +5055,11 @@ msgstr "Διαγραφή κλειδιού API"
|
||||
msgid "Delete app"
|
||||
msgstr "Διαγραφή εφαρμογής"
|
||||
|
||||
#. js-lingui-id: YFpLoV
|
||||
#: src/modules/ai/components/AiChatThreadDeleteConfirmationModal.tsx
|
||||
msgid "Delete chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gf2eXy
|
||||
#: src/pages/settings/ai/components/SettingsAgentEvalsTab.tsx
|
||||
msgid "Delete Evaluation Input"
|
||||
@@ -5138,6 +5267,11 @@ msgstr "Καταστροφή εγγραφών σε όλα τα αντικείμ
|
||||
msgid "Detach"
|
||||
msgstr "Αποσύνδεση"
|
||||
|
||||
#. js-lingui-id: crxufE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Detail per workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: URmyfc
|
||||
#: src/pages/settings/security/event-logs/utils/getColumnsForEventLogTable.ts
|
||||
#: src/pages/settings/layout/components/SettingsLayoutDetailScaffold.tsx
|
||||
@@ -5146,6 +5280,11 @@ msgstr "Αποσύνδεση"
|
||||
msgid "Details"
|
||||
msgstr "Λεπτομέρειες"
|
||||
|
||||
#. js-lingui-id: /RlqQE
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Detected application version running on this instance"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aDnUb
|
||||
#: src/pages/settings/applications/SettingsApplications.tsx
|
||||
msgid "Developer"
|
||||
@@ -6600,7 +6739,11 @@ msgstr "Πρόσθετες μονάδες χρησιμοποιήθηκαν"
|
||||
|
||||
#. js-lingui-id: 7Bj3x9
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Failed"
|
||||
msgstr "Απέτυχε"
|
||||
@@ -6710,6 +6853,13 @@ msgstr "Αποτυχία συγχώνευσης εγγραφών. Παρακαλ
|
||||
msgid "Failed to parse context: {contextValue}"
|
||||
msgstr "Αποτυχία ανάλυσης πλαισίου: {contextValue}"
|
||||
|
||||
#. js-lingui-id: 3m7+J/
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Failed to refresh upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 3YA1cX
|
||||
#: src/pages/settings/admin-panel/SettingsAdminAiProviderDetail.tsx
|
||||
msgid "Failed to remove model"
|
||||
@@ -6953,6 +7103,8 @@ msgstr "πεδία"
|
||||
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
|
||||
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
|
||||
@@ -7085,6 +7237,11 @@ msgstr ""
|
||||
msgid "Filter by record ID"
|
||||
msgstr "Φιλτράρισμα κατά αναγνωριστικό εγγραφής"
|
||||
|
||||
#. js-lingui-id: /+U0Y/
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdown.tsx
|
||||
msgid "Filter chats"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /VmB4B
|
||||
#: src/modules/object-record/advanced-filter/components/AdvancedFilterRecordFilterGroupOptionsDropdown.tsx
|
||||
msgid "Filter group rule options"
|
||||
@@ -7492,6 +7649,8 @@ msgstr "Ομάδα"
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupsContent.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownGroupByMenu.tsx
|
||||
msgid "Group by"
|
||||
msgstr "Ομαδοποίηση ανά"
|
||||
|
||||
@@ -7580,6 +7739,11 @@ msgstr ""
|
||||
msgid "Health"
|
||||
msgstr "Κατάσταση"
|
||||
|
||||
#. js-lingui-id: HyaXse
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
msgid "Health of the latest instance command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I1IOmb
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Health Status"
|
||||
@@ -8035,6 +8199,15 @@ msgstr "Ευρετήριο"
|
||||
msgid "Indexes"
|
||||
msgstr "Ευρετήρια"
|
||||
|
||||
#. js-lingui-id: hG711D
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Inferred version"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CE+M2e
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
@@ -8130,6 +8303,13 @@ msgstr ""
|
||||
msgid "Installing..."
|
||||
msgstr "Γίνεται εγκατάσταση..."
|
||||
|
||||
#. js-lingui-id: x8uKc7
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Instance status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AwUsnG
|
||||
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
|
||||
msgid "Instances"
|
||||
@@ -8503,6 +8683,16 @@ msgstr "Συμμετοχή στην ομάδα {workspaceName}"
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: UpNpMK
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just for me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: JJOCq/
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Just me"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OGXtL8
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
@@ -8633,6 +8823,30 @@ msgstr "Τελευταίες 7 Ημέρες (παλιότερα → νεότερ
|
||||
msgid "Last 90 days"
|
||||
msgstr "Τελευταίες 90 ημέρες"
|
||||
|
||||
#. js-lingui-id: 4AKv0+
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownLastActivityMenu.tsx
|
||||
msgid "Last activity"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: IpCCj8
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cdB4EG
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last command result"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wW6NCp
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last error"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c5zxSg
|
||||
#: src/modules/ai/components/internal/AiChatContextUsageButton.tsx
|
||||
msgid "Last message"
|
||||
@@ -8671,6 +8885,12 @@ msgstr "Η τελευταία πληρωμή απέτυχε. Παρακαλώ ε
|
||||
msgid "Last payment failed. Please update your billing details."
|
||||
msgstr "Η τελευταία πληρωμή απέτυχε. Παρακαλώ ενημερώστε τα στοιχεία χρέωσής σας."
|
||||
|
||||
#. js-lingui-id: C3yOz3
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Last updated"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wL3cK8
|
||||
#: src/modules/settings/applications/components/SettingsApplicationAboutSidebar.tsx
|
||||
#: src/modules/object-record/record-board/record-board-column/utils/getAggregateOperationShortLabel.ts
|
||||
@@ -9114,6 +9334,12 @@ msgstr "Διαχείριση χρέωσης και συνδρομών"
|
||||
msgid "Manage billing information"
|
||||
msgstr "Διαχείριση πληροφοριών χρέωσης"
|
||||
|
||||
#. js-lingui-id: GDz4fg
|
||||
#. placeholder {0}: provider.displayName
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Manage connections used by this app to call {0}."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: U8dG4j
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
#: src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx
|
||||
@@ -9642,6 +9868,15 @@ msgstr "Οι μη καταχωρισμένες προβολές μου"
|
||||
msgid "mySkill"
|
||||
msgstr "mySkill"
|
||||
|
||||
#. js-lingui-id: fj5byd
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 6YtxFj
|
||||
#: src/testing/mock-data/tableData.ts
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
@@ -9654,6 +9889,7 @@ msgstr "mySkill"
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
|
||||
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -9794,7 +10030,7 @@ msgstr "Νέος Εγκεκριμένος Τομέας Πρόσβασης"
|
||||
#. js-lingui-id: hIQkLb
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadDateSection.tsx
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatThreadItem.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "New chat"
|
||||
msgstr "Νέα συνομιλία"
|
||||
@@ -10338,6 +10574,11 @@ msgstr "Δεν υπάρχουν διαθέσιμα μοντέλα. Παρακα
|
||||
msgid "No notes"
|
||||
msgstr "Δεν υπάρχουν σημειώσεις"
|
||||
|
||||
#. js-lingui-id: 14uqQk
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "No object found"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: YFHO2u
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "No objects with views found"
|
||||
@@ -10513,7 +10754,6 @@ msgid "No variables found"
|
||||
msgstr "Δεν βρέθηκαν μεταβλητές"
|
||||
|
||||
#. js-lingui-id: OCektF
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
|
||||
msgid "No variables to set for this application"
|
||||
msgstr ""
|
||||
@@ -10528,6 +10768,16 @@ msgstr "Δεν υπάρχουν ακόμα runs του workflow"
|
||||
msgid "No workflow versions yet"
|
||||
msgstr "Δεν υπάρχουν ακόμα έκδοσεις του workflow"
|
||||
|
||||
#. js-lingui-id: Q4dFjT
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace behind"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: apOMfI
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "No workspace failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: rPAZRd
|
||||
#: src/modules/settings/lab/hooks/useLabPublicFeatureFlags.ts
|
||||
msgid "No workspace selected"
|
||||
@@ -10545,16 +10795,19 @@ msgstr "Κόμβος"
|
||||
|
||||
#. js-lingui-id: EdQY6l
|
||||
#: src/pages/settings/admin-panel/SettingsAdminNewAiProvider.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/BodyInput.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionEmailBase.tsx
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityLabel.ts
|
||||
#: src/modules/side-panel/pages/page-layout/utils/getChartAxisNameDisplayOptions.ts
|
||||
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsMessageAutoCreationCard.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterMenuContent.tsx
|
||||
#: src/modules/object-record/record-table/record-table-footer/components/RecordTableColumnAggregateFooterAggregateOperationMenuItems.tsx
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
|
||||
#: src/modules/ai/constants/AgentChatThreadGroupByLabels.ts
|
||||
msgid "None"
|
||||
msgstr "Κανένα"
|
||||
|
||||
@@ -10615,6 +10868,11 @@ msgstr "Δεν κοινοποιήθηκε από τον/την {notSharedByFullN
|
||||
msgid "Not synced"
|
||||
msgstr "Δεν συγχρονίζεται"
|
||||
|
||||
#. js-lingui-id: VngD1z
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
msgid "Nothing to configure for this application"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: DYCPYF
|
||||
#: src/modules/page-layout/widgets/components/StandaloneWidgetPlaceholder.tsx
|
||||
msgid "Nothing to see"
|
||||
@@ -10692,6 +10950,11 @@ msgstr ""
|
||||
msgid "OAuth"
|
||||
msgstr "OAuth"
|
||||
|
||||
#. js-lingui-id: IxKj9Y
|
||||
#: src/modules/settings/applications/hooks/useComputeApplicationContentForLayoutAndLogic.ts
|
||||
msgid "OAuth 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pNEViR
|
||||
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
@@ -10784,6 +11047,7 @@ msgstr "αντικείμενα"
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
|
||||
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowAiAgentPermissionsObjectsList.tsx
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
@@ -10791,6 +11055,11 @@ msgstr "αντικείμενα"
|
||||
msgid "Objects"
|
||||
msgstr "Αντικείμενα"
|
||||
|
||||
#. js-lingui-id: tmyEbd
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
msgid "Objects and fields managed by this app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /8Yh6y
|
||||
#: src/modules/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection.tsx
|
||||
msgid "Objects and fields permissions settings"
|
||||
@@ -10811,11 +11080,6 @@ msgstr "Εκτός της συνηθισμένης πορείας"
|
||||
msgid "ol"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /fwE6J
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
msgid "Older"
|
||||
msgstr "Παλαιότερα"
|
||||
|
||||
#. js-lingui-id: +rvV4v
|
||||
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Omit zero values"
|
||||
@@ -11073,10 +11337,13 @@ msgstr "Οργάνωση"
|
||||
#. js-lingui-id: /IX/7x
|
||||
#: src/pages/settings/updates/SettingsUpdates.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceChatThread.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminQueueDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx
|
||||
@@ -11644,6 +11911,11 @@ msgstr "Η προεπισκόπηση δεν είναι διαθέσιμη"
|
||||
msgid "Previous"
|
||||
msgstr "Προηγούμενο"
|
||||
|
||||
#. js-lingui-id: x97ifc
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Previous 7 days"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jmc+FY
|
||||
#: src/modules/settings/billing/components/internal/MeteredPriceSelector.tsx
|
||||
msgid "Price updated."
|
||||
@@ -11969,6 +12241,12 @@ msgstr "Πρόσφατα Γεγονότα (παλιότερα → νεότερα
|
||||
msgid "Recent Users"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AQbgLJ
|
||||
#: src/modules/ai/components/NavigationDrawerAiChatContent.tsx
|
||||
#: src/modules/ai/components/AiChatThreadsList.tsx
|
||||
msgid "Recents"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yPrbsy
|
||||
#: src/modules/activities/emails/components/EmailComposerFields.tsx
|
||||
msgid "Recipients"
|
||||
@@ -11980,12 +12258,18 @@ msgid "Recommended Models"
|
||||
msgstr "Συνιστώμενα Μοντέλα"
|
||||
|
||||
#. js-lingui-id: gcoiFh
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountInsufficientPermissions.tsx
|
||||
#: src/modules/information-banner/components/reconnect-account/InformationBannerReconnectAccountEmailAliases.tsx
|
||||
msgid "Reconnect"
|
||||
msgstr "Επανασύνδεση"
|
||||
|
||||
#. js-lingui-id: XsIxsL
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Reconnect needed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hVS0gK
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsRecordPicker.tsx
|
||||
msgid "record"
|
||||
@@ -12057,17 +12341,17 @@ msgstr "Τύπος εγγραφής"
|
||||
msgid "Record-level"
|
||||
msgstr "Επίπεδο εγγραφής"
|
||||
|
||||
#. js-lingui-id: X5BjmT
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Record(s) selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PWlTvh
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader.tsx
|
||||
msgid "Records"
|
||||
msgstr "Εγγραφές"
|
||||
|
||||
#. js-lingui-id: J+Qyf2
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
#: src/modules/command-menu-item/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx
|
||||
msgid "Records selected"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRTiSD
|
||||
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
|
||||
msgid "Red"
|
||||
@@ -12098,6 +12382,13 @@ msgstr "URI Ανακατεύθυνσης"
|
||||
msgid "Refresh"
|
||||
msgstr "Ανανέωση"
|
||||
|
||||
#. js-lingui-id: pTGa/J
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Refresh status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vpZcGd
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
|
||||
@@ -12296,10 +12587,16 @@ msgstr "Αφαίρεση μεταβλητής"
|
||||
#. js-lingui-id: 2wxgft
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
|
||||
#: src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
#: src/modules/activities/files/components/AttachmentDropdown.tsx
|
||||
msgid "Rename"
|
||||
msgstr "Μετονομασία"
|
||||
|
||||
#. js-lingui-id: 6PsaMr
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
msgid "Rename chat"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oQjB9l
|
||||
#: src/modules/settings/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Renewal date"
|
||||
@@ -12860,6 +13157,7 @@ msgid "Search an object"
|
||||
msgstr "Αναζήτηση αντικειμένου"
|
||||
|
||||
#. js-lingui-id: BoNHR0
|
||||
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx
|
||||
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
|
||||
msgid "Search an object..."
|
||||
@@ -13909,7 +14207,6 @@ msgstr "Στάδια"
|
||||
|
||||
#. js-lingui-id: TJBHlP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
#: src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelObjectPicker.tsx
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "Standard"
|
||||
@@ -13967,11 +14264,15 @@ msgstr "Κατάσταση"
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
|
||||
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceBillingContent.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsConnectedAccountsTableHeader.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownStatusMenu.tsx
|
||||
#: src/modules/ai/components/AiChatThreadFilterDropdownRootMenu.tsx
|
||||
msgid "Status"
|
||||
msgstr "Κατάσταση"
|
||||
|
||||
@@ -14719,11 +15020,6 @@ msgstr "Αυτή η ενέργεια θα διαγράψει αυτόν τον
|
||||
msgid "This action will delete this folder and the navigation menu item inside. Do you want to continue?"
|
||||
msgstr "Αυτή η ενέργεια θα διαγράψει αυτόν τον φάκελο και το στοιχείο μενού πλοήγησης μέσα. Θέλετε να συνεχίσετε;"
|
||||
|
||||
#. js-lingui-id: 6jJt3O
|
||||
#: src/modules/applications/hooks/useApplicationChipData.ts
|
||||
msgid "This app"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: WCa/7U
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationFrontComponentPreviewTab.tsx
|
||||
msgid "This component runs without a UI and renders nothing here."
|
||||
@@ -14977,7 +15273,7 @@ msgstr "Προς"
|
||||
#: src/modules/settings/admin-panel/health-status/constants/WorkerQueueMetricsSelectOptions.ts
|
||||
#: src/modules/object-record/record-calendar/components/RecordCalendarTopBar.tsx
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Today"
|
||||
msgstr "Σήμερα"
|
||||
|
||||
@@ -15372,6 +15668,11 @@ msgstr "Δεν είναι δυνατή η φόρτωση των λεπτομερ
|
||||
msgid "Unable to Reach Back-end"
|
||||
msgstr "Μη διαθέσιμη σύνδεση με το Back-end"
|
||||
|
||||
#. js-lingui-id: 5JOLV9
|
||||
#: src/modules/ai/components/AiChatThreadItemMenu.tsx
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EUHN7i
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
|
||||
msgid "Undefined"
|
||||
@@ -15451,6 +15752,10 @@ msgstr ""
|
||||
#. js-lingui-id: Ef7StM
|
||||
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusRightContainer.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminVersionContainer.tsx
|
||||
msgid "Unknown"
|
||||
msgstr "Άγνωστο"
|
||||
@@ -15483,6 +15788,11 @@ msgstr "Άγνωστο αρχείο"
|
||||
msgid "Unknown object"
|
||||
msgstr "Άγνωστο αντικείμενο"
|
||||
|
||||
#. js-lingui-id: m/o1+r
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesByHealthAccordion.tsx
|
||||
msgid "Unknown workspace"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GQCXQS
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
@@ -15537,7 +15847,7 @@ msgstr ""
|
||||
#: src/modules/object-record/components/RecordChip.tsx
|
||||
#: src/modules/mention/components/MentionRecordChip.tsx
|
||||
#: src/modules/ai/components/RecordLink.tsx
|
||||
#: src/modules/ai/components/AiChatThreadGroup.tsx
|
||||
#: src/modules/ai/components/AiChatThreadListItem.tsx
|
||||
#: src/modules/ai/components/internal/AgentChatFilePreview.tsx
|
||||
#: src/modules/activities/timeline-activities/rows/activity/components/EventRowActivity.tsx
|
||||
msgid "Untitled"
|
||||
@@ -15574,6 +15884,11 @@ msgstr "Άτιτλη Εργασία"
|
||||
msgid "Unused credits from the previous period. Expired at the end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j5CWO4
|
||||
#: src/modules/settings/admin-panel/utils/getUpgradeHealthStatusBadge.ts
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hmc//6
|
||||
#: src/modules/workflow/workflow-trigger/components/CronExpressionHelper.tsx
|
||||
msgid "Upcoming execution time ({timeZone})"
|
||||
@@ -15662,11 +15977,39 @@ msgstr "Ενημερώσεις"
|
||||
msgid "Upgrade"
|
||||
msgstr "Αναβάθμιση"
|
||||
|
||||
#. js-lingui-id: IEtN5Y
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkspacesStatusSummaryCard.tsx
|
||||
msgid "Upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 88ZkNH
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Upgrade health across all workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +awaFr
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
msgid "Upgrade health across instance and workspaces"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7aHRdp
|
||||
#: src/modules/ai/components/AiChatCreditsExhaustedMessage.tsx
|
||||
msgid "Upgrade Plan"
|
||||
msgstr "Αναβάθμιση προγράμματος"
|
||||
|
||||
#. js-lingui-id: 5UfQvA
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminHealthStatus.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Upgrade Status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: /l59TO
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInstanceStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminInferredVersion.tsx
|
||||
msgid "Upgrade status refreshed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: pKCx2F
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationDetailAboutTab.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationVersionContainer.tsx
|
||||
@@ -16554,6 +16897,7 @@ msgstr "Ροές Εργασίας"
|
||||
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationFrontComponentDetail.tsx
|
||||
#: src/pages/settings/applications/SettingsApplicationDetails.tsx
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
#: src/pages/settings/applications/components/SettingsApplicationRegistrationConfigVariableDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsToolDetail.tsx
|
||||
#: src/pages/settings/ai/SettingsSkillForm.tsx
|
||||
@@ -16618,6 +16962,11 @@ msgstr "Πληροφορίες Χώρου Εργασίας"
|
||||
msgid "Workspace Instructions"
|
||||
msgstr "Οδηγίες Χώρου Εργασίας"
|
||||
|
||||
#. js-lingui-id: Ce7yfm
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
msgid "Workspace lists by upgrade status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Y0Fj4S
|
||||
#: src/pages/onboarding/CreateWorkspace.tsx
|
||||
msgid "Workspace logo"
|
||||
@@ -16638,6 +16987,16 @@ msgstr ""
|
||||
msgid "Workspace name"
|
||||
msgstr "Όνομα Workspace"
|
||||
|
||||
#. js-lingui-id: PHF7zj
|
||||
#: src/pages/settings/applications/tabs/SettingsApplicationConnectionsSection.tsx
|
||||
msgid "Workspace shared"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Smg70n
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
|
||||
msgid "Workspace upgrade health"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QZi0YX
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
|
||||
msgid "Workspace views require manage views permission"
|
||||
@@ -16648,6 +17007,13 @@ msgstr "Οι προβολές χώρου εργασίας απαιτούν δι
|
||||
msgid "Workspaces"
|
||||
msgstr "Περιοχές Εργασίας"
|
||||
|
||||
#. js-lingui-id: 33fb3H
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdminWorkspacesStatus.tsx
|
||||
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminUpgradeStatusListCard.tsx
|
||||
msgid "Workspaces status"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: QPsQMb
|
||||
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
|
||||
msgid "Would you like to remove {recordIndexRecordGroupSort} group sorting?"
|
||||
@@ -16752,7 +17118,7 @@ msgstr "Ναι"
|
||||
|
||||
#. js-lingui-id: y/0uwd
|
||||
#: src/modules/localization/utils/formatDateISOStringToRelativeDate.ts
|
||||
#: src/modules/ai/utils/getDateGroupTitle.ts
|
||||
#: src/modules/ai/utils/groupThreadsByDate.ts
|
||||
msgid "Yesterday"
|
||||
msgstr "Χθες"
|
||||
|
||||
|
||||