← Commit history

Publish 0.4.7

John Lauer ·939c7dfa1a ·19h ago ·parent 55b6f89
3 files changed +8−4
package.json+1−1
@@ -1,7 +1,7 @@ {   "slug": "adom-video-player",   "type": "app",-  "version": "0.4.6",+  "version": "0.4.7",   "title": "Adom Video Player",   "brief": "Show any video in a real player: seek, scrub, frame step, chapters. One command, no hand-rolled servers.",   "summary": "When an AI shows you a video or audio file, it plays here: a shared server that answers HTTP Range requests, so the timeline seeks, in the same YouTube-style player as the wiki's ::adom-video widget, with YouTube's shortcuts, chapters, captions, frame stepping and auto-reload when the file is re-rendered.",
page.json+1−1
@@ -1,7 +1,7 @@ {   "slug": "adom-video-player",   "type": "app",-  "version": "0.4.6",+  "version": "0.4.7",   "title": "Adom Video Player",   "brief": "Show any video in a real player: seek, scrub, frame step, chapters. One command, no hand-rolled servers.",   "summary": "When an AI shows you a video or audio file, it plays here: a shared server that answers HTTP Range requests, so the timeline seeks, in the same YouTube-style player as the wiki's ::adom-video widget, with YouTube's shortcuts, chapters, captions, frame stepping and auto-reload when the file is re-rendered.",
public/adom-video.js+6−2
@@ -655,12 +655,16 @@     // ---------- feedback ----------     _bezel(icon) { const b = this.$('.bezel'); b.innerHTML = svg(icon, 36); b.classList.remove('go'); void b.offsetWidth; b.classList.add('go'); }     _hud(txt) { const h = this.$('.hud'); h.textContent = txt; h.classList.add('on'); clearTimeout(this._t.hud); this._t.hud = setTimeout(() => h.classList.remove('on'), 800); }+    // the "10 seconds" overlays: one timer per side (a shared timer let a back press, then a quick forward+    // press, cancel the back overlay's hide and strand it on screen); a press on one side clears the other     _seekfx(s) {-      const el = this.$(s < 0 ? '.seekfx.l' : '.seekfx.r');+      const side = s < 0 ? 'l' : 'r', other = side === 'l' ? 'r' : 'l';+      const el = this.$(`.seekfx.${side}`), op = this.$(`.seekfx.${other}`);+      clearTimeout(this._t['fx' + other]); op.classList.remove('on');       this._acc = (this._accSide === Math.sign(s) && el.classList.contains('on')) ? this._acc + Math.abs(s) : Math.abs(s);       this._accSide = Math.sign(s);       el.querySelector('span').textContent = `${this._acc} seconds`;-      el.classList.add('on'); clearTimeout(this._t.fx); this._t.fx = setTimeout(() => el.classList.remove('on'), 650);+      el.classList.add('on'); clearTimeout(this._t['fx' + side]); this._t['fx' + side] = setTimeout(() => el.classList.remove('on'), 650);     }     _show() {       this.p.classList.remove('hide-ui');