Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions libraries/boards/psi-pro.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@
"supportsDuration": true,
"examples": [
"4T92",
"5T03",
"0T6"
"5T3",
"0T1"
],
"commentLabel": "PSI effect"
}
Expand Down
2 changes: 1 addition & 1 deletion libraries/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "droidnet-command-library/catalog/v1",
"libraryVersion": "2.2.0",
"libraryVersion": "2.2.1",
"schemaVersion": "v1",
"generatedFrom": "C2B5 firmware + WIPDocs (2026-06); R2UppitySpinnerV3 ALT fw 3.5.3 (2026-07)",
"boards": [
Expand Down
6 changes: 3 additions & 3 deletions releases.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
"$schema": "droidnet-command-library/releases/v1",
"_comment": "Update pointer for the 'Update Library' flow. A device fetches this file, compares latest.libraryVersion to its installed catalog, and (if newer) downloads latest.url (the catalog manifest), then fetches each board listed in manifest.boards in order, validates them, and loads them via loadLibrary(boards, { libraryVersion }).",
"latest": {
"libraryVersion": "2.2.0",
"libraryVersion": "2.2.1",
"schemaVersion": "v1",
"releasedAt": "2026-07-06",
"url": "https://raw.githubusercontent.com/travisccook/droidnet-command-library/main/libraries/manifest.json",
"notes": "Adds the R2 Uppity Spinner ALT (highfalutintodd fork) board: 41 commands covering lifter seek/home, rotary absolute/relative/spin, random move mode, light kit, timing, ESTOP, and full #P configuration. Community confidence; :PD range constrained to ±180° per firmware 3.5.3 clamp."
"notes": "Patch: corrects two invalid psi.mode examples in the PSIPro board (5T03 -> 5T3, 0T6 -> 0T1) that referenced enum codes not present in psi.mode, so they now round-trip in the composer."
},
"libraries": [
{
"id": "droidnet-astromech",
"name": "DroidNet Astromech Boards",
"libraryVersion": "2.2.0",
"libraryVersion": "2.2.1",
"schemaVersion": "v1",
"url": "https://raw.githubusercontent.com/travisccook/droidnet-command-library/main/libraries/manifest.json"
}
Expand Down
2 changes: 1 addition & 1 deletion test/engine.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ describe('engine lookups', () => {
expect(cb.getComponents().map(c => c.id)).toEqual(expect.arrayContaining(['flthy-hps', 'magic-panel']));
});
test('getLibraryVersion reports the loaded version', () => {
expect(cb.getLibraryVersion()).toBe('2.2.0');
expect(cb.getLibraryVersion()).toBe('2.2.1');
});
test('getCommand resolves and back-links its component', () => {
const cmd = cb.getCommand('flthy.led.solid');
Expand Down
6 changes: 3 additions & 3 deletions test/load-node.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@ const { readCatalog, loadCatalog } = require('../src/load-node.js');

test('readCatalog returns the manifest and every board, in order', () => {
const { manifest, boards } = readCatalog();
expect(manifest.libraryVersion).toBe('2.2.0');
expect(manifest.libraryVersion).toBe('2.2.1');
expect(boards).toHaveLength(manifest.boards.length);
expect(boards.map(b => b.components[0].id)).toEqual(manifest.boards.map(b => b.id));
});

test('loadCatalog({ load: false }) returns the merged catalog object', () => {
const lib = loadCatalog({ load: false });
expect(lib.libraryVersion).toBe('2.2.0');
expect(lib.libraryVersion).toBe('2.2.1');
expect(lib.components.length).toBe(9);
});

test('loadCatalog() loads the engine and resolves commands', () => {
const engine = loadCatalog();
expect(engine.getLibraryVersion()).toBe('2.2.0');
expect(engine.getLibraryVersion()).toBe('2.2.1');
expect(engine.getCommand('flthy.led.solid')).not.toBeNull();
expect(engine.encode(engine.getCommand('flthy.led.solid'), { designator: 'A', color: '5' }, {})).toBe('A0055');
});
8 changes: 4 additions & 4 deletions test/web.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ describe('hosted site — reference data contract', () => {
for (const comp of cb.getComponents())
for (const cmd of cb.getCommands(comp.id)) {
if (!isBounded(cmd)) continue; // free-text arg (e.g. chirp.pvoice) → editable raw step, skip
const ex = cmd.examples && cmd.examples[0];
if (!ex) continue; // presence covered above
const steps = cb.parseWCBValue(ex);
if (!steps.some(s => s.commandId && cb.getCommand(s.commandId))) bad.push(cmd.id + ' -> ' + ex);
for (const ex of (cmd.examples || [])) { // EVERY example — a bad non-first example (e.g. an invalid enum code) hid here before
const steps = cb.parseWCBValue(ex);
if (!steps.some(s => s.commandId && cb.getCommand(s.commandId))) bad.push(cmd.id + ' -> ' + ex);
}
}
expect(bad).toEqual([]);
});
Expand Down
Loading