Commit Graph
100 Commits
Author SHA1 Message Date
AskaEth 93d5f38431 docs: changelog date corrected 2026-07-26 23:16:57 +08:00
AskaEth 89b44f1288 docs: update README - 极速中枢, 8 dashboards, market, recording 2026-07-26 23:16:34 +08:00
AskaEth 93d4ec308a fix: remove -created sort, field not in base collection 2026-07-26 22:52:12 +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 5e3d565b38 fix: remove -created sort (field doesnt exist), use -name 2026-07-26 22:05:29 +08:00
AskaEth b434be2fd1 fix: dashb_pending boolean as string for form data 2026-07-26 21:54:42 +08:00
AskaEth b9359b3b47 feat: '我的' tab - user content management with update/delete 2026-07-26 21:46:24 +08:00
AskaEth 59887d7d46 feat: PWA icon + download count increment on market install 2026-07-26 21:43:14 +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 e6344b1916 feat: validate .tsd on upload, auto-extract manifest metadata 2026-07-26 21:34:36 +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 f4a0869af5 fix: market auth error handling, identity field forwarding 2026-07-26 21:16:16 +08:00
AskaEth 5735602f7d refactor: separate market from categories in sub-sidebar 2026-07-26 21:11:40 +08:00
AskaEth 242e451ca7 feat: CHANGELOG.json as single source of truth 2026-07-26 21:07:15 +08:00
AskaEth 273bb8f7fb fix: use dashb_pending field name for upload approval 2026-07-26 20:57:07 +08:00
AskaEth 91ee54c2c5 fix: market upload sets status=pending by default 2026-07-26 20:54:37 +08:00
AskaEth 70df32bb07 feat: market login/logout/upload flow with UI state management 2026-07-26 20:44:11 +08:00
AskaEth 3bb4de6de6 fix: PageRecord.init() missing in app.js 2026-07-26 20:41:15 +08:00
AskaEth 1303529d31 chore: add favicon 2026-07-26 20:37:01 +08:00
AskaEth 8da69b5ef8 feat: custom SVG logo in sidebar and topbar 2026-07-26 20:35:31 +08:00
AskaEth e7e93d9664 style: 极速中枢 display name in WebUI 2026-07-26 20:25:59 +08:00
AskaEth 3db849b681 chore: market_url to production https://turbosu.yeij.top 2026-07-26 20:14:33 +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 3514612f7a feat: #8 i18n support (zh/en toggle) 2026-07-26 18:45:23 +08:00
AskaEth 71d039ba82 feat: #4 shift lights + #5 phone dash + #6 PWA support 2026-07-26 18:43:59 +08:00
AskaEth ea32fa841e feat: #3 tire temperature matrix dashboard (FL/FR/RL/RR heatmap) 2026-07-26 18:42:36 +08:00
AskaEth a2e7141338 feat: #2 G-force circle dashboard + .tsr export/import
- g_force dashboard: acceleration vector on 2G ring, lat/long G readout
- .tsr files export/import via API and UI
- Composite dashboard reverted (G-force is standalone)
2026-07-26 18:41:35 +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 e97d6ee36f fix: RPM unit label to 'rpm' matching displayed value 2026-07-26 18:34:08 +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 1d702103f1 fix: suppress WebSocket keepalive timeout tracebacks from stderr 2026-07-26 18:28:45 +08:00
AskaEth 9f009a02f5 fix: single log file per startup - singleton handler shared across all modules 2026-07-26 18:27:24 +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 ff0abce5c0 fix: untrack old turbosu.log 2026-07-26 18:22:31 +08:00
AskaEth 5d5af6b6a7 feat: timestamped log files per startup, auto-cleanup to 20 max 2026-07-26 18:22:22 +08:00
AskaEth 16ada23d61 fix: timestamp overflow in test packet (uint32) - use & 0xFFFFFFFF 2026-07-26 18:21:17 +08:00
AskaEth 3b7edc4f14 fix: game plugin cache + test mode NullPointer crash on shutdown
- game_manager: add _scanned cache, _ensure_scanned() avoids re-scanning on every API call
- test_mode: fix AttributeError when stop_test_mode called before start
- listener: safe stop_test_mode with null check
2026-07-26 18:19:03 +08:00
AskaEth 90ab5f9c0b chore: increase log rotation to 20 backup files 2026-07-26 18:12:22 +08:00
AskaEth 69b73e8ce0 refactor: extract test data generator to server/test_mode.py
- TestDataGenerator class: builds 324-byte Forza packets, runs async loop at 30fps
- Simulated data passes through _handle_packet (parser -> WS -> forwarder)
- Listener delegates to test_mode.get_generator()
- Cleaner separation: listener.py no longer contains test logic
2026-07-26 18:07:19 +08:00
AskaEth 5690d792a5 fix: use struct.pack_into for safe 324-byte test packet construction 2026-07-26 17:59:22 +08:00
AskaEth 37d9f94505 fix: test mode forward proper 324-byte Forza-format packet to downstream devices 2026-07-26 17:57:59 +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 41da7c03d5 fix: default gear N, defer initial draw until canvas sized 2026-07-26 13:37:29 +08:00
AskaEth a51cec79c1 fix: suppress noisy WS keepalive timeout tracebacks 2026-07-25 21:26:58 +08:00
AskaEth 7bafe73d6d fix: sidebar toggle always accessible when collapsed 2026-07-25 21:24:53 +08:00
AskaEth 5854b4cc57 fix: add debounce to theme toggle to prevent flash-back 2026-07-25 21:22:34 +08:00
AskaEth 7ca1053175 fix: reduce vw% for better scaling at small window sizes 2026-07-25 19:12:35 +08:00
AskaEth 4843c61841 fix: 8k mark label above gauge line instead of below 2026-07-25 19:10:05 +08:00
AskaEth 3040878e96 style: RPM right by half char more 2026-07-25 19:00:00 +08:00
AskaEth d524f5273c style: RPM number right by one character width 2026-07-25 18:59:15 +08:00
AskaEth f9afec786c style: RPM number higher and righter 2026-07-25 18:58:20 +08:00
AskaEth c121a902f9 style: wider pedals area 2026-07-25 18:57:01 +08:00
AskaEth 545b06d427 style: move pedals left to avoid clipping 2026-07-25 18:56:02 +08:00
AskaEth 3ad223f8d6 style: 2x throttle/brake labels and bars 2026-07-25 18:55:10 +08:00
AskaEth ae70608db0 style: RPM number up, gear 2x, scale marks outward 2026-07-25 18:53:12 +08:00
AskaEth eeb9ef68a6 fix: eliminate log spam crash - use plugin parser on start, silence noisy fallback warnings 2026-07-25 18:49:25 +08:00
AskaEth e42ad901d4 style: 2x all fonts in composite dashboard 2026-07-25 18:47:28 +08:00
AskaEth 3822f85b95 fix: theme toggle double-click bug - remove duplicate listener 2026-07-25 18:15:06 +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 8d7cf09bb5 style: RPM number moved higher to sy-210 2026-07-25 17:59:18 +08:00
AskaEth 4ff874bd97 style: increase gap between RPM number and unit label 2026-07-25 17:58:47 +08:00
AskaEth acc698c1cb style: larger NEXT ART font for RPM display 2026-07-25 17:52:58 +08:00
AskaEth 27161ca842 style: larger right-side gauges and text 2026-07-25 17:51:57 +08:00
AskaEth 63e368415f fix: #content background matches dark navy 2026-07-25 17:51:21 +08:00
AskaEth 9c264c88f3 style: background to dark navy blue 2026-07-25 17:51:11 +08:00
AskaEth 478a665447 style: speed up, right-side data further inward 2026-07-25 17:50:22 +08:00
AskaEth a0be805efb style: move speed right to align with shifted RPM gauge 2026-07-25 17:49:04 +08:00
AskaEth 206b4b172a style: gear left 12%, 2x larger font; pedals/status narrower 2026-07-25 17:48:06 +08:00
AskaEth f2f9565436 fix: arc scale marks use same path-distance angle as progress 2026-07-25 17:46:32 +08:00
AskaEth 20fd2964b2 fix: scale marks and progress both on full arc+line path, aligned 2026-07-25 17:42:22 +08:00
AskaEth 86d8120a10 fix: progress fills arc only, matching scale marks on arc 2026-07-25 17:40:59 +08:00
AskaEth 21d57884c2 fix: move arc center right to 360 to prevent left overflow 2026-07-25 17:37:48 +08:00
AskaEth 7f529bcfc6 fix: move arc center left, shorten line to 82% to prevent overflow 2026-07-25 17:36:45 +08:00
AskaEth 7eb1ef4b81 fix: canvas ctx.font uses NEXT ART font 2026-07-25 17:36:16 +08:00
AskaEth e719127305 fix: move @font-face inside <style> tag 2026-07-25 17:34:51 +08:00
AskaEth 9c634277e5 feat: NEXT ART Heavy font for composite dashboard, local at static/fonts/ 2026-07-25 17:33:46 +08:00
AskaEth a0d41bfdaf fix: progress arc also needs false (was true, drawing near-complete circle) 2026-07-25 17:30:30 +08:00
AskaEth b9b2d51601 fix: remove lineJoin round, skip progress for very low RPM to prevent artifacts 2026-07-25 17:27:20 +08:00
AskaEth 2aabd54d50 fix: remove lineCap round to eliminate solid circle artifacts 2026-07-25 17:25:45 +08:00
AskaEth aedbcced58 fix: arc direction - use clockwise for 90° short arc (╭ shape) 2026-07-25 17:24:42 +08:00
AskaEth 9d34f30daf refactor: continuous arc+line stroke for seamless gauge (no visible tick gaps) 2026-07-25 17:21:56 +08:00
AskaEth 6b810e3290 style: roundRect ticks for smoother gauge appearance 2026-07-25 17:19:07 +08:00
AskaEth 77a19ef29d style: 2x thicker gauge overall (108x36px base) 2026-07-25 17:17:47 +08:00
AskaEth a14ca6a607 style: arc ticks taper from 2x at bottom to 1x at top 2026-07-25 17:17:02 +08:00