refactor(console): phase 2 — channel-as-semantic key; decouple executor from UI colors
Make ConsoleChannel the canonical semantic classification of every console
line. Producers (command executor, app log forwarders, result formatter) tag
each line with a channel; the UI derives both the text color and the left
accent-bar color from it at draw time, and the output filter keys off it.
This replaces the prior scheme of storing an ImU32 color per line and then
reverse-engineering the source from color-equality plus a "[daemon] "/"[xmrig] "
/"[app] "/"[rpc] " text prefix. Consequences:
- ConsoleLine now stores {text, ConsoleChannel} — no per-line color.
- addLine()/addRpcTraceLine() take a channel; the redundant text prefixes are
gone (the accent bar carries the origin).
- The executor's ConsoleAddLineFn hands a channel, not an ImU32, so the backend
no longer depends on ConsoleTab::COLOR_* — FullNode/Lite executors emit clean
text + channel.
- The theme-remap loop that rewrote stored colors on light/dark flip is deleted;
colors are resolved per-channel each frame (refreshColors on flip only).
- ConsoleOutputFilter drops its color fields; consoleLinePassesFilter() keys off
the channel. Test updated to the channel-based API.
- Added a Warning channel (amber severity peer of Error/Success) so the
notification + logger warning forwarders keep their color.
Full-node + lite build clean; ctest green; source hygiene clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
35
src/ui/windows/console_channel.h
Normal file
35
src/ui/windows/console_channel.h
Normal file
@@ -0,0 +1,35 @@
|
||||
// DragonX Wallet - ImGui Edition
|
||||
// Copyright 2024-2026 The Hush Developers
|
||||
// Released under the GPLv3
|
||||
//
|
||||
// ConsoleChannel — the semantic classification of a console line. It is the canonical
|
||||
// key: producers (the command executor, app log forwarders, the result formatter) tag
|
||||
// each line with a channel, the UI derives both the text color and the left accent-bar
|
||||
// color from it at draw time, and the output filter keys off it. This replaces the older
|
||||
// approach of storing an ImU32 color and reverse-engineering the source from color
|
||||
// equality + a "[daemon] " text prefix.
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace dragonx {
|
||||
namespace ui {
|
||||
|
||||
enum class ConsoleChannel {
|
||||
None = 0, // plain result / default text
|
||||
Command, // the "> cmd" echo
|
||||
Info, // informational / help text
|
||||
Success, // positive events (connected, accepted, ready)
|
||||
Warning, // non-fatal warnings (amber)
|
||||
Error, // errors
|
||||
Rpc, // RPC trace lines
|
||||
Daemon, // dragonxd log output
|
||||
Xmrig, // miner log output
|
||||
App, // app / wallet / lite-diagnostics log
|
||||
JsonKey, // result JSON: object key
|
||||
JsonString, // result JSON: string value
|
||||
JsonNumber, // result JSON: number / bool / null
|
||||
JsonBrace, // result JSON: braces / brackets
|
||||
};
|
||||
|
||||
} // namespace ui
|
||||
} // namespace dragonx
|
||||
Reference in New Issue
Block a user