A native macOS app for writing one markdown note per day. Each day gets its own file (2026-06-10.md) in a folder you choose. Optional daily reminders nudge you to write.
No Gatekeeper warnings when you build locally.
git clone https://github.com/andresousadotpt/macdaily.git
cd macdaily
make app
open dist/macdaily.appRequirements: macOS 14 (Sonoma) or later, Xcode Command Line Tools. Full Xcode is needed for make test.
brew tap andresousadotpt/tap
brew install --cask macdailyIf macOS blocks launch the first time, right-click macdaily.app → Open, or use System Settings → Privacy & Security → Open Anyway.
Build from source (Option A) avoids this entirely.
Download macdaily-{version}.zip from Releases, unzip, and open the app. Same Gatekeeper note as Option B.
- Launch macdaily and choose a notes folder.
- Today's note is created automatically — on launch, at local midnight, when the Mac wakes, and when the app returns to the foreground.
- Use the menu bar icon (book) for quick access: edit today's note in the popover or click Open macdaily for the full window.
- Pick earlier days from the sidebar, or press ⌘⇧F to search text across all notes.
- Open Settings (⌘,) to change the notes folder, configure daily reminders, customize appearance, or back up settings.
Settings are saved automatically to ~/Library/Application Support/MacDaily/config.json. Use Settings → Backup to export or import a JSON file (appearance, shortcuts, reminders, and startup — not your notes folder path).
Settings → Appearance lets you adjust:
- Editor zoom — slider or ⌘+ / ⌘− / ⌘0 (View menu) to zoom in, out, or reset
- Theme — light, dark, or follow system; optional high-contrast text
- Editor — font style, line spacing, margins, line numbers, default editor/split/preview view
- Preview formatting — pick a preset theme (GitHub, Monokai, Dracula, One Dark, Nord, Tokyo Night, Gruvbox, Solarized, Ocean, Forest, and more) or switch to Custom to fine-tune each element
- Sidebar — show or hide the daily note count
Use Format menu shortcuts (defaults shown) or change them in Settings → Shortcuts:
| Action | Default shortcut |
|---|---|
| Bold | ⌘B |
| Italic | ⌘I |
| Strikethrough | ⌘⇧X |
| Underline | ⌘U (inserts HTML tags) |
| Inline code | ⌘E |
| Link | ⌘K |
| Heading 1–6 | ⌘⌥1 … ⌘⌥6 |
The editor can show line numbers in a left gutter (toggle in Settings → Appearance).
Code blocks in the preview use syntax highlighting when you specify a language (e.g. ```swift). Click the copy icon on a code block to copy its contents.
Closing the main window keeps macdaily running in the menu bar so you can keep jotting notes from there.
On first launch, macdaily asks for notification permission, a notes folder, and whether to open at login (on by default). Change startup behavior anytime in Settings → General.
Default reminder times are 9:30 AM, 1:00 PM, and 4:00 PM (your Mac's local time). You can add, edit, or remove times in Settings → Reminders. macOS will ask for notification permission the first time reminders are enabled.
Reminders only work when running the packaged app (make app → open dist/macdaily.app). They are skipped under make run / swift run, which does not run inside a proper .app bundle.
make build # debug build
make run # build and launch via swift run (reminders skipped)
make test # unit tests (requires full Xcode, not Command Line Tools alone)
make app # release .app in ./dist — use this to test reminders
make clean # remove build artifactsVersion lives in packaging/Info.plist (CFBundleShortVersionString). Push to main and GitHub Actions will:
- Auto-bump the patch version if
v{current}already exists (e.g.0.1.0→0.1.1) - Build
macdaily.app(ad-hoc signed) - Publish a GitHub Release zip
- Update the Homebrew cask in homebrew-tap
For a minor or major release, bump locally first:
make bump-version BUMP=minor # or BUMP=major
git add packaging/Info.plist && git commit -m "chore: bump version to X.Y.Z"Then merge to main. CI will use that version as-is (no tag exists yet) and publish it.
| Secret | Required | Purpose |
|---|---|---|
HOMEBREW_TAP_TOKEN |
For automated tap updates | GitHub PAT with contents: write on homebrew-tap |
Apple Developer ID / notarization is not required. Releases are ad-hoc signed.
Contributions are welcome. See CONTRIBUTING.md for setup, code guidelines, and pull request expectations.
| Document | Purpose |
|---|---|
| CONTRIBUTING.md | How to contribute |
| SUPPORT.md | Help, FAQs, and where to ask questions |
| SECURITY.md | Report vulnerabilities privately |
| CODE_OF_CONDUCT.md | Community standards |
| CHANGELOG.md | Version history |
| AGENTS.md | Architecture reference for developers and AI agents |
MIT — see LICENSE.
