termrender 1.0.1__tar.gz → 2.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.
- {termrender-1.0.1 → termrender-2.1.0}/.github/workflows/publish.yml +2 -3
- {termrender-1.0.1 → termrender-2.1.0}/CHANGELOG.md +70 -0
- {termrender-1.0.1 → termrender-2.1.0}/PKG-INFO +2 -2
- {termrender-1.0.1 → termrender-2.1.0}/pyproject.toml +6 -1
- termrender-2.1.0/scripts/build-mermaid-ascii.sh +36 -0
- termrender-2.1.0/src/termrender/CLAUDE.md +1 -0
- termrender-2.1.0/src/termrender/__main__.py +986 -0
- termrender-2.1.0/src/termrender/_bin/mermaid-ascii-darwin-arm64 +0 -0
- termrender-2.1.0/src/termrender/_mermaid_bin.py +41 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/layout.py +2 -1
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/CLAUDE.md +2 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/borders.py +1 -1
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/mermaid.py +2 -1
- termrender-2.1.0/tests/test_cli_contract.py +209 -0
- termrender-1.0.1/.git +0 -1
- termrender-1.0.1/src/termrender/CLAUDE.md +0 -15
- termrender-1.0.1/src/termrender/__main__.py +0 -479
- {termrender-1.0.1 → termrender-2.1.0}/.gitignore +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/CLAUDE.md +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/LICENSE +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/README.md +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/design.json +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/requirements.json +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/__init__.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/blocks.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/emit.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/parser.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/py.typed +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/__init__.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/charts.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/code.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/columns.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/diff.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/divider.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/panel.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/quote.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/stat.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/table.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/text.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/timeline.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/renderers/tree.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/src/termrender/style.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/__init__.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_charts.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_column_alignment.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_diff.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_inline_badge.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_linebreak.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_mermaid_compat.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_myst_gaps.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_stat.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_tasklist.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_timeline.py +0 -0
- {termrender-1.0.1 → termrender-2.1.0}/tests/test_variable_colons.py +0 -0
|
@@ -6,7 +6,6 @@ on:
|
|
|
6
6
|
|
|
7
7
|
permissions:
|
|
8
8
|
contents: write
|
|
9
|
-
id-token: write
|
|
10
9
|
|
|
11
10
|
jobs:
|
|
12
11
|
release:
|
|
@@ -33,8 +32,6 @@ jobs:
|
|
|
33
32
|
if: needs.release.outputs.released == 'true'
|
|
34
33
|
runs-on: ubuntu-latest
|
|
35
34
|
environment: pypi
|
|
36
|
-
permissions:
|
|
37
|
-
id-token: write
|
|
38
35
|
steps:
|
|
39
36
|
- uses: actions/checkout@v4
|
|
40
37
|
with:
|
|
@@ -46,3 +43,5 @@ jobs:
|
|
|
46
43
|
- run: pip install build
|
|
47
44
|
- run: python -m build
|
|
48
45
|
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
46
|
+
with:
|
|
47
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -1,6 +1,76 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v2.1.0 (2026-05-16)
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
- **claude-md**: Document mermaid-ascii vendoring and correct stale --maxWidth
|
|
9
|
+
([`643e25a`](https://github.com/crouton-labs/termrender/commit/643e25a791de1f32591b245dee064f290221cfc2))
|
|
10
|
+
|
|
11
|
+
Note _mermaid_bin resolution, the pinned master binary, the no-width-flag reality, and the back-edge
|
|
12
|
+
panic in renderers/CLAUDE.md.
|
|
13
|
+
|
|
14
|
+
- **claude-md**: Note QUOTE +1 height only applies to author/by attrs
|
|
15
|
+
([`3184d43`](https://github.com/crouton-labs/termrender/commit/3184d43e7293af735b82d559bc3253d7542cbf85))
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
- **mermaid**: Vendor engine from upstream master, fix broken -w invocation
|
|
20
|
+
([`d801de5`](https://github.com/crouton-labs/termrender/commit/d801de5bb22ba5205fe52ef65e80eda96590be93))
|
|
21
|
+
|
|
22
|
+
mermaid-ascii has no -w/width flag and never has; layout.py and mermaid.py passed `-w <width>`, so
|
|
23
|
+
every diagram exited non-zero and degraded to raw source text on the 1.2.0 wheel. Drop -w (call is
|
|
24
|
+
now `-f - -y 1`).
|
|
25
|
+
|
|
26
|
+
Resolve the binary via new _mermaid_bin.mermaid_ascii_bin(): prefer vendored
|
|
27
|
+
_bin/mermaid-ascii-<os>-<arch> (built from pinned upstream master 6fffb8e via
|
|
28
|
+
scripts/build-mermaid-ascii.sh), else fall back to `mermaid-ascii` on PATH (PyPI wheel, capped at
|
|
29
|
+
1.2.0). pyproject ships the binary via hatch artifacts and bumps the fallback dep to >=1.2.
|
|
30
|
+
|
|
31
|
+
Caveats: only darwin-arm64 is vendored (other platforms fall back to the older PyPI engine); a
|
|
32
|
+
labeled back-edge in graph LR panics the binary on both 1.2.0 and master and degrades to source.
|
|
33
|
+
mermaid-ascii has no width control, so wide diagrams overflow (renderer pads, never truncates).
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## v2.0.0 (2026-05-16)
|
|
37
|
+
|
|
38
|
+
### Continuous Integration
|
|
39
|
+
|
|
40
|
+
- **publish**: Authenticate PyPI upload with API token
|
|
41
|
+
([`09e21c8`](https://github.com/crouton-labs/termrender/commit/09e21c8f58529f8c9ba9a383c24563e6ebaba2f3))
|
|
42
|
+
|
|
43
|
+
Trusted publishing has failed on every release since v0.8.0 (invalid-publisher: OIDC claims for
|
|
44
|
+
crouton-labs/termrender had no matching PyPI publisher), so 0.9.0-1.0.1 were tagged but never
|
|
45
|
+
reached PyPI. Switch the publish job to token auth via the pypi-environment secret PYPI_API_TOKEN
|
|
46
|
+
and drop the now-unused id-token permission.
|
|
47
|
+
|
|
48
|
+
### Features
|
|
49
|
+
|
|
50
|
+
- **cli**: Redesign CLI to agent-oriented JSON-stdin contract
|
|
51
|
+
([`ef70751`](https://github.com/crouton-labs/termrender/commit/ef7075103bc49d13cbd6bebdd01841454e5950ff))
|
|
52
|
+
|
|
53
|
+
Restructure the CLI as a noun-verb tree consumed by programs/agents: `termrender doc
|
|
54
|
+
{render,check,watch}` and `termrender pane {open,update}`. All parameters arrive as a single JSON
|
|
55
|
+
object on stdin; no flags except -h. Errors are structured JSON {error,message,next} on stdout
|
|
56
|
+
with stable codes and non-zero exit. `doc check` emits {ok,errors[]} JSON on stdout (was "ok" on
|
|
57
|
+
stderr). Per-node -h is a spec (input/output schema + Effects), not examples. The library render()
|
|
58
|
+
API is unchanged; rendered ANSI output for doc render/doc watch is intentionally preserved as the
|
|
59
|
+
product.
|
|
60
|
+
|
|
61
|
+
BREAKING CHANGE: the flag/positional CLI surface is removed. `termrender FILE`, -w/--width,
|
|
62
|
+
--no-color, --check, --cjk, --tmux, --pane, --tmux-new-window, --watch, and -V/--version no longer
|
|
63
|
+
exist. Callers must invoke a subcommand and pass parameters as a JSON object on stdin. Version is
|
|
64
|
+
shown in root -h.
|
|
65
|
+
|
|
66
|
+
### Breaking Changes
|
|
67
|
+
|
|
68
|
+
- **cli**: The flag/positional CLI surface is removed. `termrender FILE`, -w/--width, --no-color,
|
|
69
|
+
--check, --cjk, --tmux, --pane, --tmux-new-window, --watch, and -V/--version no longer exist.
|
|
70
|
+
Callers must invoke a subcommand and pass parameters as a JSON object on stdin. Version is shown
|
|
71
|
+
in root -h.
|
|
72
|
+
|
|
73
|
+
|
|
4
74
|
## v1.0.1 (2026-04-28)
|
|
5
75
|
|
|
6
76
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: termrender
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 2.1.0
|
|
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
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
21
21
|
Classifier: Topic :: Terminals
|
|
22
22
|
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
|
-
Requires-Dist: mermaid-ascii>=1.
|
|
24
|
+
Requires-Dist: mermaid-ascii>=1.2
|
|
25
25
|
Requires-Dist: mistune>=3.0
|
|
26
26
|
Requires-Dist: pygments>=2.0
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
@@ -28,7 +28,7 @@ classifiers = [
|
|
|
28
28
|
]
|
|
29
29
|
dependencies = [
|
|
30
30
|
"mistune>=3.0",
|
|
31
|
-
"mermaid-ascii>=1.
|
|
31
|
+
"mermaid-ascii>=1.2",
|
|
32
32
|
"pygments>=2.0",
|
|
33
33
|
]
|
|
34
34
|
|
|
@@ -45,6 +45,11 @@ source = "vcs"
|
|
|
45
45
|
|
|
46
46
|
[tool.hatch.build.targets.wheel]
|
|
47
47
|
packages = ["src/termrender"]
|
|
48
|
+
# Ship the vendored mermaid-ascii binary (built from pinned upstream master;
|
|
49
|
+
# see scripts/build-mermaid-ascii.sh). It lives inside the package dir so the
|
|
50
|
+
# default file selection includes it; artifacts ensures it survives even if
|
|
51
|
+
# VCS-ignored, and hatchling preserves its 0o755 exec bit.
|
|
52
|
+
artifacts = ["src/termrender/_bin/*"]
|
|
48
53
|
|
|
49
54
|
[tool.semantic_release]
|
|
50
55
|
version_toml = []
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Build the vendored mermaid-ascii binary from pinned upstream master.
|
|
3
|
+
#
|
|
4
|
+
# Usage: scripts/build-mermaid-ascii.sh
|
|
5
|
+
#
|
|
6
|
+
# Produces src/termrender/_bin/mermaid-ascii-<os>-<arch> for the *host*
|
|
7
|
+
# platform. Run on each target platform (or with GOOS/GOARCH set) to refresh
|
|
8
|
+
# the vendored binaries. Requires a Go toolchain (>=1.21).
|
|
9
|
+
#
|
|
10
|
+
# Why vendored: the PyPI `mermaid-ascii` wheel only ships up to 1.2.0, which
|
|
11
|
+
# lacks the master-only flowchart fixes (multiline node labels, duplicate /
|
|
12
|
+
# bidirectional edge-label separation, subgraph titles, wide-rune label
|
|
13
|
+
# widths). termrender prefers this binary and falls back to the PyPI wheel's
|
|
14
|
+
# `mermaid-ascii` on PATH for platforms not vendored here.
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
|
|
17
|
+
# Pinned upstream commit (github.com/AlexanderGrooff/mermaid-ascii master).
|
|
18
|
+
PIN="6fffb8e2714acab2c4cb41c78894fabbc62cee56"
|
|
19
|
+
|
|
20
|
+
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
21
|
+
workdir="$(mktemp -d)"
|
|
22
|
+
trap 'rm -rf "$workdir"' EXIT
|
|
23
|
+
|
|
24
|
+
git clone https://github.com/AlexanderGrooff/mermaid-ascii.git "$workdir/src"
|
|
25
|
+
git -C "$workdir/src" checkout --quiet "$PIN"
|
|
26
|
+
|
|
27
|
+
os="$(go env GOOS)"
|
|
28
|
+
arch="$(go env GOARCH)"
|
|
29
|
+
out="$repo_root/src/termrender/_bin/mermaid-ascii-${os}-${arch}"
|
|
30
|
+
|
|
31
|
+
mkdir -p "$(dirname "$out")"
|
|
32
|
+
( cd "$workdir/src" && go build -trimpath -o "$out" . )
|
|
33
|
+
chmod 755 "$out"
|
|
34
|
+
|
|
35
|
+
echo "Built $out"
|
|
36
|
+
"$out" --help >/dev/null && echo "Smoke test OK (pin ${PIN:0:7})"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
- **QUOTE** height gets `+1` only when `author` or `by` attr is set. Using any other key (`attribution`, `source`) silently omits the extra line — the renderer's attribution line is clipped.
|