Changelog
=========
[0.0.11](https://github.com/casey/filepack/releases/tag/0.0.11) - 2026-10-02
----------------------------------------------------------------------------
### Changed
- Remove 255 byte component length limit ([#832](https://github.com/casey/filepack/pull/832) by [casey](https://github.com/casey))
- Remove 4096 byte relative path length limit ([#831](https://github.com/casey/filepack/pull/831) by [casey](https://github.com/casey))
- Use signature hash as manifest archive entry name ([#823](https://github.com/casey/filepack/pull/823) by [casey](https://github.com/casey))
- Sort signatures in manifest archive by encoded bytes ([#822](https://github.com/casey/filepack/pull/822) by [casey](https://github.com/casey))
- Change `Time::Day::day` to `i64` ([#815](https://github.com/casey/filepack/pull/815) by [casey](https://github.com/casey))
- Forbid packages containing `manifest.filepack` or `.filepack` ([#814](https://github.com/casey/filepack/pull/814) by [casey](https://github.com/casey))
- Treat requests without an API version header as version 0 ([#812](https://github.com/casey/filepack/pull/812) by [casey](https://github.com/casey))
- Only reject alphabetic Windows drive letters in paths ([#807](https://github.com/casey/filepack/pull/807) by [casey](https://github.com/casey))
- Require public keys to be canonical ([#805](https://github.com/casey/filepack/pull/805) by [casey](https://github.com/casey))
- Use `hash1` as tag for plain hashes ([#796](https://github.com/casey/filepack/pull/796) by [casey](https://github.com/casey))
- Move head check to `HEAD /api/head/{revision}` ([#795](https://github.com/casey/filepack/pull/795) by [casey](https://github.com/casey))
- Replace JSON Web Tokens with tagged hex ([#732](https://github.com/casey/filepack/pull/732) by [casey](https://github.com/casey))
- Replace Bech32 with tagged hex ([#716](https://github.com/casey/filepack/pull/716) by [casey](https://github.com/casey))
- Use deco instead of CBOR ([#693](https://github.com/casey/filepack/pull/693) by [casey](https://github.com/casey))
### Added
- Add path component length lint ([#833](https://github.com/casey/filepack/pull/833) by [casey](https://github.com/casey))
- Add `mixed-formats` lint ([#817](https://github.com/casey/filepack/pull/817) by [casey](https://github.com/casey))
- Support AAC in MP4 audio items ([#816](https://github.com/casey/filepack/pull/816) by [casey](https://github.com/casey))
- Require `--unstable` to enable unstable features ([#809](https://github.com/casey/filepack/pull/809) by [casey](https://github.com/casey))
- Require paths to be in Unicode Normal Form C on creation ([#804](https://github.com/casey/filepack/pull/804) by [casey](https://github.com/casey))
- Add api version header ([#790](https://github.com/casey/filepack/pull/790) by [casey](https://github.com/casey))
- Make `/N` redirect to `/package/N` ([#784](https://github.com/casey/filepack/pull/784) by [casey](https://github.com/casey))
- Add `/package/{package}/history` ([#778](https://github.com/casey/filepack/pull/778) by [casey](https://github.com/casey))
- Add client revisions and `filepack upload --update` ([#774](https://github.com/casey/filepack/pull/774) by [casey](https://github.com/casey))
- Add revisions ([#771](https://github.com/casey/filepack/pull/771) by [casey](https://github.com/casey))
### Fixed
- Reject reserved paths when verifying packages on server ([#827](https://github.com/casey/filepack/pull/827) by [casey](https://github.com/casey))
### Misc
- Fix windows-reserved-character lint message ([#834](https://github.com/casey/filepack/pull/834) by [casey](https://github.com/casey))
- Fix documentation ([#830](https://github.com/casey/filepack/pull/830) by [casey](https://github.com/casey))
- Fix overflow when disc total is `u64::MAX` ([#828](https://github.com/casey/filepack/pull/828) by [casey](https://github.com/casey))
- Create private key files with `create_new` ([#829](https://github.com/casey/filepack/pull/829) by [casey](https://github.com/casey))
- Remove redundant tests ([#826](https://github.com/casey/filepack/pull/826) by [casey](https://github.com/casey))
- Remove unnecessary derives ([#825](https://github.com/casey/filepack/pull/825) by [casey](https://github.com/casey))
- Prepare for release ([#824](https://github.com/casey/filepack/pull/824) by [casey](https://github.com/casey))
- Disable empty test targets ([#821](https://github.com/casey/filepack/pull/821) by [casey](https://github.com/casey))
- Add MP4 decoder ([#819](https://github.com/casey/filepack/pull/819) by [casey](https://github.com/casey))
- Allow `fixme` and `xxx` in `bin/forbid` ([#820](https://github.com/casey/filepack/pull/820) by [casey](https://github.com/casey))
- Improve error message when audio tracks are missing disc or track totals ([#818](https://github.com/casey/filepack/pull/818) by [casey](https://github.com/casey))
- Fix clippy lints ([#813](https://github.com/casey/filepack/pull/813) by [casey](https://github.com/casey))
- Preserve unknown root archive entries when signing ([#811](https://github.com/casey/filepack/pull/811) by [casey](https://github.com/casey))
- Preserve unknown signatures ([#810](https://github.com/casey/filepack/pull/810) by [casey](https://github.com/casey))
- Use strict decoding in tests ([#808](https://github.com/casey/filepack/pull/808) by [casey](https://github.com/casey))
- Don't use `url` crate to parse URLs ([#806](https://github.com/casey/filepack/pull/806) by [casey](https://github.com/casey))
- Rename `MalformedError::Duplicate` to `DuplicateElement` ([#803](https://github.com/casey/filepack/pull/803) by [casey](https://github.com/casey))
- Replace `ComponentError::Normal` with `Parent` and `Current` ([#802](https://github.com/casey/filepack/pull/802) by [casey](https://github.com/casey))
- Add `UnknownError::Field` ([#801](https://github.com/casey/filepack/pull/801) by [casey](https://github.com/casey))
- Replace `Decoder::decode_optional()` with `UnknownError` ([#800](https://github.com/casey/filepack/pull/800) by [casey](https://github.com/casey))
- Rename `Package` to `PackageMetadata` ([#799](https://github.com/casey/filepack/pull/799) by [casey](https://github.com/casey))
- Move shortcuts table onto page ([#798](https://github.com/casey/filepack/pull/798) by [casey](https://github.com/casey))
- Derive tag prefix from enum variant name ([#797](https://github.com/casey/filepack/pull/797) by [casey](https://github.com/casey))
- Make `Revision::parents` an option and omit when empty ([#794](https://github.com/casey/filepack/pull/794) by [casey](https://github.com/casey))
- Simplify decode and encode ([#793](https://github.com/casey/filepack/pull/793) by [casey](https://github.com/casey))
- Remove `#[deco(encode_with)]` and `#[deco(decode_with)]` ([#792](https://github.com/casey/filepack/pull/792) by [casey](https://github.com/casey))
- Move entry data into `EntryInfo` ([#791](https://github.com/casey/filepack/pull/791) by [casey](https://github.com/casey))
- Ignore unknown request fields ([#789](https://github.com/casey/filepack/pull/789) by [casey](https://github.com/casey))
- Use space separated lowercase type names in derive error messages ([#788](https://github.com/casey/filepack/pull/788) by [casey](https://github.com/casey))
- Omit default fields in template tests ([#787](https://github.com/casey/filepack/pull/787) by [casey](https://github.com/casey))
- Allow revisions to have multiple parents ([#786](https://github.com/casey/filepack/pull/786) by [casey](https://github.com/casey))
- Make `Error::Filesystem` wrap `FilesystemError` ([#785](https://github.com/casey/filepack/pull/785) by [casey](https://github.com/casey))
- Print packages removed after `filepack gc` ([#783](https://github.com/casey/filepack/pull/783) by [casey](https://github.com/casey))
- Rename previous revision to parent ([#782](https://github.com/casey/filepack/pull/782) by [casey](https://github.com/casey))
- Remove fingerprints from `/history` ([#781](https://github.com/casey/filepack/pull/781) by [casey](https://github.com/casey))
- Make version field implicit ([#780](https://github.com/casey/filepack/pull/780) by [casey](https://github.com/casey))
- Put fingerprint below revision on `/package` ([#779](https://github.com/casey/filepack/pull/779) by [casey](https://github.com/casey))
- Resolve links to package revisions ([#777](https://github.com/casey/filepack/pull/777) by [casey](https://github.com/casey))
- Save expected server state on package upload ([#776](https://github.com/casey/filepack/pull/776) by [casey](https://github.com/casey))
- Allow multiple numbers to point at the same revision ([#775](https://github.com/casey/filepack/pull/775) by [casey](https://github.com/casey))
- Make package numbers reference revisions ([#773](https://github.com/casey/filepack/pull/773) by [casey](https://github.com/casey))
- Ignore unknown archive entries when not signing ([#772](https://github.com/casey/filepack/pull/772) by [casey](https://github.com/casey))
- Make magic bytes variable length ([#770](https://github.com/casey/filepack/pull/770) by [casey](https://github.com/casey))
- Add GitHub Actions workflow lockfile ([#769](https://github.com/casey/filepack/pull/769) by [casey](https://github.com/casey))
- Make `#[deco(strict)]` turn on strict decoding for the entire subtree ([#768](https://github.com/casey/filepack/pull/768) by [casey](https://github.com/casey))
- Derive `Magic` ([#767](https://github.com/casey/filepack/pull/767) by [casey](https://github.com/casey))
- Handle magic bytes in derive macros ([#766](https://github.com/casey/filepack/pull/766) by [casey](https://github.com/casey))
- Make `fingerprint` and `number` links on `/package` and `/media` ([#765](https://github.com/casey/filepack/pull/765) by [casey](https://github.com/casey))
- Support previous/next/up navigation on `/package` ([#764](https://github.com/casey/filepack/pull/764) by [casey](https://github.com/casey))
- Link to packages in frontend by number or fingerprint ([#763](https://github.com/casey/filepack/pull/763) by [casey](https://github.com/casey))
- Remove `ServerError::message()` ([#762](https://github.com/casey/filepack/pull/762) by [casey](https://github.com/casey))
- Make package fingerprints and numbers one-to-one ([#761](https://github.com/casey/filepack/pull/761) by [casey](https://github.com/casey))
- Resolve package numbers in server route paths ([#760](https://github.com/casey/filepack/pull/760) by [casey](https://github.com/casey))
- Add `/api/file/{hash}` ([#759](https://github.com/casey/filepack/pull/759) by [casey](https://github.com/casey))
- Add `/api/package/{fingerprint}` ([#758](https://github.com/casey/filepack/pull/758) by [casey](https://github.com/casey))
- Add unsupported version error ([#757](https://github.com/casey/filepack/pull/757) by [casey](https://github.com/casey))
- Version hex strings ([#756](https://github.com/casey/filepack/pull/756) by [casey](https://github.com/casey))
- Derive `Ord` and `PartialOrd` for `Signature` ([#755](https://github.com/casey/filepack/pull/755) by [casey](https://github.com/casey))
- Add version to signature, statement, and claims ([#754](https://github.com/casey/filepack/pull/754) by [casey](https://github.com/casey))
- Add version field to metadata ([#753](https://github.com/casey/filepack/pull/753) by [casey](https://github.com/casey))
- Forbid overflowing totals ([#752](https://github.com/casey/filepack/pull/752) by [casey](https://github.com/casey))
- Remove more dead code ([#751](https://github.com/casey/filepack/pull/751) by [casey](https://github.com/casey))
- Remove dead code ([#750](https://github.com/casey/filepack/pull/750) by [casey](https://github.com/casey))
- Remove `Audio::{disc,discs}` ([#749](https://github.com/casey/filepack/pull/749) by [casey](https://github.com/casey))
- Remove audio fields ([#748](https://github.com/casey/filepack/pull/748) by [casey](https://github.com/casey))
- Add `Language::decode_optional()` ([#747](https://github.com/casey/filepack/pull/747) by [casey](https://github.com/casey))
- Encode archive and metadata files with magic bytes ([#746](https://github.com/casey/filepack/pull/746) by [casey](https://github.com/casey))
- Ignore unknown unit enum variant fields ([#745](https://github.com/casey/filepack/pull/745) by [casey](https://github.com/casey))
- Print unknown field keys when decoding in strict mode ([#744](https://github.com/casey/filepack/pull/744) by [casey](https://github.com/casey))
- Default to ignoring unknown fields and variants ([#743](https://github.com/casey/filepack/pull/743) by [casey](https://github.com/casey))
- Allow unknown fields and variants on enums ([#742](https://github.com/casey/filepack/pull/742) by [casey](https://github.com/casey))
- Allow `#[deco(allow_unknown_variants)]` on enums ([#741](https://github.com/casey/filepack/pull/741) by [casey](https://github.com/casey))
- Allow `#[deco(allow_unknown_fields)]` on enums ([#740](https://github.com/casey/filepack/pull/740) by [casey](https://github.com/casey))
- Display unknown formats on `/package` ([#739](https://github.com/casey/filepack/pull/739) by [casey](https://github.com/casey))
- Display `unknown` when enum variants are unknown ([#738](https://github.com/casey/filepack/pull/738) by [casey](https://github.com/casey))
- Allow fields with unknown enum variants on metadata types ([#737](https://github.com/casey/filepack/pull/737) by [casey](https://github.com/casey))
- Add `#[deco(allow_unknown_variants)]` ([#736](https://github.com/casey/filepack/pull/736) by [casey](https://github.com/casey))
- Allow unknown fields on more types ([#735](https://github.com/casey/filepack/pull/735) by [casey](https://github.com/casey))
- Sort `Signature` trait impls ([#734](https://github.com/casey/filepack/pull/734) by [casey](https://github.com/casey))
- Test that loader passes decode options correctly ([#733](https://github.com/casey/filepack/pull/733) by [casey](https://github.com/casey))
- Add `DecodeResult` alias ([#731](https://github.com/casey/filepack/pull/731) by [casey](https://github.com/casey))
- Add `Decoder::child()` method for instantiating sub-decoders ([#730](https://github.com/casey/filepack/pull/730) by [casey](https://github.com/casey))
- Remove `DalekSignatureError` wrapper ([#729](https://github.com/casey/filepack/pull/729) by [casey](https://github.com/casey))
- Reject unknown fields when signing ([#728](https://github.com/casey/filepack/pull/728) by [casey](https://github.com/casey))
- Rename `allow_unknown_keys` to `allow_unknown_fields` ([#727](https://github.com/casey/filepack/pull/727) by [casey](https://github.com/casey))
- Use dedicated `Loader` to load archives ([#726](https://github.com/casey/filepack/pull/726) by [casey](https://github.com/casey))
- Don't re-pack archive when signing ([#725](https://github.com/casey/filepack/pull/725) by [casey](https://github.com/casey))
- Avoid recreating archive to calculate fingerprint ([#724](https://github.com/casey/filepack/pull/724) by [casey](https://github.com/casey))
- Forbid invalid derive attributes ([#723](https://github.com/casey/filepack/pull/723) by [casey](https://github.com/casey))
- Allow unknown fields on `Archive` ([#722](https://github.com/casey/filepack/pull/722) by [casey](https://github.com/casey))
- Allow decoders to borrow from input ([#721](https://github.com/casey/filepack/pull/721) by [casey](https://github.com/casey))
- Remove public key from readme ([#720](https://github.com/casey/filepack/pull/720) by [casey](https://github.com/casey))
- Allow unnameable types ([#719](https://github.com/casey/filepack/pull/719) by [casey](https://github.com/casey))
- Don't mention deco in user-facing strings ([#718](https://github.com/casey/filepack/pull/718) by [casey](https://github.com/casey))
- Remove deco framing from tagged hex strings ([#717](https://github.com/casey/filepack/pull/717) by [casey](https://github.com/casey))
- Accept schemeless server URLs on the command line ([#715](https://github.com/casey/filepack/pull/715) by [casey](https://github.com/casey))
- Preserve CLI server URL paths without a trailing slash ([#714](https://github.com/casey/filepack/pull/714) by [casey](https://github.com/casey))
- Add unit tests for encoding ([#713](https://github.com/casey/filepack/pull/713) by [casey](https://github.com/casey))
- Use lowercase hex literals ([#712](https://github.com/casey/filepack/pull/712) by [casey](https://github.com/casey))
- Center error page status code ([#711](https://github.com/casey/filepack/pull/711) by [casey](https://github.com/casey))
- Check declared file and directory sizes in archives ([#710](https://github.com/casey/filepack/pull/710) by [casey](https://github.com/casey))
- Reject invalid manifest in `filepack archive` ([#709](https://github.com/casey/filepack/pull/709) by [casey](https://github.com/casey))
- Reject uppercase hashes when deserializing ([#708](https://github.com/casey/filepack/pull/708) by [casey](https://github.com/casey))
- Allow embedded files in archives ([#707](https://github.com/casey/filepack/pull/707) by [casey](https://github.com/casey))
- Avoid races between upload and garbage collection ([#706](https://github.com/casey/filepack/pull/706) by [casey](https://github.com/casey))
- Don't follow redirects in HTTP client ([#705](https://github.com/casey/filepack/pull/705) by [casey](https://github.com/casey))
- Fix typo in deco head spec ([#704](https://github.com/casey/filepack/pull/704) by [casey](https://github.com/casey))
- Use zigzag encoding for integers ([#703](https://github.com/casey/filepack/pull/703) by [casey](https://github.com/casey))
- Encode deco back to front ([#702](https://github.com/casey/filepack/pull/702) by [casey](https://github.com/casey))
- Stack `/package` `
`s when viewport is narrow ([#701](https://github.com/casey/filepack/pull/701) by [casey](https://github.com/casey))
- Stack `/media` `` when viewport is narrow ([#700](https://github.com/casey/filepack/pull/700) by [casey](https://github.com/casey))
- Simplify integer encoding and decoding ([#699](https://github.com/casey/filepack/pull/699) by [casey](https://github.com/casey))
- Remove `Decoder::{position,set_position}()` ([#698](https://github.com/casey/filepack/pull/698) by [casey](https://github.com/casey))
- Inline derive implementation validation ([#697](https://github.com/casey/filepack/pull/697) by [casey](https://github.com/casey))
- Fix old references to CBOR ([#696](https://github.com/casey/filepack/pull/696) by [casey](https://github.com/casey))
- Add comment to `Head` describing encoding ([#695](https://github.com/casey/filepack/pull/695) by [casey](https://github.com/casey))
- Rename `filepack-cbor` to `filepack-derive` ([#694](https://github.com/casey/filepack/pull/694) by [casey](https://github.com/casey))
- Reject symlinks in `filepack verify` ([#692](https://github.com/casey/filepack/pull/692) by [casey](https://github.com/casey))
- Reject file size mismatches in `filepack download` ([#691](https://github.com/casey/filepack/pull/691) by [casey](https://github.com/casey))
- Require `--domain` if server is started with admin key ([#690](https://github.com/casey/filepack/pull/690) by [casey](https://github.com/casey))
- Prefer `slice.get()` over bounds checking ([#689](https://github.com/casey/filepack/pull/689) by [casey](https://github.com/casey))
- Use checked arithmetic in `Decoder::raw_slice()` ([#688](https://github.com/casey/filepack/pull/688) by [casey](https://github.com/casey))
- Move long `Cargo.toml` dependencies into their own sections ([#687](https://github.com/casey/filepack/pull/687) by [casey](https://github.com/casey))
- Remove manifest from release workflow ([#686](https://github.com/casey/filepack/pull/686) by [casey](https://github.com/casey))
- Update release workflow dependencies ([#685](https://github.com/casey/filepack/pull/685) by [casey](https://github.com/casey))
- Install musl toolchain in release workflow ([#684](https://github.com/casey/filepack/pull/684) by [casey](https://github.com/casey))
- Include `static` and `templates` in crate ([#683](https://github.com/casey/filepack/pull/683) by [casey](https://github.com/casey))
[0.0.10](https://github.com/casey/filepack/releases/tag/0.0.10) - 2026-09-06
----------------------------------------------------------------------------
### Added
- Add `item-title-missing` lint ([#670](https://github.com/casey/filepack/pull/670) by [casey](https://github.com/casey))
- Add lint for non-square embedded audio cover art ([#604](https://github.com/casey/filepack/pull/604) by [casey](https://github.com/casey))
- Add lint for mismatch between video and placeholder dimensions ([#600](https://github.com/casey/filepack/pull/600) by [casey](https://github.com/casey))
- Add lint for missing video placeholder images ([#594](https://github.com/casey/filepack/pull/594) by [casey](https://github.com/casey))
- Add video placeholder images ([#590](https://github.com/casey/filepack/pull/590) by [casey](https://github.com/casey))
- Add lints for missing media items and package creator ([#586](https://github.com/casey/filepack/pull/586) by [casey](https://github.com/casey))
- Add more metadata lints ([#585](https://github.com/casey/filepack/pull/585) by [casey](https://github.com/casey))
- Add media missing and metadata missing lints ([#584](https://github.com/casey/filepack/pull/584) by [casey](https://github.com/casey))
- Skip lints with `--allow` ([#583](https://github.com/casey/filepack/pull/583) by [casey](https://github.com/casey))
- Allow denying individual lints ([#582](https://github.com/casey/filepack/pull/582) by [casey](https://github.com/casey))
- Add lints for missing artwork and derived assets ([#581](https://github.com/casey/filepack/pull/581) by [casey](https://github.com/casey))
- Extract titles from images ([#571](https://github.com/casey/filepack/pull/571) by [casey](https://github.com/casey))
- Extract titles from videos ([#570](https://github.com/casey/filepack/pull/570) by [casey](https://github.com/casey))
- Add `all` lint group ([#560](https://github.com/casey/filepack/pull/560) by [casey](https://github.com/casey))
- Overwrite thumbnails with `--force` ([#558](https://github.com/casey/filepack/pull/558) by [casey](https://github.com/casey))
- Generate thumbnails with `filepack create --generate` ([#555](https://github.com/casey/filepack/pull/555) by [casey](https://github.com/casey))
- Add lint for missing embedded cover art in audio files ([#552](https://github.com/casey/filepack/pull/552) by [casey](https://github.com/casey))
- Add `filepack delete` subcommand ([#533](https://github.com/casey/filepack/pull/533) by [casey](https://github.com/casey))
- Add `DELETE /api/package/FINGERPRINT` ([#532](https://github.com/casey/filepack/pull/532) by [casey](https://github.com/casey))
- Add color metadata to images ([#521](https://github.com/casey/filepack/pull/521) by [casey](https://github.com/casey))
- Support MP3s in audio packages ([#513](https://github.com/casey/filepack/pull/513) by [casey](https://github.com/casey))
- Add `/api/packages` endpoint ([#497](https://github.com/casey/filepack/pull/497) by [casey](https://github.com/casey))
- Add web packages and mounts ([#494](https://github.com/casey/filepack/pull/494) by [casey](https://github.com/casey))
- Add chroma subsampling to video tracks ([#471](https://github.com/casey/filepack/pull/471) by [casey](https://github.com/casey))
- Add channel count and sample rate to audio tracks ([#469](https://github.com/casey/filepack/pull/469) by [casey](https://github.com/casey))
- Add orientation to video tracks ([#466](https://github.com/casey/filepack/pull/466) by [casey](https://github.com/casey))
- Add bit depth to video tracks ([#457](https://github.com/casey/filepack/pull/457) by [casey](https://github.com/casey))
- Add track size ([#455](https://github.com/casey/filepack/pull/455) by [casey](https://github.com/casey))
- Add frame count to video tracks ([#453](https://github.com/casey/filepack/pull/453) by [casey](https://github.com/casey))
- Add duration to videos ([#451](https://github.com/casey/filepack/pull/451) by [casey](https://github.com/casey))
- Support WebM videos ([#441](https://github.com/casey/filepack/pull/441) by [casey](https://github.com/casey))
- Support H.264 videos ([#422](https://github.com/casey/filepack/pull/422) by [casey](https://github.com/casey))
- Add video media type ([#421](https://github.com/casey/filepack/pull/421) by [casey](https://github.com/casey))
- Add `Track::channels` ([#407](https://github.com/casey/filepack/pull/407) by [casey](https://github.com/casey))
- Add sample bits to Track ([#405](https://github.com/casey/filepack/pull/405) by [casey](https://github.com/casey))
- Add disc and track numbers to tracks ([#403](https://github.com/casey/filepack/pull/403) by [casey](https://github.com/casey))
- Add directory count and size to totals ([#393](https://github.com/casey/filepack/pull/393) by [casey](https://github.com/casey))
- Add total file count to directories ([#389](https://github.com/casey/filepack/pull/389) by [casey](https://github.com/casey))
- Add total file size to directories ([#386](https://github.com/casey/filepack/pull/386) by [casey](https://github.com/casey))
- Allow ignoring files during create and verify ([#354](https://github.com/casey/filepack/pull/354) by [casey](https://github.com/casey))
- Add `--redirect DOMAIN` to `filepack serve` ([#344](https://github.com/casey/filepack/pull/344) by [casey](https://github.com/casey))
- Include image dimensions in metadata ([#341](https://github.com/casey/filepack/pull/341) by [casey](https://github.com/casey))
- Populate metadata with track titles ([#338](https://github.com/casey/filepack/pull/338) by [casey](https://github.com/casey))
- Add image media type ([#334](https://github.com/casey/filepack/pull/334) by [casey](https://github.com/casey))
- Add audio media ([#318](https://github.com/casey/filepack/pull/318) by [casey](https://github.com/casey))
- Add `/packages` route ([#290](https://github.com/casey/filepack/pull/290) by [casey](https://github.com/casey))
- Add package verification and display ([#287](https://github.com/casey/filepack/pull/287) by [casey](https://github.com/casey))
- Add `/directory` ([#282](https://github.com/casey/filepack/pull/282) by [casey](https://github.com/casey))
- Add `/files` ([#281](https://github.com/casey/filepack/pull/281) by [casey](https://github.com/casey))
- Allow restricting uploads ([#277](https://github.com/casey/filepack/pull/277) by [casey](https://github.com/casey))
- Add package upload and download ([#273](https://github.com/casey/filepack/pull/273) by [casey](https://github.com/casey))
- Add filepack server ([#259](https://github.com/casey/filepack/pull/259) by [casey](https://github.com/casey))
- Add `package.title` metadata field ([#252](https://github.com/casey/filepack/pull/252) by [casey](https://github.com/casey))
### Changed
- Forbid duplicate items ([#580](https://github.com/casey/filepack/pull/580) by [casey](https://github.com/casey))
- Forbid `RelativePath`s over 4096 bytes ([#579](https://github.com/casey/filepack/pull/579) by [casey](https://github.com/casey))
- Forbid `Text` which is empty or has leading or trailing whitespace ([#574](https://github.com/casey/filepack/pull/574) by [casey](https://github.com/casey))
- Rename `--restrict-uploads` to `--restrict-writes` ([#553](https://github.com/casey/filepack/pull/553) by [casey](https://github.com/casey))
- Use text instead of components in package metadata ([#546](https://github.com/casey/filepack/pull/546) by [casey](https://github.com/casey))
- Use full paths in metadata instead of filenames ([#545](https://github.com/casey/filepack/pull/545) by [casey](https://github.com/casey))
- Add `--all` flag to `filepack delete` command ([#544](https://github.com/casey/filepack/pull/544) by [casey](https://github.com/casey))
- Add `filepack gc` command ([#543](https://github.com/casey/filepack/pull/543) by [casey](https://github.com/casey))
- Move directory and package verification routes to `/api` ([#531](https://github.com/casey/filepack/pull/531) by [casey](https://github.com/casey))
- Don't require authentication for `/api/missing` ([#523](https://github.com/casey/filepack/pull/523) by [casey](https://github.com/casey))
- Don't use platform-dependent data directories ([#507](https://github.com/casey/filepack/pull/507) by [casey](https://github.com/casey))
- Forbid files outside of `static` in web packages ([#500](https://github.com/casey/filepack/pull/500) by [casey](https://github.com/casey))
- Move `/missing` to `/api/missing` ([#496](https://github.com/casey/filepack/pull/496) by [casey](https://github.com/casey))
- Require web packages to contain `index.html` ([#495](https://github.com/casey/filepack/pull/495) by [casey](https://github.com/casey))
- Rename `Package::readme` to `Package::colophon` ([#485](https://github.com/casey/filepack/pull/485) by [casey](https://github.com/casey))
- Improve time representation ([#449](https://github.com/casey/filepack/pull/449) by [casey](https://github.com/casey))
- Allow videos with no audio track ([#431](https://github.com/casey/filepack/pull/431) by [casey](https://github.com/casey))
- Rename Track sample_count to samples ([#406](https://github.com/casey/filepack/pull/406) by [casey](https://github.com/casey))
- Forbid extra files in media packages ([#355](https://github.com/casey/filepack/pull/355) by [casey](https://github.com/casey))
- Use `.filemeta` extension for metadata ([#353](https://github.com/casey/filepack/pull/353) by [casey](https://github.com/casey))
- Allow `filepack upload` input to be directory or omitted ([#298](https://github.com/casey/filepack/pull/298) by [casey](https://github.com/casey))
- Change upload flags to `--file` and `--package` ([#293](https://github.com/casey/filepack/pull/293) by [casey](https://github.com/casey))
- Rename `metadata.cbor` to `metadata.filepack` ([#255](https://github.com/casey/filepack/pull/255) by [casey](https://github.com/casey))
- Encode manifest signatures as CBOR ([#254](https://github.com/casey/filepack/pull/254) by [casey](https://github.com/casey))
- Rename manifest `files` to `package` ([#251](https://github.com/casey/filepack/pull/251) by [casey](https://github.com/casey))
- Embed metadata in manifest archive ([#249](https://github.com/casey/filepack/pull/249) by [casey](https://github.com/casey))
- Encode manifest as CBOR ([#244](https://github.com/casey/filepack/pull/244) by [casey](https://github.com/casey))
- Encode metadata as CBOR ([#243](https://github.com/casey/filepack/pull/243) by [casey](https://github.com/casey))
### Misc
- Fix shortcuts popover on mobile Safari ([#681](https://github.com/casey/filepack/pull/681) by [casey](https://github.com/casey))
- Display item details side-by-side instead of stacked ([#680](https://github.com/casey/filepack/pull/680) by [casey](https://github.com/casey))
- Add popover and fullscreen toggle keyboard shortcuts ([#679](https://github.com/casey/filepack/pull/679) by [casey](https://github.com/casey))
- Add keyboard shortcut popover to `/item` page ([#678](https://github.com/casey/filepack/pull/678) by [casey](https://github.com/casey))
- Style `/item` page info `` and move to bottom of page ([#677](https://github.com/casey/filepack/pull/677) by [casey](https://github.com/casey))
- Autofocus audio and video on `/item` ([#676](https://github.com/casey/filepack/pull/676) by [casey](https://github.com/casey))
- Display artist and album on audio `/item` pages ([#675](https://github.com/casey/filepack/pull/675) by [casey](https://github.com/casey))
- Merge media `/item` page templates ([#674](https://github.com/casey/filepack/pull/674) by [casey](https://github.com/casey))
- Navigate images with p, n, and u, instead of arrow keys ([#673](https://github.com/casey/filepack/pull/673) by [casey](https://github.com/casey))
- Use SVG box favicon ([#671](https://github.com/casey/filepack/pull/671) by [casey](https://github.com/casey))
- Remove focus outline from video on package `/item` page ([#669](https://github.com/casey/filepack/pull/669) by [casey](https://github.com/casey))
- Check if package root is a directory in `create` and `verify` ([#668](https://github.com/casey/filepack/pull/668) by [casey](https://github.com/casey))
- Only apply nav link color transition on hover ([#667](https://github.com/casey/filepack/pull/667) by [casey](https://github.com/casey))
- Make active nav link stand out more ([#666](https://github.com/casey/filepack/pull/666) by [casey](https://github.com/casey))
- Use same spacing between `/package` thumbnails and top-level sections ([#665](https://github.com/casey/filepack/pull/665) by [casey](https://github.com/casey))
- Use `em` units for no-packages message on `/` ([#664](https://github.com/casey/filepack/pull/664) by [casey](https://github.com/casey))
- Remove backticks from code in no-packages message ([#663](https://github.com/casey/filepack/pull/663) by [casey](https://github.com/casey))
- Don't hide status code text shadow overflow ([#662](https://github.com/casey/filepack/pull/662) by [casey](https://github.com/casey))
- Use RGB colors ([#661](https://github.com/casey/filepack/pull/661) by [casey](https://github.com/casey))
- Suggest uploading packages if there are none ([#660](https://github.com/casey/filepack/pull/660) by [casey](https://github.com/casey))
- Highlight current page link in the nav bar ([#659](https://github.com/casey/filepack/pull/659) by [casey](https://github.com/casey))
- Link to `/packages` in nav bar ([#658](https://github.com/casey/filepack/pull/658) by [casey](https://github.com/casey))
- Display compression type for images and video ([#657](https://github.com/casey/filepack/pull/657) by [casey](https://github.com/casey))
- Allow first two columns of `/packages` to wrap ([#656](https://github.com/casey/filepack/pull/656) by [casey](https://github.com/casey))
- Use `items` instead of `files` in `/media` `` ([#655](https://github.com/casey/filepack/pull/655) by [casey](https://github.com/casey))
- Use light gray focus color ([#654](https://github.com/casey/filepack/pull/654) by [casey](https://github.com/casey))
- Restyle audio item durations on `/package` ([#653](https://github.com/casey/filepack/pull/653) by [casey](https://github.com/casey))
- Justify right side of thumbnails on `/package` ([#652](https://github.com/casey/filepack/pull/652) by [casey](https://github.com/casey))
- Use better fonts in frontend ([#651](https://github.com/casey/filepack/pull/651) by [casey](https://github.com/casey))
- Remove extra space around nested ``s ([#650](https://github.com/casey/filepack/pull/650) by [casey](https://github.com/casey))
- Use regular spacing in server CSS ([#649](https://github.com/casey/filepack/pull/649) by [casey](https://github.com/casey))
- Use OKLCH colors ([#648](https://github.com/casey/filepack/pull/648) by [casey](https://github.com/casey))
- Make artwork on `/package` smaller ([#647](https://github.com/casey/filepack/pull/647) by [casey](https://github.com/casey))
- Remove side-by side layout `/package` ([#646](https://github.com/casey/filepack/pull/646) by [casey](https://github.com/casey))
- Constrain artwork on `/package` to be square ([#645](https://github.com/casey/filepack/pull/645) by [casey](https://github.com/casey))
- Use `--surface` color for packages with no artwork ([#644](https://github.com/casey/filepack/pull/644) by [casey](https://github.com/casey))
- Display video images on `/package` ([#643](https://github.com/casey/filepack/pull/643) by [casey](https://github.com/casey))
- Use placeholder thumbnails for video item Open Graph images ([#642](https://github.com/casey/filepack/pull/642) by [casey](https://github.com/casey))
- Generate video placeholder thumbnails ([#641](https://github.com/casey/filepack/pull/641) by [casey](https://github.com/casey))
- Use singular `file` in `/package` `` ([#640](https://github.com/casey/filepack/pull/640) by [casey](https://github.com/casey))
- Disable text size adjustment ([#639](https://github.com/casey/filepack/pull/639) by [casey](https://github.com/casey))
- Don't use package fingerprints in headings ([#638](https://github.com/casey/filepack/pull/638) by [casey](https://github.com/casey))
- Put artwork and metadata side-by side on `/package` when possible ([#637](https://github.com/casey/filepack/pull/637) by [casey](https://github.com/casey))
- Display image item titles on hover ([#636](https://github.com/casey/filepack/pull/636) by [casey](https://github.com/casey))
- Display language names instead of codes on `/package` ([#635](https://github.com/casey/filepack/pull/635) by [casey](https://github.com/casey))
- Add outline around image links on hover ([#634](https://github.com/casey/filepack/pull/634) by [casey](https://github.com/casey))
- Deduplicate image border CSS ([#633](https://github.com/casey/filepack/pull/633) by [casey](https://github.com/casey))
- Use `InfoBuilder` to generate `/media` `` ([#632](https://github.com/casey/filepack/pull/632) by [casey](https://github.com/casey))
- Omit empty package metadata from `/package` `` ([#631](https://github.com/casey/filepack/pull/631) by [casey](https://github.com/casey))
- Add `role=list` to `InfoHtml` lists ([#630](https://github.com/casey/filepack/pull/630) by [casey](https://github.com/casey))
- Use `InfoBuilder` to generate `/package` `` ([#629](https://github.com/casey/filepack/pull/629) by [casey](https://github.com/casey))
- Suppress Chrome translation popup ([#628](https://github.com/casey/filepack/pull/628) by [casey](https://github.com/casey))
- Style error page ([#627](https://github.com/casey/filepack/pull/627) by [casey](https://github.com/casey))
- Don't lowercase error page titles ([#626](https://github.com/casey/filepack/pull/626) by [casey](https://github.com/casey))
- Use sentence case in server text ([#625](https://github.com/casey/filepack/pull/625) by [casey](https://github.com/casey))
- Add borders around ``s ([#624](https://github.com/casey/filepack/pull/624) by [casey](https://github.com/casey))
- Add hairline between `` rows ([#623](https://github.com/casey/filepack/pull/623) by [casey](https://github.com/casey))
- Use two-column layout for ``s ([#622](https://github.com/casey/filepack/pull/622) by [casey](https://github.com/casey))
- Use BBR congestion control on server ([#621](https://github.com/casey/filepack/pull/621) by [casey](https://github.com/casey))
- Increase reader stream buffer capacity ([#620](https://github.com/casey/filepack/pull/620) by [casey](https://github.com/casey))
- Add publisher metadata field ([#619](https://github.com/casey/filepack/pull/619) by [casey](https://github.com/casey))
- Refactor linter initialization ([#618](https://github.com/casey/filepack/pull/618) by [casey](https://github.com/casey))
- Move all lints into linter ([#617](https://github.com/casey/filepack/pull/617) by [casey](https://github.com/casey))
- Check metadata lints first during package creation ([#616](https://github.com/casey/filepack/pull/616) by [casey](https://github.com/casey))
- Reaname `index.css` to `page.css` ([#615](https://github.com/casey/filepack/pull/615) by [casey](https://github.com/casey))
- De-duplicate thumbnail CSS ([#614](https://github.com/casey/filepack/pull/614) by [casey](https://github.com/casey))
- Remove `/packages` grid view ([#613](https://github.com/casey/filepack/pull/613) by [casey](https://github.com/casey))
- Serve HTML error pages ([#612](https://github.com/casey/filepack/pull/612) by [casey](https://github.com/casey))
- Justify image package thumbnails ([#611](https://github.com/casey/filepack/pull/611) by [casey](https://github.com/casey))
- Draw image grid thumbnail borders flush with image ([#610](https://github.com/casey/filepack/pull/610) by [casey](https://github.com/casey))
- Remove underling from `?` on 404 page ([#609](https://github.com/casey/filepack/pull/609) by [casey](https://github.com/casey))
- Add nav bar ([#608](https://github.com/casey/filepack/pull/608) by [casey](https://github.com/casey))
- Rename `PackageKey` to `SortKey` ([#607](https://github.com/casey/filepack/pull/607) by [casey](https://github.com/casey))
- Display packages on homepage ([#606](https://github.com/casey/filepack/pull/606) by [casey](https://github.com/casey))
- Fix install script recipes ([#605](https://github.com/casey/filepack/pull/605) by [casey](https://github.com/casey))
- Allow sorting package list by any column ([#603](https://github.com/casey/filepack/pull/603) by [casey](https://github.com/casey))
- Don't delete files in `clear-server` recipe ([#602](https://github.com/casey/filepack/pull/602) by [casey](https://github.com/casey))
- Deduplicate lint error printing ([#601](https://github.com/casey/filepack/pull/601) by [casey](https://github.com/casey))
- Optimize CI ([#595](https://github.com/casey/filepack/pull/595) by [casey](https://github.com/casey))
- Allow navigating to item package using up arrow key on images ([#593](https://github.com/casey/filepack/pull/593) by [casey](https://github.com/casey))
- Open Make all YAML media items objects ([#591](https://github.com/casey/filepack/pull/591) by [casey](https://github.com/casey))
- Make package title sort case insensitive ([#589](https://github.com/casey/filepack/pull/589) by [casey](https://github.com/casey))
- Sort `/packages` by title ([#588](https://github.com/casey/filepack/pull/588) by [casey](https://github.com/casey))
- Display positional item titles instead of falling back to paths ([#587](https://github.com/casey/filepack/pull/587) by [casey](https://github.com/casey))
- Uppercase component outside of loop in path lint ([#578](https://github.com/casey/filepack/pull/578) by [casey](https://github.com/casey))
- Use `ProgressBar` wrapper ([#577](https://github.com/casey/filepack/pull/577) by [casey](https://github.com/casey))
- Clear progress bars after subcommands finish ([#576](https://github.com/casey/filepack/pull/576) by [casey](https://github.com/casey))
- Rotate image before checking thumbnail size ([#575](https://github.com/casey/filepack/pull/575) by [casey](https://github.com/casey))
- Use dedicated YAML metadata template types ([#573](https://github.com/casey/filepack/pull/573) by [casey](https://github.com/casey))
- Display bytes freed from `filepack gc` in human-readable units ([#572](https://github.com/casey/filepack/pull/572) by [casey](https://github.com/casey))
- Move `Audio::title` into outer `Item` struct ([#569](https://github.com/casey/filepack/pull/569) by [casey](https://github.com/casey))
- Display progress bar for cover art check ([#568](https://github.com/casey/filepack/pull/568) by [casey](https://github.com/casey))
- Use thumbnails for Open Graph images ([#567](https://github.com/casey/filepack/pull/567) by [casey](https://github.com/casey))
- Generate PNG thumbnails for PNGs with alpha ([#566](https://github.com/casey/filepack/pull/566) by [casey](https://github.com/casey))
- Display metadata population progress bar ([#565](https://github.com/casey/filepack/pull/565) by [casey](https://github.com/casey))
- Display thumbnail generation progress bar ([#564](https://github.com/casey/filepack/pull/564) by [casey](https://github.com/casey))
- Don't upscale thumbnails ([#563](https://github.com/casey/filepack/pull/563) by [casey](https://github.com/casey))
- Don't include thumbnails with a larger file size than the original image ([#562](https://github.com/casey/filepack/pull/562) by [casey](https://github.com/casey))
- Use more complementary progress bar characters ([#561](https://github.com/casey/filepack/pull/561) by [casey](https://github.com/casey))
- Generate artwork thumbnails ([#559](https://github.com/casey/filepack/pull/559) by [casey](https://github.com/casey))
- Add `--locked` to installation commands ([#557](https://github.com/casey/filepack/pull/557) by [casey](https://github.com/casey))
- Use image thumbnails ([#556](https://github.com/casey/filepack/pull/556) by [casey](https://github.com/casey))
- Navigate between images with left and right arrow keys ([#554](https://github.com/casey/filepack/pull/554) by [casey](https://github.com/casey))
- Remove optional whitespace from static asset content types ([#551](https://github.com/casey/filepack/pull/551) by [casey](https://github.com/casey))
- Add `--locked` to install recipe ([#550](https://github.com/casey/filepack/pull/550) by [casey](https://github.com/casey))
- Add Open Graph images to item pages ([#548](https://github.com/casey/filepack/pull/548) by [casey](https://github.com/casey))
- Allow unused async on redirect route ([#547](https://github.com/casey/filepack/pull/547) by [casey](https://github.com/casey))
- Configure server HTTP settings ([#542](https://github.com/casey/filepack/pull/542) by [casey](https://github.com/casey))
- Use server constructor for redirect server ([#541](https://github.com/casey/filepack/pull/541) by [casey](https://github.com/casey))
- Use adaptive HTTP/2 flow control window in server ([#540](https://github.com/casey/filepack/pull/540) by [casey](https://github.com/casey))
- Make `api` module private ([#539](https://github.com/casey/filepack/pull/539) by [casey](https://github.com/casey))
- Add `Test::write_keypair()` helper ([#538](https://github.com/casey/filepack/pull/538) by [casey](https://github.com/casey))
- Use strongly-typed API routes ([#537](https://github.com/casey/filepack/pull/537) by [casey](https://github.com/casey))
- Move status checks inside client method helpers ([#536](https://github.com/casey/filepack/pull/536) by [casey](https://github.com/casey))
- Construct URLs in client method helpers ([#535](https://github.com/casey/filepack/pull/535) by [casey](https://github.com/casey))
- Add dedicated server client ([#534](https://github.com/casey/filepack/pull/534) by [casey](https://github.com/casey))
- Skip IDv1 tags when decoding MP3s ([#527](https://github.com/casey/filepack/pull/527) by [casey](https://github.com/casey))
- Rename builder methods to be more uniform ([#530](https://github.com/casey/filepack/pull/530) by [casey](https://github.com/casey))
- Use `FlacBuilder` in tests ([#529](https://github.com/casey/filepack/pull/529) by [casey](https://github.com/casey))
- Use `Mp3Builder` in tests ([#528](https://github.com/casey/filepack/pull/528) by [casey](https://github.com/casey))
- Use `InfoBuilder` in tests ([#526](https://github.com/casey/filepack/pull/526) by [casey](https://github.com/casey))
- Require video track color metadata ([#525](https://github.com/casey/filepack/pull/525) by [casey](https://github.com/casey))
- Add JPEG and PNG builders ([#522](https://github.com/casey/filepack/pull/522) by [casey](https://github.com/casey))
- Calculate audio bitrate ([#520](https://github.com/casey/filepack/pull/520) by [casey](https://github.com/casey))
- Refactor audio errors ([#519](https://github.com/casey/filepack/pull/519) by [casey](https://github.com/casey))
- Rename `{Image,Video}Info` to `{Image,Video}Metadata` ([#518](https://github.com/casey/filepack/pull/518) by [casey](https://github.com/casey))
- Refactor video decoders ([#517](https://github.com/casey/filepack/pull/517) by [casey](https://github.com/casey))
- Refactor audio decoding ([#516](https://github.com/casey/filepack/pull/516) by [casey](https://github.com/casey))
- Add `Info` builder ([#515](https://github.com/casey/filepack/pull/515) by [casey](https://github.com/casey))
- Refactor MP3 decoder ([#514](https://github.com/casey/filepack/pull/514) by [casey](https://github.com/casey))
- Remove unnecessary `Dedent` implementations ([#512](https://github.com/casey/filepack/pull/512) by [casey](https://github.com/casey))
- Unindent more test strings ([#511](https://github.com/casey/filepack/pull/511) by [casey](https://github.com/casey))
- Indent test strings ([#510](https://github.com/casey/filepack/pull/510) by [casey](https://github.com/casey))
- Rename `Media` item lists to `items` ([#509](https://github.com/casey/filepack/pull/509) by [casey](https://github.com/casey))
- Document media metadata ([#508](https://github.com/casey/filepack/pull/508) by [casey](https://github.com/casey))
- Add tests for `redb` trait implementations ([#506](https://github.com/casey/filepack/pull/506) by [casey](https://github.com/casey))
- Don't hash files before upload ([#504](https://github.com/casey/filepack/pull/504) by [casey](https://github.com/casey))
- Remove encoding tests for derived implementations ([#503](https://github.com/casey/filepack/pull/503) by [casey](https://github.com/casey))
- Write `metadata.filemeta` after create checks pass ([#502](https://github.com/casey/filepack/pull/502) by [casey](https://github.com/casey))
- Simplify `RelativePath::from_str()` ([#501](https://github.com/casey/filepack/pull/501) by [casey](https://github.com/casey))
- Serve web package files from `static` directory ([#499](https://github.com/casey/filepack/pull/499) by [casey](https://github.com/casey))
- Link to mount from `/package` ([#498](https://github.com/casey/filepack/pull/498) by [casey](https://github.com/casey))
- Add Open Graph description and image dimensions ([#492](https://github.com/casey/filepack/pull/492) by [casey](https://github.com/casey))
- Display non-media package files on `/package` ([#490](https://github.com/casey/filepack/pull/490) by [casey](https://github.com/casey))
- Use package artwork as `og:image` on `/package` ([#486](https://github.com/casey/filepack/pull/486) by [casey](https://github.com/casey))
- Use `CheckedUrl::check` to check CLI URLs ([#491](https://github.com/casey/filepack/pull/491) by [casey](https://github.com/casey))
- Require HTTP(S) in `CheckedUrl`s ([#489](https://github.com/casey/filepack/pull/489) by [casey](https://github.com/casey))
- Quote unsafe attribute interpolations ([#488](https://github.com/casey/filepack/pull/488) by [casey](https://github.com/casey))
- Add `charset=utf-8` to text asset content types ([#487](https://github.com/casey/filepack/pull/487) by [casey](https://github.com/casey))
- Link to readmes from `/package` ([#483](https://github.com/casey/filepack/pull/483) by [casey](https://github.com/casey))
- Display package metadata on `/package` ([#482](https://github.com/casey/filepack/pull/482) by [casey](https://github.com/casey))
- Improve demo server readme description ([#481](https://github.com/casey/filepack/pull/481) by [casey](https://github.com/casey))
- Link to demo server in readme ([#480](https://github.com/casey/filepack/pull/480) by [casey](https://github.com/casey))
- Clarify server help text ([#479](https://github.com/casey/filepack/pull/479) by [casey](https://github.com/casey))
- Add total duration to video packages ([#478](https://github.com/casey/filepack/pull/478) by [casey](https://github.com/casey))
- Move image creation functions into test.rs ([#477](https://github.com/casey/filepack/pull/477) by [casey](https://github.com/casey))
- Deduplicate milli display ([#476](https://github.com/casey/filepack/pull/476) by [casey](https://github.com/casey))
- Simplify `/package` format display ([#475](https://github.com/casey/filepack/pull/475) by [casey](https://github.com/casey))
- Separate audio format items on `/media` ([#474](https://github.com/casey/filepack/pull/474) by [casey](https://github.com/casey))
- Display video track bitrate and bits per pixel on `/media` ([#473](https://github.com/casey/filepack/pull/473) by [casey](https://github.com/casey))
- Display video track framerate on `/media` ([#472](https://github.com/casey/filepack/pull/472) by [casey](https://github.com/casey))
- Use `match` statement in `Track::info()` ([#470](https://github.com/casey/filepack/pull/470) by [casey](https://github.com/casey))
- Add package link to `/media` ([#468](https://github.com/casey/filepack/pull/468) by [casey](https://github.com/casey))
- Improve media info page ([#467](https://github.com/casey/filepack/pull/467) by [casey](https://github.com/casey))
- Add media info page ([#465](https://github.com/casey/filepack/pull/465) by [casey](https://github.com/casey))
- Extract image rotation ([#464](https://github.com/casey/filepack/pull/464) by [casey](https://github.com/casey))
- Show more information in `/packages` list ([#462](https://github.com/casey/filepack/pull/462) by [casey](https://github.com/casey))
- Display creator and title on `/packages` grid ([#461](https://github.com/casey/filepack/pull/461) by [casey](https://github.com/casey))
- Add view toggle to `/packages` ([#460](https://github.com/casey/filepack/pull/460) by [casey](https://github.com/casey))
- Add `/packages` grid view ([#459](https://github.com/casey/filepack/pull/459) by [casey](https://github.com/casey))
- Extract bit depth from MP4s ([#458](https://github.com/casey/filepack/pull/458) by [casey](https://github.com/casey))
- Rename `ArtworkDimensions` error to `ArtworkAspectRatio` ([#456](https://github.com/casey/filepack/pull/456) by [casey](https://github.com/casey))
- Refactor `Video::info_webm()` ([#454](https://github.com/casey/filepack/pull/454) by [casey](https://github.com/casey))
- Forbid pre-existing CBOR metadata in `filepack create` ([#452](https://github.com/casey/filepack/pull/452) by [casey](https://github.com/casey))
- Allow `#[cbor(validate)]` on enums and structs ([#450](https://github.com/casey/filepack/pull/450) by [casey](https://github.com/casey))
- Extract video tracks ([#448](https://github.com/casey/filepack/pull/448) by [casey](https://github.com/casey))
- Remove resolution from formats ([#445](https://github.com/casey/filepack/pull/445) by [casey](https://github.com/casey))
- Forbid leading zeros and signs in ordinals ([#447](https://github.com/casey/filepack/pull/447) by [casey](https://github.com/casey))
- Frobid leading zeros and sign in audio tags ([#446](https://github.com/casey/filepack/pull/446) by [casey](https://github.com/casey))
- Replace `mp4parse` with `re_mp4` ([#443](https://github.com/casey/filepack/pull/443) by [casey](https://github.com/casey))
- Display image resolutions on `/package` ([#442](https://github.com/casey/filepack/pull/442) by [casey](https://github.com/casey))
- Use `item` in media routes ([#440](https://github.com/casey/filepack/pull/440) by [casey](https://github.com/casey))
- Deduplicate media item server functions ([#439](https://github.com/casey/filepack/pull/439) by [casey](https://github.com/casey))
- Avoid duplicating media item name in functions ([#438](https://github.com/casey/filepack/pull/438) by [casey](https://github.com/casey))
- Display H.264 with a period ([#437](https://github.com/casey/filepack/pull/437) by [casey](https://github.com/casey))
- Display track dimensions as shorthand ([#436](https://github.com/casey/filepack/pull/436) by [casey](https://github.com/casey))
- Derive `Encode` and `Decode` for `SortedSet` ([#435](https://github.com/casey/filepack/pull/435) by [casey](https://github.com/casey))
- Add `Validate` trait ([#432](https://github.com/casey/filepack/pull/432) by [casey](https://github.com/casey))
- Display creator on `/packages` ([#433](https://github.com/casey/filepack/pull/433) by [casey](https://github.com/casey))
- Separate format items with a middle dot ([#434](https://github.com/casey/filepack/pull/434) by [casey](https://github.com/casey))
- Represent `VideoFormat` as list of tracks ([#430](https://github.com/casey/filepack/pull/430) by [casey](https://github.com/casey))
- Represent `Video` as list of tracks ([#429](https://github.com/casey/filepack/pull/429) by [casey](https://github.com/casey))
- Rename `Track` to `Audio` ([#428](https://github.com/casey/filepack/pull/428) by [casey](https://github.com/casey))
- Group statements in `Track::populate_flac()` ([#427](https://github.com/casey/filepack/pull/427) by [casey](https://github.com/casey))
- Deduplicate `FlacReader` creation ([#426](https://github.com/casey/filepack/pull/426) by [casey](https://github.com/casey))
- Deduplicate `MediaItemDoesNotExist` error checking ([#425](https://github.com/casey/filepack/pull/425) by [casey](https://github.com/casey))
- Enable previewing MP4 files ([#424](https://github.com/casey/filepack/pull/424) by [casey](https://github.com/casey))
- Make video player full-page ([#423](https://github.com/casey/filepack/pull/423) by [casey](https://github.com/casey))
- Add border radius to artwork on `/package` ([#420](https://github.com/casey/filepack/pull/420) by [casey](https://github.com/casey))
- Display hashes in monospace ([#419](https://github.com/casey/filepack/pull/419) by [casey](https://github.com/casey))
- Display image format on `/package` ([#418](https://github.com/casey/filepack/pull/418) by [casey](https://github.com/casey))
- Shrink `/package` artwork to fit page ([#417](https://github.com/casey/filepack/pull/417) by [casey](https://github.com/casey))
- Wrap `- ` overflow ([#416](https://github.com/casey/filepack/pull/416) by [casey](https://github.com/casey))
- Hide `
` overflow ([#415](https://github.com/casey/filepack/pull/415) by [casey](https://github.com/casey))
- Use index.css in 404.html ([#414](https://github.com/casey/filepack/pull/414) by [casey](https://github.com/casey))
- Use color variables in CSS ([#413](https://github.com/casey/filepack/pull/413) by [casey](https://github.com/casey))
- Use lighter background color ([#412](https://github.com/casey/filepack/pull/412) by [casey](https://github.com/casey))
- Improve track duration display on `/package` ([#411](https://github.com/casey/filepack/pull/411) by [casey](https://github.com/casey))
- Use size as download link text on `/directory` ([#410](https://github.com/casey/filepack/pull/410) by [casey](https://github.com/casey))
- Display audio formats on `/package` ([#409](https://github.com/casey/filepack/pull/409) by [casey](https://github.com/casey))
- Add download links to `/directory` ([#408](https://github.com/casey/filepack/pull/408) by [casey](https://github.com/casey))
- Group tracks by disc on `/package` ([#404](https://github.com/casey/filepack/pull/404) by [casey](https://github.com/casey))
- Use saturating addition when summing track durations ([#402](https://github.com/casey/filepack/pull/402) by [casey](https://github.com/casey))
- Verify uploaded directory entry sizes and totals ([#401](https://github.com/casey/filepack/pull/401) by [casey](https://github.com/casey))
- Verify directory totals once ([#400](https://github.com/casey/filepack/pull/400) by [casey](https://github.com/casey))
- Reuse database transactions ([#399](https://github.com/casey/filepack/pull/399) by [casey](https://github.com/casey))
- Display file size and count on `/package` ([#398](https://github.com/casey/filepack/pull/398) by [casey](https://github.com/casey))
- Track directories in `filepack download` progress bar ([#396](https://github.com/casey/filepack/pull/396) by [casey](https://github.com/casey))
- Add `#[must_use]` to `Totals::checked_add()` ([#397](https://github.com/casey/filepack/pull/397) by [casey](https://github.com/casey))
- Include all totals in `filepack size` ([#395](https://github.com/casey/filepack/pull/395) by [casey](https://github.com/casey))
- Display total directory file size on `/directory` ([#394](https://github.com/casey/filepack/pull/394) by [casey](https://github.com/casey))
- Remove `DirectoryTree::totals()` ([#392](https://github.com/casey/filepack/pull/392) by [casey](https://github.com/casey))
- Update `actions/checkout` to v7 ([#391](https://github.com/casey/filepack/pull/391) by [casey](https://github.com/casey))
- Refactor `Archive` and `Manifest` loading functions ([#390](https://github.com/casey/filepack/pull/390) by [casey](https://github.com/casey))
- Avoid `ArchiveBuilder::directory()` panic ([#388](https://github.com/casey/filepack/pull/388) by [casey](https://github.com/casey))
- Fix panic if `signatures` directory references non-existent file ([#387](https://github.com/casey/filepack/pull/387) by [casey](https://github.com/casey))
- Add `PackageBuilder` ([#385](https://github.com/casey/filepack/pull/385) by [casey](https://github.com/casey))
- Chain directory builder methods ([#384](https://github.com/casey/filepack/pull/384) by [casey](https://github.com/casey))
- Add directory builder methods ([#383](https://github.com/casey/filepack/pull/383) by [casey](https://github.com/casey))
- Refactor entry construction and server file reads ([#381](https://github.com/casey/filepack/pull/381) by [casey](https://github.com/casey))
- Display track duration ([#379](https://github.com/casey/filepack/pull/379) by [casey](https://github.com/casey))
- Display track info ([#378](https://github.com/casey/filepack/pull/378) by [casey](https://github.com/casey))
- Add thumbnail borders ([#376](https://github.com/casey/filepack/pull/376) by [casey](https://github.com/casey))
- Lazy-load thumbnails ([#375](https://github.com/casey/filepack/pull/375) by [casey](https://github.com/casey))
- Display image thumbnails on `/package` ([#374](https://github.com/casey/filepack/pull/374) by [casey](https://github.com/casey))
- Make track anchor link single line ([#373](https://github.com/casey/filepack/pull/373) by [casey](https://github.com/casey))
- Use ordinal number in image list ([#372](https://github.com/casey/filepack/pull/372) by [casey](https://github.com/casey))
- Add package item pages ([#371](https://github.com/casey/filepack/pull/371) by [casey](https://github.com/casey))
- Move server routes into submodule ([#370](https://github.com/casey/filepack/pull/370) by [casey](https://github.com/casey))
- Add `color-scheme: dark` to CSS ([#369](https://github.com/casey/filepack/pull/369) by [casey](https://github.com/casey))
- Use Let's Encrypt staging directory in tests ([#366](https://github.com/casey/filepack/pull/366) by [casey](https://github.com/casey))
- Display files inline in `/directory` where possible ([#363](https://github.com/casey/filepack/pull/363) by [casey](https://github.com/casey))
- Add sizes and download filenames to /directory ([#362](https://github.com/casey/filepack/pull/362) by [casey](https://github.com/casey))
- Update messaging ([#361](https://github.com/casey/filepack/pull/361) by [casey](https://github.com/casey))
- Use `tracing` instead of `log` ([#360](https://github.com/casey/filepack/pull/360) by [casey](https://github.com/casey))
- Use black background on all pages ([#359](https://github.com/casey/filepack/pull/359) by [casey](https://github.com/casey))
- Fix ACME event spelling ([#358](https://github.com/casey/filepack/pull/358) by [casey](https://github.com/casey))
- Add logging ([#357](https://github.com/casey/filepack/pull/357) by [casey](https://github.com/casey))
- Don't decode FLAC audio when populating metadata ([#356](https://github.com/casey/filepack/pull/356) by [casey](https://github.com/casey))
- Forbid control codes in metadata strings ([#352](https://github.com/casey/filepack/pull/352) by [casey](https://github.com/casey))
- Check readme extension on creation ([#351](https://github.com/casey/filepack/pull/351) by [casey](https://github.com/casey))
- Rename `Package::nfo` to `Package::readme` ([#350](https://github.com/casey/filepack/pull/350) by [casey](https://github.com/casey))
- Remove `package.creator_tag` ([#349](https://github.com/casey/filepack/pull/349) by [casey](https://github.com/casey))
- Fix redirects over HTTPS ([#348](https://github.com/casey/filepack/pull/348) by [casey](https://github.com/casey))
- Simplify server domain flags ([#347](https://github.com/casey/filepack/pull/347) by [casey](https://github.com/casey))
- Match full standard error in `redirect_http_to_https` test ([#346](https://github.com/casey/filepack/pull/346) by [casey](https://github.com/casey))
- Serve `Strict-Transport-Security` header on HTTPS responses ([#345](https://github.com/casey/filepack/pull/345) by [casey](https://github.com/casey))
- Redirect `/package1…` to `/package/package1…` ([#343](https://github.com/casey/filepack/pull/343) by [casey](https://github.com/casey))
- Forbid control codes in path components ([#342](https://github.com/casey/filepack/pull/342) by [casey](https://github.com/casey))
- Don't check content during `filepack verify` ([#340](https://github.com/casey/filepack/pull/340) by [casey](https://github.com/casey))
- Rewrite readme intro ([#339](https://github.com/casey/filepack/pull/339) by [casey](https://github.com/casey))
- Add AGENTS.md ([#337](https://github.com/casey/filepack/pull/337) by [casey](https://github.com/casey))
- Decode image media images ([#336](https://github.com/casey/filepack/pull/336) by [casey](https://github.com/casey))
- Use one-based indexing for tracks and images ([#335](https://github.com/casey/filepack/pull/335) by [casey](https://github.com/casey))
- Add Bech32 HRP checks ([#333](https://github.com/casey/filepack/pull/333) by [casey](https://github.com/casey))
- Only upload missing files ([#332](https://github.com/casey/filepack/pull/332) by [casey](https://github.com/casey))
- Skip reupload when server already has package ([#331](https://github.com/casey/filepack/pull/331) by [casey](https://github.com/casey))
- Add assert_cbor_eq ([#330](https://github.com/casey/filepack/pull/330) by [casey](https://github.com/casey))
- Use hex in assert_cbor ([#329](https://github.com/casey/filepack/pull/329) by [casey](https://github.com/casey))
- Rename `PackageUnverified` to `PackageRootUnverified` ([#328](https://github.com/casey/filepack/pull/328) by [casey](https://github.com/casey))
- Use a single transaction in `Server::packages()` ([#327](https://github.com/casey/filepack/pull/327) by [casey](https://github.com/casey))
- Use titles in /packages ([#326](https://github.com/casey/filepack/pull/326) by [casey](https://github.com/casey))
- Link to packages from homepage ([#325](https://github.com/casey/filepack/pull/325) by [casey](https://github.com/casey))
- Use chained route methods ([#324](https://github.com/casey/filepack/pull/324) by [casey](https://github.com/casey))
- Use package title in page title ([#323](https://github.com/casey/filepack/pull/323) by [casey](https://github.com/casey))
- Support resource range requests ([#322](https://github.com/casey/filepack/pull/322) by [casey](https://github.com/casey))
- Display package title in header ([#321](https://github.com/casey/filepack/pull/321) by [casey](https://github.com/casey))
- Remove stale link to DESIGN.md from readme ([#320](https://github.com/casey/filepack/pull/320) by [casey](https://github.com/casey))
- Add resource type ([#319](https://github.com/casey/filepack/pull/319) by [casey](https://github.com/casey))
- Implement `Encode` and `Decode` for `Vec` ([#317](https://github.com/casey/filepack/pull/317) by [casey](https://github.com/casey))
- Add encode and decode support for enum variants with named fields ([#316](https://github.com/casey/filepack/pull/316) by [casey](https://github.com/casey))
- Link to artwork on /package ([#315](https://github.com/casey/filepack/pull/315) by [casey](https://github.com/casey))
- Convert metadata tests to unit tests ([#314](https://github.com/casey/filepack/pull/314) by [casey](https://github.com/casey))
- Only verify signatures in `filepack verify` ([#313](https://github.com/casey/filepack/pull/313) by [casey](https://github.com/casey))
- Verify package metadata in `filepack download` ([#312](https://github.com/casey/filepack/pull/312) by [casey](https://github.com/casey))
- Refactor key and value implementations ([#311](https://github.com/casey/filepack/pull/311) by [casey](https://github.com/casey))
- Check metadata in `filepack verify` ([#310](https://github.com/casey/filepack/pull/310) by [casey](https://github.com/casey))
- Return internal server error when package artwork is missing ([#309](https://github.com/casey/filepack/pull/309) by [casey](https://github.com/casey))
- Only decode artwork image headers ([#308](https://github.com/casey/filepack/pull/308) by [casey](https://github.com/casey))
- Check artwork dimensions ([#307](https://github.com/casey/filepack/pull/307) by [casey](https://github.com/casey))
- Update boilerplate to 1.2.0 ([#306](https://github.com/casey/filepack/pull/306) by [casey](https://github.com/casey))
- Display artwork on /package ([#305](https://github.com/casey/filepack/pull/305) by [casey](https://github.com/casey))
- Serve package artwork ([#304](https://github.com/casey/filepack/pull/304) by [casey](https://github.com/casey))
- Poll server while waiting for ready signal ([#303](https://github.com/casey/filepack/pull/303) by [casey](https://github.com/casey))
- Verify that metadata-referenced files have been uploaded ([#302](https://github.com/casey/filepack/pull/302) by [casey](https://github.com/casey))
- Avoid dependency on `aws-lc-rs` ([#301](https://github.com/casey/filepack/pull/301) by [casey](https://github.com/casey))
- Configure HTTP client ([#300](https://github.com/casey/filepack/pull/300) by [casey](https://github.com/casey))
- Implement display for all errors ([#299](https://github.com/casey/filepack/pull/299) by [casey](https://github.com/casey))
- Allow artwork with `.jpg` extension ([#297](https://github.com/casey/filepack/pull/297) by [casey](https://github.com/casey))
- Switch to std::assert_matches ([#296](https://github.com/casey/filepack/pull/296) by [casey](https://github.com/casey))
- Fix download recipe ([#295](https://github.com/casey/filepack/pull/295) by [casey](https://github.com/casey))
- Fix broken clap groups ([#294](https://github.com/casey/filepack/pull/294) by [casey](https://github.com/casey))
- Add download progress bar ([#292](https://github.com/casey/filepack/pull/292) by [casey](https://github.com/casey))
- Add upload progress bar ([#291](https://github.com/casey/filepack/pull/291) by [casey](https://github.com/casey))
- Deduplicate HTML boilerplate ([#289](https://github.com/casey/filepack/pull/289) by [casey](https://github.com/casey))
- Use template objects in integration test assertions ([#288](https://github.com/casey/filepack/pull/288) by [casey](https://github.com/casey))
- Make serve tests sync ([#286](https://github.com/casey/filepack/pull/286) by [casey](https://github.com/casey))
- Make Server sync ([#285](https://github.com/casey/filepack/pull/285) by [casey](https://github.com/casey))
- Add trailing slash to directories on `/directory` ([#284](https://github.com/casey/filepack/pull/284) by [casey](https://github.com/casey))
- Use `` for `/directory` ([#283](https://github.com/casey/filepack/pull/283) by [casey](https://github.com/casey))
- Set `X-Content-Type-Options: nosniff` on all responses ([#280](https://github.com/casey/filepack/pull/280) by [casey](https://github.com/casey))
- Fix `filepack serve --domain` help text ([#279](https://github.com/casey/filepack/pull/279) by [casey](https://github.com/casey))
- Add homepage to server ([#278](https://github.com/casey/filepack/pull/278) by [casey](https://github.com/casey))
- Default to package upload and download ([#275](https://github.com/casey/filepack/pull/275) by [casey](https://github.com/casey))
- Add additional upload/download integration tests ([#274](https://github.com/casey/filepack/pull/274) by [casey](https://github.com/casey))
- Add HTTPS support to server ([#272](https://github.com/casey/filepack/pull/272) by [casey](https://github.com/casey))
- Time out while waiting for server port ([#271](https://github.com/casey/filepack/pull/271) by [casey](https://github.com/casey))
- Stream server uploads to disk ([#270](https://github.com/casey/filepack/pull/270) by [casey](https://github.com/casey))
- Set download cache headers ([#269](https://github.com/casey/filepack/pull/269) by [casey](https://github.com/casey))
- Stream server downloads from disk ([#268](https://github.com/casey/filepack/pull/268) by [casey](https://github.com/casey))
- Stream downloads to disk ([#267](https://github.com/casey/filepack/pull/267) by [casey](https://github.com/casey))
- Stream uploads from disk ([#266](https://github.com/casey/filepack/pull/266) by [casey](https://github.com/casey))
- Short-circuit upload if file already exists ([#265](https://github.com/casey/filepack/pull/265) by [casey](https://github.com/casey))
- Write uploads to temporary file ([#264](https://github.com/casey/filepack/pull/264) by [terror](https://github.com/terror))
- Rename Url to CheckedUrl ([#263](https://github.com/casey/filepack/pull/263) by [casey](https://github.com/casey))
- Encode envelope context as integer ([#262](https://github.com/casey/filepack/pull/262) by [casey](https://github.com/casey))
- Forbid incompatible derive attributes ([#261](https://github.com/casey/filepack/pull/261) by [casey](https://github.com/casey))
- Use `#[n(N)]` with enum CBOR derive macros ([#260](https://github.com/casey/filepack/pull/260) by [casey](https://github.com/casey))
- Rename message to statement ([#258](https://github.com/casey/filepack/pull/258) by [casey](https://github.com/casey))
- Fix references to $XDG_DATA_HOME ([#257](https://github.com/casey/filepack/pull/257) by [casey](https://github.com/casey))
- Use application and context types ([#256](https://github.com/casey/filepack/pull/256) by [casey](https://github.com/casey))
- Move message signing context into envelope ([#253](https://github.com/casey/filepack/pull/253) by [casey](https://github.com/casey))
- Derive encode and decode for enums ([#250](https://github.com/casey/filepack/pull/250) by [casey](https://github.com/casey))
- Move test functions into test module ([#248](https://github.com/casey/filepack/pull/248) by [casey](https://github.com/casey))
- Add derive macros for Encode and Decode ([#247](https://github.com/casey/filepack/pull/247) by [casey](https://github.com/casey))
- Add borrowed `Component` and owned `ComponentBuf` ([#246](https://github.com/casey/filepack/pull/246) by [casey](https://github.com/casey))
- Borrow decoder input ([#245](https://github.com/casey/filepack/pull/245) by [casey](https://github.com/casey))
- Use snake_case instead of kebab-case for serialization ([#242](https://github.com/casey/filepack/pull/242) by [casey](https://github.com/casey))
- Use CBOR-based fingerprint serialization ([#241](https://github.com/casey/filepack/pull/241) by [casey](https://github.com/casey))
- Expand guide ([#240](https://github.com/casey/filepack/pull/240) by [casey](https://github.com/casey))
- Move design overview into readme ([#239](https://github.com/casey/filepack/pull/239) by [casey](https://github.com/casey))
- Add future directions section to readme ([#238](https://github.com/casey/filepack/pull/238) by [casey](https://github.com/casey))
- Add metadata section to readme ([#237](https://github.com/casey/filepack/pull/237) by [casey](https://github.com/casey))
- Add Filepack for SFV Enjoyers to readme ([#236](https://github.com/casey/filepack/pull/236) by [casey](https://github.com/casey))
[0.0.9](https://github.com/casey/filepack/releases/tag/0.0.9) - 2026-02-04
--------------------------------------------------------------------------
### Added
- Add signatures subcommand ([#229](https://github.com/casey/filepack/pull/229) by [casey](https://github.com/casey))
- Add `filepack beck32m` for converting between bech32m and hex ([#181](https://github.com/casey/filepack/pull/181) by [casey](https://github.com/casey))
- Add `filepack contains` subcommand ([#175](https://github.com/casey/filepack/pull/175) by [casey](https://github.com/casey))
### Changed
- Always respect `$XDG_DATA_DIR` ([#186](https://github.com/casey/filepack/pull/186) by [casey](https://github.com/casey))
- Encode public keys, private keys, and signature as bech32m ([#177](https://github.com/casey/filepack/pull/177) by [casey](https://github.com/casey))
### Misc
- Deny unreachable-pub lint ([#234](https://github.com/casey/filepack/pull/234) by [casey](https://github.com/casey))
- Use compact fingerprint serialization ([#233](https://github.com/casey/filepack/pull/233) by [casey](https://github.com/casey))
- Make private keys begin with public key ([#232](https://github.com/casey/filepack/pull/232) by [casey](https://github.com/casey))
- Rename signature time to timestamp ([#231](https://github.com/casey/filepack/pull/231) by [casey](https://github.com/casey))
- Always verify manifest signatures on load ([#230](https://github.com/casey/filepack/pull/230) by [casey](https://github.com/casey))
- Use seconds for signature timestamp ([#228](https://github.com/casey/filepack/pull/228) by [casey](https://github.com/casey))
- Make signature time field optional ([#227](https://github.com/casey/filepack/pull/227) by [casey](https://github.com/casey))
- Sign message fingerprint ([#226](https://github.com/casey/filepack/pull/226) by [casey](https://github.com/casey))
- Include message in signature ([#225](https://github.com/casey/filepack/pull/225) by [casey](https://github.com/casey))
- Include public key in signature ([#224](https://github.com/casey/filepack/pull/224) by [casey](https://github.com/casey))
- Test bech32 decoder errors ([#223](https://github.com/casey/filepack/pull/223) by [casey](https://github.com/casey))
- Remove static GPG and SSH test files ([#222](https://github.com/casey/filepack/pull/222) by [casey](https://github.com/casey))
- Remove message subcommand ([#221](https://github.com/casey/filepack/pull/221) by [casey](https://github.com/casey))
- Remove PGP and SSH signature support ([#220](https://github.com/casey/filepack/pull/220) by [casey](https://github.com/casey))
- Generate and verify SSH and GPG signatures in integration tests ([#219](https://github.com/casey/filepack/pull/219) by [casey](https://github.com/casey))
- Bech32 prefix instead of Bech32m ([#218](https://github.com/casey/filepack/pull/218) by [casey](https://github.com/casey))
- Remove bech32m payload struct ([#217](https://github.com/casey/filepack/pull/217) by [casey](https://github.com/casey))
- Use more flexible bech32m decoder ([#216](https://github.com/casey/filepack/pull/216) by [casey](https://github.com/casey))
- Test padding errors with prefix ([#215](https://github.com/casey/filepack/pull/215) by [casey](https://github.com/casey))
- Test bech32m padding errors ([#214](https://github.com/casey/filepack/pull/214) by [casey](https://github.com/casey))
- Test signatures generated with ssh-key ([#213](https://github.com/casey/filepack/pull/213) by [casey](https://github.com/casey))
- Test overlong PGP signature suffix error ([#212](https://github.com/casey/filepack/pull/212) by [casey](https://github.com/casey))
- Add and remove multi-character bech32m prefix strings ([#211](https://github.com/casey/filepack/pull/211) by [casey](https://github.com/casey))
- Add signature hash algorithm character ([#210](https://github.com/casey/filepack/pull/210) by [casey](https://github.com/casey))
- Disable doctests ([#209](https://github.com/casey/filepack/pull/209) by [casey](https://github.com/casey))
- Convert SSH signature tests to use pre-generated key and signature ([#208](https://github.com/casey/filepack/pull/208) by [casey](https://github.com/casey))
- Update DESIGN.md ([#207](https://github.com/casey/filepack/pull/207) by [casey](https://github.com/casey))
- Resolve signature scheme reuse open question ([#206](https://github.com/casey/filepack/pull/206) by [casey](https://github.com/casey))
- Use pre-generated files for GPG signature test ([#205](https://github.com/casey/filepack/pull/205) by [casey](https://github.com/casey))
- Add message subcommand ([#204](https://github.com/casey/filepack/pull/204) by [casey](https://github.com/casey))
- Add bech32m type enum ([#203](https://github.com/casey/filepack/pull/203) by [casey](https://github.com/casey))
- Avoid allocating when formatting bech32m strings ([#202](https://github.com/casey/filepack/pull/202) by [casey](https://github.com/casey))
- Rename bech32m data to body ([#201](https://github.com/casey/filepack/pull/201) by [casey](https://github.com/casey))
- Add signature round trip and error display tests ([#200](https://github.com/casey/filepack/pull/200) by [casey](https://github.com/casey))
- Move signature payload generation into signature scheme ([#199](https://github.com/casey/filepack/pull/199) by [casey](https://github.com/casey))
- Add signature scheme type ([#198](https://github.com/casey/filepack/pull/198) by [casey](https://github.com/casey))
- Add signature scheme versioning ([#197](https://github.com/casey/filepack/pull/197) by [casey](https://github.com/casey))
- Add PGP signature scheme ([#196](https://github.com/casey/filepack/pull/196) by [casey](https://github.com/casey))
- Add SSH signature verification integration test ([#195](https://github.com/casey/filepack/pull/195) by [casey](https://github.com/casey))
- Add SSH signature scheme ([#194](https://github.com/casey/filepack/pull/194) by [casey](https://github.com/casey))
- Add signature schemes ([#193](https://github.com/casey/filepack/pull/193) by [casey](https://github.com/casey))
- Add profile recipe ([#192](https://github.com/casey/filepack/pull/192) by [casey](https://github.com/casey))
- Remove dependency on executable-path ([#191](https://github.com/casey/filepack/pull/191) by [casey](https://github.com/casey))
- Remove release commit message template ([#190](https://github.com/casey/filepack/pull/190) by [casey](https://github.com/casey))
- Forbid non-zero padding in bech32m strings ([#189](https://github.com/casey/filepack/pull/189) by [casey](https://github.com/casey))
- Use `filepack info` in data dir tests ([#188](https://github.com/casey/filepack/pull/188) by [casey](https://github.com/casey))
- Only use fingerprint type for package fingerprints ([#187](https://github.com/casey/filepack/pull/187) by [casey](https://github.com/casey))
- Use "package fingerprint" instead "manifest fingerprint" ([#185](https://github.com/casey/filepack/pull/185) by [casey](https://github.com/casey))
- Don't hash message before signing ([#184](https://github.com/casey/filepack/pull/184) by [casey](https://github.com/casey))
- Use version character `a` for bech32m strings ([#183](https://github.com/casey/filepack/pull/183) by [casey](https://github.com/casey))
- Open question: bech32m version characters ([#182](https://github.com/casey/filepack/pull/182) by [casey](https://github.com/casey))
- Use bech32m for package fingerprints ([#180](https://github.com/casey/filepack/pull/180) by [casey](https://github.com/casey))
- Resolve some open questions in DESIGN.md ([#179](https://github.com/casey/filepack/pull/179) by [casey](https://github.com/casey))
- Pretty print manifest ([#178](https://github.com/casey/filepack/pull/178) by [casey](https://github.com/casey))
- Add `--file` to `filepack contains` ([#176](https://github.com/casey/filepack/pull/176) by [casey](https://github.com/casey))
- Update DESIGN.md ([#174](https://github.com/casey/filepack/pull/174) by [casey](https://github.com/casey))
- Require lowercase hashes ([#173](https://github.com/casey/filepack/pull/173) by [casey](https://github.com/casey))
- Note that fingerprint is globally unique identifier ([#172](https://github.com/casey/filepack/pull/172) by [casey](https://github.com/casey))
- Forbid using `--manifest` with manifest in package ([#171](https://github.com/casey/filepack/pull/171) by [casey](https://github.com/casey))
- Fix release workflow manifest creation ([#170](https://github.com/casey/filepack/pull/170) by [casey](https://github.com/casey))
- Add workflows to readme ([#169](https://github.com/casey/filepack/pull/169) by [casey](https://github.com/casey))
[0.0.8](https://github.com/casey/filepack/releases/tag/0.0.8) - 2026-01-17
--------------------------------------------------------------------------
### Changed
- Move package metadata into sub-object ([#164](https://github.com/casey/filepack/pull/164) by [casey](https://github.com/casey))
- Forbid overlong components and components containing NUL ([#157](https://github.com/casey/filepack/pull/157) by [casey](https://github.com/casey))
- Allow unknown metadata fields when verifying ([#150](https://github.com/casey/filepack/pull/150) by [casey](https://github.com/casey))
- Use YAML metadata ([#148](https://github.com/casey/filepack/pull/148) by [casey](https://github.com/casey))
- Include current time in note with `filepack create/sign --time` ([#140](https://github.com/casey/filepack/pull/140) by [casey](https://github.com/casey))
- Rename keys directory to keychain ([#134](https://github.com/casey/filepack/pull/134) by [casey](https://github.com/casey))
- Create `keys` dir and private keys with correct permissions ([#123](https://github.com/casey/filepack/pull/123) by [casey](https://github.com/casey))
- Make manifest keys mandatory ([#118](https://github.com/casey/filepack/pull/118) by [casey](https://github.com/casey))
### Added
- Add homepage URLs to metadata ([#167](https://github.com/casey/filepack/pull/167) by [casey](https://github.com/casey))
- Add package creator tag ([#166](https://github.com/casey/filepack/pull/166) by [casey](https://github.com/casey))
- Add creator metadata ([#165](https://github.com/casey/filepack/pull/165) by [casey](https://github.com/casey))
- Add description fields to metadata ([#163](https://github.com/casey/filepack/pull/163) by [casey](https://github.com/casey))
- Add metadata date fields ([#162](https://github.com/casey/filepack/pull/162) by [casey](https://github.com/casey))
- Add language metadata field ([#160](https://github.com/casey/filepack/pull/160) by [casey](https://github.com/casey))
- Add file fields to metadata ([#159](https://github.com/casey/filepack/pull/159) by [casey](https://github.com/casey))
- Add packager metadata field ([#158](https://github.com/casey/filepack/pull/158) by [casey](https://github.com/casey))
- Add more lint groups ([#152](https://github.com/casey/filepack/pull/152) by [casey](https://github.com/casey))
- Notes ([#137](https://github.com/casey/filepack/pull/137) by [casey](https://github.com/casey))
- Add `filepack info` subcommand ([#132](https://github.com/casey/filepack/pull/132) by [casey](https://github.com/casey))
- Allow signing with non-default key when creating manifest ([#129](https://github.com/casey/filepack/pull/129) by [casey](https://github.com/casey))
- Allow signing with non-default key ([#128](https://github.com/casey/filepack/pull/128) by [casey](https://github.com/casey))
- Allow printing named public key ([#126](https://github.com/casey/filepack/pull/126) by [casey](https://github.com/casey))
- Allow supplying key name to `filepack keygen` ([#125](https://github.com/casey/filepack/pull/125) by [casey](https://github.com/casey))
- Allow using named keys with `filepack verify --key` ([#124](https://github.com/casey/filepack/pull/124) by [casey](https://github.com/casey))
- Check `keys` dir and private key permissions ([#121](https://github.com/casey/filepack/pull/121) by [casey](https://github.com/casey))
- Allow asserting multiple keys when verifying ([#120](https://github.com/casey/filepack/pull/120) by [casey](https://github.com/casey))
- Add `--assert` to `filepack hash` ([#117](https://github.com/casey/filepack/pull/117) by [casey](https://github.com/casey))
### Misc
- Move metadata tests into dedicated module ([#161](https://github.com/casey/filepack/pull/161) by [casey](https://github.com/casey))
- Test filepack metadata ([#156](https://github.com/casey/filepack/pull/156) by [casey](https://github.com/casey))
- Include metadata in filepack releases ([#155](https://github.com/casey/filepack/pull/155) by [casey](https://github.com/casey))
- Document metadata purpose ([#154](https://github.com/casey/filepack/pull/154) by [casey](https://github.com/casey))
- Improve path handling ([#153](https://github.com/casey/filepack/pull/153) by [casey](https://github.com/casey))
- Use snafu for lint display implementation ([#151](https://github.com/casey/filepack/pull/151) by [casey](https://github.com/casey))
- Make verify less verbose ([#149](https://github.com/casey/filepack/pull/149) by [casey](https://github.com/casey))
- Fix lint message typo ([#147](https://github.com/casey/filepack/pull/147) by [casey](https://github.com/casey))
- Skip serializing optional note fields ([#146](https://github.com/casey/filepack/pull/146) by [casey](https://github.com/casey))
- Use distinct fingerprint type ([#144](https://github.com/casey/filepack/pull/144) by [casey](https://github.com/casey))
- Consider using BLAKE3 in signatures ([#143](https://github.com/casey/filepack/pull/143) by [casey](https://github.com/casey))
- Open question: CBOR fingerprints ([#142](https://github.com/casey/filepack/pull/142) by [casey](https://github.com/casey))
- Test that duplicate note fields are rejected ([#141](https://github.com/casey/filepack/pull/141) by [casey](https://github.com/casey))
- Forbid duplicate directory entries and note signatures ([#139](https://github.com/casey/filepack/pull/139) by [casey](https://github.com/casey))
- Add single argument test method ([#138](https://github.com/casey/filepack/pull/138) by [casey](https://github.com/casey))
- Fix DESIGN.md typo ([#136](https://github.com/casey/filepack/pull/136) by [casey](https://github.com/casey))
- Delegate key generation to keychain ([#135](https://github.com/casey/filepack/pull/135) by [casey](https://github.com/casey))
- Rename Keys to Keychain ([#133](https://github.com/casey/filepack/pull/133) by [casey](https://github.com/casey))
- Restrict key names ([#131](https://github.com/casey/filepack/pull/131) by [casey](https://github.com/casey))
- Require lowercase keys and signatures ([#130](https://github.com/casey/filepack/pull/130) by [casey](https://github.com/casey))
- Be more paranoid with private keys ([#127](https://github.com/casey/filepack/pull/127) by [casey](https://github.com/casey))
- Rename `filesystem::set_mode` to `chmod` ([#122](https://github.com/casey/filepack/pull/122) by [casey](https://github.com/casey))
- Sign readme manifest ([#119](https://github.com/casey/filepack/pull/119) by [casey](https://github.com/casey))
- Use custom test assertions ([#116](https://github.com/casey/filepack/pull/116) by [casey](https://github.com/casey))
- Print number of files, bytes, and signatures verified ([#115](https://github.com/casey/filepack/pull/115) by [casey](https://github.com/casey))
- Add open questions to DESIGN.md ([#114](https://github.com/casey/filepack/pull/114) by [casey](https://github.com/casey))
- Test that extra fields in metadata are ignored ([#113](https://github.com/casey/filepack/pull/113) by [casey](https://github.com/casey))
- Add DESIGN.md ([#112](https://github.com/casey/filepack/pull/112) by [casey](https://github.com/casey))
- Expand readme ([#111](https://github.com/casey/filepack/pull/111) by [casey](https://github.com/casey))
- Add top-level doc-comment to library ([#110](https://github.com/casey/filepack/pull/110) by [casey](https://github.com/casey))
- Simplify context hasher ([#109](https://github.com/casey/filepack/pull/109) by [casey](https://github.com/casey))
[0.0.7](https://github.com/casey/filepack/releases/tag/0.0.7) - 2026-01-11
--------------------------------------------------------------------------
### Added
- Add `size` subcommand to print out manifest total file size ([#101](https://github.com/casey/filepack/pull/101) by [casey](https://github.com/casey))
- Add json and tsv formats options to `filepack files` ([#100](https://github.com/casey/filepack/pull/100) by [casey](https://github.com/casey))
- Add files subcommand to list files in manifest ([#99](https://github.com/casey/filepack/pull/99) by [casey](https://github.com/casey))
- Use hierarchical manifest format ([#90](https://github.com/casey/filepack/pull/90) by [casey](https://github.com/casey))
- Add `filepack fingerprint` command to print manifest fingerprint ([#75](https://github.com/casey/filepack/pull/75) by [casey](https://github.com/casey))
### Changed
- Allow `filepack sign` argument to be a directory or be omitted ([#69](https://github.com/casey/filepack/pull/69) by [casey](https://github.com/casey))
### Misc
- Hash fields as single-element arrays ([#107](https://github.com/casey/filepack/pull/107) by [casey](https://github.com/casey))
- Add basic context hasher tests ([#106](https://github.com/casey/filepack/pull/106) by [casey](https://github.com/casey))
- Sort file fingerprint fields ([#105](https://github.com/casey/filepack/pull/105) by [casey](https://github.com/casey))
- Domain separate signatures ([#104](https://github.com/casey/filepack/pull/104) by [casey](https://github.com/casey))
- Test that unknown fields are rejected ([#103](https://github.com/casey/filepack/pull/103) by [casey](https://github.com/casey))
- Add load with path function to get loaded manifest path ([#102](https://github.com/casey/filepack/pull/102) by [casey](https://github.com/casey))
- Rename field hasher to fingerprint hasher ([#98](https://github.com/casey/filepack/pull/98) by [casey](https://github.com/casey))
- Simplify empty directory tracking ([#97](https://github.com/casey/filepack/pull/97) by [casey](https://github.com/casey))
- Use entries iterator to calculate total manifest size ([#94](https://github.com/casey/filepack/pull/94) by [casey](https://github.com/casey))
- Remove unused trait implementations ([#93](https://github.com/casey/filepack/pull/93) by [casey](https://github.com/casey))
- Enable item order lints ([#92](https://github.com/casey/filepack/pull/92) by [casey](https://github.com/casey))
- Hash variable-length fields ([#91](https://github.com/casey/filepack/pull/91) by [casey](https://github.com/casey))
- Share manifest struct with integration tests ([#88](https://github.com/casey/filepack/pull/88) by [casey](https://github.com/casey))
- Share entry struct with integration tests ([#87](https://github.com/casey/filepack/pull/87) by [casey](https://github.com/casey))
- Improve tests ([#86](https://github.com/casey/filepack/pull/86) by [casey](https://github.com/casey))
- Remove server ([#84](https://github.com/casey/filepack/pull/84) by [casey](https://github.com/casey))
- Serve package details ([#83](https://github.com/casey/filepack/pull/83) by [terror](https://github.com/terror))
- Add `filepack server` subcommand ([#82](https://github.com/casey/filepack/pull/82) by [terror](https://github.com/terror))
- Add `filepack archive` command ([#80](https://github.com/casey/filepack/pull/80) by [terror](https://github.com/terror))
- Document `filepack verify` in readme ([#79](https://github.com/casey/filepack/pull/79) by [casey](https://github.com/casey))
- Include man page in release archives ([#77](https://github.com/casey/filepack/pull/77) by [casey](https://github.com/casey))
- Rename "root hash" to "fingerprint" ([#74](https://github.com/casey/filepack/pull/74) by [casey](https://github.com/casey))
- Avoid using `std::fs` directly ([#73](https://github.com/casey/filepack/pull/73) by [casey](https://github.com/casey))
- Open rendered page in render recipe ([#72](https://github.com/casey/filepack/pull/72) by [casey](https://github.com/casey))
- Add render subcommand ([#71](https://github.com/casey/filepack/pull/71) by [casey](https://github.com/casey))
- Use JSON to calculate root hash ([#70](https://github.com/casey/filepack/pull/70) by [casey](https://github.com/casey))
- Don't publish SHA256SUMS ([#68](https://github.com/casey/filepack/pull/68) by [casey](https://github.com/casey))
[0.0.6](https://github.com/casey/filepack/releases/tag/0.0.6) - 2024-10-09
--------------------------------------------------------------------------
### Added
- Add sign command ([#66](https://github.com/casey/filepack/pull/66) by [casey](https://github.com/casey))
- Allow missing files when verifying with `--ignore-missing` ([#61](https://github.com/casey/filepack/pull/61) by [casey](https://github.com/casey))
### Changed
- Store signatures in manifest ([#65](https://github.com/casey/filepack/pull/65) by [casey](https://github.com/casey))
- Sign and verify root hash instead of manifest hash ([#64](https://github.com/casey/filepack/pull/64) by [casey](https://github.com/casey))
- Save metadata to `metadata.json` ([#63](https://github.com/casey/filepack/pull/63) by [casey](https://github.com/casey))
- Remove download command ([#62](https://github.com/casey/filepack/pull/62) by [casey](https://github.com/casey))
[0.0.5](https://github.com/casey/filepack/releases/tag/0.0.5) - 2024-10-07
--------------------------------------------------------------------------
### Fixed
- Download tarball and zipball using web URLs ([#59](https://github.com/casey/filepack/pull/59) by [casey](https://github.com/casey))
[0.0.4](https://github.com/casey/filepack/releases/tag/0.0.4) - 2024-10-07
--------------------------------------------------------------------------
### Added
- Verify manifest hash with `--hash` ([#51](https://github.com/casey/filepack/pull/51) by [casey](https://github.com/casey))
- Add key generation, printing, signing, and verification ([#48](https://github.com/casey/filepack/pull/48) by [casey](https://github.com/casey))
- Allow including metadata in manifest ([#44](https://github.com/casey/filepack/pull/44) by [casey](https://github.com/casey))
### Changed
- Don't allow metadata template to be included in package ([#47](https://github.com/casey/filepack/pull/47) by [casey](https://github.com/casey))
### Misc
- Publish manifest with releases ([#56](https://github.com/casey/filepack/pull/56) by [casey](https://github.com/casey))
- Optimize release build ([#57](https://github.com/casey/filepack/pull/57) by [casey](https://github.com/casey))
- Include manifests in release archives ([#55](https://github.com/casey/filepack/pull/55) by [casey](https://github.com/casey))
- Add signing utility table to prior art readme section ([#54](https://github.com/casey/filepack/pull/54) by [casey](https://github.com/casey))
- Add `gpg` and `ssh-keygen` to prior art readme section ([#53](https://github.com/casey/filepack/pull/53) by [casey](https://github.com/casey))
- Add `hashdeep` and `hashdir` to alternatives section in readme ([#52](https://github.com/casey/filepack/pull/52) by [casey](https://github.com/casey))
- Use kebab-case field names ([#46](https://github.com/casey/filepack/pull/46) by [casey](https://github.com/casey))
- Allow unknown keys in manifest but not in metadata template ([#45](https://github.com/casey/filepack/pull/45) by [casey](https://github.com/casey))
[0.0.3](https://github.com/casey/filepack/releases/tag/0.0.3) - 2024-09-15
--------------------------------------------------------------------------
### Added
- Allow overwriting manifest with `--force` ([#41](https://github.com/casey/filepack/pull/41) by [casey](https://github.com/casey))
- Add lint for junk files ([#38](https://github.com/casey/filepack/pull/38) by [casey](https://github.com/casey))
- Allow specifying path to manifest ([#35](https://github.com/casey/filepack/pull/35) by [casey](https://github.com/casey))
### Changed
- Allow portability lints by default ([#37](https://github.com/casey/filepack/pull/37) by [casey](https://github.com/casey))
### Misc
- Add color to error and mismatch messages ([#42](https://github.com/casey/filepack/pull/42) by [casey](https://github.com/casey))
- Update readme ([#36](https://github.com/casey/filepack/pull/36) by [casey](https://github.com/casey))
- Return Entry from Options::hash_file ([#34](https://github.com/casey/filepack/pull/34) by [casey](https://github.com/casey))
- Add progress bars ([#33](https://github.com/casey/filepack/pull/33) by [casey](https://github.com/casey))
- Improve missing file error messages ([#32](https://github.com/casey/filepack/pull/32) by [casey](https://github.com/casey))
- Add DESIGN.md ([#30](https://github.com/casey/filepack/pull/30) by [casey](https://github.com/casey))
- Include file sizes in manifest ([#29](https://github.com/casey/filepack/pull/29) by [casey](https://github.com/casey))
- Add `filpack hash` subcommand to hash single file ([#28](https://github.com/casey/filepack/pull/28) by [casey](https://github.com/casey))
- Install Rust toolchain in release workflow ([#27](https://github.com/casey/filepack/pull/27) by [casey](https://github.com/casey))
[0.0.2](https://github.com/casey/filepack/releases/tag/0.0.1) - 2024-09-06
--------------------------------------------------------------------------
### Added
- Default to current directory in `filepack create` and `filepack verify` ([#25](https://github.com/casey/filepack/pull/25) by [casey](https://github.com/casey))
- Add install script ([#21](https://github.com/casey/filepack/pull/21) by [casey](https://github.com/casey))
- Add `man` subcommand to print man page ([#10](https://github.com/casey/filepack/pull/10) by [casey](https://github.com/casey))
- Add `--print` flag to print manifest after verification ([#9](https://github.com/casey/filepack/pull/9) by [casey](https://github.com/casey))
- Add `--parallel` flag to read files in parallel ([#7](https://github.com/casey/filepack/pull/7) by [casey](https://github.com/casey))
- Pass `--mmap` to memory-map files for hashing ([#6](https://github.com/casey/filepack/pull/6) by [casey](https://github.com/casey))
### Misc
- Hash files last in `filepack create` ([#24](https://github.com/casey/filepack/pull/24) by [casey](https://github.com/casey))
- Add header to readme ([#23](https://github.com/casey/filepack/pull/23) by [casey](https://github.com/casey))
- Expand readme ([#22](https://github.com/casey/filepack/pull/22) by [casey](https://github.com/casey))
- Exclude files from packaged crate ([#20](https://github.com/casey/filepack/pull/20) by [casey](https://github.com/casey))
- Add alternatives and prior art section to readme ([#19](https://github.com/casey/filepack/pull/19) by [casey](https://github.com/casey))
- Change favicon to hash symbol ([#18](https://github.com/casey/filepack/pull/18) by [casey](https://github.com/casey))
- Make favicon abstract ([#17](https://github.com/casey/filepack/pull/17) by [casey](https://github.com/casey))
- Update CI workflow dependencies ([#16](https://github.com/casey/filepack/pull/16) by [casey](https://github.com/casey))
- Add slightly unhinged ouroboros favicon ([#15](https://github.com/casey/filepack/pull/15) by [casey](https://github.com/casey))
- Use braille on hover in docs ([#14](https://github.com/casey/filepack/pull/14) by [casey](https://github.com/casey))
- Add categories and keywords to Cargo.toml ([#13](https://github.com/casey/filepack/pull/13) by [casey](https://github.com/casey))
- Move site to `docs` directory to deploy to GitHub Pages ([#12](https://github.com/casey/filepack/pull/12) by [casey](https://github.com/casey))
- Add homepage ([#11](https://github.com/casey/filepack/pull/11) by [casey](https://github.com/casey))
- Add about text to `--help` output ([#8](https://github.com/casey/filepack/pull/8) by [casey](https://github.com/casey))
- Add `test-release-workflow` recipe ([#5](https://github.com/casey/filepack/pull/5) by [casey](https://github.com/casey))
- Use `echo {name}={value} >> $GITHUB_OUTPUT` in release workflow ([#4](https://github.com/casey/filepack/pull/4) by [casey](https://github.com/casey))
[0.0.1](https://github.com/casey/filepack/releases/tag/0.0.1) - 2024-09-02
--------------------------------------------------------------------------
### Added
- Add create and verify subcommands ([#2](https://github.com/casey/filepack/pull/2) by [casey](https://github.com/casey))
### Misc
- Initialize rust binary ([#1](https://github.com/casey/filepack/pull/1) by [casey](https://github.com/casey))