Skip to content

Make the dashboard the default interface at root#3345

Open
jelveh wants to merge 1 commit into
mainfrom
dashboard-default-root
Open

Make the dashboard the default interface at root#3345
jelveh wants to merge 1 commit into
mainfrom
dashboard-default-root

Conversation

@jelveh

@jelveh jelveh commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

What

  • The dashboard is now the default interface at /; /dashboard still works as an alias.
  • The desktop lives at a new /desktop route (backend shell route + GUI dev server route).
  • A new Open Desktop button pinned at the bottom of the dashboard sidebar switches to the desktop. It's a real link, so middle-click/cmd-click open it in a new tab.

Compatibility

Root URLs that carry a desktop-only flow keep booting the desktop exactly as before:

  • ?embedded_in_popup= — SDK auth popup token handoff
  • ?app= — insta-login / app deep links
  • ?download= — direct-download links (now also work at /desktop)
  • ?puter.fullpage= — chromeless fullpage mode
  • iframe embeds

Desktop-context redirects are retargeted so desktop users stay on the desktop:

  • Logout returns desktop users to /desktop (dashboard users to /)
  • Window close/hide URL resets go to /desktop instead of /
  • The QR "continue on phone" link encodes /desktop
  • The auth cover-page logo click keeps desktop users on /desktop
  • OIDC login/signup accepts a new return_to param so social login returns to the interface it started from — strictly whitelisted server-side to /desktop and /dashboard (no open redirect)

Smaller fixes that fell out of the change:

  • The dashboard strips ?ref= from the URL like the desktop does (referral attribution no longer lingers in shareable URLs)
  • ?auth_token= cleanup preserves the current path and tab hash (/#usage links survive)
  • Logged-out visitors with saved sessions see the wallpaper behind the session list instead of a blank page

Testing

  • HomepageController and OIDCController vitest suites pass (39 tests)
  • Verified in the browser against a local server: / → dashboard; /desktop → desktop; Open Desktop button navigates; /?app=explorer opens explorer on the desktop; /?puter.fullpage=true boots the chromeless shell; /?download=… shows the download confirmation; /?ref=x#usage strips the ref, keeps the hash, and opens the Usage tab

The dashboard now loads at / (with /dashboard kept as an alias), and the
desktop moves to a new /desktop route. An "Open Desktop" button pinned at
the bottom of the dashboard sidebar switches to the desktop.

Root URLs that carry a desktop-only flow keep booting the desktop:
auth popups (?embedded_in_popup=), app deep links (?app=), direct
downloads (?download=), fullpage mode (?puter.fullpage=), and iframe
embeds.

Desktop-context redirects are retargeted so desktop users stay on the
desktop: logout, the QR "continue on phone" link, the auth cover-page
logo click, and window close/hide URL resets now use /desktop. OIDC
login/signup gains a strictly whitelisted return_to param (/desktop or
/dashboard) so social login returns to the interface it started from.

Also: the dashboard strips ?ref= like the desktop does, ?auth_token=
cleanup preserves the path and tab hash, the logged-out session list
gets the wallpaper back, ?download= also works at /desktop, and the GUI
dev server serves /desktop and /dashboard.
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 74.93%
⬆️ +0.15%
15302 / 20420
🔵 Statements 73.42%
⬆️ +0.15%
16176 / 22031
🔵 Functions 73.03%
⬆️ +0.25%
2495 / 3416
🔵 Branches 63.26%
⬆️ +0.07%
10616 / 16781
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
src/backend/controllers/homepage/HomepageController.ts 89.36%
⬆️ +0.99%
63.63%
🟰 ±0%
93.33%
⬆️ +1.03%
88.88%
⬆️ +0.65%
7, 79-83
src/backend/controllers/oidc/OIDCController.ts 96.08%
⬇️ -0.51%
78.39%
⬇️ -0.14%
100%
🟰 ±0%
97.09%
⬇️ -0.54%
82, 86, 152, 221-225, 498-500, 513, 545
Generated in workflow #466 for commit 092e9dc by the Vitest Coverage Report Action

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