Skip to content

Releases: fbezita/castla

Multiwindow Placement Update

Choose a tag to compare

@fbezita fbezita released this 13 Jun 17:33

What's new

This release reorganizes Castla's multiwindow system around a unified secondary placement model and improves overall stability for split, popup, touch, and OTT fallback behavior.

Multiwindow improvements

  • Unified the secondary placement model across left, right, top, bottom, and popup
  • Added drag-and-drop placement targets so apps can be dropped directly into the desired secondary position
  • Added a placement picker flow for changing the current secondary placement
  • Expanded app-pair presets to store not only two apps, but also their placement layout

Split / Popup behavior fixes

  • Improved splitbar interaction to use preview-first dragging and apply the resize only when released
  • Separated horizontal and vertical split ratio handling to prevent wrong splitbar positions after switching layout directions
  • Reduced splitbar touch interference by limiting drag hit areas to the thumb position
  • Improved pane boundaries and splitbar visibility without making app UI harder to touch
  • Fixed popup minimize / restore / close behavior
  • Fixed cases where minimized popup bubbles disappeared
  • Fixed popup transitions that could relaunch the background app or leave stale barriers behind

Streaming / layout stability

  • Relaxed unnecessary pane-size relaunch rules on the WebCodecs path
  • Kept stricter sizing rules where needed for JMuxer stability
  • Fixed a JMuxer issue where returning from split mode to single mode could leave the app centered with black side margins instead of restoring fullscreen
  • Improved layout transition consistency, touch mapping, and resize recovery behavior

OTT browser fallback

  • Improved OTT web fallback behavior for apps that do not render properly through direct mirroring
  • Forced Netflix fallback to use the embedded browser path with a desktop-style user agent and desktop viewport behavior
  • Reduced cases where mobile browser app-handoff pages interrupted playback access

Internal quality

  • Added regression coverage for placement routing, launch reuse decisions, split ratio persistence, resizer axis handling, and OTT browser policy behavior
  • Continued stability work across layout transitions, popup state handling, and launch recovery flow

v2.4.7 - Secure certificate handling and backend auth token split

Choose a tag to compare

@fbezita fbezita released this 12 Jun 01:21

What's new
This release focuses on strengthening application security by isolating backend authentication tokens, loading certificates securely, and optimizing TLS certificate caching.

Secure certificate handling and build secrets

  • Removed the hardcoded Castla certificate password from the Android app and configured it to load from env/local build properties
  • Loaded CASTLA_CERT_TOKEN and CASTLA_RELAY_TOKEN from build-time secrets instead of embedding them in the app source code
  • Added a fail-fast mechanism to immediately halt execution when certificate or relay secrets are missing at runtime

Optimized certificate caching and verification

  • Cached downloaded TLS certificates and configured them to refresh only when missing, invalid, expired, or near expiry
  • Restricted proactive remote certificate refresh checks to once per day, maximizing the reuse of healthy local certificates
  • Added PKCS12 certificate expiry inspection and introduced dedicated unit tests for the refresh policy

Backend authentication separation

  • Split Castla backend authentication so that /api/castla/cert uses CASTLA_CERT_TOKEN and /api/castla/relay uses CASTLA_RELAY_TOKEN
  • Retained device IP lookup during certificate-token authentication and aligned backend configuration with the new token structure

Notes

  • This is a security and optimization release focusing on credential isolation and certificate caching logic
  • Please ensure that CASTLA_CERT_TOKEN and CASTLA_RELAY_TOKEN are properly configured in your build environment before deploying

v2.4.6 - Launch and split mirroring stability improvements

Choose a tag to compare

@fbezita fbezita released this 11 Jun 10:24

What's new

This release focuses on mirroring startup stability, split layout transitions, and secure relay recovery.

Improved launch and stream recovery

  • Improved startup reliability when the first frame is delayed or missing
  • Reduced false ready/reuse decisions caused by stale stream metadata
  • Improved automatic recovery flow when a stream does not recommit correctly
  • Added deeper diagnostics for launch, barrier, stream bootstrap, and first-frame timing

Better split and layout transition behavior

  • Fixed cases where split mode could briefly show an incorrect temporary layout before settling
  • Improved split target handling so the correct pane sizes are applied from the beginning of launch
  • Improved relaunch behavior across single, split, and popup transitions
  • Refined same-target no-op logic so relaunch is skipped only when the current state is truly reusable

Certificate and relay reliability

  • Added automatic recovery for corrupted dynamic PKCS12 certificates
  • Improved HTTPS relay startup reliability when local certificate state is invalid

Notes

  • This update mainly targets stability, recovery behavior, and internal diagnostics
  • No major user-facing workflow changes were introduced, but mirroring startup and recovery should feel more reliable

v2.4.3 - UI Layout Modes, Native IME Support & Stability Watchdog

Choose a tag to compare

@fbezita fbezita released this 07 Jun 01:16

이번 버전에서는 아키텍처 개편, 다중 가상 디스플레이 대칭 제어, 블랙스크린 자가치유 와치독, 그리고 WebCodecs 가속을 위한 HTTPS 관련 안내가 반영되었습니다.

🌟 주요 업데이트 사항 (Key Updates)

  1. WebCodecs 하드웨어 가속을 위한 HTTPS(Secure Context) 필수 안내
    • 테슬라 브라우저에서 초저지연 H.264 하드웨어 디코딩(WebCodecs API)을 활성화하려면 브라우저 보안 정책상 HTTPS 연결이 필수적입니다.
    • HTTPS 접속이 유효한 환경에서만 WebCodecs 디코더가 기동하며, 일반 HTTP 연결 시에는 자원을 덜 소모하는 JMuxer (MSE) 폴백 모드로 디코더가 자동 전환되어 동작합니다.
  2. 가상 디스플레이 내 네이티브 IME(키보드) 지원
    • 신뢰할 수 있는 가상 디스플레이(Trusted VD) 내부에서 삼성 키보드, Gboard 등 디바이스 본래의 키보드를 직접 띄워 타이핑할 수 있도록 우선 지원합니다. (자체 Castla IME 프록시는 폴백으로 동작)
  3. 다중 가상 디스플레이(VD) 및 대칭 제어
    • 다중 가상 디스플레이 동시 구동 및 백그라운드 태스크의 디스플레이 매핑을 정확하게 보정하는 대칭 제어가 가능해졌습니다.
  4. 자가치유 와치독(Self-Healing Watchdog) 탑재
    • 웜 스타트 시 발생하는 블랙스크린 문제를 해결하기 위해, 1초간의 서피스 바인딩 검증 및 프레임 정체(Stagnation) 감지 시 자동으로 기존 태스크를 정리하고 새로 띄우는 Clean Launch Fallback 안전장치를 추가하였습니다.
  5. 다양한 화면 레이아웃 모드 지원
    • 런처 사이드바를 통해 싱글(Single), 분할(Split)(듀얼 패널 멀티태스킹), 팝업(Popup)(크기 조절 가능한 플로팅 창) 레이아웃 모드 간 전환을 완벽히 지원합니다.
  6. 앱 내 자동 업데이트 체크 주소 교체
    • 최신 버전 업데이트 및 APK 다운로드 링크를 새 레포지토리(fbezita/castla)로 이전하였습니다.