Tasks
A task is the unit of work in WebPinch. Some users call them “issues,” “pinches,” or “bugs” — they’re all the same thing: a row in the task collection, scoped to one project, displayed as a card on a kanban column.
Tasks come from three sources, all in the same shape:
| Source | How |
|---|---|
| Browser extension | Pin an issue while browsing — see Extension |
| Visual review link | A guest pins via the shared review URL — see Visual review |
| Manual entry | ”New task” in the dashboard, or via REST / MCP |
Anatomy
When you open a task in the dashboard you’ll see:
- Title — short, actionable. Editable inline.
- Status — the kanban column. Change by dragging the card or via the status dropdown.
- Priority — Low / Medium / High / Critical.
- Description — rich text (powered by TipTap). Supports formatting, lists, links, code, images.
- Labels — colored tags. Click to toggle on/off.
- Assignees — one or more users. Multi-select.
- Due date — single date with optional “completed” flag (struck-through when done).
- Highlighted text — when the task came from a text selection on a real page, the original quoted text and the URL it came from.
Visual + browser metadata
Tasks created by the extension or visual review automatically capture:
| Field | What it is |
|---|---|
Pin coordinates (pinX, pinY) | Relative position on the page where the user clicked |
domSelector | CSS selector for the clicked element |
pageUrl | URL the issue was reported against |
screenshotUrl | S3 URL of the auto-captured page screenshot |
videoUrl | S3 URL of a screen recording, if one was attached |
browser, os, screenSize | Viewer’s environment, captured from navigator |
reporterEmail | Optional email entered by an unauthenticated guest |
These show up as separate cards in the task detail panel — screenshots inline, video as a player, environment as a metadata strip.
Comments
Each task has a comment thread. Comments support plain text + line breaks. Each entry shows author avatar, timestamp (“X minutes ago”), and body.
When a user posts a comment from inside the dashboard, they’re attributed by name. When the REST API or MCP server posts on behalf of a user, attribution is the same.
Checklists
A task can have multiple checklists, each with its own title and a list of items. Tick items off as you complete them. Progress is shown as X/Y completed on the task card.
Useful for breaking work into known sub-steps without creating separate tasks.
Subtasks
Different from checklists: subtasks are first-class tasks that show in their own list under the parent. Each has its own title and completion state. Progress bar shows X/Y completed.
Subtasks don’t nest — you can’t have a sub-subtask.
Attachments
Drop files onto the attachments area to upload to S3. Common uses:
- Additional screenshots beyond the auto-capture
- Screen recordings
- Logs, exports, or supporting docs
Each attachment shows filename, size, mime type, and a download link.
Activity log
The Activity tab shows a timeline of every change: who did what, when. Entries cover:
created— the task appearedupdated_status— moved between columnsupdated_priority,updated_descriptionassigned,unassignedadded_label,removed_labelset_due_date,completed_due_date- comment + checklist + attachment events
Activity is read-only. Comments and Activity each have their own tab in the task detail panel.
Time entries
Tasks can carry time entries — start/stop or manually-entered durations against a task. Useful for tracking effort. UI is in the task detail panel.
Time entries are also available over the REST API — GET and POST /api/v1/tasks/:id/time-entries, using the tasks:read and tasks:write scopes. They aren’t exposed as MCP tools.
Reporters vs assignees
| What it means | When set | |
|---|---|---|
| Reporter | Who created the task | Auto-set to the logged-in user, or reporterEmail (string only) for guest submissions |
| Assignees | Who’s working on it | Manually assigned, can be multiple |
If a guest with no account submits, they end up as reporterEmail rather than reporterId. They get notified when the task is resolved (status moves to done).
Programmatic access
Everything above is available over HTTP and MCP: