xiaosi
32859c3598
chore: fully clear remote dist including hidden files
2 weeks ago
xiaosi
2a10f422e1
chore: purge macOS junk from dist before deploy
2 weeks ago
xiaosi
5ed38a488f
chore: exclude macOS junk files from deploy tarball
2 weeks ago
xiaosi
530f6b8fec
chore: add shared frontend deploy script
Provide scripts/deploy.sh and npm run deploy for build + rsync-like
upload to the production nginx dist directory over SSH.
2 weeks ago
xiaosi
e4854065a9
fix: keep monitor map on globe projection
is2D previously forced mercator for route editing and flattened the
monitor overview. Split projection control; monitor sets globe,
route editor sets mercator only while attached.
2 weeks ago
xiaosi
4b958aacb2
fix: map route list cards from waypointCount only
List API never returns waypoints[]; drop the dead array branch and
read waypointCount directly.
2 weeks ago
xiaosi
541c3a283c
fix: show route waypointCount from list API
Route list returns waypointCount, not waypoints[]. Cards were
always rendering 0 because the frontend only checked the array.
2 weeks ago
xiaosi
d963a32bd0
fix: reload task data when switching management tabs
Tabs only updated the query view and never re-fetched, so plans,
executions and routes stayed stale until full remount.
2 weeks ago
xiaosi
f22d49e0aa
fix: rebuild route layers after map style/projection settle
setProjection can wipe custom sources; wait for style ready and
re-add route layers on style.load so edit polylines stay visible.
2 weeks ago
xiaosi
a23c8cc711
fix: restore globe projection without 3D pitch on route editor close
2 weeks ago
xiaosi
72d3bed3a3
fix: make route editor map resize and fit after layout
Wait for editor host size, switch 2D mercator, and refit after
resize so short routes are visible when editing.
2 weeks ago
xiaosi
127c4ea195
fix: fit route editor map to waypoints on edit
Route points were synced into Mapbox sources, but the shared map
camera stayed on the overview, so edited routes looked missing.
2 weeks ago
xiaosi
2ea2b4c331
fix: stop native play() failures from forcing play-url refresh
Normalize LivePlayer video.play() rejections to HlsError so Monitor
marks fatal instead of fromRetry-refreshing /play-url in a burst.
2 weeks ago
xiaosi
a838691b59
fix: keep monitor play-url TTL guard minify-safe
esbuild turned Boolean(force) && fresh into !!!force && fresh,
so production always bypassed the cache and refetch hammered
/play-url. Use explicit booleans instead.
2 weeks ago
xiaosi
68936d64e3
fix: skip fake playUrl writes in Media ensurePlayUrl
Preserve the control-plane toast and avoid treating fake:// as a
real playable URL for open/toggle state.
2 weeks ago
xiaosi
8237204293
fix: tighten Media openLive opening lock around close and rejoin
2 weeks ago
xiaosi
78f387c890
feat: cache media play-url by session and debounce open
2 weeks ago
xiaosi
91e88fb2aa
feat: coalesce monitor play-url by session with TTL reuse
2 weeks ago
xiaosi
8a0d4c08bc
docs: add live play-url session cache implementation plan
Upgrade Monitor refreshPlayURL to session coalesce + TTL reuse,
and add Media opening lock with the same ensure pattern.
2 weeks ago
xiaosi
0bfcd9cd67
docs: repair play-url cache spec code fence
2 weeks ago
xiaosi
31e9c0ff8e
docs: add live play-url session cache design
Coalesce in-flight play-url by session, reuse until 30s before
expiry, and align Monitor + Media open paths.
2 weeks ago
xiaosi
e9b28cedd8
fix: silence device poll toasts and unblock detail id switch
2 weeks ago
xiaosi
1c6cf6a2cc
feat: poll open device detail every 5s
2 weeks ago
xiaosi
cc92ad5ef9
feat: poll monitor device status every 5s
2 weeks ago
xiaosi
1b67e09b0c
feat: apply single dock/drone detail into devices store
2 weeks ago
xiaosi
af29c062d3
docs: add monitor device polling implementation plan
Page-local 5s Monitor load polling and DeviceDetail current-id
detail refresh with store apply helpers.
2 weeks ago
xiaosi
d198402f36
docs: tighten monitor polling spec ambiguities
2 weeks ago
xiaosi
c04c9119fa
docs: add monitor device polling design
Define 5s Monitor full load polling and per-open DeviceDetail
detail-only refresh; DevicesView stays manual.
2 weeks ago
xiaosi
a00b3643dc
docs: align onPlayError policy comment with branches
2 weeks ago
xiaosi
3f6e31fa4f
docs: clarify live onPlayError stabilize policy
2 weeks ago
xiaosi
0ca23c8a45
chore: align LivePlayer Hls config comment with retries
2 weeks ago
xiaosi
42fd09ee74
fix: guard LivePlayer media recover to one attempt
2 weeks ago
xiaosi
5eda25a2fb
fix: stabilize LivePlayer for normal HLS live
Disable lowLatencyMode, widen fragment retries, extend startup 404
window to 30s, and recover media fatals once before bubbling.
2 weeks ago
xiaosi
f57d630188
docs: add live playback stabilize plan
Tasked LivePlayer HLS softening, startup window, media recover, and
onPlayError policy verify before build/deploy smoke.
2 weeks ago
xiaosi
34061892ef
docs: add live playback stabilize design
Frontend-only plan to reduce dock live stutter/reconnect: normal HLS
config, longer startup 404 window, tighter play-url rebuild policy.
2 weeks ago
xiaosi
1c7d5e8e51
fix: close confirm dialog when clicking cancel
Custom DialogPlugin onClose replaced the default hide path, so Cancel
resolved false but left the modal open. Hide on cancel/close and settle once.
2 weeks ago
xiaosi
d58ca74bdd
feat: gate live reopen until session stopped
Keep the old streamSessionId after stop, poll until phase=stopped before
allowing join again, disable controls while stopping, and retry join on
57007 for Monitor and MediaView.
2 weeks ago
xiaosi
e0a858f36b
docs: add live stop phase gate design
Specify stopping-gate behavior: keep old streamSessionId until phase=stopped,
disable reopen controls meanwhile, and retry join on 57007.
2 weeks ago
xiaosi
af381838a3
fix: retry HLS 404 during live startup window
Treat first-manifest 404 as recoverable: backoff-reload the same signed
play URL for 15s instead of failing or refreshing /play-url. Keep
heartbeat independent, and only fatalize 403/TLS/CORS or exhausted 404.
3 weeks ago
xiaosi
822fb09f5a
fix: drop orphan live leases after late join
Invalidate in-flight join with generation/disposed, leave returned sessions
immediately when the page already left, release via keepalive on pagehide,
and rejoin on heartbeat/play-url 57006 instead of refreshing stale URLs.
3 weeks ago
xiaosi
80394271de
fix: clear media lists when switching tabs
Drop cached liveStreams/videos on same-route tab changes and reload
fresh list data so stale live center cards do not linger.
3 weeks ago
xiaosi
ebf9dd129e
fix: clear media live session when leaving live tab
Same-route tab switches do not unmount MediaView, so drop active
play state, heartbeat, and viewer lease when leaving 直播中心.
3 weeks ago
xiaosi
3c76b395c4
fix: show full live video without cropping
Use object-fit: contain so the monitor live frame keeps the whole picture.
3 weeks ago
xiaosi
3bb2beb3b7
fix: guard live open clicks and coalesce play-url fetches
Prevent double join while opening, share in-flight play-url
requests across poll/heartbeat/error paths, and keep AbortError local.
3 weeks ago
xiaosi
bf3237806e
feat: play media-center live streams inside cards
Replace window.open play-url with in-card LivePlayer,
keeping viewer lease heartbeat while watching.
3 weeks ago
xiaosi
599146f35d
fix: treat AbortError as recoverable live pause
Chrome power-saving pause must not refresh play-url;
show a resume button and play from user gesture instead.
3 weeks ago
xiaosi
999fbf82fc
fix: stop play-url retry storm on HLS TLS failures
vpull HTTPS handshake fails with ERR_SSL_VERSION_OR_CIPHER_MISMATCH;
refreshing auth_key cannot fix it and only floods Network.
3 weeks ago
xiaosi
ad7e29dd5d
fix: mute LivePlayer so live autoplay can start
Chrome/Edge block unmuted autoplay after async join;
silent play() failures left a black LIVE frame.
3 weeks ago
xiaosi
0bf6107b31
feat: wire stop-live and play error rebuild
3 weeks ago
xiaosi
3da0c94e2a
fix: harden live retry, stop confirm, heartbeat races
3 weeks ago