Skip to content

Releases: codenameakshay/beui

v1.2.0 — Chat/agent UX-audit remediation

Choose a tag to compare

@codenameakshay codenameakshay released this 18 Aug 15:09
fe63896

UX-audit remediation across the chat/agent family — 154 audited findings resolved. Almost all API is additive; the deliberate default changes are listed under Changed defaults.

Trust & failure states

  • BeuiToolApproval: details open by default whenever parameters exist; a severity tier (normal/elevated/destructive) that re-weights the actions for irreversible commands; expired/timedOut statuses; grant records once-vs-always and an onRevoke affordance; the action row can no longer double-fire during its exit.
  • BeuiStreamingResponse: error is now visibly failed (destructive notice + retry) instead of pixel-identical to complete; new stopped status with a Continue affordance.
  • BeuiAgentActivity: failed/cancelled statuses — a crashed run no longer summarizes as success.
  • BeuiImageGeneration: determinate progress hairline and onCancel.

Keyboard & screen readers

  • Full keyboard contracts (focus, Enter/Space, Esc, visible focus ring) for tool-approval actions, the composer's + menu and model picker, BeuiFileUpload, the feedback widget, and sidebar rows.
  • Esc now dismisses BeuiOverlay surfaces even with trapFocus: false.
  • The transcript announces streamed text through one debounced live region. Terminal outcomes (Failed, Denied, Copied, Sent) are announced.
  • Focus rings paint outside layout via the new focusRing color role (≥3:1 in all 22 theme×brightness combos).
  • 44px minimum hit areas across the family.

Contrast

  • Placeholders, tool slugs, metadata, line-number gutters, citation domains, and light-mode status badges move to AA-passing values.

Composer & uploads

  • BeuiPromptInput: attachment chip rail, keyboard-driven model picker, viewport-aware menu placement, Enter-while-streaming feedback.
  • Upload components: real progress, cancel-in-flight, maxFileSize + inline rejection, seekable audio scrubber.
  • BeuiInput: left-aligned announced errors, label association, shake replay via errorNonce.
  • BeuiFeedbackWidget: drafts survive dismissal, submit validates inline, optional sentiment row.

Reading long/streamed content

  • Jump-to-latest pills with unread counts. Streaming viewports stop yanking the reader once they scroll away.
  • BeuiFileDiff: wrap or horizontal scroll, hunk-gap markers, change navigation.
  • BeuiMessageScroller.builder — lazy sliver path for long transcripts.
  • BeuiPreviewRail works on touch. BeuiChatApp is responsive.

Changed defaults (deliberate, audit-driven)

  • BeuiMessage/BeuiMessageBubble animateIn now default to true (mount-only).
  • BeuiToolApproval.defaultOpen resolves by parameters.isNotEmpty.
  • BeuiPreviewRail.highlightActive defaults to true.
  • BeuiFileUpload drag wording is opt-in (dragAndDrop).
  • BeuiToolApproval/BeuiToolResult tool/title/description/meta narrowed from Object to typed String? + Widget? pairs (deprecated *Node params still accepted).

Localization & theming

  • BeuiAgentStrings covers the full agent family.
  • New BeuiColors.focusRing role (WCAG 2.2 SC 1.4.11).
  • New BeuiAgentTheme.statusLight/statusDark.

Fixes

  • LucideIcons.history removed in flutter_lucide 1.31.0 — replaced with rotate_ccw_clock.
  • BeuiPullToRefresh indicator now follows the finger during the pull.
  • Reduced-motion arrival fixes so reveals reach their target state instead of freezing mid-transition.

Package: https://pub.dev/packages/beui/versions/1.2.0
Gallery: https://codenameakshay.github.io/beui/

v1.1.0 — Agent theming and expandable approval cards

Choose a tag to compare

@codenameakshay codenameakshay released this 14 Aug 08:14
538bd35

Semantic theming for the AI-agent family, plus compact-to-expanded approval cards. Default visuals and motion are unchanged: omit BeuiAgentTheme and every agent widget still resolves to the 1.0.0 source-fidelity look.

Agent theming

  • New BeuiAgentTheme ThemeExtension — typography roles, bubble/card radii, conversation spacing, density, borders, optional glass cards, and semantic icon slots. Install it next to BeuiColors; ThemeData.fontFamily still owns the typeface.
  • AI-agent widgets read those tokens instead of hard-coded source sizes, padding, and Lucide defaults. Constructor overrides remain.
  • Gallery route Agent Theme shows a custom warm-green palette, inherited font, radii, density, icons, and an expandable approval card using the real widgets.

Approval card

  • Additive compact-to-expanded API: expanded / defaultExpanded / onExpandedChanged, compactChild / expandedChild, headerAction. Existing call sites are unchanged. Height uses beuiSpringLayout and is interruptible; reduced motion snaps.

Compatibility

  • Minor release. No required migrations. BeuiChatApp.borderRadius and BeuiMessageBubbleContent.maxWidthFactor are now nullable so the theme can supply the default; omitted arguments still resolve to 16 and 0.82.

Package: https://pub.dev/packages/beui/versions/1.1.0

v1.0.0 — Initial release

Choose a tag to compare

@codenameakshay codenameakshay released this 11 Aug 06:35
6403f23

Initial release — a one-to-one Flutter port of beUI v2, built on the
motor motion engine so the source's exact spring physics
carry over. All 72 beui.dev catalog entries across three groups.

📦 pub.dev/packages/beui · 🎨 Live gallery

dependencies:
  beui: ^1.0.0

A beui.dev page is not always one component: several pages ship multiple
independently-installable widgets, and all of them are covered here.

Components (motion primitives)

Tilt Card, Button (+ Stateful + Magnetic), Animated CTA Buttons (expanding /
hold / slide), Marquee, Tabs, Switch, Input, Select (+ Morph), Checkbox,
Radio Group, Bottom Sheet, Pull to Refresh, Shared Layout Background,
Bounce Sidebar, Animated Sidebar (sidebar / floating / inset), Preview Rail,
Dock (+ separator-grouped actions), Tooltip, Context Menu, Popover (+ Morph),
Morphing Modal, Center Morph Modal, Text Animation (reveal / shimmer /
cascade / chromatic), Number Animation (count-up + ticker), Animated Badge,
Action Swap (blur / roll / cascade), Animated Toast Stack, Theme Toggle
(rectangle / circle / circle-blur / blinds), Bouncy Accordion, Drawer,
Scroll Animation (smooth scroll / progress / reveal / scroll-to / parallax),
Range Slider (ticked / fluid / wave / bubble / ruler), Wheel Picker, Table,
Shader Background (21 GPU variants), Cylinder Carousel, Loader (17 variants).

Blocks (composed patterns)

Infinite Masonry, Notification Stack, Fixtures (knockout bracket with
third-place playoff + knockout wheel), Availability Scheduler,
Multi-chain Swap, Dynamic Island, Command Palette, Expandable Action Bar,
Overflow Actions, Expandable Tabs, Swipeable List, File Upload (upload queue

  • attachment workspace), Prediction Market, Wallet Card, OTP Input,
    Bloom Menu, Feedback Widget, 404 / Not Found (5 variants).

AI Agents (conversational interfaces)

Message Bubble, Message, Message Scroller, Prompt Input, Todo List,
Code Block, Approval Card, File Diff, Tool Result, Streaming Response,
Image Generation, Tool Approval, Citations, Agent Activity, Agent Loading
States (thinking shimmer / agent progress / reasoning text), AI Sidebar,
Chat App.

Foundation

  • Spring and easing motion tokens mirroring the source ease.ts, resolved
    through a single motor-backed facade.
  • BeuiColors ThemeExtension with light/dark and 11 color themes.
  • Shared BeuiOverlay foundation for every floating surface (tooltip, drawer,
    sheet, modal, command palette).
  • Reduced-motion resolver (motionFor) that drops movement while preserving
    opacity/color feedback.
  • Default flutter_lucide icon set re-exported through the barrel.

Deliberate departures from the source

  • No dual-thumb range slider — beui.dev ships five single-value sliders and no
    range variant.
  • File pickers are the consumer's: BeuiFileUpload and BeuiAttachmentUpload
    carry file metadata and expose onBrowse, so the package takes no
    file-picker dependency.
  • Compound React components (Tabs/TabsList/TabsTrigger, Select/
    SelectTrigger/…, the AnimatedSidebar* family) collapse into single
    widgets taking item models, per the Flutter conventions in
    docs/PORTING_SPEC.md §6.