Comments and threads
Pins, widths, who a comment is for, and how a fix is confirmed.
A comment is pinned to one element of one page, at the screen width it was written at. Replies make it a thread; the thread is the unit of work — for the agent, for the team, and for the client who checks the result.
What a comment keeps
- The element and the text around it, so the pin finds it again after the page changes — even among cards that look alike.
- The width — desktop, tablet or a phone band — and the device and browser it was written on. A note about the phone layout stays on the phone layout.
- The copy of the site it was written on — live, staging or
localhost. A thread belongs to the page's path, so the same page shows it on every copy of the site in the project; the bar marks one that began elsewhere, and the cabinet can filter threads by site. - A type: General, Bug, Text, Motion, Design or Content.
- Who does it: the slider at the card's foot — a person · anyone · Claude, as icons. A new comment is nobody's yet: a banner over the reply box says Anyone, with three presses: the tick to take it yourself, the agent's mark to give it to Claude, and a list of the project's people to give it to someone else. The person stop opens the same people; Claude is the agent. Priority and type sit beside it, on the left. Only the studio gives work out — a client's comment goes to a person, a guest sees no slider.
- The card's bar: the element's name (hover it for its full path), Claude's mark — grey, and a press gives the thread to Claude — the tick to resolve, and ⋯: move or duplicate it between the studio's workspace and the clients' space, copy its link, delete it.
- Screenshots pasted into the comment or any reply.
- Files with the paperclip, or pasted and dropped — a brief, a price list, a contract; anything but a program or a script. Each shows as its name and opens in a tab; the agent gets it as a file. Up to 50 MB a file: past 3 MB the bar uploads it straight to storage when you send.
- Translate under someone else's message puts it in your browser's language, and the ▾ beside it into Ukrainian, Russian or English; Original brings their words back. Nothing is saved — everyone reads in their own language.
- Before and after: the bar takes a picture of the element when the comment is pinned, and another when someone confirms the fix in the bar; an agent files the after picture itself with
notemend done <id> --shot. The cabinet shows them above the conversation; a press opens them full size, and ← → flip between the two. - Voice notes: the mic in the reply box — in the cabinet, and in a card on the site — records up to a minute and a half; the voice note waits in the box. Its captions button writes it out into the box — the words are what the agent reads, so write it out when the agent should act on it. People play the recording in the cabinet and on the site; its × drops it. English, Ukrainian, Russian and most other languages are recognised on their own.
- What the page logged: errors in the console, uncaught errors and requests that failed in the ten minutes before, up to 20 lines — so the agent sees the 500 behind “the form does nothing”. Tokens, keys and passwords in them are masked before they leave the browser, and again on our side.
Clicking an element that already has an open thread says Already open here, with a link to it, so the same note is not left twice. Your draft waits while you read it.
How a thread moves
| State | What it means |
|---|---|
| Open | Waiting for someone — a person, or anyone who takes it. |
| With agent | Given to an agent: queued, working, or asking you something. |
| To check | The agent — or a person — says it is done. Waiting for a person to look. |
| Resolved | A person checked it on the site. It stays on the page until someone archives it. |
| Archived | Put away after a look; the panel's second switch shows it. |
An open thread also has a status, apart from whose it is: New, With agent, In progress (a person is on it), To check (a person is asked to look) or Waiting (on an answer, the client). An agent takes only approved threads; in progress and waiting keep agents off. The bar and the cabinet count it under To check beside the agent's fixes. See Your coding agent.
A thread with an agent in it wears the agent's mark in the card's bar, whole and in the colour of its step: queued (approved, nobody took it yet), working, waiting for you (its question, or a fix you sent back, wants your word), to check (it says done) and signed off; a guest's thread is held until the studio approves it. A banner over the reply box says the step in words, with what to do as icons — take it yourself, or send a fix back. While an agent works, its pin breathes and the banner says With Codex — working (or Claude, Cursor…). The agent takes a thread with notemend start and the mark goes when it resolves it — or after two hours, if the agent stopped: the banner says With Codex — silent for 2 h, and its next run takes the thread again. A second agent asking for the same thread is turned away.
Reopen sends a thread back to Open from either of the later states. A comment a person resolves themselves is confirmed at once.
When the agent says it is done, its message is the check itself: a card in the conversation, Claude fixed it, with what it did and two answers — Looks right resolves it, Send back reopens it with the reply box ready for what is wrong. Answered, it reads as a message like the others. While that message is the last word, the bar shows no banner over it. The cabinet's thread shows the same card.
A link in a message reads as a small chip that names it — Figma · Notemend, GitHub · notemend #42, or the site and the page — in the bar's card and the cabinet alike. A press opens it in a new tab, the whole address shows on hover, and copying the message copies the address as it was written.
On the page
- A pin is the people on the thread, each face in its own colour (the same as in the cabinet). Nobody has it yet: the writer's face in a dashed blue ring — it is new. Someone took it: the writer, then whoever took it, in one pill ringed in the thread's status — blue new, amber in progress, violet to check, pink waiting; one face when the writer took it herself. Pointing at a pin says it in words: Sarah → Mark · Claude is working.
- Claude at the foot of a face: that person's Claude has the thread — whoever runs it now, whoever it fixed it for, or whoever handed it over. It wears the colour of its step — blue queued, amber working (and breathing), pink asking, violet fixed. Claude never takes a thread by itself, so it always sits at someone's foot. A thread whose writer is unknown keeps the agent's solid pin.
- A blue dot on a pin's corner: something new in that thread since you last opened it.
- The ring after the spaces pill is a chart of this page's pins: nobody's in blue, yours in your colour, everyone else's in grey, the count in the middle. Press it (or F) to show only nobody's, yours, everyone else's, your Claude's, the ones you wrote or the ones to check — the others dim, still there to click. The studio's only.
- The pages menu counts every page's threads per width and status — a chip for each, its width's icon and the number, in the status's colour. Its button names the page in three words at most; the whole name is its tip.
- Drag a pin to move it: within its element the spot moves; past the edge, the element under the pointer (outlined in orange) takes the thread when you let go. Esc cancels, Undo puts it back.
- Resolved, then archived. The tick resolves a thread: its pin turns green and stays until someone looks — Looks right archives it, Reopen sends it back. The box beside the tick archives straight away; an archived pin greys and goes. Show resolved (R) and Show archived (A) at the foot of the panel bring them back. A project can archive resolved threads by itself after a few quiet days (cabinet → project → Settings → Auto-archive).
- Files. The picture button takes pictures; the paperclip takes any file but a program. Each shows as a chip with its kind on a tile and a download for everyone who sees the thread; one the box refuses stays in it, red, with why.
- An open card dims the rest of the page; the element it is about stays lit.
- A dashed pin waits for an element that is on the page but hidden right now — inside a closed menu, a popup, a hover card: on the spot it will show, or on the item around it. Open the menu and the pin moves onto the element. Its card says Hidden right now, and Show where outlines what to open. An element that is gone from the page has no pin; its card says so, and the thread can still be answered or resolved.
- The gear at the end of the bar: who you are signed in as, Keyboard shortcuts (?, in the same menu), Hide the bar (\) and, with bar.js, Sign out on this site.
Studio and clients
A project has two spaces. Studio holds the studio's own threads — the agent, turbo and Push to Claude work there. Clients holds the threads its clients and guests wrote, and the ones the studio left for them. The switch left of the bar slides between the two (M), each with its open count; in the clients' space a thin frame of their colour goes round the page with Clients space in a notch at the top — its × takes you back — and switching fades the pins and the panel out and in, so you always know which side you are on; the page, the panel and a new comment follow the one you are in. A client has no switch: they see their own threads and the ones left for them, as before.
A thread in the clients' space is never an agent's — there is nobody to give it to and no Claude in it, and the database holds to that whatever a browser sends. To put the agent on it, open the card's ⋯: Duplicate to workspace makes a studio copy that says Duplicated from a client thread, and once that copy is resolved the client's thread gets Fixed — please check and is resolved too; Move to workspace moves the thread itself — except one a client wrote: they read every thread they wrote wherever it is, so that one is only ever duplicated. In a workspace thread, @ offers the studio only. From a studio thread the same menu has Duplicate for the client and Move to clients. Copy link gives an address that opens the thread, in its space.
A client sees a thread's status, and a resolved one of theirs says Resolved with one answer — reopen it — in the banner or the ⋯ menu.
The Threads panel
Every thread on this page at this width, a row each: the writer's face ringed in its status, or the agent's pin. Above the list:
- Search finds a thread by its words, its replies or who wrote it. When nothing matches, the panel says so and offers Clear search.
- The filter beside it, as in Figma: For me (given to you, a fix to check, or naming you), Agent (an agent has it) or All, each with how many are open; and the order — Newest or Unread first. The button turns orange while it is set to anything but All and Newest; the bar remembers it.
- Hovering a row shows its tools: the card's slider — a person · Anyone · Claude — to give the thread without opening it (the face opens the people; Claude's stop wears its step), then the tick and delete.
- Show resolved at the foot (R) brings resolved threads back into the list and onto the page.
Checking fixes
When fixes are waiting, the panel's head shows a tick with their number. It opens each fixed thread in turn — on its own page, at its own width — with a bar across the top: Check fixes, which one of how many with ← → to move along, and Looks right, Reopen and Stop.
Into your tracker
An open thread in the cabinet goes to a tracker from its composer: Send to agent opens a GitHub issue for the agent installed in the project's repository, Open as a Linear issue fills in a new Linear issue, and Copy as an issue puts the same text on the clipboard for Jira or anywhere else — the words, the page and width, what the page logged, screenshots as week-long links, and the link back to the thread.
Into your channel
A project can post to a Slack or Discord channel — or any https address, as JSON — when a comment is pinned, when an agent fixes one, and when a person confirms a fix. Paste the channel's webhook in the project's Settings → Channel and press Send a test. Only the project's team sees the address.
Emoji and reactions
The smiley in the reply box — in a card on the site and in the cabinet — puts an emoji where the cursor is. To react to the comment or a reply, press the smiley with a plus beside its writer's name (in the cabinet it shows when you point at the message): six emoji at hand, the rest behind ⋯. Reactions sit under the message as chips with a count; yours is lit, and pointing at a chip says who. Pressing a chip adds yours, or takes it back. Anyone who can read the thread reacts — the studio, clients and guests — and each person only ever adds or removes their own.
Mentions and live replies
Type @ and a few letters in a reply to mention someone in the project; the thread lands in their Inbox. Claude is in the same list: naming it hands it the thread and opens it again if it was closed. Only the studio can; a client's list has people. Replies written anywhere — in the cabinet, on the site, by the agent — appear on an open page within seconds, and at once under the dev server.
The project's Pages tab shows each page's open threads by status, who wrote last and its sign-off: Approve once nothing is left, or who approved it and when.
Insights
Insights in the cabinet's sidebar counts the workspace's threads over 7, 30 or 90 days: how many were pinned, fixed by an agent and confirmed, each against the days before, and how long a fix took to be confirmed. Below, day by day, and the work by project, width, page, type and person. Pick one project or all of them; CSV downloads the numbers. Clients do not see it.