{"id":45781511,"url":"https://github.com/flyingrobots/bijou","last_synced_at":"2026-04-12T06:01:33.893Z","repository":{"id":340257410,"uuid":"1165172605","full_name":"flyingrobots/bijou","owner":"flyingrobots","description":"Themed terminal components for CLIs, loggers, and scripts","archived":false,"fork":false,"pushed_at":"2026-04-08T06:35:17.000Z","size":26439,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T10:18:11.537Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/flyingrobots.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-23T22:37:19.000Z","updated_at":"2026-04-08T06:35:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/flyingrobots/bijou","commit_stats":null,"previous_names":["flyingrobots/bijou"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/flyingrobots/bijou","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fbijou","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fbijou/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fbijou/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fbijou/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flyingrobots","download_url":"https://codeload.github.com/flyingrobots/bijou/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fbijou/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31703646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T21:17:31.016Z","status":"online","status_checked_at":"2026-04-12T02:00:06.763Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-02-26T11:04:56.326Z","updated_at":"2026-04-12T06:01:33.887Z","avatar_url":"https://github.com/flyingrobots.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bijou\n\nAn industrial-grade TypeScript engine for terminal software. Use the pure primitives to build your own CLI, or drop into the batteries-included app shell for a full-screen TUI out of the box.\n\nBijou is designed for the mechanic who demands geometric lawfulness and the architect who needs a stable substrate. It scales from simple mode-aware prompts to high-fidelity, physics-powered terminal applications.\n\n[![npm version](https://img.shields.io/npm/v/@flyingrobots/bijou)](https://www.npmjs.com/package/@flyingrobots/bijou)\n[![License](https://img.shields.io/github/license/flyingrobots/bijou)](./LICENSE)\n\n![Bijou demo](https://github.com/user-attachments/assets/8117f6ad-41e0-470f-aeb6-6722ec44fa2c)\n\n## What's New in v4.4.1\n\nBijou `v4.4.1` is a framed-shell polish release focused on the `4.4.0`\nregression fallout.\n\n- `createFramedApp()` now preserves shell and pane background fill more\n  honestly, including stock header/footer chrome.\n- framed apps can opt into stock shell theme cycling through\n  `shellThemes`, and DOGFOOD now proves that shared path end to end.\n- the stock quit confirm accepts uppercase `Y` / `N` as well as lowercase\n  input.\n\nRead the short-form [changelog](./docs/CHANGELOG.md), the long-form\n[What's New guide](./docs/releases/4.4.1/whats-new.md), and the\n[migration guide](./docs/releases/4.4.1/migration-guide.md).\n\n## Why Bijou?\n\nUnlike Virtual-DOM wrappers that treat the terminal as a low-resolution browser, Bijou treats the terminal as a physical character grid.\n\n- **Deterministic State**: The TEA loop ensures your UI is a pure function of your state history. No hooks, no side-effect soup, and no reconciliation drift.\n- **Byte-Packed Performance**: Rendering happens on zero-allocation byte buffers (`Uint8Array`). It is designed for high-frequency updates and complex layouts that would choke string-heavy engines.\n- **Geometric Honesty**: Portability is not an afterthought. Bijou adapts to CI logs, pipes, and screen readers by changing its rendering strategy, not just stripping colors.\n- **Physics-Powered Motion**: Animations are driven by a unified heartbeat and spring physics, providing fluid movement that remains synchronized with the render loop.\n\n## Essence\n\n- **Degradation as a Substrate Property**: Write once; render perfectly in local TTYs, CI logs, pipes, and accessible environments.\n- **The Elm Architecture (TEA)**: A deterministic state-update-view loop for industrial-strength interactive UIs.\n- **Physics-Powered Motion**: Declarative spring and tween animations synchronized to a unified heartbeat.\n- **Zero-Dependency Core**: The fundamental toolkit is pure TypeScript, isolated from platform-specific IO.\n\n## Quick Start\n\n### 1. Pure CLI Flow\nStandalone primitives for prompts and structured output.\n\n```ts\nimport { group, headerBox, input, select } from '@flyingrobots/bijou';\nimport { initDefaultContext } from '@flyingrobots/bijou-node';\n\ninitDefaultContext();\n\nconst answers = await group({\n  project: () =\u003e input({ title: 'Project name', required: true }),\n  template: () =\u003e select({\n    title: 'Template',\n    options: [\n      { label: 'TypeScript', value: 'ts' },\n      { label: 'Go', value: 'go' },\n    ],\n  }),\n});\n\nconsole.log(headerBox('Scaffold', { detail: `${answers.project} (${answers.template})` }));\n```\n\n### 2. Interactive Runtime\nFull-screen TEA loop with layout, overlays, and motion.\n\n```ts\nimport { type App, quit, run, vstackSurface } from '@flyingrobots/bijou-tui';\nimport { badge, boxSurface } from '@flyingrobots/bijou';\nimport { initDefaultContext } from '@flyingrobots/bijou-node';\n\nconst ctx = initDefaultContext();\n\nconst app: App\u003c{ count: number }\u003e = {\n  init: () =\u003e [{ count: 0 }, []],\n  update: (msg, model) =\u003e {\n    if (msg.type === 'key' \u0026\u0026 msg.key === 'q') return [model, [quit()]];\n    if (msg.type === 'key' \u0026\u0026 msg.key === 'k') return [{ count: model.count + 1 }, []];\n    return [model, []];\n  },\n  view: (model) =\u003e boxSurface(\n    vstackSurface(\n      `Count: ${model.count}`,\n      badge(model.count \u003e 10 ? 'HIGH' : 'LOW', { variant: 'info', ctx }),\n    ),\n    { title: 'Counter', padding: 1, ctx },\n  ),\n};\n\nawait run(app);\n```\n\n### 3. Scaffold a Framed App\nGet the batteries-included workspace shell immediately.\n\n```bash\nnpm create bijou-tui-app@latest my-app\n```\n\n## Packages\n\n| Package | Role |\n| :--- | :--- |\n| [`@flyingrobots/bijou`](./packages/bijou/) | Core toolkit: prompts, components, themes, ports. |\n| [`@flyingrobots/bijou-tui`](./packages/bijou-tui/) | Interactive runtime: TEA, layout, motion, overlays. |\n| [`@flyingrobots/bijou-node`](./packages/bijou-node/) | Node.js adapters: IO, styling, worker helpers. |\n| [`@flyingrobots/bijou-i18n`](./packages/bijou-i18n/) | Localization: in-memory runtime and catalogs. |\n\n## Documentation\n\n- **[Guide](./GUIDE.md)**: Orientation, the fast path, and monorepo orchestration.\n- **[Advanced Guide](./ADVANCED_GUIDE.md)**: Deep dives into the pipeline, shaders, and motion.\n- **[DOGFOOD](./docs/DOGFOOD.md)**: The canonical documentation app. Run `npm run dogfood` to see Bijou in action.\n- **[Design System](./docs/design-system/README.md)**: The foundations and component families.\n- **[Architecture](./ARCHITECTURE.md)**: The hexagonal design and core properties.\n\n## DOGFOOD\n\nDOGFOOD is the canonical human-facing docs surface for Bijou.\n\nIf you are learning the framework, start there first. The `examples/` tree is\nsecondary/internal reference material, not the main public docs path.\n\n---\nBuilt with terminal ambition by [FLYING ROBOTS](https://github.com/flyingrobots)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyingrobots%2Fbijou","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflyingrobots%2Fbijou","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyingrobots%2Fbijou/lists"}