diff --git a/plugins/multi-repo/changes-banner.tsx b/plugins/multi-repo/changes-banner.tsx index 29ad3f5..77ba4a7 100644 --- a/plugins/multi-repo/changes-banner.tsx +++ b/plugins/multi-repo/changes-banner.tsx @@ -17,7 +17,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { experimental_Icon as Icon, useBbNavigate, - useComposerView, + useComposer, useRealtime, useRpc, } from "@get-bb/plugin-sdk/app"; @@ -71,12 +71,13 @@ function summarize(repos: readonly RepoChanges[]): Summary { * it — so a workspace that appears after the first read starts the timer then. */ export function ChangesBanner() { - const view = useComposerView(); + const composer = useComposer(); const rpc = useRpc(); const navigate = useBbNavigate(); // The registration scopes this to `"thread"`, so the narrowing always holds; // it is here because the scope union is what the hook returns. - const threadId = view.scope.kind === "thread" ? view.scope.threadId : null; + const threadId = + composer.scope.kind === "thread" ? composer.scope.threadId : null; /** Null until the first read answers; `[]` means "no workspace here". */ const [repos, setRepos] = useState(null); diff --git a/plugins/multi-repo/package-lock.json b/plugins/multi-repo/package-lock.json index 2b07434..cd376f9 100644 --- a/plugins/multi-repo/package-lock.json +++ b/plugins/multi-repo/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@get-bb/plugin-sdk": "0.5.31", + "@get-bb/plugin-sdk": "0.6.15", "zod": "^4.3.6" }, "devDependencies": { @@ -42,8 +42,8 @@ "vitest": "^3.2.7" }, "engines": { - "bb": ">=0.0", - "bbPluginSdk": ">=0.5.24" + "bb": ">=0.45", + "bbPluginSdk": ">=0.6.15" } }, "node_modules/@esbuild/aix-ppc64": { @@ -531,12 +531,12 @@ "license": "MIT" }, "node_modules/@get-bb/plugin-sdk": { - "version": "0.5.31", - "resolved": "https://registry.npmjs.org/@get-bb/plugin-sdk/-/plugin-sdk-0.5.31.tgz", - "integrity": "sha512-gcbNnwOHT+Mn2HtCeru5Icodt7UCdx4SuncESJKwg5n1v8Xt/5IZlMxO8DRNfeqoid8F9zoPYqZf2VMN27eakA==", + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/@get-bb/plugin-sdk/-/plugin-sdk-0.6.15.tgz", + "integrity": "sha512-S7UUC+mfY1V9wTU1NiWw+VyP1STcWm4+Cgoi/rzHhj1kfCuxnVdTozJ7XedKMeDM9vVGYU4y3+r/CpEWIdsiRg==", "dependencies": { "cross-spawn": "^7.0.6", - "zod": "^4.3.6" + "zod": "^4.6.5" }, "peerDependencies": { "@testing-library/react": "^16.3.2", @@ -2064,7 +2064,7 @@ "version": "7.6.13", "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -2119,7 +2119,7 @@ "version": "22.20.4", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.4.tgz", "integrity": "sha512-zJRE40jpHtKqE/C4fgHrAKQLJuSpzEnP9ff9Y7YtoR3Wd2pwqzlekDeEuUQXjRd+QCYnVnNwuJYmhdk9XV8gvA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -2129,7 +2129,7 @@ "version": "19.3.0", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -2301,7 +2301,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -2322,7 +2322,7 @@ "version": "12.11.1", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz", "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==", - "devOptional": true, + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -2337,7 +2337,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "file-uri-to-path": "1.0.0" @@ -2347,7 +2347,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -2359,7 +2359,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -2454,7 +2454,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/class-variance-authority": { @@ -2495,7 +2495,7 @@ "version": "5.10.1", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-5.10.1.tgz", "integrity": "sha512-pKRrRagItwk9rGIStcUyMxFX34x56zoX3KDf9HJ4ttwkXIK1qxK63EvXvEDmlxI9AdPJ+Y7TEKRftRlW5eSS7A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "luxon": "^3.7.2" @@ -2522,7 +2522,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/debug": { @@ -2547,7 +2547,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" @@ -2573,7 +2573,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -2593,7 +2593,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -2634,7 +2634,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -2703,7 +2703,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "devOptional": true, + "dev": true, "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" @@ -2741,14 +2741,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/fsevents": { @@ -2780,7 +2780,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/hast-util-to-html": { @@ -2825,7 +2825,7 @@ "version": "4.13.11", "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.11.tgz", "integrity": "sha512-/SMX/RQNJn7oNmFwH6DtwDqcrzZU2otm1FD6OJe2cWF6cfy/F8hq0XVBv7xW3FTJshRQwuBnXHDq2kNsdZnshg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=16.9.0" @@ -2846,7 +2846,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -2867,14 +2867,14 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/isexe": { @@ -2908,7 +2908,7 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -3044,7 +3044,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3057,7 +3057,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "devOptional": true, + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3067,7 +3067,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/ms": { @@ -3100,14 +3100,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/node-abi": { "version": "3.96.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.96.0.tgz", "integrity": "sha512-rebQ/lz7i0EkoLzUVSrKRzA69zMkwLp95kKMWoMDkkM00Suxz0D7zEQPwRml5fQum24mj7bPvmlgLAmu2JCiYg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -3120,7 +3120,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -3225,7 +3225,7 @@ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -3263,7 +3263,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -3274,7 +3274,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "devOptional": true, + "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -3290,7 +3290,7 @@ "version": "19.3.0", "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3300,7 +3300,7 @@ "version": "19.3.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "scheduler": "^0.28.0" @@ -3385,7 +3385,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -3473,7 +3473,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -3494,14 +3494,14 @@ "version": "0.28.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/semver": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3562,7 +3562,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -3583,7 +3583,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -3655,7 +3655,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -3680,7 +3680,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3714,7 +3714,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.5.tgz", "integrity": "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -3727,7 +3727,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -3823,7 +3823,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -3850,7 +3850,7 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/unist-util-is": { @@ -3975,7 +3975,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/vaul": { @@ -4229,7 +4229,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/zod": { diff --git a/plugins/multi-repo/package.json b/plugins/multi-repo/package.json index 48365e8..47716d2 100644 --- a/plugins/multi-repo/package.json +++ b/plugins/multi-repo/package.json @@ -4,8 +4,8 @@ "type": "module", "description": "Give a project a set of git repos and every thread a checkout of each", "engines": { - "bb": ">=0.0", - "bbPluginSdk": ">=0.5.24" + "bb": ">=0.45", + "bbPluginSdk": ">=0.6.15" }, "bb": { "name": "Multi-repo workspace", @@ -29,7 +29,7 @@ "build": "bb plugin build" }, "dependencies": { - "@get-bb/plugin-sdk": "0.5.31", + "@get-bb/plugin-sdk": "0.6.15", "zod": "^4.3.6" }, "devDependencies": { diff --git a/plugins/thread-briefs/README.md b/plugins/thread-briefs/README.md index c9fadd7..7d8cfbd 100644 --- a/plugins/thread-briefs/README.md +++ b/plugins/thread-briefs/README.md @@ -420,7 +420,7 @@ so a sweep running up to an hour late is invisible. | Auto-archive | a `17 * * * *` `bb.background.schedule` over `threads.list`, `planArchives` deciding purely, `threads.archive` doing it, and `autoArchivedAt` on the brief row remembering it | | Brief UI | a `threadPanelAction` tab, opened by an `experimental_threadHeaderAction` button through `useBbNavigate().openThreadPanel` | | Board | a `navPanel` with an `experimental_sidebarAccessory`, one `listBriefCards` call joined on the client to `experimental_useSidebarThreads`, the view in component state and mirrored to local storage (*not* the panel's `subPath` — see above), and every rule — columns, order, drops, view parsing — pure in `board.ts` | -| Re-entry refresher | an `app.composer.customize({banners})` card scoped to `thread`, `chrome: "bare"`, deciding nothing itself: one `getRefresher` call on mount, `experimental_onSubmitted` for the send that retires it | +| Re-entry refresher | an `app.composer.customize({banners})` card scoped to `thread`, `chrome: "bare"`, deciding nothing itself: one `getRefresher` call on mount, `onSubmitted` for the send that retires it | | Sidebar sections | `bb.sdk.threadSections` + `threads.update({sectionId})`, with `thread-list`'s own `organizationMode` / `manualSectionOrder` preferences set through `bb.sdk.plugins.callRpc` | | Thread titles | `threads.update({title})`, gated on `planRename` comparing the thread's title against the one this plugin last wrote | @@ -440,7 +440,7 @@ refresher exists for. The one thing the client decides is when to stop showing it, because that is the one input the server cannot see: a send, through -`useComposer().experimental_onSubmitted`. +`useComposer().onSubmitted`. ### Why a content script rather than a list fork diff --git a/plugins/thread-briefs/app.test.tsx b/plugins/thread-briefs/app.test.tsx index f79a040..55ef2de 100644 --- a/plugins/thread-briefs/app.test.tsx +++ b/plugins/thread-briefs/app.test.tsx @@ -870,7 +870,7 @@ describe("the re-entry refresher", () => { * The banner beside a button that submits through the same composer. * * The harness has no "press Enter" driver, so a send is staged the only way - * a plugin can stage one: through `experimental_submit`, which fires the same + * a plugin can stage one: through `submit`, which fires the same * submission listeners bb's own send does. */ const withProbe = (Banner: ComponentType) => @@ -881,7 +881,7 @@ describe("the re-entry refresher", () => { diff --git a/plugins/thread-briefs/app.tsx b/plugins/thread-briefs/app.tsx index eb5753f..0640122 100644 --- a/plugins/thread-briefs/app.tsx +++ b/plugins/thread-briefs/app.tsx @@ -12,7 +12,6 @@ import { experimental_useSidebarThreads, useBbNavigate, useComposer, - useComposerView, useRealtime, useRpc, } from "@get-bb/plugin-sdk/app"; @@ -690,9 +689,9 @@ const REFRESHER_BANNER_ID = "re-entry"; */ function ReentryRefresher() { const rpc = useRpc(); - const view = useComposerView(); const composer = useComposer(); - const threadId = view.scope.kind === "thread" ? view.scope.threadId : null; + const threadId = + composer.scope.kind === "thread" ? composer.scope.threadId : null; const [state, setState] = useState(null); const [isDismissed, setIsDismissed] = useState(false); @@ -744,7 +743,7 @@ function ReentryRefresher() { dismissRef.current = dismiss; }, [dismiss]); useEffect( - () => composer.experimental_onSubmitted(() => dismissRef.current()), + () => composer.onSubmitted(() => dismissRef.current()), [composer], ); @@ -753,7 +752,7 @@ function ReentryRefresher() { // agent — makes the sentence describe a position that is already moving. // Hidden rather than dismissed: nothing was read, so nothing is recorded, and // the card is still owed when the thread goes quiet again. - if (view.run.isRunning) return null; + if (composer.isRunning) return null; return ( // The card chrome is drawn here rather than taken from the host's diff --git a/plugins/thread-briefs/package-lock.json b/plugins/thread-briefs/package-lock.json index a8458bc..6eab614 100644 --- a/plugins/thread-briefs/package-lock.json +++ b/plugins/thread-briefs/package-lock.json @@ -12,7 +12,7 @@ "zod": "^4.3.6" }, "devDependencies": { - "@get-bb/plugin-sdk": "0.5.24", + "@get-bb/plugin-sdk": "0.6.15", "@pierre/diffs": "^1.2.9", "@radix-ui/react-alert-dialog": "^1.1.19", "@radix-ui/react-context-menu": "^2.3.3", @@ -45,8 +45,8 @@ "vitest": "^3.2.7" }, "engines": { - "bb": ">=0.43", - "bbPluginSdk": ">=0.5.24" + "bb": ">=0.45", + "bbPluginSdk": ">=0.6.15" } }, "node_modules/@asamuzakjp/css-color": { @@ -798,13 +798,13 @@ "license": "MIT" }, "node_modules/@get-bb/plugin-sdk": { - "version": "0.5.24", - "resolved": "https://registry.npmjs.org/@get-bb/plugin-sdk/-/plugin-sdk-0.5.24.tgz", - "integrity": "sha512-NHF2PZosuP0FNO5OZwb3T2TdQEJ7Nyycv1Ytl1AVgIfZT8g5+sz9kFynZp6yLpmx2NJXq7oCivC4B+4WQXFLqQ==", + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/@get-bb/plugin-sdk/-/plugin-sdk-0.6.15.tgz", + "integrity": "sha512-S7UUC+mfY1V9wTU1NiWw+VyP1STcWm4+Cgoi/rzHhj1kfCuxnVdTozJ7XedKMeDM9vVGYU4y3+r/CpEWIdsiRg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.6", - "zod": "^4.3.6" + "zod": "^4.6.5" }, "peerDependencies": { "@testing-library/react": "^16.3.2", diff --git a/plugins/thread-briefs/package.json b/plugins/thread-briefs/package.json index 243c9cd..f0c47b3 100644 --- a/plugins/thread-briefs/package.json +++ b/plugins/thread-briefs/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "type": "module", "engines": { - "bb": ">=0.43", - "bbPluginSdk": ">=0.5.24" + "bb": ">=0.45", + "bbPluginSdk": ">=0.6.15" }, "bb": { "name": "Thread briefs", @@ -22,7 +22,7 @@ "zod": "^4.3.6" }, "devDependencies": { - "@get-bb/plugin-sdk": "0.5.24", + "@get-bb/plugin-sdk": "0.6.15", "@pierre/diffs": "^1.2.9", "@radix-ui/react-alert-dialog": "^1.1.19", "@radix-ui/react-context-menu": "^2.3.3",