Releases: Unarr-app/unarr-cli
Releases · Unarr-app/unarr-cli
Release list
v1.11.5
Changelog
- 0e1b93a Merge branch 'fix/win-false-crash-shutdown'
- 63eef94 chore(release): 1.11.5
- c4021e3 fix(agent): serialise every daemon-state write behind a mutex
- d1a76d0 fix(config): reject malformed paths instead of filing them as permission errors
- be68179 fix(crash-report): stop reporting a Windows shutdown as an agent crash
v1.11.4
Changelog
- 6a9744a Merge branch 'fix/ci-atomic-test-windows'
- a995dd3 Merge branch 'fix/ci-ffmpeg-flakes'
- 410eca2 Merge branch 'fix/mmap-write-after-close'
- a93093f Merge branch 'fix/win-atomic-install-flake'
- 4b3446e Merge pull request #31 from Unarr-app/dependabot/go_modules/golang.org/x/net-0.58.0
- 7733e2d Merge pull request #32 from Unarr-app/dependabot/go_modules/golang.org/x/text-0.41.0
- d10ae60 chore(deps): bump golang.org/x/net from 0.57.0 to 0.58.0
- 76b7a57 chore(deps): bump golang.org/x/text from 0.40.0 to 0.41.0
- 154cfa8 chore(release): 1.11.4
- ebf90ea fix(desktop): read logs off disk when the CLI cannot be exec'd
- 6f75446 fix(mediainfo): install downloaded tools atomically; accept newer ass-muxer wording
- b702578 fix(mediainfo): wait out a blocked rename on Windows instead of failing
- ca33e76 fix(torrent): refuse chunk writes after storage close instead of panicking
- 923c63b test(mediainfo): no execute bit to assert on Windows
v1.11.3
v1.11.2
Changelog
- 88aecf5 Merge branch 'fix/download-integrity'
- 45b7f2f chore(release): 1.11.2
- 194c2ed feat(engine): verify debrid downloads against the server-resolved file size
- dd6e09c fix(engine): cancel must never delete another task's files
- bcf961d fix(engine): close the gaps the download-integrity review found
- 83e2537 fix(engine): make downloads corruption-proof (torrent stale-completion + debrid resume splicing)
- a9a7c72 fix(engine): reap orphaned sidecars for real, and stop trusting a bare validator
v1.11.1
Changelog
- 0e1d6b8 Merge branch 'fix/vtt-drawing-tags' (QA contra un release REAL de producción justo tras salir 1.11.0 destapó que el filtro seguía dejando pasar carteles: el estilo del sign llevaba Bold, ffmpeg lo emite como m 0 0 l 268 0…, y el guard que exige que el payload EMPIECE por el comando de movimiento no casaba porque la línea empieza por <. El corpus de desarrollo no tenía ningún sign en negrita — solo un release real lo expuso. Ahora las heurísticas juzgan el payload con el marcado inline retirado: todo el vocabulario que WebVTT permite (b/i/u, c.clase, v Locutor, lang xx, ruby/rt) más las marcas de tiempo de karaoke <00:00:43.500>, que abren con dígito y necesitan su propia alternativa. La lista de etiquetas es EXPLÍCITA y no : los subtítulos escriben angulares como prosa —el corpus tiene 18 nombres de habilidad tipo — y un patrón abierto podría dejar un fragmento que las heurísticas malinterpreten. El stripping es solo para DECIDIR: el cue que sobrevive se sirve byte a byte con su formato. Un cue con anotación ruby se conserva entero, porque su
- bbdbf1c chore(release): 1.11.1
- a56cfcf fix(subs): drop drawing cues that ffmpeg wrapped in inline markup
- 57a31ea fix(subs): restrict tag stripping to the WebVTT tag vocabulary
v1.11.0
Changelog
- da083c3 Merge branch 'feat/raw-ass-fonts' (el player web pintaba los carteles vectoriales de fansubs como texto crudo — m 0 0 l 290 0… — porque ffmpeg -c:s webvtt filtra las etiquetas {\p1} pero deja los comandos de dibujo como cue text. Tres piezas: filtro de cues de dibujo aplicado al SERVIR WebVTT (limpia también sidecars ya cacheados y beneficia a Cast y agentes viejos; doble guard — abre con comando move + vocabulario cerrado + exige comando de path posterior — medido sobre 177 pistas reales: 42 cues basura fuera, 0 falsos positivos), /sub?f=ass que sirve el script ORIGINAL con -c:s copy validando que la salida trae tabla de estilos de autor (ffmpeg 8 rechaza copy de no-ass y eso mapea a declive tipado, no a error; el declive sirve la caché .vtt en vez de re-demuxear con el contexto agotado, que garantizaba un 500 tras timeout), y /fonts que extrae los attachments de fuente del MKV (t:N ordinal, exit≠0 en éxito documentado, semáforo de 3 — un player libass pide las ~26 de golpe, y un dump matado a mitad ya no se cachea truncado 24 h). El prewarm del scan escribe el .ass en la MISMA pasada ffmpeg que los VTT para que el primer play de un remux gigante nunca pague el techo de 60 s. Scope HMAC nuevo fonts:<sha256(path)> sin índice — quien puede leer una fuente puede leerlas todas; paridad byte a byte con la web verificada ejecutando ambos lados. Sidecars externos: solo .ass/.ssa se sirven como ASS; un .srt con f=ass degrada a WebVTT en vez de mandar bytes imparseables a libass. Verificado: suite completa, gates en linux/windows/darwin, 3 e2e contra MKV real del NAS y QA de navegador end-to-end contra el player integrado)
- 8c3e5ae chore(release): 1.11.0
- deb726c feat(subs): serve raw .ass + embedded fonts, and filter drawing cues from WebVTT
- 9631f38 fix(subs): harden the ASS/fonts endpoints and the drawing filter after review
- 7a84524 fix(subs): survive slow remuxes, aborted dumps and non-ass sources honestly
v1.10.4
Changelog
- dac6edb Merge branch 'fix/hls-partial-cache-reuse'
- f4d9424 Merge pull request #30 from Unarr-app/fix/silent-session-failures
- 8381e9b chore(release): v1.10.4
- f11add8 feat(hls): clear the segment cache on a config change, and expose it to clean
- 8d04699 fix(hls): finish the cache reuse that left playback stalled at the splice
- 3fba4d3 fix(hls): key the sealing guard on what this session encoded, not where it is
- 8ab87a9 fix(hls): reportar las sesiones que morían en silencio
v1.10.3
Changelog
- e2aa3c6 chore(release): 1.10.3
- d6d8804 ci: refuse to publish a release whose CI is not green
- f1f0015 fix(torrent): make the busy-port walk work on Windows, and stop leaking the DB on failure
- aa03bad fix(upgrade): wait out a Windows holder instead of failing the install
- 69c6c33 test(logs): weigh the ring twice instead of guessing what a slot weighs
v1.10.2
Changelog
- 0823aa1 Merge branch 'fix/arch-gate-blind-spots' (los reportes de crash vuelven a describir el crash: instalación atómica del binario para que nadie ejecute un PE truncado, identidad del agente tomada de quien detectó la muerte en vez de releer un fichero que se está borrando, un colector caído deja de culpar al usuario, y las líneas de log quedan en ASCII con guard mecánico)
- 2165c39 Merge branch 'fix/vpn-503-actionable'
- fb5d4d7 Merge branch 'main' into fix/vpn-503-actionable
- 1a1ba2e chore(release): 1.10.2
- 33a1ab5 ci: let CI be dispatched, because a missed push cannot be replayed
- 2f4986b ci: run the architectural gate, which CI never did
- 5c35213 docs(logs): say that log_max_size_mb bounds nothing under systemd
- 0bf8bc0 fix(arch): run the gate once per GOOS, so platform code stops slipping through
- 61127b6 fix(config): treat an explicit empty api_url as unset
- 8cb8c3c fix(desktop): stop crash reports describing an agent that is not the one that died
- 600fa95 fix(doctor): keep the closing tip inside 60 columns
- 4cf1eec fix(logs): keep every log line ASCII, and guard the rule mechanically
- b1e3bd0 fix(upgrade): install the binary atomically, so nothing ever execs a prefix
- b3378bb fix(vpn): say WHICH server disabled the VPN, and stop blaming the account
- a6fdbe2 test(desktop): drop a no-op statement and name the clean-stop guard for what it asserts
- 45d3de3 test(logs): make the ring's bound provable, not a coincidence of volume
- 47c47d0 test(logs): pin the journal-vs-file routing instead of testing it by hand
- 3ee1747 test(postprocess): assert containment against the destination the writer resolved
- 552d6fb test(upgrade): stop asserting a POSIX mode bit that Windows does not have
v1.10.1
Changelog
- 6a18671 Merge branch 'feat/native-extractor' (extraccion de archivos en Go embebido: rar/7z/zip sin unrar ni 7z instalados, con la vieja ruta shell como red de seguridad y la politica de rutas/symlinks ahora a nuestro cargo)
- 0ea4fcc Merge branch 'fix/hls-copy-seek-resume' (el resume se respeta cuando COPY-VOD no está disponible: prewarm de keyframes revivido, timeout dimensionado contra lecturas en frío, índice por ventana alrededor del punto de reanudación, y transcode en vez de EVENT copy para Cast/HEVC)
- 207dec0 Merge branch 'fix/torrent-rar-extract' (desempaquetado de releases en la ruta de torrents: extraer a un hermano mientras se siembra, borrar solo los volumenes desempaquetados, y comprobar el extractor en doctor)
- 2052156 chore(release): 1.10.1
- 58fec19 feat(doctor): check for an archive extractor, and stop gating the warning on usenet
- 6cc91c7 feat(postprocess): unpack archives in-process, no unrar/7z required
- 8e91324 fix(engine): extract packed releases on the torrent path
- 49331b2 fix(engine): keep archive parts while the torrent is seeding
- 8d4cb05 fix(engine): make an unpack visible only once it has finished
- 7cd8d34 fix(engine): reap stale ".tmp" unpack holders on every path, not only seeding
- 94ddd78 fix(engine): unpack a seeding release to a sibling, never inside the torrent
- 19b95f1 fix(hls): honour the resume position when COPY-VOD is unavailable
- 6a468c6 fix(postprocess): delete only the volumes we unpacked, never the user's files
- 018bc10 fix(postprocess): key archive volumes by set identity, not just base name
- 8c063c2 fix(postprocess): match each volume family on its own, not via an optional group
- 3d7d674 fix(postprocess): stop archiveStem from eating a segment of the release name
- c890a9e test(postprocess): prove the volume key over all pairs, not case by case