Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
57d8899
Initial commit
don-petry Mar 21, 2026
17d75cb
Install BMad Method v6.2.0 with Claude Code integration
claude Mar 21, 2026
52d4826
fix: configure CodeQL to scan Python only (#6)
don-petry Mar 24, 2026
691db9c
chore: add ECC integration, TEA module, and slim CLAUDE.md
Mar 26, 2026
7f6ec8e
Add Claude Code GitHub Action (#15)
don-petry Mar 27, 2026
4bb0fbc
fix: address OpenSSF Scorecard findings (#22)
don-petry Mar 28, 2026
349402e
chore(deps): bump github/codeql-action from 3.35.1 to 4.35.1 (#27)
dependabot[bot] Apr 1, 2026
75e368c
chore(deps): bump actions/checkout from 4.3.1 to 6.0.2 (#24)
dependabot[bot] Apr 1, 2026
c599c74
ci: skip Claude Code reviewer on Dependabot PRs (#28)
don-petry Apr 1, 2026
4c90416
ci: move Dependabot exclusion to step-level in Claude workflow (#30)
don-petry Apr 1, 2026
913d717
chore(deps): bump anthropics/claude-code-action from 1.0.80 to 1.0.82…
dependabot[bot] Apr 1, 2026
164f89b
chore(deps): bump anthropics/claude-code-action from 1.0.83 to 1.0.88…
dependabot[bot] Apr 4, 2026
6c265ce
chore: enable Claude issue trigger per org CI standard (#48)
don-petry Apr 5, 2026
ed42913
fix: add checkout step to Claude workflow for issue-triggered mode (#49)
don-petry Apr 5, 2026
de8216c
feat: split Claude workflow into interactive + issue automation jobs …
don-petry Apr 6, 2026
5f72871
feat: switch to org-level reusable Claude Code workflow (#62)
don-petry Apr 6, 2026
39be4c9
chore: add CODEOWNERS file for code review enforcement
github-actions[bot] Apr 6, 2026
1122757
fix: rename codeql workflow and add javascript-typescript + actions m…
don-petry Apr 8, 2026
296c6e0
chore(workflows): adopt centralized stubs from petry-projects/.github…
don-petry Apr 8, 2026
f6f9fb2
fix: correct reusable workflow path (remove duplicate .github/) (#135)
don-petry Apr 21, 2026
88b5316
Revert "fix: correct reusable workflow path (remove duplicate .github…
Apr 21, 2026
fa4a555
ci: add auto-rebase workflow and check_run trigger to claude.yml
don-petry Apr 21, 2026
de712bb
chore(ci): remove stray codeql.yml workflow (#115)
don-petry Apr 26, 2026
f54fb70
chore(security): remove drift codeql.yml, enable GitHub-managed defau…
don-petry Apr 26, 2026
b0e18be
fix(ci): pin agent-shield reusable workflow to SHA (#126)
don-petry Apr 26, 2026
edf81b3
chore: add bot accounts to CODEOWNERS for auto-merge support
don-petry May 3, 2026
96f956d
chore: standardize CODEOWNERS on @petry-projects/org-leads (#160)
don-petry May 4, 2026
afd9b24
chore(dev-lead): remove claude.yml — replaced by dev-lead.yml (#176)
don-petry May 16, 2026
4ecba5e
feat: implement issue #162 — Compliance: codeowners-no-catchall (#182)
don-petry May 20, 2026
e10012e
feat: implement issue #175 — Compliance: non-stub-pr-review-mention.y…
don-petry May 21, 2026
8280f5c
feat: implement issue #161 — Compliance: codeowners-org-leads-not-fir…
don-petry May 21, 2026
6a4ad8c
feat: implement issue #86 — Compliance: unpinned-actions-claude.yml (…
don-petry May 21, 2026
dd997b8
feat: implement issue #217 — Compliance: codeowners-org-leads-not-fir…
don-petry Jun 20, 2026
07051cd
chore: major-scope repin self-consumer stubs [#657 F5] (#359)
don-petry Jul 14, 2026
b64069f
feat: implement issue #372 — Compliance: stub-surface-drift-pr-auto-r…
don-petry Jul 20, 2026
10a559f
feat: implement issue #368 — Compliance: ruleset-drift-pr-quality-all…
don-petry Jul 20, 2026
e5bbb97
feat: implement issue #369 — Compliance: dev-lead-stub-pin (#391)
don-petry Jul 20, 2026
bf5ba3d
feat: implement issue #370 — Compliance: dev-lead-stub-agent-ref (#395)
don-petry Jul 21, 2026
d5a4251
chore: sync 2 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 21, 2026
0524245
chore: sync 1 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 22, 2026
d6592fb
chore: sync 2 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 22, 2026
3555867
feat: implement issue #371 — Compliance: stub-surface-drift-feature-i…
don-petry Aug 2, 2026
1492899
Initial commit
don-petry Mar 21, 2026
04285de
Install BMad Method v6.2.0 with Claude Code integration
claude Mar 21, 2026
1f478cc
fix: configure CodeQL to scan Python only (#6)
don-petry Mar 24, 2026
7e9d4d4
chore: enable SonarCloud code quality analysis (#10)
don-petry Mar 26, 2026
5b472fe
chore: add ECC integration, TEA module, and slim CLAUDE.md
Mar 26, 2026
377b4e9
Add Claude Code GitHub Action (#15)
don-petry Mar 27, 2026
29c7f3f
fix: address OpenSSF Scorecard findings (#22)
don-petry Mar 28, 2026
406746c
chore(deps): bump github/codeql-action from 3.35.1 to 4.35.1 (#27)
dependabot[bot] Apr 1, 2026
3c74a82
chore(deps): bump actions/checkout from 4.3.1 to 6.0.2 (#24)
dependabot[bot] Apr 1, 2026
0eba8fe
ci: skip Claude Code reviewer on Dependabot PRs (#28)
don-petry Apr 1, 2026
e8965fa
ci: move Dependabot exclusion to step-level in Claude workflow (#30)
don-petry Apr 1, 2026
b6ece98
chore(deps): bump anthropics/claude-code-action from 1.0.80 to 1.0.82…
dependabot[bot] Apr 1, 2026
247989a
chore(deps): bump anthropics/claude-code-action from 1.0.83 to 1.0.88…
dependabot[bot] Apr 4, 2026
4f33a25
chore: enable Claude issue trigger per org CI standard (#48)
don-petry Apr 5, 2026
81c12f4
fix: add checkout step to Claude workflow for issue-triggered mode (#49)
don-petry Apr 5, 2026
2af56a0
feat: split Claude workflow into interactive + issue automation jobs …
don-petry Apr 6, 2026
8cf43fe
feat: switch to org-level reusable Claude Code workflow (#62)
don-petry Apr 6, 2026
13599b4
chore: add CODEOWNERS file for code review enforcement
github-actions[bot] Apr 6, 2026
afc93ea
fix: rename codeql workflow and add javascript-typescript + actions m…
don-petry Apr 8, 2026
4913688
chore(workflows): adopt centralized stubs from petry-projects/.github…
don-petry Apr 8, 2026
441e6c0
fix: correct reusable workflow path (remove duplicate .github/) (#135)
don-petry Apr 21, 2026
b06cc23
Revert "fix: correct reusable workflow path (remove duplicate .github…
Apr 21, 2026
df0ef57
ci: add auto-rebase workflow and check_run trigger to claude.yml
don-petry Apr 21, 2026
41ba9fc
chore(ci): remove stray codeql.yml workflow (#115)
don-petry Apr 26, 2026
21bf28e
chore(security): remove drift codeql.yml, enable GitHub-managed defau…
don-petry Apr 26, 2026
66b7354
fix(ci): pin agent-shield reusable workflow to SHA (#126)
don-petry Apr 26, 2026
229de46
chore: add bot accounts to CODEOWNERS for auto-merge support
don-petry May 3, 2026
d56b810
chore: standardize CODEOWNERS on @petry-projects/org-leads (#160)
don-petry May 4, 2026
84892af
Story 1.1: Initialize Electron Forge project with React, Rive, and to…
Mar 24, 2026
3943dbf
Epic 2: Implement API key setup, profile, avatar, workspace, and laun…
Mar 24, 2026
465b59f
Sprint 2: Epic 3 (Avatar & Voice) + Epic 4 (Agent Backbone)
Mar 24, 2026
d44ab30
Sprint 3: Epics 5-9 — Layout, display modes, errors, sessions, audit
Mar 24, 2026
aacff96
Sprint 4: Epics 10-12 — Preferences, writeback, CI/CD
Mar 24, 2026
2f37a4f
Sprint 5: Infrastructure adapters, IPC wiring, setup routing
Mar 25, 2026
84b05c4
Fix CI: exclude BMAD artifacts from Prettier check
Mar 25, 2026
79c2125
Sprint 6: SDK backend, composition root, layout shell, remaining UI
Mar 25, 2026
d9bece8
Finalize: Stryker config, sprint status → all 12 epics done
Mar 25, 2026
806e058
Wire real native packages + fix Windows CI (CRLF line endings)
Mar 25, 2026
0f6c8f1
AvatarCanvas component, Playwright E2E tests, Rive asset setup
Mar 25, 2026
e6847f8
Fix Vite scanning _bmad HTML files as entry points
Mar 25, 2026
5d34999
Fix runtime: install electron-squirrel-startup, clean up main.ts
Mar 25, 2026
493fd7f
fix: address PR review comments and SonarCloud exclusions
Mar 26, 2026
2a4d352
test: add E2E setup flow, accessibility, and integration tests
Mar 26, 2026
fe7840f
fix: resolve remaining CI issues
Mar 26, 2026
b4656e4
fix: wire STT/TTS, folder picker, and avatar visibility (UAT bugs)
Mar 26, 2026
59956e2
fix: UAT round 2 — folder picker, live voice mode, TTS voice, BMAD an…
Mar 26, 2026
7324743
fix: externalize native modules in Vite main config
Mar 26, 2026
f26f740
fix: resolve lint errors, format issues, and harden CI pipeline
Mar 29, 2026
e15a961
fix: coverage exclusions for type-only files, test support, and E2E s…
Mar 29, 2026
c4e1a43
docs: add Epic 13 (Structured Question Input) and Epic 14 (Native STT…
Mar 30, 2026
115f5de
feat: add Structured Question Input (Epic 13, FR57-FR59)
Mar 30, 2026
02a17ce
feat: replace Web Speech API with sherpa-onnx native STT (Epic 14, FR…
Mar 30, 2026
806fd03
fix: pass workspace path to agent message router for session context
Mar 30, 2026
3a1f309
fix: exclude native STT and IPC audio files from coverage thresholds
Mar 30, 2026
60e2dc1
fix: resolve CI failures in mutation and E2E jobs
Mar 30, 2026
25c7056
fix: exclude build output from Stryker sandbox to prevent symlink error
Mar 30, 2026
bea606a
fix: include original questions in aggregated message + handle 307 re…
Mar 30, 2026
d4949c4
fix: parse dash-list questions with bold section headers
Mar 30, 2026
c26f32a
fix: surface rate limits and improve SDK debug logging
Mar 30, 2026
87ebd77
fix: ensure Stop button visible during all agent activity (FR37)
Mar 30, 2026
ee93f95
fix: complete SDK response handling and UAT bug fixes (#29)
don-petry Apr 16, 2026
6c9aa7b
test: add keyboard navigation tests for ActionPanel listbox
github-actions[bot] May 6, 2026
c30cbe0
chore(dev-lead): remove claude.yml — replaced by dev-lead.yml (#176)
don-petry May 16, 2026
21da551
feat: implement issue #162 — Compliance: codeowners-no-catchall (#182)
don-petry May 20, 2026
74b0abe
feat: implement issue #175 — Compliance: non-stub-pr-review-mention.y…
don-petry May 21, 2026
2bd58b2
feat: implement issue #161 — Compliance: codeowners-org-leads-not-fir…
don-petry May 21, 2026
a8cea88
fix: make copilot setup workflow docs-only for current TalkTerm main
don-petry May 21, 2026
3ddea54
feat: implement issue #86 — Compliance: unpinned-actions-claude.yml (…
don-petry May 21, 2026
f6cd8b2
feat: implement issue #198 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry May 21, 2026
ed231d6
CI Failure Analyst: Add automated diagnostics (#214)
don-petry May 23, 2026
8150355
trigger: dev-lead workflow execution via synchronize event
claude Jun 4, 2026
2927556
feat: implement issue #217 — Compliance: codeowners-org-leads-not-fir…
don-petry Jun 20, 2026
34b6797
feat: implement issue #204 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
d58a3b3
feat: implement issue #285 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 23, 2026
e262d1d
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
f232b58
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
c433826
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
48a8c4e
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
4fce974
fix(bot): address bot feedback [skip ci-relay]
donpetry-bot Aug 18, 2026
7b4b91c
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
991d2d9
test: add branch coverage tests to reach 90% threshold
donpetry-bot Aug 18, 2026
aa132e6
fix(reliability): add null checks to prevent potential runtime errors
donpetry-bot Aug 18, 2026
bee6374
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
09638f4
fix(reliability): add null check for dataTransfer in FileDropZone
donpetry-bot Aug 18, 2026
f18de1f
fix(reliability): add missing promise error handlers
donpetry-bot Aug 18, 2026
d599d66
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
3841779
fix(reliability): restore null check for dataTransfer in FileDropZone
donpetry-bot Aug 18, 2026
a46c75d
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
eee77e6
fix(reliability): handle errors in promise catch blocks and add exhau…
donpetry-bot Aug 18, 2026
c63d2ad
fix(reliability): add error handling to sherpa-onnx audio processing
donpetry-bot Aug 18, 2026
17667af
fix(reliability): add error handling to speech IPC handlers
donpetry-bot Aug 18, 2026
0fb258e
fix(reliability): add error handling for JSON parsing in audit reposi…
donpetry-bot Aug 18, 2026
86bc75d
fix(reliability): add error handling to API key decryption
donpetry-bot Aug 18, 2026
73508a8
fix(reliability): add exhaustiveness checks to reducer switch statements
donpetry-bot Aug 18, 2026
ea561a7
fix(reliability): add exhaustiveness check to avatarReducer
donpetry-bot Aug 18, 2026
482613f
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 18, 2026
0f85bd6
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 19, 2026
4603de4
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 19, 2026
6eb6014
fix: eliminate duplicate null/undefined checks (S1764)
donpetry-bot Aug 19, 2026
b04fae2
fix: improve code reliability and eliminate dead code
donpetry-bot Aug 19, 2026
76aab41
fix: handle undefined in bmadContext template literal
donpetry-bot Aug 19, 2026
9cc9815
fix(bot): address bot feedback [skip ci-relay]
donpetry-bot Aug 19, 2026
0088b8e
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 19, 2026
700622f
fix: add exhaustiveness checks to switch statements for reliability
donpetry-bot Aug 19, 2026
6913310
fix(bot): address bot feedback [skip ci-relay]
donpetry-bot Aug 19, 2026
686fa14
fix(lint): use loose null check to exclude undefined from template li…
donpetry-bot Aug 19, 2026
8b73a36
fix(reliability): eliminate redundant boolean comparisons (SonarQube …
donpetry-bot Aug 19, 2026
a1de00c
fix(lint): use strict equality for nullable boolean expressions (S1940)
donpetry-bot Aug 19, 2026
2d9cbab
fix(reliability): move state updates from render to useEffect in App …
donpetry-bot Aug 19, 2026
7a91304
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 19, 2026
1fcd0e5
fix(reliability): address SonarQube reliability issues
donpetry-bot Aug 19, 2026
39daa5d
fix(reliability): implement missing IPC handlers and add input valida…
donpetry-bot Aug 19, 2026
6e7fd30
fix(reliability): add input validation and fix useEffect dependency i…
donpetry-bot Aug 19, 2026
b515e00
fix(reliability): add input validation and define missing IPC_CHANNEL…
donpetry-bot Aug 19, 2026
3d8e529
fix(reliability): address SonarQube quality gate issues
donpetry-bot Aug 19, 2026
25e0447
Merge branch 'main' into worktree-implement-sprint-1
don-petry Aug 21, 2026
a16e087
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 21, 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
11 changes: 11 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# TalkTerm Environment Configuration
# Copy this file to .env and fill in your values

# Required for E2E tests (Claude Agent SDK)
ANTHROPIC_API_KEY=

# Test environment (local | ci)
TEST_ENV=local

# Electron user data directory override (for test isolation)
# ELECTRON_USER_DATA_DIR=
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Normalize line endings to LF on all platforms
* text=auto eol=lf
20 changes: 10 additions & 10 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: "weekly"
interval: 'weekly'
open-pull-requests-limit: 0
labels:
- "security"
- "dependencies"
- 'security'
- 'dependencies'

- package-ecosystem: "github-actions"
directory: "/"
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: "weekly"
interval: 'weekly'
open-pull-requests-limit: 10
labels:
- "security"
- "dependencies"
- 'security'
- 'dependencies'
14 changes: 7 additions & 7 deletions .github/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@
# https://github.com/petry-projects/.github/blob/main/standards/github-settings.md#labels--standard-set

- name: security
color: "d93f0b"
color: 'd93f0b'
description: Security-related PRs and issues

- name: dependencies
color: "0075ca"
color: '0075ca'
description: Dependency update PRs

- name: scorecard
color: "d93f0b"
color: 'd93f0b'
description: OpenSSF Scorecard findings (auto-created)

- name: bug
color: "d73a4a"
color: 'd73a4a'
description: Bug reports

- name: enhancement
color: "a2eeef"
color: 'a2eeef'
description: Feature requests

- name: documentation
color: "0075ca"
color: '0075ca'
description: Documentation changes

- name: in-progress
color: "fbca04"
color: 'fbca04'
description: An agent is actively working this issue
2 changes: 1 addition & 1 deletion .github/workflows/add-to-project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
add-to-project:
permissions:
contents: read
uses: petry-projects/.github/.github/workflows/add-to-project-reusable.yml@add-to-project/v1-stable # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github/.github/workflows/add-to-project-reusable.yml@add-to-project/v1-stable # NOSONAR(githubactions:S7637) first-party channel ref
with:
project_id: PVT_kwDOD2inqs4BZq3-
project_url: https://github.com/orgs/petry-projects/projects/1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/agent-shield.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ permissions:

jobs:
agent-shield:
uses: petry-projects/.github/.github/workflows/agent-shield-reusable.yml@agent-shield/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github/.github/workflows/agent-shield-reusable.yml@agent-shield/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
6 changes: 3 additions & 3 deletions .github/workflows/auto-rebase.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ permissions: {}
jobs:
auto-rebase:
permissions:
contents: write # update-branch via GITHUB_TOKEN (may touch .github/workflows/)
contents: write # update-branch via GITHUB_TOKEN (may touch .github/workflows/)
pull-requests: write # post comments on PRs
uses: petry-projects/.github/.github/workflows/auto-rebase-reusable.yml@auto-rebase/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
uses: petry-projects/.github/.github/workflows/auto-rebase-reusable.yml@auto-rebase/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
10 changes: 5 additions & 5 deletions .github/workflows/ci-failure-analyst.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@
# Docs: https://github.com/petry-projects/.github-private/blob/main/docs/aw/ci-failure-analyst.md
# ─────────────────────────────────────────────────────────────────────────────

name: "CI Failure Analyst"
name: 'CI Failure Analyst'

on:
check_run:
types: [completed]

permissions:
pull-requests: write
issues: write # post/read PR comments via the Issues comments API
issues: write # post/read PR comments via the Issues comments API
actions: read
contents: read
checks: read

concurrency:
group: "ci-failure-analyst-${{ github.event.check_run.head_sha }}"
group: 'ci-failure-analyst-${{ github.event.check_run.head_sha }}'
cancel-in-progress: false

jobs:
Expand All @@ -41,6 +41,6 @@ jobs:
if: >-
github.event.check_run.conclusion == 'failure' &&
!startsWith(github.event.check_run.name, 'CI Failure Analyst')
uses: petry-projects/.github-private/.github/workflows/ci-failure-analyst-reusable.yml@ci-failure-analyst/v1-stable # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github-private/.github/workflows/ci-failure-analyst-reusable.yml@ci-failure-analyst/v1-stable # NOSONAR(githubactions:S7637) first-party channel ref
secrets:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
65 changes: 65 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,71 @@ concurrency:
cancel-in-progress: true

jobs:
quality:
runs-on: ${{ matrix.os }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 24
cache: npm
- run: npm ci --legacy-peer-deps --ignore-scripts
- run: npm rebuild better-sqlite3
- run: npm run typecheck
- run: npm run lint
- run: npm run format:check
- run: npm test
- run: npm run test:coverage

mutation:
needs: quality
runs-on: ubuntu-latest
permissions:
contents: read
continue-on-error: true
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 24
cache: npm
- run: npm ci --legacy-peer-deps --ignore-scripts
- run: npm rebuild better-sqlite3
- run: npm run test:mutate

e2e:
needs: quality
runs-on: macos-latest
permissions:
contents: read
continue-on-error: true
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 24
cache: npm
- run: npm ci --legacy-peer-deps # NOSONAR - Electron binary download and native module compilation require lifecycle scripts
- run: npm run make
- run: npm run playwright:install
- run: npm run test:e2e:electron
env:
CI: 'true'
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
if: failure()
with:
name: e2e-artifacts
path: |
test-results/
playwright-report/
retention-days: 30

secret-scan:
name: Secret scan (gitleaks)
runs-on: ubuntu-latest
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
# STACK: Node.js / npm (TypeScript + Electron desktop app)
# ─────────────────────────────────────────────────────────────────────────────

name: "Copilot Setup Steps"
name: 'Copilot Setup Steps'

on:
workflow_dispatch:
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:
# and would fail until that file is committed. Re-enable once the npm project is initialised.
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "24"
node-version: '24'

- name: Install Node.js dependencies
# npm ci requires a package-lock.json — skip gracefully until one is committed.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/dependabot-automerge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ jobs:
permissions:
contents: read
pull-requests: read
uses: petry-projects/.github/.github/workflows/dependabot-automerge-reusable.yml@dependabot-automerge/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
uses: petry-projects/.github/.github/workflows/dependabot-automerge-reusable.yml@dependabot-automerge/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
6 changes: 3 additions & 3 deletions .github/workflows/dependabot-rebase.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ permissions: {}
jobs:
dependabot-rebase:
permissions:
contents: write # update-branch via GITHUB_TOKEN (may touch .github/workflows/)
pull-requests: write # re-approve PRs after branch update
uses: petry-projects/.github/.github/workflows/dependabot-rebase-reusable.yml@dependabot-rebase/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
contents: write # update-branch via GITHUB_TOKEN (may touch .github/workflows/)
pull-requests: write # re-approve PRs after branch update
uses: petry-projects/.github/.github/workflows/dependabot-rebase-reusable.yml@dependabot-rebase/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets:
APP_ID: ${{ secrets.APP_ID }}
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
2 changes: 1 addition & 1 deletion .github/workflows/dependency-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ permissions:

jobs:
dependency-audit:
uses: petry-projects/.github/.github/workflows/dependency-audit-reusable.yml@dependency-audit/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github/.github/workflows/dependency-audit-reusable.yml@dependency-audit/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
4 changes: 2 additions & 2 deletions .github/workflows/dev-lead.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ jobs:
# dependency). Promotion is done by moving the dev-lead/v1-stable tag centrally; this
# caller is never edited on release. agent_ref threads the same channel into
# dev-lead's own scripts/prompts checkout. See https://github.com/petry-projects/.github/blob/main/standards/ci-standards.md#dev-lead-agent.
uses: petry-projects/.github-private/.github/workflows/dev-lead-reusable.yml@dev-lead/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github-private/.github/workflows/dev-lead-reusable.yml@dev-lead/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
with:
agent_ref: dev-lead/v1-ring1
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
permissions:
contents: write
pull-requests: write
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/feature-ideation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ on:
default: false
type: boolean
enhance_backlog:
description: 'Backlog enhancement sweep: enhance this repo''s open, human-authored, not-yet-enhanced Ideas (one comment each, idempotent). Combine with dry_run=true to preview.'
description: "Backlog enhancement sweep: enhance this repo's open, human-authored, not-yet-enhanced Ideas (one comment each, idempotent). Combine with dry_run=true to preview."
required: false
default: false
type: boolean
Expand Down Expand Up @@ -187,7 +187,7 @@ jobs:
discussions: write
id-token: write
actions: read
uses: petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@feature-ideation/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@feature-ideation/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
with:
# All values below come from `needs.prep.outputs.*` (resolved in the `prep`
# job) — NOT the `inputs` context — so this reusable `with:` compiles on the
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/idea-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,5 @@ permissions: {}

jobs:
idea-triage:
uses: petry-projects/.github/.github/workflows/idea-triage-reusable.yml@idea-triage/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
uses: petry-projects/.github/.github/workflows/idea-triage-reusable.yml@idea-triage/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
2 changes: 1 addition & 1 deletion .github/workflows/initiative-driver.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ on:
# (the job below filters to that label).
types: [closed, labeled]
schedule:
- cron: "41 3 * * *" # off-peak safety net for missed close events
- cron: '41 3 * * *' # off-peak safety net for missed close events
workflow_dispatch:

permissions:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/initiative-planner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,5 @@ permissions: {}

jobs:
initiative-planner:
uses: petry-projects/.github/.github/workflows/initiative-planner-reusable.yml@initiative-planner/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
uses: petry-projects/.github/.github/workflows/initiative-planner-reusable.yml@initiative-planner/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
4 changes: 2 additions & 2 deletions .github/workflows/pr-auto-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ on:
# to catch CI turning green on a PR.
# "CI" is TalkTerm's CI workflow name (see .github/workflows/ci.yml).
workflow_run:
workflows: ["CI"]
workflows: ['CI']
types: [completed]
# check_suite covers third-party CI checks (e.g. SonarCloud, external apps).
check_suite:
Expand All @@ -50,6 +50,6 @@ jobs:
pull-requests: read
checks: read
actions: read
uses: petry-projects/.github/.github/workflows/pr-auto-review-reusable.yml@pr-auto-review/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github/.github/workflows/pr-auto-review-reusable.yml@pr-auto-review/v1-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets:
GH_PAT_WORKFLOWS: ${{ secrets.GH_PAT_WORKFLOWS }}
4 changes: 2 additions & 2 deletions .github/workflows/pr-review-mention.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,5 @@ jobs:
pr-review-mention:
permissions:
pull-requests: write
uses: petry-projects/.github/.github/workflows/pr-review-mention-reusable.yml@pr-review-mention/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
uses: petry-projects/.github/.github/workflows/pr-review-mention-reusable.yml@pr-review-mention/v2-ring1 # NOSONAR(githubactions:S7637) first-party channel ref
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
14 changes: 7 additions & 7 deletions .github/workflows/pr-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,18 @@ on:
workflow_dispatch:
inputs:
pr_url:
description: "Optional: review a single PR URL instead of enumerating"
description: 'Optional: review a single PR URL instead of enumerating'
required: false
type: string
dry_run:
description: "If true, never submit reviews or comments"
description: 'If true, never submit reviews or comments'
required: false
default: "false"
default: 'false'
type: string
force_review:
description: "If true, bypass idempotency and re-review at the same head SHA"
description: 'If true, bypass idempotency and re-review at the same head SHA'
required: false
default: "false"
default: 'false'
type: string
repository_dispatch:
types: [pr-review-mention]
Expand Down Expand Up @@ -78,10 +78,10 @@ jobs:
contents: read
pull-requests: write
checks: read
uses: petry-projects/.github-private/.github/workflows/pr-review.yml@pr-review/stable # NOSONAR(githubactions:S7637) first-party channel ref
uses: petry-projects/.github-private/.github/workflows/pr-review.yml@pr-review/stable # NOSONAR(githubactions:S7637) first-party channel ref
with:
agent_ref: pr-review/stable
pr_url: ${{ inputs.pr_url || '' }}
dry_run: ${{ inputs.dry_run || '' }}
force_review: ${{ inputs.force_review || '' }}
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
secrets: inherit # NOSONAR(githubactions:S7635) first-party trusted reusable
Loading
Loading