Releases: srcfl/sourceful-arc-transcriber
v0.1.1 — Merge pull request #3 from srcfl/mira/start-system-permission-request
patch: start-system requests Screen Recording permission instead of bailing
v0.1.0 — Merge pull request #2 from srcfl/mira/start-system-route
minor: URL route transcriber://start-system for system-audio-only recording
v0.0.9 — trigger release build for URL scheme (PR #1 merge)
The minor: URL-scheme commit (d716c2c) landed via PR #1 but the
auto-generated merge commit subject didn't carry a release
prefix, so the CI workflow short-circuited. Empty commit with a
patch: prefix to trip the release pipeline so the URL scheme
ships in a tagged build that the auto-updater can pick up.
v0.0.8 — DMG background at 640×400 (Finder doesn't rescale to fit)
Previous build rendered the background at 1280×800 intending retina
sharpness, but Finder places DMG backgrounds 1 pixel-to-1 point in
the window — so a 1280×800 image in a 640×400 window only showed
its top-left quarter and the "Drag Arc Transcriber to Applications"
headline spilled off the right edge.
Regen at 640×400 so the image fills the window at 1x. Slightly softer
on retina, but correct.
qlmanage -t -s 1280 -o /tmp Resources/dmg-background.svg
sips -z 400 640 /tmp/dmg-background.svg.png --out Resources/dmg-background.png
If the softness bothers us later, swap to a multi-resolution TIFF or
bundle background@2x.png alongside.
v0.0.7 — hdiutil — stage volume contents before `hdiutil create -format UDRW`
hdiutil create -format UDRW requires -srcfolder or -srcdevice
(it can't mint an empty writable image from -size alone). Last
build failed instantly with:
hdiutil: create: -format requires -srcfolder or -srcdevice
Fix: stage the .app + /Applications symlink + .background/ into
build/dmg-staging/ first, then hdiutil create -srcfolder "$STAGE" ... -format UDRW. Same mount → osascript → convert-to-UDZO pipeline
after that.
v0.0.6 — add com.apple.security.device.audio-input entitlement
We have NSMicrophoneUsageDescription, a valid Developer ID signature,
a stapled notarization, and — after switching to the .dmg installer —
a quarantine-clean first launch. On a fresh macOS 15 test,
AVCaptureDevice.requestAccess still answered with .denied without
ever prompting, and Arc Transcriber never appeared in System
Settings → Microphone.
The remaining variable: no explicit com.apple.security.device.audio-input
entitlement. For non-sandboxed hardened-runtime apps this flag wasn't
historically required, but it's what we haven't tried — and on
recent macOS I've seen reports of TCC silently refusing mic
registration without it.
Also logs the authorizationStatus + requestAccess granted value
via NSLog so if this still doesn't work, log show --predicate 'process == "Arc Transcriber"' will tell us exactly where the flow
breaks instead of us guessing.
v0.0.5 — ship signed .dmg installer (fixes fresh-install quarantine)
Browser-downloaded .zip drops com.apple.quarantine onto the
extracted .app, and on recent macOS that attribute can block TCC
from ever prompting for microphone access — observed on a fresh Mac
where the app just answered authorizationStatus = denied without
ever appearing in System Settings → Microphone, and xattr -d
returned "Operation not permitted".
The fix is Apple's canonical install path: ship a signed, notarized,
stapled .dmg with a drag-to-Applications layout. macOS handles
Gatekeeper + quarantine cleanly through that flow, and TCC then
prompts as expected.
Package .dmgworkflow step: stages the .app + an /Applications
symlink,hdiutil creates a UDZO DMG, signs it with the same
Developer ID, notarizes + staples.spctl --assess --type install
verifies.- Release now attaches both the .zip (unchanged — the in-app
auto-updater keeps using it; downloads via URLSession don't pick
up quarantine) and the .dmg (first-time installs). - Renamed the bundle on disk to
Arc Transcriber.appso Finder shows
the right label.CFBundleExecutablestaysTranscriber(SPM
target name). Both the CI workflow and localbuild.shmatch.
v0.0.4 — mic prompt — branch on authorization status, deep-link to Settings
AVCaptureDevice.requestAccess is a no-op once TCC has recorded a
denial for the bundle id — it returns granted=false without a
system prompt, and if the app ever had a stuck "invisible denial"
(LSUIElement race on first launch, Gatekeeper first-run quirk, etc)
the previous alert just told the user to go to Settings → Microphone
and enable us… while the app was not listed in that pane at all.
Now we branch on authorizationStatus up front:
- .authorized → start recording
- .notDetermined → activate + requestAccess (unchanged)
- .denied / restricted → skip requestAccess entirely, show a
richer alert with an "Open Privacy & Security" button that
deep-links to the exact pane via
x-apple.systempreferences:com.apple.preference.security?Privacy_Microphone,
plus thetccutil resetcommand for the escape hatch when the
app isn't listed there either.
v0.0.3 — rename to Arc Transcriber + unmissable mic prompt
Two fixes bundled since both affect what the user sees on first run.
Rename
The app's display name is now "Arc Transcriber" everywhere it's
user-visible (bundle name, window titles, menu items, SF Symbol
accessibility label, alert titles, usage description string). Bundle
id stays io.srcful.transcriber and CFBundleExecutable stays
Transcriber on purpose — keeps existing v0.0.1 installs' TCC and
Keychain grants valid, and lets the auto-updater keep finding them.
Mic prompt disappears on fresh installs
LSUIElement apps have no dock icon, so the system permission dialog
can appear behind other windows on a fresh Mac. If the user doesn't
see it, TCC records a denial without listing the app in System
Settings → Microphone — exactly the symptom I saw reported on a
clean install today. Fix: NSApp.activate(ignoringOtherApps: true)
immediately before AVCaptureDevice.requestAccess, forcing the prompt
to the front.
Info.plist also gains NSHighResolutionCapable=true and a clearer
usage description string ("Arc Transcriber records microphone audio
locally to transcribe meetings and voice notes.").
v0.0.2 — app icon — Sourceful signal orange squircle + cream bolt
Uses the canonical Sourceful bolt-in-squircle mark (straight from
srcful-design-system/public/assets/sourceful-icon.svg) recoloured to
the design system's signal-orange ground with the bolt in cream.
One-ground / one-accent / no-gradient — follows the editorial
identity rules; no HUD / scanline / glow.
- Resources/icon-source.svg: the source-of-truth SVG
- Resources/iconfile.icns: rasterised + packaged iconset (156 KB)
- tools/make-icon.sh: regenerates iconfile.icns from the SVG using
only macOS built-ins (qlmanage + sips + iconutil), no brew deps - Info.plist gains CFBundleIconFile=iconfile
- build.sh + CI workflow copy iconfile.icns into the bundle if present