Commit Graph

  • 825f49671e Merge branch 'ci/gitea-actions' into 'main' main jcoffey-dev 2026-09-22 00:01:05 -07:00
  • 29bcfecb80 ci: add Gitea Actions workflow ported from .gitlab-ci.yml ci/gitea-actions jcoffey-dev 2026-09-21 22:45:05 -07:00
  • 6c6fe91d0c A deleted tenant's legacy protocols switch goes with it fix/tenant-switch-cleanup jcoffey-dev 2026-09-21 14:56:04 -07:00
  • 840215d109 Merge branch 'feat/session-legacy-flag' into feat/legacy-use-panel feat/legacy-use-panel jcoffey-dev 2026-09-21 13:48:35 -07:00
  • d2f41bce26 Merge branch 'feat/tenant-legacy-switch' into feat/session-legacy-flag feat/session-legacy-flag jcoffey-dev 2026-09-21 13:48:31 -07:00
  • 96c7bab032 Merge branch 'feat/legacy-change-event' into feat/tenant-legacy-switch feat/tenant-legacy-switch jcoffey-dev 2026-09-21 13:48:28 -07:00
  • 79b6787397 Merge main, and put LP-8's event on top of the Hardening link's schema feat/legacy-change-event jcoffey-dev 2026-09-21 13:48:25 -07:00
  • 3f40b36032 The switch knows who still uses legacy mail apps (LP-15, server) jcoffey-dev 2026-09-21 11:45:05 -07:00
  • cd99037ca4 The session says whether legacy protocols are off for the account jcoffey-dev 2026-09-21 11:30:34 -07:00
  • b65afb66f9 A tenant can turn legacy protocols off for itself (LP-9 to LP-14a) jcoffey-dev 2026-09-21 11:18:42 -07:00
  • e953c68e2e Merge branch 'feat/legacy-protocols-nav' into 'main' jcoffey-dev 2026-09-21 11:17:17 -07:00
  • 64cddc9246 The switch reports every change as an event (LP-8) jcoffey-dev 2026-09-21 10:53:01 -07:00
  • 9379c1f151 Merge branch 'feat/legacy-listener-create-refused' into 'main' jcoffey-dev 2026-09-21 10:50:00 -07:00
  • 4b585905d7 Nothing advertises the legacy protocols while they are off (LP-7) feat/legacy-not-advertised jcoffey-dev 2026-09-21 10:41:20 -07:00
  • 30be928e14 Merge main, and put the Hardening link on top of LP-6's schema jcoffey-dev 2026-09-21 10:21:01 -07:00
  • 7dfe4c8e70 No legacy listener can be added while the switch is off (LP-4) jcoffey-dev 2026-09-21 10:06:28 -07:00
  • 6b1e5c67e3 Merge branch 'feat/legacy-signin-refusal' into 'main' jcoffey-dev 2026-09-21 10:05:13 -07:00
  • 04252000da Legacy sign-in is refused while the switch is off (LP-6) jcoffey-dev 2026-09-21 09:49:40 -07:00
  • 1a48474957 Settings › Security gains Hardening, the legacy protocols screen jcoffey-dev 2026-09-21 09:19:49 -07:00
  • 3ce50abcaa Merge branch 'ci/gitlab-pipeline' into 'main' jcoffey-dev 2026-09-20 20:56:38 -07:00
  • 0fb98a6f4c Run CI on the self-hosted GitLab jcoffey-dev 2026-09-20 20:17:24 -07:00
  • bc2ae32207 The weekly release lands its bump through a pull request jcoffey-dev 2026-09-20 16:42:51 -07:00
  • 8ffdeea85d Write down how a change reaches main, now that it is enforced jcoffey-dev 2026-09-20 16:09:36 -07:00
  • b73aa13fa3 Prove the switch on a running server, not just in unit tests jcoffey-dev 2026-09-20 15:55:49 -07:00
  • 3f689529c7 A listener put back has to be bound, or it never comes up jcoffey-dev 2026-09-20 15:46:46 -07:00
  • f95f10809a Release weekly, and publish an image jcoffey-dev 2026-09-20 15:42:25 -07:00
  • 1b3ec64862 inbuxa:ProtocolPolicy over JMAP jcoffey-dev 2026-09-20 15:38:32 -07:00
  • 3b29ca3571 The switch now reaches the running server jcoffey-dev 2026-09-20 15:27:32 -07:00
  • 08f12fa158 SMTP and JMAP are locked open, and the selector will show them so jcoffey-dev 2026-09-20 15:24:23 -07:00
  • f04dbc3417 Taking the legacy listeners away, and putting them back jcoffey-dev 2026-09-20 15:19:08 -07:00
  • c35b24b123 inbuxa:ProtocolPolicy, the switch itself jcoffey-dev 2026-09-20 15:12:45 -07:00
  • 33c529fd8a Cargo.lock: the base64 sequoia-openpgp actually resolves to jcoffey-dev 2026-09-20 15:10:47 -07:00
  • fee6b74e79 Listeners can be stopped one at a time, which LP-2 needs jcoffey-dev 2026-09-20 15:10:41 -07:00
  • 3b68e27d3c Bump opentelemetry-otlp from 274b4d3 to 80a14a3 dependabot[bot] 2026-09-20 07:16:43 +00:00
  • fac33548d1 Bump rocksdb from 0.24.0 to 0.25.0 dependabot[bot] 2026-09-20 07:16:08 +00:00
  • 94be824147 Bump the minor-and-patch group with 5 updates dependabot[bot] 2026-09-20 07:15:55 +00:00
  • b39694f03b Bump Swatinem/rust-cache in the actions group dependabot[bot] 2026-09-20 07:01:56 +00:00
  • e490f515a1 Bump decancer from 3.3.3 to 4.0.0 dependabot[bot] 2026-09-20 10:20:43 +00:00
  • b8a9d5a9d9 spam-filter: reach the &str by deref, not by str::as_str jcoffey-dev 2026-09-20 03:19:09 -07:00
  • 604d889220 Version 2026.9.20, and an install.sh that tells the truth v2026.9.20 jcoffey-dev 2026-09-20 03:13:52 -07:00
  • d264429298 Cutover: the old install is retired, and that changes what a rollback is jcoffey-dev 2026-09-20 01:58:34 -07:00
  • 80972695b9 Cutover: the run, 2026-09-20 — 78 seconds, and what it found jcoffey-dev 2026-09-20 01:47:10 -07:00
  • 7c4add8425 The schema is cached per-origin and privately, not publicly for a year jcoffey-dev 2026-09-20 01:43:15 -07:00
  • 92d2b07c2e record-before: ignore the bytecode cache the path import leaves jcoffey-dev 2026-09-20 00:02:06 -07:00
  • 987ed55d06 record-before: the step 4 recording, from the server about to be replaced jcoffey-dev 2026-09-20 00:02:01 -07:00
  • a63839f6b0 The repository's own .github, now that it is public jcoffey-dev 2026-09-20 00:00:05 -07:00
  • 6a53d47106 Mark the files this fork changed (AGPL section 5(a)) jcoffey-dev 2026-09-19 23:47:24 -07:00
  • 77fce247e2 Update README to remove development status jcoffey 2026-09-19 23:47:31 -07:00
  • 0117500d85 Cutover: the sheet to follow at the terminal on the night jcoffey-dev 2026-09-19 23:08:19 -07:00
  • 8c3450dffa Migration: copy in two passes, and time the second one jcoffey-dev 2026-09-19 22:50:55 -07:00
  • 7196f9dda2 Specs: when the source goes out, and who owes the offer jcoffey-dev 2026-09-19 22:50:21 -07:00
  • efe0b01bac Specs: what may carry the Stalwart name, and when it stops jcoffey-dev 2026-09-19 22:49:11 -07:00
  • 04a5a8bdc2 Specs: features 6 to 9 are built, and the table hadn't caught up jcoffey-dev 2026-09-19 22:48:56 -07:00
  • 848bfeda4e Migration: name the four ways this goes badly, not just that it might jcoffey-dev 2026-09-19 22:52:12 -07:00
  • 4ce5fc6f68 Migration: say what the operator is carrying, before the tool moves anything jcoffey-dev 2026-09-19 22:48:50 -07:00
  • 3e69b6139f Cutover: the old install is a reference, kept until someone says otherwise jcoffey-dev 2026-09-19 22:45:09 -07:00
  • 7c27bae4f3 Cutover: ext4, so copy in two passes and time the second one jcoffey-dev 2026-09-19 22:41:59 -07:00
  • bfda639d73 Cutover: the fork must not live on /opt/stalwart, which is to be removed jcoffey-dev 2026-09-19 22:36:51 -07:00
  • a6c7152c52 cutover-rehearsal: ignore the fixture it writes jcoffey-dev 2026-09-19 22:34:50 -07:00
  • daaa06a5fb Cutover: stopping the old server is what removes the guard, so add one jcoffey-dev 2026-09-19 22:34:45 -07:00
  • 67619f64e9 Cutover: rehearsed, and the Enterprise build can't read the fork's store jcoffey-dev 2026-09-19 22:23:10 -07:00
  • f338ddf57d Specs: point a stock ihasmail at the migrated server afterwards jcoffey-dev 2026-09-19 21:36:10 -07:00
  • 7d468ad22e Specs: a migration tool, with rollback as a path rather than an appendix jcoffey-dev 2026-09-19 21:34:11 -07:00
  • 92aed3df21 Cutover: side by side, with the old install left standing jcoffey-dev 2026-09-19 21:31:50 -07:00
  • 63fe315457 Specs: ufw is in the way of the ACME test, and the rules say so jcoffey-dev 2026-09-19 21:27:32 -07:00
  • 26759a1847 Specs: a draft runbook for the cutover jcoffey-dev 2026-09-19 21:24:25 -07:00
  • f646f2ec3a Compat: all eight pass against a copy of INBUXA's data jcoffey-dev 2026-09-19 21:19:56 -07:00
  • bfd2784819 Compat: the copy's pending tasks aren't this run's to wait for jcoffey-dev 2026-09-19 21:17:21 -07:00
  • 7714bca8d3 run-compat: pass the test server's logging through jcoffey-dev 2026-09-19 21:09:37 -07:00
  • 01c5503a19 Compat: a copy's own listeners aren't ours to bind jcoffey-dev 2026-09-19 20:58:49 -07:00
  • 1da75e986e Compat: run them from a copy, and keep our listeners out of the way jcoffey-dev 2026-09-19 20:21:05 -07:00
  • d407509f59 Compat: what the recording holds, and what two of the tests now prove jcoffey-dev 2026-09-19 20:10:50 -07:00
  • 3d28f6bff2 record-compat: tell reach apart from permission in a refusal jcoffey-dev 2026-09-19 19:52:37 -07:00
  • 045e9f6234 record-compat: a refused section costs its file, not the run jcoffey-dev 2026-09-19 19:21:22 -07:00
  • 7816f38c29 record-compat: check every credential before reading anything jcoffey-dev 2026-09-19 19:10:03 -07:00
  • fd7747ef21 Fork tooling: record what the compat tests compare against jcoffey-dev 2026-09-19 18:42:25 -07:00
  • 2a127d6b9a Specs: the ACME network question is open, not answered jcoffey-dev 2026-09-19 18:10:22 -07:00
  • 261175aae5 Specs: say only what the ACME probes support jcoffey-dev 2026-09-19 18:06:10 -07:00
  • 4336251cea Specs: the ACME failure isn't ufw, and pebble does validate jcoffey-dev 2026-09-19 17:57:52 -07:00
  • 8839078a2b Compat tests: dry-run the harness, and say so when the admin can't log in jcoffey-dev 2026-09-19 17:51:42 -07:00
  • 29d9263071 One edition: the last enterprise gates come out of shared code (SPEC 2.3) jcoffey-dev 2026-09-19 17:44:20 -07:00
  • dac1808bbd Tests: retire pending-rebuild, which nothing has been gated behind for a day jcoffey-dev 2026-09-19 17:28:14 -07:00
  • 08b3210cff Specs: the regression after the ACME fix, 87 passed and 3 failed jcoffey-dev 2026-09-19 17:21:58 -07:00
  • 9f444d2458 Fork tooling: the third-party code upstream carries, listed and checked jcoffey-dev 2026-09-19 16:59:36 -07:00
  • adfa22c817 Specs: the nine ignored suites re-run, and the STORE each one needs jcoffey-dev 2026-09-19 16:54:27 -07:00
  • 309835be1d ACME: post a challenge once, then poll the authorization jcoffey-dev 2026-09-19 16:28:15 -07:00
  • ce12659138 Specs: what a plain regression leaves failing, and why none of it is ours jcoffey-dev 2026-09-19 16:15:09 -07:00
  • e492b7875a Specs: how to run the suites a plain regression doesn't reach jcoffey-dev 2026-09-19 16:14:44 -07:00
  • 02ed679890 Tests: drop an unused import, so the tests crate builds without warnings jcoffey-dev 2026-09-19 16:14:44 -07:00
  • 5cc28784df SCIM: turning a domain's SCIM authority off takes effect at once (SCIM-60) jcoffey-dev 2026-09-19 16:14:38 -07:00
  • 2f1e4bd2c7 Tests: give the fail2ban and task-manager checks room under load jcoffey-dev 2026-09-19 15:38:01 -07:00
  • cee4fd6bc6 Specs: how to run the eight compat tests on a copy of INBUXA's data, and the statuses of tests 10, 11, 17 to 19 jcoffey-dev 2026-09-19 15:11:04 -07:00
  • c0377df942 Per-domain directories: a refused token counts toward the sign-in ban, and tests 10 and 18 (DIR-12, DIR-30) jcoffey-dev 2026-09-19 15:09:52 -07:00
  • 0755fad51e Scale-out storage: IMAP CONDSTORE raises the mark, and the two-node check (ST-7, test 11) jcoffey-dev 2026-09-19 14:59:46 -07:00
  • e913a22b66 Scale-out storage: read replicas on MySQL, tested (ST-10, ST-15, tests 17 to 19) jcoffey-dev 2026-09-19 14:53:31 -07:00
  • 216bb5b711 Scale-out storage: implementation status of read replicas (ST-5 to ST-15) jcoffey-dev 2026-09-19 14:21:54 -07:00
  • 1518c69033 Scale-out storage: PostgreSQL and MySQL read replicas (ST-5 to ST-15) jcoffey-dev 2026-09-19 14:05:59 -07:00
  • a635b490ec Per-domain directories: implementation status and the compat check (DIR-1 to DIR-32, test 20) jcoffey-dev 2026-09-19 10:51:41 -07:00
  • 0237d6fa92 Per-domain directories: the OIDC directory tests, rebuilt from the spec; SCIM's OIDC test runs (DIR-7, DIR-10, DIR-14, DIR-15, DIR-18, DIR-26, DIR-29, SCIM test 5) jcoffey-dev 2026-09-19 10:45:37 -07:00
  • 3158277b04 Per-domain directories: changes apply on the next request, and one broken directory doesn't block reloads (DIR-17, DIR-21) jcoffey-dev 2026-09-19 10:42:33 -07:00