feat(clock): native-compatible clock.mjs to replace black-screen web port master
The web disks/clock.mjs is a 7000-line piece that depends on web-only APIs (hud.label, typeface, net.pieces, store.persist, api.send, etc.) that native doesn't expose. Loading it on the device produced a black screen because paint() throws on the first frame and never recovers. User reported "clock ceg → black clock still" after my earlier space→colon fix landed the params correctly. This commit adds a minimal native clock.mjs that: - Parses params via melody-parser.parseMelody (already bundled in /lib) - Derives BPM from colon[0] (matches web clock convention: :2 = half, :0.5 = double speed) - Plays one note at a time via sound.synth with a durationSecs timer, killing the previous voice on each new note so they don't overlap - Renders a compact visualization: top strip with melody string + bpm + index, middle strip with one colored bar per note (current one highlighted white + labeled with note+octave), bottom hint - leave() kills any active voice To make the native version win over the web version, build-and- flash-initramfs.sh no longer copies disks/clock.mjs as a web piece — the native fedac/native/pieces/clock.mjs runs instead. This covers the core use case (`clock:c:e:g`, `clock:cdefgab`, `clock:0.5:cdefg`) but doesn't replicate the web clock's stample sampling, face tracking, label overlays, or share-code features. Those stay web-only by design.