15 Commits

Author SHA1 Message Date
0xJacky
ac1e491486 test: steady two tests the dependency sweep shook loose
apexcharts 7 renders legend and tooltip markers as their own svg inside the
chart canvas, so matching any descendant svg now resolves five elements and
trips strict mode. Match the chart's own root instead; the chart itself was
always fine.

The AES test corrupted one byte of a real ciphertext and expected the base64
decode to reject the result, which only happens by chance because the IV is
random: 1 failure in 30 runs on unchanged code, and it took out this branch's
CI. Feed the decrypter a body that decrypts to something base64 always
rejects. 40 runs, no failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 00:50:16 +08:00
0xJacky
89d8fd8b5a Merge branch 'dev' into chore/antdv-next-migration
dev brought the host-via-SSH setup wizard, whose components were written
against ant-design-vue, so they are migrated here alongside the merge.

Preference.vue keeps the items-based Tabs from this branch and picks up
dev's control-editing binding on NginxSettings.

Two antdv-next differences the wizard tripped over: Typography's copyable
config calls the field `tooltips`, not `tooltip`, and Divider `orientation`
now selects the axis so the text position moved to `title-placement`. Both
are added to check-antdv-legacy.sh.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 23:53:26 +08:00
0xJacky
45fba9f3f8 test(e2e): cover the antdv-next migration surface
antdv-next fails by ignoring a prop or dropping a slot, which lint, vue-tsc
and vite build cannot see. These specs target that: every reachable Select is
opened and asserted to have options, every tab must render a non-empty panel,
overlays must have real content and a non-zero width, tables must still show
their custom cell output, and browser console errors fail the test.

One spec covers each area the migration touched. Also repoints the quick
setup status-code lookup: antdv-next renders dropdown options without
role="option" or aria-selected, so the option has to be matched by class,
and .ant-select-selector no longer exists as the trigger.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 23:38:15 +08:00
0xJacky
9fa6be8195 fix(app): harden nginx host setup control mode and wizard steps
- Render the control-mode radio group only while editing, so the read-only
  view can no longer mutate the store without passing the 2FA-gated Edit flow
- Show a dedicated message when no private key exists at the given path
  instead of the raw transport error
- Share parseHostAddress between the SSH target and host key steps so
  bracketed IPv6 loopback targets no longer trigger the remote-address warning
- Keep a stale host key scan or connection test from clearing the loading
  state of a newer in-flight run
- Align the E2E spec with the read-only control mode view

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 18:25:29 +08:00
0xJacky
69cfff126b test(e2e): cover the nginx host setup entry points in demo mode
Assert the control-mode editor exposes Host via SSH and the wizard route
stops at the two-factor guard without calling the host setup API.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 18:20:19 +08:00
0xJacky
3203f1c9ea fix(site): allow included TLS certificates 2026-08-21 09:23:14 +08:00
0xJacky
ffc29affca feat(node): show authentication upgrade progress 2026-08-17 19:11:00 +08:00
0xJacky
efd6b715df test(e2e): allow normalized route query state 2026-08-16 22:57:49 +08:00
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
0xJacky
acd32b85ee feat(cluster): explain why a node is unreachable 2026-08-13 10:19:04 +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
030dace064 test(demo): cover the notifier guardrail end to end 2026-08-12 13:37:35 +08:00
0xJacky
c00aa9513a test(demo): add an end-to-end suite for the public demo
The demo now fabricates most of what it shows — geo lookups, upstream and site
probes, connection counters, DNS records, a synthetic access log — and refuses
a set of routes outright. Nothing verified that any of it actually reaches the
screen, so a provider could silently stop being installed and every page would
still look plausible.

Eleven Playwright specs, split into per-module data assertions and the
cross-cutting guardrails: /api/pty returns the typed demo refusal rather than a
404 or a successful upgrade, the simulated shell answers `help` and `nginx -t`
without opening a WebSocket, and the destructive routes return code 40300.

Kept as its own top-level package rather than joining the app/ Bun workspace,
so the frontend build is untouched. Not wired into CI yet: it needs a running
container, and the job shape is worth deciding separately.

Also hides the Preference > Terminal tab in demo mode, which the terminal work
had specified but never implemented — the tab was still reachable and led to a
panel with nothing behind it. The tab renders only once the demo flag has
resolved, so a normal installation is unaffected.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:18:25 +08:00