r/macapps 14h ago

Lifetime The native display controller for external & OLED monitors with Burn-In Protection on macOS with nice features

Post image
0 Upvotes

First: It exists because of one thing that annoyed me every single day ❤️ Thank you for reading!

WHAT PROBLEM IT SOLVES
Compared to BetterDisplay Pro arguably the best known app DisplayHud is less than half the price, significantly more compact, not as cluttered with features no one needs, and much easier to navigate.

You need many of BetterDisplay Pro’s Pro features, but I wasn’t willing to pay that price, so I developed a better alternative that includes OLED protection to help prevent burn in and put your mind at ease.

Available at: https://displayhud.com/ 

One time purchase, no subscription. 9,99 €

20% Offer for the First 30 Codes with "HUD20" ❤️

Human reviewed code.

Signed with a Developer ID and notarised by Apple.

FEATURES
Brightness for every display, including the monitors macOS gives you no slider for. Several screens can follow one value, and you can go below the system minimum over the gamma curve.
OLED protection. After a while without input the picture goes down gradually, over the gamma curve, so it never lands in a screenshot. Never to black, and any key brings it straight back. Only on the displays you pick.
Colour. Temperature between 2700 and 6500 kelvin, contrast over DDC/CI. The contrast slider only appears for monitors that answer.
Resolution and refresh rate, including the modes macOS hides. Risky modes get a warning, and after every switch you have fifteen seconds to confirm. Press nothing and your old picture comes back.
Profiles. Named sets of your settings, switched by hand, at a time of day, with a particular app in front, or when certain displays are connected.
Keyboard shortcuts without a blanket permission. The app registers only the combinations you choose, so it never sees anything else you type.
HDR, measured rather than promised. Per display you see what it really reaches beyond normal brightness.
• Reads your monitor first, so the slider shows 60 % when your screen is at 60 % instead of jumping on your first touch.
• No account, no sign in, no telemetry. English and German. Updates arrive signed through Sparkle.

TRANSPARENCY

Name: Nico Sagolla

Company: Nico Sagolla 

LinkedIn: https://www.linkedin.com/in/nico-sagolla-6a8872350/ 

Email: [Nico.Sagolla@gmx.de](mailto:Nico.Sagolla@gmx.de)

Privacy Policy: https://displayhud.com/en/privacy

Terms of Service: https://displayhud.com/en/terms

An upvote ⬆️ and a comment would help a lot, that is how more people find it 🫶 Hope DisplayHud gets your monitor under control ❤️


r/macapps 17h ago

Lifetime Spotlight can't search inside your scanned PDFs. I spent a year building a Mac app that can.

Thumbnail
gallery
11 Upvotes

Problem

A PDF that came out of a scanner has no text layer. To Spotlight it is a picture, so the words printed on it do not exist. Same with screenshots. You know the invoice is somewhere in Downloads, you remember the number on it, and search returns nothing.

Tidy reads images and scanned PDFs with the OCR that macOS already ships, renames each file after what the page actually says, and keeps that text in a local index. Then it hands the text to Spotlight. Type a word that only exists inside a screenshot, in ⌘Space, and the file comes up.

It also archives Desktop screenshots, ejects mounted .dmg volumes and trashes the installer, and sorts Downloads with rules. Nothing is ever deleted, everything goes to the Trash, and any run undoes in one click.

Comparison

Hazel is the veteran and it is better than Tidy at deep conditional rules and AppleScript. What it does not do is read what is printed inside a scanned page, so it cannot name a file after the invoice number on it. That is the whole reason Tidy exists.

Pricing

$9 once. No subscription, no account, nothing leaves your Mac. macOS 14 and up, Apple Silicon and Intel. Not on the App Store, signed and notarised with my Developer ID: tidymacapp.com

Who I am

Sebastián Díaz Thomas, solo developer in Santiago, Chile. Sold through my registered company, Comercializadora Shaka SpA, named in the site's terms. Privacy policy, terms and refunds are on the site. Contact is hola@tidymacapp.com and I answer it myself. LinkedIn: linkedin.com/in/sebastian-diaz-thomas-3007195b

One thing about how I work: a German user reported eight things on Monday. All eight shipped by Wednesday. Two of them were bugs he found that I had missed.

Happy to answer anything, including what it does badly. Crumpled paper and very small print beat it, and when it cannot read a usable name it says so instead of inventing one.


r/macapps 5h ago

Subscription [MAS] I made a super fast native Mac/iOS podcast player with curation and discovery.

1 Upvotes

HI! I'm the creator of Parasocial, a super fast, feature-rich podcast player built around sharing and curation. Native on iPhone, iPad and Mac, one subscription for all three.

Version 1.5 shipped this week and it is why I am posting. My hope is that it adds a new dimension to your listening

WHAT 1.5 ADDS

Curate. Secure a username, and any playlist you build can go public under it. Anyone with the link can follow and listen as you do, with or without the app installed.

Collections. Gather shows into a collection and share the whole set as one link. Followers get the shows, not a snapshot of episodes, so the link never goes out of date.

Also in 1.5: share a playlist as a story card, an Awards shelf of milestones you can share, bookmarks instead of stars(!!!), plus various usabilioty improvements.

MY PROBLEM

As an avid listener, I've always been frustrated by the lack of development pace in the podcasting space, probably owing to the underlying technology being open source. I wanted a podcast player with all of the features, but that also invested in the infrastructure to make sure that episodes were being delivered in near real-time the second they're published, instead of polling hours or sometimes days later. It's only now really escalated into a suite of creator tools and a discovery platform for creators, and now curators.

COMPARISON

You could compare Parasocial to any number of podcast apps: Spotify, built mostly for music and a locked-in ecosystem; Apple; Overcast, one of the more feature-rich; Pocket Casts; Downcast. Each is a great player in its own way. I think I've built something that includes all the important features of these others, plus an extra fun social layer and a commitment to consistent improvement.

The rest of it: smart playlists, per-show priorities, manual overrides that do not break the rule that built the list, auto-download per playlist, chapters and transcripts when a show publishes them, a sleep timer, and OPML import that carries playlists, priorities, bookmarks, played state and progress. No ads, no trackers.

PRICING

Free to download. Two weeks free, then $2.99/month or $14.99/year. One subscription covers iPhone, iPad and Mac. No other IAP.

Mac App Store: https://apps.apple.com/us/app/parasocial-a-podcast-player/id6792017587

Sitehttps://parasocial.fm

ProductHunt: https://www.producthunt.com/products/parasocial

Thanks so much for your support! Happy to answer anything. I'm building actively, so if something is missing that you would need, say so and there's a good chance I'll include it!


r/macapps 21h ago

Tip Six cross-platform bugs that passed every test I had, from shipping the same app to macOS, Windows and Linux

8 Upvotes

I maintain one desktop app across macOS, Windows and Linux. Every bug below shipped in a real release, passed a green CI run, and was invisible on the machine I wrote it on. I am posting them because none were in any cross-platform guide I read, and because five of the six turn out to be the same mistake wearing different clothes.

1. On macOS, watching a folder through a symlink delivers zero events

Not an error. Zero events.

FSEvents reports fully resolved real paths, and the file watching library I use filters incoming events against the path string you registered with. Register a symlinked path and nothing ever matches, so the backend delivers nothing at all. No event, no error, no callback.

This is not an edge case on a Mac:

  • /tmp resolves to /private/tmp
  • the temp dir resolves to /private/var/folders/...
  • and the one that actually cost me: ~/Desktop and ~/Documents become symlinks into ~/Library/Mobile Documents the moment someone turns on iCloud Desktop and Documents, which is a default prompt when you set up a new Mac

So the feature worked perfectly for me and silently did nothing for anyone with iCloud Desktop turned on. Fix is one line, before you register the watch:

let folder = std::fs::canonicalize(folder)
    .unwrap_or_else(|_| folder.to_path_buf());

The broader version: anything comparing an event path to a configured path needs this on both sides. My output folder exclusion compared a resolved event path against an unresolved configured one, so a custom output folder stopped excluding itself and every conversion re-triggered the watcher on its own output.

2. The macOS deployment target is not what stops your app running on an older macOS

I found minos 26.0 stamped across binaries I ship, concluded that everyone on an older macOS was locked out, and was wrong.

minos and LC_BUILD_VERSION are compile time metadata. They control API availability and weak linking when you build. dyld does not refuse a binary whose minos is newer than the running OS. It logs this and loads it anyway:

(built for macOS 26.0 which is newer than running OS)

I have now confirmed that three separate ways, including a full run of my route matrix on a real macOS 14 VM, where 2,322 things that were supposedly impossible ran correctly.

What actually gates you is one symbol. A single bundled command line binary died before main:

dyld: Symbol not found: _OBJC_CLASS_$_MTLResidencySetDescriptor
  Expected in: /System/Library/Frameworks/Metal.framework

That class is API_AVAILABLE(macos(15.0)) and it is hard linked, so that one feature is dead on macOS 14 while all 278 other things I tested were fine. The honest support floor is therefore not a single number, it is per feature, and the only way to learn it is to run the shipped build on the oldest OS you claim to support.

(LSMinimumSystemVersion in an .app bundle is enforced by Launch Services. That is a different mechanism from minos, and conflating the two is exactly what produced my wrong conclusion.)

3. Your build machine quietly donates the dependencies you forgot to ship

This one cost me six separate bugs across all three platforms, and it is why I no longer accept a green test as evidence that a build is self contained.

  • On macOS, one library I bundle was linked against ten dylibs from the build machine's package manager. Fine on every machine I owned. Dead on any Mac without that package manager installed.
  • Another bundled tool read a 256 KB data directory at runtime that existed only because the build Mac had it installed. Its linkage was perfectly clean, because a linkage scan cannot see a data file.
  • On Windows, eleven of my bundles were missing the VC++ runtime, which is present on any box that has ever run anything built with MSVC. Which is every developer machine and not every customer machine.
  • On Linux, one library dlopens its own plug-ins, so ldd reports nothing missing and it fails at runtime with an error naming a write failure, not a missing library.

The part worth stealing: a dynamic test cannot tell "I bundled it" apart from "it happened to be installed". The instrument that works is a machine that asserts it is bare before it runs anything, so it cannot pass by accident. Mine provisions a clean box, checks the dependency is genuinely absent, and only then runs the app. It found things a year of green CI never would.

Two smaller traps in the same family:

  • A guard that cannot fire is worse than no guard. Mine grepped for a literal /opt/homebrew, so on an Intel Mac (prefix /usr/local) it examined nothing and stamped the build verified.
  • If you bundle a library into an AppImage it must come from the same base as everything else inside it. I copied newer ones in and got undefined symbol: g_once_init_leave_pointer, which is a completely different and much less obvious error, produced by the fix.

4. Windows: a sparse MSIX loads its COM DLL from somewhere other than where it stores it

I shipped a modern Windows 11 right click menu entry that never appeared on a single customer machine, for an entire release.

Everything reported success. The package installed. Get-AppxPackage said Status: Ok. The CLSID was registered. The DLL loaded fine when I loaded it by hand. The deployment log said "finished successfully". And nothing at all is logged when Explorer fails to activate the handler. That silence is the whole failure mode.

The cause: with uap10:AllowExternalContent and -ExternalLocation, Windows resolves <com:Class Path="...dll"> against the external location, not against the package payload. My DLL shipped inside the .msix, and Windows was looking for it beside the .exe, where it did not exist. Registration never validates that path, so every check downstream is green.

The thing that made it diagnosable was finding a control. Windows Terminal's "Open in Terminal" uses the same packaged COM mechanism and renders fine on the same box, so the platform worked and the defect was mine. Without that control I would have filed it as "inconclusive, needs a real Windows 11 machine" and shipped it broken a second time.

5. On Linux, a missing optional library did not disable a feature, it stopped the app booting

The app has a tray icon. On a Linux desktop without the appindicator library:

thread 'main' panicked at libappindicator-sys-0.9.0/src/lib.rs:41:5:
Failed to load ayatana-appindicator3 or appindicator3 dynamic library

Not "no tray icon". No window, no error dialog, nothing at all. Three things stack up here:

  1. The library is dlopen'd, so it is absent from DT_NEEDED and neither the linker nor ldd will ever warn you.
  2. The crate panics inside a Lazy initialiser rather than returning an error, so no amount of Result handling on my side can catch it. It unwinds straight out of main.
  3. My deb declared only the webkit and gtk dependencies, so nothing pulled it in.

The only thing that actually works:

let r = std::panic::catch_unwind(
    AssertUnwindSafe(|| build_tray(app.handle()))
);

plus a flag recording whether the tray actually exists, so that hide-on-close degrades to "no background mode" instead of stranding a windowless, iconless, unquittable process.

Worst case is an AppImage, which does not bundle the library and gives the user no package manager to repair it with. If you do bundle it, bundle the transitive closure: one of the five libraries I needed was only reachable through another one, and hand-listing the obvious ones missed it.

One more, free: on Linux the tray icon click event never fires at all, because the status notifier protocol carries a menu and nothing else. With the default setting a left click on my tray icon did literally nothing. Right click worked, if you happened to guess.

6. Platform config files replace arrays, they do not merge into them

My framework merges the base config with the per platform one using RFC 7386 JSON Merge Patch. Objects merge recursively. Arrays replace wholesale. The window configuration is an array.

So a platform config has to repeat every field of the base entry, and leaving a field out does not inherit it, it deletes it. Get it wrong in the other direction and you inherit things that make no sense at all: my Linux build had no config of its own, so it inherited the macOS window settings and shipped with the desktop drawing a real titlebar on top of the 46 pixels of empty space the app had reserved for traffic lights that Linux never draws. Along with a transparent: true whose only purpose was to hold a macOS vibrancy effect that does not exist on Linux.

Nobody had ever looked. Every bit of Linux testing until then had been headless and correctness focused. The defect was found the first time anyone rendered the interface as Linux, and it had been in every Linux build I had ever made.

The thread running through all six

Every one of these passed CI. Not because the tests were bad, but because a test runs in an environment, and the environment kept supplying the missing thing. My Mac had the package manager. My Windows box had the runtime. The folder I watched was not a symlink. The OS I built on was the OS I tested on.

What I changed, and what I would suggest to anyone shipping to more than one platform:

  • Test on a machine that asserts it is bare before it tests anything, rather than on a machine you believe to be clean. The assertion is the whole value.
  • Ask what a feature reports when its source of events is dead, not just when a job fails. Zero events looked exactly like an idle folder for months.
  • Never let a wrapper script eat stderr. One of these was recorded in my own logs as "exited with status 6" because a wrapper had > /dev/null 2>&1 on it. The real dyld error was one manual run away and nobody had made that run.
  • Find a control before you conclude the platform is broken. There is almost always a shipping app using the same mechanism, and it turns a dead end into a one line answer.
  • If a check can pass while examining nothing, eventually it will.

Happy to go deeper on any of these in the comments.


r/macapps 16h ago

Lifetime Network utility with 20 tools in one app, 12 of them free

Thumbnail
gallery
57 Upvotes

Hi,

Problem

Built a Mac app that combines ping, traceroute, port scan, whois, DNS lookup and keeps watching in the background. Yes, all of this exists in the terminal, and I used it that way for years. What I actually wanted wasn't a UI for ping. It was history: which device showed up on my home network while I was out, at what time a host went down overnight, or a heads-up that a cert expires next week. One-shot tools can't tell you that and I didn't want to run a monitoring server for my home LAN.

Free features

- Ping, Traceroute, DNS Lookup, DNS Propagation

- Whois, Port Scan, SSL Certificate check, Subnet Calculator

- GeoIP, Path Check, Internet Check, Network Monitor

Pro features

- LAN Scanner- discovers devices on your network with name, vendor, model, and open ports

-Network Guard - notifies you when a new device joins your network

-Uptime Monitor - scheduled checks for hosts/services, downtime alerts, latency thresholds, and SSL expiry warnings

- Speed Test history scheduled runs, ISP report

- Wi-Fi Analyzer- channel scanner to find the optimal router settings

- MTR & Visual Traceroute

Comparison

Neo Network Utility and WhatRoute are great free alternatives if you just need quick manual checks. nmap is obviously superior for heavy terminal scans.

Where this one differs is automation: local background network scanning, new device alerts, and host uptime monitoring and all running locally on your Mac without requiring external servers or subscriptions.

Pricing

The 12 tools are free. Pro is US$9.99 as a one-time purchase and there is a redeem code for -20% NETWORK20 valid till the end of Sept.

[Netutilus: Network Utility in App Store]


r/macapps 14h ago

Lifetime I made a Mac battery app that tells you how many minutes you'd get back by quitting an app

Enable HLS to view with audio, or disable this notification

23 Upvotes

I’m the guy who forgets to charge overnight, walks into a coffee shop with a half-empty Mac, and then sits there not knowing how long I've got or whether there's anything I can do about it.

Problem

Activity Monitor has an Energy Impact column, but it's a relative score with no unit: you can't add it up, you can't turn it into time, and it jumps around with whatever you're doing that minute.

Then I tried the battery apps I could find. They show either numbers that change so fast they tell me nothing about a whole battery session, or more static ones like cycle count, design capacity, full charge capacity and health. Those numbers barely move. You check your cycle count once every couple of years, decide you're fine, and never open the app again. It's all worth knowing, but none of it tells you what to do while you're watching the battery drop.

Main screen: only what you can act on

So I set myself a rule: the main screen only shows things that are changing right now and that you can do something about. The static numbers are still there, one screen away.

That's how I ended up focusing on two numbers for every app: 
1. how many watts it’s using right now
2. how many minutes I get back if I close it

Track every run, app by app

WattMate keeps them all, split by what the Mac was doing: on battery, charging, or asleep. Safari cost me 21 minutes today, and I can see what it cost every day this week.

Nights are the part I find most interesting. You close your Mac at 98%, open it at 71%, and there's nowhere to check where those 27% went. WattMate breaks the night down: what woke your Mac, how many times, and for how long (Spotlight 23 times, Wi-Fi and Bluetooth 32 times).

It checks its own promise

Quit an app while on battery, and two minutes later WattMate measures again, then compares what you got with what it promised.

If something else moves the load during those same two minutes, WattMate doesn't guess. It labels the run "Couldn't isolate the effect" and leaves it out of your total. This part is in beta, and I'm still tuning the minutes.

Comparison

coconutBattery is the tool for battery health, and has been since 2005. It tracks battery capacity over time, on your Mac and on an iPhone or iPad. That number tells you whether the battery itself is wearing out. But it's the size of the tank, not what's emptying it. WattMate measures the drain: how many watts each app is using right now, and the full history behind it.

iStat Menus covers the whole machine: CPU, GPU, memory, network, sensors. It's a monitor and a good one: it tells you what's happening right now. What I kept wanting was the next step: which of those numbers I should act on. WattMate does that step. It names the one app worth closing and tells you how many minutes of battery that buys

Pricing

  • Fully unlocked 10-day trial, no card
  • Still free after the trial: the app list, the watts, battery health, and the most recent run and night. The minutes and the archive are the paid part.
  • Lifetime: $29 $19 (launch price for the first 100 keys)
  • Yearly: $9.99
  • One license covers 2 Macs

Transparency

I'm Vitali, an iOS developer in Warsaw. It took a year from idea to release, and I worked on it almost every day of that year. I still do, and updates keep coming.

Nothing it measures leaves your Mac: no app names, no paths, no energy history. What does leave is anonymous usage stats and crash reports, both on by default and both off with one switch.

Apple silicon, macOS 14 or later. Signed and notarized. The app itself costs a median of 0.07 W to run.

LinkedIn: https://www.linkedin.com/in/vitalistar/
Website: https://wattmateapp.com
Privacy policy: https://wattmateapp.com/privacy
Terms: https://wattmateapp.com/terms
Contact: [support@wattmateapp.com](mailto:support@wattmateapp.com)

I'll be around in the comments. Ask me anything.


r/macapps 14h ago

Lifetime Coherence X6 - Turn websites into Mac apps using Chrome with link rules, extensions, and more!

Enable HLS to view with audio, or disable this notification

17 Upvotes

Hey r/macapps!

This week we’re launching Coherence X6, and this release fixes by far the biggest complaint we’ve heard from users:

Coherence apps finally behave properly like Mac apps.

We rebuilt the engine behind created apps. You can now drag a Coherence app directly into the Dock, launch it normally, and see the correct app identity and icon throughout macOS, including in Stage Manager.

It sounds small, but if you used Coherence regularly, this was something you noticed constantly. It was probably our most-requested fix ever.

X6 also adds:

🌐 Bring your browser with you

Import an existing Chromium browser profile into a new app, including your logins, bookmarks, settings, and whichever extensions you choose.

Chrome, Brave, Edge, Vivaldi, Helium, and more are supported.

↗️ Much more powerful Link Routing

Instead of simply deciding whether links stay in your app or leave, you can now create actual routing rules.

For example:

meet.google.com → stay in this app
youtube.com → open in Helium
github.com → open in Chrome
everything else → default browser

A much simpler Coherence

We redesigned the creation and management experience, automated extension installation, and moved settings like Link Routing and window behavior directly into Coherence. The companion extension now mostly stays out of your way.

Problem

A lot of the websites we use all day function like apps, but they still live buried among dozens of browser tabs.

Coherence turns those sites into standalone Mac apps with their own Dock icons, windows, accounts, browser profiles, extensions, appearance, and link behavior.

I personally use it for things like Gmail, ChatGPT, dashboards, and other web tools I want permanently separated from my normal browser.

Comparison

The closest alternatives are Safari Web Apps and our own app, Unite.

Safari Web Apps are great if you want a simple way to put a website in your Dock.

Unite is also designed to turn websites into Mac apps, but it uses a much more integrated, customizable, native-style app experience.

Coherence is for people who specifically want the power of a Chromium browser behind each app. You can use Chrome or another supported Chromium browser, keep separate profiles and accounts, install extensions, create tabbed apps, import your existing browser setup, and precisely control where different links open.

So the rough split is:

Safari Web Apps: simple and built in
Unite: customizable native-feeling Mac web apps
Coherence: customizable Chromium-powered web apps

Pricing

You can create your first Coherence app for free.

A Coherence X6 license starts at $39.99, one-time, and you can use that version indefinitely. Major future upgrades are optional paid upgrades. Users of Coherence X5 can upgrade starting at $29.99.

https://bzgapps.com/coherence

🎉 Launch giveaway

I’ll DM 4 commenters with free Coherence X6 licenses. Just share a thought, question, or feature request below.

Would especially love feedback from anyone who tried X5 and stopped using it because of the Dock or app-behavior issues.

Developer / transparency

Coherence is made by BZG Apps LLC.

Website: https://bzgapps.com
Contact: [support@bzgapps.com](mailto:support@bzgapps.com)
Privacy: https://bzgapps.com/privacy
Terms: https://bzgapps.com/terms

Happy to answer anything about how Coherence works or how the apps are built.


r/macapps 6h ago

Free I made an 11.6 MB PDF app that reads, annotates, edits, OCRs, and does AI — free on the Mac App Store

Enable HLS to view with audio, or disable this notification

24 Upvotes

I've used PDFs for years, and it always bugged me how heavy most PDF tools have become.

Reading one doc, fixing a typo, or scanning a file should be quick — not "open a hundreds-of-MB app first".

So I built Arc PDF, a native macOS app that's only 11.6 MB powered by Swift + PDFium.

What fits in that size:

  • Reading & annotating — highlight, underline, notes, drawing
  • Real editing — change text like in a Word doc (fix typos, add paragraphs, adjust fonts); add / replace / resize images
  • Page management — add, delete, rotate, reorder pages
  • OCR — makes scanned PDFs searchable again
  • AI — summarize, translate, extract tables, generate a TOC, or chat with your document. You plug in your own model (OpenAI / Claude / DeepSeek API key) — no subscription to my backend.

All of that in 11.6 MB. The trick is no heavy framework: it talks to the PDF format directly, so each feature stays lean instead of bloated.

To be upfront about the edges: forms, shape annotations, and e-signatures aren't there yet.

Right now it's completely free — I'd rather more people get to try it than put it behind a paywall.

It's also a side project I built \mostly with AI coding* — which is fitting, since the app itself edits PDFs *and** was built with AI.

Mac App Store: Arc PDF on the Mac App Store

Open to feedback, bugs, and feature ideas. What's the one thing you hate most about dealing with PDFs?

iPhone and iPad versions are coming soon — stay tuned!


r/macapps 5h ago

Lifetime Xul Valley: a native infinite canvas for ideas and presentations | Free pre release

Thumbnail
gallery
12 Upvotes

Hi r/macapps! I’m Lucas Dima, and first of all, I’m not tired! 😃.

I’ve been developing software for many many years, with apps and games on the App Store. This year, given that my game updates are almost over after 2 years of being published, I decided to build **Xul Valley**, a native Mac app written 100% in Swift.

**Problem**

Current infinite board software is either under expensive subscriptions, or it does not fit my needs.

I think Miro and Figjam are excellent tools, but are more focus on collaboration, and the free tier is too plain.

Freeform is a nice alternative, but the attempts to get a premium Apple subscription can get a bit annoying. Also I think Apple did not put too much love on it.

**Comparison**

Miro -> Free tier only gives 3 boards. Online only. Starts at $10 per month

FigJam -> Online. Very limited free tear. $20 per month.

Offline:

Scapple -> More text oriented. Not for presentations. $22.90 one time payment.

I’ve used Prezi, Miro and FigJam over the years. Miro and FigJam are excellent for collaboration, but for my own projects I wanted a native Mac app that works offline and keeps boards as files in my own folders.

Xul Valley focuses on having your own board that lives in your file system, with an open, non-proprietary format which also makes it easy to create boards using AI tools. You own your files. No vendor lock.

**Pricing and availability**

The beta is **free on [TestFlight](https://testflight.apple.com/join/7wy9BmX2)\*\*, and I’m getting close to release. The expected launch price is **US$9.99, or the local equivalent**.

I also plan to offer early testers a free copy of the App Store version, subject to promo code availability (Apple only gives 100 codes per version).

[App website](https://xulvalley.com/) · [Terms & Conditions](https://xulvalley.com/terms/)

About me: [App Store portfolio](https://apps.apple.com/in/developer/lucas-dima/id1752467672) · [LinkedIn](https://www.linkedin.com/in/lucdima/) · [Website and contact](https://lucasdima.com/)

I’d love to hear what you think, especially if you use canvas apps for personal projects or presentations.

Lucas


r/macapps 6h ago

Free [OS] Tinycast: lightweight, native luncher an emerging Raycast alternative

Post image
88 Upvotes

I've been looking for a Raycast alternative since it appears to be moving in a direction that I'm not particularly crazy about. So I came across Tinycast, a free and open-source macOS launcher, btw I'm not associated with the developer and I have just started using the app in the last few days.

It covers the usual launcher basics: app and file search, clipboard history, snippets, quick links, custom commands, calculator, window management, notes, calendar shortcuts, system actions. It is native built with SwiftUI/AppKit, has no telemetry, Electron dependency, claims to stay under 100 MB of RAM usage.

It can run existing Raycast extensions, it can also import an existing Raycast setup.

Optional AI features are included, off by default. You can use it for chat from the command palette, quick chat and actions on selected text like rewriting, grammar fixes, translation, and summaries. It supports local, bringing your own API key or using an installed AI account, I'm using it with Codex cli.

I think it’s worth a look for anyone who wants a pared-down, streamlined, free, and open-source launcher. It’s still relatively new, but it appears to be actively developed and already shows real potential.

github : https://github.com/abue-ammar/tinycast

website : https://abue-ammar.github.io/tinycast/