| # tool-neuron-plugins | |
| Public catalog of plugin bundles consumed by the ToolNeuron Android app. | |
| The app reads `plugins.json` from this repo on every refresh and lists the | |
| plugins it advertises. When the user installs a plugin, the app downloads the | |
| zip at `download`, verifies `sha256`, extracts it into the plugin store, and | |
| deletes the zip. | |
| ## Layout | |
| ``` | |
| plugins.json | |
| plugins/<id>/<version>/<name>.zip | |
| ``` | |
| Each zip contains: | |
| - `manifest.json` — id, version, apiVersion, entryClass, capabilities, hasNativeCode | |
| - `classes*.dex` — plugin code (multidex supported) | |
| - `lib/<abi>/*.so` — optional native libraries (only when `hasNativeCode: true`) | |
| ## Adding a plugin | |
| 1. Build the plugin module (`./gradlew :plugins:<name>:packagePlugin`) | |
| 2. Drop the zip under `plugins/<id>/<version>/` | |
| 3. Add an entry to `plugins.json` with `size` and `sha256` | |
| 4. `hf upload Void2377/tool-neuron-plugins . .` | |
| The schema versions itself via `schemaVersion`; the app refuses to parse | |
| catalogs whose `schemaVersion` is newer than it understands. | |