Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7db024f
feat(sdk): BB SDK Phase 1 — @bb/sdk core + window.bb full CLI parity …
SawyerHood Jun 3, 2026
5d38621
fix(app): keep desktop thread-header actions menu clickable
SawyerHood Jun 3, 2026
c0299a8
fix(desktop): eliminate browser webview jitter on OS window resize
SawyerHood Jun 3, 2026
eabaeef
feat: remove the manager-templates feature
SawyerHood Jun 3, 2026
65946bb
feat: new-app scaffold is a Vite/React/TS todo template + SDK-type co…
SawyerHood Jun 3, 2026
954b9e1
fix(desktop): ship scaffold template .d.ts in packaged app
SawyerHood Jun 3, 2026
c3a37fe
feat(sdk): BB SDK Phase 2 — realtime events via bb.on
SawyerHood Jun 3, 2026
3b365f8
fix(desktop): sign local packaged builds with keychain identity
SawyerHood Jun 4, 2026
59419cc
feat(server): custom provider models via managed config.json
SawyerHood Jun 4, 2026
14bcc8e
feat: Claude Code workflows + ultracode reasoning level
SawyerHood Jun 4, 2026
2700d89
fix(sdk): harden realtime client after deep review of bb.on
SawyerHood Jun 4, 2026
a96e922
fix(server): count thread-scoped background task activity in the prov…
SawyerHood Jun 4, 2026
cd0cb15
feat(apps): live-reload open app surfaces when public/ content change…
SawyerHood Jun 4, 2026
67ce810
fix(host-daemon): don't force a skill catalog swap for threads the ru…
SawyerHood Jun 4, 2026
ecc57b2
fix(host-daemon): harden the deferred skill catalog refresh after adv…
SawyerHood Jun 4, 2026
7c1b6fc
test(host-daemon): add workflowsEnabled to rebased command-router fix…
SawyerHood Jun 4, 2026
a6b5845
chore: untrack plan file accidentally committed during rebase
SawyerHood Jun 4, 2026
3e9d91c
fix(review): apps platform — scaffold service, runtime bundle endpoin…
SawyerHood Jun 4, 2026
7e215f6
fix(review): single tested SDK transport, typed HTTP errors, lazy nod…
SawyerHood Jun 4, 2026
0502682
fix(review): realtime client lifecycle bugs + dedup, honest hub contract
SawyerHood Jun 4, 2026
df9e5f8
fix(review): background-task lifecycle settles, timeline projection, …
SawyerHood Jun 4, 2026
a7a1354
fix(review): finish manager-templates removal
SawyerHood Jun 4, 2026
81bf001
fix(review): desktop browser-view projection, IPC tolerance, tests th…
SawyerHood Jun 4, 2026
ceb3c30
fix(review): host-daemon skill-catalog surface + unified message buff…
SawyerHood Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
69 changes: 0 additions & 69 deletions apps/app/src/components/pickers/ManagerTemplatePicker.stories.tsx

This file was deleted.

42 changes: 0 additions & 42 deletions apps/app/src/components/pickers/ManagerTemplatePicker.tsx

This file was deleted.

16 changes: 0 additions & 16 deletions apps/app/src/components/promptbox/NewThreadPromptBox.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import { useMemo, useState } from "react";
import type { PermissionMode } from "@bb/domain";
import type { ManagerTemplateSummary } from "@bb/server-contract";
import {
NewThreadPromptBoxUI,
type NewThreadBranchConfig,
type NewThreadEnvironmentConfig,
type NewThreadHostConfig,
type NewThreadModeConfig,
type NewThreadProjectConfig,
type NewThreadTemplateConfig,
type NewThreadWorktreeConfig,
type ThreadCreationMode,
} from "@/components/promptbox/NewThreadPromptBox";
Expand Down Expand Up @@ -75,18 +73,6 @@ const baseProject: NewThreadProjectConfig = {
onChange: noop,
};

const baseManagerTemplates: readonly ManagerTemplateSummary[] = [
{ name: "default", isActive: true },
{ name: "code-reviewer", isActive: false },
{ name: "release-captain", isActive: false },
];

const baseTemplate: NewThreadTemplateConfig = {
templates: baseManagerTemplates,
value: "default",
onChange: noop,
};

const baseHost: NewThreadHostConfig = {
hosts: STORY_HOSTS,
eligibleHosts: connectedStoryHosts,
Expand Down Expand Up @@ -137,7 +123,6 @@ function useControlledMode(
? {
mode: "manager",
host: baseHost,
template: baseTemplate,
}
: {
mode: "thread",
Expand Down Expand Up @@ -261,7 +246,6 @@ function FullAccessRow() {
? {
mode: "manager",
host: baseHost,
template: baseTemplate,
}
: {
mode: "thread",
Expand Down
49 changes: 4 additions & 45 deletions apps/app/src/components/promptbox/NewThreadPromptBox.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { memo, useMemo, useRef, type ReactNode } from "react";
import type { Host, ProjectSource } from "@bb/domain";
import type { ManagerTemplateSummary } from "@bb/server-contract";
import {
ExecutionControls,
type ExecutionControlsProps,
Expand All @@ -27,7 +26,6 @@ import {
parseEnvironmentValue,
} from "@/components/pickers/environment-picker-value";
import { HostPicker } from "@/components/pickers/HostPicker";
import { ManagerTemplatePicker } from "@/components/pickers/ManagerTemplatePicker";
import {
OPTION_BASE_CLASS_NAME,
OPTION_CONTENT_CLASS_NAME,
Expand Down Expand Up @@ -121,12 +119,6 @@ export interface NewThreadProjectConfig {
createProject?: ProjectSelectorCreateProjectConfig;
}

export interface NewThreadTemplateConfig {
templates: readonly ManagerTemplateSummary[];
value: string;
onChange: (templateName: string) => void;
}

export interface NewThreadHostConfig {
/** All known hosts — used by `HostPicker` to render the selected host's
* label even when it falls outside the eligible set. */
Expand All @@ -144,9 +136,9 @@ export interface NewThreadHostConfig {
/**
* Mode-dependent block. Discriminated union — when mode is "thread" the
* environment / branch / worktree / permission config is required and the
* reuse-pill header slot is available; when mode is "manager" only the
* manager-template picker is meaningful. Invalid combinations (e.g.
* "manager" + reuse env) are unrepresentable at the prop boundary.
* reuse-pill header slot is available; when mode is "manager" only the host
* picker is meaningful. Invalid combinations (e.g. "manager" + reuse env)
* are unrepresentable at the prop boundary.
*/
export type NewThreadModeConfig =
| {
Expand All @@ -168,9 +160,6 @@ export type NewThreadModeConfig =
* host because the manager thread runs on it; thread mode picks one
* via the env picker, which manager mode lacks. */
host: NewThreadHostConfig;
/** Manager-template picker shown beside the host picker. Omit (or
* pass `templates: []`) to hide. */
template?: NewThreadTemplateConfig;
};

export interface NewThreadPromptBoxUIProps {
Expand Down Expand Up @@ -319,10 +308,7 @@ export const NewThreadPromptBoxUI = memo(function NewThreadPromptBoxUI({
/>
) : null}
{modeConfig.mode === "manager" ? (
<ManagerSlot
host={modeConfig.host}
template={modeConfig.template}
/>
<HostSlot host={modeConfig.host} />
) : (
<ThreadEnvSlot
environment={modeConfig.environment}
Expand All @@ -347,31 +333,6 @@ export const NewThreadPromptBoxUI = memo(function NewThreadPromptBoxUI({
);
});

interface ManagerSlotProps {
host: NewThreadHostConfig;
template: NewThreadTemplateConfig | undefined;
}

function ManagerSlot({ host, template }: ManagerSlotProps) {
// Hide both pickers when they offer no real choice — a single eligible
// host or template is the de-facto default, surfacing the picker just
// adds visual noise. Submit logic in RootComposeView still uses the
// resolved value, so behavior is unchanged.
const showTemplatePicker = (template?.templates.length ?? 0) >= 2;
return (
<>
<HostSlot host={host} />
{showTemplatePicker && template ? (
<ManagerTemplatePicker
templates={template.templates}
value={template.value}
onChange={template.onChange}
/>
) : null}
</>
);
}

interface HostSlotProps {
host: NewThreadHostConfig;
}
Expand Down Expand Up @@ -593,7 +554,6 @@ export type NewThreadConnectedModeConfig =
| {
mode: "manager";
host: NewThreadHostConfig;
template?: NewThreadTemplateConfig;
};

export interface NewThreadPromptBoxProps extends Omit<
Expand Down Expand Up @@ -627,7 +587,6 @@ export function NewThreadPromptBox({
modeConfig={{
mode: "manager",
host: modeConfig.host,
template: modeConfig.template,
}}
/>
);
Expand Down
Loading
Loading