Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ jobs:
echo "Reusing successful CI run $run_id for $GITHUB_SHA."

legacy-release:
if: github.ref_name == 'v0.2.0'
# Explicit, version-scoped ad-hoc distribution; never weaken the protected production gate.
if: github.ref_name == 'v0.2.0' || github.ref_name == 'v0.3.0'
needs: verify-ci
runs-on: xcode-27
timeout-minutes: 20
Expand All @@ -64,10 +65,15 @@ jobs:
- name: Verify legacy release artifact
run: |
test -f build.noindex/Cutmark.dmg
app=build.noindex/Cutmark.app
plist="$app/Contents/Info.plist"
test "$(/usr/libexec/PlistBuddy -c 'Print :ReleaseTag' "$plist")" = "$GITHUB_REF_NAME"
test "$(/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' "$plist")" = "${GITHUB_REF_NAME#v}"
codesign --display --verbose=4 "$app" 2>&1 | grep -F 'Signature=adhoc'
codesign --verify --deep --strict build.noindex/Cutmark.app
hdiutil verify -quiet build.noindex/Cutmark.dmg
codesign --verify build.noindex/Cutmark.dmg
shasum -a 256 build.noindex/Cutmark.dmg
(cd build.noindex && shasum -a 256 Cutmark.dmg > SHA256SUMS && shasum -a 256 -c SHA256SUMS)
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -76,12 +82,13 @@ jobs:
test -f "$notes"
gh release create "${GITHUB_REF_NAME}" \
build.noindex/Cutmark.dmg \
build.noindex/SHA256SUMS \
--repo "${GITHUB_REPOSITORY}" \
--title "Cutmark ${GITHUB_REF_NAME#v}" \
--notes-file "$notes"

release:
if: github.ref_name != 'v0.2.0'
if: github.ref_name != 'v0.2.0' && github.ref_name != 'v0.3.0'
needs: verify-ci
runs-on: xcode-27
timeout-minutes: 90
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The first-run setup can guide you through missing dependencies. No AI provider i

Download `Cutmark.dmg` from the latest GitHub release, open it, and copy `Cutmark.app` to Applications.

The current latest public release, Cutmark 0.2.0, uses the same ad-hoc signing channel as 0.1.1 and is not notarized. On first launch, macOS may require **System Settings → Privacy & Security → Open Anyway**. The repository also has a protected Developer ID + Apple notarization path for future production-signed releases once Apple credentials are configured.
Cutmark 0.3.0 uses an explicitly authorized ad-hoc signing channel, like 0.2.0, and is **not notarized**. On first launch, macOS may require **System Settings → Privacy & Security → Open Anyway**. The repository retains a separate, protected Developer ID + Apple notarization path for production-signed releases once Apple credentials are configured.

## Build from source

Expand Down
34 changes: 34 additions & 0 deletions docs/releases/v0.3.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Cutmark 0.3.0

Cutmark 0.3.0 adds a visual, non-destructive timeline editor alongside more flexible screen recording and a faster path from capture to review.

## Recording

- **Three capture modes:** record camera, screen, or camera and screen together. Screen-only mode does not create a camera take.
- **Source selection:** choose a display or an application window for screen capture, with fail-closed behavior if a selected window disappears.
- **Recording controls:** keep the pre-record button fixed at the bottom center while the active recording controls can be moved.
- **Capture recovery:** preserve per-take recording claims and recover playable camera or screen media after interruption when possible.

## Visual timeline editing

- **Real cut preview:** review actual selected footage in a larger editing workspace with a filmstrip, audio waveform, time ruler, and draggable playhead.
- **Non-destructive operations:** trim, re-extend to the original source range, split, reorder, duplicate, remove and undo without altering the original recording.
- **Navigation:** scrub from the ruler or media lanes, zoom to fit and adjust timeline zoom. Extra workspace after the clip does not add blank seconds to the exported edit.
- **Screen recording compatibility:** handle sparse or variable-frame-rate screen captures using available source metadata instead of rejecting a playable clip solely because its minimum frame duration is unusual.
- **MCP editing:** support reviewed timeline plans, including trim extension, through the Cutmark integration.

## Review and updates

- **After-stop preview:** once a take is saved, a small lower-left preview offers playback, review, and an Edit action without duplicating the recording.
- **Check for Updates:** a visible manual command in both the Cutmark app menu and the in-app menu reports whether an update is available or verification failed; checking does not automatically install an update.

## Distribution and compatibility

- **Platform:** macOS 15 or later on Apple silicon. The iPhone companion is not part of this release.
- **Signing:** this release intentionally uses the existing **ad-hoc signed, non-notarized** distribution channel. The separate Developer ID/notarization workflow remains fail-closed for other future release tags.
- **macOS Gatekeeper:** first launch may require **System Settings → Privacy & Security → Open Anyway**.
- **Validation:** CI tests/build and a manual Cutmark Smoke R5 check passed before merging the editor changes. Not every camera, microphone, window, or multi-monitor hardware combination was exercised.

## Install

Download `Cutmark.dmg`, verify its SHA-256 against `SHA256SUMS`, open the disk image, and drag `Cutmark.app` into Applications. Updating may require granting camera, microphone, or screen-recording permission again because this release is signed ad-hoc rather than with a stable Apple Developer ID.
7 changes: 4 additions & 3 deletions docs/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ CI result rather than repeating the entire test suite. A GitHub release is a dis
not the place to bypass the reviewed source changes or validation. Do not create a tag to test
an unfinished candidate.

The historical `v0.2.0` tag alone uses the legacy ad-hoc release job. All later versions use the
protected production signing and notarization gate described below; an ad-hoc test build is not
a substitute for the required release credentials.
Only `v0.2.0` and the expressly authorized `v0.3.0` use the legacy ad-hoc distribution job.
Neither is Apple notarized. All other release tags use the protected production signing and
notarization gate described below. An ad-hoc smoke build is not a substitute for a versioned
release artifact, and this exception must not automatically extend to future versions.

## GitHub environment

Expand Down
2 changes: 1 addition & 1 deletion scripts/version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ cd "$(dirname "$0")/.." || exit 0
git rev-parse --git-dir >/dev/null 2>&1 || exit 0
release="${CUTMARK_RELEASE:-$(git tag --points-at HEAD --list 'v[0-9]*.[0-9]*.[0-9]*' | sort -V | tail -1)}"
version="${release#v}"
if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then version="0.2.0"; fi
if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then version="0.3.0"; fi
echo "$version $(git rev-list --count HEAD)"
Loading