szpont 0.96.0 → 0.98.0

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.
package/README.md CHANGED
@@ -1,25 +1,23 @@
1
1
  # szpont
2
2
 
3
- Install-and-run for **[Diplomat](https://github.com/latekvo/Diplomat)** (Szpont
4
- Yon) - the menu-bar / system-tray applet that reviews your pull requests, fixes
5
- your own, resolves conflicts, and keeps one device per agent.
3
+ ![The Diplomat panel](https://github.com/user-attachments/assets/bffd7a4b-2859-48ee-bffb-9da8221a4b02)
4
+
5
+ Installs and starts **[Diplomat](https://github.com/latekvo/Diplomat)** (Szpont Yon),
6
+ a menu-bar / system-tray app that runs coding agents against a GitHub repo: it
7
+ reviews PRs, fixes your own, resolves conflicts, and gives each agent its own
8
+ device.
6
9
 
7
10
  ```bash
8
11
  npx szpont # or: npm i -g szpont && szpont
9
12
  ```
10
13
 
11
- That is the whole install. macOS and Linux.
12
-
13
- ## What it actually does
14
+ macOS and Linux.
14
15
 
15
- Diplomat is built out of the checkout it runs from - a SwiftUI bundle on macOS, a
16
- PySide6 package plus the `diplomat-core` Swift binary on Linux - and it keeps
17
- *being* that checkout: the Update button, the daily 06:00 timer and the commit the
18
- panel reports are all git operations on it. A package holding a copy would be a
19
- second Diplomat that no update could reach.
16
+ ## How it works
20
17
 
21
- So this package is the steps in between, and every one of them runs a script that
22
- is already in the repository:
18
+ Diplomat runs from a git checkout, and its Update button and daily 06:00 update are
19
+ git operations on that checkout. So this package doesn't ship a copy of Diplomat; it
20
+ fetches the checkout and runs the scripts already in the repository:
23
21
 
24
22
  | | macOS | Linux |
25
23
  |---|---|---|
@@ -28,11 +26,9 @@ is already in the repository:
28
26
  | set it up | - | a venv at `~/.diplomat/venv` with `requirements.txt` in it |
29
27
  | start it | `open -n Diplomat.app` | the package's own `./diplomat`, on the venv's interpreter |
30
28
 
31
- Nothing is rebuilt that does not need to be: a venv is left alone until
32
- `requirements.txt` changes, and the Swift prompt binary is only built when the
33
- applet would not find one. `git` is needed to fetch Diplomat, and a Swift
34
- toolchain to build it - if one is missing you are told which and where to get it,
35
- before anything is downloaded.
29
+ The venv is only rebuilt when `requirements.txt` changes, and the Swift prompt
30
+ binary only when the applet can't find one. You need `git` and a Swift toolchain; if
31
+ either is missing, `szpont` says which before downloading anything.
36
32
 
37
33
  ```
38
34
  szpont --plan # print what would be run, as JSON, and do none of it
@@ -40,24 +36,22 @@ szpont --no-update # launch the checkout as it stands
40
36
  szpont -- --dump # everything after -- goes to the applet
41
37
  ```
42
38
 
43
- `DIPLOMAT_SELF_REPO` points at a checkout of your own - the same variable the
44
- running applet reads, and one this launcher never updates, because a working copy
39
+ `DIPLOMAT_SELF_REPO` points at your own checkout, which is never updated since it
45
40
  may have work in it. `DIPLOMAT_REPO_URL` clones from a fork.
46
41
 
47
- ## The same name on both indexes
42
+ ## PyPI
48
43
 
49
44
  [`pip install szpont`](https://github.com/latekvo/Diplomat/tree/main/packages/szpont)
50
- installs the same launcher and nothing else. The two implementations are separate
51
- files in separate languages, so what keeps them one command is
52
- `test/parity-with-python.mjs`: every machine in `test/scenarios.mjs` is probed by
53
- both and every fact set planned by both, and the two answers have to be identical.
45
+ installs the same launcher, written separately in Python.
46
+ `test/parity-with-python.mjs` runs both against every machine in
47
+ `test/scenarios.mjs` and fails if their plans differ.
54
48
 
55
- ## Its own tests
49
+ ## Tests
56
50
 
57
51
  ```bash
58
52
  npm test # plan, cli, a real clone-build-launch, and the parity check
59
53
  ```
60
54
 
61
- The end-to-end test clones from a git repository it makes on disk and runs the
62
- whole sequence into stub build and launch scripts, so it needs neither the network
63
- nor a Swift toolchain.
55
+ The end-to-end test clones a git repository it creates on disk and runs the whole
56
+ sequence into stub build and launch scripts, so it needs neither the network nor a
57
+ Swift toolchain.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "szpont",
3
- "version": "0.96.0",
3
+ "version": "0.98.0",
4
4
  "type": "module",
5
5
  "description": "Install-and-run for Diplomat (Szpont Yon): fetches the checkout, builds it, and starts the applet.",
6
6
  "keywords": ["diplomat", "szpont", "szpontnet", "launcher", "menu-bar", "tray"],
package/src/launcher.js CHANGED
@@ -17,7 +17,7 @@ import path from 'node:path';
17
17
  import { createHash } from 'node:crypto';
18
18
  import { spawnSync } from 'node:child_process';
19
19
 
20
- export const VERSION = '0.96.0';
20
+ export const VERSION = '0.98.0';
21
21
  export const DEFAULT_REPO_URL = 'https://github.com/latekvo/Diplomat.git';
22
22
  export const SUPPORTED = ['darwin', 'linux'];
23
23
  export const MIN_PYTHON = [3, 10];