From d91a9c95764465dd8f82bdc675b39ec98fc48786 Mon Sep 17 00:00:00 2001 From: dirtydishes Date: Mon, 25 May 2026 13:27:01 -0400 Subject: [PATCH] preserve opensubtitles caption labels --- .DS_Store | Bin 6148 -> 6148 bytes .beads/interactions.jsonl | 1 + .beads/issues.jsonl | 1 + .../UserInterfaceState.xcuserstate | Bin 13916 -> 13914 bytes 4 files changed, 2 insertions(+) diff --git a/.DS_Store b/.DS_Store index a2b672a1f7dd25bc57b8c62da89c114e8de975f4..b9058d7cd2a0a3279f504adb1e0b37a158aeb1a1 100644 GIT binary patch delta 84 zcmZoMXffDO!o*sdB5tZSxsu701I&7K+;K7wliK7vOdd?;)|1~bX-y7b=3(9BAL^(! fIg!~C&eENHhMA8sVDm#}HI|7DY@69R{_+C=SHv1G delta 84 zcmZoMXffDO!o<4bsY(m$T7No#TdGY{*fX7_JQ flM|UO;Vj+BXPEgI1vWoqR%4miz_yv4<1aq|AC?{J diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl index cbab511..56432bb 100644 --- a/.beads/interactions.jsonl +++ b/.beads/interactions.jsonl @@ -34,3 +34,4 @@ {"id":"int-569ee372","kind":"field_change","created_at":"2026-05-25T16:22:50.024736Z","actor":"dirtydishes","issue_id":"dreamio-433","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Fixed by tightening OpenSubtitles subtitle URL filtering in the web bridge and Swift parser, plus adding regression coverage for logged artwork and addon endpoint false positives."}} {"id":"int-eca1f7f8","kind":"field_change","created_at":"2026-05-25T16:33:55.331041Z","actor":"dirtydishes","issue_id":"dreamio-9sp","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Accepted Stremio subtitle download URLs in the bridge, parser, resolver, and regression tests."}} {"id":"int-99b3cb8b","kind":"field_change","created_at":"2026-05-25T16:54:58.390731Z","actor":"dirtydishes","issue_id":"dreamio-2ju","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Fixed by preserving OpenSubtitles subtitle display metadata through VLC external track attachment and adding display-name tests."}} +{"id":"int-697dc66d","kind":"field_change","created_at":"2026-05-25T17:01:32.697187Z","actor":"dirtydishes","issue_id":"dreamio-0lt","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"not implementing now; user asked only to move previous work to the audio-track-selection branch"}} diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 467bc55..0ad1a46 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -23,6 +23,7 @@ {"_type":"issue","id":"dreamio-l68","title":"Add native playback for direct debrid streams","description":"Implement a WKWebView JavaScript bridge that detects direct-file debrid media URLs and routes unsupported containers to a native player backend, initially MobileVLCKit, while preserving normal Stremio Web playback for compatible streams.","status":"closed","priority":1,"issue_type":"feature","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-25T03:13:19Z","created_by":"dirtydishes","updated_at":"2026-05-25T03:20:17Z","started_at":"2026-05-25T03:13:28Z","closed_at":"2026-05-25T03:20:17Z","close_reason":"Implemented native direct-stream bridge, classification, MobileVLCKit backend wiring, CocoaPods workflow docs, and turn documentation. Full iOS build is blocked locally by missing CocoaPods and iPhoneOS SDK.","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"dreamio-tnv","title":"Fix iOS bundle identifier install failure","description":"Xcode built Dreamio.app without a valid CFBundleIdentifier, causing device install to fail with CoreDeviceError 3000/3002. Investigate project bundle settings, fix the source configuration, validate the app bundle Info.plist, and document the change.","status":"closed","priority":1,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-25T01:23:00Z","created_by":"dirtydishes","updated_at":"2026-05-25T01:25:36Z","started_at":"2026-05-25T01:23:07Z","closed_at":"2026-05-25T01:25:36Z","close_reason":"Added bundle metadata to Info.plist and validated processed app bundle identifier.","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"dreamio-4yn","title":"Build WKWebView MVP shell","description":"Create the first Dreamio MVP implementation: a minimal iOS WKWebView wrapper around hosted Stremio Web, with configuration, launch behavior, diagnostics, and documentation for real-device viability testing.","acceptance_criteria":"App project exists; WKWebView loads hosted Stremio Web; external/new-window navigation is handled; basic diagnostics and manual test documentation exist; quality gates are run or documented.","status":"closed","priority":1,"issue_type":"feature","owner":"dishes@dpdrm.com","created_at":"2026-05-24T14:55:12Z","created_by":"dirtydishes","updated_at":"2026-05-24T14:59:44Z","closed_at":"2026-05-24T14:59:44Z","close_reason":"Implemented the MVP WKWebView iOS shell, added run and validation documentation, and recorded current validation limits.","dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"dreamio-0lt","title":"add audio track selection","description":"Add native player support for viewing and switching available audio tracks during playback.","status":"closed","priority":2,"issue_type":"feature","owner":"dishes@dpdrm.com","created_at":"2026-05-25T17:00:53Z","created_by":"dirtydishes","updated_at":"2026-05-25T17:01:33Z","closed_at":"2026-05-25T17:01:33Z","close_reason":"not implementing now; user asked only to move previous work to the audio-track-selection branch","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"dreamio-2ju","title":"Show OpenSubtitles languages in caption tracks","description":"Preserve external subtitle metadata after VLC attaches OpenSubtitles tracks so the captions menu shows useful language labels instead of generic VLC track names.","status":"closed","priority":2,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-25T16:52:44Z","created_by":"dirtydishes","updated_at":"2026-05-25T16:54:58Z","started_at":"2026-05-25T16:52:49Z","closed_at":"2026-05-25T16:54:58Z","close_reason":"Fixed by preserving OpenSubtitles subtitle display metadata through VLC external track attachment and adding display-name tests.","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"dreamio-h5n","title":"Throttle VLC subtitle reapply during buffering","description":"VLC subtitle auto-selection currently reapplies the same subtitle track on every buffering state notification, producing noisy logs and unnecessary repeated player writes. Limit state-driven reapply to meaningful selection recovery or state transitions while preserving delayed retries after initial auto-selection.","status":"closed","priority":2,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-25T15:06:48Z","created_by":"dirtydishes","updated_at":"2026-05-25T15:09:02Z","started_at":"2026-05-25T15:06:55Z","closed_at":"2026-05-25T15:09:02Z","close_reason":"Limited VLC auto-subtitle reapply to real selection recovery while keeping bounded delayed startup confirmations.","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"dreamio-c1m","title":"Add captions selection proof logging","description":"Add DEBUG-only logs around the native captions menu and VLC subtitle selection path so subtitle tap actions prove whether the UI fires and whether VLC accepts the selected embedded track index.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-25T14:18:06Z","created_by":"dirtydishes","updated_at":"2026-05-25T14:19:19Z","started_at":"2026-05-25T14:18:11Z","closed_at":"2026-05-25T14:19:19Z","close_reason":"Added DEBUG-only logs for captions menu actions and VLC subtitle selection results.","dependency_count":0,"dependent_count":0,"comment_count":0} diff --git a/Dreamio.xcworkspace/xcuserdata/kell.xcuserdatad/UserInterfaceState.xcuserstate b/Dreamio.xcworkspace/xcuserdata/kell.xcuserdatad/UserInterfaceState.xcuserstate index 9c4fb737860018a6080069cbce260c485395e676..75815ed07076dd00b4d75c54fbd0d923f6e63fc4 100644 GIT binary patch delta 1218 zcmWm5Yfu$c007`iU9WIO#3c6YVRz4--Lrf4oOAaoqPI+pQL|Js$BaLXS~@u7h@c}) z`RZ!pWT1$^n3nm#$2gi4cztB$qZA|+B~7#|SCEH@uNWQ2>^0e+@88#wAI-0M!{2Ad z?f8ni$W;IIL^91cp(1;EPGNGg=Pgg6C)YF6v&f@Awdkqoo|imBJVPVRsXcw4ri49r zBB!*t|9`^Yagj65z=Uu#wIj7N^=9fr$t(G!c*!p%N=Z_(^qiC;SrV0)BqUcFETu~s z(s1boDNhPZYo)`|9{_?7m;wsHQcwoUK_yrZHh|B;Ca@W71y$exI0U{0-+>>%F>nH$ z1a+VRoB=V=D|=;07V^t-wmd^F3d<|x5_yfhR$eDp$eZNN@>aP@-XZUj8{`)GK1_ia zau|R?I0O!bBjG5R1xLfNa2%Wl=fh&S6V}50Fai(4CK!WlupM^6ZrGFNP3xb=(*kKh z#jgxfGL^APzVeH5UFlG|ly2p&a$o6H9;i?aXQ{K)LiIy+vAR_KNL{WLtE<&gwM;En zE7iT~G4+c2KP9{24!Vba*S)$=j}Pm9JyB26ll4J*sxIq_uIaA+ zwqBqw(zoh|^+vrH55gh*A|8jwGfc!{Kk~(sl{7lZ0MiM10`h%e6*ZQ?1!no>gQmv6fk3YlZcxRbrJ|>#PcEw{_fVwpy)rtJAt^_p_;; zZBMtC*yZ*vyVky7U$igVSM8`Bv)k+ryUV^suDoxqL*khz3TLJLe4wRd(K>^z?tu?a8^32oDye^ zbKGfgE;~^t=CnCo&MoJ*bJuz3{K*C|!qVALmcfRzQ7o6uV=GxP+s5{=y=)&l!hT|P ztbv_n=h+n&4YL?)W$mn!-Q#_DGKZYJg7IRMhpX)+41NMM$a8D_0^9k$N=4sA{Lx`u*{Je|^6jQ=?P&4fnNu zJLU25KqSleZi4mJwqBh}7mvgXBe$?;6|jQ7m*=+F7#bEbH@d3t-gdr~4-{7vni zXMfB+9VyjX{rB*6a8;zt?ie4A`s@7-{yYB1l2?k8d{TmxC?!dqq|TCGViK2x zij*p)Nj;@rQns{2S|uHo{san02U%bSSOf||5m*b>f%V`Eun}wmTR<^51df1j!FS*| zI0;I@8E_VqgYzH;T4b**%dY&YJWL)Z&k4&*<$QUiyh>gzuaP&(o8&EWvAkX0DVNLD z@T$X+tS9J+dXnBr@1g@e zpliCWC+qL%x%zy4i+)tE&|7d9oQ`|rL3juribvp)I15k4xp+37i|66__)}bf3vm%% zi@(HQ;mvp}-iG(%6SxvbaXoIqPw_MSH~z=)8gYitNH7u&-Qb2W1{h)Z_(N? zt)mU}4!vvoOuvcEWHZwoZB90`%{k^mGi)v~mztlM`DTH++FWDqGEbRRW{p{AHkfy; z_7=B>S?^g3ts-lu6|pW`SFCH+4J&HJtXiwyYP9aMHq6W7n2#l}M3%&4rZA1^%w@?e zg{87SEIfdXWLa!98^dO>-RuZE!AjW~R>mq=CA-S1*bO`0PPfO~AK26ETzjUy)Lv#U zxAX0l_9?sEzGg@5m|bf(+IQ{W?ECg(`!C*+TRfF_=V`nr@6RXk9KMX_@vVF}-^2Iv zWBfEf%ggx%eu-b_(J+tk8eYd6_yeb%)5%dB?sRj~oOGv;)6W^?40hgdhB+ggkxq`2 z@02)Y&Q+(%`PHd*YMk576X6kUMVxq9v=>ldL4+xo2#FMtDtd@?ks*eNF=DJ3C*Btm z#S}4J=JuKiP$d=iXTOpC>Q6&MR7?~iYww5Q5EzCdjuy0 zR|mfj-gA*V+@0X&x}Uh~+zoEATjCyYPr4V}i*AK`*{ybK+&Z_>ZE~AK@gaXG5Yj?8 dWQFXI6AFd~c>Z7O)-T+q`Gt$#>=EB;(!YaKh_V0x