diff --git a/.changepacks/changepack_log_honest_verdicts_and_current_binary.json b/.changepacks/changepack_log_honest_verdicts_and_current_binary.json deleted file mode 100644 index b290bc48..00000000 --- a/.changepacks/changepack_log_honest_verdicts_and_current_binary.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "changes": { - "crates/devup-mcp/Cargo.toml": "Minor" - }, - "note": "Four places said work had been done that had not been, and one place made a caller chase a failure that could not be retried. `devup_ui_validate` reported `file-placement` against Next.js files whose default export the framework requires - `app/layout.tsx` without one is a build error, so the advice could not be taken, and because the finding is a warning it failed `strict: true` on a correct application; `not-found.tsx` collected two findings for the same reason. The page-name rule judged every component in a route file rather than the one the route renders, so a correct `export default function NoticePage` was reported for its own `PageContent` helper, and `one-component-per-file` then asked for that helper to be moved somewhere the file-placement rule forbids - leaving `src/components/` as the only destination for a component used by one route. At a monorepo root `theme_for_validation` took the first `devup.json` the sorted scan found, so `apps/front` code was validated against `apps/admin`'s theme and its real tokens came back as `unknown-token` *errors* suggesting the other package's token as the fix; it now refuses to choose and returns `candidateProjectRoots` naming the `projectRoot` that selects each. A call with neither `tsx` nor `files` validated the empty string and answered `ok: true, okReason: \"clean\"` about code never sent, and is now refused; `clean` itself is split so `clean-unverified-tokens` says a `$token` reference existed but no theme was resolved to check it against. Tokens inside `css()`/`globalCss()`/`keyframes()` were invisible to the token check, so an unknown one there passed in silence. On the Figma side a Section whose candidate menu exceeded the plugin transport was refused outright, returning nothing for a menu that was merely long and reproducing the same refusal on every retry because the ceiling follows the Section's size; it now surrenders text previews first, then shortens from the end under the same `projectionTruncated` the traversal and candidate caps already raise, and `allScreens` still refuses a truncated index rather than pretending to be whole. Of the twenty-five codes the plugin scripts throw only two carry a JSON payload, so the rest arrived as `pluginCode: null` with generic advice; the code is now read from the message for all of them, and the two that name a caller-fixable condition are mapped - a missing node or page reached callers as `-32603 INTERNAL_ERROR` when the README promises the JSON-RPC code alone separates \"fix the arguments\" from \"stop and report\", which is the most common mistake there is. The placement contract now carries the collected parent's fill, because learning that the desktop frame behind an app screen was `#E6EDE6` otherwise took a second Figma acquisition for a colour the capture already held. Finally, a new `self_update` module keeps the binary current without anyone tending it: the existing release check now fetches the published asset for the platform, proves it by running `--self-check` on it, and renames it into place - never touching the running image, so the stdio pipe the host already holds is never at risk, and the next start is the one that differs. It stands down where it is not the owner of its install, and reports which mechanism is in force under `server.updateAvailable.autoUpdate`.", - "date": "2026-09-21T21:40:00+09:00" -} diff --git a/Cargo.lock b/Cargo.lock index 04ae762c..11b11a9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -693,7 +693,7 @@ checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" [[package]] name = "devup-mcp" -version = "0.9.0" +version = "0.10.0" dependencies = [ "anyhow", "async-trait", @@ -722,7 +722,7 @@ dependencies = [ [[package]] name = "devup-mcp-devup-ui" -version = "0.9.0" +version = "0.10.0" dependencies = [ "devup-mcp-figma", "insta", @@ -739,7 +739,7 @@ dependencies = [ [[package]] name = "devup-mcp-figma" -version = "0.9.0" +version = "0.10.0" dependencies = [ "anyhow", "async-trait", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "devup-mcp-visual" -version = "0.9.0" +version = "0.10.0" dependencies = [ "anyhow", "image", diff --git a/Cargo.toml b/Cargo.toml index 538c2ad2..596c8af7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ members = [ resolver = "3" [workspace.package] -version = "0.9.0" +version = "0.10.0" edition = "2024" rust-version = "1.98" license = "MIT"