Commit Graph

2577 Commits

Author SHA1 Message Date
0xJacky
7e05310281 fix: validate quick config inputs and stabilize e2e 2026-08-16 22:39:24 +08:00
Ugur SEN
2311d1006c test(e2e): cover quick setup from the site editor 2026-08-16 00:48:48 +03:00
Ugur SEN
d8360a591a fix: emit forwarded maps regardless of websocket toggle 2026-08-16 00:48:48 +03:00
Ugur SEN
c6eca9aa0a feat: add quick setup to the site editor 2026-08-16 00:48:48 +03:00
Ugur SEN
4c39bf6bd0 Merge pull request #1 from 0xJacky/dev
sync
2026-08-15 02:22:50 +03:00
Jacky
7697a752d3 Merge pull request #1808 from VXNCXNX/fix/zh-docs-dead-nginx-conf-link 2026-08-14 23:38:13 +08:00
VXNCXNX
1833832d75 docs: point the Debian nginx.conf link at the current branch
salsa.debian.org renamed the packaging branch from master to
debian/latest, so the link 404s. The English guide was already updated;
the README and the translations were left behind.

Uses the same anchor as the English guide (#L60-L61), which is where the
two include directives now sit.
2026-08-14 15:34:39 +00:00
0xJacky
1ccd1c06b3 chore: prepare v2.5.9 v2.5.9 2026-08-14 22:56:15 +08:00
0xJacky
d801120f23 fix: correct site status and stream rename persistence 2026-08-14 22:19:23 +08:00
0xJacky
5871566fb9 chore: prepare v2.5.8 v2.5.8 2026-08-13 10:34:41 +08:00
0xJacky
d602845df1 chore(i18n): extract the strings added since v2.5.6 2026-08-13 10:19:04 +08:00
0xJacky
c7799bf51c fix(self_check): add missing forwarded headers to the bundled conf 2026-08-13 10:19:04 +08:00
0xJacky
b7075adedb fix(cluster): log why node authentication was rejected 2026-08-13 10:19:04 +08:00
0xJacky
acd32b85ee feat(cluster): explain why a node is unreachable 2026-08-13 10:19:04 +08:00
0xJacky
8deb8578f7 fix(nginx_log): explain an empty rebuild without misleading advice 2026-08-12 21:47:41 +08:00
0xJacky
5b0aba01e9 fix(nginx_log): index the default access log without a directive 2026-08-12 21:47:41 +08:00
Jacky
453337341b Merge pull request #1801 from octo-patch/octo/20260812-parameter-refresh-recvrpsSHb3keh
Show MiniMax model parameters and endpoints
2026-08-12 20:32:25 +08:00
octo-patch
fd99215f6d feat: show MiniMax model metadata 2026-08-12 20:24:53 +08:00
0xJacky
d68ba44c1e fix(nginx_log): stop the search cache panicking when it closes mid-swap 2026-08-12 16:58:42 +08:00
0xJacky
8bf91779b7 fix(nginx_log): enumerate log groups before clearing metadata 2026-08-12 16:51:28 +08:00
0xJacky
c30a00ee63 fix(nginx_log): keep discovered log paths across service restarts 2026-08-12 16:51:28 +08:00
0xJacky
90e8968106 chore: prepare v2.5.7 v2.5.7 2026-08-12 15:34:49 +08:00
0xJacky
ffe977e288 test(nginx_log): assert indexing correctness instead of throughput 2026-08-12 15:34:48 +08:00
0xJacky
5376cd50c3 fix(cert): keep acme private keys owner-only 2026-08-12 15:34:48 +08:00
0xJacky
df0e29636c fix(stream): roll back the enabled symlink when nginx rejects it 2026-08-12 15:34:48 +08:00
0xJacky
3a52910949 test(demo): cover the site navigation socket and health reasons 2026-08-12 15:06:54 +08:00
0xJacky
324beaab19 test(demo): route the e2e suite through the hash router 2026-08-12 15:06:54 +08:00
0xJacky
0ec8ae2eab fix(transport): expire idle connections 2026-08-12 14:42:12 +08:00
0xJacky
49b2b33762 fix(analytic): stop the stats stream spinning on errors 2026-08-12 14:42:12 +08:00
0xJacky
803c405df9 fix(sitecheck): coalesce sweeps triggered by config scans 2026-08-12 14:42:12 +08:00
0xJacky
f33c2ede57 fix(nginx_log): bound index rebuilds to the container budget 2026-08-12 14:42:12 +08:00
0xJacky
647efbabf2 fix(sitecheck): stop self-signed vhosts reading as offline 2026-08-12 14:36:45 +08:00
0xJacky
fed993965e fix(2fa): let password managers find the one-time code fields 2026-08-12 14:27:08 +08:00
0xJacky
0342f79914 fix(config): test nginx before keeping a saved config 2026-08-12 14:14:35 +08:00
0xJacky
537c91a05c fix(api): authenticate websocket routes with query tokens 2026-08-12 14:13:02 +08:00
0xJacky
bd684d5adb fix(cert): keep renewed certificates on the path nginx loads 2026-08-12 14:08:02 +08:00
0xJacky
030dace064 test(demo): cover the notifier guardrail end to end 2026-08-12 13:37:35 +08:00
0xJacky
3eda67bbcd fix(analytic): quiet repeated node status failures 2026-08-12 13:37:03 +08:00
0xJacky
67fc8aa280 fix(analytic): stop echoing upstream bodies in node errors 2026-08-12 13:37:03 +08:00
0xJacky
90ac073f5c fix(notification): gate notifier changes behind an interactive admin 2026-08-12 13:37:03 +08:00
0xJacky
a8eb3b609c fix(cluster): let trashed nodes be recovered or purged 2026-08-12 13:37:03 +08:00
0xJacky
ae7324cfc1 fix(cluster): diagnose proxy rejections safely 2026-08-10 18:47:11 +08:00
0xJacky
7b05e93b6a fix(api): encode log entries path query 2026-08-10 18:47:02 +08:00
0xJacky
38b4cf752a fix(cluster): use node host for proxied requests 2026-08-10 17:48:56 +08:00
0xJacky
1df16d75f6 fix(cluster): keep account sessions on controller 2026-08-05 09:33:56 +08:00
0xJacky
70bb2c06d4 fix(notification): localize certificate expiry alerts 2026-08-03 16:02:58 +08:00
0xJacky
fde171c69d fix(nginx_log): handle empty initial shard sets 2026-08-03 12:20:15 +08:00
0xJacky
25c12d9d69 fix(demo): stop the container hanging instead of shutting down
The demo image is built on nginx:latest, which ships no procps, so the
`pkill -TERM nginx-ui` in the shutdown handler was not a command at all —
it exited 127 straight into /dev/null, and `|| true` swallowed that too.

The consequences ran the whole way through. The three nginx-ui children
were never signalled, so the bare `wait` blocked on them forever and the
`exit 0` after it was never reached. nginx had already been stopped by the
line above, so the container went on living as PID 1 with nothing bound to
8080: Cloudflare kept reporting it healthy while every request got "The
container is not listening in the TCP address". Since the platform sends
SIGTERM on the sleepAfter idle expiry as well as on the daily restore and a
manual recycle, this fired on its own, without anyone touching the demo,
within twenty minutes of the container going quiet.

Signal the PIDs this script recorded when it started them, so shutdown
depends on nothing outside the shell. Bound the wait: nginx-ui holds an open
SQLite handle and deserves a chance to close it, but a child that will not
exit must not be able to keep the container alive, so anything still running
after ten seconds is killed.

Verified against the real base image: with the previous handler the
container is still running thirty seconds after SIGTERM with 8080 refusing
connections and "received termination signal" as its last log line — the
production symptom exactly. With this one it exits 0 in six seconds, or in
fifteen when the children ignore SIGTERM.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 09:00:52 +08:00
0xJacky
9b1433318c fix(demo): recover a container the platform still calls healthy
An instance sat 'running' for nineteen hours with nothing bound to 8080.
Every request got the platform's own "container is not listening" error,
getState() reported 'healthy' throughout, and the demo never came back.

ready() returned early on a healthy state, so the only path that starts a
container was unreachable exactly when the container needed starting. The
platform's view of a container is not the truth, and this code treated it
as if it were.

A container that reports healthy without serving for a full boot window is
now stopped so the next request starts a fresh one, escalating to a kill if
the stop changes nothing. Deliberately slow to trigger and rate limited:
stopping a container that is merely slow to boot is how an earlier version
of this file put the loading page into a permanent refresh loop, so the
decision lives in a pure function with tests that assert two recoveries can
never land closer together than one cooldown.

Also stops the same outage from generating its own load. The loading page
polled /__demo/status forever, and each poll probed the container twice —
once via status(), once via ready() — so every open tab added two platform
error events per second to a container that was already down. status() now
drives the start itself, probes are cached for a couple of seconds, and the
page stops polling after five minutes instead of never.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 08:52:28 +08:00
0xJacky
008a94d5d5 fix(dashboard): prevent network spikes after reconnect 2026-08-02 20:52:26 +08:00