Commit Graph

  • f72e3bb85c Per-domain directories: each domain signs in against its own directory (DIR-1 to DIR-15) jcoffey-dev 2026-09-19 10:32:57 -07:00
  • b080fa0736 Scale-out storage: implementation status of the sharded stores (ST-1 to ST-4, ST-16 to ST-30) jcoffey-dev 2026-09-19 10:21:30 -07:00
  • fdfa2bc259 SCIM: box each bulk operation's dispatch, so the crate builds with the redis feature (SCIM-51) jcoffey-dev 2026-09-19 10:15:39 -07:00
  • e5e326de6b Scale-out storage: sharded blob, in-memory and lookup stores; configured read replicas reported (ST-1 to ST-4, ST-16 to ST-30) jcoffey-dev 2026-09-19 10:11:30 -07:00
  • e7efa91cbc Scale-out storage decision: sharded stores first, read-replica routing after per-domain directories, with configured replicas reported at startup meanwhile (ST-2) jcoffey-dev 2026-09-19 10:01:34 -07:00
  • 00b2eb6f4b SCIM: implementation status (SCIM-1 to SCIM-61) jcoffey-dev 2026-09-19 09:59:53 -07:00
  • 3df72b355a SCIM tests: the authenticated rate limit, and the compat check on INBUXA's data (SCIM-14, test 31) jcoffey-dev 2026-09-19 09:53:36 -07:00
  • a18e209015 SCIM: publish meta in /Schemas, and run the conformance container on the host network (SCIM-6, SCIM-30) jcoffey-dev 2026-09-19 09:52:11 -07:00
  • 3ffaee0695 SCIM: a suspended account's open sessions end, and no credential it holds still works (SCIM-52) jcoffey-dev 2026-09-19 09:42:03 -07:00
  • 940b42f3b4 SCIM: just-in-time directory sync is read-only on domains open to SCIM (SCIM-58 to SCIM-60) jcoffey-dev 2026-09-19 09:38:00 -07:00
  • 0ca26070d7 SCIM: users, groups, queries, PATCH, Bulk and cursors at /scim/v2, over x:Account (SCIM-1 to SCIM-57) jcoffey-dev 2026-09-19 09:35:23 -07:00
  • 776d18d06e SCIM: the protocol crate: URNs, the error document, and the filter and PATCH path grammars (SCIM-42, SCIM-45) jcoffey-dev 2026-09-19 09:06:50 -07:00
  • 2d3f8251c5 SCIM decision: a groups value equal to the current membership in a POST or PUT body is accepted and ignored, since Okta sends groups: [] on create (SCIM-28) jcoffey-dev 2026-09-19 09:04:25 -07:00
  • 4b389b6b4e SCIM decisions: build before per-domain directories, with the OIDC authority test deferred; build to the spec without the profile drafts or vendor docs (SCIM-61, open questions 12 and 13) jcoffey-dev 2026-09-19 08:56:53 -07:00
  • f107443b29 Monitoring: implementation status, and the compat test for INBUXA's data (test 26) jcoffey-dev 2026-09-19 08:54:21 -07:00
  • d9b36a3806 Undelete tests: restore the default upload settings on entry (UD-1) jcoffey-dev 2026-09-19 08:54:21 -07:00
  • 2edb552b6b Monitoring: the fork's acceptance suite (MON-1 to MON-31) jcoffey-dev 2026-09-19 08:43:36 -07:00
  • 49e3733428 Monitoring: alerts over metrics, by event and by email (MON-25 to MON-30) jcoffey-dev 2026-09-19 08:39:17 -07:00
  • 7b6959155b Monitoring: live tracing and live metrics streams, and their tokens (MON-20 to MON-24) jcoffey-dev 2026-09-19 08:34:51 -07:00
  • 143a10fcf0 Monitoring decision: a live token may be reused within its 60 seconds, since INBUXA Admin reconnects with the same token (MON-23) jcoffey-dev 2026-09-19 08:34:03 -07:00
  • fc2d4f237f Monitoring: trace history, trace search, and x:Trace over the stored traces (MON-10 to MON-17, MON-32) jcoffey-dev 2026-09-19 08:31:04 -07:00
  • 9f7035588f Monitoring: metric history, one edition of metrics, and x:Metric over the stored samples (MON-4 to MON-7, MON-9, MON-17, MON-39) jcoffey-dev 2026-09-19 08:21:45 -07:00
  • 715f219528 Monitoring: correct the storage decision; history uses the AGPL telemetry key classes with the registry's encoding, and INBUXA's old history can't be read jcoffey-dev 2026-09-19 08:12:11 -07:00
  • 3ea242f7fb Monitoring decisions before implementation: live streams and stored histograms match INBUXA Admin, and history is stored as x:Trace and x:Metric registry items (MON-4, MON-20, MON-22, MON-23) jcoffey-dev 2026-09-19 08:10:27 -07:00
  • 88090b3ea6 AI spam classification: calibration results for commercially usable models; Qwen3 4B Instruct 2507 recommended, 4 vCPU minimum jcoffey-dev 2026-09-19 07:42:12 -07:00
  • 2e6c234152 AI spam classification: default to 2 KiB of text and a +2.0 cap on the model's tag, as calibrated for low-end CPU-only instances jcoffey-dev 2026-09-19 06:21:08 -07:00
  • 554cc4fcd2 AI spam classification decisions from calibration: maxContentBytes 2048 and spamMaxAdded 2.0 by default, for low-end CPU-only instances jcoffey-dev 2026-09-19 06:19:38 -07:00
  • 9490fc4677 AI spam classification: the model's opinion as one bounded spam signal, and the llm_prompt Sieve function (AI-1 to AI-28) jcoffey-dev 2026-09-19 00:41:00 -07:00
  • cba48cf03b AI spam classification decision before implementation: the limits singleton is inbuxa:AiLimits under urn:inbuxa:jmap (open question 10) jcoffey-dev 2026-09-18 23:50:33 -07:00
  • e844878ba7 Tests: stabilize the OIDC suite with five times upstream's token lifetimes jcoffey-dev 2026-09-18 22:49:27 -07:00
  • 725fbe7ec7 Tests: drop an unused undelete test helper jcoffey-dev 2026-09-18 22:27:19 -07:00
  • 0bc6b03dcd Branding and templates: per-domain, tenant and server logos, /logo, operator calendar email templates and RSVP page (BT-1 to BT-26) jcoffey-dev 2026-09-18 22:27:19 -07:00
  • ecbdfd533b Undelete: deleted accounts are kept for their period, hold their addresses, and are restored or destroyed through inbuxa:DeletedAccount (UD-15 to UD-17a) jcoffey-dev 2026-09-18 21:35:48 -07:00
  • 0a2c29e8fd Undelete decision before implementation: a kept account's shares are suspended both ways and reinstated on restore (UD-17a) jcoffey-dev 2026-09-18 21:19:09 -07:00
  • 5b963b06c6 Undelete: deleted files, calendar events, contacts and Sieve scripts are kept and restored where they were (UD-1, UD-8 to UD-11) jcoffey-dev 2026-09-18 21:07:27 -07:00
  • 4a631bd0b5 Undelete: deleted email is kept, restored where it was, and managed over x:ArchivedItem (UD-1 to UD-14 for email) jcoffey-dev 2026-09-18 20:05:56 -07:00
  • a1ce14b76b Undelete decisions before implementation: restore data, kept accounts, the restore API (UD-4, UD-15a, UD-17) jcoffey-dev 2026-09-18 19:49:34 -07:00
  • ec4d668bc4 Multi-tenancy: impersonate has no effect inside a tenant (MT-1, MT-15) jcoffey-dev 2026-09-18 18:51:42 -07:00
  • ac2232c98d Multi-tenancy decision before implementation: impersonate has no effect inside a tenant (MT-1, MT-15) jcoffey-dev 2026-09-18 18:49:10 -07:00
  • 4a9aa9c548 Masked email: rewrite to the owner at RCPT TO, create responses carry the address, admins query all masks (ME-4, ME-9, ME-13, ME-19) jcoffey-dev 2026-09-18 18:29:19 -07:00
  • f58aea000f Cargo.lock: inbuxa-features for the tests crate (masked email) jcoffey-dev 2026-09-18 16:56:29 -07:00
  • 31b8ca8ed5 Masked email built: implementation status, deferral and known limits (ME-1 to ME-19) jcoffey-dev 2026-09-18 16:40:14 -07:00
  • d319f013ec Masked email acceptance test 12 against a copy of INBUXA's data (compat) jcoffey-dev 2026-09-18 16:37:53 -07:00
  • f07c00fffb Masked email acceptance tests 1 to 11, with ME-9, ME-10, ME-11 and /changes (ME-1 to ME-19) jcoffey-dev 2026-09-18 16:37:12 -07:00
  • d04aafd3d7 Masked email: Fastmail's Masked Email API, MaskedEmail/get and /set (ME-1, ME-7a, ME-16) jcoffey-dev 2026-09-18 16:29:47 -07:00
  • 7080028437 Masked email: x:MaskedEmail/changes and a state in /get (fork additions) jcoffey-dev 2026-09-18 16:25:54 -07:00
  • 53ccc8f4de Masked email: owners send as their live masks, over JMAP identities and SMTP submission (ME-11) jcoffey-dev 2026-09-18 16:23:49 -07:00
  • 60d1d8b84a Masked email: delivery through masks (ME-4, ME-5, ME-6, ME-7, ME-9, ME-10) jcoffey-dev 2026-09-18 16:22:50 -07:00
  • 3b052a57da Masked email: upstream's x:MaskedEmail API (ME-2, ME-3, ME-6a, ME-7a, ME-12 to ME-19) jcoffey-dev 2026-09-18 16:20:39 -07:00
  • aaca8fe537 Masked email: the fork's subspace and the masked_email module (ME-1, ME-2, ME-3, ME-6a, ME-7, ME-8, ME-13, ME-14, ME-15) jcoffey-dev 2026-09-18 16:17:47 -07:00
  • 7ef2cdc273 Masked email: the fork's subspace is _, not X, which SQL backends fold into upstream's x jcoffey-dev 2026-09-18 16:10:50 -07:00
  • edfb357cb1 Masked email decisions before implementation: storage, start state, rate config, who administers (ME-7a, ME-15, ME-19) jcoffey-dev 2026-09-18 16:09:57 -07:00
  • e109cf86ae The session test expects urn:inbuxa:jmap (MT-22, contract C-1) jcoffey-dev 2026-09-18 16:00:25 -07:00
  • 2e43f5fc0d Multi-tenancy built: implementation status, deferrals and known limits (MT-1 to MT-23) jcoffey-dev 2026-09-18 15:38:29 -07:00
  • dd584dc9ce Multi-tenancy acceptance tests 1 to 14, and test 15 against a copy of INBUXA's data (MT-1 to MT-23) jcoffey-dev 2026-09-18 15:34:21 -07:00
  • 11d780b3d3 Copyright of the fork's own files is Coffey Labs's jcoffey-dev 2026-09-18 15:30:27 -07:00
  • 05ee6ac2be Multi-tenancy: a new domain's generated DKIM keys count against maxDkimKeys (MT-17) jcoffey-dev 2026-09-18 15:28:59 -07:00
  • 2cbecac415 Multi-tenancy decision before implementation: generated DKIM keys count against maxDkimKeys (MT-17) jcoffey-dev 2026-09-18 15:28:24 -07:00
  • bcf4a49325 Multi-tenancy: sharing grants stay within the owner's tenant (MT-1, MT-3) jcoffey-dev 2026-09-18 15:20:04 -07:00
  • cea8b1593b Multi-tenancy: the applicable logo in the JMAP session (MT-22, MT-23) jcoffey-dev 2026-09-18 15:20:04 -07:00
  • 406aa05dc0 Multi-tenancy: recalculateQuota and resetTenantQuotas (MT-21) jcoffey-dev 2026-09-18 15:20:04 -07:00
  • 3896f720a1 Multi-tenancy: queue visibility (MT-5) jcoffey-dev 2026-09-18 15:20:04 -07:00
  • 5a22e79992 Multi-tenancy: registry reach, links, membership and count limits over JMAP (MT-2, MT-3, MT-6, MT-7, MT-8, MT-11, MT-12, MT-17, MT-18) jcoffey-dev 2026-09-18 15:20:04 -07:00
  • ad0db8b2b0 Multi-tenancy: the inbuxa-features crate, the permission ceiling and tenant disk quota (MT-12, MT-13, MT-14, MT-15, MT-16, MT-19, MT-20) jcoffey-dev 2026-09-18 15:19:58 -07:00
  • b6b345a129 Multi-tenancy decision before implementation: sharing grants across tenants (MT-3) jcoffey-dev 2026-09-18 15:17:03 -07:00
  • d0d4ac4317 Open decisions: the Enterprise License text stays until the headers are cleaned up jcoffey-dev 2026-09-18 14:52:45 -07:00
  • a1254cd3c4 Multi-tenancy decision before implementation: what moves with a domain (MT-8, MT-17) jcoffey-dev 2026-09-18 14:50:57 -07:00
  • edc6a8ccbd Multi-tenancy decisions before implementation: MT-3, MT-7, MT-12, MT-19a, MT-22 jcoffey-dev 2026-09-18 14:48:22 -07:00
  • cf59d5183a Branding: INBUXA's last two logo values removed jcoffey-dev 2026-09-18 14:45:38 -07:00
  • 8c1879e853 Cross-origin requests only from the front ends' origins (contract C-14) jcoffey-dev 2026-09-18 13:44:55 -07:00
  • a45e0ef8b1 Feature specs 4-9: observations from INBUXA's live server jcoffey-dev 2026-09-18 13:42:00 -07:00
  • cd7c1a6d4c Feature specs 4-9: branding and templates, AI spam classification, monitoring, SCIM, scale-out storage, per-domain directories jcoffey-dev 2026-09-18 13:18:39 -07:00
  • 31e64f5a4d Rebrand the packaged schema: defaults, labels and descriptions; the Enterprise page becomes Branding; log prefix inbuxa.log jcoffey-dev 2026-09-18 13:15:17 -07:00
  • 05d220ae4f No web interface on the mail host: first boot installs and downloads none (SPEC §5.3) jcoffey-dev 2026-09-18 13:10:32 -07:00
  • c2be7e2956 Multi-tenancy implementation hand-off brief jcoffey-dev 2026-09-18 13:06:47 -07:00
  • d6fc4600cd OAuth: registration required by default; first-party clients registered on every start (contract C-5, C-6) jcoffey-dev 2026-09-18 13:04:20 -07:00
  • f82f15d863 Contract: note the browser sign-in check after the OAuth fix jcoffey-dev 2026-09-18 12:53:59 -07:00
  • ad3322183a Contract: record the OAuth registration fix applied on production jcoffey-dev 2026-09-18 12:40:33 -07:00
  • 2e2eb76301 Contract: C-7 matches C-5 (third-party OAuth apps are admin-registered unless open registration is chosen) jcoffey-dev 2026-09-18 12:31:18 -07:00
  • 559bb3d1a6 Contract: INBUXA production OAuth findings; C-5 also turns anonymous client registration off jcoffey-dev 2026-09-18 12:31:07 -07:00
  • 0ed540f43a Contract spec: inbuxa-server, ihasmail-inbuxa and INBUXA Admin jcoffey-dev 2026-09-18 12:19:47 -07:00
  • b2de803680 Spec: public ihasmail stays Stalwart-facing; INBUXA work goes to an INBUXA fork of ihasmail jcoffey-dev 2026-09-18 12:09:12 -07:00
  • faedf7a1da Versioning: INBUXA's own dated version, with the Stalwart base shown jcoffey-dev 2026-09-18 12:08:41 -07:00
  • bde11d54c3 Spec: two web front ends, ihasmail and INBUXA Admin (a fork of Stalwart WebUI) jcoffey-dev 2026-09-18 12:01:36 -07:00
  • c9c761fab5 Quick fixes from the first boot: recovery admin, upsell, warnings jcoffey-dev 2026-09-18 11:36:44 -07:00
  • d3f0b36dd2 Packaging: the binary and package are inbuxa, INBUXA_* settings with STALWART_* fallback jcoffey-dev 2026-09-18 11:09:22 -07:00
  • 5ce033e10c Support URL: https://inbuxa.org in the IMAP ID response and README jcoffey-dev 2026-09-18 11:03:30 -07:00
  • 189f688768 Sign-in page: show the logo when the page is opened without redirect_uri jcoffey-dev 2026-09-18 10:58:39 -07:00
  • 68523374d3 Strip report for the v0.16.22 re-import jcoffey-dev 2026-09-18 10:52:56 -07:00
  • 8ca487ed36 Merge upstream v0.16.22 re-import (build-script feature flags) jcoffey-dev 2026-09-18 10:52:56 -07:00
  • 083474f67a Re-import upstream v0.16.22, stripped (strip tool update) jcoffey-dev 2026-09-18 10:52:56 -07:00
  • 1c6640e4b3 Strip tooling: remove the enterprise feature from build scripts' --features lists jcoffey-dev 2026-09-18 10:52:34 -07:00
  • 89665decfa Rebrand to INBUXA: product name, protocol greetings, sign-in page, calendar templates, logos, README jcoffey-dev 2026-09-18 10:52:34 -07:00
  • 6e73d284d8 First boot of the stripped v0.16.22: record results and what to fix jcoffey-dev 2026-09-18 10:33:42 -07:00
  • 0db5ab9155 Gate integration tests of unrebuilt Enterprise features behind pending-rebuild; record what v0.16.22 proved jcoffey-dev 2026-09-18 10:29:20 -07:00
  • 0c6b3dffc0 Strip report for v0.16.22; document the layout and the upstream workflows jcoffey-dev 2026-09-18 10:22:19 -07:00
  • ace3064fbb Merge upstream v0.16.22 (stripped) into main jcoffey-dev 2026-09-18 10:22:18 -07:00
  • 7dae9b29fd Import upstream v0.16.22, stripped jcoffey-dev 2026-09-18 10:21:56 -07:00
  • dedcc0fe94 Move the specs under docs/spec, ahead of the source import jcoffey-dev 2026-09-18 10:21:43 -07:00
  • 826e8bc97f Strip tooling: remove dangling mod declarations left by ossify.py jcoffey-dev 2026-09-18 10:20:18 -07:00