elate 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- elate-0.1.0/.gitignore +14 -0
- elate-0.1.0/CHANGELOG.md +89 -0
- elate-0.1.0/LICENSE +674 -0
- elate-0.1.0/PKG-INFO +803 -0
- elate-0.1.0/PLAN-integrations.md +179 -0
- elate-0.1.0/PLAN.md +246 -0
- elate-0.1.0/PROGRESS.md +783 -0
- elate-0.1.0/README.md +778 -0
- elate-0.1.0/REVIEW-phase1.md +278 -0
- elate-0.1.0/REVIEW-phase2.md +297 -0
- elate-0.1.0/REVIEW-phase3.md +265 -0
- elate-0.1.0/REVIEW-phase4.md +213 -0
- elate-0.1.0/REVIEW-phase5.md +334 -0
- elate-0.1.0/REVIEW-phase6.md +218 -0
- elate-0.1.0/examples/clean-install.json +16 -0
- elate-0.1.0/examples/drive-dired.json +21 -0
- elate-0.1.0/examples/elpkg.el +22 -0
- elate-0.1.0/examples/font-lock.json +15 -0
- elate-0.1.0/examples/transient-menu.json +19 -0
- elate-0.1.0/pyproject.toml +46 -0
- elate-0.1.0/src/elate/__init__.py +3 -0
- elate-0.1.0/src/elate/cli.py +1297 -0
- elate-0.1.0/src/elate/elisp/elate-agent.el +1911 -0
- elate-0.1.0/src/elate/errors.py +45 -0
- elate-0.1.0/src/elate/gui.py +259 -0
- elate-0.1.0/src/elate/kbd.py +108 -0
- elate-0.1.0/src/elate/mcp_server.py +1086 -0
- elate-0.1.0/src/elate/paths.py +25 -0
- elate-0.1.0/src/elate/raw.py +174 -0
- elate-0.1.0/src/elate/record.py +333 -0
- elate-0.1.0/src/elate/sandbox.py +241 -0
- elate-0.1.0/src/elate/screenshot.py +214 -0
- elate-0.1.0/src/elate/script.py +1027 -0
- elate-0.1.0/src/elate/semantic.py +136 -0
- elate-0.1.0/src/elate/session.py +1045 -0
- elate-0.1.0/src/elate/snap.py +254 -0
- elate-0.1.0/src/elate/transcript.py +36 -0
- elate-0.1.0/tests/test_gui.py +930 -0
- elate-0.1.0/tests/test_integration.py +742 -0
- elate-0.1.0/tests/test_kbd.py +67 -0
- elate-0.1.0/tests/test_mcp.py +854 -0
- elate-0.1.0/tests/test_polish.py +780 -0
- elate-0.1.0/tests/test_quality.py +849 -0
- elate-0.1.0/tests/test_recording.py +995 -0
- elate-0.1.0/uv.lock +1077 -0
elate-0.1.0/.gitignore
ADDED
elate-0.1.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
Everything below shipped in phases on the way to 0.1; one section per phase.
|
|
6
|
+
|
|
7
|
+
### Phase 1 — TTY MVP
|
|
8
|
+
|
|
9
|
+
- Sandboxed sessions: fresh fake `$HOME` + XDG dirs, generated init
|
|
10
|
+
(`--init-directory`), per-session server.el socket, dedicated tmux
|
|
11
|
+
server with its socket inside the sandbox.
|
|
12
|
+
- Config modes `minimal` (deterministic test defaults), `bare` (`-Q`),
|
|
13
|
+
`init-file`; `--load` / `--eval` startup hooks with errors captured
|
|
14
|
+
to `init_error` instead of wedging the session.
|
|
15
|
+
- Two channels: semantic (`emacsclient --eval` against the in-Emacs
|
|
16
|
+
agent; base64-JSON replies) and raw (tmux keys/capture-pane — works
|
|
17
|
+
even when Emacs is wedged; crashed panes stay for post-mortem
|
|
18
|
+
screenshots).
|
|
19
|
+
- CLI with `--json` everywhere: `start/stop/list/info`, `keys` (kbd
|
|
20
|
+
notation; macro, queued-events, or raw delivery), `type`, `eval`
|
|
21
|
+
(printed value, *Messages* delta, error + full backtrace, hard
|
|
22
|
+
timeouts), `buffer`, `messages` (cursor-based delta), `echo`,
|
|
23
|
+
`screenshot` (text/ANSI), `describe`, `wait idle|text|prompt`
|
|
24
|
+
(timeouts embed a state snapshot; exit 3).
|
|
25
|
+
|
|
26
|
+
### Phase 2 — MCP server
|
|
27
|
+
|
|
28
|
+
- `elate mcp`: stdio server, tools 1:1 with the CLI, every response
|
|
29
|
+
structured JSON with an `ok` flag; errors embed a compact state
|
|
30
|
+
snapshot so the model sees why.
|
|
31
|
+
- `elate_state`: the one-call scene snapshot (window layout tree with
|
|
32
|
+
visible text, buffer/modes/point/region, minibuffer prompt + input +
|
|
33
|
+
completion candidates, echo area, pending input, *Messages* tail).
|
|
34
|
+
- Non-Unicode payloads sanitized centrally (`elate--encode`); tool
|
|
35
|
+
bodies run off the event loop (`_threaded`); timeouts schema-bounded.
|
|
36
|
+
|
|
37
|
+
### Phase 3 — GUI sessions
|
|
38
|
+
|
|
39
|
+
- `--ui gui`: windowed Emacs (macOS native; Linux X11 with `--headless`
|
|
40
|
+
Xvfb), PNG screenshots (`screencapture` / `import`/`xwd`), live
|
|
41
|
+
`resize`, frame geometry pinning.
|
|
42
|
+
- Semantic mouse for both UIs (`mouse` / `elate_mouse`): synthesized
|
|
43
|
+
posn-based click/double/drag/wheel through the command loop — real
|
|
44
|
+
bindings fire, no OS permissions needed.
|
|
45
|
+
- Robustness: server.el request handling shielded from the debugger
|
|
46
|
+
(dead-client replies can no longer wedge the channel), E2BIG argv
|
|
47
|
+
errors converted to actionable messages, identity-checked pid
|
|
48
|
+
handling against reuse, GUI `type` chunked + capped.
|
|
49
|
+
|
|
50
|
+
### Phase 4 — Testing & quality tooling
|
|
51
|
+
|
|
52
|
+
- `test` / `elate_test`: interactive ERT runs (selector support) with
|
|
53
|
+
structural per-test results (status, duration, captured messages,
|
|
54
|
+
condition, trimmed backtrace); in-Emacs run timeout with partial
|
|
55
|
+
results; quits are recorded, never prompt.
|
|
56
|
+
- `lint` / `elate_lint`: byte-compile + checkdoc as structured items;
|
|
57
|
+
in-session by design (and loudly documented as executing
|
|
58
|
+
compile-time code — lint untrusted code in a throwaway session).
|
|
59
|
+
- `buffer --props`: run-length-encoded face/text-property runs +
|
|
60
|
+
overlay dumps; `faces-at` point queries; `popups` capture
|
|
61
|
+
(which-key, transient, hydra/lv, corfu, company,
|
|
62
|
+
completion-preview, child frames).
|
|
63
|
+
|
|
64
|
+
### Phase 5 — Recording & CI
|
|
65
|
+
|
|
66
|
+
- JSON scenario scripts: strict up-front validation, steps mirroring
|
|
67
|
+
the CLI verbs plus assertions; `elate run` executes them in a fresh
|
|
68
|
+
throwaway session (exit 0/1, first failure stops the run, failed
|
|
69
|
+
steps embed state); `elate_run_script` over MCP.
|
|
70
|
+
- `export-script`: transcript → editable scenario; `record`: asciicast
|
|
71
|
+
v2 via tmux pipe-pane; `snap`: detached periodic frame series;
|
|
72
|
+
`matrix`: one script across several Emacs binaries.
|
|
73
|
+
|
|
74
|
+
### Phase 6 — Polish
|
|
75
|
+
|
|
76
|
+
- `profile` / `elate_profile`: Emacs's native profiler with structured
|
|
77
|
+
reports — top functions (self/total + percentages) and a
|
|
78
|
+
depth-limited unified calltree; one-shot `profile run FORM`.
|
|
79
|
+
- `bench` / `elate_bench`: `benchmark-run-compiled` wrapper with
|
|
80
|
+
interpreted fallback; elapsed/mean, GC stats, `memory-use-counts`
|
|
81
|
+
allocation deltas.
|
|
82
|
+
- `--config clean-install`: install the package under test for real
|
|
83
|
+
(`package-install-file` into a sandbox-local elpa/) — verifies
|
|
84
|
+
autoload cookies, `Package-Requires` (missing deps fail with a clear
|
|
85
|
+
offline error), and byte-compilation of the installed copy; install
|
|
86
|
+
results exposed via `info`/`state`.
|
|
87
|
+
- Recipes in the README backed by tested scripts in `examples/`
|
|
88
|
+
(transient menu, font-lock verification, driving dired,
|
|
89
|
+
clean-install).
|