Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
32551d2
feat(electron): scaffold initial @clerk/electron package
jeremy-clerk Jun 8, 2026
61ce4b0
chore(electron): Add initial main and preload scripts (#8785)
wobsoriano Jun 9, 2026
83a4616
feat(electron): harden token storage encryption (#8791)
jeremy-clerk Jun 10, 2026
73f716c
fix(electron): resolve storage type errors (#8792)
jeremy-clerk Jun 10, 2026
48a5484
feat(electron): scaffold initial @clerk/electron package
jeremy-clerk Jun 8, 2026
61ccd5d
chore(electron): Add initial main and preload scripts (#8785)
wobsoriano Jun 9, 2026
1c22410
feat(electron): harden token storage encryption (#8791)
jeremy-clerk Jun 10, 2026
74eb5c3
fix(electron): resolve storage type errors (#8792)
jeremy-clerk Jun 10, 2026
1b938fa
feat(electron): Add initial React integration export (#8806)
wobsoriano Jun 10, 2026
6c75c4e
feat(electron): add passkey support
jeremy-clerk Jun 10, 2026
cbb1530
docs(electron): document passkey setup
jeremy-clerk Jun 10, 2026
9163b18
Merge remote-tracking branch 'origin/jw/electron-package-scaffold' in…
jeremy-clerk Jun 10, 2026
1c0d40c
chore: Add custom renderer origin support (#8816)
wobsoriano Jun 10, 2026
abef47c
chore: dedupe
wobsoriano Jun 10, 2026
3ae7b6b
Merge remote-tracking branch 'origin/jw/electron-package-scaffold' in…
jeremy-clerk Jun 11, 2026
56af1b0
feat(electron): add passkey support
jeremy-clerk Jun 11, 2026
5fadc7a
chore(repo): restore mosaic architecture docs
jeremy-clerk Jun 11, 2026
288e7b3
feat(electron): Report SDK version to FAPI via query param (#8847)
jeremy-clerk Jun 12, 2026
1aa8700
Merge remote-tracking branch 'origin/jw/electron-package-scaffold' in…
jeremy-clerk Jun 12, 2026
7688b66
chore(electron): update lockfile
jeremy-clerk Jun 12, 2026
e1c121c
fix(electron): support dev loopback passkeys
jeremy-clerk Jun 13, 2026
9006905
Merge origin/jw/electron-package-scaffold
jeremy-clerk Jun 13, 2026
a64c534
chore(electron): note temporary sdk version opt-out
jeremy-clerk Jun 13, 2026
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
105 changes: 105 additions & 0 deletions .github/workflows/electron-passkeys.yml.template

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saved as .template so we don't run this action yet

Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Electron Passkeys Native Build

on:
workflow_dispatch:
pull_request:
paths:
- 'packages/electron-passkeys/**'
- '.github/workflows/electron-passkeys.yml'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build ${{ matrix.settings.target }}
runs-on: ${{ matrix.settings.host }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
settings:
- host: macos-14
target: aarch64-apple-darwin
- host: macos-14
target: x86_64-apple-darwin
- host: windows-latest
target: x86_64-pc-windows-msvc
- host: windows-latest
target: aarch64-pc-windows-msvc
defaults:
run:
working-directory: packages/electron-passkeys
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 24

- uses: pnpm/action-setup@v4

- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.settings.target }}

- uses: Swatinem/rust-cache@v2
with:
workspaces: packages/electron-passkeys

- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
working-directory: .

- name: Build native module
run: pnpm build --target ${{ matrix.settings.target }}

- name: Smoke test (host-native targets only)
if: matrix.settings.target == 'aarch64-apple-darwin' || matrix.settings.target == 'x86_64-pc-windows-msvc'
run: node -e "const m = require('./index.js'); console.log('isAvailable:', m.isAvailable(), 'capabilities:', JSON.stringify(m.capabilities())); if (!m.isAvailable()) throw new Error('the loader did not find the freshly built native binary');"

- uses: actions/upload-artifact@v4
with:
name: bindings-${{ matrix.settings.target }}
path: packages/electron-passkeys/electron-passkeys.*.node
if-no-files-found: error

package:
name: Assemble platform packages
needs: build
runs-on: ubuntu-latest
timeout-minutes: 10
defaults:
run:
working-directory: packages/electron-passkeys
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 24

- uses: pnpm/action-setup@v4

- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
working-directory: .

- uses: actions/download-artifact@v4
with:
path: packages/electron-passkeys/artifacts

- name: Move binaries into per-platform npm packages
run: pnpm artifacts

- name: Verify every platform package contains its binary
run: |
for dir in npm/*/; do
count=$(find "$dir" -name '*.node' | wc -l)
if [ "$count" -ne 1 ]; then
echo "::error::$dir is missing its .node binary — publishing it would ship an empty package"
exit 1
fi
(cd "$dir" && npm pack --dry-run)
done
6 changes: 6 additions & 0 deletions packages/electron-passkeys/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
target/
*.node
artifacts/
# napi-generated type defs for the raw native binding (the public surface is
# the hand-written index.js/index.d.ts loader)
native.d.ts
Loading
Loading