min wypycha do master w min/asot_player

  • 31ebd2f294 Paused player keeps mpv stopped until the play key is pressed If mpv stopped while the user had the player paused, the loop treated it as a stream drop: it restarted mpv, un-paused, and burned the recovery budget. Honour the pause instead: - run_player(): EngineError while state.paused — report 'stream closed while paused — press play to resume' once, keep drawing a PAUSED frame from saved state, never restart mpv, never count a drop. - handle_key(): ' ' / t restarts playback at the saved position (recover(resume_paused=False)); any other key is dropped while the engine is off; q / Ctrl-C now quit even when mpv is dead. - Player.render_paused_dead(): PAUSED bar frame from saved state. - 5 regression tests (63 total) + README note.

1 dzień temu

min wypycha do master w min/asot_player

  • 333c2f9a8e Stop unattended sessions loudly: wall-clock limit, return rc, recover keeps pause A player left paused for ~5 h closed with exit code 0 and no trace: the main loop's 50 000-tick cap (measured 0.37 s/tick) expired, the loop exited silently, and main() ended with 'return 0' ignoring the rc it had set. - run_player(): wall-clock safety limit (MAX_RUNTIME_SECONDS = 36 h) replaces the tick cap; hitting it prints 'runtime limit reached' above the bar and exits 1. The drop-budget break now also reports 'playback failed — stream unavailable' and exits 1. - main() returns rc (2 engine error, 130 Ctrl-C) instead of 0. - recover() keeps a paused player paused: re-sends set_pause after the mpv restart (was: silently resumed playback after every stream drop). - 4 regression tests (58 total) + README section on drops/exit codes.

1 dzień temu

min wypycha do master w min/asot_player

  • d1c2d15bb1 ui/main: erase the bar before printing, park the cursor above it Printed reports (engine drops, tracebacks) landed at the bottom cursor, so the anchored block redrew over them and the screen ended up with two bars. - UI tracks the row the block starts on (start_line / block_start()) and every frame clears to the end of the screen before drawing, so no older frame can survive as a second bar. - UI.clear_block() erases only the block and parks the cursor on the line above it; main._print_above() uses it to print the report there, after which the next frame redraws the bar at the bottom. - Exit no longer clears the whole screen: finish() clears just the player block and returns the cursor to the last printed line. - Engine errors from _load() now raise instead of sys.exit(2), so they are reported above the bar; main returns 2 on engine failure, 130 on Ctrl-C. - Per-tick catch-all: an unexpected exception prints its traceback above the bar and playback drawing continues. Tests: 54 (frame anchoring + clear, block clear parks cursor, exit clears only the block, print-above in tty and plain mode). Verified live in a pty: killed mpv mid-play -> one report line on row 21, single bar on rows 22-24, no full-screen clear; 'q' exit ends with [21;1H[J.

2 dni temu

min wypycha do master w min/asot_player

  • c9f463b24f engine/main: never crash when mpv dies mid-playback Resuming deep into an episode (e.g. 618 at 2:00:19) put playback at the very end, where mpv exits at EOF; its IPC socket closed between the alive() check and sendall, so a raw BrokenPipeError — not an EngineError — escaped status() and killed the player with a traceback. - _cmd: wrap sendall in OSError -> EngineError carrying mpv's exit code and the mpv log path. - _status no longer sys.exit(2)s; the main loop and key handler own it. - Player.recover(): restart the same episode at the saved position, and advance to the next episode only when the position is within 30 s of the true end. The loop budgets 5 consecutive drops with a 1 s pause so a persistently dead stream ends with a message instead of a restart storm. Tests: 47 (socket-death -> EngineError, status(), recover restart/advance/ failure paths). Verified live by killing mpv mid-playback: 6 "Recovered" frames, playback continued from the saved position, no traceback.

2 dni temu

min wypycha do main w min/nvml-gpu-ha

  • 4995c78cfc Update 'Makefile' remove group, systemd not always happy about it.

3 dni temu

min wypycha do main w min/nvml-gpu-ha

3 dni temu

min stworzył nową gałąź main at min/nvml-gpu-ha

3 dni temu

min tworzy repozytorium min/nvml-gpu-ha

3 dni temu

min wypycha do master w min/asot_player

  • 2c32820d21 ui/engine: cyan volume meter; restore terminal on exit; robust resume * Volume meter blocks are now teal like the progress bar (bar width computation switched to visible lengths so escapes don't shrink it). * Terminal is properly restored on exit: Keyboard.stop() used termios.TCSU, which does not exist on Linux — the AttributeError was swallowed and the shell was left in cbreak mode (no echo). Switched to POSIX TCSAFLUSH. UI bottom-anchoring/clear-on-exit also no longer depends on colour being enabled (--no-color kept the screen un-restored). * Cold-start resume no longer jumps to the next episode. Two fixes: - the saved position is handed to mpv as --start=<pos> at spawn (opened at that offset) instead of seeking after playback began — far more reliable on HTTP streams; - a stalled position (buffering / unseekable stream / reconnect) is reported as "buffering" indefinitely, never "eof" — the old 8s stall → eof rule is what made the player auto-advance to the next episode mid-playback. Verified with a seeded mid-episode state (1301 @ 3000s): mpv ran with --start=3000.000, played 1:1 from 50:00, no advance to 1302, cyan meter confirmed in raw output; 40 unit tests green.

1 tydzień temu

min wypycha do master w min/asot_player

  • a86f50de63 ui: bottom-anchored layout, remapped keys, cyan full-width bar Layout changes: * display block now anchored to the bottom of the terminal (cursor positioned at rows-2); on exit the screen is cleared (\033[0m\033[H\033[J) and the terminal reset. * first two lines merged into one: "ASOT NNNN" (bold teal) + player status, with the episode date right-aligned. Song title removed from the header. * player bar spans all remaining width between fixed readouts: elapsed/total on the left, remaining time + volume readout (unchanged format) on the right; progress blocks are cyan instead of green. Bar width is computed per line from the actual readout lengths so it fills whether length is known or not. * hint line updated to the new mapping. Key changes: up/down seek +/-30s, left/right seek +/-10s, +/− change volume. space pause, m mute, n/p episode nav and q quit unchanged. Verified with a real pty run (anchor row observed at rows-2) and all 35 unit tests green (every line exactly `width` visible chars, colour and plain modes).

1 tydzień temu

min wypycha do master w min/asot_player

  • 6273b659b1 Merge remote-tracking branch 'origin/master'
  • b8c8157081 engine: pass stream URL to mpv; support modern mpv JSON-IPC Fixes the 'mpv exited before playback could start' failure: play() never appended the media URL to the spawn args, so mpv exited immediately with rc=0 (no socket, no stderr) for every episode. Real-world verification against mpv v0.41 revealed the engine also assumed an older JSON-IPC dialect: * acks are {"request_id", "data", "error"} — no command_id/type * property renames: "position" -> "playback-time", "length" -> "duration"; no state property at all * "volume" is a 0-100 percentage, not 0.0-1.0 * properties only answer once media metadata is loaded * select() requires an explicit xlist sequence, not None Changes: - play(): URL appended to args; per-build property discovery (_PROP_CANDIDATES / _discover_property), re-run while _wait_ready() probes for builds whose properties appear late - _cmd(): understands both old and new ack shapes; rejects commands that error out - status(): derives playing/paused/buffering/eof from position progress when no state property exists (_derived_state) - stop(): uses the ["stop"] command - set_volume()/status() normalize the 0-1 <-> 0-100 volume scale - mpv stderr is captured to <tmpdir>/.asot-ipc-<pid>.log and referenced in error messages so future stream failures are diagnosable Verified: real mpv playback of a live episode (position advancing 1:1, correct duration), state save + resume on reopen. 35/35 unit tests green.
  • Zobacz porównanie tych 2 commitów »

1 tydzień temu

min wypycha do master w min/asot_player

1 tydzień temu

min wypycha do master w min/asot_player

1 tydzień temu

min stworzył nową gałąź master at min/asot_player

1 tydzień temu

min tworzy repozytorium min/asot_player

1 tydzień temu

min wypycha do devel w min/g3n-engine

  • 3fba8bcb81 added TexSubImage2D
  • 3ad67e6653 Merge branch 'webglfix' into devel
  • e5aa4313f8 Fixed shader compile issue on web
  • df5f75b0ac Merge branch 'refs/heads/mouselock' into devel # Conflicts: # window/canvas.go # window/glfw.go # window/window.go
  • 0b45c01daa Merge branch 'refs/heads/webglfix' into devel

1 rok temu

min stworzył nową gałąź devel at min/g3n-engine

1 rok temu

min wypycha do master w min/g3n-engine

  • a2e58abab5 Removed deprecated go get -u outside module (#286)
  • 721b7465e9 fix #301 (#302) Now we convert uint32 into C.GLsizeiptr first, then convert GLsizeiptr into *void inside C function, so the race detector will not failed anymore.
  • 4e30d5c3f7 Fix #280, blur font on darwin (#298) * fix #280 Font's on retina will be blur cause Rentina have 2x DPI Now we times the DPI by 2 when on darwin, and scale the Label panel by 0.5 to keep the original size Since we scaled the panel size back, so it should not affect much on non-Rentina darwin However, if you are using non-darwin with rentina monitor, issue #280 will still happen, need a way to detect the monitor * remove a debug log * we should devide on int but not floor, or the text will be out of shape * Revert "we should devide on int but not floor, or the text will be out of shape" I was completely wrong, we should divide on the floor or the text won't keep it's original size This reverts commit 73f1b6a320f90cfec9de8878ec06fa351966beaf. * use `window.Get().GetScale()` instead of hardcoded size and os * use explicit rune casting to pass `go test` * fix format for font.go * fix for Edit
  • 26e011b12f Fix #299 (#300) > We transfer MouseEvent to CursorEvent, and assign it to gm.cev when it's not exists, then the program won't panic when you click mouse button without any moving
  • fc34de52eb Merge pull request #293 from testwill/slice chore: slice loop replace
  • Zobacz porównanie tych 110 commitów »

2 lat temu

min wypycha do master w IPT/question_matcher

  • 9fd17b748a Database upload/download + more configs

3 lat temu

min wypycha do master w IPT/question_matcher

3 lat temu