Implement the reviewed UI icon system and durable review workflow (#853)

Thanks @Nathan-Dane.
This commit is contained in:
Nathan Dane authored and GitHub committed 2026-10-17 04:07:16 -04:00
1 parent c599238653
commit 64966bab88
374 files changed
+8187 -2221

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
//! Original UI icon standards and review-tool regression checks.
use std::path::Path;
use std::process::Command;
pub fn run(root: &Path) -> Result<(), String> {
for args in [
vec!["-B", "assets/icons/ui/design/tools/lint_icons.py"],
vec!["-B", "assets/icons/ui/design/tools/icon_status.py", "--check"],
vec!["-B", "-m", "unittest", "discover", "-s", "tests/tools", "-p", "test_icon*.py"],
] {
let mut command = Command::new("python3");
command.args(args).current_dir(root);
super::run(command, "UI icon standards (Python 3.11+)")?;
}
Ok(())
}
+7 -3
View File
@@ -1,13 +1,14 @@
//! Workspace tooling: `cargo xtask <command>`.
//!
//! Pure Rust (std, serde_json and sha2). External tools (`cargo`) are invoked through
//! `std::process::Command`.
//! Rust workspace tooling. External tools (`cargo`, and Python 3.11+ for the
//! original icon collection) are invoked through `std::process::Command`.
mod app_icons;
mod assets;
mod book;
mod features;
mod i18n;
mod icons;
mod layers;
mod licences;
mod lists;
@@ -25,6 +26,7 @@ commands:
layers enforce the crate dependency layering (plan/architecture.md §3)
assets check that every non-code asset file is attributed in ATTRIBUTION.md
app-icons regenerate shared app-icon exports for Linux, FreeBSD and Windows
icons validate UI icon standards, discovery and review-tool behavior (Python 3.11+)
features list SolidCraft's commands by area in docs/features.md (from the registry)
i18n [--check | --add-missing]
report how complete the message catalogs in assets/locales are:
@@ -61,7 +63,7 @@ commands:
web-offline-test [--site DIR]
check in headless Chrome that the web app works offline and updates to a new
build (a stand-in app, or the web build in DIR such as dist/web)
ci fmt --check, assets, licences --check, lists, layers, clippy -D warnings, then the tests
ci fmt --check, assets, icons, licences --check, lists, layers, clippy -D warnings, then the tests
with the wasm check alongside, then web-offline-test when Chrome is installed
(stops at the first failing step)
";
@@ -72,6 +74,7 @@ fn main() -> ExitCode {
let result = match args.first().map(String::as_str) {
Some("layers") => cmd_layers(),
Some("assets") => assets::run(&root()),
Some("icons") => icons::run(&root()),
Some("app-icons") => app_icons::run(&root()),
Some("features") => features::run(&root()),
Some("i18n") => i18n::run(&root(), &rest),
@@ -362,6 +365,7 @@ fn cmd_ci() -> Result<(), String> {
c.args(["fmt", "--all", "--", "--check"]);
run(c, "cargo fmt --check")?;
assets::run(&root())?;
icons::run(&root())?;
licences::run(&root(), true)?;
lists::run(&root(), false)?;
cmd_layers()?;