Skip to content

Worth-Doing/morphix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Morphix

Morphix

The most powerful local-first file conversion studio for macOS. Swift + SwiftUI. Built without Xcode.


Download DMG Notarized by Apple Signed with Developer ID


Platform Architecture Swift SwiftUI SwiftPM No Xcode

GitHub release (latest by date) GitHub Release Date GitHub all releases GitHub release downloads

GitHub last commit GitHub commit activity GitHub repo size GitHub code size Lines of code GitHub top language GitHub language count

GitHub stars GitHub forks GitHub watchers

GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests GitHub contributors

License Maintenance PRs Welcome Made with Love


Local-first · capability-driven adapters · drop anything, get the right format out


Download

The latest release is signed with a Developer ID certificate, notarized by Apple, and stapled — so it opens cleanly on any Mac without Gatekeeper warnings.

Download Morphix for macOS

Requires macOS 14 (Sonoma) or newer on Apple Silicon.

After downloading, open the DMG and drag Morphix.app into your Applications folder.


What works today

Phase-1 vertical slice: full modular architecture in place, three end-to-end conversions shipped.

Input Output Engine
.md · .txt · .html .pdf swift-markdown + WKWebView
Webpage URL (http/https) .pdf WKWebView.createPDF
.heic · .jpg · .png · .webp · .tiff · .gif · .bmp .png · .jpg · .heic · .webp · .tiff · .bmp ImageIO
Remote media URL Any of the above (download then convert) URLSession + adapters

Also wired end-to-end: drag-and-drop, URL paste with HEAD-based content-type classification, actor-based job queue with concurrency/cancel/retry, persistent history + presets + settings, Reveal-in-Finder, capability-driven target pickers.


Build from source

# Dev run
swift run Morphix

# Produce an unsigned .app bundle
./scripts/bundle.sh --open

# Full signed + notarized + stapled DMG (requires Developer ID cert
# in keychain and a notarytool keychain profile set up once):
./scripts/release.sh

The build does not require Xcode — Command Line Tools are enough. The entire .icns app icon is rendered programmatically from assets/morphix-logo.svg by scripts/make-icons.swift so the pipeline has no external SVG dependency.


Architecture

11 SwiftPM modules, clean dependency graph, capability-driven adapter registration.

Sources/
├── Utilities/              OSLog, paths, safe shell runner, IDs
├── ConversionDomain/       FileFormat, SourceAsset, Job, Preset, Adapter protocol
├── FileInspectionEngine/   UTType + extension detection, image metadata
├── URLImportEngine/        URL validation, HEAD classification, download
├── ConversionAdapters/     MarkdownPDF · WebpagePDF · Image   + shared WebPDFRenderer
├── ConversionEngine/       Adapter registry + dispatch
├── JobQueueEngine/         Actor-backed queue + event stream
├── PersistenceStores/      History · Preset · Settings
├── DesignSystem/           Tokens, PanelCard, DropZone, FileChip, ProgressPill
├── AppCore/                @MainActor AppState ObservableObject, navigation
└── Morphix/                @main App + SwiftUI views

Adapters are the only layer that touches specific conversion engines (ImageIO, WebKit, swift-markdown); everything else talks in domain types. To add a new conversion, drop a struct into ConversionAdapters/, declare its capabilities: [Capability], and register it in ConversionEngine.defaultEngine() — the UI picks it up automatically.

See CLAUDE.md for the full product spec and roadmap.


Roadmap (from the full spec)

Not yet shipped, but the module layout is ready:

  • Audio / video adapters (ffmpeg via ShellExec)
  • Archive · subtitle · structured-data · DOCX · EPUB · ODT adapters
  • PDF merge / split / compress (PDFKit wrapper)
  • Watch folders, Finder Quick Actions, Share extension
  • Batch rename patterns, OCR

Data locations

~/Library/Application Support/Morphix/
  presets.json      starter + user-added conversion recipes
  history.json      previous job outcomes
  settings.json     app preferences
~/Library/Caches/Morphix/jobs/<job-id>/
  per-job scratch workspace

Delete the Morphix directory under Application Support to reset the app state.


License

MIT — see LICENSE.


Crafted on macOS. No Xcode harmed in the making.

About

The most powerful local-first file conversion studio for macOS. Swift + SwiftUI, no Xcode. Signed & notarized DMG.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors