MinimalEditor is a native macOS plain-text editor built in Swift.
It is intentionally narrow in scope: one window, plain text only, .txt only, and persistent custom colors for the editor background and text.
The main use case is a permanently dark writing surface, for example black background with light text.
- Open existing
.txtfiles - Create new plain-text documents
- Save and Save As with enforced
.txtextension - Persistent global theme for background and text color
- Rich-text paste stripped down to plain text
- Unsaved changes warning before destructive actions
Prebuilt signed binaries are available from the Releases page.
brew tap driade/minimal-editor https://github.com/driade/minimal-editor
brew install --cask driade/minimal-editor/minimaleditorThis tap installs the notarized app published in GitHub Releases.
Requirements:
- macOS
- Xcode
- XcodeGen
git clone https://github.com/driade/minimal-editor.git
cd minimal-editor
xcodegen generate
./scripts/build_universal.shThe app will be generated at:
build-universal/output/MinimalEditor.appThat command builds a universal macOS app with Apple Silicon and Intel slices.
If SIGNING_IDENTITY is set, the script signs the final universal app bundle. If not, it performs ad-hoc signing so the app remains runnable locally.
xcodebuild -project MinimalEditor.xcodeproj -scheme MinimalEditor -destination 'platform=macOS,arch=arm64' testThe current test suite covers .txt URL enforcement and persisted theme color behavior.
The repository is prepared for GitHub Actions release builds:
- pull requests and branch pushes build the app and upload a ZIP artifact
- version tags like
v0.1.0build, sign, notarize, and publish a release asset
Required GitHub secrets for signed and notarized tag releases:
BUILD_CERTIFICATE_BASE64P12_PASSWORDKEYCHAIN_PASSWORDAPPLE_IDAPPLE_APP_SPECIFIC_PASSWORDAPPLE_TEAM_ID
For local notarization, use:
./scripts/notarize_local.sh build-universal/output/MinimalEditor.app MinimalEditorNotaryThe release pipeline is configured so:
- Xcode builds are generated without relying on target-level signing
scripts/build_universal.shsigns the final universal app bundle whenSIGNING_IDENTITYis set- tag builds in GitHub Actions import the Developer ID certificate, sign the final app, notarize it, and publish the ZIP asset
- hardened runtime is applied on the final signed release build
MinimalEditor/: app sourceMinimalEditorTests/: unit testsproject.yml: XcodeGen project definitionscripts/build_universal.sh: universal release build helper
MIT