You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found by driving examples/dummy with a real browser.
$ x dev --port 4477
X_CONFIG_INVALID: 22 route(s) declare auth: 'required' and no authenticator is configured,
so every request is anonymous and each of them refuses every session
fix: call configureAuthenticator() at module scope in a file under apps/*/
$ curl -o /dev/null -w '%{http_code}' http://localhost:4477/settings
401
Why this matters more than it looks.examples/dummy is the proving ground — "every primitive, once, idiomatically" — and most of it cannot be looked at. Only /, /pricing, /blog and /offline render. Every app/ surface answers 401, including /settings, which is now the app's only page with a reactive Solid island.
That is a DX problem twice over:
A human evaluating the framework opens the reference app, clicks anything past the marketing pages, and gets a 401. The most convincing thing in the repo is unreachable.
The warning is emitted at boot, correctly coded, with a runnable fix: — the error contract works fine. The problem is that the reference app ships in that state and nobody notices, because no gate step loads a page and looks at it.
Fix, one of:
examples/dummy calls configureAuthenticator() with a dev-only viewer, so its own pages render. It already has viewerFor machinery in its test fixtures.
or x dev mounts a dev-only anonymous actor when no authenticator is configured, loudly (a banner in /_x, a line in the boot log), so the app is browsable while the misconfiguration stays visible.
The first is more honest and demonstrates a primitive the app is otherwise silent about. The second helps every app, not just this one — it is a mechanism, not a convention. They are not exclusive.
Related: /favicon.ico 404s on every page. Cosmetic, but it is the only console error on an otherwise clean load, and a scaffolded app inherits it.
Found by driving
examples/dummywith a real browser.Why this matters more than it looks.
examples/dummyis the proving ground — "every primitive, once, idiomatically" — and most of it cannot be looked at. Only/,/pricing,/blogand/offlinerender. Everyapp/surface answers 401, including/settings, which is now the app's only page with a reactive Solid island.That is a DX problem twice over:
The warning is emitted at boot, correctly coded, with a runnable
fix:— the error contract works fine. The problem is that the reference app ships in that state and nobody notices, because no gate step loads a page and looks at it.Fix, one of:
examples/dummycallsconfigureAuthenticator()with a dev-only viewer, so its own pages render. It already hasviewerFormachinery in its test fixtures.x devmounts a dev-only anonymous actor when no authenticator is configured, loudly (a banner in/_x, a line in the boot log), so the app is browsable while the misconfiguration stays visible.The first is more honest and demonstrates a primitive the app is otherwise silent about. The second helps every app, not just this one — it is a mechanism, not a convention. They are not exclusive.
Related:
/favicon.ico404s on every page. Cosmetic, but it is the only console error on an otherwise clean load, and a scaffolded app inherits it.