diff --git a/.changes/README.md b/.changes/README.md
deleted file mode 100644
index 3ebaa15..0000000
--- a/.changes/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Changes
-
-When a change requires a version bump, add a markdown file to this directory.
-
-## File format
-
-```md
----
-"claude-prism-desktop": minor
-"@claude-prism/desktop": minor
----
-
-Brief description of the change (included in the changelog)
-```
-
-Bump types: `major`, `minor`, `patch`
diff --git a/.changes/config.json b/.changes/config.json
deleted file mode 100644
index 864f4d5..0000000
--- a/.changes/config.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "gitSiteUrl": "https://github.com/delibae/claude-prism",
- "changeTags": {
- "feat": "New Features",
- "fix": "Bug Fixes",
- "perf": "Performance",
- "refactor": "Refactoring",
- "chore": "Maintenance"
- },
- "pkgManagers": {
- "rust": {
- "version": true,
- "publish": true,
- "publishCommand": "echo 'skip rust publish'"
- },
- "javascript": {
- "version": true,
- "publish": true,
- "publishCommand": "echo 'skip js publish'"
- }
- },
- "packages": {
- "claude-prism-desktop": {
- "path": "./apps/desktop/src-tauri",
- "manager": "rust",
- "version": true
- },
- "@claude-prism/desktop": {
- "path": "./apps/desktop",
- "manager": "javascript",
- "version": true,
- "dependencies": ["claude-prism-desktop"],
- "postversion": "node -e \"const fs=require('fs');const p='src-tauri/tauri.conf.json';const c=JSON.parse(fs.readFileSync(p));const pkg=JSON.parse(fs.readFileSync('package.json'));c.version=pkg.version;fs.writeFileSync(p,JSON.stringify(c,null,2)+String.fromCharCode(10))\""
- },
- "@claude-prism/root": {
- "path": ".",
- "manager": "javascript",
- "version": true,
- "dependencies": ["@claude-prism/desktop"]
- }
- }
-}
diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml
index 337c6e6..951f4cb 100644
--- a/.github/workflows/build-desktop.yml
+++ b/.github/workflows/build-desktop.yml
@@ -179,7 +179,6 @@ jobs:
args: --target ${{ matrix.target }} ${{ contains(matrix.label, 'macos') && steps.signing.outputs.available != 'true' && '--no-sign' || '' }} ${{ contains(matrix.label, 'macos') && steps.signing.outputs.available == 'true' && '--skip-stapling' || '' }}
tagName: ${{ github.ref_name }}
releaseName: "ClaudePrism ${{ github.ref_name }}"
- releaseBody: "Release is being built..."
releaseDraft: false
prerelease: false
@@ -262,148 +261,47 @@ jobs:
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
+ permissions:
+ contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- - name: Generate changelog and update release
+ - name: Update release notes with auto-generated changelog
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
- TAG="${GITHUB_REF_NAME}"
- VERSION="${TAG#v}"
- PREV_TAG=$(git tag --sort=-v:refname | grep '^v' | sed -n '2p' || true)
- REPO="${{ github.repository }}"
- ICON_URL="https://raw.githubusercontent.com/${REPO}/main/apps/desktop/src-tauri/icons/icon.png"
+ gh release edit "$GITHUB_REF_NAME" \
+ --repo "${{ github.repository }}" \
+ --generate-notes
- # Build categorized changelog
- FEAT="" FIX="" CHORE="" OTHER=""
- if [ -n "$PREV_TAG" ]; then
- while IFS= read -r line; do
- msg="${line#- }"
- case "$msg" in
- feat:*|feat\(*) FEAT="${FEAT}\n- ${msg}" ;;
- fix:*|fix\(*) FIX="${FIX}\n- ${msg}" ;;
- chore:*|chore\(*|docs:*|docs\(*|ci:*|ci\(*|build:*|build\(*) CHORE="${CHORE}\n- ${msg}" ;;
- *) OTHER="${OTHER}\n- ${msg}" ;;
- esac
- done < <(git log --pretty=format:"- %s" "$PREV_TAG".."$TAG" --no-merges 2>/dev/null)
- COMPARE_URL="https://github.com/${REPO}/compare/${PREV_TAG}...${TAG}"
- fi
-
- CHANGELOG=""
- if [ -n "$FEAT" ]; then
- CHANGELOG="${CHANGELOG}#### New Features\n${FEAT}\n\n"
- fi
- if [ -n "$FIX" ]; then
- CHANGELOG="${CHANGELOG}#### Bug Fixes\n${FIX}\n\n"
- fi
- if [ -n "$OTHER" ]; then
- CHANGELOG="${CHANGELOG}#### Other Changes\n${OTHER}\n\n"
- fi
- if [ -n "$CHORE" ]; then
- CHANGELOG="${CHANGELOG}Maintenance
\n\n${CHORE}\n
"
- else
- echo "**${name}**"
- fi
- done | tr '\n' ' ')
- fi
- if [ -z "$CONTRIBUTORS" ]; then
- CONTRIBUTORS="View all contributors"
- fi
-
- # Build release body
- cat > release-body.md << BODY_EOF
-
-
-
- ${CONTRIBUTORS} -
- - --- - -- $([ -n "$PREV_TAG" ] && echo "Full Changelog (${PREV_TAG}...${TAG})" || echo "Initial Release") -
- BODY_EOF - - gh release edit "$TAG" \ - --repo "${REPO}" \ - --notes-file release-body.md - - - name: Update Homebrew Cask SHA256 + - name: Update Homebrew Cask env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} run: | TAG="${GITHUB_REF_NAME}" VERSION="${TAG#v}" + TAP_REPO="delibae/homebrew-claude-prism" + CASK_PATH="Casks/claude-prism.rb" - # Download DMG files gh release download "$TAG" \ --repo "${{ github.repository }}" \ --pattern "*.dmg" \ --dir /tmp/dmg - # Calculate SHA256 SHA_ARM64=$(sha256sum /tmp/dmg/ClaudePrism_${VERSION}_aarch64.dmg | awk '{print $1}') - echo "ARM64 SHA256: $SHA_ARM64" - # Update Cask file - CASK_FILE="homebrew/Casks/claude-prism.rb" - sed -i "s/version \".*\"/version \"${VERSION}\"/" "$CASK_FILE" - sed -i "s/sha256 \".*\"/sha256 \"${SHA_ARM64}\"/" "$CASK_FILE" + # Fetch current cask file, update version and sha256, push back + gh api "repos/${TAP_REPO}/contents/${CASK_PATH}" --jq '.content' | base64 -d > /tmp/cask.rb + FILE_SHA=$(gh api "repos/${TAP_REPO}/contents/${CASK_PATH}" --jq '.sha') - # Commit and push - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add "$CASK_FILE" - git diff --cached --quiet && echo "No changes to commit" && exit 0 - git commit -m "chore: update Homebrew Cask to ${TAG}" - git push origin HEAD:main + sed -i "s/version \".*\"/version \"${VERSION}\"/" /tmp/cask.rb + sed -i "s/sha256 \".*\"/sha256 \"${SHA_ARM64}\"/" /tmp/cask.rb + + gh api -X PUT "repos/${TAP_REPO}/contents/${CASK_PATH}" \ + -f message="chore: update cask to v${VERSION}" \ + -f content="$(base64 -w0 /tmp/cask.rb)" \ + -f sha="$FILE_SHA" diff --git a/.github/workflows/covector-version-or-publish.yml b/.github/workflows/covector-version-or-publish.yml deleted file mode 100644 index 60c19e4..0000000 --- a/.github/workflows/covector-version-or-publish.yml +++ /dev/null @@ -1,89 +0,0 @@ -name: Covector Version or Publish - -on: - push: - branches: - - main - -permissions: - contents: write - pull-requests: write - actions: write - -jobs: - version-or-publish: - runs-on: ubuntu-latest - timeout-minutes: 10 - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: pnpm - - - name: Install dependencies - run: pnpm install - - - name: Configure git - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - - name: Covector version or publish - uses: jbolda/covector/packages/action@covector-v0 - id: covector - with: - token: ${{ secrets.GITHUB_TOKEN }} - command: version-or-publish - createRelease: true - - - name: Create unified release tag and trigger build - if: steps.covector.outputs.commandRan == 'publish' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - # Extract version from root package.json - VERSION=$(node -p "require('./package.json').version") - TAG="v${VERSION}" - - # Create tag if it doesn't already exist - if ! git rev-parse "$TAG" >/dev/null 2>&1; then - echo "Creating unified tag: $TAG" - git tag "$TAG" - git push origin "$TAG" - else - echo "Tag $TAG already exists" - fi - - # Trigger build workflow (GITHUB_TOKEN pushes don't trigger other workflows) - echo "Triggering Build Desktop workflow for $TAG" - gh workflow run "Build Desktop" --ref "$TAG" - - - name: Sync Cargo.lock - if: steps.covector.outputs.commandRan == 'version' - run: | - cd apps/desktop/src-tauri - cargo generate-lockfile - - - name: Create version bump PR - if: steps.covector.outputs.commandRan == 'version' - uses: peter-evans/create-pull-request@v7 - with: - title: "chore: version bump" - commit-message: "chore: version bump" - labels: version - branch: covector/version-bump - body: | - ## Version Bump - - This PR was auto-generated based on `.changes/` files. - Merging will create a new version tag and trigger a release build. diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 33758a9..189955c 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@claude-prism/desktop", - "version": "0.5.4", + "version": "1.0.0", "private": true, "type": "module", "scripts": { diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index 7de8952..9cefed5 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "claude-prism-desktop" -version = "0.5.4" +version = "1.0.0" description = "AI-powered LaTeX writing workspace" edition = "2021" diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 92daf76..78dac7e 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/nicegui-unofficial/nicegui-tauri-template/main/src-tauri/tauri.conf-v2-schema.json", "identifier": "com.claude-prism.desktop", "productName": "ClaudePrism", - "version": "0.5.4", + "version": "1.0.0", "build": { "beforeDevCommand": "pnpm dev", "beforeBuildCommand": "pnpm build", diff --git a/homebrew/Casks/claude-prism.rb b/homebrew/Casks/claude-prism.rb deleted file mode 100644 index bcc6a43..0000000 --- a/homebrew/Casks/claude-prism.rb +++ /dev/null @@ -1,23 +0,0 @@ -cask "claude-prism" do - version "0.5.0" - - sha256 "" - url "https://github.com/delibae/claude-prism/releases/download/v#{version}/ClaudePrism_#{version}_aarch64.dmg" - - depends_on arch: :arm64 - - name "ClaudePrism" - desc "Desktop app for Claude-powered academic research workflows" - homepage "https://github.com/delibae/claude-prism" - - depends_on macos: ">= :big_sur" - - app "ClaudePrism.app" - - zap trash: [ - "~/Library/Application Support/com.claude-prism.desktop", - "~/Library/Caches/com.claude-prism.desktop", - "~/Library/Preferences/com.claude-prism.desktop.plist", - "~/Library/Saved Application State/com.claude-prism.desktop.savedState", - ] -end diff --git a/package.json b/package.json index 5fac7dc..0be25ee 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@claude-prism/root", "description": "Open-Source AI LaTeX writing workspace", - "version": "0.5.4", + "version": "1.0.0", "repository": { "type": "git", "url": "https://github.com/delibae/claude-prism" @@ -17,12 +17,10 @@ "build:desktop": "pnpm --filter=@claude-prism/desktop tauri build", "lint": "pnpm exec biome check", "lint:fix": "pnpm exec biome check --fix", - "version:check": "covector status", - "version:bump": "covector version" + "release": "echo 'To release: git tag v