Go to file
Kinneyzhang 43b17192d9 feat: implement unified etaf architecture
Deliver the unified View and Component model with retained Runtime, reactive scopes, Context, Behaviors, events, Actions, styles, Resources, Data, official UI Components, and Playground examples.\n\nVerification: make check and make load pass in the independent repository; sibling Ebox core tests pass 544/544.
2026-08-05 02:56:13 +08:00
docs feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
tests feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
.gitignore feat: establish unified etaf view foundation 2026-08-05 00:36:52 +08:00
etaf-actions.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-behavior.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-component.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-context.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-data.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-events.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-playground.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-reactive.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-renderer.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-resource.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-runtime.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-ui.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf-view.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
etaf.el feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
Makefile feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
README.md feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00
README.zh-CN.md feat: implement unified etaf architecture 2026-08-05 02:56:13 +08:00

ETAF

ETAF is a small text-application framework built above the independent Ebox layout and rendering engine.

Its complete public model is:

Component(props, Scope) → View → Renderer → Ebox Node → Emacs buffer

Every visible structure uses one form:

(name :property value ... child ...)

The only child computation bridge is expr :value; attribute values are ordinary Elisp expressions.

(etaf-view
 (column
  (text :face 'bold "Hello")
  (text
   :color "#687386"
   (expr :value (if ready "Ready" "Waiting")))))

Define a Component:

(etaf-define-component status-label (&key label)
  "Render a status label."
  :view
  (text :face 'bold (expr :value label)))

(etaf-mount
 "*etaf-demo*"
 (etaf-view (status-label :label "Connected")))

etaf-view is the single public View constructor. Structural forms do not use quote; quote remains ordinary Elisp data syntax, such as 'bold. A View returned from ordinary Elisp is explicitly constructed with (etaf-view ...) inside expr.

Documentation

Load and verify

During development, load the sibling Ebox checkout before ETAF:

(add-to-list 'load-path "/path/to/github/emacs-box")
(add-to-list 'load-path "/path/to/github/etaf")
(require 'etaf)

Run the complete local gate:

make check EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs

The gate byte-compiles the implementation, runs the core/Data/Resource/UI/Playground tests, and checks documentation/API boundaries. etaf-ui and etaf-playground are optional modules and are not loaded by the core facade.