feat: add display UI with splash screen, dashboard, and RSSI sparkline

Implement full SSD1306 OLED display support:
- Splash screen on boot (1.5s) with project name, version, board
- Dashboard showing radio state, config, counters, RSSI/SNR
- RSSI history sparkline (64-sample ring buffer, 2px-wide bars)
- DisplayOn/DisplayOff host commands routed via dedicated channel
- Pure render functions against generic DrawTarget (no hardware coupling)
- Display on/off control bypasses radio task entirely

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
swaitsandClaude Opus 4.6 committed 2026-03-29 20:42:54 -06:00
1 parent 7064110293
commit 3102fc747a
17624 files changed
+4564928 -38

No files matched your search

+164
View File
@@ -0,0 +1,164 @@
// This file is auto-generated by the build script
// Please, do not modify it manually
use super::test_markdown_html;
#[test]
fn strikethrough_test_1() {
let original = r##"~~This is *stricken out*~~
"##;
let expected = r##"<p><del>This is <em>stricken out</em></del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_2() {
let original = r##"~~This is \~\~stricken~~
"##;
let expected = r##"<p><del>This is ~~stricken</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_3() {
let original = r##"This~~is~~stricken
"##;
let expected = r##"<p>This<del>is</del>stricken</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_4() {
let original = r##"~~This~~is~~stricken~~
"##;
let expected = r##"<p><del>This</del>is<del>stricken</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_5() {
let original = r##"Here I strike out an exclamation point~~!~~.
"##;
let expected = r##"<p>Here I strike out an exclamation point<del>!</del>.</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_6() {
let original = r##"~This is stricken out~
"##;
let expected = r##"<p><del>This is stricken out</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_7() {
let original = r##"~This is \~stricken~
"##;
let expected = r##"<p><del>This is ~stricken</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_8() {
let original = r##"This~is~nothing
"##;
let expected = r##"<p>This~is~nothing</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_9() {
let original = r##"~This~is~nothing~
"##;
let expected = r##"<p><del>This~is~nothing</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_10() {
let original = r##"Here I fail to strike out an exclamation point~!~.
"##;
let expected = r##"<p>Here I fail to strike out an exclamation point~!~.</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_11() {
let original = r##"Here I fail to strike out a tilde ~~~.
"##;
let expected = r##"<p>Here I fail to strike out a tilde ~~~.</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_12() {
let original = r##"Here I fail to match up ~~tildes~.
"##;
let expected = r##"<p>Here I fail to match up ~~tildes~.</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_13() {
let original = r##"Here I fail to match up ~tildes~~.
"##;
let expected = r##"<p>Here I fail to match up ~tildes~~.</p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_14() {
let original = r##"~~This ~is stricken.~~
"##;
let expected = r##"<p><del>This ~is stricken.</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_15() {
let original = r##"~This ~~is stricken.~
"##;
let expected = r##"<p><del>This ~~is stricken.</del></p>
"##;
test_markdown_html(original, expected, false, false, false);
}
#[test]
fn strikethrough_test_16() {
let original = r##"~This ~~is stricken~ but this is not~~
"##;
let expected = r##"<p><del>This ~~is stricken</del> but this is not~~</p>
"##;
test_markdown_html(original, expected, false, false, false);
}