From e55896ce41d6165105671da5b6f33813106ef1b8 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 30 Sep 2026 19:56:47 +0200 Subject: feat: add an updates card showing nvtable's package table Moves the nvchecker/nvtable table the login shell printed onto the dashboard, as a wide card at the bottom centre. bin/updates-sample.sh caches `nvtable -C -E` every ten minutes and starts nvchecker, fully detached, at most every 30 minutes. The widget parses the cache and colours it in the board's language: installed behind upstream is critical, a shipped .info behind is a warning, with nvtable's status dots per row and a legend on the bottom line. The mouse wheel scrolls rows that do not fit. Co-Authored-By: Claude Opus 5.5 --- test/fixtures/updates_cache | 8 ++++++++ test/test_data.lua | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 test/fixtures/updates_cache (limited to 'test') diff --git a/test/fixtures/updates_cache b/test/fixtures/updates_cache new file mode 100644 index 0000000..130dda0 --- /dev/null +++ b/test/fixtures/updates_cache @@ -0,0 +1,8 @@ + [personal] foo-bin 1.14.9 -> 1.14.9 !! ~ 1.14.10 + [SBo] bar 2.1.278 -> 2.1.201 !! 2.1.284 + [personal] baz 3.16.30 -> 3.16.31 !! + [--] qux 0.12.1 -> -- !! 0.12.1_beta.2 + [my-sbo] quux -- -> 0.28 - + [my-sbo] corge 2.3.0 -> 2.3.0 ok + + 3 to upgrade · 1 repo to bump · 46 current · 18 not installed diff --git a/test/test_data.lua b/test/test_data.lua index 4ed58f8..ec95fae 100644 --- a/test/test_data.lua +++ b/test/test_data.lua @@ -461,3 +461,20 @@ assert(not im.week, 'no scope line: today') assert(data.immich_parse('generated 1\nscope week\n').week, 'scope week parses') print('test_data: all assertions passed') + +-- nvtable_parse: nvtable -C -E rows. The marker column is positional, so an +-- empty installed or repo column ('--') must not shift it. +local up = data.nvtable_parse(read('test/fixtures/updates_cache')) +assert(up and #up == 6, 'updates rows, got ' .. tostring(up and #up)) +local r = up[1] +assert(r.repo == 'personal' and r.name == 'foo-bin' and r.installed == '1.14.9' + and r.shipped == '1.14.9' and r.behind and r.bump and r.upstream == '1.14.10', + 'updates row 1') +assert(up[2].behind and not up[2].bump and up[2].upstream == '2.1.284', 'updates row 2') +assert(up[3].upstream == nil and up[3].shipped == '3.16.31', 'updates row 3') +assert(up[4].shipped == nil and up[4].repo == nil, 'updates row 4: -- is nil') +assert(up[5].installed == nil and not up[5].behind, 'updates row 5: not installed') +assert(not up[6].behind and not up[6].bump, 'updates row 6: current') +assert(up.upgrade == 3 and up.bump == 1 and up.current == 46 and up.missing == 18, + 'updates summary') +assert(data.nvtable_parse('') == nil, 'updates: empty cache is nil') -- cgit v1.2.3