FuseGenerator is the Quick Look generator plugin used by the macOS Fuse ecosystem for ZX Spectrum files. It builds a .qlgenerator bundle so Finder can render previews and thumbnails for supported file types.
- A macOS Quick Look plugin (
FuseGenerator.qlgenerator) written in Objective-C/C. - A component used by the Fuse macOS app packaging flow.
- A consumer of vendored
libspectrumsources for ZX Spectrum file parsing.
GeneratePreviewForURL.mandGenerateThumbnailForURL.m: Quick Look entry points.LibspectrumSCRExtractor.*: screen extraction glue around libspectrum APIs.libspectrum/: vendored upstream libspectrum source (managed as a squashed subtree).FuseGenerator.xcodeproj/: Xcode project for building the plugin bundle.
- macOS with Xcode command-line tools.
- Apple Silicon/macOS target environment used by this repository.
From this directory:
xcodebuild -configuration ReleaseThe resulting plugin bundle is produced by Xcode under the build products path.
Typical cycle:
xcodebuild clean -configuration Release
xcodebuild -configuration ReleaseRun a Release build before pushing migration or dependency updates.
Releases are built by GitHub Actions using FuseGenerator/.github/workflows/release.yml.
- Push a tag that matches
fuse-generator-*(for examplefuse-generator-1.5.6).
- Checks out the repository.
- Builds
FuseGeneratorinReleaseconfiguration. - Packages
FuseGenerator.qlgeneratorasFuseGenerator-<version>.qlgenerator.zip(for tagfuse-generator-1.5.0, asset isFuseGenerator-1.5.0.qlgenerator.zip). - Computes SHA-256 for the zip.
- Creates a GitHub Release for the tag and uploads the zip.
- Writes the checksum in the release body.
git tag fuse-generator-1.5.6
git push origin fuse-generator-1.5.6After the workflow completes, verify on GitHub:
- The release exists for the pushed tag.
- The zip asset is attached.
- The SHA-256 value appears in release notes.
Package.swift declares a binary target that points at the published release zip and checksum.
After publishing a new release tag:
- Copy the new asset URL from the release page.
- Copy the SHA-256 from release notes (or asset digest).
- Update
urlandchecksuminPackage.swift. - Commit and push the
Package.swiftupdate.
Use a throwaway pre-release style tag first (still matches fuse-generator-*):
git tag fuse-generator-1.5.6-rc1
git push origin fuse-generator-1.5.6-rc1After validation, delete the test tag and release in GitHub UI (or CLI), then create the real release tag.
libspectrum/ is vendored as a squashed git subtree (not a submodule).
git remote add libspectrum git@github.com:fmeunier/libspectrum.gitIf GitHub migration is not complete for libspectrum, use the SourceForge URL instead.
git fetch libspectrum --tags
git subtree pull --prefix=libspectrum libspectrum <tag-or-commit> --squashThese files are lightly modified relative to upstream libspectrum and must be reviewed and patched in sync during every libspectrum upgrade:
config.hgenerate.pllibspectrum.h
After updating libspectrum/, reconcile those three files against upstream changes before committing.
xcodebuild -configuration Release
git commit -m "Update libspectrum subtree to <tag-or-commit>"- Keep
libspectrumupdates squashed to maintain a compact history in this repository. - Do not reintroduce
libspectrumas a git submodule.