v0.8.67: LongCat provider + post-#3960 review follow-ups + version bump#4034
Closed
Hmbown wants to merge 7 commits into
Closed
v0.8.67: LongCat provider + post-#3960 review follow-ups + version bump#4034Hmbown wants to merge 7 commits into
Hmbown wants to merge 7 commits into
Conversation
af5029a to
5f52a0c
Compare
5f52a0c to
fd60f51
Compare
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>
fd60f51 to
f02c3ab
Compare
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>
This was referenced Jul 7, 2026
Closed
Owner
Author
Config-lane unblock (2026-07-08)Closing as superseded by Evidence
Keeping this open was gating the catalog lane ( Refs #4092. |
Owner
Author
|
Superseded by main (0.8.67 + LongCat + post-#3960 follow-ups already landed). See prior comment for evidence. |
This was referenced Jul 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Wraps up the current lane as v0.8.67. Rebased on latest
main.New provider
longcat(aliaseslong-cat/meituan-longcat/meituan),LONGCAT_API_KEY, default modelLongCat-2.0, endpointhttps://api.longcat.chat/openai/v1. Wired acrossProviderKind/ApiProvider, provider registry, env overrides, model registry, provider picker, and docs, mirroring the existingSakanaOpenAI-Chat provider. Treated as an API-key provider throughout (no OAuth path).Post-#3960 review follow-ups
promptsflaky test now takeslock_test_env()(claude[bot] finding).Enterno longer silently grants workspace trust (security; Copilot finding).PluginRegistry::overrides_pathdoc corrected.Release bump
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.shpasses.Testing
cargo fmt --all -- --checkcargo 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_helperscargo test -p codewhale-tui --bin codewhale-tui provider(367),skills::tests,prompts::testsscripts/release/check-versions.sh(workspace=0.8.67, npm=0.8.67, lockfile in sync)codewhale --version→0.8.67Checklist
🤖 Generated with Claude Code