Repository navigation
chore: release v0.3.0 - #48
Merged
Merged
Conversation
- Tighten 'PLAYSTATION' pattern matching to distinguish between PS1 and PS2 - Reduce log noise by improving header-sniffing accuracy - Maintain size-based safety fallback for non-standard hybrid discs
refactor: refine console fingerprinting to reduce PS1 false positives
- Add 1s sleep before chdman to prevent I/O collisions on fast runs - Decouple subcommand (createcd/dvd) from hunk size (2048) for PS2 - Ensure PS2 CDs use createcd with 2048-byte sector alignment - Improve stability on virtualized storage with high I/O latency
- Capture exit codes for unzip, unrar, and 7z operations - Abort processing if extraction fails or detects CRC/header errors - Prevent chdman from attempting to convert malformed disc images - Ensure failures are logged and temporary directories are cleaned up
- Fetch file size once at function start to ensure logical consistency - Use 'is_large_disc' flag for all size-based branching - Remove redundant 'stat' calls in fallback logic - Add DEBUG logs to trace raw byte counts and boolean evaluations
- Update detect_disc_type to resolve referenced files in CUE sheets - Enable console fingerprinting on the primary data track (BIN) of CD sets - Prioritize header sniffing over extension-based short-circuits - Ensure PS2 CD-ROMs receive 2048-byte hunk alignment via 'ps2' identity
- Log extracted BIN filenames from CUE headers - Verify existence of referenced data tracks before sniffing - Add header-match confirmation for PS2 signatures
Fix disc detection & PS2 handling (CUE→BIN sniffing, safer extraction, fewer false positives)
… regex Bash uses POSIX ERE for [[ =~ ]] matching and does not support the PCRE non-capturing group syntax (?:...). This caused the "1 of 2" and "1/2" disc patterns in parse_disc_info() to never match. Replace the non-capturing group with a standard capturing group so the regex works correctly under Bash.
Failure counts were incremented in multiple layers including verify_chds() and convert_disc_file(), while callers also incremented the counter when helpers returned non-zero. Remove failure increments from helper functions so they only return status. Failure counting is now centralized in process_input(), ensuring the summary reflects actual input-level failures.
Introduce an `input_failed` flag within process_input() and move the increment of the global `failures` counter to a single location at the end of the function. Previously, helper functions such as convert_disc_file() and some verification paths modified the global failure counter directly, which could lead to multiple increments for a single input. Failures are now signalled via return codes or by setting `input_failed`, and process_input() increments the counter once before returning a non-zero status. This ensures failure reporting is consistent and avoids double-counting in the summary.
…if_allowed() - dedupe KEEP_ORIGINALS/DRY_RUN guarded removal logic - call helper in verified-fastpath and post-conversion finalisation
Prevent M3U generation when an input fails during extraction, conversion, or CHD verification. Previously the M3U update logic could still run with input_failed=true, potentially producing playlists based on incomplete or partially converted sets. Move the failure check before the M3U generation block so maybe_generate_m3u_for() is only called on successful runs.
Replace `7z l -ba | grep` with parsing of `7z l -slt` output. Table output is formatting-dependent and not reliable for scripting. Using `-slt` provides stable `Path = ...` entries for extraction.
…sing Add `--` before the archive filename when calling unzip and unrar. This prevents filenames beginning with `-` from being interpreted as command options.
Convert backslashes to forward slashes before basename matching so CUEs with Windows separators don’t falsely report missing referenced files.
…d detection Keep createdvd probing but remove the verbose debug log to avoid noisy logs.
Replace detection based on `chdman -help` output with an explicit capability probe using `chdman help createdvd`. This avoids parsing large help output and provides a more reliable feature check across chdman versions and builds.
Add `|| true` when reading the first 64KB of the image so failures in `head` do not terminate the script under `set -euo pipefail`. Also add `--` to protect against filenames beginning with `-`.
Remove temp directories from the global TEMP_DIRS list when they are already cleaned up by the per-input `_cleanup` trap in process_input(). This avoids duplicate cleanup attempts and simplifies temp directory lifecycle management.
…_disc_info Define disc label patterns once and reuse them when constructing the union regex. This reduces duplication and makes the detection patterns easier to maintain without changing behaviour.
…collisions - Add optional base override to convert_disc_file() - Drive archive conversions from archive_entries and name outputs via archive_entry_to_chd_name() - Ensure tmp CHD paths align with expected CHD manifests for verify/finalize
- Normalize CR→LF without piping the while-loop (keeps state in current shell) - Ensure progress_active/newline handling works reliably at EOF - Improve terminal wrap restore consistency via traps
Improve CUE FILE parsing when resolving the BIN path used for header sniffing. The parser now: - accepts leading whitespace before FILE - handles case-insensitive FILE directives - normalizes Windows-style backslashes in paths This prevents false negatives when locating BIN files referenced by valid CUE sheets.
When detecting disc type from a .cue, select the first referenced data-like file (bin/iso/img/mdf) instead of blindly taking the first FILE entry, which is often an audio track. Normalize Windows-style path separators and keep detailed debug logging.
Allow the temporary working directory used for extraction and verification to be overridden via the TMPDIR environment variable. Defaults to /var/tmp/chdtool to avoid filling tmpfs, but users can now supply a custom location (e.g. faster SSD or larger volume) without modifying the script.
Create a unique per-run temporary workspace under TMPDIR using RUN_ID. This prevents collisions between concurrent script runs and keeps extraction and verification scratch files isolated. Example layout: /var/tmp/chdtool/<RUN_ID>/chdconv_* /var/tmp/chdtool/<RUN_ID>/chdverify_*
- early-return in dry-run mode after logging intended conversions - split archive vs non-archive conversion into a single clear branch - keep temp dir cleanup in archive path after conversions complete
- fix array element unset in cleanup_temp_dir_now - prevents duplicate cleanup attempts/log lines on EXIT after per-input cleanup
ci: align quality checks with retromount
Bumps the github-actions group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [softprops/action-gh-release](https://github.com/softprops/action-gh-release), [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) and [actions/upload-artifact](https://github.com/actions/upload-artifact). Updates `actions/checkout` from 5.1.0 to 7.0.1 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@fbc6f39...3d3c42e) Updates `softprops/action-gh-release` from 2.6.2 to 3.0.2 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](softprops/action-gh-release@3bb1273...3d0d988) Updates `peter-evans/create-pull-request` from 6.1.0 to 8.1.1 - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](peter-evans/create-pull-request@c5a7806...5f6978f) Updates `actions/upload-artifact` from 6.0.0 to 7.0.1 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@b7c566a...043fb46) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: softprops/action-gh-release dependency-version: 3.0.2 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: peter-evans/create-pull-request dependency-version: 8.1.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/upload-artifact dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
…ub-actions-11669ccbcf chore(deps): bump the github-actions group with 4 updates
…tputs fix: use unique tracked temporary CHD outputs
fix: support reliable partial resume with explicit output states
…t-status fix: return meaningful status when inputs fail
…dation-and-resources Harden descriptor validation and improve resource handling
…rage test: expand conversion regression coverage
…documentation chore: harden release packaging and CLI
docs: document release procedure
# Conflicts: # chdtool
chore: backport v0.2.5 release state
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
developline tomain0.3.0Release process
This PR is the gitflow release promotion from
release/v0.3.0directly intomain. After it merges, create annotated tagv0.3.0on the resultingmainmerge commit and push that tag. The existing Release workflow will run tests and ShellCheck, generate release notes, build and validate reproducible artifacts, publish checksums, create the GitHub release, and open the automated changelog PR.After the release and changelog PR are complete, backport
mainintodevelop.Preflight validation
make testmake package VERSION=0.3.0sha256sum --check SHA256SUMS.tar.gzand.zipmanifest validation0.3.0