Context anchors
A context anchor links a message to specific content on a page — a sentence of text or a whole image. Anchors persist after your selection clears, so others can scroll back to the exact spot.
Supported in v1: text and image. Video/audio anchors are planned for a future release.
What you see
| Surface | Indicator |
|---|---|
| Discuss feed | Small ⓘ on messages with anchors |
| Live page | Highlight overlay + proximity badges |
| Compose modal | Anchor chip with excerpt preview |
| Share URL | Public anchor page at view.canopi.live / app.canopi.live/anchor/... |
Create an anchor (full flow)
Step 1 — Select content
Text:
- Highlight a sentence or phrase on the page.
Image:
- Hover an eligible image until the widget modal appears.
Step 2 — Choose Discuss (or another composer tag)
- Click Discuss in the widget (or right-click → Start discussion).
- The page dims briefly while the anchor is built.
Step 3 — Anchor is held as pending
Canopi captures:
- Text: exact quote + surrounding prefix/suffix for re-finding the text if the page changes
- Image: image URL and alt text
- Page URL always included
Step 4 — Compose or attach
Routing depends on sidebar state:
| Situation | What happens |
|---|---|
| Compose modal already open | Anchor attaches to your draft |
| Focus mode (single thread) | Anchor attaches to the root parent message only |
| Discuss default view + active message | Prompt to attach to active row → Confirm or Choose another |
| No modal, no active row | Target mode — drag to message, arrow keys + Enter, or drop on composer entry |
Step 5 — Send or confirm
- New message: write in compose modal → Send.
- Existing message: Confirm attach or drop anchor chip on message row.
Step 6 — Verify
- Message shows ⓘ in Discuss.
- Hover ⓘ → preview excerpt.
- Click ⓘ → page scrolls and highlights the anchored content.
Attach to an existing message
When not composing a new message:
- Open Discuss on the page.
- Click a message row to mark it active (subtle highlight).
- Select text on the page → widget → Discuss.
- Click Confirm on “Attach to this message?”
Power paths if you decline or have no active row:
| Method | Steps |
|---|---|
| Drag | Drag anchor handle onto a message row; snap to nearest row |
| Keyboard | Arrow keys move target ring between rows; Enter confirms; Esc cancels |
| Composer drop | Drop on “Enter a new message” area → opens compose modal with anchor on draft |
WARNING
In focus mode, only the root parent message can receive an anchor. If it already has one, you get a toast and the attach is blocked.
See anchors on the page
Header display control
In the sidebar header, use the anchor display toggle:
| Mode | Behavior |
|---|---|
| Hidden | No on-page highlights |
| Near pointer | Show highlights close to cursor |
| Show all | Show all anchor highlights on the page |
Proximity badges
Anchored regions show count badges (messages + tags). Hover for the action panel — same as the widget modal.
From Discuss
Click ⓘ on any anchored message → page scrolls to highlight → excerpt visible.
Lightweight tags on anchors
Without opening compose, use the widget or proximity panel:
- Bookmark — saves to Bookmarks tab
- React — adds emoji reaction
- Share — copies share link
- Follow — notifies on anchor activity
See Smart tags.
Share an anchor
- Use widget → Share, or open the anchor page from a message.
- Share URL format: hosted at
share.canopi.liveorview.canopi.live. - Recipients with Canopi see the anchor in context on the same page.
Limitations (v1)
| Not yet supported | Notes |
|---|---|
| Video timestamps | Planned v1.1+ (YouTube first) |
| Audio segments | Planned v1.1+ |
| Image sub-regions | Whole image only in v1 |
| Non-anchor tabs | Widget suppressed when sidebar on unsupported tab |
Related
- Widget modal — start anchors from the page
- Smart tags — tag types and filters
- Sidebar tabs § Discuss — feed and active message

