From 8aa75342f304aac8b3b4fd43a71c029354a450c6 Mon Sep 17 00:00:00 2001 From: Priyanshu Gupta <118932398+PriyanshusSGupta@users.noreply.github.com> Date: Tue, 4 Aug 2026 02:03:41 +0530 Subject: [PATCH] add(deepseek_usage): DeepSeek API credit & balance monitor (#220) * add(deepseek_usage): add DeepSeek usage balance monitor plugin * add(deepseek_usage): add thumbnail.webp * chore(deepseek_usage): update plugin id to coder/deepseek_usage * fix(deepseek_usage): update 960x540 thumbnail, README IPC docs, and plugin.toml schema * fix(deepseek_usage): fix panel ID, normalize ui.graph values 0-1, declare xdg-open dependency * fix(deepseek_usage): replace thumbnail with official Noctalia generator asset --- deepseek_usage/README.md | 43 +++++ deepseek_usage/deepseek_usage.luau | 213 +++++++++++++++++++++++++ deepseek_usage/panel.luau | 235 ++++++++++++++++++++++++++++ deepseek_usage/plugin.toml | 47 ++++++ deepseek_usage/thumbnail.webp | Bin 0 -> 56056 bytes deepseek_usage/translations/en.json | 53 +++++++ 6 files changed, 591 insertions(+) create mode 100644 deepseek_usage/README.md create mode 100644 deepseek_usage/deepseek_usage.luau create mode 100644 deepseek_usage/panel.luau create mode 100644 deepseek_usage/plugin.toml create mode 100644 deepseek_usage/thumbnail.webp create mode 100644 deepseek_usage/translations/en.json diff --git a/deepseek_usage/README.md b/deepseek_usage/README.md new file mode 100644 index 0000000..6e2541f --- /dev/null +++ b/deepseek_usage/README.md @@ -0,0 +1,43 @@ +# DeepSeek Usage Plugin for Noctalia + +A balance and API credit monitor for [Noctalia shell](https://noctalia.dev). + +## Plugin + +Plugin ID: `coder/deepseek_usage` + +Widget(s): +- `bar` — bar widget entry. + +Panel(s): +- `panel` — panel entry. + +## Requirements + +- `xdg-open` — used by the top-up button to open platform.deepseek.com/top_up in the default browser. + +## External dependencies + +- `xdg-open` + +## Usage + +Widget +- Add the `bar` widget to your bar to display usage. + +Panel +- Toggle the plugin panel with the following IPC command: + `noctalia msg panel-toggle coder/deepseek_usage:panel` + +## Features +- **Bar Widget**: Shows live balance directly on your Noctalia bar. +- **Low Balance Warning**: Visual indicator and desktop notifications when credits drop below your set threshold. +- **Interactive Panel**: Displays account wallet summary, local trend graph, and quick top-up action. +- **One-Click Top-Up**: "Add Credits" button opens `platform.deepseek.com/top_up` directly in your browser. + +## Settings +Configure the update interval and API key in Noctalia plugin settings. + +- **DeepSeek API Key**: Create an API key at [platform.deepseek.com/api_keys](https://platform.deepseek.com/api_keys) and enter it in plugin settings. +- **Refresh Interval**: Default is 15 minutes. +- **Low Balance Warning**: Default threshold is 2.00. diff --git a/deepseek_usage/deepseek_usage.luau b/deepseek_usage/deepseek_usage.luau new file mode 100644 index 0000000..14971cd --- /dev/null +++ b/deepseek_usage/deepseek_usage.luau @@ -0,0 +1,213 @@ +--!nonstrict +-- DeepSeek Usage Bar Widget & Background Service Entry + +local DEFAULT_REFRESH_MINUTES = 15 +local HISTORY_FILE = "balance_history.json" +local MAX_HISTORY_POINTS = 48 + +local CURRENCY_SYMBOLS = { + USD = "$", + CNY = "¥", + EUR = "€", + GBP = "£", + JPY = "¥", +} + +local function formatBalance(balance: number?, currency: string?): string + if balance == nil then + return "--.--" + end + local curr = currency or "USD" + local symbol = CURRENCY_SYMBOLS[curr] + if symbol then + return string.format("%s%.2f", symbol, balance) + else + return string.format("%.2f %s", balance, curr) + end +end + +local state = { + balance = nil :: number?, + currency = "USD", + lastUpdated = nil :: string?, + errorMsg = nil :: string?, + isFetching = false, +} + +-- Load accumulated balance history from disk +local function loadHistory(): { { time: number, balance: number } } + local dir = noctalia.pluginDataDir() + if not dir then return {} end + local path = dir .. "/" .. HISTORY_FILE + local content = noctalia.readFile(path) + if not content then return {} end + local decoded = noctalia.json.decode(content) + if type(decoded) == "table" then + return decoded + end + return {} +end + +-- Save balance sample to persistent history +local function recordBalanceSample(val: number) + local dir = noctalia.pluginDataDir() + if not dir then return end + + local history = loadHistory() + local now = os.time() + + table.insert(history, { time = now, balance = val }) + + -- Keep only the latest N samples + while #history > MAX_HISTORY_POINTS do + table.remove(history, 1) + end + + local encoded = noctalia.json.encode(history, false) + if encoded then + noctalia.writeFile(dir .. "/" .. HISTORY_FILE, encoded) + end + + -- Share history state with panel + noctalia.state.set("deepseek.history", history) +end + +local function renderWidget() + local apiKey = noctalia.getConfig("api_key") or "" + + if apiKey == "" then + barWidget.setGlyph("wallet") + barWidget.setText(noctalia.tr("widget.no_key")) + barWidget.setTooltip({ + { key = noctalia.tr("tooltip.status"), value = noctalia.tr("status.unconfigured") }, + { key = noctalia.tr("tooltip.action"), value = noctalia.tr("tooltip.click_to_configure") }, + }) + return + end + + if state.isFetching and state.balance == nil then + barWidget.setGlyph("refresh") + barWidget.setText(noctalia.tr("widget.loading")) + return + end + + if state.errorMsg and state.balance == nil then + barWidget.setGlyph("alert-circle") + barWidget.setText(noctalia.tr("widget.error")) + barWidget.setTooltip({ + { key = noctalia.tr("tooltip.status"), value = state.errorMsg }, + }) + return + end + + local threshold = tonumber(noctalia.getConfig("low_balance_threshold")) or 2.0 + local balanceStr = formatBalance(state.balance, state.currency) + + barWidget.setGlyph("wallet") + barWidget.setText(balanceStr) + + if state.balance ~= nil and state.balance < threshold then + barWidget.setColor("error") + else + barWidget.setColor("primary") + end + + barWidget.setTooltip({ + { key = noctalia.tr("tooltip.balance"), value = balanceStr .. " " .. state.currency }, + { key = noctalia.tr("tooltip.last_updated"), value = state.lastUpdated or noctalia.tr("status.never") }, + { key = noctalia.tr("tooltip.status"), value = state.errorMsg or noctalia.tr("status.ok") }, + }) +end + +local function fetchSummary() + local apiKey = noctalia.getConfig("api_key") or "" + if apiKey == "" then + state.errorMsg = noctalia.tr("status.unconfigured") + noctalia.state.set("deepseek.state", state) + renderWidget() + return + end + + state.isFetching = true + renderWidget() + + noctalia.http({ + url = "https://api.deepseek.com/user/balance", + method = "GET", + headers = { + "Authorization: Bearer " .. apiKey, + "Accept: application/json", + }, + }, function(res) + state.isFetching = false + + if not res.ok then + state.errorMsg = string.format("HTTP Transport Error (%d)", res.status) + noctalia.notifyError("DeepSeek Usage", state.errorMsg) + noctalia.state.set("deepseek.state", state) + renderWidget() + return + end + + if res.status ~= 200 then + state.errorMsg = string.format("API Error (%d)", res.status) + if res.status == 401 then + state.errorMsg = noctalia.tr("error.invalid_key") + end + noctalia.notifyError("DeepSeek Usage", state.errorMsg) + noctalia.state.set("deepseek.state", state) + renderWidget() + return + end + + local parsed, err = noctalia.json.decode(res.body) + if not parsed or type(parsed) ~= "table" then + state.errorMsg = noctalia.tr("error.parse_failed") + noctalia.state.set("deepseek.state", state) + renderWidget() + return + end + + local balanceInfos = parsed.balance_infos + if balanceInfos and #balanceInfos > 0 then + local primaryWallet = balanceInfos[1] + state.currency = primaryWallet.currency or "USD" + state.balance = tonumber(primaryWallet.total_balance) or 0.0 + state.errorMsg = nil + state.lastUpdated = noctalia.formatTime("%H:%M:%S", os.time()) + + recordBalanceSample(state.balance) + + -- Check low balance notification + local threshold = tonumber(noctalia.getConfig("low_balance_threshold")) or 2.0 + if state.balance < threshold then + noctalia.notify("DeepSeek Balance Warning", string.format("Your DeepSeek balance is low: %s", formatBalance(state.balance, state.currency))) + end + else + state.errorMsg = noctalia.tr("error.no_wallet") + end + + noctalia.state.set("deepseek.state", state) + renderWidget() + end) +end + +function update() + local refreshMinutes = tonumber(noctalia.getConfig("refresh_minutes")) or DEFAULT_REFRESH_MINUTES + noctalia.setUpdateInterval(refreshMinutes * 60 * 1000) + fetchSummary() +end + +function onClick() + noctalia.togglePanel("coder/deepseek_usage:panel") +end + +noctalia.state.watch("deepseek.refresh_requested", function(req) + if req then + noctalia.state.set("deepseek.refresh_requested", false) + fetchSummary() + end +end) + +-- Initial setup +renderWidget() diff --git a/deepseek_usage/panel.luau b/deepseek_usage/panel.luau new file mode 100644 index 0000000..42623ba --- /dev/null +++ b/deepseek_usage/panel.luau @@ -0,0 +1,235 @@ +--!nonstrict +-- DeepSeek Usage Panel Entry — Graphical Balance & Top-Up Dashboard + +local CURRENCY_SYMBOLS = { + USD = "$", + CNY = "¥", + EUR = "€", + GBP = "£", + JPY = "¥", +} + +local function formatBalance(balance: number?, currency: string?): string + if balance == nil then + return "--.--" + end + local curr = currency or "USD" + local symbol = CURRENCY_SYMBOLS[curr] + if symbol then + return string.format("%s%.2f", symbol, balance) + else + return string.format("%.2f %s", balance, curr) + end +end + +local state = { + balance = nil :: number?, + currency = "USD", + lastUpdated = nil :: string?, + errorMsg = nil :: string?, + isFetching = false, +} + +local history = {} + +function openTopUpPage() + noctalia.runAsync("xdg-open https://platform.deepseek.com/top_up") +end + +function triggerRefresh() + noctalia.state.set("deepseek.refresh_requested", true) +end + +function onClosePanel() + panel.close() +end + +function onOpenSettings() + noctalia.openSettings() +end + +local function buildGraphValues(): ({ number }, number, number) + if #history == 0 then + return { 0 }, 0, 0 + end + + local minVal = history[1].balance + local maxVal = history[1].balance + + for _, pt in ipairs(history) do + if pt.balance < minVal then minVal = pt.balance end + if pt.balance > maxVal then maxVal = pt.balance end + end + + local range = maxVal - minVal + local values = {} + for _, pt in ipairs(history) do + table.insert(values, range > 0 and (pt.balance - minVal) / range or 0.5) + end + + return values, minVal, maxVal +end + +local function renderGraphSection(values: { number }, minVal: number, maxVal: number) + -- graph props unverified — adjust after hot-reload test + local graphOk, graphNode = pcall(function() + return ui.graph({ + values = values, + height = 64, + color = "primary", + }) + end) + + local graphElement + if graphOk and type(graphNode) == "table" then + graphElement = graphNode + else + graphElement = ui.label({ + text = string.format("History (%d data points)", #history), + fontSize = 11, + color = "on_surface_variant", + }) + end + + return ui.column({ gap = 6 }, { + ui.row({ justify = "space_between", align = "center" }, { + ui.label({ text = noctalia.tr("panel.history_title"), fontSize = 12, fontWeight = "medium", color = "on_surface_variant" }), + ui.label({ text = string.format("%d samples", #history), fontSize = 10, color = "on_surface_variant" }), + }), + ui.column({ + fill = "surface_variant/0.2", + radius = 8, + padding = 8, + gap = 4, + }, { + graphElement, + ui.row({ justify = "space_between" }, { + ui.label({ text = string.format("Min: %s", formatBalance(minVal, state.currency)), fontSize = 10, color = "on_surface_variant" }), + ui.label({ text = string.format("Max: %s", formatBalance(maxVal, state.currency)), fontSize = 10, color = "on_surface_variant" }), + }), + }), + }) +end + +local function render() + local apiKey = noctalia.getConfig("api_key") or "" + local isUnconfigured = apiKey == "" + + local values, minVal, maxVal = buildGraphValues() + local balanceDisplay = formatBalance(state.balance, state.currency) + + -- Header Row + local headerRow = ui.row({ align = "center", justify = "space_between", gap = 8 }, { + ui.row({ gap = 8, align = "center" }, { + ui.glyph({ name = "wallet", size = 18, color = "primary" }), + ui.label({ text = noctalia.tr("panel.title"), fontSize = 16, fontWeight = "bold", color = "on_surface" }), + }), + ui.row({ gap = 4, align = "center" }, { + ui.button({ glyph = "refresh", variant = "ghost", onClick = "triggerRefresh", tooltip = noctalia.tr("panel.refresh_tooltip") }), + ui.button({ glyph = "close", variant = "ghost", onClick = "onClosePanel" }), + }), + }) + + -- Scrollable Body Items + local bodyItems = {} + + -- Unconfigured State Banner + if isUnconfigured then + table.insert(bodyItems, ui.column({ + fill = "surface_variant/0.5", + radius = 8, + padding = 12, + gap = 8, + align = "stretch", + }, { + ui.label({ text = noctalia.tr("panel.unconfigured_title"), fontWeight = "bold", color = "error" }), + ui.label({ text = noctalia.tr("panel.unconfigured_desc"), fontSize = 12, color = "on_surface_variant" }), + ui.button({ + text = noctalia.tr("panel.open_settings"), + variant = "primary", + onClick = "onOpenSettings", + }), + })) + end + + -- Error Banner + if not isUnconfigured and state.errorMsg ~= nil then + table.insert(bodyItems, ui.row({ + fill = "error/0.15", + radius = 8, + padding = 10, + gap = 8, + align = "center", + }, { + ui.glyph({ name = "alert-circle", color = "error", size = 16 }), + ui.label({ text = state.errorMsg, color = "error", fontSize = 12, flexGrow = 1 }), + })) + end + + -- Hero Balance Card + if not isUnconfigured then + table.insert(bodyItems, ui.column({ + fill = "surface_variant/0.35", + radius = 12, + padding = 16, + align = "center", + gap = 6, + }, { + ui.label({ text = noctalia.tr("panel.current_balance"), fontSize = 12, color = "on_surface_variant" }), + ui.label({ text = balanceDisplay .. " " .. state.currency, fontSize = 28, fontWeight = "bold", color = "primary" }), + ui.label({ text = noctalia.tr("panel.wallet_info"), fontSize = 11, color = "on_surface_variant" }), + ui.spacer({ height = 4 }), + ui.button({ + text = " " .. noctalia.tr("panel.add_credits") .. " ", + glyph = "external-link", + variant = "primary", + onClick = "openTopUpPage", + tooltip = noctalia.tr("panel.add_credits_tooltip"), + }), + })) + + -- Graph / Trend Section + table.insert(bodyItems, renderGraphSection(values, minVal, maxVal)) + end + + -- Footer Status Info + local footerRow = ui.row({ justify = "space_between", align = "center" }, { + ui.label({ + text = state.lastUpdated and (noctalia.tr("panel.updated_at") .. ": " .. state.lastUpdated) or "", + fontSize = 10, + color = "on_surface_variant", + }), + ui.button({ + text = noctalia.tr("panel.settings_btn"), + variant = "ghost", + onClick = "onOpenSettings", + }), + }) + + panel.render(ui.column({ flexGrow = 1, gap = 10, padding = 12 }, { + headerRow, + ui.separator({}), + ui.scroll({ flexGrow = 1, gap = 10 }, bodyItems), + footerRow, + })) +end + +function onOpen(_context) + state = noctalia.state.get("deepseek.state") or state + history = noctalia.state.get("deepseek.history") or {} + render() +end + +noctalia.state.watch("deepseek.state", function(newState) + if type(newState) == "table" then + state = newState + render() + end +end) + +noctalia.state.watch("deepseek.history", function(newHistory) + if type(newHistory) == "table" then + history = newHistory + render() + end +end) diff --git a/deepseek_usage/plugin.toml b/deepseek_usage/plugin.toml new file mode 100644 index 0000000..a520679 --- /dev/null +++ b/deepseek_usage/plugin.toml @@ -0,0 +1,47 @@ +id = "coder/deepseek_usage" +name = "DeepSeek Usage" +version = "1.0.0" +plugin_api = 19 +author = "coder" +license = "MIT" +dependencies = ["xdg-open"] +tags = ["utility", "productivity", "bar", "panel"] +icon = "wallet" +description = "DeepSeek API credit and balance monitor for Noctalia shell" + +[[widget]] +id = "bar" +entry = "deepseek_usage.luau" + +[[panel]] +id = "panel" +entry = "panel.luau" +width = 360 +height = 480 +placement = "attached" +position = "auto" + +[[setting]] +key = "api_key" +type = "string" +label_key = "settings.api_key.label" +description_key = "settings.api_key.description" +default = "" + +[[setting]] +key = "refresh_minutes" +type = "int" +label_key = "settings.refresh_minutes.label" +description_key = "settings.refresh_minutes.description" +default = 15 +min = 1 +max = 1440 + +[[setting]] +key = "low_balance_threshold" +type = "double" +label_key = "settings.low_balance_threshold.label" +description_key = "settings.low_balance_threshold.description" +default = 2.0 +min = 0.0 +max = 100.0 diff --git a/deepseek_usage/thumbnail.webp b/deepseek_usage/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..806ac1e3f9690885e8f3f890291cb8a4ff946f5c GIT binary patch literal 56056 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 H7#J7;6?8E8 literal 0 HcmV?d00001 diff --git a/deepseek_usage/translations/en.json b/deepseek_usage/translations/en.json new file mode 100644 index 0000000..babb3ec --- /dev/null +++ b/deepseek_usage/translations/en.json @@ -0,0 +1,53 @@ +{ + "title": "DeepSeek Usage", + "widget": { + "no_key": "Set Key", + "loading": "Checking...", + "error": "Error" + }, + "tooltip": { + "balance": "Current Balance", + "last_updated": "Last Checked", + "status": "API Status", + "action": "Action", + "click_to_configure": "Click to open settings and set API Key" + }, + "status": { + "ok": "Active", + "unconfigured": "API Key Not Set", + "never": "Never" + }, + "error": { + "invalid_key": "Invalid or expired API Key (401)", + "parse_failed": "Failed to parse API response", + "no_wallet": "No active wallet found in user summary" + }, + "panel": { + "title": "DeepSeek Balance", + "refresh_tooltip": "Refresh balance now", + "unconfigured_title": "API Key Required", + "unconfigured_desc": "Please configure your DeepSeek API Key in the plugin settings.", + "open_settings": "Open Settings", + "current_balance": "Available Balance", + "wallet_info": "Normal Wallet", + "add_credits": "Add Credits", + "add_credits_tooltip": "Open DeepSeek platform top-up page in browser", + "history_title": "Balance History (24h Trend)", + "updated_at": "Updated", + "settings_btn": "Settings" + }, + "settings": { + "api_key": { + "label": "DeepSeek API Key", + "description": "API Key from platform.deepseek.com/api_keys" + }, + "refresh_minutes": { + "label": "Refresh Interval (Minutes)", + "description": "How often to poll DeepSeek API for balance updates" + }, + "low_balance_threshold": { + "label": "Low Balance Warning Threshold", + "description": "Send a desktop notification when balance drops below this amount" + } + } +}