on f880fd2 help sign in
f880fd2Simplify code and improve type safety: remove no-op fetch matches, merge checks, simplify boolean logic, narrow PollEventTypeiko 573acd2Improve client type safety: move Identity to Crypto, introduce PollEvent, eliminate tuple passing and fragile key slicingiko 06f6fccSimplify code and improve type safety: introduce AuthResult/PruneResult types, replace helper functions with cleaner patternsiko 82cb0cdSimplify server code and improve type safety: introduce named types for persisted state, recursive genToken, remove dead code; add client persistence layeriko 064c373Introduce derived relations &pendingAcks and &knownMessageKeys for cleaner federation and dedup logiciko 4e71ddeSimplify code and improve type safety: embed Session in ConnState, fix message ID consistency, replace mutable arrays with foldiko 9520409Simplify code and improve type safety: extract mergeByKey helper, eliminate post-hoc status corrections, and inline redundant validAck aliasiko de34c51Introduce Identity and Session types to reduce duplication and improve type safety in clientiko 3964fd8Extract helpers (firstOf, sessionPubkey, forkBroadcastOffline, removeForward) and add MessageStatus type for improved clarity and type safetyiko 6f5e820Extract helpers and refine type safety in server handlersiko 82fcdc7Extract helper functions to reduce code duplication in state management and gossip handlingiko 77e2bb1Simplify code and improve type safety with helper functions and refined typesiko 4c8ee60Extract helpers and refine types to reduce code duplication and improve type safetyiko c040476Simplify code and improve type safety with helper functions and refined typesiko 9d5373aFix timeout handling with custom task awaiter and standardize timestamps to millisecondsiko ac8c87fBatch federation ack message IDs to respect maxMessageIds limitiko d7ac423Move validation into refined types to simplify handlersiko b018bb7Fix poll request: change from GET with query params to POST with JSON body, fix timeout from 30ms to 30000msiko a2e3a5eFix gossip event suppression: restrict offline suppression to authoritative serveriko cba8c2eFix formatting in sendAcksAndClean (move closing paren to new line)iko 55073b2Fix 4 bugs: remove dead code, handle long strings in safeCompare, parallelize federation I/O, prevent overlapping prune cyclesiko 40ea04cFix 3 bugs: ack cleanup should match toKey, add warning for lost acks under capacity, restrict offline gossip to authoritative server onlyiko 478c21aFix 3 bugs: block bare local/internal in SSRF checks, correct sendBatchedGossip effect type, cap forwards storageiko e5192b2Fix 4 bugs: prevent forward leaks when federation disabled, bind fetch results, continue gossip batches on error, fork network I/O to avoid blocking responsesiko 93a36beHandle federation fetch errors and simplify presence checking logiciko 87be4d9Fix traverse bug in retryPendingForwards and block numeric IP addresses in SSRF checksiko 3d339cbFix three SSRF bypasses in isBadServerName IP prefix checksiko 2cefad7Fix sendToEach missing recursion and safeCompareLoop timing leakiko 2f6cb27Fix three security bugs: safeCompare, VerifyAuth gossip filtering, and lookupSession collision handlingiko 35cfa8dFix session token timing side channel and ackedIds capacity violation in server.knotiko 46543dbAdd missing `in` keywords to let-bindings and parenthesize negative literals in server.knotiko a263102Fix four security and correctness bugs in server.knot: safeCompareLoop constant-time comparison for strings >256 chars, server name normalization before length validation DoS, backgroundPrune recursion stack growth, and cloud metadata/mDNS hostname SSRFiko 013d6d4Fix five security and correctness bugs in server.knot: AckMessages eviction gated on auth, safeCompareLoop constant-time for secrets >256 chars, broadcastOfflineGossip TTL floor for short-lived entries, verifyFederationAuth constant-time when disabled, evictOldestAckedIds/pollOnce union dedup handlingiko 918fbd2Fix four bugs: AckMessages federation ack deduplication, VerifyAuth challenge clearing, session cap global eviction, and offline timestamp clampingiko 05d753cFix six bugs: sendBatchedGossip per-server batching, broadcastOfflineGossip timestamps, ReqChallenge global eviction, LookupPresence scan efficiency, ForwardMessage auth checks, AckMessages reinsertioniko e8a6a25Fix five bugs: evictOldestAckedIds heap dedup tracking, sendBatchedGossip batch/rest split, AckMessages cascade eviction, ReqChallenge expired challenge counting, LookupPresence presence entry fallthroughiko be521ddFix three bugs: safeCompare constant-time comparison, forward entry cleanup on success, and acked ID eviction with reinsertioniko e01d161Fix five security and correctness bugs: safeCompare timing leak for secrets >256 chars, retryPendingForwards success cleanup, AckMessages eviction deduplication and capacity capping, and RecvGossip offline timestamp tie-breakingiko fa38fa7Fix four bugs: SendMessage mailbox full, evicted acks retry, RecvGossip trust check expiryiko adeccc3Fix four correctness and security bugs: lost federation acks on eviction, safeCompare for strings >256 chars, ForwardMessage duplicate check during pruning rate-limiting, and verifyMaintenanceAuth timing side-channeliko e59b702Fix five security and correctness bugs: poll cursor re-delivery, ackedIds eviction duplicate delivery, backgroundPrune missing federation retry, safeCompare timing leak, and verifyMaintenanceAuth timing side-channeliko 5a23463Fix three bugs: duplicate delivery on failed acks, long-poll deadline hang, and thundering herdiko 8815b21Fix SSRF via port-only hostnames, ackedIds batch eviction, and remove dead codeiko 9a8af83Fix pruning timer, stale gossip timestamp in long poll, and federation ack retryiko d7f8914Fix 5 security and correctness bugs: gossip re-propagation, long polling, offline event filtering, challenge replay, and silent ID dropsiko af04984Fix messageMaxAge, messageIds DoS, maintenance auth timing leak, hexDigit overflow, and per-request prune overheadiko e987c00Fix ackedIds unbounded growth, premature forward cleanup, and CGNAT hostname false positivesiko b157c1cFix serverHost normalization mismatch, forward retry data loss, safeCompare timing leak, and SSRF gapsiko 574bd2fFix leading-dot SSRF bypass, duplicate delivery after ack, and unclamped gossip TTLiko 3b2ae7bStop deleting messages on FederationAck to prevent message lossiko