Skip to content

v0.8.67: LongCat provider + post-#3960 review follow-ups + version bump#4034

Closed
Hmbown wants to merge 7 commits into
mainfrom
claude/codewhale-release-lane-steward-b9ytcs
Closed

v0.8.67: LongCat provider + post-#3960 review follow-ups + version bump#4034
Hmbown wants to merge 7 commits into
mainfrom
claude/codewhale-release-lane-steward-b9ytcs

Conversation

@Hmbown

@Hmbown Hmbown commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Summary

Wraps up the current lane as v0.8.67. Rebased on latest main.

New provider

  • LongCat (Meituan) as a first-class OpenAI-compatible provider — longcat (aliases long-cat/meituan-longcat/meituan), LONGCAT_API_KEY, default model LongCat-2.0, endpoint https://api.longcat.chat/openai/v1. Wired across ProviderKind/ApiProvider, provider registry, env overrides, model registry, provider picker, and docs, mirroring the existing Sakana OpenAI-Chat provider. Treated as an API-key provider throughout (no OAuth path).

Post-#3960 review follow-ups

Release bump

  • Workspace 0.8.66 → 0.8.67 (root, internal path-dep pins, npm wrapper, Cargo.lock), CHANGELOG.md [0.8.67] section + compare link, synced TUI changelog, README/INSTALL pointers. scripts/release/check-versions.sh passes.

No tag, publish, GitHub Release, or merge to main — those remain gated on explicit maintainer approval.

Testing

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-features --locked -- -D warnings … (CI Lint gate; green)
  • cargo test -p codewhale-config --lib (347) incl. provider_metadata_registry_covers_every_provider_kind_once, provider_metadata_defaults_match_runtime_helpers
  • cargo test -p codewhale-tui --bin codewhale-tui provider (367), skills::tests, prompts::tests
  • scripts/release/check-versions.sh (workspace=0.8.67, npm=0.8.67, lockfile in sync)
  • Release binary built + installed; codewhale --version0.8.67
  • LongCat live request + Enter-to-trust behavior — pending maintainer test in a terminal

Checklist

  • Updated docs or comments as needed
  • Added or updated tests where relevant
  • Verified TUI behavior manually if UI changes — pending your live test
  • Harvested/co-authored credit uses a GitHub numeric noreply address — n/a (maintainer-authored)

🤖 Generated with Claude Code

@Hmbown Hmbown force-pushed the claude/codewhale-release-lane-steward-b9ytcs branch from af5029a to 5f52a0c Compare July 5, 2026 04:26
@Hmbown Hmbown changed the title fix: post-merge follow-ups from #3960 review (flaky test, skill collisions, Enter-to-trust) fix + feat: post-#3960 review follow-ups and add Meituan LongCat provider Jul 5, 2026
@Hmbown Hmbown force-pushed the claude/codewhale-release-lane-steward-b9ytcs branch from 5f52a0c to fd60f51 Compare July 5, 2026 04:33
Hmbown added 6 commits July 5, 2026 04:52
config_override_requires_explicit_opt_in drains the process-global
PROMPT_OVERRIDE_NOTICES queue but didn't hold test_support::lock_test_env(),
while its sibling (tui::ui::tests::prompt_override_notice_surfaces_in_transcript_and_toast)
does. With only one side locking, the two could interleave their
take_prompt_override_notices() calls under the multi-threaded test binary
and intermittently see an empty vec. Take the lock so both serialize.

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
discover_from_directories already warns when two roots yield the same
normalized command name, but discover_recursive pushed every SKILL.md
unconditionally. With aggressive slugging, two sibling dirs under one root
(e.g. `My Skill/` and `my_skill/` → `my-skill`) could both land in the
registry with identical names; get() only ever resolves the first, leaving
the other silently unreachable. Mirror the cross-root behavior: keep the
first and emit a "shadowed by" warning. Adds a same-root regression test.

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
Trusting a workspace is a security boundary. The Trust step bound Enter —
the "advance" key on every other onboarding screen — to complete trust,
so a reflexive Enter granted execution trust, and the behavior was
inconsistent with the footer (which lists only 1/Y to trust, 2/N to exit).
Enter now surfaces a guidance hint pointing at the explicit keys instead of
trusting; it is neither an accidental-trust path nor a silent dead key. The
explicit Y/1 and N/2 handlers are unchanged.

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
The field doc claimed None "in tests / when no home directory is available,"
but discovery always sets the store and default_user_plugins_dir falls back
to /tmp. Reword to the real invariant: set by discovery; None only when a
registry is built without a store (e.g. a direct PluginRegistry::new()).

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
Adds LongCat (Meituan's LongCat API platform) as a built-in OpenAI-compatible
Chat Completions provider, mirroring the existing Sakana provider wiring:

- ProviderKind::LongCat / ApiProvider::LongCat with aliases
  (long-cat, meituan-longcat, meituan) and LONGCAT_API_KEY / LONGCAT_BASE_URL /
  LONGCAT_MODEL env overrides.
- Defaults: model LongCat-2.0, base https://api.longcat.chat/openai/v1,
  credential page https://longcat.chat/platform.
- Registered in the provider registry + ModelRegistry (LongCat-2.0), and wired
  through every provider match (config accessors, defaults, reasoning-effort,
  base-url persistence, env overrides, merge, header badge).
- API-key based like Sakana — deliberately NOT routed through the OpenAI Codex
  OAuth "missing credentials" message.
- Docs (PROVIDERS.md) and config.example.toml updated.

Verified: cargo check --workspace --all-features, the CI clippy gate
(-D warnings), codewhale-config tests (347), and tui provider tests (366) all
pass.

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
Advance the workspace version 0.8.66 -> 0.8.67 (root Cargo.toml, internal
path-dep pins, npm wrapper, Cargo.lock) and open the 0.8.67 CHANGELOG
section, rolling the accumulated Unreleased notes into it plus the LongCat
provider and the onboarding/plugins/skills follow-up fixes. README and
INSTALL version/tag pointers advanced to match. `check-versions.sh` passes
(workspace=0.8.67, npm=0.8.67, lockfile in sync).

No tag, publish, GitHub Release, or main merge — those remain gated on
explicit maintainer approval.

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
@Hmbown Hmbown force-pushed the claude/codewhale-release-lane-steward-b9ytcs branch from fd60f51 to f02c3ab Compare July 5, 2026 05:06
@Hmbown Hmbown changed the title fix + feat: post-#3960 review follow-ups and add Meituan LongCat provider v0.8.67: LongCat provider + post-#3960 review follow-ups + version bump Jul 5, 2026
Adding the LongCat ApiProvider variant tripped the web `check:facts` gate
("unmapped ApiProvider variant(s): LongCat"). Add LongCat to
PROVIDER_LABEL_MAP (web/scripts/facts-lib.mjs) and labelMap
(web/lib/facts-drift.ts), mirroring the Sakana entry, and regenerate
web/lib/facts.generated.ts. `node scripts/check-facts.mjs` now passes
(providers=30, version=0.8.67).

Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
@Hmbown

Hmbown commented Jul 8, 2026

Copy link
Copy Markdown
Owner Author

Config-lane unblock (2026-07-08)

Closing as superseded by main.

Evidence

Keeping this open was gating the catalog lane (crates/config) behind a false conflict with #3781. Closing clears that gate.

Refs #4092.

@Hmbown

Hmbown commented Jul 8, 2026

Copy link
Copy Markdown
Owner Author

Superseded by main (0.8.67 + LongCat + post-#3960 follow-ups already landed). See prior comment for evidence.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant