initial plugin catalog: notes / counter / expense
Browse files
README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# tool-neuron-plugins
|
| 2 |
+
|
| 3 |
+
Public catalog of plugin bundles consumed by the ToolNeuron Android app.
|
| 4 |
+
|
| 5 |
+
The app reads `plugins.json` from this repo on every refresh and lists the
|
| 6 |
+
plugins it advertises. When the user installs a plugin, the app downloads the
|
| 7 |
+
zip at `download`, verifies `sha256`, extracts it into the plugin store, and
|
| 8 |
+
deletes the zip.
|
| 9 |
+
|
| 10 |
+
## Layout
|
| 11 |
+
|
| 12 |
+
```
|
| 13 |
+
plugins.json
|
| 14 |
+
plugins/<id>/<version>/<name>.zip
|
| 15 |
+
```
|
| 16 |
+
|
| 17 |
+
Each zip contains:
|
| 18 |
+
|
| 19 |
+
- `manifest.json` — id, version, apiVersion, entryClass, capabilities, hasNativeCode
|
| 20 |
+
- `classes*.dex` — plugin code (multidex supported)
|
| 21 |
+
- `lib/<abi>/*.so` — optional native libraries (only when `hasNativeCode: true`)
|
| 22 |
+
|
| 23 |
+
## Adding a plugin
|
| 24 |
+
|
| 25 |
+
1. Build the plugin module (`./gradlew :plugins:<name>:packagePlugin`)
|
| 26 |
+
2. Drop the zip under `plugins/<id>/<version>/`
|
| 27 |
+
3. Add an entry to `plugins.json` with `size` and `sha256`
|
| 28 |
+
4. `hf upload Void2377/tool-neuron-plugins . .`
|
| 29 |
+
|
| 30 |
+
The schema versions itself via `schemaVersion`; the app refuses to parse
|
| 31 |
+
catalogs whose `schemaVersion` is newer than it understands.
|
plugins.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schemaVersion": 1,
|
| 3 |
+
"updatedAt": "2026-05-11T00:00:00Z",
|
| 4 |
+
"plugins": [
|
| 5 |
+
{
|
| 6 |
+
"id": "com.dark.plugins.notes",
|
| 7 |
+
"version": "1.0.0",
|
| 8 |
+
"apiVersion": 1,
|
| 9 |
+
"name": "Notes",
|
| 10 |
+
"description": "Quick sticky notes saved to encrypted storage.",
|
| 11 |
+
"author": "darkbyte",
|
| 12 |
+
"initial": "N",
|
| 13 |
+
"capabilities": ["hxs.read", "hxs.write"],
|
| 14 |
+
"hasNativeCode": false,
|
| 15 |
+
"download": "plugins/com.dark.plugins.notes/1.0.0/notes.zip",
|
| 16 |
+
"size": 811606,
|
| 17 |
+
"sha256": "993c00a3a42935f8c1df7319456e49ae4a6ac23b5bf8cca0edb42a1dd8b09402"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"id": "com.dark.plugins.counter",
|
| 21 |
+
"version": "1.0.0",
|
| 22 |
+
"apiVersion": 1,
|
| 23 |
+
"name": "Counter",
|
| 24 |
+
"description": "A simple counter with smooth number transitions. Demonstrates plugin state persistence.",
|
| 25 |
+
"author": "darkbyte",
|
| 26 |
+
"initial": "C",
|
| 27 |
+
"capabilities": ["hxs.read", "hxs.write"],
|
| 28 |
+
"hasNativeCode": false,
|
| 29 |
+
"download": "plugins/com.dark.plugins.counter/1.0.0/counter.zip",
|
| 30 |
+
"size": 792190,
|
| 31 |
+
"sha256": "5ea9f34c91ffab74c4586775c22a8be985ebad9d281506efde8deac8401ba1f6"
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"id": "com.dark.plugins.expense",
|
| 35 |
+
"version": "1.0.0",
|
| 36 |
+
"apiVersion": 1,
|
| 37 |
+
"name": "Expense Tracker",
|
| 38 |
+
"description": "Privacy-first expense tracking with AI auto-categorization. All data encrypted locally.",
|
| 39 |
+
"author": "darkbyte",
|
| 40 |
+
"initial": "$",
|
| 41 |
+
"capabilities": ["hxs.read", "hxs.write", "ai.onnx"],
|
| 42 |
+
"hasNativeCode": false,
|
| 43 |
+
"download": "plugins/com.dark.plugins.expense/1.0.0/expense.zip",
|
| 44 |
+
"size": 17187181,
|
| 45 |
+
"sha256": "b49f5b7f06a38be09ccb964dce160d31535e54c93f04c5e150a6072a49fb1bd0"
|
| 46 |
+
}
|
| 47 |
+
]
|
| 48 |
+
}
|
plugins/com.dark.plugins.counter/1.0.0/counter.zip
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5ea9f34c91ffab74c4586775c22a8be985ebad9d281506efde8deac8401ba1f6
|
| 3 |
+
size 792190
|
plugins/com.dark.plugins.expense/1.0.0/expense.zip
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b49f5b7f06a38be09ccb964dce160d31535e54c93f04c5e150a6072a49fb1bd0
|
| 3 |
+
size 17187181
|
plugins/com.dark.plugins.notes/1.0.0/notes.zip
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:993c00a3a42935f8c1df7319456e49ae4a6ac23b5bf8cca0edb42a1dd8b09402
|
| 3 |
+
size 811606
|