Repository navigation
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Add two experimental BbNavigate methods so plugin UI can send people to bb's own pages and commands without plugin-specific core code: - experimental_openAppRoute(path) navigates to a same-origin in-app route (query and hash kept) and refuses absolute, protocol-relative, backslash, control-character, and /api paths. - experimental_runAppCommand(commandId) dispatches a built-in app command such as palette.open or thread.search through the normal handler chain and returns false for unknown or plugin ids. PluginHomepageSectionRegistration.title becomes optional; the host skips the heading when it is absent so a section that renders nothing leaves no orphan heading. The SDK test harness records both intents, and the SDK version moves to 0.6.24. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…page Tips renders a single quiet tip below the new-thread composer, picked from a typed catalog of bb core features, built-in plugins, and "ask bb to..." workflows. Each tip has a priority, a one-sentence body, an optional one-click action (fill the composer, open a bb page, or run an app command), and an eligibility predicate over local signals: thread and finished-thread counts, child and automation threads, providers in use, installed and enabled plugins, the app version, the client surface and OS, and observed rate limits and queued follow-ups. At most one new tip appears per day. Dismissing retires a tip for good; a tip also retires once its action is taken, once its feature is seen in use, or after two shown days. What's new shows once per version after an upgrade. State and shown/dismissed/acted counts live in plugin kv storage; nothing is sent anywhere. bb tips [--all] [--json], bb tips dismiss <id>, and bb tips reset mirror the current/dismiss/act/list/reset plugin RPC methods. The plugin is bundled and enabled by default with a Show tips switch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rename the bundled Tips plugin to bb--tips under the bundled-plugin prefix reservation, and accept only palette.open, thread.search, and settings.open in experimental_runAppCommand so plugins cannot run state-changing commands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…view
Tips now shows a desktop gallery of three tiles under the root composer:
each tile has a small theme-token scene that rests on its end state and
replays on hover or focus, a title, one line of copy, and its outcome
("Adds prompt" or the destination label). Hovering a prompt tip previews
its prompt as the composer placeholder; clicking fills the composer,
moves any existing draft into the prompt's trailing "Task: " slot, and
focuses the caret at the end. One "More ideas" button rotates the set
and one menu hides tips for today or turns them off. The section renders
nothing on phones, in the compact layout, or when the page is too narrow
for three tiles.
The engine picks three eligible tips per day, ordered by threads waiting
on the user, a recent rate limit for Account Pooler, and per-project
subthread and automation usage, then by fewest shown days and priority.
More ideas rotates through unseen tips before wrapping. Tips without an
action are gone. `bb tips` marks the three showing today and gains
`more` and `hide [--undo]` for parity with the UI.
Adds the experimental `useComposer().experimental_setPlaceholderPreview`
SDK API, scoped to the calling surface and released on unmount, with
audit, Plugin Guide, and harness coverage. The prototype stories move
into the plugin as visual coverage of the production gallery.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Account Pooler's tip no longer filters by provider id, which the provider-literal ratchet forbids outside provider plugins: it shows after any rate limit or heavy use while Account Pooler is installed but off. The reset RPC handler returns a literal `ok: true`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tories
Tiles lose their "Adds prompt", destination, and "In composer" rows; the
whole tile stays the button and its accessible name still says what it
does ("Adds prompt to composer", "Opens settings: Get the app"). The tile
is shorter, and the section sits a further mt-6 below the composer so it
reads as its own section. The gallery header and grid are exported so
the new Ladle stories can compose two written-tip explorations (a quiet
tip line above the header, or the tip as the header) next to the
production layout, rendered under the real new-thread composer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The scene graphics are gone: each card is just a title and a muted body, with generous padding and a hover/focus fill, still one button with its action in the accessible name. Long tip bodies are tightened so they fit in three lines. The "Try with bb" label is removed; the section is named "Tips" for assistive tech, and More ideas plus the menu sit right-aligned in a slim row below the cards, sharing it with the status line. The plugin's scene-only story is deleted, and the app story now compares the production cards with a borderless text-only exploration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every catalog tip now carries a bb icon name, returned in the tip view and rendered in a small muted chip above the title. Cards sit on the raised surface token with the hairline border and the theme's xs shadow, stepping to the sm shadow on hover or focus (transition only when motion is allowed). The borderless Ladle exploration is gone; the Control story renders the production cards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The homepage section slot sits in a content column that does not fill the page height, so a plugin cannot anchor itself to the bottom of the empty area. Tips instead takes a larger fixed gap (mt-28 on top of the host's mt-6, about 136px), which keeps the cards in the lower half of the composer area without adding a scrollbar at 1280x720 through 1440x1000. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cards use the page background, like the composer, with the hairline border and xs shadow, and take the raised surface fill only on hover or focus. The icon chip steps down from muted to the recessed surface tint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two Ladle-only variants of the New thread tips render a small living diorama at the top of each card, in the same layout as production: cut paper on kraft stock, or polished objects on a lit stage. Scenes cover subthreads, setup, phone, split panes, the morning digest, and Browser Automation, with slow idle motion and pointer parallax that stop under reduced motion. Production cards are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Story C drops the card chrome: each tip is a small neutral object standing on the page with a soft contact shadow, title and body beneath, and the whole column as the button with a hover fill and focus ring. Objects are still at rest and play a short settle with light parallax only on hover or focus, static under reduced motion, with at most one small accent each. Production cards are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every catalog tip now carries a tone (blue, green, amber, orange, or rose), returned in the tip view. The icon chip takes a 14% tint of that theme accent and the icon mixes the hue with ink, keeping icon contrast above 5:1 in light and dark; rose is a muted blend of the destructive and timeline accents so it never reads as an error. The cards are otherwise unchanged. Ladle keeps both candidates (tinted chips, and tinted chips with a corner wash) next to the production story. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each catalog tip now draws its own 44px inline SVG, a tiny product sketch of the idea (subthreads branching, a settings panel, a phone thread list, split panes, an envelope digest, decision buttons, and so on), in one line-and-wash style with ink strokes and a single small accent from the tip's tone. The tinted chip and the Hugeicons icon field are gone. The illustrations are decorative and static. Ladle drops the chip candidates and adds a sheet of every tip's illustration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The three tips now stack as rows in one hairline-divided container under the composer, each with its illustration on the left and title and body on the right; the whole row is the button and keeps the hover fill, prompt preview, and click-to-fill. "More ideas", the overflow menu, the more RPC, and `bb tips more` are gone; the daily set still rotates unseen tips first. A low-key "Hide tips" button above the feed turns tips off with an inline Undo that points to the Show tips setting. The Show tips setting no longer has a fixed default. The first time Tips runs it classifies the install once, as new when it has no threads or none older than two weeks, saves that in plugin storage, and writes the setting on for new installs and off for existing ones. An explicit choice always wins, and the saved decision never flips. `bb tips` says when tips are off and how to turn them on. The illustrations render at 64px with lighter strokes and more fill, and Run work in parallel, Build a tool, and Command palette are redrawn to read clearly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At rest every illustration is unchanged and still. Hovering or keyboard-focusing a row acts out its tip in one short pass (bars fill, toggles flip and the slider glides, a new row slides into the phone, panes light up, the digest rises, the cursor taps and checks, the clock hand turns, the palette key presses and results appear, bars grow, the tool snaps in, the sparkle twinkles) and holds the end state; leaving eases back. Only the hovered row moves, everything is CSS transforms and opacity, and reduced motion turns it off. The Illustrations story plays each drawing on hover or focus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each new visit to the New thread page adds one tip at the top and drops the oldest, cycling the eligible library unseen-first. Clicked tips skip the next visit; tips for features already in use retire. The feed fades at the bottom. Tips now follow a validated schema with a source, version, review, and expiry fields, and a closed set of action types run from one module. Illustrations are built from a shared diagram kit with named hover animations, shown in new Ladle stories. AUTHORING.md and a repo-local tips-authoring skill describe how to add a tip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Branch's from prop collided with the kit's animation from offset, so its endpoints are now start and end. The server tests now expect a refill at the top of the feed and check per-project eligibility on a first visit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stacks Tips on #5222. Keeps both sides of the useBbNavigate API (experimental_openAppRoute, experimental_runAppCommand, and experimental_openTerminal), their docs and audit entries, and takes the base's plugin SDK version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Home-screen sections now receive experimental_setupComplete, derived in useSetupChecklist from the same state that renders the setup checklist and banner. Tips renders nothing and makes no calls until it is true. Adds tip_shown and tip_used to the telemetry allow-list with an enum of catalog tip ids, a 1-3 position, and the action type. Tips reports each tip shown once per visit and each click; the server drops both when usage data sharing is off. Privacy copy, configuration docs, and the Tips overview now describe these events. Plugin SDK 0.6.33. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brsbl
changed the base branch from
main
to
bb/checklist-led-home-notification-opt-in-onboardin-thr_7xet9fqq42
October 8, 2026 21:15
brsbl
added this pull request to stack #5232
October 8, 2026 21:15
…metry fake Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in #5222 after #5228 removed the welcome page and checklist card and #5229 removed the navigation plugin. experimental_setupComplete still comes from useSetupChecklist, which drives the remaining setup banner. Plugin SDK moves to 0.6.35, one above the base's 0.6.34. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renames the subthreads tip to child-threads and uses "child threads" in its copy, prompt, illustration, telemetry allow-list, docs, and tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each tip now has a tier: 1, 2, 3, or unranked, based on which early behaviors go with people sticking with bb. The feed shows tier 1, then unranked, then tier 2, then tier 3; boosts and priority only reorder tips inside a tier, and tier 3 appears only after higher tiers have all been shown. Automations lead the unranked tips. Adds tips for a second agent on the same task, adding a second agent, bb connect, and the bb CLI, with illustrations from the diagram kit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Human comments
Stack
Stacked on #5222 (setup checklist, onboarding telemetry allow-list): this PR targets
bb/checklist-led-home-notification-opt-in-onboardin-thr_7xet9fqq42and is registered as GitHub stack #5232 (#5222 → #4991). #5222's branch was merged in, not rebased; the diff against it is Tips work only.What was wrong
bb ships faster than release notes, Twitter, and Discord can teach it. Feedback from Sep 7–Oct 4 shows people missing features that already exist (connecting Desktop to another server, Account Pooler fixing repeated Claude logouts, provider handoff), and features that help people keep using bb, like child threads, queued follow-ups, multiple providers, building a plugin, and mobile, have no in-product nudge.
What changed
bb--tips), bundled, with a Show tips setting. On desktop it shows a calm feed of three rows under the new-thread composer: onebg-backgroundcontainer withborder-border-hairline,shadow-xs, and hairline dividers between rows. Each row has a 64px line illustration on the left (ink tones, one small tone accent, no background) and a title and one-sentence body on the right. There is no section label (screen readers hear "Tips").bg-surface-raised. Every click marks the tip used and announces the result in a status line. Tips use one of five action types, implemented once inplugins/tips/actions.ts:promptfills the composer, moves any existing draft into the prompt's trailingTask:slot, and focuses it with the caret at the end. Hovering or focusing a prompt row previews the prompt as the composer placeholder.open-pageopens a core Settings route.run-commandrunspalette.open,thread.search, orsettings.open.open-pluginopens a built-in plugin's detail page.learn-moreopens anhttps://link using the person's browser preference.id,title(≤45 characters),body(one sentence, ≤110),illustration,tone,action,source(changelog,blog,guide, orfeature, with a ref and optional version),addedAt,reviewedAt, optionalexpiresAtandheld, andeligible,retireWhen, andboostpredicates. Expired tips never show, and an expired tip fails CI againstCATALOG_REVIEWED_THROUGH. Tests check that every illustration exists, thatopen-plugintargets are built-in plugins, and thatopen-pagetargets are real Settings routes.plugins/tips/diagram-kit.tsx, which has 30 primitives (Panel, Window, Rule, Dot, ListLine, Node, Branch, ProgressBar, Toggle, Slider, Button, CheckMark, Check, Cursor, Phone, Envelope, Keycap, SearchGlyph, Magnifier, ChartAxes, Bar, CardStack, Arrow, Sparkle, Bubble, Clock, CalendarGrid, Wrench, Pill, Highlight) and 16 named hover animations with astaggerprop. Ladle stories plugins/Tips → Illustrations and Diagram kit show them.plugins/tips/AUTHORING.mdcovers fields, voice, actions, illustration rules, and a checklist. A repo-local skill,.bb/skills/tips-authoring, walks an agent through adding a tip.tip_shownonce per tip per visit andtip_usedon click throughsdk.system.experimental_recordTelemetryEvent. Both are on Ask for notifications from a sidebar card, refocus setup checklist content, and record onboarding events #5222's strict allow-list with onlytip_id(an enum of catalog ids),position(1–3), andaction(prompt,open-page,run-command,open-plugin,learn-more). Unknown ids, positions, actions, or extra properties get a 400. The server drops the events when sharing is off (Settings toggle orBB_TELEMETRY=false); the plugin does not check the setting itself. The tip id enum lives in@bb/server-contract(TIP_TELEMETRY_IDS) and the plugin'sTIP_IDS; the catalog'stip()helper only acceptsTipId, the SDK call only type-checks with allow-listed ids, and tests fail if the catalog,TIP_IDS, and the allow-list differ. The Settings privacy description,docs/configuration.mdtelemetry list, getbb.app/privacy, and the Tips overview now describe these events and the opt-out.bb tips [--all] [--json](marks the tips in the feed, newest first, and says how to turn tips on when they are off),bb tips hide [--undo],bb tips dismiss <id>,bb tips reset, with matching plugin RPC methods. Documented in the configuration guide, guide template, and plugin skill.docs/api_to_audit.mdentry and a Plugin Guide surface; plugin SDK 0.6.35):experimental_setupCompleteprop. Core derives it once inuseSetupChecklistfrom the same state that renders the setup banner, and passes it throughRootComposeSecondaryContenttoPluginHomepageSections. It is false before onboarding finishes, while any item is open, and while setup data loads. No Tips-specific core code.useComposer().experimental_setPlaceholderPreview(text | null)sets a temporary placeholder on the composer; it clears when the caller unmounts, and the accessible label keeps bb's own placeholder.useBbNavigate().experimental_openAppRoute(path)accepts in-app paths only. Absolute URLs, protocol-relative paths, backslashes, control characters, and/apiroutes are refused.useBbNavigate().experimental_runAppCommand(id)accepts onlypalette.open,thread.search, andsettings.open.title; older hosts are protected byengines.bbPluginSdk >=0.6.35.Owner decisions
held: trueinplugins/tips/catalog.ts.How you verified
useSetupChecklist().setupCompleteis false while the banner shows, while setup loads, and before onboarding finishes, and true after dismissing or finishing every item; homepage sections receive it; Tips renders nothing and makes no calls until it is true) and telemetry (the route accepts both tip events and rejects other ids, positions, actions, and extra properties; the allow-list matches the catalog; Tips sends each shown tip once per visit and each click with position and action, and nothing for unknown ids).mktemp -ddata dir with a small seeded project and finished threads, Chrome for Testing via Browser Automation, 1280×860 at 2×. After first-run onboarding was skipped, the setup banner showed above the composer and Tips rendered nothing and wrote no plugin state. After the banner was dismissed, the feed appeared with theorbitalproject selected. The seed archives its threads, so they were unarchived in that QA database first; because they are old, Tips classified the install as existing and left the switch off, so it was turned on withbb plugin config bb--tips set enabled true.Known follow-ups (not in this PR):
BB-Thread: Brainstorm BB feature for sharing tips and
BB-Thread-ID: thr_rtj958b9wf
🤖 Generated with Claude Code