/linkshot-extension.
Responsibilities
- capture and annotate screenshots
- optional OCR/offscreen processing
- create and manage shareable links through backend APIs
- write view-check data through the existing DealDash APIs used by the website
Website Quick View
DealDash surfaces LinkShot data inside the authenticated/screenshots page.
The extension keeps writing through its existing APIs; the website organizes
that data for review.
The page has three tabs:
Gallery: screenshots owned by the signed-in user plus team-shared screenshots they can access.LinkShot To-Do: extension-style view-check cards grouped byOverdue,Due today,Upcoming, andCompleted.View Logs: audit rows with checked dates, total views, parsed per-platform views, source URLs, screenshot previews, and ownership context. Owned rows and team-shared rows where the current user is team owner/admin can be corrected on the website; ordinary team-shared rows stay read-only.
/screenshots, which the extension can open through deep
links such as /screenshots?tab=todo and
/screenshots?tab=logs&dealId=...&videoId=....
Agent proof lookup and slash-command defaults live in
/tools/linkshot/settings. That page parses date-based requests, checks
existing View Logs before browsing, expands missing-date lookups by the
configured fallback days, and returns the same completed-copy payload with
source and screenshot links when proof already exists. See
LinkShot Agent Workflow.
Ownership labels mean:
Owned: the signed-in user owns the screenshot or deal record and can use the existing link, share, and delete actions.Team shared: the record is visible through team sharing. Team owners/admins can correct shared LinkShot view logs on the website; ordinary shared records stay read-only unless the user owns the underlying screenshot.
Data Contract
The website quick view reads data from:/api/screenshots?scope=mine-and-shared/api/deals/due-views?scope=mine-and-shared&includeLogs=true&includeScreenshots=true/api/deals/view-logs/api/deals/bulk-import/processfor final bulk-import writes from pasted URL groups/tools/linkshot/settingsfor local operator/agent defaults such as shared log lookup, local extension capability, English page preference, verifier gates, fallback days, and visible highlight color
/api/deals/bulk-import/process endpoint over generic deal create/update. If a
date-based proof request is already present in View Logs, send the existing
copyText and screenshot/source links instead of recapturing.
Default read API behavior remains backward compatible with the Chrome
extension. Do not add website-only assumptions to extension read payloads.
For endpoint details, see API Surface.
For MCP/agent access, see DealDash Agent Bridge Plugin.
High-Risk Areas
- offscreen/document permissions
- clipboard/file handling security
- auth synchronization with DealDash backend
- shared screenshot and shared deal visibility boundaries
- keeping extension defaults backward compatible
Auth Persistence
LinkShot stores DealDash auth in extension storage and keeps it across browser restart, page refresh, sidepanel reopen, temporary network failure, and temporary website hydration gaps. The website content script must not clear extension auth only because DealDash localStorage is briefly empty. Auth is cleared only by explicit website logout through the same-originDEALDASH_EXTENSION_LOGOUT event or explicit logout from inside the extension
settings UI. Background auth mutation messages are accepted only from known
DealDash dashboard origins or from the extension itself.
API calls that receive a 401 ask the background worker to refresh auth and retry
once with the refreshed token. Refresh failure or network failure does not erase
saved auth; the UI may show reconnect state while keeping the stored session.
Change Workflow
/linkshot-extension, unless the extension data-writing contract
itself needs to change.
Design Contract
- LinkShot uses the DealDash green / WhatsApp-like palette:
#111b21,#202c33,#233138, and primary#1a7a5e. - Do not introduce black/blue primary styling into LinkShot.
- Keep normal controls compact and rectangular: 6-8px radius for buttons, tabs, cards, inputs, and chips. Avoid large capsule controls in the sidepanel.
- Required extension actions must remain present: copy, capture, attach/edit screenshots, annotate, bulk import, history, sync/auth, To-Do, hidden-item management, and open-in-DealDash links.
- Hidden management must be non-destructive. Viewing hidden items must not restore them unless the user explicitly chooses restore.
- OCR suggestions are assistive. Manual view entry remains the source of truth.
Validation
- screenshot capture works on supported pages
- OCR behavior is deterministic and does not leak data
- generated links resolve correctly through
/r/* - permission scope is justified and reviewed
/screenshotstabs show owned and authorized team-shared records only- owned view logs and team-shared logs managed by the current team owner/admin can be corrected on the website
- ordinary team-shared view logs are read-only and redact unauthorized screenshot attachments