From beb639f067f64b5d89d0983c3e19989eece34c6b Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Mon, 10 Aug 2026 07:30:30 +0200 Subject: [PATCH] fix(ui): the OLED palette is called Eclipse now MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every other background reads as a place or a material — Violet, Nebula, Abyss, Ember, Moss, Graphite, Holo, Sunset, Bloom, Dawn, Mint, Opal — and "OLED" was a spec sheet sitting among them, naming the panel it suits rather than what it looks like. It looks like black with a thin violet corona at one corner, which is an eclipse, and that puts it beside Nebula and Abyss. The ID stays "oled" in all three clients: it is the stored ui_palette value AND the cross-client key, so renaming it would orphan every saved choice and silently desync Apple, Android and the console UI. Only the label moved. No test or doc pinned the old string. Palette tests pass; macOS builds. --- .../src/main/kotlin/io/unom/punktfunk/GamepadPalette.kt | 6 +++++- .../apple/Sources/PunktfunkShared/GamepadPalette.swift | 8 +++++++- crates/pf-console-ui/src/library.rs | 5 ++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadPalette.kt b/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadPalette.kt index aca24aeb..92cb0a41 100644 --- a/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadPalette.kt +++ b/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadPalette.kt @@ -84,7 +84,11 @@ class GamepadPalette( // pure black too: the calm mix on the form screens lifts toward nothing. What is // left is a faint indigo→violet ember in the bright corner. The accent stays the // brand violet — focus has to be findable on black. - "oled", "OLED", + // Named for the look, not the panel technology — black with a thin violet corona + // belongs beside Nebula and Abyss. ⚠ The ID stays "oled": it is the stored + // `ui_palette` value and the cross-client key, so renaming it would orphan saved + // choices and desync the clients. + "oled", "Eclipse", listOf( Triple(0.000, 0.000, 0.000), Triple(0.000, 0.000, 0.000), Triple(0.010, 0.020, 0.100), Triple(0.045, 0.016, 0.115), diff --git a/clients/apple/Sources/PunktfunkShared/GamepadPalette.swift b/clients/apple/Sources/PunktfunkShared/GamepadPalette.swift index e9da97a6..1404c373 100644 --- a/clients/apple/Sources/PunktfunkShared/GamepadPalette.swift +++ b/clients/apple/Sources/PunktfunkShared/GamepadPalette.swift @@ -79,7 +79,13 @@ public struct GamepadPalette: Identifiable, Equatable, Sendable { // too: the calm mix on the form screens lifts toward nothing. What is left is a // faint indigo→violet ember in the bright corner. The accent stays the brand violet // — focus has to be findable on black. - id: "oled", name: "OLED", + // + // Named for the look, not the panel technology: black with a thin violet corona is an + // eclipse, and it belongs beside Nebula and Abyss rather than reading as a spec sheet. + // ⚠ The ID stays "oled" — it is the stored `ui_palette` value AND the cross-client key + // (pf-console-ui's library.rs, the Android GamepadPalette.kt), so renaming it would + // orphan every saved choice and desync the three clients. Only the label moved. + id: "oled", name: "Eclipse", stops: [SIMD3(0.000, 0.000, 0.000), SIMD3(0.000, 0.000, 0.000), SIMD3(0.010, 0.020, 0.100), SIMD3(0.045, 0.016, 0.115), SIMD3(0.120, 0.024, 0.130)], diff --git a/crates/pf-console-ui/src/library.rs b/crates/pf-console-ui/src/library.rs index b52555a5..5f4b5cd3 100644 --- a/crates/pf-console-ui/src/library.rs +++ b/crates/pf-console-ui/src/library.rs @@ -267,7 +267,10 @@ pub const PALETTES: [Palette; 13] = [ // luminance while keeping the backdrop a field with somewhere to go rather than a // dead rectangle. The accent stays the brand violet — focus has to be findable on // black. - id: "oled", name: "OLED", + // Named for the look, not the panel technology — black with a thin violet corona belongs + // beside Nebula and Abyss. ⚠ The ID stays "oled": it is the stored `ui_palette` value and + // the cross-client key, so renaming it would orphan saved choices and desync the clients. + id: "oled", name: "Eclipse", stops: Some(&[ (0.000, 0.000, 0.000), (0.000, 0.000, 0.000), (0.010, 0.020, 0.100), (0.045, 0.016, 0.115), (0.120, 0.024, 0.130),