nodeengine 0.1.0__tar.gz → 0.1.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.
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "node-engine",
12
12
  "description": "Make staleness fail a check instead of relying on someone remembering. Sets up hash-and-compare guards for summaries, translations, generated files and any fact restated in prose. Carries the discipline too: fix the class not the instance, and a new check is guilty until it has failed on demand.",
13
- "version": "0.1.0",
13
+ "version": "0.1.1",
14
14
  "author": {
15
15
  "name": "Alexyodude",
16
16
  "email": "jihoonhotmail.com@gmail.com"
@@ -27,5 +27,5 @@
27
27
  ]
28
28
  }
29
29
  ],
30
- "version": "0.1.0"
30
+ "version": "0.1.1"
31
31
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-engine",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Make staleness fail a check instead of relying on someone remembering. Hash-and-compare guards for derived facts, generated artefacts and translations.",
5
5
  "author": {
6
6
  "name": "Alexyodude",
@@ -4,3 +4,4 @@ __pycache__/
4
4
  .build/
5
5
  dist/
6
6
  .playwright-mcp/
7
+ .env
@@ -99,8 +99,11 @@ guard was built to catch. That is institutional knowledge, not slop.
99
99
 
100
100
  ## Publishing
101
101
 
102
+ Three distribution channels, each needing its own push:
103
+
102
104
  ```
103
- git push -u origin main
105
+ git push -u origin main # the curl one-liner reads main directly
106
+ rm -rf dist && uv build && uv publish # PyPI: uvx nodeengine
104
107
  /plugin marketplace add Alexyodude/NodeEngine
105
108
  /plugin install node-engine@node-engine
106
109
  ```
@@ -109,6 +112,15 @@ Bump the version in **all four places** together — `plugin.json`, twice in
109
112
  `marketplace.json`, `pyproject.toml` — or the install will resolve to something
110
113
  that does not exist. `check_claude_md.py` catches a missed one.
111
114
 
115
+ **`rm -rf dist` is not tidiness.** `uv build` adds to that directory rather than
116
+ replacing it, so a stale wheel from an earlier version gets uploaded alongside
117
+ the new one. Publishing is also one-way: PyPI refuses a re-upload of any version
118
+ number it has ever seen, deleted or not.
119
+
120
+ `uv publish` needs a PyPI token — account-scoped for a first upload of a new
121
+ name, project-scoped after that. Keep it in `.env` (gitignored) and pass it as
122
+ `--token`, never as a committed file.
123
+
112
124
  ## Known gaps
113
125
 
114
126
  - ~~The one-line installer 404s until the repo is public.~~ **Closed 2026-08-31**
@@ -124,11 +136,13 @@ Stated plainly because this plugin is about not letting claims drift:
124
136
  - ~~The version is restated in three places and nothing checks it.~~ **Closed**
125
137
  — `tools/check_claude_md.py` fails if the manifests disagree. Proven by
126
138
  setting `plugin.json` to `0.2.0` and watching it fire.
127
- - **`nodeengine` is not on PyPI**, so the bare `uvx nodeengine` / `pipx run
128
- nodeengine` does not resolve. What works without a publish is
129
- `uvx --from git+https://github.com/Alexyodude/NodeEngine nodeengine`. The
130
- name was free on PyPI as of 2026-08-31 publishing would claim it and make
131
- the two-word form real.
139
+ - ~~`nodeengine` is not on PyPI.~~ **Closed 2026-08-31** published 0.1.0
140
+ (`uv publish`); `uvx --refresh nodeengine` in a fresh repo wrote all three
141
+ scaffold files. **A publish is irreversible**: PyPI never allows re-uploading
142
+ a version number, even after a delete, so the next release must bump the
143
+ version in all four places first. Rebuild `dist/` before every publish —
144
+ the first build here predated `viewer.html` and would have shipped a
145
+ two-file installer described by a three-file README.
132
146
  - **The scaffold has no tests.** Its correctness is asserted by the reference
133
147
  docs, not demonstrated. `checkall.py --prove` prints how to break the checks
134
148
  it describes, but nothing runs them here.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: nodeengine
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Install the NodeEngine staleness-guard scaffold into the current repo
5
5
  Project-URL: Homepage, https://github.com/Alexyodude/NodeEngine
6
6
  License: MIT
@@ -44,28 +44,34 @@ staleness is not caught by cleverness — it is **structurally unable to hide**.
44
44
  One line, in any repo:
45
45
 
46
46
  ```
47
- curl -sL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py | python -
47
+ uvx nodeengine
48
48
  ```
49
49
 
50
50
  That copies `stale.py`, `checkall.py` and `viewer.html` into `./tools/` and
51
- prints what to do next. No clone, no plugin, no dependencies. Add
52
- `--into scripts` or `--dry-run` after `python -` if you want them.
51
+ prints what to do next. Add `--into scripts` or `--dry-run` if you want them.
52
+ `pipx run nodeengine` is the same thing. Nothing is installed into your
53
+ project: the installer runs in a throwaway environment, and what lands in
54
+ `tools/` is three readable files you are meant to edit.
53
55
 
54
- If you have [uv](https://docs.astral.sh/uv/), the same installer runs as a
55
- packaged tool — same files land, same refusal to overwrite:
56
+ Without [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/), any
57
+ Python will do:
56
58
 
57
59
  ```
58
- uvx --from git+https://github.com/Alexyodude/NodeEngine nodeengine
60
+ curl -fsSL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py | python
59
61
  ```
60
62
 
61
- *It runs code fetched over the network, which is worth being deliberate about.
63
+ *Both run code fetched over the network, which is worth being deliberate about.
62
64
  To read it first:*
63
65
 
64
66
  ```
65
- curl -sL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py -o install.py
67
+ curl -fsSL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py -o install.py
66
68
  less install.py && python install.py
67
69
  ```
68
70
 
71
+ *(`-f` is not decoration: without it, curl pipes an HTTP error page into your
72
+ interpreter and you get a syntax error pointing at `<!DOCTYPE html>` instead of
73
+ a readable failure.)*
74
+
69
75
  **As a Claude Code plugin**, if you also want the skill and the guided setup:
70
76
 
71
77
  ```
@@ -34,28 +34,34 @@ staleness is not caught by cleverness — it is **structurally unable to hide**.
34
34
  One line, in any repo:
35
35
 
36
36
  ```
37
- curl -sL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py | python -
37
+ uvx nodeengine
38
38
  ```
39
39
 
40
40
  That copies `stale.py`, `checkall.py` and `viewer.html` into `./tools/` and
41
- prints what to do next. No clone, no plugin, no dependencies. Add
42
- `--into scripts` or `--dry-run` after `python -` if you want them.
41
+ prints what to do next. Add `--into scripts` or `--dry-run` if you want them.
42
+ `pipx run nodeengine` is the same thing. Nothing is installed into your
43
+ project: the installer runs in a throwaway environment, and what lands in
44
+ `tools/` is three readable files you are meant to edit.
43
45
 
44
- If you have [uv](https://docs.astral.sh/uv/), the same installer runs as a
45
- packaged tool — same files land, same refusal to overwrite:
46
+ Without [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/), any
47
+ Python will do:
46
48
 
47
49
  ```
48
- uvx --from git+https://github.com/Alexyodude/NodeEngine nodeengine
50
+ curl -fsSL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py | python
49
51
  ```
50
52
 
51
- *It runs code fetched over the network, which is worth being deliberate about.
53
+ *Both run code fetched over the network, which is worth being deliberate about.
52
54
  To read it first:*
53
55
 
54
56
  ```
55
- curl -sL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py -o install.py
57
+ curl -fsSL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py -o install.py
56
58
  less install.py && python install.py
57
59
  ```
58
60
 
61
+ *(`-f` is not decoration: without it, curl pipes an HTTP error page into your
62
+ interpreter and you get a syntax error pointing at `<!DOCTYPE html>` instead of
63
+ a readable failure.)*
64
+
59
65
  **As a Claude Code plugin**, if you also want the skill and the guided setup:
60
66
 
61
67
  ```
@@ -2,7 +2,13 @@
2
2
 
3
3
  One line, from anywhere:
4
4
 
5
- curl -sL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py | python -
5
+ uvx nodeengine # or: pipx run nodeengine
6
+
7
+ Without uv or pipx, any Python will do. `-f` matters: without it curl pipes an
8
+ HTTP error page into the interpreter, and a 404 surfaces as a syntax error
9
+ pointing at `<!DOCTYPE html>`:
10
+
11
+ curl -fsSL https://raw.githubusercontent.com/Alexyodude/NodeEngine/main/install.py | python
6
12
 
7
13
  Or, if you have the repo or the plugin:
8
14
 
@@ -15,7 +15,7 @@ build-backend = "hatchling.build"
15
15
 
16
16
  [project]
17
17
  name = "nodeengine"
18
- version = "0.1.0"
18
+ version = "0.1.1"
19
19
  description = "Install the NodeEngine staleness-guard scaffold into the current repo"
20
20
  readme = "README.md"
21
21
  requires-python = ">=3.9"
File without changes
File without changes