Skip to content

Give the server setup a screen of its own, and fix what a pass over the panel found - #53

Merged
ImBaphomettt merged 13 commits into
mainfrom
ux-pass
Nov 9, 2026
Merged

ImBaphomettt merged 13 commits into
mainfrom
ux-pass

Conversation

@ImBaphomettt

Copy link
Copy Markdown
Member

The server setup leaves the panel's shell for a full-screen flow: a step rail, a file browser to pick server.cfg, the folder check's verdict before Continue, and a first-launch page. Alongside, a pass over the panel fixes what it found: the console losing its lines while a command is sent, tables that scrolled sideways, the accent notch on selected rows, and two errors that only Windows 11 build 26300 and a reverse proxy brought out.

What changed

  • Setup (/server/setup): a screen of its own, outside the rail and the online column (FocusShell, on SignedIn, which every signed-in screen now shares). Each step asks its question as the page heading, with its buttons in a bar at the foot, and the step rail shows what each step chose.
    • Folder: the servers found on the host as cards (resources, cfg, port and the program that holds it, OneSync, txAdmin), a path field with Browse beside it, and the check's verdict (resources, config files, folders without a manifest) before Continue. A server found is checked once picked; only the last check sent counts.
    • Config: a file browser over the server folder, each folder read as it opens, and a preview of the cfg with its secrets masked and its syntax coloured.
    • Build: the build selected, or the one Cfx.re recommends with Install, then the installed builds, an import and the builds page. The dialogs and the job card are the builds page's, and a build's support level has one tone on both.
    • A first-launch page replaces the last step once the settings are saved.
  • API: POST /servers/default/setup/files lists a folder inside the server folder, and POST /servers/default/setup/cfg/text returns a cfg with its secrets masked (observer-fxserver, server_files). Both take what reading the launch settings takes.
  • Panel: the console keeps what it holds while a command is sent; the online column names labelled players; the profile and audit tables fit without scrolling sideways.
  • A selected row, the current page, a warning row and the current settings category show by their fill alone, without the 3 px accent bar on their left edge.
  • observer-platform: Windows 11 build 26300 lists every listening TCP socket in state 0, a value MIB_TCP_STATE does not define (closed is 1, listening 2). State 0 now counts as listening; before, Observer saw no listener at all on such a host, and five tests failed.
  • xtask: npm and npx run where a Node manager installs them as executables rather than .cmd scripts.
  • Panel i18n: the context lives apart from the catalog and the provider, so a hot reload of en.ts during development keeps one context instead of throwing useI18n must be used inside <I18nProvider>.
  • A 502, 503 or 504 without an Observer error code, which a reverse proxy answers while Observer is stopped, reads "Observer cannot be reached" instead of "Something went wrong". Observer never answers 502 or 504, and its 503s carry a code.

Notes for review

  • main is merged in (ff0de00): one conflict, in AppShell.tsx, between this branch's flatter shell and the update signal at the rail's foot. Both are kept.
  • State 0 was measured with GetExtendedTcpTable on build 26300, where netstat hides those sockets.
  • The i18n change only matters during development: the built panel never reloads a module.

Verified

  • On Windows, merged with main at aaced3f: cargo xtask check passes whole: fmt, icons, clippy with -D warnings with and without observer/test-catalog, 3056 tests, bindings unchanged, and the panel's format, lint, type check, 691 tests and build. The panel ran under Node 26.13: this machine has no Node 24, and jsdom 31 refuses Node 22.16.
  • The five socket tests that fail on main on this machine pass here.
  • In the browser, a debug build against the fake FXServer: the setup's steps, Settings, Bans and the live map, in both themes at 1440 and 375 px, without horizontal scroll or console error.
  • The proxy's answers and the listener in state 0 each have a test that fails without the fix; the console and the online column have tests of their own.
  • GitHub Actions did not start the jobs (the organisation's billing): the checks above are the CI's, run locally on Windows.

Not verified

  • Linux: WSL is not installed on this machine. The socket change is Windows code, but nothing here was built or run on Linux.
  • cargo xtask e2e: Playwright's browsers are not installed here.
  • The setup on a host that never ran FXServer, and the recommended build's card against Cfx.re's real catalog.

…abelled players in the online column, and fit the profile and audit tables
…y their fill alone, without the accent notch
…ail, a file browser to pick server.cfg and a first-launch page
… build selected or recommended, as the mockups draw them
# Conflicts:
#	web/src/shell/AppShell.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant