Commit graph

69 commits

Author SHA1 Message Date
SteadyW
0dd557dce8
Merge pull request #24 from Shaku-Med/feat/player-ui and thumbnails
Live player UI: control bar with hover thumbnails, skip, and responsive layout
2026-06-19 10:27:07 +03:00
Shaku-Med
c230c6b7d7 feat: make hover thumbnails optional (--no-thumbnails)
Thumbnails stay on by default. --no-thumbnails skips building the preview sprite, so the server does no extra work and the rest of the player still works. The frontend already shows no preview when the sprite is unavailable.
2026-06-19 00:14:34 -04:00
Shaku-Med
41f430d46d docs: document the player controls in the README 2026-06-19 00:07:52 -04:00
Shaku-Med
743e6e933c test: cover the scrub sprite endpoint (hover thumbnails)
Self-contained: generates a tiny video, checks the sprite grid math, the JPEG output, and the /scrub + /scrub_sprite endpoints. The ffmpeg parts skip if ffmpeg is missing.
2026-06-18 11:41:49 -04:00
Shaku-Med
a253c17507 feat: polished player UI for live mode (hover thumbnails, skip, responsive)
Builds on the existing live seek/play/volume. Adds a polished, responsive control bar with play/pause, +/-10s skip, a played-progress fill, and a YouTube-style hover thumbnail preview on the seek bar. Thumbnails come from a small lazy /scrub endpoint that builds an in-memory sprite once per video with a single ffmpeg pass (no disk cache); easy to point at the static compiler's sprite instead.
2026-06-18 11:39:39 -04:00
SteadyW
461e0bd939
Revise feature list in README.md
Updated README to enhance clarity on ASCILINE's features.
2026-06-17 14:41:47 +03:00
YusufB5
27aeca9d20 feat: Add seek bar, pause/resume, and optimize async audio streaming 2026-06-17 14:27:52 +03:00
SteadyW
88b261eae9
Revise bandwidth requirements and remove license details
Updated the README to clarify bandwidth and GPU compatibility, and removed ethical guardrail explanation.
2026-06-15 15:59:20 +03:00
SteadyW
d06cf0af05
Revise README for Windows user shortcuts
Updated Windows user instructions for running scripts.
2026-06-15 15:50:26 +03:00
SteadyW
b1415e75ea
Delete play.bat 2026-06-15 15:48:38 +03:00
SteadyW
d9e2ea48e4
Delete serve.bat 2026-06-15 15:48:23 +03:00
SteadyW
a879b2b49c
Update README with developer note on static files
Added note for developers about using Compiler.py to generate static files.
2026-06-15 15:36:34 +03:00
SteadyW
151d2400d6
Update license section with anti-ad restriction
Clarified ethical guardrails regarding ad usage.
2026-06-15 15:36:02 +03:00
SteadyW
c07a7f7288
Revise license section and contact information in README
Updated the README to clarify the license and ethical guidelines.
2026-06-15 15:33:08 +03:00
SteadyW
4294e312e5
Add live interactive showcase section to README
Added a section for the live interactive showcase of the ASCILINE engine.
2026-06-15 15:19:39 +03:00
SteadyW
ef8dacaa48
Add LAN streaming instructions to README
Added instructions for LAN/Network streaming using the stream server.
2026-06-14 21:27:34 +03:00
SteadyW
bc53f91793
Add contact email to README 2026-06-14 19:38:01 +03:00
SteadyW
5731cfa928
Update contact information format in README 2026-06-14 19:36:55 +03:00
SteadyW
331becf6c4
Add contact information to README 2026-06-14 19:34:22 +03:00
SteadyW
b43808142e
Merge pull request #15 from YusufB5/revert-11-fix-startup-freeze
Revert "Fix #7: startup freeze (audio master clock jumps backward on cold start)"
2026-06-14 13:36:07 +03:00
SteadyW
667b412994
Revert "Fix #7: startup freeze (audio master clock jumps backward on cold start)" 2026-06-14 13:30:14 +03:00
SteadyW
bb0c096ffd
Merge pull request #11 from 1Aa1k/fix-startup-freeze
Fix #7: startup freeze (audio master clock jumps backward on cold start)
2026-06-14 13:05:19 +03:00
YusufB5
7071f2b422 feat: apply security, audio session, and ffmpeg zombie fixes 2026-06-14 12:44:19 +03:00
Nate
58626d7602 fix(#7): anchor the audio master clock so it never jumps backward (startup freeze)
Cold-start root cause: on a slow first load the <audio> element starts late, so
the audio-ready gate's wall-clock fallback has already advanced playback a second
or two by the time audio finally begins at currentTime≈0. The master clock then
snapped back toward 0, every buffered frame read as "in the future", and
renderFrame() deadlocked until audio caught up — the freeze. A refresh warms the
cache, audio starts immediately, the gap (and the freeze) vanish — which is why
reloading "fixes" it.

Fix: the first time audio is genuinely playing, capture the offset between the
wall clock and the audio clock and add it back, so the master clock follows
audio's *rate* without ever moving backward. When audio starts promptly the
offset is ~0, so normal playback is unchanged.

experiments/freeze_repro.js models a 2s-late audio start with a realistic jitter
buffer + 60fps render loop: the original code and a naive `currentTime > 0` guard
render 0-1 of ~96 frames after audio starts (frozen ~4s); the anchored clock
renders 96/96 smooth. Real-browser regression (muted Chrome): normal playback
unaffected at ~29 fps.
2026-06-14 01:24:05 -04:00
SteadyW
e130b0cc2f
Reorganize README with Star History and Support info
Added a section for Star History and support options while retaining the License section.
2026-06-13 23:27:06 +03:00
SteadyW
7085d33bcd
Add crypto donation options to README
Added donation information for project support.
2026-06-13 22:00:06 +03:00
YusufB5
444334cfba feat: added pause mechanism and updated user interface 2026-06-13 19:50:32 +03:00
SteadyW
f0a411e349
Update README with installation instructions
Added installation instructions to the README.
2026-06-13 13:27:29 +03:00
SteadyW
e3acb79c9b
Add real-time bandwidth monitoring instructions
Added instructions for monitoring bandwidth in real-time using the --debug flag.
2026-06-13 13:14:05 +03:00
SteadyW
e58a572316
Add quality and debug options to stream server help 2026-06-13 13:03:09 +03:00
YusufB5
ad7895b054 feat: activate adaptive codec in app.js and add debug flags 2026-06-13 12:08:29 +03:00
YusufB5
7ac8317371 Merge PR 9 into main 2026-06-13 12:07:44 +03:00
SteadyW
694889bd4c
Merge pull request #8 from TomZhang11/chore/gitignore-venv
Ignore Python virtual environment directories.
2026-06-13 12:01:12 +03:00
Nate
e3f282910d feat: adaptive raw/zlib/delta frame codec (opt-in, backward compatible)
The binary protocol re-sent the full grid every frame. This adds an opt-in
per-frame codec that picks the smallest of three encodings and tags it in a
1-byte header, without changing the rendered output:

  0 RAW    framebuffer as-is (legacy)
  1 ZLIB   zlib(framebuffer)
  2 DELTA  only the cells changed since the previous frame, patched on top

Clients opt in via /ws?codec=adaptive; omitting it yields the original protocol
byte-for-byte, so existing clients are unaffected. A keyframe is forced
periodically for resync. codec.js is shared by the browser and the Node test,
so the shipped decode path is the tested one.

Optional --quality {lossless,high,balanced,low} enables lossy temporal delta
(conditional replenishment): a colour cell is only re-sent once it drifts past a
tolerance from what the viewer already sees; the character plane stays exact.
Default lossless = bit-exact.

Measured wire savings (mode 5, 200x80): static screen 0.3% of legacy (~375x),
pixel mode 11.6%, high-motion 63% (never worse). Encoder tuned (zlib level 3,
smart candidate selection) to stay well under the frame budget.

Verified bit-exact two independent ways: Python->Node vectors and a live
adaptive-vs-legacy WebSocket diff. (A fuller mutation + Autobahn conformance
harness exists on request.)
2026-06-13 02:22:29 -04:00
Tom Zhang
137d3ad661 Ignore Python virtual environment directories.
Prevents accidental commits of local venv/.venv folders.
2026-06-12 21:00:53 -06:00
SteadyW
8c60ef12a0
Update README to correct binary protocol description 2026-06-12 23:16:17 +03:00
SteadyW
312d5d6df0
Clarify ASCII MOD compatibility in README
Updated wording for clarity regarding ASCII MOD compatibility.
2026-06-12 16:54:57 +03:00
SteadyW
8247b1e4ac
Update README with ASCII MOD compatibility note 2026-06-12 16:32:08 +03:00
SteadyW
5145abffaa
Replace video filenames with EXAMPLE versions 2026-06-11 14:40:12 +03:00
SteadyW
41f6950954
Update playlist.json with new video entries
Removed old playlist format and added new video entries.
2026-06-11 14:39:33 +03:00
SteadyW
18a91867fa
Update README.md 2026-06-11 14:38:53 +03:00
SteadyW
e7c77d916f
Enhance README with smart defaults and playlist details
Updated the README to clarify smart defaults and playlist format options.
2026-06-11 14:34:42 +03:00
YusufB5
de0b92030c feat: smart cols resolution 2026-06-11 14:25:36 +03:00
SteadyW
9910ae48f4
Revise ASCII and Pixel mode recommendations in README
Updated recommendations for ASCII and Pixel modes to reflect performance and visual quality improvements.
2026-06-10 17:27:38 +03:00
SteadyW
07e829fb2c
Adjust column width in README example command
Updated column width in stream command for better output.
2026-06-10 17:09:48 +03:00
SteadyW
b51b45fb5b
Improve image formatting in README.md
Updated image tags in README.md for better clarity and formatting.
2026-06-10 17:06:32 +03:00
SteadyW
acc96f546a
Revise Pixel Mode column recommendations in README
Updated recommended column settings for Pixel Mode to improve performance.
2026-06-10 16:55:29 +03:00
SteadyW
b1f2de6393 Fix table formatting - move Original Source text inline with image row 2026-06-08 23:23:46 +03:00
SteadyW
b092e50ad8
Update image source in README.md 2026-06-08 19:43:17 +03:00
YusufB5
b6d108d61b fix: remove copied architecture notes and update playlist docs 2026-06-07 23:22:41 +03:00