mirror of
https://github.com/spartanz51/tutabridge.git
synced 2026-06-24 10:54:32 +02:00
SDK (sdk-event-bus amended on the fork): a new `WsState` enum (`Stopped`/`Connecting`/`Connected`/`Reconnecting`) is broadcast through a `watch::Sender` inside `EventBusClient`, exposed via `state()` for observers. Transitions are emitted at every step of the reconnect loop, plus a `Drop` guard guarantees a final `Stopped` even on a panic in the caller's task tree. Two new SDK tests cover the initial value and multi-subscriber broadcast. Bridge: capture `bus_client.state()` at start, mirror it into a serde `WsStatus` field on `BridgeStats`, and clear on stop. UI: add a third stat card "Realtime" with a colored dot (green Connected, orange pulsing Connecting/Reconnecting, gray Off) reading `stats.ws_status`. Stats grid switches from 2 to 3 columns. Submodule pointer bumped to the rebuilt `tutabridge-integration` which cherry-picks all six SDK branches on `upstream/master`; the move-mails fixup (use `make_test_facade` so its test compiles alongside the blob branch) is re-applied. 341/341 SDK lib tests pass, 154/154 bridge tests pass.
React + TypeScript + 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 updating the configuration to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])