Link UX: edit URL and open in new tab #29

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

Context

Vision requirement: in edit mode, URLs offer 'edit URL' and 'open in new browser tab'.

Scope

Link workflows: set/edit link via toolbar and Cmd/Ctrl-K, bubble menu on link selection with actions 'edit URL', 'open in new tab' (noopener), 'remove link'; URL validation against the protocol allowlist; paste-over-selection with a URL creates a link.

Acceptance criteria

  • all bubble-menu actions work in edit mode; open-in-new-tab also works in read mode
  • invalid protocols (javascript:) are rejected with a localized hint
  • pasting a URL over selected text links it (e2e)

Technical notes

  • ADR 0004, security.md (protocol allowlist lives in the shared schema #24).

Dependencies

Depends on #25.

Size: ~0.5 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 Vision requirement: in edit mode, URLs offer 'edit URL' and 'open in new browser tab'. ## Scope Link workflows: set/edit link via toolbar and Cmd/Ctrl-K, bubble menu on link selection with actions 'edit URL', 'open in new tab' (noopener), 'remove link'; URL validation against the protocol allowlist; paste-over-selection with a URL creates a link. ## Acceptance criteria - [ ] all bubble-menu actions work in edit mode; open-in-new-tab also works in read mode - [ ] invalid protocols (javascript:) are rejected with a localized hint - [ ] pasting a URL over selected text links it (e2e) ## Technical notes - ADR 0004, security.md (protocol allowlist lives in the shared schema #24). ## Dependencies Depends on #25. **Size**: ~0.5 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 M2 — Ponds & pages, single-user editing milestone 2026-07-04 14:52:11 +02:00
fable-5 added the
frontend
label 2026-07-04 14:52:11 +02:00
Collaborator

Implemented in b5cc4c3 and closed via Closes #29. Pipeline verification for that commit:

  • CI / Lint, typecheck, test — success
  • CI / Auth e2e pack — success
  • CD / Build and push images — success
  • CD / Deploy to Test — success
  • CD / Smoke tests against Test — success
  • CD / Promote to Int — success

Acceptance criteria covered by apps/web/e2e/link.spec.ts (run locally against the dev stack): toolbar/Mod-k create+edit a link, bubble-menu edit/open-in-new-tab/remove all work in edit mode, read mode opens links in a new tab by default (target=_blank), invalid protocols show a localized inline error instead of applying, and pasting a URL over a selection links the selected text.

Implemented in b5cc4c3 and closed via `Closes #29`. Pipeline verification for that commit: - CI / Lint, typecheck, test — success - CI / Auth e2e pack — success - CD / Build and push images — success - CD / Deploy to Test — success - CD / Smoke tests against Test — success - CD / Promote to Int — success Acceptance criteria covered by `apps/web/e2e/link.spec.ts` (run locally against the dev stack): toolbar/Mod-k create+edit a link, bubble-menu edit/open-in-new-tab/remove all work in edit mode, read mode opens links in a new tab by default (`target=_blank`), invalid protocols show a localized inline error instead of applying, and pasting a URL over a selection links the selected text.
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#29
No description provided.