release: 0.7.2 - #65
Merged
Merged
Conversation
chore: back-merge main into develop
* build: silence the ts-rs serde-attribute warning
Every `cargo clippy` run printed "failed to parse serde attribute".
`McpParameter::options` uses `deserialize_with` (see `mcp::model::de_options`)
to accept a YAML mapping as well as a list, and ts-rs has no concept of that
attribute, so it warns and skips it.
Skipping is the right thing: the field always SERIALIZES back as a plain list,
so the emitted `Array<McpOption>` is correct. The warning reported a decision
that was already right, on every run.
Nothing is lost by silencing it. The generated bindings are committed and CI
diffs them ("Fail on stale generated artifacts"), so if ts-rs ever emits a
different shape for this field the build fails with an error rather than a
warning nobody reads. Verified the bindings are byte-identical with the feature
on.
* refactor: move span keying out of the DescriptionText component
`pnpm lint` reported one warning for as long as this file has existed:
`react-refresh/only-export-components`, because `spansToKeyedParts` was
exported from a file that also exports a component.
The export was not gratuitous. Renderer tests here are node-only -- no jsdom,
no testing-library -- so a component cannot be unit tested, and the keying
rule (position-based, so two identical link spans stay distinct) has to live
where a test can reach it. The fix is to put it in its own module rather than
to stop testing it, which is the same split
`features/skillInstall/lib/installSelection.ts` already uses.
`DescriptionSpan` moves with it: the type is data the function transforms, not
part of the component's API, and the folder barrel now sources it from its
owner. Other layers were already importing their own `DescriptionSpan` from
`@/services/bridge`, so nothing outside this folder changes.
`pnpm lint` now reports nothing at all.
The prebuilt *-linux-gnu CLI is linked on the release runner (ubuntu-22.04, glibc 2.35) and a newer glibc runs older binaries but not the reverse, so on an older distribution it exits with "libc.so.6: version `GLIBC_2.34' not found" before reaching main(). Releases now also carry a statically linked musl archive per architecture, which depends on no system libc; this costs one extra cargo build and no new tooling, since every crate in the CLI's tree is pure Rust with no -sys dependency. install.sh reads the host's glibc and picks between the two, falling back to the gnu archive only on an HTTP error (an older release has no musl asset) and never on a transport failure, which would otherwise misreport a flaky network as a missing asset. A binary that cannot start now names the remedy and exits non-zero instead of reporting success. CI builds x86_64 musl and cross-checks aarch64 so the first musl link never happens on a tag, and the publish job fails if any of the eight CLI archives is absent rather than shipping a release with a hole in it. The new check-glibc-floor skill keeps the floor consistent across the workflow, the installer, the docs and the download labels, and is part of pre-release-check. The desktop app is unaffected and keeps the glibc 2.35 floor: it links the distribution's WebKitGTK and so cannot be static.
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.
Release 0.7.2. Carries the accumulated
developwork tomainfor tagging.Linux CLI: a static musl build, chosen by the host's glibc
The prebuilt
*-linux-gnuCLI is linked on the release runner (ubuntu-22.04,glibc 2.35). A newer glibc runs older binaries but not the reverse, so on an
older distribution the binary exits with
libc.so.6: version `GLIBC_2.34' not foundbefore reachingmain()-- the install looks successful and nothingruns.
Releases now also carry a statically linked musl archive per architecture,
published alongside the glibc ones so pinned installs keep resolving the asset
name they already know. It costs one extra
cargo buildand no new tooling:every crate in the CLI's tree is pure Rust with no
-sysdependency.scripts/install.shreads the host's glibc and picks between them, withSKILLKEEPER_LIBC=gnu|muslto override.The desktop app is unaffected and keeps the glibc 2.35 floor: it links the
distribution's WebKitGTK and so cannot be static. That floor is now stated in
the docs, which it was not before.
Release safety added along the way
never happens on a tag, where a failure stops
publishand the tag has to bedeleted and re-cut.
upload-artifactwas set to warn and the staging step only rejected duplicatebasenames, so a skipped archive step would have published a release with a
hole in it.
check-glibc-floorskill keeps the floor consistent across theworkflow, the installer, the docs and the download labels, and is part of
pre-release-check.Verification
cargo fmt --check,check-version v0.7.2, no generated-artifact drift.cargo checkpasses for bothx86_64-unknown-linux-muslandaarch64-unknown-linux-musl.scripts/install.shexercised across 42 combinations of OS, architecture andglibc version under stubbed
uname/getconf/ldd; the eight publishedassets exactly cover the six the shell installer can request plus the two the
PowerShell installer requests. Clean under
sh -nanddash -n.it before any tag.