justme
70fc033789
tests: bring the slow mesh and fixed-rate cases in line with one line per pair and adaptive probing
...
The mesh test expects the single line of a pair, dialed by the smaller id. Tests that send at a fixed rate pin adaptive to false, so the admission limit follows that rate.
2026-10-22 05:39:16 +08:00
justme
5822285a88
fleet: require a minimum version of the peer at the handshake [CI]
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
ci/woodpecker/push/dev-backend-image Pipeline was successful
MoShiro__MinAgentVersion makes the backend refuse agents below it at hello (fleet_version_required); fleet.min_server_version or MOSHIRO_MIN_SERVER_VERSION makes the agent drop a backend below it. Either side waits five seconds and shakes hands again, because the other one may be updating.
2026-10-22 05:28:29 +08:00
justme
fb3a9c260f
fleet: send log counters in heartbeats and pull the text on demand
...
Heartbeats carry per-level counts, the most frequent log types (a stable hash of the message) and the newest id, no text. The node keeps its last 2048 lines; moshiro.logs.fetch lets the backend pull them. The log page pulls when it is open, and the backend pulls warnings and errors once a minute after a node reports an error.
2026-10-22 05:28:29 +08:00
justme
4c31a4a79e
agent: keep backing off on lines that stay down
...
The control layer keeps doubling after the first minute up to ten minutes, and the QUIC redial doubles after twelve short attempts up to five minutes, instead of retrying every minute or every five seconds forever.
2026-10-22 05:28:29 +08:00
justme
e0376b5e33
measurement: adapt the echo probe rate to loss and RTT, and weight samples by the time they stand for
...
udp_echo and tcp_echo run at the lowest rate that still proves the loss bound and keeps the RTT p99 confidence interval within tolerance, go to the maximum when the line loses packets or its RTT rises, and back off exponentially when it is unreachable. Every echo row carries a weight (the time it stands for, in grid intervals) and the analysis ops accumulate loss and RTT by it, so p50/p95/p99 and loss stay time-averaged when the rate changes. State changes are logged for audit.
2026-10-22 05:28:28 +08:00
justme
57acecdb86
web: show how long a line has been out of contact
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/e2e Pipeline failed
The Backend now keeps the time since a link's control layer was last up, because retries move the control state in and out of backoff and its own timestamp keeps resetting. The overview exposes it as control_down_since and the card shows it next to the lost-contact notice.
2026-10-21 17:16:09 +08:00
justme
7fe9775f97
web: reset links to the default mode, and keep CN agents dial-only by default [CI]
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
ci/woodpecker/push/dev-backend-image Pipeline was successful
POST /api/admin/links/reset clears every manual link setting and turns automatic linking on. In the default rules a listening node in CN ranks below a listening node elsewhere, so the CN side dials; the links are pushed again when a node's country is first resolved or changes.
2026-10-21 16:35:58 +08:00
justme
9f5a6cf77a
analysis: split TCP retransmissions into forward and return, and show both on the line cards
...
tcp.retrans.up counts retransmitted segments sent by the dialing side, tcp.retrans.down those sent by the listening side. The cards show RTT as a round trip (⇄) with forward (→) and return (←) rows for QUIC loss and TCP retransmission.
2026-10-21 16:26:34 +08:00
justme
48ffa56285
web: one line per node pair and RTT/loss on the link board
...
A pair of nodes now has a single line, dialed by the non-listening side or by the smaller id when both listen, so RTT is measured once. The board draws it undirected and colours it by RTT and loss; a manual setting applies to the pair.
2026-10-21 16:20:38 +08:00
justme
15318de919
Restore packaging/openwrt and the Agent updater paths swept into the previous commit [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-21 15:37:57 +08:00
justme
fae05ff303
Rebuild dev images from a clean host [CI]
ci/woodpecker/push/verify Pipeline failed
ci/woodpecker/push/dev-image Pipeline failed
ci/woodpecker/push/web-build Pipeline failed
2026-10-21 15:36:32 +08:00
justme
a6f9759238
ci: build musl only for arm64 and reuse toolchain cache [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline failed
2026-10-21 12:41:58 +08:00
justme
490b008a57
scripts: unify Linux native builds and retain restore caches [CI]
...
ci/woodpecker/push/dev-image Pipeline is running
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
Build musl and glibc for amd64 and arm64 through one native package path. Reuse musl outputs for OCI images and OpenWrt installers, and export binaries inside a rootless unshare session.
Restore the executable dependency graph into a shared persistent NuGet cache, build managed dependencies once, and run isolated native publishes in parallel.
Clean temporary outputs and expired image layers under store locks, retire inactive legacy stores after seven days, and retain two toolchain exports. Add regression coverage for staging, extraction, packaging and cleanup boundaries.
2026-10-21 12:29:00 +08:00
justme
ad5efc62ff
agent: unify listening and dialing with directed mutual measurements
...
Replace Probe with Agent across node runtime, Fleet contracts, backend state, API and storage. Report incoming sessions and outgoing link health through each Agent uplink, and retain directed link controls and retry.
Update protocol fixtures and end-to-end coverage for the unified model; accept requested cancellation during the Fleet timeout test cleanup.
2026-10-21 11:55:36 +08:00
justme
d5ebf29e57
docs: tighten wording, soften node capability claims, link architecture to code
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/e2e Pipeline was successful
- Remove the node capability paragraph from README; soften "pure collector"
and "no self-update" statements in docs, AGENTS.md and READMEs
- architecture.md: drop scalability goals, design decisions and open items;
add a component-to-code table and code links
- Replace rhetorical contrasts in security docs with direct statements
- AGENTS.md: add project mental model, change map and writing style rules
2026-10-21 06:52:01 +08:00
justme
a9bf849697
docs: rewrite README and AGENTS.md etc..
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/e2e Pipeline was successful
2026-10-21 06:28:19 +08:00
justme
a7ebf61551
[CI] [SKIP TESTS] Add detailed Probe-Agent connection diagnostics
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-20 19:12:11 +08:00
justme
0fd38b2367
fix: prevent QUIC heartbeat stalls and isolate TCP retransmission counters [CI] [SKIP TESTS]
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-20 18:23:31 +08:00
justme
0066a947da
fix: correct OpenWrt API metadata and earliest sample queries [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-20 14:56:39 +08:00
justme
cd193378a6
probe: add native OpenWrt deployment and signed automatic updates [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline failed
ci/woodpecker/push/dev-image Pipeline failed
2026-10-20 14:15:01 +08:00
justme
b33e50696d
fix(api): never cache anchor=latest windows as immutable [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-19 11:29:34 +08:00
justme
5594d1cc86
fix(query): a connected line is always anchored at now, whatever the stores have caught up to [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline failed
2026-10-19 10:48:38 +08:00
justme
e1ec7c9b04
fix(query): anchor=latest follows the newest sample of any level, not just the 1m rows [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-19 10:34:04 +08:00
justme
d95acc6575
refactor(link): bound every teardown and handler wait behind one helper [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-19 10:07:36 +08:00
justme
09b4630953
fix(probe): rebuild the Agent session when the datagram path goes silent [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline failed
2026-10-19 09:28:29 +08:00
justme
57ae0752aa
fix(probe): bound every step of tearing down an Agent session [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was canceled
2026-10-18 19:42:43 +08:00
justme
f9be98e801
fix(hosting): exit on our own when the orderly shutdown hangs [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline is running
2026-10-18 10:22:34 +08:00
justme
839c45c7d4
fix(probe): end an Agent session that has gone silent and redial [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-18 10:07:52 +08:00
justme
1a3feddc9d
fix(link): actually bound the server connect with a timeout [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-18 03:30:43 +08:00
justme
68c7113adf
feat(update): update the backend like nodes via quadlet restart [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-18 00:36:38 +08:00
justme
34190f5a04
fix(link): bound the server connect and alternate address families on retry [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-18 00:23:48 +08:00
justme
0d532caf08
fix(nodes): locate agents behind a proxy and retry missing countries [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-18 00:06:39 +08:00
justme
52059b04c1
fix(api): refresh node build versions from heartbeat [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-12 01:57:50 +08:00
justme
fe049c97fa
fix(link): reconnect after RPC send failures [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-12 00:21:12 +08:00
justme
6cf6b23585
feat(ops): upload node logs and task traffic [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-11 23:57:13 +08:00
justme
e82b165eb0
fix(quic): exclude locally rejected datagrams [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was canceled
2026-10-11 19:58:36 +08:00
justme
be97e24693
fix(link): recover stale websocket sessions [CI]
ci/woodpecker/push/dev-image Pipeline is pending
ci/woodpecker/push/web-build Pipeline was canceled
ci/woodpecker/push/verify Pipeline was canceled
2026-10-11 19:54:14 +08:00
justme
b5e275c51f
fix(quic): handle Linux dual-stack listeners [CI]
...
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
Signed-off-by: JustMe <mr.toing@outlook.com >
2026-10-11 04:45:27 +08:00
justme
b9ec6d80b0
fix(quic): merge static MsQuic support with latest main [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-11 01:05:21 +08:00
justme
a44895d860
fix(quic): statically link MsQuic for Alpine nodes [CI]
2026-10-11 01:00:37 +08:00
justme
d7b48c068c
ci: speed up backend build and parallelize image publishing [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-10 07:29:11 -07:00
justme
0d08e90dab
perf(tests): isolate network E2E and await QUIC cleanup
ci/woodpecker/push/verify Pipeline failed
ci/woodpecker/push/e2e unknown status
ci/woodpecker/push/web-build Pipeline was successful
2026-10-10 19:33:36 +08:00
justme
e49e701a73
ci: restore Zig toolset for clean AOT builds [CI] [SKIP TESTS]
...
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was canceled
Signed-off-by: JustMe <mr.toing@outlook.com >
2026-10-10 16:32:04 +08:00
justme
32507fcb4d
docs(protocol): document stopping and Probe retries [CI] [SKIP TESTS]
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-10 14:40:30 +08:00
justme
97ab3cc740
feat(runtime): track node lifecycle and QUIC link state
2026-10-10 14:16:57 +08:00
justme
238046d959
test(backend): parallelize isolated fixtures [CI] [SKIP TESTS]
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-10 04:54:18 +08:00
justme
e2e5e437cb
docs(deploy): document QUIC runtime and port requirements [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline failed
ci/woodpecker/push/dev-image unknown status
2026-10-10 03:00:47 +08:00
justme
b964dc2bbc
feat(quic): replace probe UDP data plane with QUIC datagrams
2026-10-10 02:59:56 +08:00
justme
4609048865
docs: merge the API guidelines into api.md; drop the one-off trial reports; fix the node-update description (Quadlet restart vs host updater); tidy TODO [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
2026-10-09 22:31:11 +08:00
justme
2d31bd091e
ci: gate on the fast tests (about 20s); slow end-to-end tests run in parallel with the image build [CI]
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/e2e Pipeline was successful
ci/woodpecker/push/dev-image Pipeline failed
2026-10-09 14:33:03 +08:00