Wiki Phase 3: internal links, backlinks, and tags
Connectivity phase of the wiki upgrade (see WIKI_UPGRADE.md). Schema (additive new tables): wiki_tags, wiki_page_tags, wiki_links. Internal links & backlinks: - new wiki.links.js parses a saved body for /wiki/<slug> (and data-wiki-slug) targets; wiki_links is rebuilt on every save - article shows a "Linked from" section (published backlinks) and renders links to non-existent pages as red links (server returns missing_links) - editor gains an internal-link picker listing existing pages Tags: - pages accept a tags[] array; tags upsert on save, page tag-set is replaced, and orphaned tags are auto-pruned (on save and delete) - public/admin list filter by ?tag=; /wiki/tags lists tags with published counts - article shows tag chips; the index has a flat tag-filtered view; editor has a comma-separated tags field Verified end-to-end: A->B backlink appears, red link detected, link index rebuilds on edit, tag filtering + chips + pruning all work. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -309,10 +309,17 @@ phase if preferred). Do not merge a phase that hasn't been verified.
|
|||||||
`<script>` stripped); a toolbar edit (insert divider) saved and persisted. TipTap
|
`<script>` stripped); a toolbar edit (insert divider) saved and persisted. TipTap
|
||||||
is code-split into its own chunk (lazy-loaded), keeping it off the public bundle.
|
is code-split into its own chunk (lazy-loaded), keeping it off the public bundle.
|
||||||
|
|
||||||
### Phase 3 — Connectivity
|
### Phase 3 — Connectivity ✅
|
||||||
- Internal `[[slug]]` links + red-link detection; `wiki_links` rebuild on save;
|
- Internal `[[slug]]` links + red-link detection; `wiki_links` rebuild on save;
|
||||||
backlinks on the article; tags + tag/category filtering.
|
backlinks on the article; tags + tag/category filtering.
|
||||||
- **Exit check**: link page A→B, confirm B shows A under "Linked from"; tag filter works.
|
- **Exit check**: link page A→B, confirm B shows A under "Linked from"; tag filter works.
|
||||||
|
- **Verified** (2026-06-27): internal links authored via an in-editor page picker
|
||||||
|
(links to `/wiki/<slug>`); A→B made B list A under "Linked from"; a link to a
|
||||||
|
non-existent page renders as a red link; removing the link on save cleared the
|
||||||
|
backlink (link index rebuilt). Tags upsert on save, filter via `?tag=` (chips +
|
||||||
|
flat index view), list with published counts, and orphan tags are auto-pruned.
|
||||||
|
- Implementation note: links are plain anchors to `/wiki/<slug>` (the WYSIWYG fits
|
||||||
|
this better than `[[ ]]` syntax); the sanitizer also allows `data-wiki-slug`.
|
||||||
|
|
||||||
### Phase 4 — Discovery & trust
|
### Phase 4 — Discovery & trust
|
||||||
- FULLTEXT search (public search box + admin filter); revision history list /
|
- FULLTEXT search (public search box + admin filter); revision history list /
|
||||||
|
|||||||
Reference in New Issue
Block a user