sign Release build with the sttlab-apps identity, add install README
The app bundle was ad-hoc signed (Xcode's automatic default), so trusting the sttlab-apps cert wouldn't have done anything for Gatekeeper on the outer .app — only the embedded audiotee binary was actually signed with it. Switch the Release config to sign with sttlab-apps too, matching what audiotee already does, so the two documented install paths in README.md (trust the cert, or bypass Gatekeeper per-download) both actually work. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,3 +10,8 @@ DerivedData/
|
|||||||
# compute WER against transcriptor-ai) — large binary media, not source.
|
# compute WER against transcriptor-ai) — large binary media, not source.
|
||||||
# See CLAUDE.md for what's in here and the results obtained from it.
|
# See CLAUDE.md for what's in here and the results obtained from it.
|
||||||
/test/
|
/test/
|
||||||
|
|
||||||
|
# Distribution zips — built locally and uploaded to Gitea releases directly,
|
||||||
|
# not committed (large binary, would bloat the repo; the release is already
|
||||||
|
# the canonical place to find them).
|
||||||
|
*.app.zip
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# transcriptor
|
||||||
|
|
||||||
|
Native macOS app for fully local, no-cloud meeting transcription. Download, unzip, run —
|
||||||
|
the only runtime download is the ASR model itself (see `CLAUDE.md` for how the app is built).
|
||||||
|
|
||||||
|
## Installing from a downloaded release
|
||||||
|
|
||||||
|
Grab `transcriptor-vX.Y.Z.app.zip` from the
|
||||||
|
[releases page](https://gitea.sttlab.eu/stt/transcriptor/releases), unzip it, and drag
|
||||||
|
`transcriptor.app` to `/Applications`.
|
||||||
|
|
||||||
|
The app is signed with a self-signed identity (`sttlab-apps`), not an Apple Developer ID —
|
||||||
|
there's no paid Apple account behind this project. macOS's Gatekeeper doesn't trust that
|
||||||
|
signature by default, so on first launch of a version downloaded from a browser (which
|
||||||
|
macOS marks with a quarantine flag) you'll likely see it refuse to open, or ask to move it to
|
||||||
|
the bin. Pick **one** of the two options below to get past that — you don't need both.
|
||||||
|
|
||||||
|
### Option 1 — Trust the `sttlab-apps` certificate
|
||||||
|
|
||||||
|
This tells your Mac to trust anything signed by this specific certificate going forward, so
|
||||||
|
you won't need to repeat this for future versions of the app (as long as it keeps being signed
|
||||||
|
with the same identity).
|
||||||
|
|
||||||
|
1. Get the certificate: `sttlab-apps.cer` (ask for it, or export it yourself if you have
|
||||||
|
access to the machine it was created on: `security find-certificate -c "sttlab-apps" -p
|
||||||
|
> sttlab-apps.cer`).
|
||||||
|
2. Import it into your login keychain:
|
||||||
|
```bash
|
||||||
|
security import sttlab-apps.cer -k ~/Library/Keychains/login.keychain-db
|
||||||
|
```
|
||||||
|
3. Trust it, but **only** for code signing (not as a general root CA):
|
||||||
|
```bash
|
||||||
|
security add-trusted-cert -r trustRoot -p codeSign \
|
||||||
|
-k ~/Library/Keychains/login.keychain-db sttlab-apps.cer
|
||||||
|
```
|
||||||
|
macOS will prompt for your login password — that's it asking permission to change
|
||||||
|
keychain trust settings, not this command asking for a password directly.
|
||||||
|
4. Open `transcriptor.app` normally (double-click, or `open /Applications/transcriptor.app`).
|
||||||
|
|
||||||
|
### Option 2 — Bypass Gatekeeper for this app only
|
||||||
|
|
||||||
|
No trust changes, no certificate needed — just tells macOS to stop flagging this specific
|
||||||
|
app. You'll need to repeat this for each new version you download (the quarantine flag is
|
||||||
|
set per downloaded file).
|
||||||
|
|
||||||
|
Either:
|
||||||
|
|
||||||
|
- Right-click `transcriptor.app` in Finder → **Open** → **Open** again in the confirmation
|
||||||
|
dialog. (Regular double-click won't offer this the first time; right-click → Open does.)
|
||||||
|
|
||||||
|
Or, from a terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xattr -dr com.apple.quarantine /Applications/transcriptor.app
|
||||||
|
```
|
||||||
|
|
||||||
|
(`-r` because it's a bundle — the quarantine flag can be set on files inside it too, not just
|
||||||
|
the top-level `.app`.)
|
||||||
|
|
||||||
|
Both achieve the same result: the app opens. Option 1 is the better choice if you expect to
|
||||||
|
download future versions and don't want to repeat the bypass each time; Option 2 is faster
|
||||||
|
for a one-off.
|
||||||
@@ -459,7 +459,8 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Manual;
|
||||||
|
CODE_SIGN_IDENTITY = "sttlab-apps";
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
ENABLE_APP_SANDBOX = NO;
|
ENABLE_APP_SANDBOX = NO;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
|
|||||||
Reference in New Issue
Block a user