1708159ecf
fix(apply,shaterd): the offline stub alarmed about an apply nobody attempted
omarandClaude Opus 52026-07-27 14:43:49 +03:00
9d7f0dc92f
fix(panel): the byedpi report had a five-second timer and no reader, and its parser could forge "listening"
omarandClaude Opus 52026-07-27 14:32:26 +03:00
c407771cf2
fix(panel): four cards, one log row and a status the daemon knew and nobody saw
omarandClaude Opus 52026-07-27 14:28:40 +03:00
26e1d38924
test(bridge): make the fragment sweep test assert the property it names
omarandClaude Opus 52026-07-27 14:25:35 +03:00
42d84ac74c
fix(model): a failed backup may stop a config write only when the filesystem is the reason
omarandClaude Opus 52026-07-27 14:25:20 +03:00
a05ad21b39
fix(apply,shaterd): four states the daemon was in and could not say
omarandClaude Opus 52026-07-27 14:08:57 +03:00
43bb8913ea
fix(diag): the bundle printed a DNS account id, and scrubbed the wrong file
omarandClaude Opus 52026-07-27 13:49:08 +03:00
89571bcdb1
fix(netplane,generate): a network with option udp '0' had its UDP dropped in silence
omarandClaude Opus 52026-07-27 13:48:54 +03:00
6ced96fafa
fix(panel): a switched-off subscription is not "never fetched", and an inline list is not "empty"
omarandClaude Opus 52026-07-27 13:35:53 +03:00
42536675e2
fix(panel): read the age, the scope and the hop — three fields the panel was ignoring
omarandClaude Opus 52026-07-27 13:35:25 +03:00
a4ea5dba44
fix(tests): the last two packages that wrote to the router's own /etc/shater
omarandClaude Opus 52026-07-27 12:56:30 +03:00
ea34e744bd
fix(panel): the status poll stops dialling — a readiness cache that carries its age and has an owner
omarandClaude Opus 52026-07-27 12:55:34 +03:00
e5dfd74b61
fix(engine): testing one node stops wiping the group board; the blocked hop becomes a field
omarandClaude Opus 52026-07-27 12:55:11 +03:00
17843be5ad
fix(tests): running the suite deleted the router's own state — four packages did it
omarandClaude Opus 52026-07-27 12:33:45 +03:00
dac2f85c84
fix(insights): a failed DNS lookup stops being the healthiest row in the log
omarandClaude Opus 52026-07-27 12:25:09 +03:00
e065786a32
feat(panel): unlock byedpi on a listener, test one node, and stop two badges arguing
omarandClaude Opus 52026-07-27 11:55:42 +03:00
46a2d4aaad
test(model): pin the wire contract the panel's PUT actually sends
omarandClaude Opus 52026-07-27 11:40:32 +03:00
67290ec2b6
feat(devices): attach named block/allow lists to a device, without a dangling tag
omarandClaude Opus 52026-07-27 11:37:33 +03:00
9339e8e70d
fix(generate): the cache fallback test ran or skipped depending on its neighbours
omarandClaude Opus 52026-07-27 11:27:40 +03:00
a67f51c22c
docs(panel): the q= field list did not mention error, which the filter searches
omarandClaude Opus 52026-07-27 11:27:36 +03:00
56c9ea56e6
fix(gate): [4/7] reported a failure that did not exist — 664 s of pure sleep
omarandClaude Opus 52026-07-27 11:27:23 +03:00
cae5655dbe
fix(panel): the hazard band said DNS leaves and that nothing leaves
omarandClaude Opus 52026-07-27 11:23:52 +03:00
fbcf211d19
test(stats): pin that the log filter does NOT search statusomarandClaude Opus 52026-07-27 11:18:10 +03:00
419eaf7bbe
docs(porting): the schema number on line 146 was v0.1's, read as v0.2's
omarandClaude Opus 52026-07-27 11:13:13 +03:00
a794fbe374
fix(stats): a failed DNS lookup no longer reaches the log as a healthy row
omarandClaude Opus 52026-07-27 11:12:59 +03:00
735aa5428f
fix(shater-core): name which of the four ways shaterd migrate ended
omarandClaude Opus 52026-07-27 11:12:54 +03:00
d1f43dbbe6
fix(shaterd): diag printed constant.Version instead of the version it was handed
omarandClaude Opus 52026-07-27 11:11:06 +03:00
67c4829f03
fix(apply): name the fetch_via=proxy that is not going through anything
omarandClaude Opus 52026-07-27 11:09:30 +03:00
b43f673ad2
fix(apply,shaterd): a downgraded build may not RUN a config it can only half-read
omarandClaude Opus 52026-07-27 11:05:10 +03:00
da7411e29a
feat(panel): attach named block/allow lists to a device, and show whether they loaded
omarandClaude Opus 52026-07-27 11:01:56 +03:00
73bd02dd71
feat(byedpi,nodetest): check the listener, not the file; and let one node be tested
omarandClaude Opus 52026-07-27 10:37:48 +03:00
ffe4d8726f
feat(apply,shaterd): a configuration history on disk, and a support bundle that outlives the daemon
omarandClaude Opus 52026-07-27 10:34:39 +03:00
7f84ea9496
feat(panel): the logs answer why it went there, where it went out, and where the search stopped
omarandClaude Opus 52026-07-27 10:32:39 +03:00
fd8b424d5a
fix(netplane): a missing IPv6 gateway is not an outage, and it never was one for IPv4
omarandClaude Opus 52026-07-27 10:27:50 +03:00
a9ec36e053
fix(netplane): a second LAN's inbound options meant nothing, and rule counters were structurally blind
omarandClaude Opus 52026-07-27 10:27:33 +03:00
d40eeede0c
fix(model): refuse a config newer than the build, and never write the version back down
omarandClaude Opus 52026-07-27 10:21:01 +03:00
7c93019e81
fix(panel): draw the settings that decide whether traffic leaks
omarandClaude Opus 52026-07-27 10:10:32 +03:00
bc7ea359c8
feat(panel): the settings that only /etc/config/shater could reach
omarandClaude Opus 52026-07-27 10:06:12 +03:00
447cd8cf7d
fix(panel): a switched-off service is not a fault, and say so before the apply that is
omarandClaude Opus 52026-07-27 10:04:27 +03:00
65db309e3c
fix(sub): fetch_via=proxy went out on the plain WAN from cron and at boot
omarandClaude Opus 52026-07-27 09:53:19 +03:00
d63f1d896d
fix(bridge): reassemble return-path IP fragments — the bridge dropped them
omarandClaude Opus 52026-07-27 09:52:26 +03:00
55dea4e729
feat(stats): the DNS log says where it went out, and both logs can be searched
omarandClaude Opus 52026-07-27 09:51:17 +03:00
2dfd7caf2b
fix(apply): the untunnelable note may not describe an egress the plane never bound
omarandClaude Opus 52026-07-27 09:45:24 +03:00
6f84d0ca7b
fix(luci): read daemon_answered, and stop reading a config nobody could read
omarandClaude Opus 52026-07-27 09:40:24 +03:00
06c04c157d
fix(gate): a unit test in one package was deleting another package's TUN
omarandClaude Opus 52026-07-27 03:25:46 +03:00
3654acf7fb
fix(egress): tunnel was a device to the router and an unknown type to the engine
omarandClaude Opus 52026-07-27 01:52:56 +03:00
3a9b3f523d
fix(l3): a test that is not about the TUN must not open one
omarandClaude Opus 52026-07-27 01:49:40 +03:00
201aa7c168
fix(panel): traceroute never printed a hop — stop saying it works
omarandClaude Opus 52026-07-27 01:20:41 +03:00
78bb6a1be8
fix(netplane): a read that fails, a floor nobody checked, a flow that predates the plane
omarandClaude Opus 52026-07-27 01:01:00 +03:00
ea3a4c518e
test(generate): the L3 ingress is the default now — say so in the fixtures, not in 51 rewrites
omarandClaude Opus 52026-07-27 00:54:48 +03:00
0f69880150
test(gate): a skipped test is a test that did not run — name it, or fail
omarandClaude Opus 52026-07-27 00:30:39 +03:00
164b703a7d
feat(l3): ping travels the tunnel by default, and every LAN zone can reach it
omarandClaude Opus 52026-07-27 00:26:00 +03:00
de6fa8ebf4
fix(doh3): Close is not an ownership handoff — stop pooling the query buffer
omarandClaude Opus 52026-07-27 00:12:15 +03:00
b91fba1295
fix(l3): a covered last fragment must complete; say what the timeout really does
omarandClaude Opus 52026-07-27 00:08:25 +03:00
df078c3205
fix(model): the write rollback may not swallow its own failure
omarandClaude Opus 52026-07-27 00:06:52 +03:00
d0471b2418
build(shater-core): ship the keep.d entry, or the node inventory dies at the next flash
omarandClaude Opus 52026-07-27 00:02:14 +03:00
3314927bef
fix(panel): stop the readouts claiming things the daemon never said
omarandClaude Opus 52026-07-27 00:01:08 +03:00
6801146240
feat(core): back up the product state, and let the watchdog see a crash loop
omarandClaude Opus 52026-07-26 23:58:14 +03:00
2f8c692c39
fix(l3): the TUN is a reclaimable slot — one fixed name made every apply fatal
omarandClaude Opus 52026-07-26 23:55:44 +03:00
c788425cad
feat(stats): the connection log now says which rule sent it there
omar2026-07-26 23:47:38 +03:00
0144282f5e
fix(apply): a finding that is still true may not erase itself
omarandClaude Opus 52026-07-26 23:45:28 +03:00
b642e5d8fe
fix(egress): an interface egress with no interface was bound to br-lan
omarandClaude Opus 52026-07-26 23:44:35 +03:00
35e4900769
fix(shaterd): three success reports for work that was not done
omarandClaude Opus 52026-07-26 23:39:17 +03:00
d3e33294c1
fix(l3): reassemble return-path IP fragments — classifyReturn drops them
omarandClaude Opus 52026-07-26 23:38:07 +03:00
32aac89139
docs: stop the docs promising a safety net that ships disarmed
omarandClaude Opus 52026-07-26 23:35:06 +03:00
9e6dda22b3
fix(http3,doh3): stop releasing what is still being read
omarandClaude Opus 52026-07-26 23:26:03 +03:00
fde4bed571
fix(luci): stop calling the daemon dead when only the engine is
omarandClaude Opus 52026-07-26 23:22:56 +03:00
cb26936ebf
fix(wgdedup): merge identical WireGuard copies instead of blocking one
omarandClaude Opus 52026-07-26 23:16:12 +03:00
8db29b6267
fix(apply): say when shaterd apply armed no safety net
omarandClaude Opus 52026-07-26 23:12:38 +03:00
564033cd10
fix(apply): chain: as a subscription fetch detour resolved to a name nothing answers to
omarandClaude Opus 52026-07-26 23:09:35 +03:00
add90b5b2f
fix(panel): the DNS footnote was a grid item nobody placed
omarandClaude Opus 52026-07-26 23:05:49 +03:00
a571bd0e1a
docs(claude): model is the executor's call, skills are mandatory, standards that earned their place
omarandClaude Opus 52026-07-26 22:48:05 +03:00