Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublicTeam
Assigneesstack72

Relationships

#2519 dashboard System tab shows Port —, TLS disabled, Auth —, Scheduling disabled although serve.config reports them correctly

Opened by randybias · 9/25/2026· Shipped 9/25/2026

Problem

The dashboard's System tab shows wrong serve configuration:

Port        —
TLS         disabled
Auth Mode   —
Scheduling  disabled
Dashboard   enabled

The serve.config response for the same server, fetched over the dashboard's own WebSocket with an admin token, is correct:

{"config":{"port":9090,"host":"0.0.0.0","tls":{"enabled":true,"certFile":"/tls/tls.crt"},"authMode":"token","scheduling":{"enabled":true},"dashboard":{"enabled":true},"webhooks":[],"hotReload":true,"remoteOnly":true,"autoResume":true,"trustProxy":true,"verifyOnEnroll":true, ...}}

/health also reports scheduling.enabled: true, and the scheduler fires on time: run b3ff2168 at 05:00:00Z today, triggerSource: schedule.

Likely cause (INFERRED from the payload shape)

The values arrive nested under config, and the System view appears to read top-level fields. So every field falls back to its empty or default rendering, except Dashboard, which is true by construction.

Ask

Read the nested config object, and add a contract test that renders the System view from a real serve.config payload. remoteOnly, autoResume, hotReload and trustProxy are also worth showing, as they change how the server behaves.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPEDTRIAGE+ 2 MOREREVIEW+ 7 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

9/25/2026, 9:13:41 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack729/25/2026, 6:25:27 PM
Editable. Press Enter to edit.

stack72 commented 9/25/2026, 9:13:49 PM

Thanks @randybias for reporting this! We shipped: The dashboard System tab misreads the serve.config response in two ways: it reads fields from the top level while the server nests them under config, and it tests tls, scheduling and dashboard for truthiness while the server sends them as objects with an enabled field. Fix it in the dashboard by moving the payload-to-rows translation out of System.tsx into a small pure module that reads the real wire shape, render the rows from it, add the four behaviour-changing flags the issue asks for (Remote Only, Auto Resume, Hot Reload, Trust Proxy), and pin it with a contract test that builds its payload from the server's own redactServeOptions. The server's wire shape is unchanged.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

Sign in to post a ripple.