Settings → Appearance → Navigation style picks between the icon rail down the window edge (default, unchanged) and browser-style tabs across the title bar. Both skins render one shared workspace list, so a new workspace appears in both from a single edit, and the choice persists like scale and theme. Two layout traps this had to solve: * The footer and audio dock are placed at `grid-column: 2 / -1` so they sit beside the rail. Tabs mode has one fewer column, so that placement makes Grid invent an implicit column and take its width off the content — the app rendering in 65% of the window with the footer stranded in a black band. A stylesheet guard now fails on any child left past column 1 without a `.nav-tabs` counterpart. * Nine tabs plus the status cluster do not always fit. Rather than every label shrinking to a stub, the strip measures what it needs with all labels shown and, when short, keeps the label only on the tab you are in. Measured rather than thresholded because the answer depends on locale, UI scale, font and whether the live-metrics cluster is on. Adds the nav-style strings to all 21 locales and a TitleTabs visual spec.
React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.