Skip to content

feat(frontend): template strip, one shared template surface across home, onboarding, and agent chats (flag-gated) - #5098

Merged
mmabrouk merged 11 commits into
big-agentsfrom
design/template-strip-onboarding
Jul 7, 2026
Merged

mmabrouk merged 11 commits into
big-agentsfrom
design/template-strip-onboarding

Conversation

@mmabrouk

@mmabrouk mmabrouk commented Jul 6, 2026 •

Copy link
Copy Markdown
Member

Context

Before this change, templates showed up in three different, unrelated ways: a grid-plus-drawer on the agent home page, a "quick pick" list in playground onboarding, and nothing at all in an existing agent's empty chat. Each surface had its own layout, its own click behavior, and its own way (or no way) of getting a template's text into the composer. This PR replaces all three with one shared component, TemplateStrip, gated behind a flag, so a template card always does the same thing wherever you see it: click it, the composer fills with the template's build instruction, and a chip stays docked to show where the text came from.

Changes

web/oss/src/components/TemplateStrip/ is the new shared module:

  • Category tabs across the top, each with a live count of templates in that category.
  • A page-by-3 pager (prototype-exact math in assets/pagerMath.ts, unit tested) instead of a scrollable grid or a drawer.
  • A provenance chip (TemplateChip + useTemplateProvenance) that stays docked while you edit the filled text and clears itself without wiping what you typed, so you can keep editing after the template gave you a starting point.
  • A "Use my coding agent" action that copies npx skills add Agenta-AI/agenta-skills to the clipboard and shows a small custom toast (CopiedToast), replacing the old "Continue in IDE" modal.
  • A "Don't show again" hide, persisted in localStorage, surfaced back as "Templates hidden · show again" so it's reversible.

Home gets its own composer: StripHome.tsx owns a StripComposer instead of reaching across into the shared AgentComposer, which is what the second commit (95dc832c4f) removes: the cross-lane coupling that would otherwise have made the home lane depend on playground/chat composer internals.

The same strip is wired into playground onboarding (OnboardingConfigPanel.tsx) and into an agent's empty chat (AgentChatPanel.tsx, AgentChatEmptyState.tsx) — Build mode only, for a freshly-created agent (no revision history yet: version v0/v1). Switching to maximized Chat mode, or an agent with any revision history, never shows it — the owner call is that the strip is a build-time affordance, not a chat-mode one.

Visuals come from a new templateStrip palette family plus generated --ag-strip-* tokens, defined for both light and dark themes (web/oss/src/styles/theme/palette.ts, theme-variables.css, web/scripts/generate-tailwind-tokens.ts).

Everything sits behind NEXT_PUBLIC_AGENT_TEMPLATE_STRIP (default OFF). With the flag off, the diff was audited hunk-by-hunk to confirm current behavior is preserved byte-for-byte; nothing in the flag-off path changes.

Scope / risk

The flag-off path was diff-audited, not just "should be fine". The commit at 0d7c931c9 and the follow-up 95dc832c4f are the only two commits touching runtime code; 219b1208f9 is docs only.

Shared files touched under the flag: AgentChatPanel.tsx and AgentChatEmptyState.tsx gain new branches gated on the flag, they aren't new files. palette.ts / theme-variables.css also carry the colorWarningBg token, which belongs to the separate connect-model-drawer lane; it rides along in the same hunks as the templateStrip tokens because both lanes touched the same file at the same time. It isn't part of this feature but couldn't be split out cleanly.

Not touched: web/packages/** (the strip is app-layer only, see D3 below), and the classic (non-strip) home path, which is unchanged and still the default with the flag off.

One implementation deviation worth flagging in review: the chat composer only picks up the strip-era border/radius while a chip is docked; an unchipped chat keeps today's composer styling. A full restyle of the shared chat composer for the strip era felt too invasive for this PR. Home always uses the strip-era border since it owns its own composer.

How to QA

Prerequisites: the flag is live on the dev stack at 144.76.237.122:8280 already. To QA locally instead, set NEXT_PUBLIC_AGENT_TEMPLATE_STRIP=true and recreate the web container (it's a build-time env var, a restart alone won't pick it up).

Steps:

  1. Open the agent home page. Confirm the strip renders in place of the old grid/drawer: category tabs with counts, 3 cards per page, pager arrows.
  2. Click a template card. Confirm the composer fills with the template's build instruction and a provenance chip appears next to it.
  3. Edit the filled text. Confirm the chip stays docked while you type.
  4. Clear the composer text entirely. Confirm the chip clears too, and doesn't leave stray text behind.
  5. Click "Use my coding agent". Confirm npx skills add Agenta-AI/agenta-skills lands on your clipboard and the dark toast appears bottom-center (no modal).
  6. Open playground onboarding for a new app. Confirm the same strip appears there, and "Don't show again" hides it; reload and confirm it now shows "Templates hidden · show again" and stays hidden. Check that hiding it here also hides it on an agent's empty chat (shared hide flag, see D8).
  7. Open a freshly-created agent's empty chat in Build mode (no revision history yet). Confirm the strip appears there too, with fill + chip but no extra action buttons in the composer. Switch to maximized Chat mode and confirm the strip is gone (build-mode only, by design). Commit a revision (or open an agent that already has one) and confirm the strip no longer shows in its empty chat either — it's fresh-agent-only.
  8. Toggle dark mode across all of the above. Confirm the strip's colors, badges, and chip render legibly, and toast/tabs remain readable.
  9. Set the flag back to OFF (or check the current dev-stack-off behavior) and confirm home, onboarding, and agent chat all look and behave exactly as they did before this PR.

Automated tests:

cd web/packages/agenta-shared && npx vitest run --root ../../oss TemplateStrip

11 tests (pager math + coding-agent clipboard builder), all passing.

Edge cases: the regression this PR is most likely to have caused is in the flag-off path, since several shared files (AgentChatPanel.tsx, AgentChatEmptyState.tsx, UsageSummary/index.tsx, useAgentHomeActions.ts) now branch on the flag. Also watch the provenance chip across an edit-then-clear cycle, and the dark-mode token choices in D7 below, since the source design was light-only.

Live browser QA is pending. Both browser-automation paths were down overnight, so the steps above haven't been walked end-to-end in a browser yet. The flag is live on the dev stack for anyone who wants to click through in the meantime. This PR stays a draft until that click-through passes.

Decisions

Nine open decisions from the design review, all implemented on their recommendation:

  • D1: the composer fills with templateBuilderMessage(t) (the existing build-instruction field), not seedMessage (a first task, wrong shape) or a new field. Per-template builderMessage copy tuning to make the phrasing read less "meta" is flagged as an optional content follow-up, not code.
  • D2: an existing agent's empty chat gets fill + chip only; no "Use my coding agent" / "Create agent" actions row, since those are build-handoff actions that don't fit an existing chat.
  • D3: TemplateStrip lives in the app layer (web/oss/src/components/TemplateStrip/), not @agenta/ui, since both consumers are OSS app-layer and package extraction has no consumer yet to justify it.
  • D4: a custom CopiedToast instead of the global antd message, so the app's global toast styling doesn't have to change to fit this one action.
  • D5: the playground surfaces keep the shared 880px chat column instead of the design's 780px, so the strip lines up with the existing transcript and composer; home uses the design's 780px since it doesn't share that column.
  • D6: the localStorage key stays agenta-tpl-strip-hidden as specified in the source design, even though it doesn't carry the repo's usual agenta: prefix.
  • D7: dark-mode tokens (not specified in the light-only source design): selected states map to the existing yellow --ag-colorPrimary, badge tiles stay white in dark so brand logos stay legible, and two new palette entries cover hexes with no existing role.
  • D8: one shared hide flag across both playground surfaces (onboarding and every agent's empty chat), matching the single localStorage key; home is never hidden.
  • D9: the copy action now fires a first_agent_intent analytics event, since the old "Continue in IDE" modal it replaces fired nothing.

One process note for reviewers: Codex at xhigh reasoning implemented only the first slice (S1, the flag + palette family) before its sandbox lost write access; a Sonnet subagent implemented the rest (S2-S6) against the same recorded recommendations.

https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw

@vercel

vercel Bot commented Jul 6, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview, Comment Jul 7, 2026 12:39pm

Request Review

@coderabbitai

coderabbitai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7ac376d9-7a6a-490b-999a-e7828ce6879d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new environment-flagged "Template Strip" onboarding experience: a shared horizontally-scrollable template selection component with category tabs, provenance chip, clipboard copy flow, and toast, integrated into agent-home and playground-native onboarding surfaces, plus new theme tokens and design documentation.

Changes

Design Documentation

Layer / File(s) Summary
Onboarding revamp handoff notes
docs/design/onboarding-revamp/HANDOFF.md
Documents onboarding feature flags, first-run logic, merged PR summaries, survey/analytics behavior, legacy component parking, and QA/workflow instructions.
Template strip design/plan/status docs
docs/design/template-strip-onboarding/*
Adds README, context, design, plan, research, and status documents specifying the TemplateStrip component's behavior, integration matrix, tokens, and rollout plan.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Template Strip Implementation

Layer / File(s) Summary
Feature flag and theme tokens
.../assets/constants.ts, web/oss/src/lib/helpers/dynamicEnv.ts, web/oss/src/styles/theme-variables.css, web/oss/src/styles/theme/palette.ts, web/scripts/generate-tailwind-tokens.ts
Adds NEXT_PUBLIC_AGENT_TEMPLATE_STRIP flag, TEMPLATE_STRIP_MODE constant, and new warning/strip CSS variables and palette tokens.
TemplateStrip core component, pager, and cards
web/oss/src/components/TemplateStrip/{assets/pagerMath*.ts,hooks/useStripPager.ts,state.ts,components/StripCard.tsx,components/IntegrationBadges.tsx,assets/constants.ts,index.tsx}
Implements pager math, scroll state hook, hidden-state atom, card/badge components, strip copy, and the main TemplateStrip component with tab filtering and pager UI.
Provenance, clipboard copy, and toast
web/oss/src/components/TemplateStrip/{hooks/useTemplateProvenance.tsx,components/TemplateChip.tsx,components/CopiedToast.tsx,assets/codingAgentClipboard*.ts,components/StripComposer.tsx}
Adds provenance tracking hook, chip display, toast, clipboard payload builder, and a composer wired to submit/copy actions.
Playground onboarding integration
web/oss/src/components/AgentChatSlice/AgentChatPanel.tsx, web/oss/src/components/AgentChatSlice/components/AgentChatEmptyState.tsx, .../PlaygroundOnboarding/OnboardingConfigPanel.tsx
Wires TemplateStrip, provenance chip, and copy toast into onboarding/empty-chat flows; suppresses legacy config panel under strip mode.
Agent-home integration
web/oss/src/components/pages/agent-home/{StripHome.tsx,index.tsx,hooks/useAgentHomeActions.ts,components/UsageSummary/index.tsx}
Adds StripHome page, flag-based routing between StripHome/ClassicAgentHome, autoSendSeed support, and a strip variant for UsageSummary.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant StripHome
  participant useTemplateProvenance
  participant useAgentHomeActions
  participant PostHog

  User->>StripHome: click template card
  StripHome->>useTemplateProvenance: pick(template)
  StripHome->>PostHog: capture template_pick event
  User->>StripHome: click Create agent
  StripHome->>useAgentHomeActions: onCreate(autoSendSeed)
Loading
sequenceDiagram
  participant User
  participant StripComposer
  participant buildCodingAgentClipboard
  participant Clipboard
  participant CopiedToast

  User->>StripComposer: click "Use my coding agent"
  StripComposer->>buildCodingAgentClipboard: build(text)
  StripComposer->>Clipboard: writeText(payload)
  alt success
    StripComposer->>CopiedToast: open toast
  else failure
    StripComposer->>StripComposer: show error message
  end
Loading

Possibly related PRs

  • Agenta-AI/agenta#4927: Both PRs modify AgentChatPanel.tsx, with this PR layering TemplateStrip onboarding/copy/provenance behavior on top of the composer ref/submit flow changes.
  • Agenta-AI/agenta#5076: This PR's template-strip changes build on the same onboarding chat components (AgentChatPanel.tsx, AgentChatEmptyState.tsx) modified for playground-native onboarding/IDE handoff.
  • Agenta-AI/agenta#5086: Both PRs touch the onboarding "create agent" path in AgentChatPanel.tsx, overlapping at the same code hotspot with different analytics/provenance additions.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main flag-gated shared TemplateStrip across home, onboarding, and agent chats.
Description check ✅ Passed The description is detailed and directly matches the TemplateStrip feature, rollout, QA, and token changes in the diff.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch design/template-strip-onboarding

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

mmabrouk added 3 commits July 7, 2026 02:15
…d agent empty chat (flag-gated)

One TemplateStrip component (category tabs, page-by-3 pager, provenance chip, Use-my-coding-agent copy+toast, localStorage hide) behind NEXT_PUBLIC_AGENT_TEMPLATE_STRIP; flag off preserves current behavior byte-for-byte. Includes templateStrip palette family + strip tokens; NOTE: palette.ts/theme-variables.css also carry the colorWarningBg token used by the connect-model-drawer lane (entangled hunks, rides here).

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
@mmabrouk mmabrouk changed the title doc(design): template-strip onboarding redesign — plan for review feat(frontend): template strip, one shared template surface across home, onboarding, and agent chats (flag-gated) Jul 7, 2026
@mmabrouk
mmabrouk marked this pull request as ready for review July 7, 2026 10:16
@mmabrouk

mmabrouk commented Jul 7, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai review

@dosubot dosubot Bot added size:XXL This PR changes 1000+ lines, ignoring generated files. feature frontend labels Jul 7, 2026
@coderabbitai

coderabbitai Bot commented Jul 7, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
web/oss/src/components/AgentChatSlice/AgentChatPanel.tsx (1)

454-470: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate template-pick and clipboard-copy logic vs StripHome.tsx.

handleStripPick and handleCodingAgentCopy here are near-identical (same shape, same analytics call, same clipboard/toast flow) to handlePick/handleCodingAgentCopy in StripHome.tsx (lines 51-82). Consider extracting a shared hook (e.g. useStripTemplatePick(composerApi, surface) / useCodingAgentCopy(composerRef)) under TemplateStrip/hooks to avoid drift between the two call sites.

Also applies to: 471-484

web/oss/src/styles/theme-variables.css (1)

593-593: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Dark-only remap creates light/dark value mismatch for --ag-c-FFFAEB.

Dark theme now aliases --ag-c-FFFAEB to var(--ag-colorWarningBg) (#2b2111), but the light theme keeps the hardcoded #fffaeb, which is a different hex than light --ag-colorWarningBg (#fffbe6). Any component still using the legacy --ag-c-FFFAEB alias will now see a subtly different tone between themes than before.

web/oss/src/components/TemplateStrip/hooks/useStripPager.ts (1)

16-33: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

Avoid recreating scroll listener/observer on every cardCount change.

Since recompute is recreated whenever cardCount changes, the effect at Lines 22-33 (which depends on [recompute]) tears down and recreates the scroll listener and ResizeObserver each time the card count changes (e.g., switching category tabs), instead of just recomputing state.

♻️ Proposed refactor: split observer setup from recompute trigger
     useEffect(() => {
         const el = scrollerRef.current
         if (!el) return
-        recompute()
-        el.addEventListener("scroll", recompute, {passive: true})
         const observer = new ResizeObserver(recompute)
         observer.observe(el)
+        el.addEventListener("scroll", recompute, {passive: true})
         return () => {
             el.removeEventListener("scroll", recompute)
             observer.disconnect()
         }
-    }, [recompute])
+    }, [])
+
+    useEffect(() => {
+        recompute()
+    }, [recompute])
web/oss/src/components/TemplateStrip/components/TemplateChip.tsx (1)

39-46: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Centralize the aria-label string with other strip copy.

aria-label="Remove template" is hardcoded here while other strip text (Line 35) is sourced from STRIP_COPY. Consider adding it to the copy constants for consistency.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c330ca7b-25cf-41c0-9065-dba73f3e2789

📥 Commits

Reviewing files that changed from the base of the PR and between 810e331 and 219b120.

📒 Files selected for processing (33)
  • docs/design/onboarding-revamp/HANDOFF.md
  • docs/design/template-strip-onboarding/README.md
  • docs/design/template-strip-onboarding/context.md
  • docs/design/template-strip-onboarding/design.md
  • docs/design/template-strip-onboarding/plan.md
  • docs/design/template-strip-onboarding/research.md
  • docs/design/template-strip-onboarding/status.md
  • web/oss/src/components/AgentChatSlice/AgentChatPanel.tsx
  • web/oss/src/components/AgentChatSlice/components/AgentChatEmptyState.tsx
  • web/oss/src/components/TemplateStrip/assets/codingAgentClipboard.test.ts
  • web/oss/src/components/TemplateStrip/assets/codingAgentClipboard.ts
  • web/oss/src/components/TemplateStrip/assets/constants.ts
  • web/oss/src/components/TemplateStrip/assets/pagerMath.test.ts
  • web/oss/src/components/TemplateStrip/assets/pagerMath.ts
  • web/oss/src/components/TemplateStrip/components/CopiedToast.tsx
  • web/oss/src/components/TemplateStrip/components/IntegrationBadges.tsx
  • web/oss/src/components/TemplateStrip/components/StripCard.tsx
  • web/oss/src/components/TemplateStrip/components/StripComposer.tsx
  • web/oss/src/components/TemplateStrip/components/TemplateChip.tsx
  • web/oss/src/components/TemplateStrip/hooks/useStripPager.ts
  • web/oss/src/components/TemplateStrip/hooks/useTemplateProvenance.tsx
  • web/oss/src/components/TemplateStrip/index.tsx
  • web/oss/src/components/TemplateStrip/state.ts
  • web/oss/src/components/pages/agent-home/PlaygroundOnboarding/OnboardingConfigPanel.tsx
  • web/oss/src/components/pages/agent-home/StripHome.tsx
  • web/oss/src/components/pages/agent-home/assets/constants.ts
  • web/oss/src/components/pages/agent-home/components/UsageSummary/index.tsx
  • web/oss/src/components/pages/agent-home/hooks/useAgentHomeActions.ts
  • web/oss/src/components/pages/agent-home/index.tsx
  • web/oss/src/lib/helpers/dynamicEnv.ts
  • web/oss/src/styles/theme-variables.css
  • web/oss/src/styles/theme/palette.ts
  • web/scripts/generate-tailwind-tokens.ts

Comment on lines +9 to +12
The high-fidelity design lives at `/home/mahmoud/code/agenta/design_handoff_template_strip`
(interactive HTML prototypes plus written notes). Light mode is final and should be
recreated pixel-perfectly with AntD + Tailwind. Dark mode needs deliberate token
translation, covered in `design.md`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use a repo-relative handoff reference.

The hard-coded /home/mahmoud/... path is machine-specific and leaks local filesystem details. Please replace it with a repo-relative reference, and update the same reference in the sibling docs too.

Comment on lines +17 to +18
/** Owner-specified key (matches the design prototype; intentionally not "agenta:"-prefixed). */
export const STRIP_HIDDEN_STORAGE_KEY = "agenta-tpl-strip-hidden"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Storage key doesn't follow the required agenta: prefix convention.

The comment acknowledges this is intentional, but the guideline is explicit about persisted-state key naming. An unprefixed key increases collision risk with other localStorage consumers and breaks the established convention for identifying app-owned keys.

🏷️ Suggested fix
-export const STRIP_HIDDEN_STORAGE_KEY = "agenta-tpl-strip-hidden"
+export const STRIP_HIDDEN_STORAGE_KEY = "agenta:tpl-strip-hidden"

As per coding guidelines, "For persisted state, use atomWithStorage (with stringStorage for nullable strings) and prefix keys with agenta:."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/** Owner-specified key (matches the design prototype; intentionally not "agenta:"-prefixed). */
export const STRIP_HIDDEN_STORAGE_KEY = "agenta-tpl-strip-hidden"
/** Owner-specified key (matches the design prototype; intentionally not "agenta:"-prefixed). */
export const STRIP_HIDDEN_STORAGE_KEY = "agenta:tpl-strip-hidden"

Source: Coding guidelines

mmabrouk added 2 commits July 7, 2026 13:06
… drop tour icon and Agent-builder eyebrow

Under the strip flag, the onboarding config slot no longer overrides to an empty panel — the ephemeral renders the standard config sections like any playground. The 2-min tour button and the NEW/Agent-builder eyebrow are removed from the strip-mode surfaces (legacy flag-off surfaces unchanged).

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
…l shift on playground surfaces

Onboarding layout is a bottom-anchored cluster (hero top, flexible middle, strip ~12px above the pinned composer — matching the agent-chat surface's rhythm). Template picks on chat surfaces fill the composer only: no provenance chip, no composer border/radius swap, zero layout shift; the strip card's selected state marks the pick. Home keeps its chip.

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
…icons, template-named creates, workable builder messages

StripHome widens to the app's 960px rhythm (was the prototype's 780). 16px gap between composer and strip. Paperclip removed from the strip composer; Terminal icon on Use-my-coding-agent. Creating from a picked template names the agent after it (home + onboarding). All six templates get explicit 'Create an agent that ...' builder messages (skill-triggering, workable); fallback derivation updated. Also fixes the classic composer passing the click event as the new optional name param.

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
…uild mode

Strip gate now requires the current revision's version <= 1 (first user-visible commit; hidden v0 seed convention) and build mode — a committed agent's sessions and the maximized chat mode never show the strip. No flash while the revision query is pending. Onboarding surface unaffected.

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
…, X clears template text

Composer→templates gap joins the page's 30px section rhythm. The provenance chip's slot is always rendered (invisible+inert sizing reference when empty) so picking/clearing a template moves nothing — composer position verified bit-identical. The chip's X now clears the template text along with the chip. Playground surfaces unaffected (they render no chip).

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
…for naming, clear on empty, reset on entity switch

Agent naming from a template now requires the composer text to exactly match the seeded text at create time (any edit or replacement → default naming). Emptying Home's composer clears the chip (new optional onChange on RichChatInput via CharacterCountPlugin — additive, no consumer changes). Provenance resets when the chat panel's entityId changes. Also: repo-relative docs path. Review-gate blocker from the pre-merge pass.

Claude-Session: https://claude.ai/code/session_01FNiAiGuzfi1kkWvXPPcrVw
@mmabrouk
mmabrouk merged commit 73d17b9 into big-agents Jul 7, 2026
21 of 23 checks passed

This branch was successfully deployed

1 active deployment
Preview — f22528a9 Deployed Jul 7, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature frontend size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant