ETAF 文本应用集合:etaf-ncm 等用 etaf/etaf-ui/ebox 搭建的独立 Emacs 应用(workspace root for ETAF applications)
  • Python 92.8%
  • Emacs Lisp 4.9%
  • Makefile 2%
  • Shell 0.3%
Find a file
Kinneyzhang 219b1be8fa
Some checks are pending
Repository structure / structure (push) Waiting to run
docs(apps): require prefix-free active states and the shared icons
Record the two UI requirements the reader settled: navigation uses the
shared SVG icon set with uniform metrics, and an active state is carried
by colour, surface, weight and icon colour, never by a prefix glyph
whose width change shifts the row on every switch.  The vertical-budget
rule now allows a scaled reading font only together with a recomputed
row budget and canvas line count, which is what the reader does.

Validation: documentation only; the reader's make check passes (41
acceptance scenarios).
2026-10-02 11:20:27 +08:00
.githooks feat(apps): start the ETAF applications workspace 2026-09-30 01:27:49 +08:00
.github/workflows feat(apps): start the ETAF applications workspace 2026-09-30 01:27:49 +08:00
docs feat(apps): add the etaf-weread application 2026-10-01 20:55:10 +08:00
scripts feat(apps): add the etaf-weread application 2026-10-01 20:55:10 +08:00
tests/tools feat(apps): start the ETAF applications workspace 2026-09-30 01:27:49 +08:00
.editorconfig feat(apps): start the ETAF applications workspace 2026-09-30 01:27:49 +08:00
.gitignore feat(apps): add the etaf-weread application 2026-10-01 20:55:10 +08:00
AGENTS.md docs(apps): require prefix-free active states and the shared icons 2026-10-02 11:20:27 +08:00
Makefile feat(apps): add the etaf-weread application 2026-10-01 20:55:10 +08:00
README.md feat(apps): add the etaf-weread application 2026-10-01 20:55:10 +08:00
workspace.json chore(apps): record etaf-weread at the icon navigation 2026-10-02 08:41:43 +08:00

ETAF applications

Applications built on the ETAF text-application framework. Each application is an independent Emacs Lisp repository with its own history, public interface and checks; this root owns their integration checkpoint, shared tooling and the conventions they follow.

Application Responsibility Framework dependencies
etaf-ncm NetEase Cloud Music player: library browsing, playback control, lyrics and queue etaf, etaf-ui, ebox
etaf-weread WeChat Reading client: shelf, notebook, highlights, store search, statistics and a local SQLite highlight index etaf, etaf-ui, etaf-db, ebox

Requirements

  • Emacs 29.1 or newer, with the framework packages available on load-path.
  • Python 3.10+ and Git for the repository policy checks.
  • The runtime dependencies of the application you run; see its README.

The framework repositories are the dependency providers (etaf, etaf-ui, ebox, ecss). Clone them as siblings of this directory, keeping those directory names; each application's scripts/api-workspace.json records the providers it is checked against and can fetch them for a standalone checkout.

Setup

git clone -o laycat git@gitea.gklazycat.heiyu.space:geekinney/etaf-apps.git
cd etaf-apps
git clone -o laycat git@gitea.gklazycat.heiyu.space:geekinney/etaf-ncm.git
make setup-hooks

Each application README documents its own installation and usage. This root adds the collective checks:

make check                  # policy, compilation, public API and acceptance for every application
make check EMACS=/path/to/emacs
make api-check              # public entry bindings and signatures of every application
(cd etaf-ncm && python3 scripts/check-api.py --root . --fetch-providers --providers-dir ../..)
                            # fetch the providers the applications are checked against

The recorded revisions in workspace.json identify the application commits verified together; they are an integration checkpoint, not a release certification.

Documentation

Contributing

Commit in the owning repository, keep the application's make check green, then refresh the recorded revision in workspace.json. Message and structure gates run from .githooks after make setup-hooks.