AskaEth
c59c7a172c
refactor: login modal with tabs, username only on register
2026-07-27 10:03:13 +08:00
AskaEth
08e5729de3
fix: match installed by manifest_id only, no name fallback
2026-07-27 09:53:07 +08:00
AskaEth
6a58ec9d20
fix: re-add localNames check for installed matching
2026-07-27 09:51:42 +08:00
AskaEth
a6adedaadb
feat: create new dashboard button with auto-generated UUID
2026-07-27 09:47:07 +08:00
AskaEth
e3afb2ac9b
fix: dual id/name matching for installed + console.error on all catches
2026-07-27 09:31:26 +08:00
AskaEth
1c73ec9db6
fix: remove undefined localNames reference
2026-07-27 09:29:37 +08:00
AskaEth
10aa14b6d5
fix: add console.error to market catch blocks for debugging
2026-07-27 09:28:34 +08:00
AskaEth
fb5ebfe162
fix: check local scenes for installed status
2026-07-27 09:19:30 +08:00
AskaEth
87608868f5
fix: use dual id+name matching, manifest_id pending field addition
2026-07-27 09:01:18 +08:00
AskaEth
0fd96b7794
fix: refresh market grid after install
2026-07-27 08:59:17 +08:00
AskaEth
76d9cc3975
fix: match installed by manifest_id only, add manifest_id field
2026-07-27 08:54:52 +08:00
AskaEth
ae4bffd79f
fix: match installed by both id and name
2026-07-27 08:51:31 +08:00
AskaEth
2a51026587
feat: uninstall button for locally installed market packages
2026-07-27 08:49:20 +08:00
AskaEth
d04ab1138c
feat: market checks local installs, shows installed badge
2026-07-27 08:47:35 +08:00
AskaEth
3ffee330a5
fix: market install button feedback - always show toast
2026-07-27 08:44:53 +08:00
AskaEth
d3a269b5cd
fix: remove extra closing div in dashboard template
2026-07-27 00:41:40 +08:00
AskaEth
55a1fb00df
fix: remove crash-causing market references from dashboard.js
2026-07-26 23:56:49 +08:00
AskaEth
f9256a564b
feat: my tab shows time/version/status, restore -created sort
2026-07-26 22:26:43 +08:00
AskaEth
df8f33dcca
fix: market tab styles + my items layout
2026-07-26 22:23:23 +08:00
AskaEth
b9359b3b47
feat: '我的' tab - user content management with update/delete
2026-07-26 21:46:24 +08:00
AskaEth
98440099a8
fix: market tab active state inline style update
2026-07-26 21:39:54 +08:00
AskaEth
47341f1f76
feat: market scenes tab - upload/install with dependency check
2026-07-26 21:37:24 +08:00
AskaEth
c4675f7a15
feat: persistent registration toast, click to dismiss
2026-07-26 21:32:01 +08:00
AskaEth
605830ac34
feat: username field in market registration
2026-07-26 21:25:33 +08:00
AskaEth
6cb0759630
fix: remove hardcoded email placeholder
2026-07-26 21:23:13 +08:00
AskaEth
93776c7d98
refactor: market as standalone sidebar page, removed from dashboard
2026-07-26 21:20:27 +08:00
AskaEth
5735602f7d
refactor: separate market from categories in sub-sidebar
2026-07-26 21:11:40 +08:00
AskaEth
70df32bb07
feat: market login/logout/upload flow with UI state management
2026-07-26 20:44:11 +08:00
AskaEth
e7e93d9664
style: 极速中枢 display name in WebUI
2026-07-26 20:25:59 +08:00
AskaEth
683e573e9a
feat: marketplace integration via backend proxy
...
- market_url config (server-side only, never exposed to frontend)
- /api/market/* proxy endpoints to PocketBase
- Dashboard page: 'Market' tab in sub-sidebar
- Market list: browse/install community dashboards
- Login/register modal, upload to market
- PocketBase API fully proxied, zero credentials in frontend
2026-07-26 19:52:00 +08:00
AskaEth
06042a93a2
chore: add project URL to about section
2026-07-26 19:12:29 +08:00
AskaEth
7e9211507b
refactor: move record/playback to dedicated page, restore test mode in settings
...
- New '录制回放' page with sidebar nav entry
- Recording: start/stop/auto, file list with play/export/delete
- Playback: visual bar indicator, opens dashboards to see replayed data
- Settings: restored dev tools section with test mode toggle
2026-07-26 19:10:48 +08:00
AskaEth
a9bd35baa8
feat: #1 telemetry record/playback with auto-race detection
...
- TelemetryRecorder: manual + auto mode (IsRaceOn edge detection)
- TelemetryPlayer: timed packet replay into _handle_packet pipeline
- .tsr format: [uint32 elapsed_ms][uint32 len][bytes]
- Settings UI: start/stop, auto toggle, recording list, play button
- API: /record/*, /playback/*, /recordings
2026-07-26 18:40:09 +08:00
AskaEth
4bba4b850d
fix: settings nav uses onclick scroll instead of hash (avoid router conflict)
2026-07-26 18:37:03 +08:00
AskaEth
222b89e717
feat: settings sub-sidebar for section navigation
2026-07-26 18:33:11 +08:00
AskaEth
b44241c666
feat: restart button in settings via atexit+execv
2026-07-26 18:32:16 +08:00
AskaEth
2daa4d48f1
feat: .tsb backup import/restore functionality
2026-07-26 18:31:04 +08:00
AskaEth
02ffa33298
style: Miuix switch for all checkboxes in settings (unified port, forward toggles)
2026-07-26 18:30:25 +08:00
AskaEth
cd2106dbf8
fix: auto-start test mode on boot if config says on; Miuix toggle switch style
2026-07-26 18:26:29 +08:00
AskaEth
58ebb42f8c
fix: settings.js syntax error causing blank webUI, rewrite clean
2026-07-26 17:54:44 +08:00
AskaEth
b00e59d5bf
feat: UI test mode + per-game port configuration
...
- Settings: UI test mode toggle generates simulated telemetry data (speed/RPM/gear/laps...)
- Simulated data broadcasts via WebSocket and forwards to downstream devices
- game_ports config: per-game independent port overrides (shown when unified port off)
- Settings UI: game port list with save button, hidden when unified port enabled
- Sidebar: switch game reads game_ports[gameId] fallback to default_port
2026-07-26 17:49:18 +08:00
AskaEth
bbaef43cfd
feat: #5 - live telemetry cards on home page (speed/RPM/gear on top)
2026-07-26 17:32:36 +08:00
AskaEth
a08120c568
feat: 2,3,7,8,9 - search/sort, Docker, log viewer, .tsb backup
...
- Dashboard browser: search box + sort dropdown (name/category/author)
- Dockerfile + docker-compose.yml
- Debug page: log viewer button (/api/logs)
- Settings: .tsb full backup export (dashboards+scenes+config)
- F1 composite dashboard previously included
2026-07-26 17:32:09 +08:00
AskaEth
9091f2133d
feat: 1,4,6 - scene canvas editor, systemd service, F1 composite dashboard
...
- Scene editor: drag-drop dashboards from sidebar to canvas, reposition, delete placements, save/load
- Systemd service: turbosu.service with frpc dependency, restart on failure
- F1 composite: speed/RPM/lap/gear/throttle/brake/fuel/DRS, 16:9, NEXT ART font
2026-07-26 17:30:19 +08:00
AskaEth
e28be26ab3
fix: 7 bug fixes + port config with auto-restart
...
- HTTPException import added (was causing 500 on missing dashboard)
- game_manager.remove_plugin() restored (was AttributeError)
- api.js checks HTTP status codes, fails fast on errors
- sidebar game highlight only matches selected gameId
- scene resize handler uses stored canvas dims (was NaN)
- forwarder socket properly closed on listener stop
- telemetry port: use_unified_port toggle, off = per-game port, auto-restart on switch
2026-07-26 17:23:14 +08:00
AskaEth
858a5b4b93
feat: UDP data forwarding to multiple downstream devices
...
- DataForwarder class in listener: sends raw packets to all enabled targets
- REST API: GET/PUT /api/forward for managing targets
- Settings page: add/remove/edit forward targets with host/port/name/enabled
- Status endpoint includes forward_active count
- Config persisted in data/config.json via forward_targets array
2026-07-25 18:07:48 +08:00
AskaEth
7959d911e6
feat: WS sends selected_game_id on connect, gear indicator auto-adapts to game mapping (Forza/AC/iRacing)
2026-07-25 16:29:00 +08:00
AskaEth
2177e65fb4
feat: dashboard manifest supports 'supported_games' field, frontend filters by selected game
...
- DashboardTheme model adds supported_games (default: 'all')
- Built-in dashboards declare game compatibility:
speedometer/tachometer/gear_indicator -> all
lap_timer -> forza_horizon_5,forza_horizon_4,forza_motorsport,f1_24
- Dashboard browser filters themes by selected game
- Card shows '全' (all) or '限' (limited) badge
- Updated DASHBOARD_DEV.md with supported_games spec
2026-07-25 15:41:55 +08:00
AskaEth
63e3c8d607
refactor: standalone dashboard folders with index.html, zip-based import/export (.tsd/.tss/.tsp)
...
- Each dashboard is now a self-contained folder: manifest.json + index.html
- Auto-scan dashboards/ and data/dashboards/ on startup
- Export: .tsd (dashboards), .tss (scenes), .tsp (game plugins) - all zip format
- Dashboard index.html is complete standalone page (WS + data binding)
- Aspect ratio constraints handled in each dashboard's own JS
- Removed template-based dashboard rendering in favor of static serve
- Import via file upload endpoints, export via direct file download
2026-07-25 15:35:08 +08:00
Yei.J. (AskaEth)
d61bb61a83
feat: TurboSu initial release - racing telemetry dashboard
2026-07-25 15:23:40 +08:00