Skip to content

feat: Add content engine Stage 1 — Foundation - #732

Open
aXenDeveloper wants to merge 4 commits into
perf/improve_error_handlingfrom
feat/Universal-Content-Engine-mvp-1
Open

feat: Add content engine Stage 1 — Foundation#732
aXenDeveloper wants to merge 4 commits into
perf/improve_error_handlingfrom
feat/Universal-Content-Engine-mvp-1

Conversation

@aXenDeveloper

Copy link
Copy Markdown
Owner

Improving Documentation

Description

What?

Why?

@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vitnode-docs Ready Ready Preview Aug 3, 2026 10:29am

@aXenDeveloper aXenDeveloper changed the title feat: Add content engine stage 1 feat: Add content engine Stage 1 — Foundation Aug 4, 2026
@github-actions github-actions Bot added 💡 Feature A new feature and removed 💡 Feature A new feature labels Aug 4, 2026
@aXenDeveloper
aXenDeveloper marked this pull request as ready for review August 4, 2026 21:23

@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: 0ed70aedfd

ℹ️ 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 +52 to +54
if (fieldValue.maxLength !== undefined) {
schema = schema.max(fieldValue.maxLength);
}

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 Apply the default text limit during validation

When a plugin declares field.text({ required: true }) without an explicit maxLength, buildContentColumn still creates a varchar(255) column, but this schema never applies that default limit. A create or update with more than 255 characters therefore passes route validation and fails later with Postgres 22001, which is not mapped by withHttpErrors, so the API returns a 500 instead of the documented 400. Please validate against CONTENT_TEXT_DEFAULT_LENGTH when maxLength is omitted.

Useful? React with 👍 / 👎.

.get("db")
.select({ label: target.labelColumn, value: target.idColumn })
.from(target.aliased)
.where(buildSearchCondition([target.labelColumn], search))

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 Avoid ILIKE on non-text relation labels

This search condition is applied to whatever column is chosen as the relation label. If the target content type has no text title field, resolveReferenceTargets falls back to id, and if admin.titleField points at a number/boolean/date field, typing in the picker sends ?search=... and produces an ILIKE against a non-text Postgres column, causing the options route to 500. Restrict searchable relation labels to textual columns or cast/skip search for non-text labels.

Useful? React with 👍 / 👎.

id: plugin.pluginId,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
title: t(`${plugin.pluginId}.title`),

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 Do not require nav titles for empty plugin groups

This now evaluates ${pluginId}.title for every configured frontend plugin before the later filter can drop groups with no visible items. A plugin with no sidebar nav/content types, or a content-only plugin that relies on the content label fallback but omits the plugin title message, will make next-intl throw while rendering the admin layout. Only build a plugin group when it has items, or guard the group title with t.has and a fallback.

Useful? React with 👍 / 👎.

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

Labels

💡 Feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant