Skip to content

[sync] fix: reject reserved @ in AI provider and model IDs T5718#3576

Merged
caoxing9 merged 1 commit into
developfrom
sync/ee-20260713-102150
Jul 13, 2026
Merged

[sync] fix: reject reserved @ in AI provider and model IDs T5718#3576
caoxing9 merged 1 commit into
developfrom
sync/ee-20260713-102150

Conversation

@tea-artist

Copy link
Copy Markdown
Contributor

🔄 Automated sync from EE repository.

72 commit(s) synced since last sync.

Authors

Included commits

  • fix: reject reserved @ in AI provider and model IDs T5718 (Uno)
  • ci: stop blocking community integration tests on coveralls upload failures (Aries X)
  • fix(attachments): honor EXIF orientation in thumbnails and image metadata T5712 (Uno)
  • [codex] T6172 fix: serialize JSON values during BYODB delta replay (nichenqin)
  • feat(byodb): staged migration progress with dynamic ETA T6174 (Bieber)
  • feat(t5690): update license and Teable skill settings T5690 T4787 T6073 (Jun Lu)
  • fix: record history filter dropdowns cannot scroll inside modal dialog (SkyHuang)
  • fix: recover remaining community sync checks (T6074) (Aries X)
  • fix: recover remaining community sync CI failures (T6074) (Aries X)
  • ci: stop forcing v2 in community integration tests (Aries X)
  • fix: recover remaining community CI gates (T6074) (Aries X)
  • perf(v2): self-link bulk duplicate and same-db base stream bulk T6158 (nichenqin)
  • perf(v2): chunk large computed updates and preserve before-image T6160 (nichenqin)
  • perf(v2): physical table duplicate for external links T6156 (nichenqin)
  • fix(v2): cast find operands to text for jsonb cells T6157 (nichenqin)
  • perf(v2): bulk table duplicate via INSERT SELECT (T6153) (nichenqin)
  • perf(v2): set-based residual and order-sensitive conditional fields T6151 (nichenqin)
  • perf(v2): set-based field-ref path for conditional rollup (T6150) (nichenqin)
  • fix(share): route public form-submit through v2 canary (T6145) (nichenqin)
  • feat: add admin-curated recommended descriptions for AI models (Uno)
  • feat(t6147): update changelog banner to gpt-5.6 (Jocky Zhou)
  • fix(v2): skip empty tables during rollout hydration T5715 (nichenqin)
  • fix: allow record create with legacy generated CreatedBy columns T6146 (nichenqin)
  • fix(t5713): reference-based model pricing, runtime-backed gateway catalog, and custom model caps (Uno)
  • fix(v2): use direct equality for scalar lookup field references (nichenqin)
  • fix(v2): allow deleting orphan link fields after foreign table delete T4927 (nichenqin)
  • fix: preserve link titles when pasting structured link cells (T6106) (nichenqin)
  • fix(byodb): keep exported snapshot transaction alive T6142 (nichenqin)
  • fix: keep select tags visible after adding options T6007 (nichenqin)
  • fix: allow clearing field defaultValue for non-text types T6107 (nichenqin)
  • fix: cold flush reads record_history via native pg, not Prisma T5910 (Bieber)
  • feat(t1605): add space avatar upload and display (Uno)
  • feat(t5598): adapt template date time zones to user environment on apply (Aries X)
  • fix: cold flush handles pathological history tables T5910 (Bieber)
  • fix(grid): improve link tag click handling (T5615) (Jun Lu)
  • fix: group by lookup date field shows empty header T3830 (SkyHuang)
  • T3701 Preserve formula distinct filtering (nichenqin)
  • feat(billing): add manual calibration for attachment storage usage T5743 (SkyHuang)
  • feat(app): add "Build with Teable" badge for published apps T5612 (SkyHuang)
  • fix(v2): classify computed outbox bug failures (nichenqin)
  • fix: handle multi-MB history rows in cold flush read/merge T5842 (Bieber)
  • fix: bound cold-flush sort memory with a shared spill budget T5842 (Bieber)
  • fix(v2): allow empty tables in rollout checks (nichenqin)
  • T5809 fix(v2): unwrap json lookup formula scalars before casts (nichenqin)
  • refactor: remove boot kick; cold queue consumer only at app root T5776 (Bieber)
  • fix: colon-free catch-up job ids + boot flush kick T5717 (Bieber)
  • feat(t5716): update changelog banner to skills (Jocky Zhou)
  • T5469 Handle missing link targets in integrity repair (nichenqin)
  • fix(t5479): scope comment access to path record (Aries X)
  • fix: keep error-state table recovery menu (nichenqin)
  • fix: defer large computed field backfills (nichenqin)
  • feat(record-history): cold storage on s3 — pg write buffer + compressed cold parts (T5699) (Bieber)
  • fix(t5696): localize required field save error (nichenqin)
  • fix: avoid unresolved link values after record update T5419 (nichenqin)
  • T5679 Add snapshot delta BYODB migration (nichenqin)
  • T5584 Fix date filters and date-only formula concat (nichenqin)
  • T5686 apply record defaults before required validation (nichenqin)
  • fix: cap wide insert batches by bind parameters (nichenqin)
  • fix(t5691): dedupe airtable select choices whose names collide after trimming (Aries X)
  • fix(byodb): exclude PG18 NOT NULL constraint rows from migration validation signature (Bieber)
  • feat: integrate external risk control service for email checks (T5599) (Aries X)
  • fix(t5684): add workflow watchdog kill-switch configuration and logic (Uno)
  • fix(v2): backfill defaults before required field constraint (nichenqin)
  • perf(byodb): faster byodb validation T5680 (Bieber)
  • chore: remove unused ai runtime resources T5508 T5367 T5459 (Pengap)
  • fix(v2): repair non-unique one-to-one indexes (nichenqin)
  • T5645 fix(v2): repair fk constraints against physical target tables (nichenqin)
  • T5618 Cap seed-table computed sync by dirty thresholds (nichenqin)
  • fix: guard grid freeze width T5405 (Jun Lu)
  • T5619 fix: harden BYODB migration edge cases (nichenqin)
  • feat: record real client IP in audit logs via express trust proxy (T5617) (Aries X)
  • fix: hide Airtable import when the integration is not configured (T5455) (Aries X)

Latest source commit: teableio/teable-ee@8c322bb

This PR was automatically created by the sync workflow.

Synced from teableio/teable-ee@8c322bb

Co-authored-by: Aries X <caoxing9@gmail.com>
Co-authored-by: Bieber <artist@teable.io>
Co-authored-by: Jocky Zhou <jocky@teable.ai>
Co-authored-by: Jun Lu <hammond@teable.io>
Co-authored-by: Pengap <penganpingprivte@gmail.com>
Co-authored-by: SkyHuang <sky.huang.fe@gmail.com>
Co-authored-by: Uno <uno@teable.ai>
Co-authored-by: nichenqin <nichenqin@hotmail.com>
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: db8cb94ab6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +129 to +132
columns.push({
targetColumn: targetColumnResult.value,
sourceSql: quoteIdent(sourceColumnResult.value),
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Skip generated columns in the physical duplicate plan

When a table being duplicated with records has generated fields such as CreatedTime or AutoNumber, this loop adds the target field column to the bulk INSERT ... SELECT plan. The newly created target table keeps those fields as GENERATED ALWAYS, so duplicatePhysicalRows() will try to insert explicit values into generated columns and PostgreSQL rejects the whole table duplicate; the previous field-value duplicate path skipped these system/auto-generated fields. Please omit generated target fields from the physical plan or fall back to the hydrated path for them.

Useful? React with 👍 / 👎.

Comment on lines +35 to +38
return await this.performanceCacheService.wrap(
AI_GATEWAY_MODELS_CACHE_KEY,
() => this.fetchGatewayModels(),
{ ttl: gatewayModelsCacheTtlSeconds }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep an in-process cache when Redis is disabled

In installs without BACKEND_PERFORMANCE_CACHE, PerformanceCacheService.wrap() executes the callback directly, and this new service no longer keeps the old in-memory gateway-model cache. For gateway/custom models not already present in aiConfig.gatewayModels, each pricing or capability lookup can now call the Vercel catalog endpoint instead of reusing the last successful result, adding latency and causing default pricing/tags during transient or rate-limit failures. Please preserve a local stale/TTL cache for the no-Redis path.

Useful? React with 👍 / 👎.

@caoxing9 caoxing9 merged commit 4f10d60 into develop Jul 13, 2026
22 of 23 checks passed
@caoxing9 caoxing9 deleted the sync/ee-20260713-102150 branch July 13, 2026 10:59
@github-actions

Copy link
Copy Markdown
Contributor

🧹 Preview Environment Cleanup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants