Developers
What changed in each release
Features, fixes, and breaking changes across the shell, SDK, identity, admin, and storage.
v0.6.0
7 October 2026
Edit your name, sign in with a magic link, expose email settings to apps, and call init before the shell sends settings.
β¨ Feature
- Account management: Edit your name and delete your account from Settings, under user account, on the Shellui identity backend.
- Magic link login: The login page uses a magic link when no method is set, shows "Check your email", and waits 60s before another send.
-
Email service: Optional
email.urlandemail.showInAdmininshellui.configreach apps assettings.email.
π Improvements
- Transfers: Uploads share one progress toaster, and downloads continue after you leave Settings.
π¨ Changed
-
Iframe handshake (breaking): Call
initfrom@shellui/sdkfirst, because the shell sends settings only after that request and only to frames that are ready.
π Documentation
-
Agent guidelines: Root
AGENTS.mdlinks the Shellui writing and design guidelines.
π Bug Fixes
- Session restore: Reloading keeps you signed in during local development, and the shell shows a loading state while the session restores.
- Toasts: Bottom toast lists no longer block clicks on the page behind them.
- Staff magic links: A staff account that opens an old email link sees "Sign in with your usual sign-in method instead."
π Bug Fixes
-
Localhost iframe white screen: embedded companions now auto-trust the parent shell origin (same as tiny), so cross-origin dev (
:4000β:5173) acceptsSHELLUI_SETTINGSandawait shellui.init()completes. ProactiveSHELLUI_LAYOUT_CHROMEposts no longer raceabout:blank.
π Bug Fixes
-
OAuth callback / deep shell routes on static hosts:
shellui buildnow materializes nesteddist/web/<path>/index.htmlfor built-in shell routes (/login,/login/callback, settings, legal, β¦) in addition to navigation paths, withrewriteRelativeAssetDepthso./assets/β¦resolves correctly on GitHub Pages and similar hosts. Without this,/login/callbackfell through to root404.htmland loaded assets from/login/assets/β¦β white page.
π Improvements
-
identity-service 0.5.0 auth: shell and CLI complete OAuth via one-time
shellui_auth_codeβPOST /api/v1/oauth/session(default delivery). Legacy URL-fragment bounce and provider?code=exchange remain supported during rollout. Token refresh persists rotated refresh tokens; logout sends refresh for server-side revocation when available.
π Security
-
Auth token storage (H-09 / M-17): split persisted session β profile metadata in
localStorage, refresh token in tab-scopedsessionStorage, access token memory-only. Legacyshellui.auth.sessionauto-migrates. -
Optional BFF auth:
security.bffAuth.enabledroutes/api/auth/{session,refresh,logout}through the shell host with HttpOnly refresh cookies (CLI dev +serve:dist). Identity-native cookie OAuth remains a documented follow-up. -
Shell CSP: report-only by default with SHA-256 hash for the inline theme bootstrap; opt into enforcing via
security.csp.enforce. See Security hardening. - Modal iframe allowlist: localhost origins are allowed only in development builds; production shells reject loopback modal URLs unless they match configured storage, admin, or same-origin targets. (#63)
-
Navigation route guard: routes with
requiresStaffnow show an access-forbidden view for signed-out and non-staff users (client-side UX guard; APIs must still enforce authorization). (#63) -
Login branding
panelUrl: restricted to same-origin relative paths, configured backend/login/storage origins, and loopback URLs in development only. Untrusted absolute URLs are ignored. (#63) -
safeForAuthTokendefault is now opt-in (breaking): companion iframe apps no longer receivesettings.accessTokenunless their navigation item setssafeForAuthToken: true. First-party admin and storage file explorer frames are unchanged. The refresh token was never shared with companions and still is not. See Authentication β Iframe apps for migration. -
StorageBridge trusted-frame gate (H-07):
SHELLUI_STORAGE_REQUESTis honored only from registered iframe companions that pass the same trusted-frame policy as session JWT sharing (safeForAuthToken: trueopt-in, admin URLs,storage.filesUrl). Untrusted senders receive403without storage I/O. Shared helpers live infeatures/security/trustedFrames. -
postMessage hardening (H-06 / M-13 / M-14): inbound
SHELLUI_messages now require an allowed origin and a trusted source (registered iframe, parent shell, or same-window). Privileged companion commands (SHELLUI_LOGIN/LOGOUT, modal/drawer, toast/dialog, chrome actions, etc.) reject unregistered frames. Outbound SDK and shell replies use concrete target origins instead of''. The Shellui host auto-derives companion origins fromshellui.config.jsonnavigation and storage URLs, plus optionalsecurity.allowedMessageOriginsfor manual extras (preview/staging hosts, etc.). Standalone SDK embeds can still useshellui.configureMessageSecurity({ allowedOrigins: [...] })orshellui.init({ allowedMessageOrigins: [...] }). - Track F (#65) β companion isolation + CLI hardening (M-18, L-10..L-14):
π Bug Fixes
-
shellui initscaffolding: restore@shellui/cliin generated projects;pnpm buildbuilds shell + app into deployabledist/web/with relative /${SHELLUI_APP_URL:-β¦}companion URLs; restore native framework boilerplate home (drop Welcome to Shellui); defaultlayout: "fullscreen". Also fix deep-route relative asset paths afterbase: './', Next static exportimages.unoptimized, and stale template READMEs.
β¨ Feature
-
Floating chrome actions (SDK):
shellui.actions.set/cleardeclare optional back, title, trailing, and primary FAB chrome. The shell renders them (floating glass or windows title bar), postsSHELLUI_ACTIONclicks into that iframe only, and clears on shell navigation. Caps: at most 3 trailing visible (rest inΒ·Β·Β·), at most 1 primary. See the chrome actions guide. -
shellui initframeworks: Next.js, Nuxt, SvelteKit, and Alpine.js starters. Companions run on:3000(Next/Nuxt) or:5173(SvelteKit/Alpine). See framework starters. - Theming v1: curated OKLCH JSON themes (47, including Shellui, shadcn, and tweakcn), flexible config, and an Appearance theme selector. See themes.
-
Sidebar and app-bar layouts: shadcn sidebar with icon-collapse and rail (
βB), drag-to-resize, and mobile sheet. App-bar is 42px chrome with text start links and icon end links. Inset twins use a padded, rounded main frame (layout: "sidebar-inset"/"app-bar-inset"). -
CLI companion:
shellui startcan spawn or follow a colocated app viadev.run/dev.url(or--run/--follow/--shell-only). -
Identity-hosted login: authorize β callback β confirmation β token bounce. CLI
shellui loginopens the identity method picker (--providerskips it). -
Host detection:
isHomeScreenPwa(),isTauriRuntime(), anddata-shellui-hosttell Safari Home Screen installs apart from native WKWebView. iOS Home Screen PWAs skip stacked status scrims andtheme-color. Tauri keeps controlled chrome and CSS safe-area. See browser PWA vs native iOS.
π Improvements
-
Theme and i18n in starters: JS framework templates (
react,vue,angular,next,nuxt,svelte,alpine) use@shellui/sdk/tinywith theme sync,en/frlanguage sync, and a Shellui-integrated home. - Desktop history buttons: back/forward stay available in Tauri fullscreen. App-bar shows them only in a live Tauri webview.
π¨ Changed
-
CSS variables are full colors (
oklch(...)/ hex) viavar(--token). They are no longer HSL channel triples. - Official default theme is shellui (gold brand). AI-generated zinc/slate palettes are removed.
-
shellui initinjectstheme: "shellui".
π Bug Fixes
- Upload toaster: auto-dismiss ~2.5s after all uploads succeed. Stay open on failure so errors stay readable.
-
SDK layout chrome: inject
.shellui-apply-layout-chrome-padstyles into the iframe app document so auto-padding works without shipping@shellui/coreCSS.
π Bug Fixes
-
Temporary fix for
modalUrlundefined when the app is not localhost or same-domain: allow storage and admin.
β¨ Feature
-
Administration panel: configure custom admin sidebar navigation via
administrationinshellui.config.ts(title, flat nav items,requiresStaff,openIn: 'external'for Django admin). Propagated to the admin app through SDK settings. (#6) -
Storage: optional root
storage.url/filesUrlinshellui.config.tspropagate as SDKsettings.storageso Admin (and later the shell) can use storage-service. Admin shows Storage whenstorage.urlis set. Settings β Storage shows the signed-in user's quota whenstorage.urlis set; hide it withstorage.showInSettings: false. -
Storage SDK: iframe apps call
shellui.storage(Supabase-like{ data, error }API) for upload, download, list, move, and rename. Requests go to the root shell, which talks to storage-service withstorage.url. -
Company access pending UI: when identity-service blocks join (
access_pending/access_denied), show an βaccount created, awaiting admin reviewβ screen instead of a generic OAuth failure. Access is per company. (#15)
π Documentation
- Document company access modes and pending-access UX in authentication docs. (#15)
-
Document Settings β Storage: only shown when
storageis configured, and how to disable it withshowInSettings. -
Document the SDK file API (
shellui.storage) with nested-folder samples.
β¨ Feature
- Auth: support for Supabase and Shellui auth.
-
Legal documents: support for
legalDocumentsmarkdown content (privacyPolicy,termsOfService,legalNotice,dataProcessingAgreement).
π Improvements
-
Router: route-aware login flow with
nextredirect support for smoother sign-in transitions.
β¨ Feature
-
Application settings: navigation items can define a
settingsURL to show their own panel in Settings > Applications. - Layout: new app-bar layout with a 38px top bar: 9-square + current page name launcher (wrapping icon strip), Back/Forward on Tauri, and icon-only end links.
-
CLI:
shellui init [root]creates ashellui.config.tsboilerplate (use--forceto overwrite).
π Improvements
-
Themes: default theme uses local fonts from
static/fonts/(Open Sans, Source Serif 4) instead of Google Fonts; theme docs updated for local font setup. -
Navigation: support
start_urlto redirect/and navigation items with path""or"/"as the start page. - Navigation: handle hash navigation for applications.
- Improved Sentry error reporting integration.
-
CLI:
shellui start --hostexposes the dev server to the network.
π Bug Fixes
- iPad/Radix: fix modal/dialog buttons when using Apple Pencil or touch.
π Security
- Dependencies: update to address security issues.
β¨ Feature
- Multiple layout modes: sidebar navigation, fullscreen content view, and windows desktop mode with taskbar.
- Flexible navigation menu with icons, grouped items, and customizable organization.
- Open links in different ways: main content area, modal popups, side drawers, or external browser.
- Side drawer panels that slide in from any direction (top, bottom, left, right).
- Multi-language support with English and French translations.
- Localized interface with translated navigation labels and UI text.
- Custom themes with light and dark mode variants.
- Custom fonts for headings and body text from external links or local files.
- Toast notifications with multiple styles: success, error, warning, info, and loading states.
- Alert dialogs with different button configurations (ok, ok/cancel, ok/cancel/secondary).
- Modal windows for displaying content overlays.
- Settings panel to customize appearance, language preferences, and privacy options.
- Offline support and app updates through service worker.
- Cookie consent management with categorized privacy controls.
- Error reporting to help improve app stability.
- Desktop app support for native applications.
- Responsive design that adapts to mobile and desktop screens.
- Customizable app branding with favicon and logo.
- Software updates with version information and manual update checking in settings.
- Customizable navigation item visibility for mobile and desktop.
Product releases from shellui/shellui (the homepage badge uses this version, not the website package). Upcoming work is on the roadmap. Full notes also live on GitHub.