Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
0def66b
chore: update deps and registry API client (#55)
its-mash Feb 9, 2026
37ce0f5
feat: Add custom server configuration fields (env vars, args, headers…
its-mash Feb 9, 2026
e6fb736
fix: Update screenshots and Logo (#56)
its-mash Feb 9, 2026
1d111ce
chore(main): release 0.0.8 (#45)
github-actions[bot] Feb 9, 2026
5a94708
fix: render server icon URLs as images instead of raw text (#57)
its-mash Feb 9, 2026
2b4f90a
chore(main): release 0.0.9 (#58)
github-actions[bot] Feb 9, 2026
98f862c
fix: suppress console window for stdio MCP servers on Windows (#59)
its-mash Feb 10, 2026
3ffa395
chore(main): release 0.0.10 (#60)
github-actions[bot] Feb 10, 2026
04ab100
docs: add mcpmux.com links and download references to README (#64)
its-mash Feb 11, 2026
c54128e
fix: Claude client icon resolving (#68)
its-mash Feb 11, 2026
93f04c5
Redesign McpMux glyph to simplified dots + bold M layout (#66)
its-mash Feb 11, 2026
9bfd6a4
renane to ion-ash
its-mash Feb 11, 2026
0eba047
fix: Fix refresh token issue (#69)
its-mash Feb 12, 2026
d1a9186
chore(main): release 0.0.11 (#65)
github-actions[bot] Feb 12, 2026
68c292c
feat: update logo with bolder strokes and regenerate icons/screenshot…
its-mash Feb 13, 2026
a1d9599
feat: support default values for input definitions (#70)
its-mash Feb 13, 2026
96795b0
feat: Capture and stream process stderr to server log manager (#63)
its-mash Feb 13, 2026
ca5b0ff
feat: Streamable HTTP transport with SSE notifications and E2E tests …
its-mash Feb 14, 2026
47ce589
chore(main): release 0.0.12 (#72)
github-actions[bot] Feb 14, 2026
9858cd0
Disable macOS builds in CI workflows pending signing key (#77)
its-mash Feb 15, 2026
d8e28f8
fix: e2e flaky fix (#75)
its-mash Feb 15, 2026
0587741
feat: capture MCP protocol logging notifications in server connection…
its-mash Feb 15, 2026
c84e036
feat: apply McpMux branding to OAuth authorization pages (#74)
its-mash Feb 15, 2026
b07f1a3
feat: add Homebrew tap support and ad-hoc macOS signing (#79)
its-mash Feb 15, 2026
005ab3e
Enable macOS builds with ad-hoc signing in CI/CD workflows (#81)
its-mash Feb 15, 2026
db63e5d
Refactor release workflow to use draft releases with explicit publish…
its-mash Feb 15, 2026
400c4bc
fix: taskbar icon visibility (#83)
its-mash Feb 15, 2026
1ccf019
chore: Update funding sources in FUNDING.yml (#86)
its-mash Feb 15, 2026
473eb1a
feat: add Linux APT repository and install infrastructure (#85)
its-mash Feb 15, 2026
84f15cb
feat: redesign README, screenshots, and E2E capture (#87)
its-mash Feb 15, 2026
9b265ce
chore(main): release 0.0.13 (#78)
github-actions[bot] Feb 15, 2026
b7dbfa9
chore(main): release 0.0.14 (#88)
github-actions[bot] Feb 15, 2026
c1bcb77
chore: resolve release-please draft loop and reset versions to v0.0.1…
its-mash Feb 16, 2026
4d7b496
chore(main): release 0.0.13 (#91)
github-actions[bot] Feb 16, 2026
92ad770
fix: replace deprecated macos-13 runner with macos-latest
its-mash Feb 16, 2026
f851dfd
chore: reset versions to v0.0.12 for clean release retry
its-mash Feb 16, 2026
c08248b
chore(main): release 0.0.13 (#92)
github-actions[bot] Feb 16, 2026
bb4221f
fix: gracefully handle invalid Apple certificate in release builds
its-mash Feb 16, 2026
5a05401
chore: reset versions to v0.0.12 for clean v0.0.13 release
its-mash Feb 16, 2026
2b96733
chore: consolidate changelog for v0.0.13 initial public release
its-mash Feb 16, 2026
f50e75b
chore(main): release 0.0.13 (#94)
github-actions[bot] Feb 16, 2026
968d4b9
fix: skip Apple certificate in tauri-action when import fails
its-mash Feb 16, 2026
6799b04
chore: reset versions to v0.0.12 for clean v0.1.0 release
its-mash Feb 16, 2026
68495e5
chore(main): release 0.1.0 (#96)
github-actions[bot] Feb 16, 2026
1943134
fix: don't pass APPLE_CERTIFICATE to tauri-action
its-mash Feb 16, 2026
f5be2da
chore: reset versions to v0.0.12 for clean v0.1.0 release
its-mash Feb 16, 2026
4ed2f51
chore(main): release 0.1.0 (#98)
github-actions[bot] Feb 16, 2026
31ed4ed
fix: remove notarization env vars from tauri-action
its-mash Feb 16, 2026
0eac092
chore(main): release 0.1.0 (#100)
github-actions[bot] Feb 16, 2026
b98ce51
chore: add deb section field and reprepro override for APT repo
its-mash Feb 16, 2026
f89487a
ci: add manual APT repo update workflow
its-mash Feb 16, 2026
3dbc613
chore: remove temporary test and APT update workflows
its-mash Feb 16, 2026
9c63e49
chore: add community health files and README badges (#99)
its-mash Feb 16, 2026
acfcec2
Add consent token security & rate limiting for OAuth flow (#102)
its-mash Feb 16, 2026
9b60e0b
feat: file-based keychain fallback for headless Linux/WSL (#103)
its-mash Feb 16, 2026
b4598e6
fix: stdio enable error UI state (#104)
its-mash Feb 16, 2026
2ad44a6
chore(main): release 0.1.1 (#105)
github-actions[bot] Feb 16, 2026
0329342
chore: add --clobber to gh release upload for .sig files (#106)
its-mash Feb 16, 2026
083f687
chore(ci): add manual re-publish for existing draft releases (#107)
its-mash Feb 16, 2026
12e5bed
chore(ci): normalize tag input in release workflow (#108)
its-mash Feb 16, 2026
b15482b
docs: improve README first impression with problem/fix diagrams (#109)
its-mash Feb 17, 2026
2f5666e
chore(ci): use correct homebrew-tap repo name in release workflow (#111)
its-mash Feb 17, 2026
8120d55
chore(ci): handle missing Intel DMG in homebrew cask update
Feb 17, 2026
a77fd3e
ci: fix macOS Intel build by using macos-13 runner
its-mash Feb 18, 2026
4439749
ci: use macos-15-intel runner (macos-13 was retired Dec 2025)
its-mash Feb 18, 2026
1817ab5
ci: remove test-release-builds workflow
its-mash Feb 18, 2026
337c159
chore: add MCP Registry server.json and gitignore updates (#114)
its-mash Feb 18, 2026
98c013d
fix: resolve npx/node PATH on macOS GUI apps (#113)
its-mash Feb 18, 2026
9a4c728
chore(ci): remove deprecated depends_on macos from cask generator (#115)
its-mash Feb 18, 2026
2d99f14
chore(main): release 0.1.2 (#110)
github-actions[bot] Feb 18, 2026
b40c59b
fix: version display & update check (#117)
its-mash Feb 18, 2026
942ee1a
feat: add select, file_path, and directory_path input types (#121)
its-mash Feb 18, 2026
5b280fb
fix: add one-click IDE install for VS Code and Cursor (#119)
its-mash Feb 18, 2026
7b74e6e
chore(main): release 0.2.0 (#118)
github-actions[bot] Feb 18, 2026
bd06386
refactor: remove Password and Textarea from InputType enum (#122)
its-mash Feb 19, 2026
2d88b25
fix: regenerate ICO with proper sizes & increase connection timeout (…
its-mash Feb 19, 2026
b55b1d2
chore(main): release 0.2.1 (#124)
github-actions[bot] Feb 19, 2026
04380e0
fix: wire up HTTP definition headers orthogonally from auth (#125)
its-mash Feb 19, 2026
efefcd7
chore: regenerate screenshots and update README (#127)
its-mash Feb 20, 2026
a97a133
docs: add user guide with screenshots (#130)
its-mash Feb 20, 2026
d894d17
fix: detect OAuth requirement from unexpected content-type responses …
its-mash Feb 20, 2026
ee28e8b
docs: add user guide with screenshots (#131)
its-mash Feb 20, 2026
cbebd05
chore: add PostHog analytics to desktop app (#129)
its-mash Feb 20, 2026
f645d36
chore(main): release 0.2.2 (#126)
github-actions[bot] Feb 20, 2026
0f17ddb
fix: debounce analytics search tracking to capture final query (#132)
its-mash Feb 20, 2026
ecdbaca
fix: allow process restart after update and detect Homebrew version m…
its-mash Feb 21, 2026
df32b61
chore(main): release 0.2.3 (#133)
github-actions[bot] Feb 21, 2026
44d934c
feat: post-action UX guidance, ConfirmDialog, and client auto-select …
its-mash Feb 25, 2026
a4919db
chore(main): release 0.3.0 (#137)
github-actions[bot] Feb 25, 2026
c78a33b
chore: upgrade rmcp to v0.17.0 and reqwest to v0.13 (#140)
its-mash Mar 4, 2026
fb58d9c
fix: add Windsurf, JetBrains, and Android Studio to quick-connect gri…
its-mash Apr 17, 2026
c32f78f
docs: add Discord community link to README (#149)
its-mash Apr 23, 2026
661f162
fix(oauth): DCR skip-invalid redirect URIs + drop duplicate RFC 8707 …
its-mash Jun 9, 2026
d614853
feat: workspace-root routing + Tool Optimization (@mux) self-manageme…
its-mash Jun 14, 2026
e9306c4
feat: pre-release update channel + automated pre-releases from main (…
its-mash Jun 15, 2026
542ccc5
ci: fix pre-release gate (release_created is empty, not 'false') (#160)
its-mash Jun 15, 2026
53afa2d
ci: numeric-only pre-release identifier for Windows MSI (#161)
its-mash Jun 15, 2026
1762295
ci: stable-style changelog notes for pre-releases (#162)
its-mash Jun 15, 2026
25a6fbb
docs: add Workspaces and Tool Optimization guides (#164)
its-mash Jun 15, 2026
0ddbdb5
fix(servers): pin config-modal footer (#163) + silent Windows updates…
its-mash Jun 15, 2026
92f8ac2
docs: complete the getting-started flow + workspace-driven routing (#…
its-mash Jun 15, 2026
b90b05c
fix(storage): purge orphaned feature_set_members after the refactor (…
its-mash Jun 15, 2026
a215012
feat: @mux UX + Windows updater fix + minimal-first optimization (#171)
its-mash Jun 15, 2026
8e47d54
chore(deps-dev): bump vite from 7.2.7 to 7.3.2 (#145)
dependabot[bot] Jun 16, 2026
f9af481
chore(deps): bump tar from 0.4.44 to 0.4.45 (#143)
dependabot[bot] Jun 16, 2026
64ce2d6
chore(deps): bump quinn-proto from 0.11.13 to 0.11.14 (#142)
dependabot[bot] Jun 16, 2026
09b561c
feat(workspaces): bulk-clear unmapped folders + clearer approval opt-…
its-mash Jun 16, 2026
6868992
fix(gateway): ride out self-update port race + clearer update restart…
its-mash Jun 16, 2026
7fc50a0
feat(gateway): default FeatureSet for unmapped roots + Mapped workspa…
its-mash Jun 18, 2026
163ee0b
feat(featureset): protect Starter from deletion + clarify mapping pop…
its-mash Jun 18, 2026
d5df002
feat(workspaces): setting to disable the new-folder mapping prompt (#…
its-mash Jun 18, 2026
eb32289
fix(deps): resolve 4 transitive security advisories failing Dependabo…
its-mash Jun 18, 2026
7e5a319
chore(deps): bump rustls-webpki from 0.103.9 to 0.103.13 (#150)
dependabot[bot] Jun 18, 2026
fb825cf
feat(spaces): per-space base directories scope workspace roots to a S…
its-mash Jun 19, 2026
4a69908
fix(spaces): clearer base-directories UX (#180)
its-mash Jun 19, 2026
6ac98ef
chore(main): release 0.4.0 (#146)
github-actions[bot] Jun 24, 2026
e2ec055
feat: per-workspace routing via X-Mcpmux-Workspace header + guided fo…
its-mash Jun 24, 2026
669e99f
feat(ui): opencode global connect + client icons (#184)
its-mash Jun 24, 2026
608a841
fix(ui): show official opencode logo in the Apps tab (#185)
its-mash Jun 25, 2026
3e617fd
fix(gateway): truly no-auth when inbound auth is disabled (no OAuth a…
its-mash Jun 25, 2026
5598451
fix(storage): drop a deleted FeatureSet from workspace bindings (#186)
its-mash Jun 25, 2026
db1596f
test(gateway): end-to-end coverage for both auth-enabled and no-auth …
its-mash Jun 25, 2026
9dd7b58
fix(oauth): de-duplicate deep-link handling + quiet status-poll log (…
its-mash Jun 25, 2026
e032c9b
fix(ui): scroll-to + flash the target Settings section on every redir…
its-mash Jun 25, 2026
57276b7
chore(main): release 0.5.0 (#183)
github-actions[bot] Jun 25, 2026
1d759b4
ci: make desktop PR/E2E builds fork-safe (no signing secret required)…
its-mash Jun 26, 2026
71f18ca
chore: sync Cargo.lock workspace package versions (#191)
muxammadreza Jun 27, 2026
536a4ce
fix: sync custom server config saves immediately (#195)
muxammadreza Jun 27, 2026
c2a1569
fix: make feature discovery capability-aware and bounded (#194)
muxammadreza Jun 27, 2026
187b57c
fix: filter invalid DCR redirect URIs (#193)
muxammadreza Jun 27, 2026
80045c6
fix: avoid synthetic connecting state for enabled servers (#196)
muxammadreza Jun 27, 2026
47c787c
fix: restore titlebar drag region without breaking controls (#197)
muxammadreza Jun 27, 2026
6f81378
feat: support configurable public gateway base URL (#192)
muxammadreza Jun 27, 2026
9e481e7
feat(gateway): optional network access — bind 0.0.0.0 for LAN sharing…
its-mash Jun 28, 2026
a5bf1e8
Add claude GitHub actions 1784077520436 (#207)
its-mash Jul 15, 2026
ca6745a
fix: add id-token write permission for codecov OIDC authentication (#…
its-mash Jul 15, 2026
049de49
Merge branch 'main' of github.com-personal:MCP-Mux/mcp-mux
Jul 15, 2026
1e326bc
fix(gateway): restore disabled auth on auto-start
Xuleileon Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
github: mcpmux
ko_fi: mcpmux
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Bug Report
description: Report a bug in McpMux
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for reporting a bug! Please fill out the details below.

- type: input
id: version
attributes:
label: McpMux Version
description: Which version are you running?
placeholder: e.g. 0.1.0
validations:
required: true

- type: dropdown
id: os
attributes:
label: Operating System
options:
- Windows
- macOS
- Linux
validations:
required: true

- type: textarea
id: description
attributes:
label: What happened?
description: Describe what you expected vs what actually happened.
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: How can we reproduce this?
placeholder: |
1. Open McpMux
2. Go to...
3. Click on...
validations:
required: true

- type: textarea
id: logs
attributes:
label: Logs / Screenshots
description: Paste any relevant log output or screenshots.
validations:
required: false
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
blank_issues_enabled: true
contact_links:
- name: Questions & Help
url: https://github.com/mcpmux/mcp-mux/discussions/categories/q-a
about: Ask questions and get help in GitHub Discussions
- name: Feature Ideas
url: https://github.com/mcpmux/mcp-mux/discussions/categories/ideas
about: Share and discuss feature ideas
- name: Contribute a Server Definition (PR)
url: https://github.com/mcpmux/mcp-servers/blob/main/CONTRIBUTING.md
about: Server definitions live in the mcp-servers repo and land via PR — read the guide
- name: Request a Server
url: https://github.com/mcpmux/mcp-servers/issues/new?template=request-server.yml
about: Ask the community to add an MCP server to the registry
- name: Report a Server Definition Bug
url: https://github.com/mcpmux/mcp-servers/issues/new?template=bug-report.yml
about: Found a broken or incorrect server in the registry? Report it here
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Feature Request
description: Suggest a new feature or improvement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a feature! Please describe what you'd like.

- type: textarea
id: problem
attributes:
label: Problem
description: What problem does this solve? What's your use case?
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed Solution
description: How do you think this should work?
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Any workarounds or alternative approaches you've considered?
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other context, screenshots, or examples.
validations:
required: false
17 changes: 17 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## What does this PR do?

<!-- Brief description of the change -->

## How was it tested?

<!-- Describe how you tested this change -->

- [ ] `pnpm test` passes
- [ ] `pnpm lint` passes
- [ ] `pnpm typecheck` passes

## Checklist

- [ ] My code follows the project's code style
- [ ] I have signed off my commits (`git commit -s`)
- [ ] I have updated documentation if needed
200 changes: 200 additions & 0 deletions .github/workflows/build-tauri.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
name: Build Tauri

# Reusable build for the desktop app across all platforms. Shared by the
# stable release flow, the per-merge pre-release flow, and the promote flow so
# every channel is built with identical logic (no drift).
on:
workflow_call:
inputs:
ref:
description: 'Git ref to build (empty = the caller ref)'
type: string
default: ''
set_version:
description: 'If set, stamp this version onto the working tree before building'
type: string
default: ''
release_id:
description: 'Upload artifacts to this existing release id (stable flow)'
type: string
default: ''
tag_name:
description: 'Create/append to a release with this tag (pre-release / promote flow)'
type: string
default: ''
release_name:
description: 'Release title when creating via tag_name'
type: string
default: ''
release_body:
description: 'Release body when creating via tag_name'
type: string
default: ''
prerelease:
description: 'Mark the created release as a pre-release'
type: boolean
default: false
draft:
description: 'Create the release as a draft'
type: boolean
default: false
apple_full_signing:
description: 'Import the Apple Developer cert (true) or ad-hoc sign (false)'
type: boolean
default: true

env:
CARGO_TERM_COLOR: always

jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
artifact: linux
- os: windows-latest
target: x86_64-pc-windows-msvc
artifact: windows
- os: macos-latest
target: aarch64-apple-darwin
artifact: macos-arm
- os: macos-15-intel
target: x86_64-apple-darwin
artifact: macos-intel

runs-on: ${{ matrix.os }}
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}

# Stamp a pre-release / promote version onto the working tree (transient,
# never committed) so the binary, bundle, and latest.json all agree.
- name: Set build version
if: inputs.set_version != ''
shell: bash
run: node scripts/set-version.mjs "${{ inputs.set_version }}"

- name: Install Linux deps
if: matrix.os == 'ubuntu-latest'
uses: ./.github/actions/install-linux-deps
with:
verify_glib: 'false'

- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
env:
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}-release
env:
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'

- run: pnpm install --frozen-lockfile

# Import Apple certificate ourselves, then DON'T pass APPLE_CERTIFICATE
# to tauri-action. Tauri's bundler uses var_os() which treats empty
# strings as present (Some("")), so we must completely omit the env var.
# Instead we import the cert here and only pass APPLE_SIGNING_IDENTITY.
# When apple_full_signing is false (pre-releases), we ad-hoc sign ("-").
- name: Import Apple certificate
if: runner.os == 'macOS'
id: apple-cert
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
if [ "${{ inputs.apple_full_signing }}" != "true" ]; then
echo "Ad-hoc signing requested (pre-release build)"
echo "identity=-" >> "$GITHUB_OUTPUT"
exit 0
fi
if [ -z "$APPLE_CERTIFICATE" ] || [ -z "$KEYCHAIN_PASSWORD" ]; then
echo "No Apple certificate configured — using ad-hoc signing"
echo "identity=-" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
if [ ! -s certificate.p12 ]; then
echo "Certificate decode produced empty file — using ad-hoc signing"
rm -f certificate.p12
echo "identity=-" >> "$GITHUB_OUTPUT"
exit 0
fi
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
if ! security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign; then
echo "Certificate import failed — using ad-hoc signing"
rm -f certificate.p12
echo "identity=-" >> "$GITHUB_OUTPUT"
exit 0
fi
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
rm certificate.p12
echo "identity=${{ secrets.APPLE_SIGNING_IDENTITY }}" >> "$GITHUB_OUTPUT"
echo "cert_ok=true" >> "$GITHUB_OUTPUT"

# IMPORTANT: Do NOT pass APPLE_CERTIFICATE, APPLE_ID, APPLE_PASSWORD,
# or APPLE_TEAM_ID to tauri-action. Tauri's bundler uses var_os() which
# treats empty strings as "present" and attempts certificate import /
# notarization even when values are empty, causing build failures.
# We handle cert import ourselves above and only pass APPLE_SIGNING_IDENTITY.
#
# Two variants so each path passes EXACTLY the inputs it needs:
# • release_id set → upload to the pre-created (draft) release by id.
# Pass ONLY releaseId — never tagName/draft/prerelease, which could
# flip the draft early or mismatch its state. (Stable + promote.)
# • release_id empty → create/append to a tagged release. (Pre-release.)
- name: Build Tauri app (upload to existing release)
if: inputs.release_id != ''
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
APPLE_SIGNING_IDENTITY: ${{ runner.os == 'macOS' && steps.apple-cert.outputs.identity || '' }}
VITE_POSTHOG_KEY: ${{ secrets.VITE_POSTHOG_KEY }}
VITE_POSTHOG_HOST: ${{ secrets.VITE_POSTHOG_HOST }}
with:
projectPath: apps/desktop
releaseId: ${{ inputs.release_id }}
updaterJsonKeepUniversal: true
args: --target ${{ matrix.target }}

- name: Build Tauri app (create tagged release)
if: inputs.release_id == ''
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
APPLE_SIGNING_IDENTITY: ${{ runner.os == 'macOS' && steps.apple-cert.outputs.identity || '' }}
VITE_POSTHOG_KEY: ${{ secrets.VITE_POSTHOG_KEY }}
VITE_POSTHOG_HOST: ${{ secrets.VITE_POSTHOG_HOST }}
with:
projectPath: apps/desktop
tagName: ${{ inputs.tag_name }}
releaseName: ${{ inputs.release_name }}
releaseBody: ${{ inputs.release_body }}
releaseDraft: ${{ inputs.draft }}
prerelease: ${{ inputs.prerelease }}
updaterJsonKeepUniversal: true
args: --target ${{ matrix.target }}
16 changes: 13 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -240,10 +240,15 @@ jobs:
tauri-cli-${{ runner.os }}-

- run: pnpm install --frozen-lockfile
- run: pnpm build
# PR build verification only: disable updater-artifact signing so the build
# needs no secrets. Fork PRs don't receive repository secrets, so requiring
# TAURI_SIGNING_PRIVATE_KEY here makes every fork PR fail. Real signed
# updater artifacts are produced by the release flow (build-tauri.yml /
# nightly.yml) on trusted refs, which is the only place the key belongs.
- run: pnpm --filter @mcpmux/desktop exec tauri build --config '{"bundle":{"createUpdaterArtifacts":false}}'
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
# Ad-hoc signing (no Apple Developer ID)
APPLE_SIGNING_IDENTITY: '-'

# ─────────────────────────────────────────────────────────────
# Test Results Report (separate checks per test type and OS)
Expand Down Expand Up @@ -386,7 +391,12 @@ jobs:
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: pnpm exec playwright install --with-deps chromium

# TODO(playwright-migration): the web E2E suite has stale assertions from
# the IA redesign and is being replaced (tauri-playwright spike on
# spike/playwright-e2e). Non-blocking until that lands so it doesn't gate
# PRs on pre-existing failures; results still surface via the report below.
- name: Run web-only E2E tests
continue-on-error: true
run: pnpm test:e2e:web --project=chromium

- name: Upload E2E web test results
Expand Down
Loading
Loading