From f77b9f4c98fd01a63ce882d190864b174295a29f Mon Sep 17 00:00:00 2001 From: SuperDooper <37051355+superdooper86@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:41:01 +0200 Subject: [PATCH 1/4] Clean up README by removing unnecessary sections Removed sections related to Recall.ai, demo, table of contents, project description, features, local development, and prerequisites for releasing a new version. --- README.md | 105 ------------------------------------------------------ 1 file changed, 105 deletions(-) diff --git a/README.md b/README.md index 128aa1f..3acad5d 100644 --- a/README.md +++ b/README.md @@ -11,90 +11,6 @@

-## Recall.ai - Meeting Transcription API - -Meetingnotes runs locally, capturing two streams: system & mic. - -If you’re looking for a transcription API for meetings, consider checking out [Recall.ai]( -https://www.recall.ai?utm_source=github&utm_medium=sponsorship&utm_campaign=owengretzinger+meetingnotes), an API that works with Zoom, Google Meet, Microsoft Teams, and more. Recall.ai diarizes by pulling the speaker data and separate audio streams from the meeting platforms, which means 100% accurate speaker diarization with actual speaker names. - -## Demo - -https://github.com/user-attachments/assets/cadd4504-e9d9-4ccd-874d-41d8a84f4c9d - - - ## Features Implemented: @@ -128,32 +44,11 @@ Later: - AI chat for asking questions about a meeting - Integrations for email, Slack, Notion, etc. -## Local Development - -Open the project in Xcode. Command+R to build it and run it. - ## Releasing a New Version Production releases are Developer ID signed, notarized by Apple, published to GitHub Releases, and signed for Sparkle auto-updates. -### Prerequisites - -- Apple Developer Program membership -- A Developer ID Application certificate exported from Keychain Access as a - password-protected `.p12` -- An Apple ID app-specific password for notarization -- GitHub CLI: `brew install gh` - -Configure the Apple release secrets once: - -```bash -./scripts/configure_github_release_secrets.sh -``` - -The Sparkle private key is stored only as the `SPARKLE_PRIVATE_KEY` Actions -secret. Its matching public key is committed in `meetingnotes/Info.plist`. - ### Release Process 1. **Update the version number:** -- 2.47.3 From 6f60933930e435aaad18117a00236e01a9fb79f9 Mon Sep 17 00:00:00 2001 From: SuperDooper <37051355+superdooper86@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:41:40 +0200 Subject: [PATCH 2/4] Remove MacOS download link from README Removed the download link for MacOS 14 from the README. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3acad5d..2aa942a 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@

The Free, Open-Source AI Notetaker for Busy Engineers -
- Download for MacOS 14+

-- 2.47.3 From 5f128fd0cb277fbf8ba6651a855bbf160d2b7b73 Mon Sep 17 00:00:00 2001 From: SuperDooper <37051355+superdooper86@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:42:03 +0200 Subject: [PATCH 3/4] Delete CONTRIBUTING.md file Removed the entire contributing guide for the Meetingnotes app. --- CONTRIBUTING.md | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0790e37..8b13789 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,39 +1 @@ -# Contributing to Meetingnotes -I anticipate the main users of this app to be technical, given the need to bring your own API key. - -As you use the app, you will come across bugs and have desires for new features. It is my hope that you will then be eager to contribute to improve the app. - -Since you're here, maybe that's you! Please take a moment to read this guide before making a pull request. - -Rules: - -- Be respectful -- Open an issue first for major changes -- Use conventional commits - ---- - -## How to Contribute - -1. **Fork** the repo -2. **Create a branch**: - `git checkout -b my-feature` -3. **Commit your changes**: - `git commit -m "feat: cool feature"` -4. **Push to your fork**: - `git push origin my-feature` -5. **Open a pull request** - ---- - -## Contributor License Notice - -By submitting a pull request or otherwise contributing to this project, you agree to the following: - -- You license your contribution under the same license as this project (LGPL-3.0). -- You grant the me the right to relicense your contribution, including under proprietary or commercial licenses in the future. - -This helps keep the project open-source while also allowing for commercial options down the road, such as a hosted version where users could pay through the app instead of using their own API key. - -If you’re not comfortable with this, please feel free to contact me or open an issue to discuss alternatives. -- 2.47.3 From f43320aa0ea4567e2b9d38c4f1ea40c931f43126 Mon Sep 17 00:00:00 2001 From: superdooper86 Date: Wed, 15 Jul 2026 16:09:43 +0200 Subject: [PATCH 4/4] ci: make notarization polling reliable --- .github/workflows/release.yml | 33 ++++++++-------------------- scripts/package_release.sh | 41 ++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b653b6..6d78c4d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: APPLE_APP_PASSWORD: ${{ secrets.APPLE_APP_PASSWORD }} SPARKLE_PRIVATE_KEY: ${{ secrets.SPARKLE_PRIVATE_KEY }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 with: fetch-depth: 0 @@ -42,30 +42,22 @@ jobs: done - name: Import Developer ID certificate - env: - APPLE_CERTIFICATE_P12: ${{ secrets.APPLE_CERTIFICATE_P12 }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - KEYCHAIN_PASSWORD: ${{ github.run_id }}-${{ github.run_attempt }} + uses: apple-actions/import-codesign-certs@v7 + with: + p12-file-base64: ${{ secrets.APPLE_CERTIFICATE_P12 }} + p12-password: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + + - name: Locate Developer ID identity run: | - certificate_path="$RUNNER_TEMP/developer-id.p12" - keychain_path="$RUNNER_TEMP/release-signing.keychain-db" - echo -n "$APPLE_CERTIFICATE_P12" | base64 --decode > "$certificate_path" - security create-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path" - security set-keychain-settings -lut 21600 "$keychain_path" - security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$keychain_path" - security import "$certificate_path" -P "$APPLE_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k "$keychain_path" - security list-keychain -d user -s "$keychain_path" - security default-keychain -d user -s "$keychain_path" - security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" "$keychain_path" - signing_identity=$(security find-identity -v -p codesigning "$keychain_path" | awk -F '"' '/Developer ID Application/{print $2; exit}') + signing_identity=$(security find-identity -v -p codesigning | awk -F '"' '/Developer ID Application/{print $2; exit}') if [[ -z "$signing_identity" ]]; then echo "The .p12 does not contain a Developer ID Application identity" >&2 exit 1 fi echo "SIGNING_IDENTITY=$signing_identity" >> "$GITHUB_ENV" - echo "RELEASE_KEYCHAIN=$keychain_path" >> "$GITHUB_ENV" - name: Build, sign, notarize, and create appcast + timeout-minutes: 110 run: scripts/package_release.sh - name: Create GitHub release @@ -83,10 +75,3 @@ jobs: --target "$GITHUB_SHA" \ --title "Meetingnotes $VERSION" \ --generate-notes - - - name: Remove signing keychain - if: always() - run: | - if [[ -n "${RELEASE_KEYCHAIN:-}" ]]; then - security delete-keychain "$RELEASE_KEYCHAIN" || true - fi diff --git a/scripts/package_release.sh b/scripts/package_release.sh index 6b084ea..7470a06 100755 --- a/scripts/package_release.sh +++ b/scripts/package_release.sh @@ -86,7 +86,46 @@ xcrun notarytool submit "$PRE_NOTARY_ZIP" \ --apple-id "$APPLE_ID" \ --team-id "$APPLE_TEAM_ID" \ --password "$APPLE_APP_PASSWORD" \ - --wait + --output-format json > "$BUILD_ROOT/notary-submission.json" + +SUBMISSION_ID=$(plutil -extract id raw -o - "$BUILD_ROOT/notary-submission.json") +echo "Notarization submitted: $SUBMISSION_ID" + +NOTARY_STATUS="In Progress" +for attempt in {1..180}; do + xcrun notarytool info "$SUBMISSION_ID" \ + --apple-id "$APPLE_ID" \ + --team-id "$APPLE_TEAM_ID" \ + --password "$APPLE_APP_PASSWORD" \ + --output-format json > "$BUILD_ROOT/notary-status.json" + NOTARY_STATUS=$(plutil -extract status raw -o - "$BUILD_ROOT/notary-status.json") + echo "Notarization status ($attempt/180): $NOTARY_STATUS" + + case "$NOTARY_STATUS" in + Accepted) + break + ;; + Invalid|Rejected) + xcrun notarytool log "$SUBMISSION_ID" \ + --apple-id "$APPLE_ID" \ + --team-id "$APPLE_TEAM_ID" \ + --password "$APPLE_APP_PASSWORD" || true + exit 1 + ;; + "In Progress") + sleep 30 + ;; + *) + echo "Unexpected notarization status: $NOTARY_STATUS" >&2 + exit 1 + ;; + esac +done + +if [[ "$NOTARY_STATUS" != "Accepted" ]]; then + echo "Notarization did not finish within 90 minutes: $SUBMISSION_ID" >&2 + exit 1 +fi xcrun stapler staple "$APP_PATH" xcrun stapler validate "$APP_PATH" -- 2.47.3