From 718b8698b4953d8954bee17b2d6f58c25b35b2aa Mon Sep 17 00:00:00 2001 From: "Claude Code (Gitea Agent)" Date: Tue, 15 Sep 2026 11:59:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D0=BD=20=D1=81=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D0=B0:=20=D0=B8=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D0=B8=D0=B9=20=D0=B1=D0=B5=D0=B7=20=D1=81?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D0=BE=D1=84=D0=BE=D1=80=D0=B0=20=D1=82=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B3=20(anton/desktop-dashboard#4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backdrop возвращён к ba75a29; MOOD_TARGET и дрейф цвета удалены. Перезапуск: лог без ошибок, кадр 11:59 синий при сводке «ПЕРЕГРУЗКА». --- monitor.lua | 41 ++++++++++------------------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/monitor.lua b/monitor.lua index 40c0ca4..4ae61df 100644 --- a/monitor.lua +++ b/monitor.lua @@ -755,34 +755,16 @@ function Rule:render_background(cr) end local function rule() return Rule() end ---- Full-screen backdrop: vertical gradient + coloured light blooms (desktop only). ---- The gradient is the MOOD of the machine (Anton, 2026-09-14): blue = everything fine (the original palette, whatever the load), ---- yellow = one warning, orange = several warnings, red = something is overloaded. Colours drift smoothly (~10 s) so it never flickers. ---- Anton explicitly rejected a green "busy" state: "по умолчанию когда всё хорошо — синий, как был". --- MOOD = one number 0..1: 0 = the original blue palette (everything fine), 1 = red (overload). Warnings push it up --- gradually (each yellow +0.25, any red = 1), so the desktop "reddens" with trouble instead of jumping between colours. -local MOOD_BLUE = {top = {0.05, 0.06, 0.14}, mid = {0.08, 0.07, 0.18}, bot = {0.04, 0.05, 0.11}} -local MOOD_RED = {top = {0.20, 0.04, 0.06}, mid = {0.25, 0.05, 0.08}, bot = {0.14, 0.03, 0.05}} -MOOD_TARGET = 0 -local mood_cur = 0 -local function mood_step() -- returns true while still drifting toward the target - local d = MOOD_TARGET - mood_cur - if math.abs(d) < 0.003 then mood_cur = MOOD_TARGET; return false end - mood_cur = mood_cur + d * 0.12 - return true -end -local function mix(a, b, t) return {a[1] + (b[1] - a[1]) * t, a[2] + (b[2] - a[2]) * t, a[3] + (b[3] - a[3]) * t} end +--- Full-screen backdrop: the ORIGINAL fixed blue gradient + light blooms (desktop only). +--- 2026-09-15 Anton: the alert-driven blue→red mood is removed — with agents at work something is always +--- over a threshold, so the desktop stayed red. Alerts still show in the summary line and on the sensors. local Backdrop = util.class(widget.Frame) --- polycore paints backgrounds into a cached surface at layout time; while the mood colour drifts we ask for a relayout --- each second (return true) so the cache is repainted. Once settled the cache is reused — no per-frame cost. -function Backdrop:update() return mood_step() end function Backdrop:render_background(cr) local w, h = SCREEN_W, SCREEN_H local pat = cairo_pattern_create_linear(0, 0, 0, h) - local t = mood_cur - cairo_pattern_add_color_stop_rgb(pat, 0, unpack(mix(MOOD_BLUE.top, MOOD_RED.top, t))) - cairo_pattern_add_color_stop_rgb(pat, 0.55, unpack(mix(MOOD_BLUE.mid, MOOD_RED.mid, t))) - cairo_pattern_add_color_stop_rgb(pat, 1, unpack(mix(MOOD_BLUE.bot, MOOD_RED.bot, t))) + cairo_pattern_add_color_stop_rgb(pat, 0, 0.05, 0.06, 0.14) + cairo_pattern_add_color_stop_rgb(pat, 0.55, 0.08, 0.07, 0.18) + cairo_pattern_add_color_stop_rgb(pat, 1, 0.04, 0.05, 0.11) cairo_rectangle(cr, 0, 0, w, h); cairo_set_source(cr, pat); cairo_fill(cr); cairo_pattern_destroy(pat) local function bloom(x, y, rad, c, a) local rp = cairo_pattern_create_radial(x, y, 0, x, y, rad) @@ -790,11 +772,10 @@ function Backdrop:render_background(cr) cairo_pattern_add_color_stop_rgba(rp, 1, c[1], c[2], c[3], 0) cairo_rectangle(cr, 0, 0, w, h); cairo_set_source(cr, rp); cairo_fill(cr); cairo_pattern_destroy(rp) end - -- blooms keep the original colours and warm toward red with the mood - bloom(120, 120, 620, mix(BLUE, RED, t), 0.16 + 0.10 * t) - bloom(w - 160, 240, 560, mix(MAUVE, RED, t), 0.14) - bloom(w * 0.5, h - 80, 700, mix(PINK, RED, t), 0.10) - bloom(220, h - 120, 480, mix(TEAL, RED, t), 0.08) + bloom(120, 120, 620, BLUE, 0.16) + bloom(w - 160, 240, 560, MAUVE, 0.14) + bloom(w * 0.5, h - 80, 700, PINK, 0.10) + bloom(220, h - 120, 480, TEAL, 0.08) widget.Frame.render_background(self, cr) end @@ -856,8 +837,6 @@ local function clock_block() local reds, yellows = {}, {} for name, l in pairs(ALERTS) do if l == 2 then reds[#reds + 1] = name elseif l == 1 then yellows[#yellows + 1] = name end end table.sort(reds); table.sort(yellows) - -- mood of the whole desktop (drives the backdrop colour): 0 = blue, each warning +0.25, any overload = 1 (red) - MOOD_TARGET = #reds > 0 and 1 or math.min(0.75, #yellows * 0.25) if #reds > 0 then status_t:set_text("ПЕРЕГРУЗКА: " .. table.concat(reds, ", ")); paint(status_t, 2) elseif #yellows > 0 then status_t:set_text("Внимание: " .. table.concat(yellows, ", ")); paint(status_t, 1) else status_t:set_text("Всё в норме"); paint(status_t, 0) end -- 2.54.0