Update nightwatch75/topgrade-wrapper to 0.0.6 (#215)

Co-authored-by: nightwatch75 <nightwatch75@users.noreply.github.com>
This commit is contained in:
nightwatch75
2026-08-02 11:34:47 -04:00
committed by GitHub
co-authored by nightwatch75
parent 676b9f9528
commit 7a9c1c017a
3 changed files with 30 additions and 3 deletions
+23 -2
View File
@@ -12,6 +12,18 @@
local STATE_KEY = "topgrade_state"
local REQUEST_KEY = "topgrade_request"
-- Read out of the plugin's own manifest (readFile resolves a relative path
-- against the plugin directory), so the header cannot drift from the version
-- the store shows. Empty when unreadable — a missing version is not worth an
-- error line in the panel.
local pluginVersion = (function()
local text = noctalia.readFile("plugin.toml")
if type(text) ~= "string" then
return ""
end
return ("\n" .. text):match('\nversion%s*=%s*"([^"]+)"') or ""
end)()
local snapshot = nil
local expanded = {} -- manager key -> the package list is open
local hoverKey = nil -- package row currently under the pointer
@@ -331,14 +343,21 @@ render = function()
local hasUpdates = totalOf() > 0 and (phase == "ready" or phase == "running")
local children = {
ui.row({ gap = 8, align = "center" }, {
-- Every child of the header carries a stable key, so the reconciler
-- matches roles instead of guessing by position and type.
ui.row({ key = "header", gap = 8, align = "center" }, {
ui.label({
key = "title",
text = tr("title"),
fontSize = 16,
fontWeight = "bold",
color = "on_surface",
flexGrow = 1,
}),
-- Version off the manifest, small and dimmed: it answers "which
-- build am I running" without competing with the title. The spacer
-- rather than a flexGrow title keeps the two together on the left.
ui.label({ key = "version", text = pluginVersion, fontSize = 10, color = "on_surface_variant" }),
ui.spacer({ key = "gap", flexGrow = 1 }),
ui.button({
key = "header-check" .. (busy() and "-off" or ""),
glyph = "refresh",
@@ -353,6 +372,7 @@ render = function()
-- supplies the plugin id, so a plugin can only ever open its own).
-- The panel closes on the way; the engine keeps running.
ui.button({
key = "settings",
glyph = "settings",
variant = "ghost",
tooltip = tr("tip_settings"),
@@ -361,6 +381,7 @@ render = function()
end,
}),
ui.button({
key = "close",
glyph = "close",
variant = "ghost",
tooltip = tr("tip_close"),
+1 -1
View File
@@ -11,7 +11,7 @@
id = "nightwatch75/topgrade-wrapper"
name = "Topgrade Wrapper"
version = "0.0.4"
version = "0.0.6"
plugin_api = 15
author = "nightwatch75"
license = "MIT"
+6
View File
@@ -48,6 +48,12 @@ local MAX_LISTED = 200
-- `name<TAB>installed<TAB>available`. Either version may be empty
-- when the tool does not report it.
--
-- Every query — and the dry run itself — is spawned with `export LC_ALL=C;` in
-- front of it: these parsers key off English words and fixed column layouts
-- (`^Inst `, the zypper table, the pip header), which a translated system turns
-- into gibberish. Reported upstream from a French desktop (community-plugins
-- #204). The interactive run is deliberately left in the user's own locale.
--
-- The count is simply how many lines came back, so the number on the bar and the
-- list the panel expands are the same answer to the same question, asked once:
-- no second round trip to a mirror, and no way for the two to disagree.