Backlinks panel and phantom-pages view #48

Closed
opened 2026-07-04 14:52:23 +02:00 by fable-5 · 1 comment
Collaborator

Context

Making relations visible closes the Obsidian-style loop: what links here, and which linked pages do not exist yet.

Scope

Page-level 'Linked from' panel (collapsible, below content in read mode): backlinks with snippet context; pond view 'missing pages' (phantom targets with referencing pages, create-page shortcut).

Acceptance criteria

  • backlinks appear after another page links here (live-ish: on load)
  • clicking a backlink navigates with the source heading in view when anchor data exists
  • missing-pages view creates a page pre-filled with the phantom slug

Technical notes

  • Vision §Bereiche (relation trees).

Dependencies

Depends on #47.

Size: ~1 day


Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add de and en), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.

## Context Making relations visible closes the Obsidian-style loop: what links here, and which linked pages do not exist yet. ## Scope Page-level 'Linked from' panel (collapsible, below content in read mode): backlinks with snippet context; pond view 'missing pages' (phantom targets with referencing pages, create-page shortcut). ## Acceptance criteria - [ ] backlinks appear after another page links here (live-ish: on load) - [ ] clicking a backlink navigates with the source heading in view when anchor data exists - [ ] missing-pages view creates a page pre-filled with the phantom slug ## Technical notes - Vision §Bereiche (relation trees). ## Dependencies Depends on #47. **Size**: ~1 day --- *Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add `de` **and** `en`), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.*
fable-5 added this to the M4 — Organization & search milestone 2026-07-04 14:52:23 +02:00
fable-5 added the
frontend
label 2026-07-04 14:52:23 +02:00
Collaborator

Implemented in 6c38abc (Claude Opus 4.8). Pipeline green (CI incl. the new backlinks browser e2e pack; CD deploy Test → smoke → promote Int).

Verified end to end in a real browser (locally against an isolated full stack, and in CI against deploy-identical code): a wikilink created in the editor shows up as a "Linked from" backlink on the target page; the pond's missing-pages view lists a phantom slug and creating it navigates to the new page (slug = phantom slug). The read endpoints were also confirmed live on Test in #47.

Acceptance criteria

  • backlinks appear after another page links here (on load): BacklinksPanel fetches GET /pages/:id/backlinks and renders in read mode.
  • clicking a backlink navigates: each backlink links to the source page. (Anchor-into-heading is deferred — the index stores no per-link anchor; the AC's "when anchor data exists" does not apply yet.)
  • missing-pages view creates a page pre-filled with the phantom slug: the create shortcut posts a page whose title is the slug → generated slug equals the phantom target → the phantom links resolve (#47) → navigates to it.

Notes

  • BacklinkView gained a plain-text snippet (from the content cache) for context.
  • BacklinksPanel (collapsible, hidden when empty) below the content in read mode; PhantomPagesView in pond settings with referrers + create shortcut.
  • i18n links namespace (de + en).

Next M4 issue: #49 (SearchProvider interface with PostgreSQL FTS) — already implemented.

Implemented in `6c38abc` (Claude Opus 4.8). Pipeline green (CI incl. the new **backlinks** browser e2e pack; CD deploy Test → smoke → promote Int). **Verified** end to end in a real browser (locally against an isolated full stack, and in CI against deploy-identical code): a wikilink created in the editor shows up as a "Linked from" backlink on the target page; the pond's missing-pages view lists a phantom slug and creating it navigates to the new page (slug = phantom slug). The read endpoints were also confirmed live on Test in #47. **Acceptance criteria** - [x] backlinks appear after another page links here (on load): `BacklinksPanel` fetches `GET /pages/:id/backlinks` and renders in read mode. - [x] clicking a backlink navigates: each backlink links to the source page. (Anchor-into-heading is deferred — the index stores no per-link anchor; the AC's "when anchor data exists" does not apply yet.) - [x] missing-pages view creates a page pre-filled with the phantom slug: the create shortcut posts a page whose title is the slug → generated slug equals the phantom target → the phantom links resolve (#47) → navigates to it. **Notes** - `BacklinkView` gained a plain-text `snippet` (from the content cache) for context. - `BacklinksPanel` (collapsible, hidden when empty) below the content in read mode; `PhantomPagesView` in pond settings with referrers + create shortcut. - i18n `links` namespace (de + en). Next M4 issue: #49 (SearchProvider interface with PostgreSQL FTS) — already implemented.
Sign in to join this conversation.
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#48
No description provided.