Co-authored-by: claude-code <claude-code@javagil.de>
4.3 KiB
PR#44: A Claude Code Session Can Be Dismissed from Du bist dran
WARNING: This document describes only the change applied in this PR. It may already be outdated once the next PR is merged. Historic PR documentation is not maintained along with new PRs; treat it as a snapshot.
Related Links
- PR#40, which lists sessions that wait for the user.
Problem
Since PR#40, "Du bist dran" lists a Claude Code session when Jev rates its last message as waiting for the user. Some of these messages ask the user only formally, e.g. "Entfernen kann ich es, sobald du sagst, dass er fertig ist." about a pull request that waits for the review of another person. A stricter question to Jev did not help: it rated this message at 0.84 as before, but dropped a real request, to merge a pull request and report back, from 0.91 to 0.64. Only the user knows that nothing is to do, and the session stays in "Du bist dran" until it changes.
Non-Goals
- No dismissal of pull requests or messages; Gitea and Matrix settle them.
- No list of dismissed sessions and no undo; a new message of the session brings it back.
- No change to the rating by Jev.
Specification
Feature: a Claude Code session can be dismissed from Du bist dran
Scenario#44.01: a dismissed session leaves Du bist dran
… so that a session without a real request does not hold the user's attention.
- Given a Claude Code session that "Du bist dran" lists under "Antworten"
- When the user dismisses it with ✕
- Then "Du bist dran" no longer lists it, also on the other devices of the user
Verified by
Scenario#44.02: a new message brings the session back
… so that a later real request is not lost.
- Given a dismissed Claude Code session
- When Claude writes a new message in it
- Then "Du bist dran" lists the session again
Verified by
Scenario#44.03: only the holder of the access token dismisses
… so that a visitor of the demo cannot change what the user sees.
- Given a server with an access token
- When a request without the token dismisses a session
- Then the server refuses it with HTTP 401, and the session stays listed
Verified by
Scenario#44.04: a dismissal survives a restart
… so that a deployment does not bring back all dismissed sessions.
- Given a dismissed Claude Code session
- When the server restarts
- Then "Du bist dran" still does not list the session
Verified by
Solution
POST /api/dismisswith{"key", "time"}keeps that the session with this key is dismissed up to this time. The key is the session's link to Claude Desktop, or its resume command for a terminal session.- On a server the request needs the access token as bearer header; the page reads it from its cookie. A cookie alone does not count, so that no other site can make a logged-in browser dismiss a session. The body must be JSON, so that a plain HTML form of another site cannot post it to the local mode either.
- The dashboard removes the marker
askfrom a dismissed session as long as the session's time is not newer. A newer time, e.g. after a new message, ends the dismissal and removes it. - The dismissals live in
dismissed.jsonin the state directory, besiderelays.json. - The page shows ✕ on each session of "Du bist dran", not in the demo.
- Version 0.26.0.
Open Questions
- Where are dismissals kept? On the server, for all devices of the user, with the existing access token; chosen by the human.
- Sessions only, or every row of "Du bist dran"? Sessions only, chosen by the human.
Additional Changes
- Werkbaum warned that the plan node
#dash.claudehas children and a size; its size (S) is removed.