diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-25 12:09:54 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-25 12:09:54 +0200 |
| commit | 8b26c3e83a0328adb3f24d808b629fb73250d377 (patch) | |
| tree | 0ad763bf64cf8d21a83fde09ca633b125b484140 /docs/superpowers/specs | |
| parent | 66c36f0a7f869eac10f7cfa552f23cf076ba7548 (diff) | |
| download | qtmaildir-8b26c3e83a0328adb3f24d808b629fb73250d377.tar.gz qtmaildir-8b26c3e83a0328adb3f24d808b629fb73250d377.zip | |
docs(backlog): record item 165, a draft's Message-ID changes on every save
Found while hand-testing items 163 and 164: four saves produced four
distinct ids, and one reopen-and-edit turned one into another.
Cause verified in the code rather than inferred. MessageBuilder::build()
calls g_mime_utils_generate_message_id() unconditionally and every
autosave calls build(); OutgoingMessage has no field to carry an id in,
and ComposeContext has none for the draft's own id either, since
inReplyTo and references are the ORIGINAL's when replying. So a stable
id needs a field threaded from forDraft() through both structs, not a
changed call site.
Filed as needing a DECISION rather than an implementation, because what
a draft's identity is is not obvious: a stable id reused at send makes
the draft and the sent message one message but means the server saw that
id before anything was sent; a stable id discarded at send keeps
revisions collapsed while drafting and threads under a fresh one; the
status quo never reuses an id for two different things, which is its one
real virtue.
Not urgent and explicitly not blocking item 163, whose fix restores
correct file replacement. This is the property that turned that fork
into two MESSAGES rather than one duplicated file, and the remaining
route to it is an interrupted save, since DraftStore::write() unlinks
the previous revision only after the new one is safely on disk.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUQS6n3cmsFrsjCNmwNtf8
Diffstat (limited to 'docs/superpowers/specs')
0 files changed, 0 insertions, 0 deletions
