termrender 2.1.0__tar.gz → 3.0.1__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.
Files changed (53) hide show
  1. {termrender-2.1.0 → termrender-3.0.1}/CHANGELOG.md +40 -0
  2. {termrender-2.1.0 → termrender-3.0.1}/CLAUDE.md +3 -5
  3. {termrender-2.1.0 → termrender-3.0.1}/PKG-INFO +22 -7
  4. {termrender-2.1.0 → termrender-3.0.1}/README.md +21 -6
  5. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/__main__.py +391 -397
  6. termrender-3.0.1/tests/test_cli_contract.py +370 -0
  7. termrender-3.0.1/uv.lock +71 -0
  8. termrender-2.1.0/tests/test_cli_contract.py +0 -209
  9. {termrender-2.1.0 → termrender-3.0.1}/.github/workflows/publish.yml +0 -0
  10. {termrender-2.1.0 → termrender-3.0.1}/.gitignore +0 -0
  11. {termrender-2.1.0 → termrender-3.0.1}/LICENSE +0 -0
  12. {termrender-2.1.0 → termrender-3.0.1}/design.json +0 -0
  13. {termrender-2.1.0 → termrender-3.0.1}/pyproject.toml +0 -0
  14. {termrender-2.1.0 → termrender-3.0.1}/requirements.json +0 -0
  15. {termrender-2.1.0 → termrender-3.0.1}/scripts/build-mermaid-ascii.sh +0 -0
  16. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/CLAUDE.md +0 -0
  17. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/__init__.py +0 -0
  18. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/_bin/mermaid-ascii-darwin-arm64 +0 -0
  19. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/_mermaid_bin.py +0 -0
  20. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/blocks.py +0 -0
  21. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/emit.py +0 -0
  22. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/layout.py +0 -0
  23. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/parser.py +0 -0
  24. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/py.typed +0 -0
  25. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/CLAUDE.md +0 -0
  26. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/__init__.py +0 -0
  27. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/borders.py +0 -0
  28. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/charts.py +0 -0
  29. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/code.py +0 -0
  30. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/columns.py +0 -0
  31. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/diff.py +0 -0
  32. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/divider.py +0 -0
  33. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/mermaid.py +0 -0
  34. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/panel.py +0 -0
  35. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/quote.py +0 -0
  36. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/stat.py +0 -0
  37. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/table.py +0 -0
  38. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/text.py +0 -0
  39. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/timeline.py +0 -0
  40. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/renderers/tree.py +0 -0
  41. {termrender-2.1.0 → termrender-3.0.1}/src/termrender/style.py +0 -0
  42. {termrender-2.1.0 → termrender-3.0.1}/tests/__init__.py +0 -0
  43. {termrender-2.1.0 → termrender-3.0.1}/tests/test_charts.py +0 -0
  44. {termrender-2.1.0 → termrender-3.0.1}/tests/test_column_alignment.py +0 -0
  45. {termrender-2.1.0 → termrender-3.0.1}/tests/test_diff.py +0 -0
  46. {termrender-2.1.0 → termrender-3.0.1}/tests/test_inline_badge.py +0 -0
  47. {termrender-2.1.0 → termrender-3.0.1}/tests/test_linebreak.py +0 -0
  48. {termrender-2.1.0 → termrender-3.0.1}/tests/test_mermaid_compat.py +0 -0
  49. {termrender-2.1.0 → termrender-3.0.1}/tests/test_myst_gaps.py +0 -0
  50. {termrender-2.1.0 → termrender-3.0.1}/tests/test_stat.py +0 -0
  51. {termrender-2.1.0 → termrender-3.0.1}/tests/test_tasklist.py +0 -0
  52. {termrender-2.1.0 → termrender-3.0.1}/tests/test_timeline.py +0 -0
  53. {termrender-2.1.0 → termrender-3.0.1}/tests/test_variable_colons.py +0 -0
@@ -1,6 +1,46 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v3.0.1 (2026-06-10)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Spawn tmux render pane via absolute termrender path, not bare PATH name
9
+ ([`993c646`](https://github.com/crouton-labs/termrender/commit/993c6463afc64b94b6dbbdbe6e69f7652feac500))
10
+
11
+ The tmux pane command baked a bare `termrender` token into split-window/ respawn-pane, so the
12
+ spawned pane resolved it via $PATH. A venv-only install (invoked by absolute path, not on PATH)
13
+ produced a pane that died instantly and silently. Build the pane command from termrender's own
14
+ absolute invocation (argv[0] when executable, else `python -m termrender`).
15
+
16
+
17
+ ## v3.0.0 (2026-05-18)
18
+
19
+ ### Chores
20
+
21
+ - Re-trigger release publish for v3.0.0
22
+ ([`467c583`](https://github.com/crouton-labs/termrender/commit/467c58338de217a417530e0bc32ad0a6973012eb))
23
+
24
+ ### Documentation
25
+
26
+ - **claude-md**: Update CLI invocations to v3 flag form, prune stale notes
27
+ ([`1276bf8`](https://github.com/crouton-labs/termrender/commit/1276bf86261528a725f8a012e2105b359f085eca))
28
+
29
+ ### Features
30
+
31
+ - **cli**: Switch input contract to flags + positional + stdin
32
+ ([`38df421`](https://github.com/crouton-labs/termrender/commit/38df4218af8c26d469a442b87090ad268ae47b0e))
33
+
34
+ Drops JSON-on-stdin in favor of long-form flags, at most one positional, stdin for the markdown
35
+ content blob, per cli-design v2. Output (ANSI for render, JSON elsewhere), errors, and exit codes
36
+ are unchanged.
37
+
38
+ - doc render / doc check now read source from stdin - doc watch / pane open / pane update take path
39
+ as positional - pane update gains --pane-id flag - --color is an enum (auto|on|off) replacing the
40
+ prior bool|null - --watch is presence-only and defaults to false on pane open/update - Internal
41
+ pane self-pipe rebuilds the new flag-form invocations
42
+
43
+
4
44
  ## v2.1.0 (2026-05-16)
5
45
 
6
46
  ### Documentation
@@ -4,18 +4,16 @@
4
4
  ```bash
5
5
  pip install -e .
6
6
  pytest tests/
7
- python -m termrender <file.md>
7
+ cat file.md | termrender doc render # render markdown
8
+ cat file.md | termrender doc check # validate syntax
9
+ termrender doc watch /path/to/file.md # live-render
8
10
  python -m build
9
11
  ```
10
12
 
11
- No linter or formatter is configured.
12
-
13
13
  ## Constraints
14
14
  - **Layout pass order is load-bearing**: `resolve_width()` top-down must complete before `resolve_height()` bottom-up — height calls `wrap_text(text, width)`, which requires width already set.
15
- - **`borders.py` `render_box` width**: takes **total** width including borders, not content width. Passing content width silently overflows.
16
15
  - **`wrap_text()` CJK bug**: uses `len()` internally, not `visual_len()` — silently overflows for CJK content.
17
16
  - **`_ambiguous_width` is global mutable state** with no reset path — `set_ambiguous_width()` or `TERMRENDER_CJK` env var changes persist for the process lifetime.
18
- - **Version**: derived from git tags via hatch-vcs — no version in `pyproject.toml`. Adding one will conflict.
19
17
  - **Commits**: conventional commits. `feat` → minor, `fix`/`perf` → patch. Auto-released via python-semantic-release on main.
20
18
 
21
19
  ## Supplementary CLAUDE.md files
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: termrender
3
- Version: 2.1.0
3
+ Version: 3.0.1
4
4
  Summary: Rich terminal rendering of directive-flavored markdown
5
5
  Project-URL: Homepage, https://github.com/CaptainCrouton89/termrender
6
6
  Project-URL: Repository, https://github.com/CaptainCrouton89/termrender
@@ -170,14 +170,29 @@ Python 3.10+. Three dependencies: [mistune](https://github.com/lepture/mistune)
170
170
  ### CLI
171
171
 
172
172
  ```bash
173
- termrender doc.md # render a file
174
- termrender doc.md --width 100 # fixed width
175
- termrender doc.md --no-color # strip ANSI codes
176
- cat doc.md | termrender # from stdin
177
- echo '# Hello' | termrender # inline
173
+ cat doc.md | termrender doc render # render a file
174
+ cat doc.md | termrender doc render --width 100 # fixed width
175
+ cat doc.md | termrender doc render --color off # strip ANSI codes
176
+ cat doc.md | termrender doc render --color on --cjk # force color + CJK mode
177
+ echo '# Hello' | termrender doc render # inline
178
+
179
+ cat doc.md | termrender doc check # validate syntax
180
+ termrender doc watch /path/to/doc.md # live-render (interactive)
181
+ termrender doc watch --color on /path/to/doc.md # live-render with color
178
182
  ```
179
183
 
180
- Reads from a file or stdin. Auto-detects terminal width unless you specify `--width`. Respects `NO_COLOR`.
184
+ `doc render` and `doc check` read markdown from stdin. `doc watch` takes the file path as a positional argument. Auto-detects terminal width unless you specify `--width`. Respects `NO_COLOR` with `--color auto` (the default).
185
+
186
+ For tmux pane management:
187
+
188
+ ```bash
189
+ termrender pane open /path/to/doc.md # spawn a side pane
190
+ termrender pane open --watch /path/to/doc.md # spawn with live-update
191
+ termrender pane open --width 80 --window new /path/to/doc.md
192
+
193
+ termrender pane update /path/to/new.md --pane-id %23 # update existing pane
194
+ termrender pane update --watch /path/to/doc.md --pane-id %23
195
+ ```
181
196
 
182
197
  ### Python
183
198
 
@@ -142,14 +142,29 @@ Python 3.10+. Three dependencies: [mistune](https://github.com/lepture/mistune)
142
142
  ### CLI
143
143
 
144
144
  ```bash
145
- termrender doc.md # render a file
146
- termrender doc.md --width 100 # fixed width
147
- termrender doc.md --no-color # strip ANSI codes
148
- cat doc.md | termrender # from stdin
149
- echo '# Hello' | termrender # inline
145
+ cat doc.md | termrender doc render # render a file
146
+ cat doc.md | termrender doc render --width 100 # fixed width
147
+ cat doc.md | termrender doc render --color off # strip ANSI codes
148
+ cat doc.md | termrender doc render --color on --cjk # force color + CJK mode
149
+ echo '# Hello' | termrender doc render # inline
150
+
151
+ cat doc.md | termrender doc check # validate syntax
152
+ termrender doc watch /path/to/doc.md # live-render (interactive)
153
+ termrender doc watch --color on /path/to/doc.md # live-render with color
150
154
  ```
151
155
 
152
- Reads from a file or stdin. Auto-detects terminal width unless you specify `--width`. Respects `NO_COLOR`.
156
+ `doc render` and `doc check` read markdown from stdin. `doc watch` takes the file path as a positional argument. Auto-detects terminal width unless you specify `--width`. Respects `NO_COLOR` with `--color auto` (the default).
157
+
158
+ For tmux pane management:
159
+
160
+ ```bash
161
+ termrender pane open /path/to/doc.md # spawn a side pane
162
+ termrender pane open --watch /path/to/doc.md # spawn with live-update
163
+ termrender pane open --width 80 --window new /path/to/doc.md
164
+
165
+ termrender pane update /path/to/new.md --pane-id %23 # update existing pane
166
+ termrender pane update --watch /path/to/doc.md --pane-id %23
167
+ ```
153
168
 
154
169
  ### Python
155
170