feat: auto-publish releases with stable download links
- Change releaseType from draft to release for auto-publishing - Add upload-stable-links job to create version-agnostic asset copies - Update README with direct download URLs per platform - Add Requirements section to Installation - Remove downloads/platform badges - Add docs/RELEASE.md with versioning and release guide - Move community docs to .github/
This commit is contained in:
parent
290646bea8
commit
f0c2677c6a
8 changed files with 208 additions and 15 deletions
0
CLA.md → .github/CLA.md
vendored
0
CLA.md → .github/CLA.md
vendored
|
|
@ -17,4 +17,4 @@ This project follows the Contributor Covenant Code of Conduct.
|
|||
Maintainers are here to help keep our community welcoming. They’ll clarify expectations when needed and, if necessary, take steps to address behavior that goes against these standards.
|
||||
|
||||
## Reporting
|
||||
Please report incidents privately to the maintainers through the security/contact channel listed in `SECURITY.md`.
|
||||
Please report incidents privately to the maintainers through the security/contact channel listed in `SECURITY.md` (`.github/SECURITY.md`).
|
||||
0
CONTRIBUTING.md → .github/CONTRIBUTING.md
vendored
0
CONTRIBUTING.md → .github/CONTRIBUTING.md
vendored
0
SECURITY.md → .github/SECURITY.md
vendored
0
SECURITY.md → .github/SECURITY.md
vendored
38
.github/workflows/release.yml
vendored
38
.github/workflows/release.yml
vendored
|
|
@ -218,3 +218,41 @@ jobs:
|
|||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: pnpm dist:linux
|
||||
|
||||
upload-stable-links:
|
||||
needs: [release-mac, release-win, release-linux]
|
||||
runs-on: ubuntu-latest
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
|
||||
steps:
|
||||
- name: Upload stable-named assets for /latest/download links
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
VERSION="${GITHUB_REF#refs/tags/v}"
|
||||
REPO="${GITHUB_REPOSITORY}"
|
||||
DOWNLOAD_BASE="https://github.com/${REPO}/releases/download/v${VERSION}"
|
||||
|
||||
declare -A FILES=(
|
||||
["Claude-Agent-Teams-UI-arm64.dmg"]="Claude-Agent-Teams-UI-${VERSION}-arm64.dmg"
|
||||
["Claude-Agent-Teams-UI-x64.dmg"]="Claude-Agent-Teams-UI-${VERSION}.dmg"
|
||||
["Claude-Agent-Teams-UI-Setup.exe"]="Claude-Agent-Teams-UI-Setup-${VERSION}.exe"
|
||||
["Claude-Agent-Teams-UI.AppImage"]="Claude-Agent-Teams-UI-${VERSION}.AppImage"
|
||||
["Claude-Agent-Teams-UI-amd64.deb"]="claude-agent-teams-ui_${VERSION}_amd64.deb"
|
||||
["Claude-Agent-Teams-UI-x86_64.rpm"]="claude-agent-teams-ui-${VERSION}.x86_64.rpm"
|
||||
["Claude-Agent-Teams-UI.pacman"]="claude-agent-teams-ui-${VERSION}.pacman"
|
||||
)
|
||||
|
||||
# Remove old stable assets (ignore errors if they don't exist)
|
||||
for STABLE_NAME in "${!FILES[@]}"; do
|
||||
gh release delete-asset "v${VERSION}" "$STABLE_NAME" --repo "$REPO" --yes 2>/dev/null || true
|
||||
done
|
||||
|
||||
# Download versioned files and re-upload with stable names
|
||||
for STABLE_NAME in "${!FILES[@]}"; do
|
||||
VERSIONED_NAME="${FILES[$STABLE_NAME]}"
|
||||
echo "Downloading ${VERSIONED_NAME} -> ${STABLE_NAME}"
|
||||
curl -fSL -o "$STABLE_NAME" "${DOWNLOAD_BASE}/${VERSIONED_NAME}" && \
|
||||
gh release upload "v${VERSION}" "$STABLE_NAME" --repo "$REPO" --clobber
|
||||
rm -f "$STABLE_NAME"
|
||||
done
|
||||
|
|
|
|||
27
README.md
27
README.md
|
|
@ -10,21 +10,19 @@
|
|||
|
||||
<p align="center">
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest"><img src="https://img.shields.io/github/v/release/777genius/claude_agent_teams_ui?style=flat-square&label=version&color=blue" alt="Latest Release" /></a>
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/actions/workflows/ci.yml"><img src="https://github.com/777genius/claude_agent_teams_ui/actions/workflows/ci.yml/badge.svg" alt="CI Status" /></a>
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases"><img src="https://img.shields.io/github/downloads/777genius/claude_agent_teams_ui/total?style=flat-square&color=green" alt="Downloads" /></a>
|
||||
<img src="https://img.shields.io/badge/platform-macOS%20(Apple%20Silicon%20%2B%20Intel)%20%7C%20Linux%20%7C%20Windows-lightgrey?style=flat-square" alt="Platform" />
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/actions/workflows/ci.yml"><img src="https://github.com/777genius/claude_agent_teams_ui/actions/workflows/ci.yml/badge.svg" alt="CI Status" /></a>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest">
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-arm64.dmg">
|
||||
<img src="https://img.shields.io/badge/macOS-Download-black?logo=apple&logoColor=white&style=flat" alt="Download for macOS" height="30" />
|
||||
</a>
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest">
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI.AppImage">
|
||||
<img src="https://img.shields.io/badge/Linux-Download-FCC624?logo=linux&logoColor=black&style=flat" alt="Download for Linux" height="30" />
|
||||
</a>
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest">
|
||||
<a href="https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-Setup.exe">
|
||||
<img src="https://img.shields.io/badge/Windows-Download-0078D4?logo=windows&logoColor=white&style=flat" alt="Download for Windows" height="30" />
|
||||
</a>
|
||||
</p>
|
||||
|
|
@ -47,16 +45,19 @@
|
|||
|
||||
## Installation
|
||||
|
||||
### Requirements
|
||||
|
||||
None. Claude Code is **not required** to be installed beforehand — the app includes a built-in installer and login, so you can set up everything directly from the app.
|
||||
|
||||
### Direct Download
|
||||
|
||||
| Platform | Download | Notes |
|
||||
|----------|----------|-------|
|
||||
| **macOS** (Apple Silicon) | [`.dmg`](https://github.com/777genius/claude_agent_teams_ui/releases/latest) | Download the `arm64` asset. Drag to Applications. On first launch: right-click → Open |
|
||||
| **macOS** (Intel) | [`.dmg`](https://github.com/777genius/claude_agent_teams_ui/releases/latest) | Download the `x64` asset. Drag to Applications. On first launch: right-click → Open |
|
||||
| **Linux** | [`.AppImage` / `.deb` / `.rpm` / `.pacman`](https://github.com/777genius/claude_agent_teams_ui/releases/latest) | Choose the package format for your distro (portable AppImage or native package manager format). |
|
||||
| **Windows** | [`.exe`](https://github.com/777genius/claude_agent_teams_ui/releases/latest) | Standard installer. May trigger SmartScreen — click "More info" → "Run anyway" |
|
||||
| **macOS** (Apple Silicon) | [`.dmg`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-arm64.dmg) | Drag to Applications. On first launch: right-click → Open |
|
||||
| **macOS** (Intel) | [`.dmg`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-x64.dmg) | Drag to Applications. On first launch: right-click → Open |
|
||||
| **Linux** | [`.AppImage`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI.AppImage) / [`.deb`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-amd64.deb) / [`.rpm`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-x86_64.rpm) / [`.pacman`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI.pacman) | Choose the package format for your distro |
|
||||
| **Windows** | [`.exe`](https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-Setup.exe) | Standard installer. May trigger SmartScreen — click "More info" → "Run anyway" |
|
||||
|
||||
The app reads session logs from `~/.claude/` — the data is already on your machine. No setup, no API keys, no login.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -114,11 +115,11 @@ pnpm dist # macOS + Windows + Linux
|
|||
|
||||
## Contributing
|
||||
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines. Please read our [Code of Conduct](CODE_OF_CONDUCT.md).
|
||||
See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for development guidelines. Please read our [Code of Conduct](.github/CODE_OF_CONDUCT.md).
|
||||
|
||||
## Security
|
||||
|
||||
IPC handlers validate all inputs with strict path containment checks. File reads are constrained to the project root and `~/.claude`. Sensitive credential paths are blocked. See [SECURITY.md](SECURITY.md) for details.
|
||||
IPC handlers validate all inputs with strict path containment checks. File reads are constrained to the project root and `~/.claude`. Sensitive credential paths are blocked. See [SECURITY.md](.github/SECURITY.md) for details.
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
154
docs/RELEASE.md
Normal file
154
docs/RELEASE.md
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
# Release Guide
|
||||
|
||||
## Versioning (SemVer)
|
||||
|
||||
Format: `MAJOR.MINOR.PATCH`
|
||||
|
||||
| Bump | When | Example |
|
||||
|---------|-------------------------------------------------------------|------------------|
|
||||
| MAJOR | Breaking changes, major UI overhaul, incompatible data format changes | 1.0.0 → 2.0.0 |
|
||||
| MINOR | New features, new panels/views, new integrations | 1.0.0 → 1.1.0 |
|
||||
| PATCH | Bug fixes, performance improvements, small UI tweaks | 1.0.0 → 1.0.1 |
|
||||
|
||||
## Release Process
|
||||
|
||||
### 1. Prepare
|
||||
|
||||
```bash
|
||||
# Make sure branch is clean and pushed
|
||||
git status
|
||||
git push origin <branch>
|
||||
```
|
||||
|
||||
### 2. Create tag and push
|
||||
|
||||
```bash
|
||||
git tag v<VERSION>
|
||||
git push origin v<VERSION>
|
||||
```
|
||||
|
||||
This triggers the `release.yml` GitHub Actions workflow which:
|
||||
- Builds the app (ubuntu)
|
||||
- Packages macOS arm64 + x64 (with code signing & notarization)
|
||||
- Packages Windows (NSIS installer)
|
||||
- Packages Linux (AppImage, deb, rpm, pacman)
|
||||
- Creates a GitHub Release with all artifacts
|
||||
|
||||
### 3. Update release notes
|
||||
|
||||
After the workflow completes, edit the release notes:
|
||||
|
||||
```bash
|
||||
gh release edit v<VERSION> --repo 777genius/claude_agent_teams_ui --notes "$(cat <<'EOF'
|
||||
<paste release notes here>
|
||||
EOF
|
||||
)"
|
||||
```
|
||||
|
||||
## Release Notes Template
|
||||
|
||||
```markdown
|
||||
## Claude Agent Teams UI v<VERSION>
|
||||
|
||||
<1-2 sentence summary of the release>
|
||||
|
||||
### What's New
|
||||
- feat: <feature description>
|
||||
- feat: <feature description>
|
||||
|
||||
### Improvements
|
||||
- improve: <improvement description>
|
||||
|
||||
### Bug Fixes
|
||||
- fix: <bug fix description>
|
||||
|
||||
### Downloads
|
||||
|
||||
| Platform | File |
|
||||
|----------|------|
|
||||
| macOS (Apple Silicon) | [Claude-Agent-Teams-UI-<VERSION>-arm64.dmg](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/Claude-Agent-Teams-UI-<VERSION>-arm64.dmg) |
|
||||
| macOS (Intel) | [Claude-Agent-Teams-UI-<VERSION>.dmg](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/Claude-Agent-Teams-UI-<VERSION>.dmg) |
|
||||
| Windows | [Claude-Agent-Teams-UI-Setup-<VERSION>.exe](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/Claude-Agent-Teams-UI-Setup-<VERSION>.exe) |
|
||||
| Linux (AppImage) | [Claude-Agent-Teams-UI-<VERSION>.AppImage](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/Claude-Agent-Teams-UI-<VERSION>.AppImage) |
|
||||
| Linux (deb) | [claude-agent-teams-ui_<VERSION>_amd64.deb](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/claude-agent-teams-ui_<VERSION>_amd64.deb) |
|
||||
| Linux (rpm) | [claude-agent-teams-ui-<VERSION>.x86_64.rpm](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/claude-agent-teams-ui-<VERSION>.x86_64.rpm) |
|
||||
| Linux (pacman) | [claude-agent-teams-ui-<VERSION>.pacman](https://github.com/777genius/claude_agent_teams_ui/releases/download/v<VERSION>/claude-agent-teams-ui-<VERSION>.pacman) |
|
||||
```
|
||||
|
||||
## Changelog Guidelines
|
||||
|
||||
Write changelog entries from the **user's perspective**, not the developer's.
|
||||
|
||||
**Good:**
|
||||
- "Add team member activity timeline with live status tracking"
|
||||
- "Fix crash when opening sessions with corrupted JSONL data"
|
||||
- "Improve session list loading speed by 3x with streaming parser"
|
||||
|
||||
**Bad:**
|
||||
- "Refactor ChunkBuilder to use new pipeline"
|
||||
- "Update dependencies"
|
||||
- "Fix bug in useEffect cleanup"
|
||||
|
||||
Group entries by type: `What's New` > `Improvements` > `Bug Fixes` > `Breaking Changes` (if any).
|
||||
|
||||
## File Naming Convention
|
||||
|
||||
electron-builder generates these artifacts per platform:
|
||||
|
||||
| Platform | Versioned Name | Stable Name (for /latest/download) |
|
||||
|------------------|--------------------------------------------------|--------------------------------------------|
|
||||
| macOS arm64 DMG | `Claude-Agent-Teams-UI-<VER>-arm64.dmg` | `Claude-Agent-Teams-UI-arm64.dmg` |
|
||||
| macOS x64 DMG | `Claude-Agent-Teams-UI-<VER>.dmg` | `Claude-Agent-Teams-UI-x64.dmg` |
|
||||
| macOS arm64 ZIP | `Claude-Agent-Teams-UI-<VER>-arm64-mac.zip` | — |
|
||||
| macOS x64 ZIP | `Claude-Agent-Teams-UI-<VER>-mac.zip` | — |
|
||||
| Windows | `Claude-Agent-Teams-UI-Setup-<VER>.exe` | `Claude-Agent-Teams-UI-Setup.exe` |
|
||||
| Linux AppImage | `Claude-Agent-Teams-UI-<VER>.AppImage` | `Claude-Agent-Teams-UI.AppImage` |
|
||||
| Linux deb | `claude-agent-teams-ui_<VER>_amd64.deb` | `Claude-Agent-Teams-UI-amd64.deb` |
|
||||
| Linux rpm | `claude-agent-teams-ui-<VER>.x86_64.rpm` | `Claude-Agent-Teams-UI-x86_64.rpm` |
|
||||
| Linux pacman | `claude-agent-teams-ui-<VER>.pacman` | `Claude-Agent-Teams-UI.pacman` |
|
||||
|
||||
## Stable Download Links
|
||||
|
||||
The `upload-stable-links` job in `release.yml` re-uploads key assets with version-agnostic names.
|
||||
This enables permanent links in README that always point to the latest release:
|
||||
|
||||
```
|
||||
https://github.com/777genius/claude_agent_teams_ui/releases/latest/download/Claude-Agent-Teams-UI-arm64.dmg
|
||||
```
|
||||
|
||||
GitHub automatically redirects `/releases/latest/download/FILENAME` to the asset from the most recent release. No README updates needed when releasing a new version.
|
||||
|
||||
## macOS Code Signing
|
||||
|
||||
macOS builds are signed and notarized via GitHub Actions secrets:
|
||||
|
||||
| Secret | Description |
|
||||
|-------------------------------|------------------------------|
|
||||
| `CSC_LINK` | Base64-encoded .p12 certificate |
|
||||
| `CSC_KEY_PASSWORD` | Certificate password |
|
||||
| `APPLE_ID` | Apple Developer account email |
|
||||
| `APPLE_APP_SPECIFIC_PASSWORD` | App-specific password from appleid.apple.com |
|
||||
| `APPLE_TEAM_ID` | Apple Developer Team ID |
|
||||
|
||||
Without these secrets, macOS builds will be unsigned (users need to bypass Gatekeeper manually).
|
||||
|
||||
## Auto-Update
|
||||
|
||||
electron-builder generates `latest-mac.yml`, `latest.yml`, `latest-linux.yml` alongside release artifacts. These files enable the built-in auto-updater — users get notified when a new version is available.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
```bash
|
||||
# Create and publish a release
|
||||
git tag v1.1.0
|
||||
git push origin v1.1.0
|
||||
# Wait for CI to finish (~10 min), then update notes
|
||||
|
||||
# Delete a release (if needed)
|
||||
gh release delete v1.1.0 --repo 777genius/claude_agent_teams_ui --yes
|
||||
git tag -d v1.1.0
|
||||
git push origin :refs/tags/v1.1.0
|
||||
|
||||
# Check workflow status
|
||||
gh run list --repo 777genius/claude_agent_teams_ui --workflow release.yml --limit 3
|
||||
```
|
||||
|
|
@ -242,7 +242,7 @@
|
|||
"publish": [
|
||||
{
|
||||
"provider": "github",
|
||||
"releaseType": "draft"
|
||||
"releaseType": "release"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue