Skip to content

Releases: Londopy/filekind

filekind v0.5.1

Choose a tag to compare

@github-actions github-actions released this 17 Aug 08:56

filekind v0.5.1

Compile one declarative spec into the registry entries, MIME definitions,
UTI declarations, icons and install scripts that Windows, Linux and macOS
need before they will recognise a custom file extension.

What to download

Windows, both interfaces filekind-v0.5.1-x86_64-windows.msi — installs the desktop app and puts filekind.exe on your PATH
Windows, CLI only filekind-cli-v0.5.1-x86_64-pc-windows-msvc.zip
Linux desktop app .deb, .rpm or .AppImage
Linux CLI filekind-cli-v0.5.1-*-linux-musl.tar.gz — statically linked, no runtime needed
macOS desktop app .dmg — universal, runs on Apple silicon and Intel
macOS CLI filekind-cli-v0.5.1-*-apple-darwin.tar.gz
From source cargo install filekind-cli

Verifying your download

Every file has a matching .sha256, and SHA256SUMS covers all of them.

sha256sum -c SHA256SUMS --ignore-missing

These binaries are not codesigned. Windows SmartScreen will warn on the
MSI and macOS Gatekeeper will refuse the .dmg until you clear the
quarantine attribute. That is expected, and the checksums above are how you
verify the download in the meantime. See SECURITY.md.


Fixed

  • The CLI printed raw ANSI escapes in cmd.exe instead of colour
    (←[1mspec:←[0m ...). Colour was gated on stdout().is_terminal(),
    which is true in a Windows console — but conhost does not interpret escape
    sequences until virtual terminal processing is enabled on the handle, which
    Windows Terminal does for you and the classic console does not. Output now
    goes through anstream, which enables VT where the console supports it and
    strips the codes where it does not. NO_COLOR and CLICOLOR_FORCE are
    honoured as before; piped output and the --json and preview paths are
    unchanged and remain byte-exact.

SHA256SUMS
ebcbfcc9c69ab1bd49ac63bba4d9b43d34e98003131ff8368339238a7bea79e5  filekind-cli-v0.5.1-aarch64-apple-darwin.tar.gz
14997434f2c9cbf84e6b05ab12cf5c2080dbf8df21006c15a46437bece68e99c  filekind-cli-v0.5.1-aarch64-unknown-linux-musl.tar.gz
a6ce4d0be927a74aead2dd592955621f096bcb31d4a8e0197f18dfb25b0b9b38  filekind-cli-v0.5.1-x86_64-apple-darwin.tar.gz
af9500e754723de576ee043894d2129515b4e65c717da9ed9a6bfb911ee7091b  filekind-cli-v0.5.1-x86_64-pc-windows-msvc.zip
8b8a58ae7af576bf09c9625c29899a63fc46fbedfe364b048e512809d7341daa  filekind-cli-v0.5.1-x86_64-unknown-linux-musl.tar.gz
e98c96dd4f8d2a8842b1d57fde953e2f9ce6306f19bb867e1817d174a0e458dd  filekind-v0.5.1-amd64.deb
2c8643188e8d00cd1705aa7f28544c489c26ba428b410871cbf02bcc0ff5e272  filekind-v0.5.1-universal.dmg
1bfb78929f5d2eac736fb7ef5ae94292bfa815dad6f0b490d0184bdc514ac850  filekind-v0.5.1-x86_64-windows-setup.exe
4653e785df9c5b56adb2e2377d68092363d2c8c9f75bd5d662cf07bab472d483  filekind-v0.5.1-x86_64-windows.msi
0d03af547bb10d82856330a31c6b5439bcabf5c67faa21746e266c32735b5a2e  filekind-v0.5.1-x86_64.AppImage
4888786d97510ad4076aa6cdc508ffde0cb7d08533a44b201def4738b77f2f68  filekind-v0.5.1-x86_64.rpm

filekind v0.5.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 07:29

filekind v0.5.0

Compile one declarative spec into the registry entries, MIME definitions,
UTI declarations, icons and install scripts that Windows, Linux and macOS
need before they will recognise a custom file extension.

What to download

Windows, both interfaces filekind-v0.5.0-x86_64-windows.msi — installs the desktop app and puts filekind.exe on your PATH
Windows, CLI only filekind-cli-v0.5.0-x86_64-pc-windows-msvc.zip
Linux desktop app .deb, .rpm or .AppImage
Linux CLI filekind-cli-v0.5.0-*-linux-musl.tar.gz — statically linked, no runtime needed
macOS desktop app .dmg — universal, runs on Apple silicon and Intel
macOS CLI filekind-cli-v0.5.0-*-apple-darwin.tar.gz
From source cargo install filekind-cli

Verifying your download

Every file has a matching .sha256, and SHA256SUMS covers all of them.

sha256sum -c SHA256SUMS --ignore-missing

These binaries are not codesigned. Windows SmartScreen will warn on the
MSI and macOS Gatekeeper will refuse the .dmg until you clear the
quarantine attribute. That is expected, and the checksums above are how you
verify the download in the meantime. See SECURITY.md.


First public release. The v0.1–v0.4 milestones from the design sheet landed
together rather than in sequence, so they are recorded here as one release
rather than backdated into versions that were never tagged.

Three limitations are worth knowing before you install anything. macOS output
is experimental — a UTI declaration only takes effect inside a real .app
bundle, and Launch Services ignores bundles that are not codesigned and
notarised, so targets.macos is off by default. Windows default-handler
assignment is not attempted, because Windows 10 and later do not permit it from
a script; filekind registers the ProgID and populates OpenWithProgids, and
the user picks the default in Settings. Release binaries are unsigned — see
SECURITY.md for how to verify them.

Added

  • filekind-core: parse a .filekind spec and generate every artifact an
    operating system needs to recognise a custom extension. The crate performs no
    I/O and no printing — every generator returns String or Vec<u8>, which is
    what makes the GUI's live preview possible.
  • Windows target: register.reg, unregister.reg, an Inno Setup [Registry]
    snippet and NSIS register/unregister macros.
  • Linux target: freedesktop shared-mime-info XML, a .desktop entry, the
    eight-size hicolor icon tree, and install.sh / uninstall.sh built on
    xdg-mime and xdg-icon-resource.
  • macOS target (experimental): UTExportedTypeDeclarations and
    CFBundleDocumentTypes fragments, an .icns, and an optional stub .app
    bundle behind --stub-app.
  • Universal artifacts: a libmagic pattern and a generated per-platform README.
  • Icon pipeline: one square PNG in; a multi-resolution .ico, an .icns
    carrying the full Retina set (ic11ic14, ic10), and eight hicolor PNGs
    out. Lanczos3 resampling, alpha preserved, non-square input padded rather
    than silently cropped.
  • Validation with two severities: reserved executable extensions are errors,
    collisions against a bundled 220-entry dataset are warnings. Diagnostics
    carry a dotted field path so the GUI can underline the box that caused them.
  • filekind-cli: init, build, check, verify, preview, icons and
    gui, with the documented exit codes (0 ok, 1 spec invalid, 2 I/O
    error, 3 generation failure). check --json and verify --json for
    scripting.
  • filekind-gui: Tauri v2 + SvelteKit desktop app with four screens, a live
    preview pane debounced at 150 ms, format-preserving round-trip editing via
    toml_edit, a wizard, a recent-specs list and drag-and-drop icon input. It
    links filekind-core directly and never shells out to the CLI.
  • Distribution packaging: Debian control files with a build-deb.sh that
    assembles from the already-generated artifacts, and an RPM spec.
  • Optional Kaitai Struct integration behind the kaitai feature. filekind
    stays the association layer and Kaitai the format layer; the seam
    cross-checks that the spec's magic bytes and the schema's leading contents
    agree, and emits a build script rather than running a compiler for you.
  • Golden-file test suite: 53 snapshots plus structural tests asserting
    determinism, unique relative output paths, and that no Windows artifact ever
    touches UserChoice or FileExts.
  • TypeScript definitions generated from the Rust types with ts-rs, so the
    IPC boundary cannot drift. CI fails if the committed bindings are stale.

Security

  • Handlers are declared in the spec and are never read from the file being
    opened. A data file that can specify what executes when it is double-clicked
    is a malware delivery vehicle, and this is an architectural constraint rather
    than a policy.
  • No shell interpolation of user-supplied strings. Every generated command goes
    through per-dialect escaping — registry, XML, Inno, NSIS, freedesktop and
    POSIX sh each have their own rules, and a test asserts a hostile handler
    cannot escape any of them.
  • HKEY_CURRENT_USER and ~/.local/share by default; --system is opt-in and
    explicit.
  • Every register action ships with a matching unregister action. The Windows
    uninstall is deliberately conservative: it removes filekind's own values and
    leaves keys another application may share.
  • filekind never writes to the registry or the MIME database itself. It emits
    scripts you can read before running them.

SHA256SUMS
d71be944fa5c753574eae72cff4c44bd8e7a1d5abbe51a267ac64646720410ec  filekind-cli-v0.5.0-aarch64-apple-darwin.tar.gz
cd4392cc7b40765d27b473b42fdb863c0d81c4d3123d3f484fe2847c0ae0412a  filekind-cli-v0.5.0-aarch64-unknown-linux-musl.tar.gz
55afffc2a263df8ea0312837a53e9d1c26f1afb02ef41425d34d8514cae87595  filekind-cli-v0.5.0-x86_64-apple-darwin.tar.gz
024af5a6556576e9b1dbeb92111ee34303be68340a848ba14ed0a2fcfccc6fe3  filekind-cli-v0.5.0-x86_64-pc-windows-msvc.zip
2497ccc816befe4bc90530895a44b6dd0708591b892635334de4baf1665c6888  filekind-cli-v0.5.0-x86_64-unknown-linux-musl.tar.gz
5159d906dcb7789703b4611d8cb0e81dedf727074b9afe6eb09fb31de5f985de  filekind-v0.5.0-amd64.deb
f20cb36d8863d7c4231ac8e98b74f3e26a9b698f9bff61dde65c6c86084c9c54  filekind-v0.5.0-universal.dmg
2adcf4078161b7259abbe7a2f8e94c3ce8e6f58dc01373b14907ca3138ca4060  filekind-v0.5.0-x86_64-windows-setup.exe
03237601648b7d3550fd83670fc4e21241866c4ceb4a33be536fe737646dbf4e  filekind-v0.5.0-x86_64-windows.msi
bc89100b53c7d2f6af61384bc0421817fae2b203b78ca34b435fa8d7c9b55fc7  filekind-v0.5.0-x86_64.AppImage
2af79f058fd633f54a81c3a3947a8debdba751a59efade218ed13d4ccc43ed16  filekind-v0.5.0-x86_64.rpm