feat: UI fixes + boocontext remainders — Memory project selector, agent event toasts, codecontext→boocontext left-overs

Fixes 3 remaining UI items from the component-wiring audit:
  - Memory page: project selector dropdown (Item 1)
  - Agent events: collision_warning + agent_message toasts via sonner (Item 2)
  - Reasoning delta already wired and working (Item 3)

Also picks up uncommitted boocontext rename changes from the subagent batch:
  - synthesisPipeline.ts tier tool names updated
  - tiers.ts STANDARD_TOOL_NAMES clears old codecontext tools
  - tool-utils.ts BUILT_IN_TOOLS updated
  - .env.example / README.md reference boocontext MCP
  - ROADMAP.md boocontext entry
  - codecontext/ dir + docs/codecontext-ts-plan.md removed (already gone from tree)
This commit is contained in:
2026-06-08 04:35:56 +00:00
parent fc281f5b78
commit 0ed506f1da
18 changed files with 54 additions and 1456 deletions

View File

@@ -11,8 +11,10 @@ import { Analytics } from '@/pages/Analytics';
import { Results } from '@/pages/Results';
import { Memory } from '@/pages/Memory';
import { Toaster } from '@/components/ui/sonner';
import { toast } from 'sonner';
import { useUserEvents } from '@/hooks/useUserEvents';
import { useCoderUserEvents } from '@/hooks/useCoderUserEvents';
import { sessionEvents } from '@/hooks/sessionEvents';
import { useTheme } from '@/lib/theme';
import { SidebarDrawerProvider, useSidebarDrawer } from '@/hooks/useSidebarDrawer';
import { RightRailDrawerProvider, useRightRailDrawer } from '@/hooks/useRightRailDrawer';
@@ -77,6 +79,24 @@ function AppShell() {
useTheme();
useUserEvents();
useCoderUserEvents();
useEffect(() => {
const unsub = sessionEvents.subscribe((event) => {
if (event.type === 'collision_warning') {
toast.warning(`Multiple agents editing ${event.file_path}`, {
description: `Agents: ${event.agents.join(', ')}`,
});
} else if (event.type === 'agent_message') {
const truncated =
event.content.length > 80
? event.content.slice(0, 80) + '…'
: event.content;
toast.info(`Message from ${event.from_agent}`, {
description: truncated,
});
}
});
return unsub;
}, []);
const [showShortcuts, setShowShortcuts] = useState(false);
useEffect(() => {
const handler = (e: KeyboardEvent) => {