| Age | Commit message (Expand) | Author | Files | Lines |
| 22 hours | fix: ask before keeping a destination the user skippedHEADmaster | Danilo M. | 2 | -8/+72 |
| 22 hours | fix: re-ask a quoted name or org instead of losing the run | Danilo M. | 1 | -2/+6 |
| 22 hours | feat: ask for the reporting destinations at init | Danilo M. | 1 | -1/+79 |
| 22 hours | feat: render the destination sections at init | Danilo M. | 1 | -2/+37 |
| 22 hours | feat: refuse a half-configured destination at report | Danilo M. | 1 | -0/+16 |
| 23 hours | feat: warn when no reporting destination is configured | Danilo M. | 1 | -0/+15 |
| 23 hours | feat: write vendor rows into the manifest | Danilo M. | 2 | -2/+24 |
| 23 hours | feat: read which reporting destinations are configured | Danilo M. | 1 | -1/+56 |
| 23 hours | feat: build vendor and MISP destination rows | Danilo M. | 1 | -0/+37 |
| 23 hours | feat: add the destination table, transcribed from vendor docs | Danilo M. | 1 | -0/+32 |
| 28 hours | fix: emit only registered ARF fields, verified against IANA | Danilo M. | 1 | -4/+22 |
| 28 hours | feat: add the report subcommand | Danilo M. | 1 | -0/+92 |
| 28 hours | fix: keep the trailing comment at the end of the config | Danilo M. | 1 | -10/+16 |
| 28 hours | fix: restore the footer guard, with the sequence that needs it | Danilo M. | 1 | -0/+7 |
| 29 hours | fix: stop init duplicating its own preamble on every rewrite | Danilo M. | 2 | -4/+8 |
| 29 hours | feat: ask for the reporter identity during init | Danilo M. | 2 | -6/+116 |
| 29 hours | feat: read the reporter identity from config | Danilo M. | 2 | -6/+65 |
| 29 hours | feat: write report bodies into the case directory | Danilo M. | 1 | -0/+98 |
| 29 hours | feat: freeze a reported case and detect edited bodies | Danilo M. | 1 | -0/+72 |
| 44 hours | feat: assemble the RFC 5965 report document | Danilo M. | 1 | -0/+180 |
| 44 hours | feat: build the machine-readable feedback report part | Danilo M. | 1 | -0/+177 |
| 44 hours | fix: escape the continuation marker so a value cannot forge one | Danilo M. | 1 | -9/+109 |
| 44 hours | feat: build the human-readable part of a report | Danilo M. | 1 | -0/+196 |
| 44 hours | feat: list the indicators no abuse desk was found for | Danilo M. | 1 | -3/+88 |
| 44 hours | fix: fold a role mailbox's case, and test the half that was not tested | Danilo M. | 1 | -7/+29 |
| 44 hours | fix: derive a destination id from its address, not its position | Danilo M. | 1 | -14/+39 |
| 44 hours | feat: group abuse contacts into one destination per address | Danilo M. | 1 | -0/+99 |
| 44 hours | fix: strip the envelope recipient in every shape the grammar allows | Danilo M. | 2 | -4/+39 |
| 44 hours | feat: store a whitelist of publishable headers in the manifest | Danilo M. | 2 | -0/+100 |
| 2 days | docs: record the fourth property and the contacts command | Danilo M. | 1 | -9/+5 |
| 2 days | fix: keep ":" literal so an IPv6 query is not over-encoded | Danilo M. | 1 | -6/+15 |
| 2 days | feat: add the contacts subcommand | Danilo M. | 1 | -1/+53 |
| 2 days | fix: percent-encode the component interpolated into an RDAP query | Danilo M. | 1 | -2/+23 |
| 2 days | fix: refuse an ipv6 scope id, and say why a value was refused | Danilo M. | 1 | -9/+49 |
| 2 days | fix: validate a query host at the one point a query is admitted | Danilo M. | 1 | -1/+54 |
| 2 days | fix: treat the IANA bootstrap as hostile, not as trusted input | Danilo M. | 1 | -9/+60 |
| 2 days | feat: resolve the worklist to abuse contacts | Danilo M. | 1 | -0/+60 |
| 2 days | feat: build the contacts worklist, host only | Danilo M. | 1 | -0/+108 |
| 2 days | feat: query RDAP, walking up the labels for a registrable domain | Danilo M. | 1 | -0/+53 |
| 2 days | feat: read abuse addresses from a jCard, strictly | Danilo M. | 1 | -0/+87 |
| 2 days | feat: select an RDAP server by longest prefix and by TLD | Danilo M. | 1 | -0/+52 |
| 2 days | feat: cache the IANA bootstrap, and prefer a stale copy to none | Danilo M. | 1 | -0/+59 |
| 2 days | feat: add the RDAP transport, with a redirect cap and no downgrade | Danilo M. | 1 | -0/+72 |
| 3 days | feat: report List-Unsubscribe urls and a differing Sender | Danilo M. | 2 | -2/+34 |
| 3 days | feat: flag an address spoofed into a display name | Danilo M. | 1 | -1/+48 |
| 3 days | fix: take the sender domain from the address, not the display name | Danilo M. | 1 | -3/+30 |
| 3 days | fix: prefer the observed address over an attacker's HELO literal | Danilo M. | 1 | -9/+27 |
| 3 days | fix: re-bracket an IPv6 host when stripping URL userinfo | Danilo M. | 1 | -2/+12 |
| 3 days | fix: redact a valueless query token whole, not as a kept name | Danilo M. | 2 | -5/+49 |
| 3 days | fix: validate each setup answer at the prompt that asked for it | Danilo M. | 1 | -34/+101 |