02cb424d5c
brother: emits declared in the module's own list too, parts of 700 KiB at most, a duplicates window on device-asks, and the built binary ignored (issue 1453)
jschoubben2026-10-20 21:37:07 +02:00
b430b35633
brother: README for the bucket, the documents in parts, printing and the device process (issue 1453)
jschoubben2026-10-20 21:31:06 +02:00
1d62305001
brother: scanning moves into the device process and its scans are kept in the bucket; scanner.document, printer.upload and printer.print carry documents in parts and print over IPP (issue 1453, ADR 0468)
jschoubben2026-10-20 21:30:51 +02:00
d6e88fac17
brother: the module requires an s3-bucket, with mesh-mail's S3 client and store.json read by the device account alone (issue 1453, ADR 0468 clause 2)
jschoubben2026-10-20 21:24:19 +02:00
feada9fb14
brother: the admin process becomes the device process, brother-device, with device-asks and device-answers (issue 1453, ADR 0468 clause 1)
jschoubben2026-10-20 21:23:28 +02:00
adfb61c053
brother: the admin account, its owned secrets, the process and the printer-asks stream declared as mesh-mail's sender is; an integration test and the README (issue 1453)
jschoubben2026-10-20 21:21:15 +02:00
29107b0d93
brother: the admin process alone reads the admin password and logs in; printer.settings queues an ask and reads its answer (issue 1453)
jschoubben2026-10-20 21:20:16 +02:00
58c0c0682c
brother: README for the two seats, the pinned certificate, the admin password and the login (issue 1453)
jschoubben2026-10-20 21:12:56 +02:00
6782816707
brother: the printer seat's status verb, IPP Get-Printer-Attributes by hand and the eSCL state, replayed from captures (issue 1453)
jschoubben2026-10-20 21:12:45 +02:00
34260d8c29
brother: the printer seat's settings verb, read-only through the login, with the page's links and form fields (issue 1453)
jschoubben2026-10-20 21:11:15 +02:00
2b62a1819e
brother: the printer config and admin-password secret, HTTPS pinned to one certificate, and the login by the form's own field (issue 1453)
jschoubben2026-10-20 21:10:14 +02:00
78f9731d4a
brother: the scanner seat declared and claimed, its verbs scan, status and list; preferences untrusted (issue 1453, 1446)
jschoubben2026-10-20 21:07:00 +02:00
4a892ee29d
Move the scan module to brother, ADR 0467 clause 1: the code unchanged in what it does (issue 1453)
jschoubben2026-10-20 21:06:24 +02:00
809dd76973
Merge pull request 'A scan module: scan the glass over eSCL, crop the document, file it as a PDF and announce it (issue 1440, ADR 0464)' (#383) from feat/scan-module into main
mesh-tools2026-10-20 18:23:43 +00:00
0821718d7c
issue 1440: the scan module's manifest, settings template and README
jschoubben2026-10-20 20:13:58 +02:00
27709b07e7
issue 1440: scan_now, scan_status and scan_list, and scan.added said after the rename
jschoubben2026-10-20 20:13:02 +02:00
ae47a6cc10
issue 1440: file the scan as a one-page PDF, written whole and renamed, and list the filed scans
jschoubben2026-10-20 20:11:39 +02:00
26ae4d2fd8
issue 1440: the plain-lid test's specks lie where counting them would make a box
jschoubben2026-10-20 20:10:29 +02:00
cf407f187d
issue 1440: crop the document out of the platen's white
jschoubben2026-10-20 20:10:20 +02:00
36a34a49b8
issue 1440: the scan module's eSCL client, settings and image density
jschoubben2026-10-20 20:09:47 +02:00
a67f01963f
Merge pull request 'mesh-issues stops listening to the removed module's transition, which every controller merge check now refuses (issue 1406)' (#382) from fix/1406-drop-the-old-transition-name into main
mesh-tools2026-10-20 13:28:29 +00:00
56ba1c3837
Hear the gate's transition alone: today's module is forgotten (issue 1406)
mesh-tools2026-10-20 13:02:35 +00:00
db32f8ac56
Merge pull request 'Remove today's delivery module now that the gate holds its seat (design 47 R3e, issue 1351, ADR 0454)' (#381) from fix/1351-remove-todays-delivery-module into main
mesh-tools2026-10-20 12:27:48 +00:00
1c7024224d
Make the catalogue test strict: the gate alone claims the seat, and say the old module is gone (ADR 0454, issue 1351)
mesh-tools2026-10-20 12:03:46 +00:00
1ef19030f1
Remove today's mesh-delivery module: the gate holds the seat since the handover (ADR 0454, issue 1351)
mesh-tools2026-10-20 12:02:56 +00:00
bb0fe93bbd
Merge pull request 'The gate takes over today's mesh-delivery: mesh-delivery-gate holds the seat, asks and merges through the parts, and today's module leaves (design 47 R3e, issues 1346-1351)' (#380) from feat/r3e-the-gate into main
mesh-tools2026-10-20 06:49:17 +00:00
1d9c72c476
Compare in the carry bed what the carry copies, not what the gate does after it; keep today's module among mesh-issues' owners
mesh-tools2026-10-20 06:43:26 +00:00
1f193f6d01
Let the catalogue hold the gate and today's module as the two claimants of the seat, and say the removal follows the handover (issue 1351)
mesh-tools2026-10-20 06:43:17 +00:00
41f18b2452
Keep today's module mesh-delivery in the catalogue, unchanged: its removal follows the handover as a pull request of its own
mesh-tools2026-10-20 06:41:48 +00:00
cf5c02737b
Pin mesh-sdk to main's merge of #47 (88581d0a), the same tree as ba684e54 the review read
mesh-tools2026-10-20 06:32:31 +00:00
a3a9b8749d
Merge pull request 'Let a commit copy files from another repository on the forge, so a large move reaches the forge from any machine (issue 1365)' (#379) from fix/1365-a-commit-copies-from-a-repository into main
mesh-tools2026-10-20 05:57:00 +00:00
83adc46fe0
Give each asking at unchanged heads its own router id, overwrite the ask instead of taking it away, and announce the answered asking (review round 1, G2; issue 1370)
mesh-tools2026-10-20 01:26:28 +00:00
67fe9a4dbe
Pin mesh-sdk at issue 1370's commit and read the phase removed by its name (review round 1)
mesh-tools2026-10-20 01:25:52 +00:00
1a985d68fd
Test that the carry copies a group, a pull key and an unasked delivery byte for byte (review round 1)
mesh-tools2026-10-20 01:20:37 +00:00
68117bd74d
Hold the seat only when no assignment stands, every have key says removed and both watches are current; fix the two bed tests that failed the try (review round 1, G1)
mesh-tools2026-10-20 01:20:09 +00:00
dc3a177410
Let a commit copy files from another forge repository, so a large move is not typed through the caller
mesh-tools2026-10-20 01:07:28 +00:00
3b03c220ad
Check that the catalogue holds no module mesh-delivery but through the names its handover needs, and say how the seat passes (issue 1351)
mesh-tools2026-10-20 00:59:36 +00:00
d16fa1e052
Hear the gate's transitions beside today's delivery module's in mesh-issues, and name the gate among the owners (issue 1350)
mesh-tools2026-10-20 00:58:01 +00:00
6a39da5485
Owe the forge its statuses, views, notes and comments as keys, read the plan from plans as data, and call an empty check answer an error (issue 1349)
mesh-tools2026-10-20 00:52:42 +00:00
beafa55d97
Ask the Approve through the gate's asks, hand merges to the bridge one member at a time, and move source.main once a group is merged (issue 1348)
mesh-tools2026-10-20 00:45:02 +00:00
dd462a80e2
Keep the gate silent until it holds the seat, and carry today's state over once when it first does (issue 1347)
mesh-tools2026-10-20 00:29:19 +00:00
a390bb40f8
Take a stray key out of the gate's reads (issue 1346)
mesh-tools2026-10-20 00:19:29 +00:00
09f0b0d5ab
Move the delivery module to the gate: mesh-delivery-gate claims the seat with its own buckets and reads (issue 1346)
mesh-tools2026-10-20 00:19:19 +00:00
c0880c4dc2
Merge pull request 'Read the grant file on keycloak's moved path, so a consumer not moved gets its client (issue 1332)' (#378) from fix/1332-keycloak-reads-the-grant-file into main
mesh-tools2026-10-19 22:46:05 +00:00
b9104454f9
Read the grant file on keycloak's moved path, so a consumer not moved is still made (issue 1332)
jochen2026-10-20 00:30:45 +02:00
73a10fafc7
Pull keycloak's moved-path harness into movedHarness, and test it reads the grant file (issue 1332)
jochen2026-10-20 00:30:10 +02:00
954f84ea19
Merge pull request 'The mail web client: mesh-mail-web, and mesh-mail's views for it (design 59 milestone 1)' (#377) from feat/mail-webclient into main
mesh-tools2026-10-19 21:27:33 +00:00
9f3a8ee391
Follow real links instead of building them, and check the CSP on every answer (issue 1268)
jochen2026-10-19 23:18:53 +02:00
cad6194447
Keep the HTTP endpoint's own state, so status and health stop claiming to serve once it has failed (issue 1283)
jochen2026-10-19 23:18:51 +02:00
3fd1b47fe7
Bounce once through this origin before sign-in, so a Strict cookie is not lost crossing from Keycloak or another site (issue 1263)
jochen2026-10-19 23:18:48 +02:00
5b57422523
Report an unknown ask through a small interface, not *testing.T directly (issue 1285)
jochen2026-10-19 22:53:18 +02:00
523d7846cd
Fix mesh-mail-web's manifest: operators is type list, the listen word names its port number (issue 1262)
jochen2026-10-19 22:47:56 +02:00
502cda34cb
Add design 59 milestone 1's acceptance tests on the runtime player (issue 1268)
jochen2026-10-19 22:42:27 +02:00
c996121e9d
Add the runtime player and stand-in mail-store for a bundle's integration test (issue 1285)
jochen2026-10-19 22:38:36 +02:00
f863e852c9
Add the write page and a send's state, behind issue 1284's form token (issue 1267)
jochen2026-10-19 22:29:41 +02:00
58b337770d
Show a mail as escaped text and serve its attachments as downloads (issue 1266)
jochen2026-10-19 22:26:47 +02:00
ff1886ac62
Add the search page, by mail-store.search's own argument names (issue 1265)
jochen2026-10-19 22:24:52 +02:00
28fdbbd346
Show every granted account, its state and its folders' counts (issue 1264)
jochen2026-10-19 22:22:52 +02:00
3ee80c98ab
Bind every changing form's token to its session (issue 1284)
jochen2026-10-19 22:18:03 +02:00
8e0ef84060
Sign in through Keycloak: code flow with PKCE, verified ID token, 12-hour session (issue 1263)
jochen2026-10-19 22:16:15 +02:00
a9ad306693
Add the module mesh-mail-web, with its status verb (issue 1262)
jochen2026-10-19 22:07:36 +02:00
a3e9985c15
Keep each account's newest mails in a bucket, bounded past 81 accounts (issue 1282)
jochen2026-10-19 21:56:04 +02:00
08200bc178
Keep each account's state in a bucket (issue 1255)
jochen2026-10-19 21:50:12 +02:00
a9ff48e200
Answer a send's state only to its caller (issue 1261)
jochen2026-10-19 21:44:12 +02:00
66aa204f67
Merge pull request 'Say a group member refused only because main moved a warning for ten minutes, urgent after (issue 1275 AC6, ADR 0442)' (#376) from fix/1275-ac6-out-of-date-warning into main
mesh-tools2026-10-19 18:58:21 +00:00
a76910a0c0
Say only the merge tool's two out of date refusals a warning, and never step a severity down (issue 1275, ADR 0442's cases)
jschoubben2026-10-19 20:51:31 +02:00
dc86203d29
Say a refusal for an out of date verdict a warning for ten minutes, urgent after (issue 1275, operator's amendment, AC6)
jschoubben2026-10-19 20:46:46 +02:00
9efdd87a73
Merge pull request 'Merge a group whole or not at all, and say loudly when it cannot (issues 1275, 1276)' (#375) from fix/1275-group-merges-whole-or-not into main
mesh-tools2026-10-19 18:45:31 +00:00
301cd2287f
Answer gitea_commit_statuses in the bus test's runtime, and say a held, refused member once (issue 1275, review round 1)
jschoubben2026-10-19 20:38:48 +02:00
524e3405e5
Ask a group's Approve only when every member may merge, and withdraw the ask when a required status turns (issue 1275)
jschoubben2026-10-19 20:32:22 +02:00
6e6d1f3e47
Merge a group whole or not at all: re-read every required status first, stop at the first refusal, say a held or half merged group urgent (issue 1275, 1276)
jschoubben2026-10-19 20:32:15 +02:00
eda55ceb9e
Merge pull request 'Give the forge bridge a merge commit's trees in one call, and each open pull request's head branch (design 47 R3c, issue 1234)' (#374) from feat/delivery-parts into main
mesh-tools2026-10-19 18:22:09 +00:00
e8c3448797
Merge pull request 'Answer each gmail mail once when no folder is named, keeping archived mail (issue 1248)' (#373) from fix/1248-gmail-mail-once into main
mesh-tools2026-10-19 13:39:15 +00:00
5c1ff4bb15
mesh-mail: dedup-archive picks the same copy in both stores when a message-id also sits in a second non-archive folder (issue 1248, review round 1 finding 1)
jochen2026-10-19 15:33:36 +02:00
280aeb2f47
Answer each gmail mail once when no folder is named, keeping archived mail (issue 1248)
jochen2026-10-19 15:30:44 +02:00
b767aac8e0
Merge pull request 'mail_search answers the operator's questions: optional words, filters by sender, recipient, cc, date, words, attachment, flags, thread and correspondents, ordered and grouped (issues 1228-1232)' (#372) from feat/mail-search into main
mesh-tools2026-10-19 13:17:13 +00:00
920199862e
mesh-mail: group-by-sender and order-by sender compare addresses case-insensitively in Postgres too, and a sender's shown name and address are its newest mail's, deterministically (issue 1230, review finding 6)
jochen2026-10-19 15:09:44 +02:00
8dd2a42448
mesh-mail: mail_search's order defaults to descending when left out, matching its own schema text, and AC1's no-filter test proves ordering, limit and grant isolation together (issue 1232, review findings 5 and 7)
jochen2026-10-19 15:05:23 +02:00
d1a9056a1c
mesh-mail: mail_search gains words/words-any, a word found in subject or body, since subject-words and body-words together only ever meant and (issue 1229, review finding 3; also proves AC9's type-or-name independently and AC2+unread combined)
jochen2026-10-19 15:02:40 +02:00
a3476a7bf2
mesh-mail: from-someone-i-wrote-to recognises gmail's Sent folder name too, and stays scoped to one account (issue 1231, review findings 1 and 2)
jochen2026-10-19 14:57:26 +02:00
1c3158e098
mesh-mail: mail_search's address filter never treats % or _ as a wildcard, so a literal domain filter does not leak every mail in Postgres (issue 1228, review finding 4)
jochen2026-10-19 14:52:36 +02:00
75957fc3c0
Hash the root tree from the root's entries, since the forge names the commit (issue 1234)
jschoubben2026-10-19 14:52:29 +02:00
ea83746297
Give the forge bridge a merge commit's trees in one call, and a pull request's head branch (issue 1234)
jschoubben2026-10-19 14:50:19 +02:00
b60ee706d4
mesh-mail: mail_search's tool makes the query optional and offers every filter and order-by (one schema for mail_search and mail-store.search), validated before the index is ever asked (issue 1232)
jochen2026-10-19 14:46:58 +02:00
4a60deb4a8
mesh-mail: mail_search finds a thread's replies and mail from someone the operator wrote to, so a reply or a known correspondent's junk mail can be found (issue 1231)
jochen2026-10-19 14:39:59 +02:00
fc10031d22
mesh-mail: mail_search orders by date, sender, subject or size and groups by sender, so the newest, the largest or who writes most can be answered (issue 1230)
jochen2026-10-19 14:36:53 +02:00
2985122856
mesh-mail: mail_search's Query gains subject/body words, attachment type/name and read/unread, so a word in one field, an attachment or a flag can filter mails (issue 1229)
jochen2026-10-19 14:29:15 +02:00
20342f2172
mesh-mail: mail_search's Query gains from, to, cc and a date range, so a sender, a recipient or a date can filter mails without query words (issue 1228)
jochen2026-10-19 14:22:14 +02:00
7bb588ca1b
Merge pull request 'mesh-mail sends an approved mail from its own sender process, and tells a failed send once (ADR 0436, ADR 0438; issues 1172, 1193-1199)' (#371) from feat/mail-sender into main
mesh-tools2026-10-19 11:36:51 +00:00
a2c0c58677
mesh-mail: a redelivery of a message whose send already finished (sent, failed, refused or not proven) is a repeat, terminated without recording, emitting or telling anything again (operator-approved change to ADR 0436 clause 10; issue 1196)
jochen2026-10-19 13:29:31 +02:00
c441d83ba7
Merge pull request 'Keep two values of each issue in the tracker's bucket, since the log holds them all (issue 1221)' (#370) from fix/1221-tracker-keeps-two-copies into main
mesh-tools2026-10-19 11:08:47 +00:00
e601e88e95
Keep two values of each issue in the tracker's bucket, since the log holds them all (issue 1221)
jschoubben2026-10-19 12:38:55 +02:00
fb8e677cd8
Merge pull request 'The router takes a module's condition on the operator channel's one subject (design 47 R3b: issues 1217, 1218)' (#369) from feat/delivery-seat-by-claim into main
mesh-tools2026-10-19 10:28:28 +00:00
5aca005cb7
Shorten the router's burst window in the test bundle so the desk is sent within seconds (issue 1218, check finding 1)
jschoubben2026-10-19 12:15:47 +02:00
9f9e9fc9d3
Shorten the router's start grace in the test bundle so the bus tests stay in seconds (issue 1218, review round 1 finding 2)
jschoubben2026-10-19 12:05:07 +02:00
f737418bb3
Keep a module's condition open when the controller's conditions are read (issue 1217, review round 1 finding 1)
jschoubben2026-10-19 12:04:58 +02:00
5b235a6e80
Prove over the bus that a condition on the one subject reaches the desk (issue 1218)
jschoubben2026-10-19 11:59:49 +02:00
de6741a335
Take a module's condition on the operator channel's one subject (issue 1217)
jschoubben2026-10-19 11:58:10 +02:00