Releases: inherent-design/empack
Releases · inherent-design/empack
Release list
v0.2.0-alpha.2
v0.2.0-alpha.2 - 2026-04-05
Features
- V0.2.0-alpha.1 release
Bug Fixes
- (import) Correct packwiz flags in add_platform_ref
- (cli) Rename --from-source flag to --from
- (sync) Derive dep keys from packwiz .pw.toml filenames
- Require .pw suffix in toml scan; correct doc inconsistencies
- (import) Use project-id and version-id for Modrinth packwiz add
Documentation
- Rewrite testing.md for two-tier test architecture
- Update CONTRIBUTING.md for two-tier test architecture
Maintenance
- Bump workspace version to 0.2.0-alpha.1
Other
- Add renovate.json
v0.2.0-alpha.1
v0.2.0-alpha.1 - 2026-04-04
Features
- (content) Add UrlKind classifier, JarResolver, and side types
- (import) Add modpack import pipeline (Track A)
- (add) Version pin flags, URL-based add, sync contract evolution
Bug Fixes
- Resolve single-element loop clippy warning in template installer
- Address review findings across import, content, and add pipelines
- Zip slip, version ID lookup, batch dedup, dead code, path classifiers
- (import) Correct CurseForge project resolution endpoint and auth
- (content) Correct CurseForge fingerprint endpoint in ApiJarResolver
- Modrinth version-file algorithm param and mrpack override extraction
- Correct CurseForge classId mappings and add Modrinth URL patterns
- (content) Use file.id for CurseForge file ID, not fingerprint hash
- (import) Write DependencyRecord for all imported platform refs
- (import) Add fileSize serde rename; expand VCR for v0.2 endpoints
- (import) Add versionId serde rename for mrpack manifest
Testing
- Add URL classification tests and fix clippy warning
- Harden v0.2.0-alpha.1 test coverage
- Record v0.2 VCR cassettes from live APIs
- Add API contract tests and fix mrpack fixture field names
Documentation
- Remove 'empack sync' from README.md start
- Remove stale/historical ADR
- Add doc comments, scoped commits, agent guidelines, changelog to CONTRIBUTING
- Add behavioral spec decomposition for empack
Maintenance
- Comment+docs clean-up
- Remove obvious comments in import executor
- Remove comments that restate what the code says
v0.1.0-alpha.4
v0.1.0-alpha.4 - 2026-03-30
Bug Fixes
- Rename Init positional field to dir, filter dot path defaults
- Resolve actual directory basename for dot-path positional args
Refactoring
- Separate directory resolution from pack name in init
v0.1.0-alpha.3
v0.1.0-alpha.3 - 2026-03-29
Bug Fixes
- Move template scaffolding after state transition in init
Maintenance
- Update changelog
v0.1.0-alpha.2
v0.1.0-alpha.2 - 2026-03-29
Bug Fixes
- Gate locale tests on unix, remove stale DimensionSource variants
- Real terminal size detection, remove empty capabilities module
Refactoring
- Remove terminal probing, enforce NO_COLOR, capability-driven display
- Consolidate platform module, remove dead capabilities
- Display tests, un-ignore terminal tests, break circular dep
v0.1.0-alpha.1
v0.1.0-alpha.1 - 2026-03-29
Features
- Implement loader-first architecture
- Bootstrap Rust project infrastructure
- Establish layered module architecture
- Implement comprehensive shared type system
- Implement domain-specific data structures
- Implement comprehensive configuration system
- Add stubs for runtime detection
- Add project and testing config
- Implement shared type system with errors
- Implement terminal capability detection
- Add networking and platform modules
- Switch CI to cargo binstall
- Add cross-platform tool detection + CLI commands
- Add display module for UI
- Add forge api support to v1 library
- Implement core mod management commands
- Complete session-based architecture
- Complete abstraction for external commands
- Add Apache 2.0 license
- (api) Implement DependencyGraph with transitive resolution
- Begin v4 internal refactor
- Add packwiz, integrations tests, builds
- (test) Extract test infrastructure helpers
- Publish default CF API key
- (sync) Add sync planning and execution logic for dependency managem
- (init) Expose non-interactive flags
- (empack) Make add/remove atomic by updating empack.yml directly
- Add terminal safety net for cursor restoration on interrupt
- Add 5-minute timeout to child process execution
- Add enforced state transition validation
- Add enforced state transition validation
- Validate init inputs from CLI flags against fetched version lists
- Add --loader-version CLI flag for fully unattended init
- Native server JAR download for all loaders, eliminate mrpack-install and curl
- Self-contained Fabric server via installer, fix Quilt srv.jar rename
- Download ServerStarterJar as srv.jar for NeoForge and Forge builds
- Tar fallback for distribution packaging, fix archive requirements reporting
- Two-phase search with incompatibility notice
- Vanilla (no modloader) init support
- Native archive operations, type-aware search, multi-type add
- --format flag for build, remove -j conflict, type-less direct ID adds
- Wave 2 fixes for alpha.1 release gate
- Cache-first download and with_pre_cached_jars helper
- Java installer side-effect hooks for MockProcessProvider
- MockSessionBuilder for cross-platform integration tests
- ArchiveProvider trait for testable archive operations
- Unify template system and wire into init
- Add release.yml template and remove empack CI dependency
Bug Fixes
- Improve test reliability and workflow
- Windows BOOL import for v0.60
- Wrap GlobalMemoryStatusEx return in BOOL
- Compare BOOL to false instead of 0
- Implement proper Windows locale detection
- Minimal test and error clean-up
- NeoForge versioning; reduce version input
- (versions) Harden loader discovery and metadata resolution
- (build) Tighten build result contracts
- (tests) Align missing-installer assertions and pre-seed JAR for template test
- (tests) Align missing-installer assertions and pre-seed JAR for template test
- (tests) Update bootstrap invocation assertions for v1 pattern
- Resolve clippy violations and PR review findings for CI green
- Resolve clippy violations and PR review findings for CI green
- Remove redundant trim before split_whitespace
- Collapse nested if in discover_state to satisfy clippy
- Prevent state machine stuck on build pipeline failure
- Correct cycle detection return and clean version_overrides on remove
- Find_program respects custom_path for hermetic testing
- Deduplicate coverage test run in CI workflow
- Add EOF newlines to workflow files and document packwiz cwd rationale
- Query macOS page size at runtime via sysconf
- Handle Ctrl+C during dialoguer prompts as clean exit
- Use byte I/O for binary JAR file copying in build pipeline
- Address PR review findings for cursor guard and workdir
- Guard terminal escapes with is_terminal and unify interrupt cleanup
- Add biased; to tokio::select! to prevent race on clean exit
- Discriminate SIGINT from other EINTR in prompt interrupt handlers
- Write cursor escape sequences to both stdout and stderr
- Remove broken sigint_received() check from prompt interrupt handlers
- Use parent directory for git config lookup when target dir doesn't exist
- Kill child process on timeout and fix guard disarm ordering
- Platform-aware timeout message, deduplicate transition validation, add #[must_use] to guard
- Enforce layout validation for Cleaning marker transition
- Replace wildcard with explicit match arms in Clean transition
- Replace path unwrap calls with to_string_lossy in builds.rs
- Init without positional name now creates subdirectory
- Address PR review findings for init validation
- Cross-platform cache isolation for hermetic tests
- Add cfg(unix) gates for Windows compilation
- Cross-platform test paths and cfg-gate unix-only E2E tests
- Address PR #12 review findings (G2, G3, M1, M2)
- Prevent deadlock in process output handling with polling-based wait
- Remove dead build failure check and fix mock script arg matching
- Quilt version list, packwiz abstraction leak, sync display counter
- Marker content validation, unwrap cleanup, workspace dep, shadow removal
- Reject pinned project_id without explicit project_platform
- Address PR review findings across session, state, search, builds, config
- Sync orphan removal, state marker persistence, release cache
- Packwiz remove -y flag, add_dependency slug protection, search fallback, mock escaping
- Thread preferred_platform through add path, relax Modrinth ID check, hoist loop alloc
- Derive dep_key from packwiz .pw.toml filename, not user input
- Remove false-positive Modrinth ID heuristic, strengthen test assertions
- Serde-based YAML init, track planning-phase sync failures
- Complete non-interactive init, tighten packwiz file filter
- Preserve loader_version round-trip, deterministic config ordering
- Map neoforge to forge for mrpack-install, allow build retry after interruption
- Dry-run threading, clean detection, init cleanup, handle_remove state guard
- Binary file corruption in copy_dir_contents, dry-run clean ordering, hardcoded timeout
- Quilt loader_version passthrough, SHA1 test coverage, runtime guard
- Report cleanup failure in init error recovery
- Quilt positional loader arg, temp-mrpack cleanup, log omission, requirements update
- Clean up temp-mrpack-extract on build failure
- Archive EmptySource consistency, GzEncoder flush, docs, test quoting
- Retry with exponential backoff for server JAR downloads
- Resolve clippy warnings in session_mocks
- Address PR review findings
- Clean up orphaned .pw.toml after CF restricted mod detection
- Address second round of PR review findings
- Guard remove_file on packwiz remove failure
- Cross-platform packwiz cache directory resolution
- Route mods_dir existence check through session filesystem
- Route Go detection through session ProcessProvider
- Propagate errors from handle_remove
- Return Err from handle_init on existing project and empty loaders
- Address PR #17 review findings
- Resolve clippy type_complexity warning
- Address PR #18 review findings
- Address PR #18 review round 2
- Address PR #18 review round 3
- Address PR #19 alpha.1 release review findings
- Remove FABRIC_VERSION template alias; clean break to LOADER_VERSION
- Clean archive resolution and symlink safety
- Box BuildOrchestrator in StateTransition to fix large_enum_variant
- Create dist/ before writing server archive in release template
- Disable HTML escaping, gitignore archives, align PR triggers
Testing
- Complete migration to separate test files
- Coverage and error fixes
- (commands) Format test code and improve mock setup
- Improve hermetic E2E testing with mock HTTP client and packwiz ass
- (commands) Improve init command tests with comprehensive assertions
- (sync) Improve packwiz command assertions to handle multiple comman
- (state) Refactor malformed yaml test to use mock filesystem provide
- (commands) Update packwiz add command assertions to match new argum
- (fixtures) Add workflow project fixture and improve mock invocation
- (sync) Add comprehensive tests for sync plan building and contract
- (application) Tighten add and sync contract coverage
- (mocks) Add mrpack export side effects to process provider
- (builds) Validate artifact existence and isolate client-full builds
- (contracts) Tighten build contracts and close E2E workflow gaps
- (coverage) Add workflow for code coverage reporting with codecov
- Strengthen vacuous command tests with real assertions
- Remove phantom validation tests that exercise no real code
- Add missing packwiz assertions to build tests
- Consolidate duplicate build tests and add assertion messages
- Add 89 tests covering CLI input resolution, sync invariants, config serde, search error paths
- Remove orphaned and vacuous tests, strengthen weak assertions
- Queue-based MockInteractiveProvider for multi-step flows
- Wave 1 test creation for alpha.1 release gate
- Expanded hermetic matrix for init, add, and dry-run
- Add review fix coverage and update testing docs
- Remove vacuous integration tests
- Build matrix coverage for NeoForge, Quilt, Vanilla, Fabric client
- Migrate 8 init tests to cross-platform mock sessions
- Migrate 7 add/remove/sync tests to cross-platform mock sessions
- Migrate 18 build tests to cross-platform mock sessions
- Migrate 2 lifecycle tests to cross-platform mock sessions
- Verify release.yml registration and init scaffolding
Documentation
- Add contributing guidelines for empack
- Add AI development guidelines
- Add commit style guidlines
- Update architectural direction
- Establish semantic style guidelines
- Update context with state machine + CLI implementation
- Checkpoint project documentation
- Remove old audits and organize
- Track AI ...