FluffyUI
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 9 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in scripts/check-coverage.sh
- rm -rf — Recursive force deletion command in scripts/overall-coverage.sh
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
A Go TUI framework with widgets, FSS styling, accessibility, reactive state, web backends, and agent tooling.
FluffyUI
The most comprehensive TUI framework for Go.
88 widgets. CSS-like styling. Built-in accessibility. AI-ready.
Agent Skill
Agents working with FluffyUI should use the using-fluffyui skill.
How does FluffyUI compare?
| Feature | FluffyUI | Bubble Tea | Textual | Ratatui |
|---|---|---|---|---|
| Language | Go | Go | Python | Rust |
| Widgets | 88 | ~15 | ~40 | ~15 |
| CSS-like Styling | Yes (FSS) | No | Yes | No |
| Layout Engine | Flexbox + Grid | Manual | CSS Grid | Manual |
| Accessibility | ARIA + TTS | No | No | No |
| AI Agent (MCP) | 145+ tools | No | No | No |
| GPU Rendering | 4 backends | No | No | No |
| Reactive State | Signal[T] | Elm (TEA) | Reactive | Manual |
| Web Backend | WebSocket | No | textual-web | No |
| Hot Reload | Yes | No | Yes | No |
Quick Start
package main
import "m31labs.dev/fluffyui/fluffy"
func main() {
app, _ := fluffy.NewApp(
fluffy.WithRoot(fluffy.VStack(
fluffy.Label("Hello, FluffyUI!"),
fluffy.PrimaryButton("Click me", func() {
// Your logic here
}),
)),
)
app.Run()
}
Installation
go get m31labs.dev/fluffyui@latest
Requirements: Go 1.24 or later.
Scaffold a new project:
go install m31labs.dev/fluffyui/cmd/fluffy@latest
fluffy create my-app --template full
cd my-app && go run .
Widget Catalog
88 widgets organized into six categories:
| Category | Count | Highlights |
|---|---|---|
| Input | 18 | Button, Input, TextArea, Select, Slider, DatePicker, TimePicker, ColorPicker, TagInput, Rating |
| Data | 14 | Table, DataGrid, List, Tree, DirectoryTree, Log, RichText, MarkdownViewer, Heatmap, Image |
| Layout | 12 | Grid, Flex, Stack, Splitter, ScrollView, Panel, AspectRatio, Drawer, FocusTrap, Sidebar |
| Navigation | 12 | Tabs, Menu, Breadcrumb, Stepper, CommandPalette, Accordion, Pagination, Link, SkipNav |
| Feedback | 16 | Dialog, Alert, ToastStack, Spinner, Progress, Sparkline, BarChart, LineChart, Badge, Skeleton |
| Utility | 16 | Inspector, DebugOverlay, PerformanceDashboard, VideoPlayer, Canvas, GPUCanvas, Tooltip, Popover |
Full catalog: docs/widgets/overview.md
Styling with FSS
FluffyUI's stylesheet language (FSS) brings CSS-like styling to the terminal with hot reload:
Button {
background: #3b82f6;
color: white;
padding: 0 2;
border: rounded;
}
Button:hover {
background: #2563eb;
}
Button.danger {
background: #ef4444;
}
app, _ := fluffy.NewApp(
fluffy.WithStylesheet("styles.fss"),
)
Supports selectors, pseudo-classes, transitions, min/max sizing, flexbox properties, and live reload during development with fluffy dev.
Reactive State
Type-safe signals with automatic UI updates:
count := state.NewSignal(0)
// Derived values recompute automatically
doubled := state.NewComputed(func() int {
return count.Get() * 2
})
// Widgets observe signals and re-render on change
count.Set(42) // UI updates automatically
Accessibility
ARIA roles, screen reader announcements, and TTS built into every widget:
// Every widget implements accessibility.Accessible
widget.AccessibleRole() // "button", "textbox", "grid", ...
widget.AccessibleName() // Human-readable label
widget.AccessibleState() // Focused, selected, expanded, ...
- 40+ ARIA roles (WAI-ARIA 1.2/1.3)
- 14 extended ARIA properties
- TTS backends: espeak, SSIP (Linux), say (macOS), SAPI (Windows)
- Focus management with visible indicators
- Screen reader announcements across 67+ widget interaction points
AI Agent Integration (MCP)
FluffyUI exposes 145+ MCP tools so AI agents can read, navigate, and control your TUI:
import "m31labs.dev/fluffyui/agent"
srv, _ := agent.NewServer(agent.ServerOptions{
Addr: "unix:/tmp/fluffyui.sock",
App: app,
})
go srv.Serve(ctx)
Three transports (stdio, SSE, Unix socket), 52 read tools, 56+ write tools, batch execution, and a built-in agent cookbook. See the AI Agent Tutorial.
Graphics and Animation
- Canvas API -- sub-cell drawing with Braille, Sextant, Quadrant, and ASCII blitters
- GPU rendering -- Metal, OpenGL, WebGL, and Software backends
- Animation -- tweens (10 easing functions), physics springs, particle systems
- Transforms -- translate, rotate, scale with save/restore
More Features
- Dev Loop -- hot-reload with
fluffy dev -- go run . - Web Backend -- serve your TUI over WebSocket with auth and TLS
- Keybindings -- registry-based commands with modes and stacking
- Recording -- capture sessions as asciicast, export to video
- Testing -- simulation backend for deterministic, headless tests
- Clipboard -- OSC-52, platform tools, memory fallback (auto-detected)
- i18n -- localization bundles and runtime wiring
- Plugins -- lightweight registry for third-party widgets
Examples
go run ./examples/candy-wars # Showcase trading game
go run ./examples/todo-app # Full CRUD app
go run ./examples/dashboard # Data visualization
go run ./examples/fireworks-demo # 3D particle effects
go run ./examples/widget-gallery # Complete widget sampler
38 example apps in examples/ covering every feature area. See docs/EXAMPLES.md for the full list.
Documentation
| Guide | Description |
|---|---|
| Getting Started | Installation and first app |
| Architecture | Core concepts and render pipeline |
| Widget Catalog | All 88 widgets with usage |
| Styling (FSS) | Stylesheets, themes, transitions |
| Accessibility | Roles, announcements, TTS |
| Agent Integration | MCP tools and transports |
| Testing | Simulation backend and helpers |
| Performance | Profiling and optimization |
| Bubble Tea Migration | Moving from Bubble Tea |
| API Reference | Package-level documentation |
Contributing
Contributions are welcome! See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
License
See the repository for license information.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi