본문으로 건너뛰기
cccskills
무료GitHub에 공개

release

Prepare screenpipe component releases by updating versions and dependency lock files, running required build checks, and triggering GitHub Actions. Verify build results and release artifacts, then hand public app publication over to a person.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Release the screenpipe monorepo. Bumps versions, triggers GitHub Actions for app, CLI, MCP, and JS packages.

연동 도구GitHub
설치 방법 보기

이럴 때 유용합니다

  • Preparing a desktop app release
  • Checking whether Rust changes require a CLI release
  • Updating MCP versions and checking publication
  • Monitoring builds and verifying updater artifacts

포함된 파일(1)

  • SKILL.md9.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Screenpipe Monorepo Release Skill

Automate releasing all components of the screenpipe monorepo.

Components & Versions

ComponentVersion FileCurrent PatternWorkflow
Desktop Appapps/screenpipe-app-tauri/src-tauri/Cargo.tomlversion = "X.Y.Z"release-app.yml
CLI/ServerCargo.toml (workspace.package)version = "0.2.X"release-cli.yml
MCPpackages/screenpipe-mcp/package.json and server.json (2 fields)"version": "X.Y.Z"release-mcp.yml

MCP has no commit-prefix trigger — unlike the app, release-mcp.yml fires only on an mcp-v* tag or workflow_dispatch, and it refuses to run when package.json's version is already on npm (npm cannot overwrite a published version, so the run would publish nothing). Follow packages/screenpipe-mcp/RELEASE.md — it has the exact commands and the post-publish checks.

When to Release What

Always release CLI when there are changes under crates/. Every shipped Rust crate lives there, and the screenpipe CLI binary is built from crates/screenpipe-engine ([[bin]] name = "screenpipe"), so it links whatever its dependency graph pulls in. That includes screenpipe-a11y and screenpipe-semantic, which are easy to overlook because they are not named "core" or "server".

App-only release is fine when changes are only in:

  • apps/screenpipe-app-tauri/ (UI/frontend changes)
  • If the release includes new or changed #[tauri::command] handlers: from apps/screenpipe-app-tauri/, run bun run bindings:generate and verify bun run bindings:check before tagging

To check what changed since last CLI release:

# Find last CLI release commit
git log --oneline --all | grep -E "CLI to v" | head -1

# Check if core code changed since then
git diff <COMMIT>..HEAD --stat -- crates/

An empty diff here is only trustworthy if the pathspec exists. git diff -- <path> prints nothing and exits 0 for a path that is not in the tree, so a stale pathspec reads exactly like "nothing changed" and you ship an app-only release that drops real engine fixes. This skill previously listed top-level screenpipe-core/, screenpipe-vision/, screenpipe-server/ and friends, all of which had moved under crates/, so the check silently passed on every release. Confirm the path resolves before believing the result:

ls -d crates/ || echo "PATHSPEC STALE, fix this skill before trusting the diff"

Release Workflow

1. Check Current Versions

echo "=== App ===" && grep '^version' apps/screenpipe-app-tauri/src-tauri/Cargo.toml | head -1
echo "=== CLI ===" && grep '^version' Cargo.toml | head -1
echo "=== MCP ===" && grep '"version"' packages/screenpipe-mcp/package.json | head -1

2. Bump Version

  • App: edit apps/screenpipe-app-tauri/src-tauri/Cargo.toml and bump the version = "X.Y.Z" line at the top of [package].
  • CLI: edit root Cargo.toml and bump version under [workspace.package].

3. Regenerate ALL Cargo.lock files (MANDATORY after any bump)

./scripts/regenerate-locks.sh

The repo has several independent cargo workspaces (root, app, SDK, SDK examples), each with a tracked Cargo.lock recording the shared crates' versions. Bumping only Cargo.toml leaves the other locks stale and breaks cargo test --locked on main (happened with the v0.4.29 CLI bump — sdk.yml went red until the locks were fixed). Commit the regenerated locks together with the bump. style.yml runs ./scripts/regenerate-locks.sh --check on every push and fails if any lock is stale.

Before dispatching a desktop release, compile the actual app binary through the guarded native build queue. A raw cargo check from a clean worktree is not a valid substitute: the Tauri build script requires sidecars such as bun-aarch64-apple-darwin, which scripts/pre_build.js prepares. Install the frontend dependencies first so the guarded build can run its prebuild and frontend/type checks before compiling the app:

cd apps/screenpipe-app-tauri
bun install --frozen-lockfile
bun run build:tauri:dev

The build may regenerate Tauri schemas. Restore build-only schema drift before staging, then require the release commit to contain only the intended version files.

4. Commit, Push, and Dispatch Exact SHA

git add -A && git commit -m "Bump app to vX.Y.Z" && git pull --rebase && git push

BUMP_SHA=$(git rev-parse HEAD)
gh workflow run release-app.yml \
  --ref main \
  -f commit_hash="$BUMP_SHA" \
  -f version="X.Y.Z" \
  -f needs_testing=false \
  -f force_github_runners=false

release-app.yml is currently workflow_dispatch only. A bump push does not start it. Dispatch it once with the exact pushed commit and version inputs; its workflow builds, signs, notarizes, and uploads immutable versioned artifacts. It does not publish updater pointers or create the public GitHub release.

Before dispatching, verify the remote main SHA still matches BUMP_SHA. After dispatching, read the run back and require its headSha to match. Never dispatch a second app run for the same version unless the first run failed and the retry is intentional.

Enterprise is separate and manual. After the bump commit is on main, dispatch release-enterprise.yml once and verify that its run is pinned to the bump commit before treating Enterprise artifacts as prepared.

5. Monitor Build Status

# Get latest run ID
gh run list --workflow=release-app.yml --limit=1

# Check status
gh run view <RUN_ID> --json status,conclusion,jobs --jq '{status: .status, conclusion: .conclusion, jobs: [.jobs[] | {name: (.name | split(",")[0]), status: .status, conclusion: .conclusion}]}'

6. Test the Draft Release

  • Download from https://screenpi.pe (requires purchase token)
  • Test on macOS and Windows
  • Verify updater artifacts exist (.tar.gz, .sig files)

7. Hand Off Public Publication

After testing and artifact verification, stop at the authenticated releases control in the website admin UI. Public updater pointers, Enterprise publication state, GitHub tags/releases, and subscriber notification are human-only actions. AI agents must not operate the admin UI, call its publication endpoint, approve the protected environment, or attempt publication with a commit-message prefix.

Quick Release (App Only)

# 1. Bump version in apps/screenpipe-app-tauri/src-tauri/Cargo.toml
# 2. Regenerate every tracked Cargo.lock (skipping this breaks `cargo test --locked` in CI)
./scripts/regenerate-locks.sh

# 3. Commit and push the version bump
git add -A && git commit -m "Bump app to vX.Y.Z" && git push

# 4. Dispatch the exact pushed commit once, then monitor
BUMP_SHA=$(git rev-parse HEAD)
gh workflow run release-app.yml --ref main \
  -f commit_hash="$BUMP_SHA" -f version="X.Y.Z" \
  -f needs_testing=false -f force_github_runners=false
gh run list --workflow=release-app.yml --limit=1

Build Status Format

Build <RUN_ID>:
| Platform | Status |
|----------|--------|
| macOS aarch64 | ✅ success / 🔄 in_progress / ❌ failure |
| macOS x86_64 | ✅ success / 🔄 in_progress / ❌ failure |
| Windows | ✅ success / 🔄 in_progress / ❌ failure |

Troubleshooting

Build Failed

gh run view <RUN_ID> --log-failed 2>&1 | tail -100

CI red: "cannot update the lock file ... because --locked was passed"

A version bump was pushed without regenerating every tracked Cargo.lock.

./scripts/regenerate-locks.sh && git add -A && git commit -m "fix: regenerate stale Cargo.lock files"

Cancel Running Build

gh run cancel <RUN_ID>

Re-run Failed Jobs

gh run rerun <RUN_ID> --failed

Missing Updater Artifacts (.tar.gz, .sig)

The CI copies tauri.prod.conf.json to tauri.conf.json before building. If artifacts are missing:

  1. Check tauri.prod.conf.json has "createUpdaterArtifacts": true
  2. Check the "Use production config" step ran successfully

Configuration

Dev vs Prod Configs

  • tauri.conf.json - Dev config (identifier: screenpi.pe.dev)
  • tauri.prod.conf.json - Prod config (identifier: screenpi.pe, updater enabled)

CI automatically uses prod config for releases by copying it before build.

Trigger & Publication Behavior

  • release-app.yml is workflow_dispatch only → consumer artifact build/upload from the explicit commit/version inputs
  • release-enterprise.yml is workflow_dispatch only → Enterprise artifact build/upload
  • Public consumer and Enterprise publication remains a human-only admin-dashboard action after artifact verification
  • A bump push alone starts neither release workflow; dispatch each exactly once and verify both run SHAs

Notes

  • Linux desktop app is disabled (bundling issues)
  • App builds take ~25-35 minutes
  • CLI builds take ~15-20 minutes
  • Always pull before push to avoid conflicts
  • Updater artifacts: macOS uses .tar.gz/.sig, Windows uses .nsis.zip/.sig

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Develop and test Windows-specific Screenpipe changes on a disposable Azure virtual machine. The workflow verifies native behavior, preserves logs and desktop video, and handles branch and pull request delivery when authorized.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Test Windows-specific capture and permission behavior
  • Investigate compiler, process, or service issues
  • Preserve desktop video and logs for a pull request
screenpipe/screenpipe2.2만2026년 10월 18일 업데이트

Create charts, dashboards, scorecards, and styled summaries as standalone HTML reports for the screenpipe viewer. Keep styles, scripts, and images inside the file so the report renders in a sandbox with no network access.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Create a visual report of daily work time
  • Present key metrics in a dashboard
  • Summarize results with charts and scorecards
screenpipe/screenpipe2.2만2026년 10월 18일 업데이트

Use Screenpipe’s local REST API, an interface for programmatic requests, to search screen and meeting history, review app activity and active time, retrieve synced-device records, export recordings, and rerun audio transcription.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing daily app use and active screen time
  • Finding decisions in recorded meetings
  • Searching history from a synced device
screenpipe/screenpipe2.2만2026년 10월 18일 업데이트

Search Screenpipe recordings, screen text, audio transcripts, and synced-device history through its local API. Use the evidence to review activity, find meeting details, and inspect saved workflows, including recorded steps that can inform automation.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Review activity from a specific day or time range
  • Find recorded meeting remarks and screen text
  • Search work history on another synced device
screenpipe/screenpipe2.2만2026년 10월 18일 업데이트

Turn a recorded software failure into a draft bug report with timestamps, reproduction steps, expected and actual behavior, and relevant evidence. Separate visible symptoms from possible causes and remove sensitive details from shareable evidence.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Drafting a bug report from recorded activity
  • Recovering steps taken before and after a failure
  • Comparing expected behavior with observed results
screenpipe/screenpipe2.2만2026년 10월 18일 업데이트

Find past discussions across existing screenpipe, Codex, Claude, Cursor, and Gemini CLI chats by title, workspace, or message text. With explicit authorization, send follow-up work to a specific supported chat; Gemini CLI supports search only.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Finding a conversation using a remembered phrase
  • Recalling what an agent previously said
  • Sending follow-up work to a specific chat
screenpipe/screenpipe2.2만2026년 10월 18일 업데이트

screenpipe의 스킬 모두 보기

이 스킬의 문제 신고