Skip to content

Releases: gaming09/falcor

v0.1.28-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 23:32

Exact restore of v0.1.25 / v0.1.22 baseline (rollback 0.1.26/0.1.27 MSE/list experiments). Amcrest listen deferred.

Tree matches eb73b23 except versionName=0.1.28, versionCode=29, and README version note.

v0.1.27-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 23:28

Falcor 0.1.27-debug (list-first hotfix)

P0: 0.1.26 showed “Failed to load cameras” while Frigate web worked. Fix = thinner MSE page-order + harden home list; revert listen-detection expansion that ran on every getCameras → deriveCameraCapabilities.

Root-cause hypothesis

0.1.26 expanded detectListenAudio / cameraHasListenCapableStream (plain RTSP + ffmpeg heuristics) on the path used by every home list load. If any camera threw inside that map, outer runCatching failed the entire list → HomeViewModel error UI. Exact throw site still uncertain; harden + thinner patch is the fix.

Changes

  • Revert detectListenAudio / cameraHasListenCapableStream to exact 0.1.25 (no plain-RTSP expansion on home load).
  • MSE-first page-order only: preferMseFirstLivePlayer(src) = !streamHasOpusOrWebRtcFriendlyAudio(src) — dropped hasListen gate so Amcrest plain RTSP gets mse.html first without detectListen expansion. Reolink opus/A/V remux stays webrtc-first.
  • Per-camera runCatching in getCameras + rebuildCapabilityMap — log+skip failures instead of blanking the grid.
  • Thin SPA retained: key(cameraName), block #cameras, require embed ?src=, reload-once→OkHttp. No silentAvAdvance.
  • versionName 0.1.27, versionCode 28.

Verify

  • Home grid loads (list-first scorecard).
  • FrontYard → roaming3 embed; roaming* MSE first; Reolink webrtc first.

APK

falcor-0.1.27-debug.apk attached (debug build).

v0.1.26-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 22:49

Falcor 0.1.26-debug

Built from 0.1.25 restore (eb73b23 / exact 0.1.22 + bump). Does not reintroduce 0.1.23 silentAvAdvance or 0.1.24 candidate chaos.

Changes

  • MSE-first for plain RTSP + listen-capable cameras (Amcrest AAC path Frigate web uses); webrtc-first unchanged for opus/A/V+listen remux (Reolink)
  • Embed lock: key(cameraName) fresh WebView; block #cameras / /cameras/; require (webrtc|mse|stream).html?src=; non-embed → reload intended once → OkHttp
  • Probe snackbar includes truncated href= for FrontYard→roaming3 proof
  • Unit tests: opus→webrtc-first; plain RTSP+listen→mse-first; embed URL helpers

Scorecard

  • no __falcorSilentAvAdvanceDone
  • plain-RTSP listen first URL is mse.html?src=
  • Reolink opus first URL is webrtc.html?src=

Residual risks

  • Amcrest listen still depends on MSE embed actually delivering AAC in WebView (Frigate web hears them; app path now matches)
  • If wrong-camera returns, drop Amcrest listen rather than reintroducing silent advance

v0.1.25-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 22:21

Falcor 0.1.25-debug

Exact restore of the 0.1.22 baseline (rollback of 0.1.23/24 SPA/MSE/nav changes). Fresh reinstall tag for A R — same code as 249e947 / v0.1.22-debug with only version bumped.

  • versionName 0.1.25-debug, versionCode 26
  • Tree matches 249e947 except app/build.gradle.kts + README version lines
  • Does not include MSE-first, silentAvAdvance, SPA guards, or key(cameraName) from 0.1.23/24

Prior known-good APK still available: https://github.com/gaming09/falcor/releases/download/v0.1.22-debug/app-debug.apk

APK: falcor-0.1.25-debug.apk

v0.1.24-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 22:09

P0 hotfix — open-camera correctness

Root cause: Live WebView could remain on (or redirect into) the Frigate SPA (#cameras / home). Probe src=? | other + mid-feed grey chrome + Compose title vs wrong OSD (e.g. roaming3 title / FrontYard video).

Fix (smallest):

  • key(cameraName) + destroy WebView on release — fresh instance per camera
  • Block #cameras / /cameras/ navigation
  • Require (webrtc|mse|stream).html?src= (or talk /live/webrtc/*?src=); reload intended embed once, then advance candidate / OkHttp
  • Probe snackbar includes truncated location.href
  • Freeze MSE/audio / prefer-listen ordering from 0.1.23

APK: falcor-0.1.24-debug.apk (versionName 0.1.24-debug, versionCode 25)

v0.1.23-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 21:55

Falcor 0.1.23-debug

MSE-first live player pages when the chosen go2rtc src is not WebRTC-friendly listen (no opus / A/V+listen remux markers) — plain rtsp:// (often AAC) matches Frigate mobile web MSE path. Opus / #video=+#audio= remux stays webrtc-first (Reolink must not regress).

  • livePlayerPageUrls: mse before webrtc when streamHasOpusOrWebRtcFriendlyAudio is false; both kept for fallback
  • WebRTC playing with aTracks==0 → silent candidate advance to MSE (do not wait for main-frame error)
  • Listen detection: plain RTSP + (camera.audio.enabled / ffmpeg AAC hints / aac in sources) counts for caps/snackbar; still skip audio-only *_webrtc helpers for video src
  • Keeps FalcorAudioProbe snackbar; native HTML5 controls; no applyMute resurrection; never hardcodes camera names

APK: app-debug.apk (versionName 0.1.23-debug, versionCode 24)

v0.1.22-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 21:14

Falcor 0.1.22-debug

Prefer listen-capable A/V live sources for the WebView player; skip audio-only go2rtc helpers (ffmpeg:…#audio=opus without video — typical *_webrtc / "WebRTC Audio") that caused Reolink KidsRoom/FrontYard video to stick on the spinner.

  • Live ?src= → main A/V key (e.g. KidsRoom) with #video= + #audio=, not KidsRoom_webrtc
  • Main/Sub FilterChips bind to state.quality (default MAIN); FalcorAudioProbe q= matches
  • Keeps FalcorAudioProbe snackbar; native HTML5 controls; no applyMute resurrection

APK: app-debug.apk (versionName 0.1.22-debug, versionCode 23)

v0.1.21-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 21:03

Falcor 0.1.21-debug

Listen-capable live src

  • Prefer camera.live.streams roles matching webrtc/audio/listen (e.g. WebRTC Audio) and go2rtc keys/sources with *_webrtc / #audio= / LISTEN markers.
  • Fallback to classic Main/Sub when no listen-capable stream exists (video-only + snackbar).

Main/Sub remaps src=

  • livePlayerPageUrls / webrtcLiveUrls no longer lock to stale caps.liveStreamName.
  • Every quality change re-resolves via resolvePreferredStreamName(preferSub=…) so webrtc.html?src= updates.

Kept

  • FalcorAudioProbe snackbar/log from 0.1.20 (verify src=*_webrtc).
  • Native HTML5 controls; no AppBar applyMute.

versionName 0.1.21 · versionCode 22

v0.1.20-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 20:56

Falcor 0.1.20-debug — probe-only listen-audio diagnostic

  • After live WebView is playing (onPageFinished + short delay, playing event, and ~2s later / on quality change), runs JS once that reports media state.
  • Snackbar (screenshot-friendly), e.g.:
    q=SUB | src=cam1 | webrtc | vMute=1 vol=1 | aTracks=0 vTracks=1 | audioEls=0 | hasListen=1
  • Logcat tag FalcorAudioProbe with fuller detail (full URL, candidateIndex, per-track fields, audio elements, AudioContext hint).
  • Probe-only: no StreamQuality MAIN-default change, no AppBar mute / applyMute / Tap-for-sound resurrection; native HTML5 controls + WebView-primary live kept (0.1.19 model).

Diagnosis notes (no product change)

  • camera.audio.enabled / hasListenAudio only inform caps UI — live URLs always request media=video+audio.
  • livePlayerPageUrls prefers caps.liveStreamName before preferSub resolution; MAIN/SUB toggle may load the same src if caps lock the name.
  • resolvePreferredLiveStreamName prefers sub role first when building caps.
  • Default quality remains SUB; WebRTC candidates try webrtc.html before mse.
  • Likely silence causes: HTML5 autoplay vMute=1, aTracks=0 (no audio on go2rtc stream), or same silent src for both qualities.

v0.1.19-debug

Choose a tag to compare

@gaming09 gaming09 released this 07 Sep 20:45

Falcor 0.1.19-debug

Native HTML5 controls stay visible on WebView live. User unmutes via the HTML5 bar.

Removed

  • AppBar mute IconButton + WebViewAudioController.applyMute on live
  • Tap-for-sound overlay
  • `controls=false` / CSS hide of `::-webkit-media-controls*`
  • `__falcorMuted` interval + volumechange re-sync that fought the page
  • Delayed applyMute storms after page load

Kept

  • WebView-primary live / PTT single surface
  • Minimal chrome JS (black background / object-fit only)
  • Audio focus for playback after manual unmute

versionName 0.1.19 · versionCode 20