mirror of
https://github.com/blamouche/obsidian-any-ai-code.git
synced 2026-07-22 06:53:38 +00:00
Document and ship every runtime-required file in each GitHub release
The plugin's panel spawns a child process and needs more than the typical Obsidian main.js / manifest.json / styles.css triple — the Node proxy (pty-proxy.js) and the Python PTY fallback (pty-bridge.py) must also be present in the plugin folder, plus versions.json (for backwards-compatible install matching) and package.json / package-lock.json (for the optional native node-pty backend). The release workflow already bundled all of these inside the zip but only attached the standard triple as standalone files. Switch to uploading every runtime-required file at the release root so users who fix one corrupt file or pin a specific component (e.g. swapping in a custom pty-proxy.js for debugging) can grab it directly without re-downloading the whole zip. Reworked the release notes body template to spell out what each file is for and to flag that the three-file triple is NOT sufficient for this plugin (BRAT / Obsidian auto-update only fetches those three, which is why the bundled zip stays the recommended install path). Mirrored the same explanation in the README `Required files` section. Bumped manifest/version metadata to 0.1.43. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
67da139633
commit
7bc1ddac11
9 changed files with 44 additions and 15 deletions
21
.github/workflows/release.yml
vendored
21
.github/workflows/release.yml
vendored
|
|
@ -81,13 +81,32 @@ jobs:
|
|||
|
||||
Then reload the plugin.
|
||||
|
||||
### Files required at runtime
|
||||
|
||||
Unlike a typical single-bundle Obsidian plugin, this plugin spawns a child process that needs auxiliary files alongside `main.js`. **All of the files listed below must end up in the plugin folder** for the panel to work — that is why the recommended install path is the bundled zip rather than the three standalone files at the bottom of the release.
|
||||
|
||||
- `manifest.json` — Obsidian plugin metadata (id, version, minAppVersion).
|
||||
- `main.js` — bundled plugin code (TS compiled by `esbuild`).
|
||||
- `styles.css` — sidebar / toolbar / dropdown styling.
|
||||
- `versions.json` — maps each plugin version to its `minAppVersion` for backwards-compatible installs.
|
||||
- `pty-proxy.js` — Node child process that runs the user's CLI inside a PTY (or one of its fallbacks).
|
||||
- `pty-bridge.py` — Python PTY fallback used on macOS/Linux when `node-pty` is not installed.
|
||||
- `package.json` and `package-lock.json` — only required if you want to opt into the native `node-pty` backend via `npm install --omit=dev`.
|
||||
|
||||
Each file is also attached individually below so you can replace one without re-downloading the whole zip (useful for development / debugging).
|
||||
|
||||
### Manual install / Obsidian auto-update
|
||||
|
||||
`main.js`, `manifest.json`, and `styles.css` are also attached as standalone files for compatibility with Obsidian's plugin update protocol and tools like BRAT.
|
||||
`main.js`, `manifest.json`, and `styles.css` are attached as standalone files for compatibility with Obsidian's plugin update protocol and tools like BRAT — but as noted above, **those three are not sufficient on their own**. Use the zip for first install and update; the three standalone files only cover hot-patches of the bundled code, manifest, or stylesheet.
|
||||
files: |
|
||||
${{ env.PLUGIN_ID }}-${{ github.ref_name }}.zip
|
||||
main.js
|
||||
manifest.json
|
||||
styles.css
|
||||
versions.json
|
||||
pty-proxy.js
|
||||
pty-bridge.py
|
||||
package.json
|
||||
package-lock.json
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
|
|||
|
|
@ -60,3 +60,4 @@
|
|||
| 2026-04-26 22:25:00 CEST | agent | Bot still flagged 2 sentence-case violations after 0.1.39. Traced via AST walk: every direct-literal UI string is sentence-case OK; the only candidates are fallback labels inside LogicalExpression (`runtime.name || "(unnamed)"`, etc.) which the local `obsidianmd/ui/sentence-case` `getStringFromNode` skips but the bot apparently walks. Capitalized every fallback (`(unnamed)`/`(unnamed runtime)`/`(no runtime)` → `(Unnamed)`/`(Unnamed runtime)`/`(No runtime)`) and re-tagged 0.1.40. | `main.ts`, `manifest.json`, `versions.json`, `package.json`, `package-lock.json`, `npm run lint`, `npm run build`, `npm test`, `.prompt-hub/version.md`, `.prompt-hub/releases.md` | success | Commit, push, annotated tag 0.1.40, user re-publishes draft release. |
|
||||
| 2026-04-27 14:30:00 CEST | agent | Bot still flagged 2 sentence-case violations after 0.1.40. Traced root cause to `Codex` not being in `eslint-plugin-obsidianmd@0.2.4` DEFAULT_BRANDS (verified via Linter API on synthetic snippet — rule expected `codex` lowercase). Both `manifest.json` and `package.json` descriptions contained the word, hence 2 violations. Reworded both to drop `Codex` while preserving the multi-runtime value prop. Bumped to 0.1.41. | `manifest.json`, `package.json`, `package-lock.json`, `versions.json`, `.prompt-hub/version.md`, `.prompt-hub/releases.md` | success | Commit, push, annotated tag 0.1.41. User must publish the draft release for the bot to re-scan (bot only sees published releases). |
|
||||
| 2026-04-27 08:42:00 CEST | agent | After publishing 0.1.41 the bot flagged exactly 2 lines: `main.ts:187` and `main.ts:592`, both containing `"(No runtime configured)"` passed to `createEl({text})` and `dropdown.addOption(value,label)`. Local `obsidianmd/ui/sentence-case@0.2.4` accepts this string (`{ok: true}` in both loose and strict modes); the bot's scanner appears to treat parenthesized phrases as sentence continuations and rejects the leading capital. Removed the parens entirely → `"No runtime configured"`. Bumped to 0.1.42. | `main.ts`, `manifest.json`, `versions.json`, `package.json`, `package-lock.json`, `.prompt-hub/version.md`, `.prompt-hub/releases.md` | success | Commit, push, annotated tag 0.1.42. User must publish draft release. |
|
||||
| 2026-04-27 08:50:00 CEST | agent | Release workflow now uploads every runtime-required file (`pty-proxy.js`, `pty-bridge.py`, `versions.json`, `package.json`, `package-lock.json`) at the release root as standalone assets alongside the zip and the existing `main.js`/`manifest.json`/`styles.css` triple. Release notes body and README `Required files` section spell out what each file is for and warn that the standard three-file triple is not sufficient for this plugin. Bumped manifest to 0.1.43. | `.github/workflows/release.yml`, `README.md`, `manifest.json`, `versions.json`, `package.json`, `package-lock.json`, `.prompt-hub/version.md`, `.prompt-hub/releases.md` | success | Commit, push, annotated tag 0.1.43. |
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
# Releases
|
||||
|
||||
## 0.1.44 - 2026-04-27
|
||||
- Release workflow now uploads every runtime-required file at the root of each GitHub release as a standalone asset, not only inside the zip: `manifest.json`, `main.js`, `styles.css`, `versions.json`, `pty-proxy.js`, `pty-bridge.py`, `package.json`, `package-lock.json`.
|
||||
- Reworked the release notes body template to spell out what each file is for, and to make it explicit that the `main.js` / `manifest.json` / `styles.css` triple is **not sufficient on its own** for this plugin — the child-process proxy (`pty-proxy.js`) and Python fallback (`pty-bridge.py`) must also be present in the plugin folder for the panel to start.
|
||||
- Mirrored the same explanation in the README `Required files` section.
|
||||
- Plugin manifest bumped to 0.1.43.
|
||||
|
||||
## 0.1.43 - 2026-04-27
|
||||
- Removed parentheses around the multi-word fallback dropdown labels: `"(No runtime configured)"` → `"No runtime configured"` (sidebar runtime select placeholder + settings tab dropdown). The community bot flagged the parenthesized form even though `eslint-plugin-obsidianmd@0.2.4`'s rule accepts it locally — the bot's stricter scanner appears to treat parenthesized phrases as a sentence continuation, which makes the leading capital incorrect.
|
||||
- Plugin manifest bumped to 0.1.42.
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
0.1.43
|
||||
0.1.44
|
||||
|
|
|
|||
18
README.md
18
README.md
|
|
@ -58,15 +58,17 @@ Reload the plugin afterwards.
|
|||
|
||||
### Required files
|
||||
|
||||
If you assemble the plugin folder by hand, make sure these are present:
|
||||
Unlike a typical single-bundle Obsidian plugin, this one spawns a child process that needs auxiliary files alongside `main.js`. **All of the files below must be present in the plugin folder.** That's why the recommended install path is the bundled zip rather than the three standalone files Obsidian's auto-update protocol normally fetches.
|
||||
|
||||
- `manifest.json`
|
||||
- `main.js`
|
||||
- `styles.css`
|
||||
- `versions.json`
|
||||
- `pty-proxy.js`
|
||||
- `pty-bridge.py`
|
||||
- `package.json` and `package-lock.json` (only needed if you plan to install `node-pty`)
|
||||
- `manifest.json` — Obsidian plugin metadata (id, version, minAppVersion).
|
||||
- `main.js` — bundled plugin code.
|
||||
- `styles.css` — sidebar / toolbar / dropdown styling.
|
||||
- `versions.json` — maps each plugin version to its `minAppVersion`.
|
||||
- `pty-proxy.js` — Node child process that runs your CLI inside a PTY (or one of its fallbacks).
|
||||
- `pty-bridge.py` — Python PTY fallback used on macOS/Linux when `node-pty` is not installed.
|
||||
- `package.json` and `package-lock.json` — only required if you opt into the native `node-pty` backend via `npm install --omit=dev`.
|
||||
|
||||
Every file is also attached individually to each GitHub release (next to the zip) so you can replace one without re-downloading the whole bundle.
|
||||
|
||||
## Usage
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "any-ai-cli",
|
||||
"name": "Any AI CLI",
|
||||
"version": "0.1.42",
|
||||
"version": "0.1.43",
|
||||
"minAppVersion": "1.7.2",
|
||||
"description": "Run AI coding tools like Claude in a right sidebar terminal panel, with a customizable runtime list.",
|
||||
"author": "Benoit Lamouche",
|
||||
|
|
|
|||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "any-ai-cli",
|
||||
"version": "0.1.42",
|
||||
"version": "0.1.43",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "any-ai-cli",
|
||||
"version": "0.1.42",
|
||||
"version": "0.1.43",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@xterm/addon-fit": "^0.11.0",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "any-ai-cli",
|
||||
"version": "0.1.42",
|
||||
"version": "0.1.43",
|
||||
"description": "Run AI coding tools like Claude in a right sidebar terminal panel, with a customizable runtime list.",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -12,5 +12,6 @@
|
|||
"0.1.39": "1.7.2",
|
||||
"0.1.40": "1.7.2",
|
||||
"0.1.41": "1.7.2",
|
||||
"0.1.42": "1.7.2"
|
||||
"0.1.42": "1.7.2",
|
||||
"0.1.43": "1.7.2"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue