{"id":47635998,"url":"https://github.com/dracondev/dracon-terminal-engine","last_synced_at":"2026-05-13T11:01:00.221Z","repository":{"id":354957310,"uuid":"1225963923","full_name":"DraconDev/dracon-terminal-engine","owner":"DraconDev","description":"A terminal application framework for Rust — App, widgets, compositor, themes, and 15 built-in themes","archived":false,"fork":false,"pushed_at":"2026-05-08T06:58:22.000Z","size":6858,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-08T07:27:44.197Z","etag":null,"topics":["cli","compositor","framework","ratatui","rust","syntax-highlighting","terminal","tui"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/dracon-terminal-engine","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DraconDev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-30T20:40:49.000Z","updated_at":"2026-05-08T06:58:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DraconDev/dracon-terminal-engine","commit_stats":null,"previous_names":["dracondev/dracon-terminal-engine"],"tags_count":78,"template":false,"template_full_name":null,"purl":"pkg:github/DraconDev/dracon-terminal-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DraconDev%2Fdracon-terminal-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DraconDev%2Fdracon-terminal-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DraconDev%2Fdracon-terminal-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DraconDev%2Fdracon-terminal-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DraconDev","download_url":"https://codeload.github.com/DraconDev/dracon-terminal-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DraconDev%2Fdracon-terminal-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32979305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T06:31:55.726Z","status":"ssl_error","status_checked_at":"2026-05-13T06:31:51.336Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","compositor","framework","ratatui","rust","syntax-highlighting","terminal","tui"],"created_at":"2026-04-02T00:05:55.901Z","updated_at":"2026-05-13T11:01:00.200Z","avatar_url":"https://github.com/DraconDev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dracon Terminal Engine\n\n[![crates.io](https://img.shields.io/crates/v/dracon-terminal-engine.svg)](https://crates.io/crates/dracon-terminal-engine)\n[![docs.rs](https://img.shields.io/docsrs/dracon-terminal-engine)](https://docs.rs/dracon-terminal-engine)\n[![Rust](https://img.shields.io/badge/rust-2021-orange.svg)](https://www.rust-lang.org)\n[![License](https://img.shields.io/badge/license-MIT%20%2F%20Apache--2.0-blue.svg)](LICENSE-MIT)\n\n```\n  _______   ______   .______      .___ ___.      ___\n |       | |   ___|  |   _  \\     |   \\/   |     /   \\\n |.|   | | |  |__    |  |_)  |    |  \\  /  |    /  ^  \\\n   |   |   |   __|   |      /     |  |\\/|  |   /  /_\\  \\\n   |   |   |  |____  |  |\\  \\----.|  |  |  |  /  _____  \\\n   |___|   |_______| | _| `._____||__|  |__| /__/     \\__\\\n```\n\n\u003e **A terminal application framework for Rust — one import, AI builds a complete app.**\n\n## What It Is\n\n`dracon-terminal-engine` is a framework for building terminal applications. Not a TUI library — a complete runtime that owns the terminal, input, rendering, and event loop. Mouse-friendly, z-indexed planes, 37 built-in widgets, 20 themes, dirty rendering, and focus management.\n\n**Command-driven architecture** — every widget binds a CLI command, AI can enumerate all actions via `ctx.available_commands()` and trigger them via `ctx.run_command()`.\n\n**One import to rule them all:**\n\n```rust\nuse dracon_terminal_engine::framework::prelude::*;\n\nApp::new().unwrap()\n    .title(\"My App\")\n    .fps(30)\n    .theme(Theme::cyberpunk())\n    .on_tick(|_ctx, _tick| { /* called every 250ms */ })\n    .run(|ctx| {\n        let items = vec![\"Files\", \"Search\", \"Git\", \"Settings\"];\n        let list = List::new(items);\n        let (w, h) = ctx.compositor().size();\n        ctx.add_plane(list.render(Rect::new(0, 0, w, h)));\n    });\n```\n\n## Framework (v29)\n\nThe `framework` module provides the complete application runtime:\n\nEvery widget can bind a CLI command. AI can enumerate all actions via `ctx.available_commands()` and trigger them via `ctx.run_command()`:\n\n```rust\n// In a tick callback, AI can:\nlet cmds = ctx.available_commands();  // List all 50+ available commands\nfor cmd in cmds {\n    println!(\"{}: {}\", cmd.label, cmd.description);\n}\n\n// Trigger any action:\nlet (stdout, stderr, code) = ctx.run_command(\"dracon-sync status --json\");\n```\n| Widget | What |\n|---|---|\n| [`HitZone\u003cT\u003e`] | Declarative interactive region (click/double/drag/hover) |\n| [`HitZoneGroup\u003cT\u003e`] | Batch of hit zones, auto-dispatched |\n| [`ScopedZone\u003cT\u003e`] | Lightweight geometry-only zone for per-frame dispatch |\n| [`ScopedZoneRegistry\u003cT\u003e`] | Registry that clears per frame |\n| [`DragManager\u003cT\u003e`] | Drag-and-drop state machine with ghost rendering |\n| [`FocusManager`] | Tab-order focus ring with keyboard navigation |\n| [`ScrollContainer`] | Scrollable container with offset management + scrollbar |\n\n### 37 Framework Widgets\n| Widget | What |\n|---|---|\n| [`Breadcrumbs`] | Hierarchical path display with clickable segments |\n| [`Button`] | Clickable button with press state and callbacks |\n| [`Checkbox`] | Two-state toggle with check mark |\n| [`CommandPalette`] | Filterable command overlay with search |\n| [`ConfirmDialog`] | Modal yes/no dialog with optional danger styling |\n| [`ContextMenu`] | Right-click popup menu with nested submenus |\n| [`DebugOverlay`] | FPS, widget count, and debug info overlay |\n| [`EventLogger`] | Scrollable event log panel |\n| [`Form`] | Multi-field form container with validation |\n| [`Gauge`] | Filled progress bar with warn/crit thresholds |\n| [`Hud`] | Top-right HUD with system metrics |\n| [`KeyValueGrid`] | Key-value display from JSON/Scalar CLI output |\n| [`Label`] | Static text label |\n| [`List`] | Scrollable list with keyboard/touch navigation |\n| [`LogViewer`] | Auto-scrolling log with severity detection |\n| [`MenuBar`] | Top menu bar with dropdown menus |\n| [`Modal`] | Modal dialog overlay with backdrop |\n| [`PasswordInput`] | Single-line password input with masking |\n| [`ProgressBar`] | Animated progress indicator |\n| [`Profiler`] | Frame timing profiler with bar chart |\n| [`Radio`] | Radio button group (single selection) |\n| [`SearchInput`] | Text input with search/filter behavior |\n| [`Select`] | Dropdown select/combobox |\n| [`Slider`] | Horizontal slider with value display |\n| [`Spinner`] | Animated loading spinner |\n| [`SplitPane`] | Split view with draggable divider |\n| [`StatusBadge`] | Colored OK/WARN/ERROR badge from CLI status |\n| [`StatusBar`] | Bottom status bar |\n| [`StreamingText`] | Live-updating text with word-wrap |\n| [`TabBar`] | Tab navigation bar |\n| [`Table`] | Multi-column table with sorting |\n| [`TextEditorAdapter`] | Adapter for integrating TextEditor widget |\n| [`Toast`] | Temporary notification toast messages |\n| [`Toggle`] | Two-state on/off toggle switch |\n| [`Tooltip`] | Hover tooltip overlay |\n| [`Tree`] | Expandable/collapsible tree view |\n| [`WidgetInspector`] | Widget tree inspector |\n\n### Utilities\n| Module | What |\n|---|---|\n| [`DirtyRegionTracker`] | Efficient partial screen updates |\n| [`AnimationManager`] | Tweening animations with easing curves |\n| [`Layout`] | Constraint-based layout engine (percentage, fixed, min, max, ratio) |\n| [`Theme`] | 20 built-in themes |\n\n### App Architecture (New in v29)\n\n**v29.11.0** — See [CHANGELOG](CHANGELOG.md) for full history.\n\n## License\n\nMIT or Apache-2.0, at your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdracondev%2Fdracon-terminal-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdracondev%2Fdracon-terminal-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdracondev%2Fdracon-terminal-engine/lists"}