Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
26b87a0
feat(core): mark reference as a storage-less field type
MA2153 Jul 10, 2026
adeb478
feat(core): registry skips column DDL for storage-less fields
MA2153 Jul 10, 2026
159dd3a
feat(core): strip storage-less field keys from content data writes
MA2153 Jul 10, 2026
7144b9c
feat(core): manifest carries reference field validation config
MA2153 Jul 10, 2026
4282dc9
refactor(core): extract shared setReferenceChildren resolver
MA2153 Jul 10, 2026
0dc4933
feat(core): write reference edges atomically with the content entry
MA2153 Jul 10, 2026
7f6df80
fix(core): expose references key in content body schemas
MA2153 Jul 10, 2026
f8426f6
feat(core): hydrate references into the content GET response
MA2153 Jul 10, 2026
6049e0d
feat(core): schema handlers own the reference field relation lifecycle
MA2153 Jul 10, 2026
26eeaba
fix(core): keep reference field relation link immutable on schema update
MA2153 Jul 10, 2026
e3be4f5
feat(admin): relations read API client
MA2153 Jul 10, 2026
706f9c3
feat(admin): reference field config step in the schema editor
MA2153 Jul 10, 2026
0c0b30f
feat(admin): reference field renderer with staged, atomic save
MA2153 Jul 10, 2026
563c56f
feat(admin): referenced-by backlinks sidebar
MA2153 Jul 10, 2026
b8c4666
fix(core): drop unsafe FieldType cast in storage-less key strip
MA2153 Jul 10, 2026
6537154
fix(core): apply reference fields as edges in the seed engine
MA2153 Jul 10, 2026
7c6d008
chore: changesets for reference field type
MA2153 Jul 10, 2026
6861a4e
feat(reference): display titles, route wiring, and config validation
MA2153 Jul 10, 2026
50494ff
Merge branch 'main' into feat/reference-field-admin-ui
MA2153 Jul 10, 2026
95e8c2b
Merge branch 'main' into feat/reference-field-admin-ui
MA2153 Jul 10, 2026
080a039
Allow navigation to referenced items
MA2153 Jul 11, 2026
0556f8e
Merge branch 'main' into feat/reference-field-admin-ui
MA2153 Jul 11, 2026
25664b6
Update changesets
MA2153 Jul 11, 2026
45e018f
Address review
MA2153 Jul 11, 2026
850285f
Address re-review: schema title, target validation, locale badges
MA2153 Jul 11, 2026
6f6d052
Merge branch 'main' into feat/reference-field-admin-ui
MA2153 Jul 11, 2026
4dad09b
Address review
MA2153 Jul 11, 2026
bd97d0a
Thread entry locale to prevent dedupe from shortcircuiting
MA2153 Jul 11, 2026
a442e19
Merge remote-tracking branch 'upstream/main' into feat/reference-fiel…
MA2153 Jul 21, 2026
8a5941a
style: format
emdashbot[bot] Jul 21, 2026
8b1ff0c
fix(core): keep seeded reference fields storage-less
MA2153 Jul 22, 2026
3a69da0
Merge remote-tracking branch 'origin/feat/reference-field-admin-ui' i…
MA2153 Jul 22, 2026
79da749
Merge branch 'main' into feat/reference-field-admin-ui
MA2153 Jul 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/reference-field-admin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@emdash-cms/admin": minor
---

Reference fields are now a real, working field type. Previously "reference" was just a plain text box with nowhere to point; now you get a proper relationship picker. Configure it in the schema editor (choose the target collection and single vs. multiple), then search for, pick, and reorder linked entries right in the entry editor — all saved together with the entry in one request. Referenced entries show a read-only "Referenced by" panel so you can see what points at them, and you can jump straight to any linked entry from the picker or the backlinks.
5 changes: 5 additions & 0 deletions .changeset/reference-field-core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"emdash": minor
---

Reference fields now store real relationships between entries instead of an inert string. Selections are saved as first-class content-reference edges, written atomically with the entry in a single transaction, and hydrated on read alongside SEO and bylines — each resolved reference carries a readable display title (from the referenced entry's `title`, then `name`) so pickers and backlinks show a label instead of a slug. Reference fields are storage-less: they no longer add a column to a collection's table, and "Referenced by" backlinks come for free from the edge data. Seed files using a reference field apply its `$ref:` value as an edge (seed shape unchanged). Upgrade note: existing reference columns keep their data but are no longer written to.
1 change: 1 addition & 0 deletions demos/simple/emdash-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export interface Post {
featured_image?: { id: string; src?: string; alt?: string; width?: number; height?: number; provider?: string; previewUrl?: string; meta?: Record<string, unknown> };
content?: PortableTextBlock[];
excerpt?: string;
relevant_posts?: string;
createdAt: Date;
updatedAt: Date;
publishedAt: Date | null;
Expand Down
Loading
Loading