Skip to content

Conversation

@bfollington
Copy link
Contributor

@bfollington bfollington commented Oct 28, 2025

  • Working omnibox prototype
  • Fix mentions placement
  • Fix click to dismiss
  • Refine history toggle
  • Refine toast interaction
  • Format pass

Summary by cubic

Introduces a morphing FAB that expands into an omnibox composer with a history toggle and notification peek, wired into the default app. Also fixes mention menu placement and smooths dismiss/escape interactions and toast behavior.

  • New Features

    • Added ct-fab: controlled, morphing FAB with backdrop and ESC to close.
    • Added ct-omnibox: prompt input container ready for peek/history; forwards send/stop/attachments.
    • Added ct-chevron-button: simple drawer handle to toggle history.
    • Built OmniboxFAB pattern that integrates Chatbot tools, history drawer, peek preview with dismiss, and prompt input.
    • Integrated into default-app and added demos (fab-demo, fab-test-minimal); authored FAB_SPEC.md as the interaction spec.
    • ct-toast-stack gains suppress to hide toasts while FAB is open; moved notifications to bottom-right.
  • Bug Fixes

    • Mentions dropdown now renders in a fixed body overlay with correct positioning, theme, and scroll/resize handling.
    • Prevent accidental close: clicks inside expanded FAB no longer collapse; backdrop click and ESC emit dedicated events.
    • History toggle and peek dismiss refined for predictable state; notifications carry stable ids.

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

6 issues found across 19 files

Prompt for AI agents (all 6 issues)

Understand the root cause of the following 6 issues and fix them.


<file name="packages/ui/src/v2/components/ct-chevron-button/ct-chevron-button.ts">

<violation number="1" location="packages/ui/src/v2/components/ct-chevron-button/ct-chevron-button.ts:142">
Please set this reusable chevron button’s type to &quot;button&quot; so it doesn’t accidentally submit parent forms when clicked.</violation>
</file>

<file name="packages/ui/src/v2/components/ct-fab/ct-fab.ts">

<violation number="1" location="packages/ui/src/v2/components/ct-fab/ct-fab.ts:54">
The backdrop mask is fixed to the bottom-right corner, so when `position` is set to other supported values the highlight is misaligned. Please parameterize the mask so it lines up with each position variant.</violation>
</file>

<file name="packages/ui/src/v2/components/ct-omnibox/ct-omnibox.ts">

<violation number="1" location="packages/ui/src/v2/components/ct-omnibox/ct-omnibox.ts:114">
ct-prompt-input already dispatches ct-send as a bubbling/composed event, so re-emitting it here without stopping the original causes container listeners to fire twice (e.g., the host sends a message twice). Either stopPropagation before re-dispatching or rely on the original event.</violation>
</file>

<file name="packages/patterns/omnibox-fab.tsx">

<violation number="1" location="packages/patterns/omnibox-fab.tsx:36">
Clicking the dismiss button stores the assistant message counter cell itself in `peekDismissedIndex`, so `count !== dismissedIdx` never flips false and the peek cannot stay dismissed. Capture the counter’s numeric value instead.</violation>
</file>

<file name="packages/ui/src/v2/components/ct-prompt-input/ct-prompt-input.ts">

<violation number="1" location="packages/ui/src/v2/components/ct-prompt-input/ct-prompt-input.ts:902">
When model is provided as a plain string (which the API promises to support), this handler only calls the cell controller, but the controller’s defaultSetValue does nothing for non-Cell values, so the component’s model property never reflects the newly chosen option. Please update the component to assign the new value itself when not bound to a Cell so consumers see the selection.</violation>
</file>

<file name="FAB_SPEC.md">

<violation number="1" location="FAB_SPEC.md:963">
Opening the history drawer marks notifications as seen, but the peek never refreshes, so it stays visible (and the FAB stays tall) after you close history. Call updateNotificationPeek() when setting peekDismissed to true so the UI hides immediately.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

backdrop-filter var(--ct-theme-animation-duration, 300ms) ease,
-webkit-backdrop-filter var(--ct-theme-animation-duration, 300ms) ease;
z-index: 998;
mask-image: radial-gradient(
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 29, 2025

Choose a reason for hiding this comment

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

The backdrop mask is fixed to the bottom-right corner, so when position is set to other supported values the highlight is misaligned. Please parameterize the mask so it lines up with each position variant.

Prompt for AI agents
Address the following comment on packages/ui/src/v2/components/ct-fab/ct-fab.ts at line 54:

<comment>The backdrop mask is fixed to the bottom-right corner, so when `position` is set to other supported values the highlight is misaligned. Please parameterize the mask so it lines up with each position variant.</comment>

<file context>
@@ -0,0 +1,397 @@
+          backdrop-filter var(--ct-theme-animation-duration, 300ms) ease,
+          -webkit-backdrop-filter var(--ct-theme-animation-duration, 300ms) ease;
+        z-index: 998;
+        mask-image: radial-gradient(
+          circle at bottom right,
+          rgba(0, 0, 0, 1) 0%,
</file context>

✅ Addressed in 584a7b2

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

Reviewed changes from recent commits (found 2 issues).

2 issues found across 15 files

Prompt for AI agents (all 2 issues)

Understand the root cause of the following 2 issues and fix them.


<file name="packages/ui/src/v2/components/ct-fab/ct-fab.ts">

<violation number="1" location="packages/ui/src/v2/components/ct-fab/ct-fab.ts:414">
When previewMessage is supplied as a plain string, this branch never triggers, so showPreview stays false and the new preview notification never renders even though the property changed. Please also handle the non-Cell case so plain string updates display the notification.</violation>
</file>

<file name="packages/ui/src/v2/components/ct-prompt-input/ct-prompt-input.ts">

<violation number="1" location="packages/ui/src/v2/components/ct-prompt-input/ct-prompt-input.ts:441">
Guarding the model bind with a truthy check breaks plain string models—selecting an empty-string option never rebinds, so the select snaps back to the previous value. Please remove the truthy guard so empty string values can bind correctly.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

Reviewed changes from recent commits (found 1 issue).

1 issue found across 4 files

Prompt for AI agents (all 1 issues)

Understand the root cause of the following 1 issues and fix them.


<file name="packages/patterns/default-app.tsx">

<violation number="1" location="packages/patterns/default-app.tsx:125">
Capturing Cmd+O here prevents the browser’s standard “Open File” shortcut, so users lose access to a core browser feature.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

onct-keybind={spawnChatList()}
/>

<ct-keybind
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 29, 2025

Choose a reason for hiding this comment

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

Capturing Cmd+O here prevents the browser’s standard “Open File” shortcut, so users lose access to a core browser feature.

Prompt for AI agents
Address the following comment on packages/patterns/default-app.tsx at line 125:

<comment>Capturing Cmd+O here prevents the browser’s standard “Open File” shortcut, so users lose access to a core browser feature.</comment>

<file context>
@@ -116,6 +122,18 @@ export default recipe&lt;CharmsListInput, CharmsListOutput&gt;(
             preventDefault
             onct-keybind={spawnChatList()}
           /&gt;
+          &lt;ct-keybind
+            code=&quot;KeyO&quot;
+            meta
</file context>
Fix with Cubic

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 1 file

@bfollington bfollington merged commit 6495921 into main Oct 29, 2025
9 checks passed
@bfollington bfollington deleted the feat/2025-10-28-omnibox branch October 29, 2025 04:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants