Repository navigation
fix(client-sdk): stop compose box discarding in-progress notes #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
e46503b
bfcbcdf
2beb8fa
4b3b15c
3382868
2d945dd
fdebd40
e35c5d1
4bf8443
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # Normalize line endings for this cross-platform CLI. | ||
| * text=auto eol=lf | ||
|
|
||
| # dist/ is compiled output, committed on purpose: this is a Claude Code plugin | ||
| # distributed as a GitHub repo, and plugin installs fetch repo contents with no | ||
| # build step. If dist/ is not committed, every install breaks. Do not gitignore it. | ||
| # | ||
| # It is still generated code, not something a human edits by hand, so mark it as | ||
| # such: GitHub collapses it in PR diffs and excludes it from language stats, and | ||
| # -diff keeps it out of local `git diff` output too. CI still enforces that dist/ | ||
| # matches a fresh build of src/, see .github/workflows/ci.yml. | ||
| dist/** linguist-generated=true -diff |
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -2,21 +2,53 @@ name: CI | |||||||
|
|
||||||||
| on: | ||||||||
| push: | ||||||||
| branches: [main] | ||||||||
| pull_request: | ||||||||
| branches: [main] | ||||||||
|
|
||||||||
| # Minimal permissions: the workflow only checks out code and runs local scripts. | ||||||||
| permissions: | ||||||||
| contents: read | ||||||||
|
|
||||||||
| jobs: | ||||||||
| test: | ||||||||
| name: Test (Node ${{ matrix.node }}) | ||||||||
| runs-on: ubuntu-latest | ||||||||
| strategy: | ||||||||
| matrix: | ||||||||
| node: [18, 20] | ||||||||
| node: [22, 24, 26] | ||||||||
| steps: | ||||||||
| - uses: actions/checkout@v4 | ||||||||
| - uses: actions/setup-node@v4 | ||||||||
| with: | ||||||||
| node-version: ${{ matrix.node }} | ||||||||
| - run: npm install | ||||||||
| cache: npm | ||||||||
| - run: npm ci | ||||||||
| - run: npm run typecheck | ||||||||
| - run: npm run build | ||||||||
| - run: node --test | ||||||||
| - run: npm test | ||||||||
|
|
||||||||
| # dist/ is committed on purpose (see .gitattributes), which also hides it from | ||||||||
| # PR diffs. That makes stale compiled output easy to miss, so enforce the | ||||||||
| # invariant here instead: a clean rebuild of src/ must produce byte-identical | ||||||||
| # dist/ output. Runs on a single Node version only, there is nothing to gain | ||||||||
| # from comparing build output across the matrix. | ||||||||
| dist-drift: | ||||||||
| name: Verify dist/ matches a fresh build | ||||||||
| runs-on: ubuntu-latest | ||||||||
| steps: | ||||||||
| - uses: actions/checkout@v4 | ||||||||
| - uses: actions/setup-node@v4 | ||||||||
| with: | ||||||||
| node-version: 24 | ||||||||
| cache: npm | ||||||||
| - run: npm ci | ||||||||
| - run: npm run build | ||||||||
| - name: Fail if dist/ is stale | ||||||||
| run: | | ||||||||
| if git diff --exit-code -- dist/; then | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win Detect untracked generated files.
Proposed fix- if git diff --exit-code -- dist/; then
+ if git diff --exit-code -- dist/ &&
+ test -z "$(git ls-files --others --exclude-standard -- dist/)"; then📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
| echo "dist/ matches a fresh build of src/." | ||||||||
| else | ||||||||
| echo "::error::dist/ does not match a fresh build of src/. Run 'npm run build' locally and commit the updated dist/ output." | ||||||||
| exit 1 | ||||||||
| fi | ||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| # This repo ships as a Claude Code plugin, distributed via the GitHub repo | ||
| # itself (see .claude-plugin/), not published to npm. release-please's job | ||
| # here is only to open the release PR, then on merge create the git tag, | ||
| # the GitHub Release, and the changelog. There is no publish step, unlike | ||
| # the sibling openapi-zod-ts monorepo's release workflow. | ||
| name: Release Please | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| workflow_dispatch: {} | ||
|
|
||
| permissions: | ||
| contents: write # create tags and releases | ||
| issues: write # release-please's documented basic configuration requires this | ||
| pull-requests: write # create and update release PRs | ||
|
|
||
| jobs: | ||
| release-please: | ||
| name: Release Please | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
ci=.github/workflows/ci.yml
rg -n -C 2 '^(on:| pull_request:| push:| branches:)' "$ci"
repo="$(gh repo view --json nameWithOwner --jq '.nameWithOwner')"
gh api "repos/$repo/branches/main/protection/required_status_checks" \
--jq '{strict,contexts,checks}' || true
gh pr list --repo "$repo" --base main --state all --limit 10 \
--json number,title,headRefName,statusCheckRollupRepository: codewithagents/loupe Length of output: 4573 🌐 Web query:
💡 Result: According to official GitHub documentation, events triggered by the GITHUB_TOKEN do not create new workflow runs, a behavior designed to prevent accidental recursive workflow execution [1][2]. There are two primary exceptions to this rule: 1. workflow_dispatch and repository_dispatch events always create workflow runs [1][2]. 2. pull_request events with the opened, synchronize, or reopened activity types create workflow runs that are placed in an approval-required state, allowing users with write access to manually trigger them [1][2]. Regarding the google-github-actions/release-please-action, the action's token input defaults to using the GITHUB_TOKEN if no other token is provided [3][4]. Because of the GitHub-wide restriction on the GITHUB_TOKEN, if you use the default token, the release pull requests or tags created by the action will not trigger subsequent GitHub Actions workflows (such as CI checks) [4][5]. To ensure that subsequent workflows, such as CI or release-triggered automations, execute automatically, you must provide a personal access token (PAT) or a GitHub App installation token via the token input [4][5]. Citations:
Provide a workflow token that can trigger CI, or verify that checks are not required.
🤖 Prompt for AI Agents |
||
| with: | ||
| config-file: release-please-config.json | ||
| manifest-file: .release-please-manifest.json | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| { ".": "1.0.0" } |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
Sensitive Data Exposure (CWE-522): Insufficiently Protected Credentials
Reachability: External · Exploitability: Moderate
Disable credential persistence for the artifact-check job.
actions/checkout@v4persists the workflow token by default. Since this job runsnpm ciandnpm run buildfrom pull-request contents, malicious code can exfiltrate the token. Setpersist-credentials: falsefor this checkout.🧰 Tools
🪛 zizmor (1.29.0)
[warning] 40-40: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
🤖 Prompt for AI Agents
Source: Linters/SAST tools