35 Commits

Author SHA1 Message Date
Zsombor Szabo 087066f946 fix(auth): enable native keyring backends on top of #359 (#373)
* fix(auth): enable native keyring backends

* test(auth): serialize config dir env test

* fix(auth): scope native keyring backends to desktop targets

* fix(ci): tolerate read-only gemini review tokens

* test(credential_store): cover race winner sync path
2026-03-12 09:58:52 -06:00
Justin Poehnelt bd5041e3da chore: Update workflow to use GOOGLEWORKSPACE_BOT_TOKEN and googleworkspace-bot identity for operations. (#388) 2026-03-10 14:25:45 -06:00
Justin Poehnelt ad99aa9a2a ci: use bot token for /gemini review comment (#384)
Gemini Code Assist ignores comments from github-actions[bot].
Using GOOGLEWORKSPACE_BOT_TOKEN posts as googleworkspace-bot instead.

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-10 13:23:53 -06:00
jpoehnelt-bot 80fd6c51ea ci: add workflow_dispatch trigger to Release (Changeset)
Allows manual re-triggering when bot-merged PRs don't fire the push event.
2026-03-10 12:28:15 -06:00
Justin Poehnelt b0f159eea0 ci: run smoketest immediately after linux build, gate other builds on it (#349)
Split x86_64-unknown-linux-gnu out of the build matrix into a dedicated
build-linux job. The smoketest now depends only on build-linux, running
as soon as that single build completes. The remaining cross-platform
builds (macOS, Windows, aarch64-linux) depend on the smoketest, so they
are skipped entirely if the smoketest fails — saving CI minutes.

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-09 16:04:44 -06:00
Justin Poehnelt 5872dbe474 fix(credential_store): stop persisting encryption key file when keyring is available (#345)
Previously, get_or_create_key() unconditionally wrote the encryption key
to ~/.config/gws/.encryption_key on first run, even when the OS keyring
was available. This left the key material on disk as a plain file,
making credentials portable by copying the config directory.

Changes:
- Extract save_key_file() helper to deduplicate file-writing logic
- On keyring read success: delete stale .encryption_key (migration)
- On NoEntry + existing file: migrate key into keyring, then delete file
- On NoEntry + new key: try keyring first, only write file as fallback

Fixes #344

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-09 15:51:05 -06:00
Justin Poehnelt 06edf7b05f fix(ci): add missing tool input to taiki-e/install-action for cargo-llvm-cov (#347)
When actions were SHA-pinned in #341, the tool name was lost. The
original uses: taiki-e/install-action@cargo-llvm-cov passed the tool
name as the tag. After pinning to a SHA, the tool input must be
specified explicitly via with: tool: cargo-llvm-cov.

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-09 15:41:37 -06:00
Justin Poehnelt 00adb5cb23 ci: make sccache setup resilient to cache API outages (#346)
Remove RUSTC_WRAPPER from global env and set it per-job only after the
sccache-action succeeds. When GitHub's cache API is unavailable, CI now
falls through to a plain (uncached) cargo build instead of failing.

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-09 15:00:10 -06:00
Justin Poehnelt d5d77d96d0 ci: pin all actions to a sha (#341) 2026-03-09 13:52:49 -06:00
Justin Poehnelt 5836d1527a ci: ignore sccache errors when GitHub down (#339) 2026-03-09 12:54:05 -06:00
Justin Poehnelt ba472602f6 build(ci): optimize nix and windows cache layers (#331) 2026-03-09 11:54:14 -06:00
Justin Poehnelt 7c7310a9a9 fix(ci): use default GITHUB_TOKEN instead of bot account for PR reviews 2026-03-09 11:06:46 -06:00
jpoehnelt-bot 1f47420caa fix: extract CLA label job into dedicated workflow to prevent feedback loop 2026-03-05 16:00:49 -07:00
Justin Poehnelt 49f2e4aa79 ci: Add concurrency control to the automation workflow. 2026-03-05 15:55:10 -07:00
Justin Poehnelt 1ff5bc820f ci: use pull_request_target 2026-03-05 15:34:44 -07:00
Justin Poehnelt 4b2702e539 ci: add path filtering to skip expensive jobs on non-Rust changes (#216)
- Add dorny/paths-filter to detect .rs, Cargo.toml/Lock, flake.nix/lock changes
- Gate test, lint, nix, skills, and build jobs behind change detection
- Remove duplicate coverage job (already in coverage.yml with Codecov upload)
- Main pushes always run all jobs unconditionally

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-05 14:28:17 -08:00
Justin Poehnelt 78817b048c ci: auto-trigger Gemini Code Assist review on PR push (#209) 2026-03-05 13:54:03 -08:00
Justin Poehnelt 88cb65ce80 chore: auto triage and fmt (#204)
* chore: auto triage and fmt

* chore: address PR review — add area:core, setup.rs to auth, move formatter

---------

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-05 13:07:43 -08:00
Justin Poehnelt 62d6ddbfa9 chore: steps to reduce contributor friction (#185)
* chore: steps to reduce contributor friction

* Update CLAUDE.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-03-05 09:08:50 -08:00
Steve Bazyl 37ab483840 feat: Add nix flake (#94) 2026-03-04 22:21:36 -07:00
Justin Poehnelt b3669e04a5 feat: Implement hourly cron and manual trigger for the generate-skills workflow to auto-sync skills via pull requests and downgrade CI drift check to a warning. (#63)
* feat: Implement hourly cron and manual trigger for the generate-skills workflow to auto-sync skills via pull requests and downgrade CI drift check to a warning.

* chore: regenerate skills [skip ci]

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-04 12:57:20 -08:00
Justin Poehnelt 9564896032 fix: add hourly cron to drip-publish skills past rate limit 2026-03-04 12:38:19 -07:00
Justin Poehnelt be29739699 fix: use explicit clawhub login for CI authentication
clawhub CLI requires explicit `clawhub login --token` call rather
than reading the CLAWHUB_TOKEN env var directly. Split the publish
step into separate authenticate and sync steps.
2026-03-04 12:36:07 -07:00
jpoehnelt-bot e8d533e722 ci: add workflow to publish OpenClaw skills to ClawHub (#55)
* ci: add workflow to publish OpenClaw skills to ClawHub

* ci: use documented clawhub sync flags

* ci: harden publish-skills workflow

- Pin clawhub@0.7.0 for supply-chain safety
- Add concurrency group to prevent parallel publishes
- Add PR dry-run validation
- Guard against missing CLAWHUB_TOKEN secret
- Add changeset file

---------

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-04 12:15:05 -07:00
Justin Poehnelt 9935ddee39 ci: auto-generate and commit skills on branch push 2026-03-04 00:57:29 -07:00
Justin Poehnelt 214fc18d4f ci: skip smoketest on fork pull requests (#47) 2026-03-04 00:24:13 -07:00
Justin Poehnelt 3cd4d522b2 fix: sync Cargo.toml version with changesets (#7) 2026-03-03 09:46:45 -08:00
Justin Poehnelt fd99954627 fix: use custom tag-release script for private packages 2026-03-03 10:24:27 -07:00
Justin Poehnelt 4d4cabeb16 ci: add concurrency controls to cancel stale PR runs 2026-03-03 10:13:44 -07:00
Justin Poehnelt 8ab58d670f ci: disable Windows Defender for cargo dirs 2026-03-03 10:10:40 -07:00
Justin Poehnelt ceacdbae09 ci: fix release 2026-03-03 10:07:42 -07:00
Justin Poehnelt a0ad08950d ci: speed up builds with rust-cache, sccache, and artifact reuse (#3) 2026-03-03 09:01:42 -08:00
Justin Poehnelt 4ed67adb64 ci: Configure custom npm registry URL and prevent its overwriting in the release workflow. 2026-03-03 09:32:50 -07:00
Justin Poehnelt 835335d85b fix: use changeset tag instead of publish, defer npm publishing to cargo-dist (#2)
* fix: use changeset tag instead of publish, defer npm publishing to cargo-dist

* fix: quote label names containing colons in labeler.yml

* chore: delete labeler
2026-03-02 16:49:37 -08:00
Justin Poehnelt f75bf6dcf7 feat: implement cli (#1) 2026-03-02 17:26:21 -07:00