Skip to content

Feature test checklist for landing staging → master (incl. draft rendering fix) - #104

Closed
asherp wants to merge 8 commits into
masterfrom
claude/feature-test-checklist-pr-p89ypy
Closed

Feature test checklist for landing staging → master (incl. draft rendering fix)#104
asherp wants to merge 8 commits into
masterfrom
claude/feature-test-checklist-pr-p89ypy

Conversation

@asherp

@asherp asherp commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Superseded by #107, which is the correct stagingmaster PR with the checklist in the description (not a committed file).

claude and others added 8 commits June 12, 2026 17:52
Drafts are authored by the current user and are never signed until they
are sent, so signature_valid is always null on them. renderDrafts was
filtering on signature_valid !== true whenever hide_unsigned_messages was
enabled (the default), which silently hid every saved draft from the
drafts page.

Mirror the sent-mail rendering path, which already bypasses this filter
because that mail is self-authored, and drop the now-unreachable
'no verified drafts' empty state.
Remove signature verification filter from drafts rendering
…ent workflow

Generalize the existing hybrid attachment encryption (random AES-256 key
wrapped with NIP-44) to N recipients via a per-message Content Encryption
Key and a new RECIPIENTS armor block. Define To:=signer / Cc:=viewer roles,
the sender self-stanza for Sent-folder access, per-level recipients in reply
chains, signature coverage of the recipients block, and a DocuSign-style
agreement/signing-round workflow that is independently verifiable from the
email thread.

Bumps spec to 0.3.0-draft.
spec: multi-recipient (group) encryption, To/Cc roles, and agreement workflow
Introduce a dedicated BEGIN NOSTR CONTRACT block so a signatory's consent
is an explicit, intentional act rather than a side effect of replying (every
reply is signed for chain-of-custody, so a signature alone cannot mean assent).

- New block type + END tag in the armor vocabulary (Section 2.1).
- Extend per-level signature coverage to include the CONTRACT block
  (level(L) = body || recipients || contract), fixed body->recipients->contract
  order (Section 4.2).
- Define the consent block: fields (agreement H, signer), the document hash H
  (over level-1 body+recipients, excluding contracts to avoid self-reference),
  and ordering as content (not a trailer), one per level (Section 11.3).
- Rewrite Signing Round / Completion / Verification to key off verified CONTRACT
  blocks over H, dedup by pubkey, and treat CONTRACT-less replies as comments
  (Sections 11.4-11.6); handle originator-as-signatory.
- HTML rendering for agreements: status banner + green consent panels vs muted
  comment sections, with non-colour-dependent labels (Section 6.2.6).
- Backward compatibility note: older clients ignore CONTRACT and see a plain
  signed reply (Section 12).

Bumps spec to 0.4.0-draft.
…ly privacy roadmap

- Rename the consent block CONTRACT -> CONSENT throughout (BEGIN/END NOSTR
  CONSENT, level(L) consent term, HTML rendering, completion/verification).
  CONSENT names the act, avoids colliding with 'agreement' (which SIGit and
  this spec both use for the whole container), and matches SIGit verbiage
  (signer/viewer roles are already identical). Also drop the '(Contract)'
  parenthetical from the Agreement Message heading.
- Add Section 11.7 'Relation to SIGit' mapping our model onto SIGit's
  (keys<->RECIPIENTS, meta<->H, prevSig/docSignatures<->nested signatures,
  Sign event<->CONSENT block) and noting the email-native vs relay+Blossom
  transport difference.
- Note the planned Nostr-only agreement transport (fold in SIGit's NIP-59
  gift-wrap/Blossom privacy model) in Section 10.9; emphasize the consent
  semantics are transport-independent.
…p6sr

Add consent block support for agreement workflows (v0.4.0)
Tracking checklist of the features/fixes queued to land on master, each
tied to the feature test that guards it (or flagged as test-owed).
Highlights the draft rendering fix (show self-authored drafts regardless
of hide_unsigned_messages; decode NIP-44/glossia bodies for preview),
which has landed in code but still needs an integration test.
@asherp asherp closed this Jun 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants