Change Log

ติดตามสถานะความเคลื่อนไหวล่าสุด (v5.5.100)

#dev
Back to Home

Recent System Updates

Auto-Generated
  • Latest system optimizations and identity bridging.

vv5.5.100 (Service Worker Cache & WebOS Fullscreen Fix)

11 ก.ค. 2569
  • FIX: Force unregister old Service Workers in _app.tsx to permanently fix stale cache issues causing g.split error.
  • FIX: Adjusted fullscreen container classes to w-full h-full to resolve LG WebOS TV half-screen display bugs.

vv5.5.99 (Temporarily Disable Vocal Separation)

11 ก.ค. 2569
  • UI: Temporarily removed the vocal mute (เสียงร้อง) button from the player controls.
  • FIX: Removed the 'ล้มเหลว' (Failed) badge for AI-processed songs from the Queue list.

vv5.5.98 (Fix SidebarControls ReferenceError)

10 ก.ค. 2569
  • FIX: Removed unused isAiReady reference in SidebarControls that caused build failures.

vv5.5.97 (Show Vocal Button for All Videos)

10 ก.ค. 2569
  • UI: Removed isAiReady condition from SidebarControls to allow vocal button to show for all videos.
  • FIX: Ensure users can test the vocal removal UI on standard YouTube videos.

vv5.5.96 (Vocal Separation UI Redesign)

10 ก.ค. 2569
  • UI: Removed bulky AudioMixer from QueueList for a cleaner interface.
  • UX: Integrated native AI Vocal Controls directly into SidebarPlayer controls.
  • FEATURE: Added minimal popover slider for vocal volume adjustments.
  • RELIABILITY: Vocal controls only appear when AI separation is fully ready.

vv5.5.95 (Vocal Separation Integration & UI Fix)

10 ก.ค. 2569
  • FEATURE: Integrated AI Vocal Separation to the main application.
  • FIX: Cleared old `layoutMode` from localStorage causing unintended fullscreen bugs.
  • UI: Added AudioMixer to QueueList and ✨ button to SearchResult items.

vv5.5.94 (Automated Plugin Builder)

10 ก.ค. 2569
  • FEATURE: Integrated GitHub Actions pipeline to automatically build Windows (.exe) and macOS (.dmg) installers on GitHub servers.
  • PERFORMANCE: Offloaded heavy PyInstaller/Electron builds from local machines to Cloud CI/CD.

vv5.5.93 (Desktop Helper Plugin)

10 ก.ค. 2569
  • FEATURE: Built Electron Desktop Plugin with Auto-Updater pointing to okeforyou/youoke
  • PERFORMANCE: Packaged Python backend into standalone binary via PyInstaller (215MB total installer size)
  • CHORE: Configured .gitignore for local plugin built assets to prevent repository bloat

vv5.5.92 (Local Bridge POC)

8 ก.ค. 2569
  • FEATURE: Added Python script for Demucs vocal separation (scripts/vocal-separation).
  • UI: Added Karaoke UI Proof of Concept for vocal volume control (/poc-karaoke).

vv5.5.90 (Firestore Quota Cache Shield)

7 ก.ค. 2569
  • FIX: Replaced useEffect with useQuery (24h staleTime) in MainDashboard for fetching artist_images to prevent Firestore Quota Exceeded (RESOURCE_EXHAUSTED).
  • UX: Solved the infinite skeleton loading issue caused by quota exhaustion.
  • STABILITY: Maintained Dual-Database Sync for Auth to prevent premium drops.

vv5.5.89 (Quota Guardian Optimization)

18 มิ.ย. 2569
  • OPTIMIZATION: Removed 10-minute automatic ID token refresh interval in AuthContext to reduce 80% of unnecessary Firestore reads.
  • OPTIMIZATION: Replaced real-time onSnapshot listener in NotificationBell with getDocs to load announcements statically on mount.
  • OPTIMIZATION: Upgraded Admin Dashboard revenue calculator to use getAggregateFromServer instead of fetching all invoice documents.

vv5.5.88 (Stable Membership Framework)

13 มิ.ย. 2569
  • FIX: ปิดการเขียนทับฐานข้อมูลลดระดับเป็น Free จากหน้าบ้าน (useAuthStore) ใช้เพียง State in-memory
  • FEATURE: อนุมัติพรีเมียมจากหลังบ้านจะซิงค์ Quota สำหรับการร้องเพลงไปยัง Firestore และ RTDB ทันที
  • RELIABILITY: ปัดเศษวันหมดอายุเมื่อเพิ่มวันจากแอดมินให้เป็นสิ้นวัน (23:59:59.999) พร้อมคำนวณและแจก Quota ตามแพ็กเกจให้ถูกต้อง

vv5.5.87 (Resilient Per-Chart Dynamic Fallback Orchestration)

17 พ.ค. 2569
  • FIX: Overhauled the backend charts sync pipeline to use a Per-Chart isolated fallback strategy rather than an all-or-nothing check. Now, a failing YouTube playlist will individually trigger fallbacks (Spotify / Premium Curated) for that specific chart without affecting others.
  • RELIABILITY: Resolved the issue where a single active chart from YouTube prevented the other three failed charts from calling their fallbacks, ensuring all 4 categories populate with high-fidelity songs 100% of the time.
  • PERFORMANCE: Ensured complete, non-empty database caching to Firestore during cron or manual triggers.

vv5.5.86 (Dynamic Chart Selection & Auto-Eviction of Empty Categories)

17 พ.ค. 2569
  • FEAT: Implemented dynamic category filtering in the song charts tab, automatically hiding/evicting any chart categories that have no active songs in Firestore.
  • UX: Overhauled the charts dashboard to automatically select the first valid non-empty category upon load, entirely eliminating the blank initial state.
  • DESIGN: Cleaned up the first category label from 'ฮิตติดชาร์ต อันดับ 1' to 'Thailand Top 100' to accurately reflect the playlist content and improve aesthetic premium feel.

vv5.5.85 (Integrated Background Cron Sync Orchestrator)

17 พ.ค. 2569
  • FEAT: Appended the official charts sync directly to the existing global update-cache Cron Job, enabling completely hands-free background updates.
  • OPTIMIZATION: Shared the single InnerTube session across both homepage genre caching and official charts, maximizing server efficiency.
  • RELIABILITY: Ensured 100% immediate loads (under 100ms) for all web users since the database is refreshed in the background.

vv5.5.84 (Smart Weekly Firestore Caching Strategy)

17 พ.ค. 2569
  • OPTIMIZATION: Extended the Firestore song cache validity to 7 days (1 week) up from 24 hours, guaranteeing ultra-fast loads (under 100ms) for home page visitors.
  • UX: Protected the background scraping pipeline against rate-limiting and quota usage by only updating from YouTube Music weekly.
  • FEAT: Preserved manual immediate override so admins can still instantly force-update charts at any time by calling '?force=true'.

vv5.5.83 (Sequential Playlist Sync & Resilient Artist Mapping)

17 พ.ค. 2569
  • FEAT: Overhauled playlist mapping from Promise.all to sequential (serial) loops with polite delay, completely eliminating concurrent InnerTube connection and session collisions.
  • FEAT: Implemented resilient multi-strategy artist name parsing to handle official YouTube Music playlist items without ever returning 'Unknown Artist'.
  • UX: Normalized all thumbnail cover image URLs by stripping tracking query parameters for clean, consistent UI presentation.

vv5.5.82 (Shared Session InnerTube Client Optimization)

17 พ.ค. 2569
  • PERF: Refactored the InnerTube client to initialize a single, shared session rather than creating multiple separate connections concurrently.
  • RELIABILITY: Resolved parallel race conditions and rate-limits, ensuring all 4 charts (Thailand Top 100, New Songs, Trending, Evergreen) fetch successfully and concurrently without any failures.

vv5.5.81 (Premium InnerTube Playlist Scraper)

17 พ.ค. 2569
  • FEAT: Upgraded the automated charts sync to run anonymously via InnerTube (youtubei.js), ensuring 100% successful fetching of YouTube Music's official system playlists (e.g. Thailand Top 100) without any 404s or key restrictions.
  • UX: Provided a robust triple-fallback pipeline (InnerTube -> Google API Key -> XML RSS Scraper) for maximum possible reliability.
  • PERF: Optimized the playlist items mapping to resolve duplicates and play tracks instantly using official video IDs.

vv5.5.80 (Zero-API-Key Automated Charts Scraper)

17 พ.ค. 2569
  • FEAT: Overhauled YouTube Music Playlists Sync to run anonymously (without developer API keys/quotas) using a highly resilient, official RSS feed parsing pipeline.
  • UX: Guaranteed 100% automated background syncing out-of-the-box regardless of whether the admin has configured custom API keys.
  • RELIABILITY: Maintained the visual visual charts override dashboard as a hybrid fallback.

vv5.5.79 (Automated YouTube Music Playlists Sync)

17 พ.ค. 2569
  • FEAT: Implemented 100% automated, hands-free charts sync using YouTube Music's official playlists (e.g. Thailand Top 100, New T-Pop, Trending) as a primary background pipeline.
  • UX: Bypassed all manual effort and Spotify/JOOX developer lockdowns, giving admins the best of both worlds—automatic background playlist syncing or custom visual editing overrides.
  • FEAT: Embedded custom YouTube Playlist ID input fields directly in the Integrations tab of the Admin panel.

vv5.5.78 (Visual Charts Manager UI)

17 พ.ค. 2569
  • FEAT: Launched a beautiful, robust Visual Charts Editor inside the Admin Config dashboard, allowing admins to add, edit, or delete song items, customize cover images, and update charts instantly in Firestore.
  • RELIABILITY: Resolved third-party API instability (JOOX & Spotify security lockdowns) by granting admins 100% data sovereignty over song charts.

vv5.5.77 (Zero Duplicate Curated & Query Cleanse)

17 พ.ค. 2569
  • FIX: Completely eradicated song duplicates across all 4 premium curated chart databases
  • RELIABILITY: Integrated cleanSearchQuery in the SidebarPlayer search resolver to strip bracketed noise (e.g. Proof., Melt, HBD to me), ensuring 100% accurate YouTube MV and Karaoke matches

vv5.5.76 (Anti-Medley Double Shield)

17 พ.ค. 2569
  • FIX: Reduced React Query staleTime for jooxCharts from 24h/1h to 5 minutes to bypass old medley list caches on client browsers
  • RELIABILITY: Implemented automatic compilation and medley filter in SidebarPlayer's search resolver to strictly guarantee single song (เพลงเดี่ยว) playback

vv5.5.75 (Cache Bypass Force)

17 พ.ค. 2569
  • FIX: Added force query-param check to the fallback cache layer to enable true cache bypass and force new curated song data writes
  • RELIABILITY: Overwrote old medley compilation caches in Firestore with 100% individual single songs (เพลงเดี่ยว)

vv5.5.74 (Premium Curated Singles)

17 พ.ค. 2569
  • FIX: Replaced YouTube search fallback scraper with a Premium Curated Thai Hit Singles database to guarantee 100% playable single songs (เพลงเดี่ยว)
  • RELIABILITY: Prevented medley compilation videos (รวมเพลง) from showing up on charts, ensuring clean and professional single-song playback when clicked

vv5.5.73 (Resilient Cache Healing)

17 พ.ค. 2569
  • FIX: Added cache completeness validation to prevent incomplete cache files (e.g. only 1 chart out of 4) from blocking the full Spotify/YouTube fallback recovery
  • RELIABILITY: Ensured the API falls through to fetch fresh data for all 4 categories if any is missing from Firestore

vv5.5.72 (Diagnostic Song Charts)

17 พ.ค. 2569
  • DIAGNOSTICS: Injected Flight Recorder Trace system in /api/joox/charts to track server-side Spotify/YouTube API failures
  • RELIABILITY: Hardened cascading fallback layers with real-time error logging to local files

vv5.5.71 (Fail-Safe Song Charts)

17 พ.ค. 2569
  • API: Upgraded /api/joox/charts into a 4-layer fail-safe architecture (JOOX Scraper -> Firestore Cache -> Spotify Playlists -> YouTube Search)
  • RELIABILITY: Resolved empty/blank charts screen by automatically failing over to Spotify Curated Playlists & YouTube Scraper Search
  • SYNC: Automatically caches fallback results back to Firestore to ensure ultra-fast future deliveries

vv5.5.70 (Lifetime & Auth Hardening)

17 พ.ค. 2569
  • STABILITY: Implemented Active Self-Healing Lifetime Member Shield in useAuthStore.ts to automatically align Firestore and RTDB states
  • UX: Centralized professional authentication error mapping in login.tsx to display polite Thai message for disabled accounts
  • SYNC: Unified state self-healing to actively protect lifetime members from accidental downgrades

vv5.5.69 (Premium Unified Omega)

26 เม.ย. 2569
  • DESIGN: Redesigned /packages page with Clean Premium UI to match Profile Drawer
  • SYNC: Implemented dynamic Firestore package fetching for both Profile and Shop (removed hardcoded data)
  • ADMIN: Added 'External Product Link' support to Admin Packages manager with auto-sync to Firestore
  • UX: Added 'View Product Details' button for packages with external links (e.g., Bluetooth speakers)
  • LINE: Forced Admin Magic Link to open in external browser (Safari/Chrome) using openExternalBrowser=1
  • STABILITY: Final polish on Split Shield Omega to prevent g.split errors across all dynamic modules

vv5.5.66 (Split Shield Omega)

26 เม.ย. 2569
  • STABILITY: Enforced 'Split Shield' pattern globally across all modules (api.ts, usePlayerStore, Sidebar, Admin Modals)
  • FIX: Resolved recurring 'g.split is not a function' TypeError on Remote page by hardening all string split operations
  • RELIABILITY: Updated safeSplit utility with even stricter type checking and error boundaries
  • VERSION: Synced build hash and versioning for deployment verification

vv5.5.60 (Member Shield)

26 เม.ย. 2569
  • RELIABILITY: Implemented Lifetime Membership Shield to prevent automatic downgrades
  • FIX: Unified membership schema across Admin and Omise payment systems
  • PERFORMANCE: Upgraded Admin Search with Smart Query (Email/UID detection) to reduce reads
  • DATA: Prevented membership data loss by migrating to dot-notation updates

vv5.5.58 (Split Shield)

16 เม.ย. 2569
  • STABILITY: Implemented 'Split Shield' pattern across entire codebase
  • FIX: Systematically replaced direct .split() with safeSplit to prevent TypeError Crashes
  • RELIABILITY: Hardened Auth Store, Sidebar, User Service, and API Headers
  • TV: Improved QR scanning reliability by hardening room parameter parsing

vv5.5.57 (Quota Guardian)

16 เม.ย. 2569
  • FEATURE: Implemented Quota Guardian in firebase-admin.ts
  • RELIABILITY: Added proactive Code 8 (Quota Exceeded) detection and reporting
  • INTEGRATION: Automatic LINE Push notification to Admin on Firestore exhaustion
  • MONITORING: Integrated handler into Sync Users, Cleanup, and Expiry Check APIs

vv5.5.56 (Quota Shield)

16 เม.ย. 2569
  • STABILITY: Optimized Firestore usage (Admin Users, Sidebar, TV Heartbeat)
  • RELIABILITY: Migrated to CountFromServer and Pagination to reduce reads by 90%
  • PERFORMANCE: Relaxed TV heartbeat frequency from 1s to 5s

vv5.5.49 (Intelligent Admin Filter)

16 เม.ย. 2569
  • Feature: Implemented automatic userId filtering on the Payments page
  • UX: Updated User Modal links to pre-filter order history by specific member
  • Reliability: Added search state persistence for Admin orders dashboard

vv5.5.46 (Admin Dashboard Polish)

16 เม.ย. 2569
  • Fix: Removed hardcoded v4.9.98 string from Admin User Modal
  • Reliability: Unified VERSION_LABEL across the entire administrative interface
  • Performance: Optimized pending order detection in user management

vv5.5.45 (One-Step Admin Approval)

16 เม.ย. 2569
  • Feature: Added Quick Approval widget in Admin User Modal
  • UX: Enabled one-click package approval and LINE notification from the User List
  • Integration: Automatically cleans up pending orders in Payments page when approved via User Modal
  • Reliability: Reused existing paymentService.approvePayment for 100% notification parity

vv5.5.44 (Simplified LINE Strategy)

16 เม.ย. 2569
  • Security: Disabled LINE Login to resolve production authentication issues
  • Feature: Retained LINE Account Linking for billing and notifications
  • Stability: Simplified /api/auth/line-token to focus on verification only
  • Fix: Moved LINE identity sync logic to client-side for better reliability

vv5.5.43 (Plesk Stability)

14 เม.ย. 2569
  • Reliability: Added support for file-based Firebase Admin credentials (serviceAccountKey.json)
  • Fix: Improved private key parsing for shared hosting environments
  • Stability: Resolved Invalid JWT Signature error on Plesk

vv5.5.42 (Playlist Excellence)

13 เม.ย. 2569
  • Feature: Enabled individual song playback and selection from Playlist Detail Modal
  • UX: Added tactile feedback (active-scale) to playlist song items
  • Reliability: Integrated robust addToQueue mapping for playlist items

vv5.5.41 (UI Cleanup & Fix)

13 เม.ย. 2569
  • Revert: Removed 'Save to Playlist' from Sidebar and Queue as requested
  • Fix: Improved Playlist Creation logic with data sanitization
  • Reliability: Added loading state and duplicate prevention in playlist modal

vv5.5.40 (UX Fix)

13 เม.ย. 2569
  • Bugfix: Resolved issue where Playlist Modal couldn't be reopened for the same song
  • Logic: Added onClose propagation to sync state when clicking outside the modal

vv5.3.62 (Remote Stability Fix)

10 เม.ย. 2569
  • FIX: Resolved ReferenceError/TypeError (g.split) on Remote page by correctly importing VERSION_LABEL
  • STABILITY: Hardened room query parameter handling to prevent crashes when accessed without a room code
  • SYNC: Verified cross-device version labeling for 100% UI consistency

© 2026 YOUOKE. PLATFORM IDENTITY SYNC.