Lewis
40d259f227
plc: always keep signing key in rotationKeys
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-26 18:50:03 +03:00
Lewis and Tangled
39a2e40b35
invite codes: dedup consumption, iron out kinks
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-26 13:28:49 +03:00
isabel and Tangled
05ab0b7423
nix: use systemd-nspawn tests
...
this speeds tests up like 10 fold; had to swap from sudo to runuser
since sudo wanted passwords
2026-06-22 20:31:06 +03:00
Lewis and Tangled
221b32d66f
build: smaller faster prod container
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-19 09:16:30 +03:00
Lewis
1b489776c5
server healthcheck in-bin
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-18 09:34:36 +03:00
nelind
2ca15fe7a0
fix(nix): disable the nixpkgs tranquil module when the repo module is used
2026-06-17 11:53:58 +02:00
ave and Tangled
48ae1e8b7b
Move Dockerfile(s) from musl to glibc
...
Musl is tier 2 on rust support, and glibc is tier 1.
https://doc.rust-lang.org/nightly/rustc/platform-support.html
Generally, glibc rust is reported to be more performant. Could vary due
to any other reason, but in my testing, builds were up to 50% faster
(for docker cross-compilation amd64->arm64 at least).
2026-06-16 14:31:32 +03:00
ave and Tangled
6838976969
fix(cors): Allow User-Agent header in CORS
2026-06-15 13:27:31 +03:00
Jim Severino and Tangled
3045ee25c0
Fix(docs): Add correctly TOML-formatted values for first string and array examples
2026-06-15 11:04:59 +03:00
Jim Severino and Tangled
04a90b1563
Fix(docs): Change symlinks to SSL cert files from absolute to relative
2026-06-15 11:04:59 +03:00
Lewis and Tangled
e13ba7f4c7
ripple: anti-entropy gossip sync
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-14 18:46:41 +03:00
Lewis and Tangled
a3f729c3cd
ripple: fail-closed startup, bind policy
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-14 18:46:41 +03:00
Lewis and Tangled
637b817a33
ripple: cluster-key oomf authentication
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-14 18:46:41 +03:00
Lewis and Tangled
562f970bc3
ripple: transport backpressure & connect coalesing
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-14 18:46:41 +03:00
Lewis and Tangled
06fd6a1ce9
ripple: transport from tcp to quic
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-14 18:46:41 +03:00
nelind and Tangled
3b07cdfb24
fix(api): dont verify signature or DID during importRepo
2026-06-13 23:33:57 +03:00
nelind
4a8826b7a1
fix(docs): i forgor auto links need absolute URIs ... lets use normal links instead
2026-06-12 01:00:24 +02:00
nelind
80afd764d3
fix(nix): provide a jemalloc build in the dev shell
2026-06-10 19:56:40 +02:00
Lewis and Tangled
5bbe2146ff
server: serve xrpc over http/3
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-10 13:18:49 +03:00
Lewis and Tangled
b009ccdaf2
repo: the pg side of MST structural repair
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-08 16:58:51 +03:00
nelind
39f74b5adf
feat(nix): pratice what i preach. expose lib.mkPackages
2026-06-07 22:14:27 +02:00
ave and Tangled
a231d7da29
feat(auth): accept totp/backup codes in legacy login createSession
2026-06-06 10:42:24 +03:00
ave and Tangled
63d84d38fb
refactor(auth): unify short-code generation onto util::generate_token_code
...
Collapse the three ad-hoc short-code generators into one canonical generator
plus a shared normalizer:
- util::generate_token_code now emits the uppercase base32 XXXXX-XXXXX display
form; new util::normalize_token_code canonicalizes user input (uppercase,
strip hyphen/whitespace).
- email_token and legacy_2fa now generate via util, store the normalized form,
and compare normalized input. Their private generate_short_token/generate_code
(and BASE32_CHARS/CODE_LENGTH) are removed.
- PLC (request/sign) and password reset inline util::generate_token_code,
persist the normalized form, email the display form, and normalize input
before lookup. The generate_plc_token/generate_reset_code wrappers are removed.
Behavior changes: legacy login-2FA codes go from 8-digit numeric to XXXXX-XXXXX;
PLC and password-reset codes go from lowercase to uppercase. All four code types
are now accepted case-/hyphen-insensitively. OAuth web-login 2FA, account
deletion, and the long verification_token blobs are intentionally untouched.
Tests: add util normalize tests + email_token/legacy_2fa case/hyphen tests;
update integration tests to expect the canonical stored form and the new
emailed format.
2026-06-06 09:36:08 +03:00
ave and Tangled
fe9b88141c
chore(auth): align at+jwt/refresh+jwt expiry with reference PDS
2026-06-06 01:43:46 +03:00
ave and Tangled
72f5dce32b
add ave.zone to contributors list in README
2026-06-06 01:42:54 +03:00
nelind
cd7e01100e
chore(auth): also mention that atproto spec requiers typ be "JWT" for inter-service tokens
2026-06-05 12:49:25 +02:00
ave and Tangled
7c248be153
fix(auth): emit uppercase "JWT" typ in service-auth header
...
RFC 7519 §5.1 recommends the uppercase "JWT" typ for compatibility with
legacy implementations, and it matches the reference @atproto/pds. Parsing
already lowercases, so existing lowercase "jwt" tokens still verify.
2026-06-05 13:34:43 +03:00
ave and Tangled
91999819c6
fix(proxy): limit audience of getFeed service-auth to the feed generator
v0.6.5
2026-06-04 22:39:14 +03:00
nelind and Tangled
ffce1d5d05
feat(docs): add some general PDS debugging documentation
2026-06-04 13:45:08 +03:00
Tyler and Tangled
8e6ace2fe2
fix: derive lexicon DNS authority from all-but-last NSID segment
...
Permission-set expansion resolved the lexicon's DNS authority using a
fixed `parts[..2]`, which only works for three-segment NSIDs. For a
four-segment NSID such as community.lexicon.bookmarks.authManageBookmarks
this dropped a segment and queried _lexicon.lexicon.community instead of
_lexicon.bookmarks.lexicon.community, failing with "DNS resolution
failed: ... no record found".
The authority is every NSID segment except the last (the name),
reversed. Use parts[..parts.len() - 1] to match the spec and the
existing extract_namespace_authority helper, and update the DNS
authority test with three/four-segment and bookmarks regression cases.
2026-06-04 01:28:13 +03:00
Lewis and Tangled
3018a20843
fix(plc): allow arbitrary services to sign
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-03 11:23:51 +03:00
Lewis and Tangled
37fc06fb39
fix(store): unblock eventlog sync&freeze when writer dies
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-02 17:29:21 +03:00
Lewis and Tangled
728a8c4d3b
test(store): cross-store, firehose, read-validation coverage w/ faults
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-02 17:29:21 +03:00
Lewis and Tangled
3d49e99cc3
test(store): generic consistency checker, gauntlet fault/read
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-02 17:29:21 +03:00
Lewis and Tangled
7e823673ca
test(store): untested metastore, eventlog, & archival stuff
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-02 17:29:21 +03:00
Lewis
320933598c
fix(auth): error num 401 for oauth
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-01 19:38:45 +03:00
Lewis
500dc2e0e6
test(store): gauntlet sweep configs for time-travel & fsync repro
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-01 19:01:04 +03:00
Lewis
a220611a8b
test(store): D gauntlet faults, crash-loss oracley, recoverable scenarios
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-01 19:01:04 +03:00
Lewis
ca7a4b4b73
fix(store): recover eventlog lastseq from tail not sidecar
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-01 19:01:04 +03:00
Lewis
8ff02610e4
feat(store): inline-commit mode, committed-extent recovery, failsafe verify&rollback
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-06-01 19:01:04 +03:00
Lewis and Tangled
22f82489d5
test(pds): e2e & durability coverage for MST self-heal
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 21:11:36 +03:00
Lewis and Tangled
cee483e358
feat(pds): selfhealing repo writing by detecting corruption & retrying
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 21:11:36 +03:00
Lewis and Tangled
7f8e858137
test(store): gauntlet MST-repairable & misdirected-write scenario
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 21:11:36 +03:00
Lewis and Tangled
44d73dac58
feat(store): rebuild & rewrite missing/corrupt MST blocks
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 21:11:36 +03:00
Lewis and Tangled
b8cae15c12
feat(store): detect foreign&corrupt blocks on read & preserve blocks thru recovery
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 21:11:36 +03:00
Lewis and Tangled
9b58961bba
feat(repo): missing $type? invent one
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 13:02:11 +03:00
Lewis
31ee12ecd3
fix(store): torn hint-file tail should be recoverable on reopen
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-31 11:37:21 +03:00
nelind
ea106d5246
chore(nix): update frontend pnpm hash
2026-05-31 00:51:27 +02:00
Lewis
4015217a2e
feat(store): Clock trait for DST
...
Lewis: May this revision serve well! <lu5a@proton.me >
2026-05-30 23:46:22 +03:00
Lewis
7e4c9e1dab
chore: bump to 0.6.4
...
Lewis: May this revision serve well! <lu5a@proton.me >
v0.6.4
2026-05-30 21:23:02 +03:00