feat(console): lite backend command-reference modal

Give the lite console the parity analog of the full-node RPC command
reference: the same searchable two-pane modal (browse/search, detail
pane, examples, Insert / Insert & run, destructive confirm), driven by
the lite backend's own command set instead of daemon RPC.

- ConsoleCommandExecutor::commandReference() returns the category table
  (full node = consoleCommandCategories(); lite = new
  liteConsoleCommandCategories() -- 25 backend verbs in 5 categories).
  The shared renderCommandsPopup reads the table from the executor.
- The Commands button now shows for both variants (gated on
  commandReference()!=nullptr); title/tooltip/arg-quoting branch on
  hasRpcReference() (clarified to mean "speaks JSON-RPC / full node").
- Lite args are bare tokens (the backend takes one unsplit arg string
  and does not strip quotes), so the param-builder's JSON string
  auto-quoting is disabled for lite -- Insert & run emits runnable bare
  commands. send uses the JSON-array form (its positional form is
  unreachable via the single-arg transport); new uses zs/R; import
  takes just the key (the backend hardcodes birthday=0).

Adds 7 i18n keys across all 8 languages (additive). Full-node behavior
is unchanged. Adversarially reviewed (data vs the backend registry,
plumbing/regression, i18n) with all findings fixed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-19 12:27:51 -05:00
parent 567732206e
commit 5c570613c8
16 changed files with 248 additions and 23 deletions

View File

@@ -4,6 +4,7 @@
#include "console_command_executor.h"
#include "console_channel.h"
#include "console_command_reference.h" // consoleCommandCategories / liteConsoleCommandCategories
#include "console_input_model.h" // BuildConsoleRpcCall
#include "../../app.h"
@@ -194,6 +195,11 @@ void FullNodeConsoleExecutor::printHelp(const ConsoleAddLineFn& add)
add(TR("console_tab_completion"), ConsoleChannel::Info);
}
const std::vector<ConsoleCommandCategory>* FullNodeConsoleExecutor::commandReference() const
{
return &consoleCommandCategories();
}
ConsoleStatusLine FullNodeConsoleExecutor::toolbarStatus() const
{
ConsoleStatusLine s;
@@ -293,6 +299,12 @@ void LiteConsoleExecutor::printHelp(const ConsoleAddLineFn& add)
add(" sync syncstatus balance addresses height info list notes encryptionstatus", ConsoleChannel::None);
add(" send shield new seed import timport export", ConsoleChannel::None);
add(" encrypt decrypt lock unlock rescan save sietch saplingtree coinsupply", ConsoleChannel::None);
add(TR("console_click_commands"), ConsoleChannel::Info);
}
const std::vector<ConsoleCommandCategory>* LiteConsoleExecutor::commandReference() const
{
return &liteConsoleCommandCategories();
}
std::vector<ConsoleStatusLine> LiteConsoleExecutor::statusLines() const