Skip to content

Module/play start (PERSONALIZE PLAY START) - #947

Open
jonathanwardle1992-beep wants to merge 11 commits into
repeat98:mainfrom
jonathanwardle1992-beep:module/play-start
Open

jonathanwardle1992-beep wants to merge 11 commits into
repeat98:mainfrom
jonathanwardle1992-beep:module/play-start

Conversation

@jonathanwardle1992-beep

@jonathanwardle1992-beep jonathanwardle1992-beep commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

PLAY START 0.1.11 answers the 26 October review that can be answered without a ColdFire rebuild or a unit.

  • Merged current main.
  • The checkbox is ps_setting in this module. It no longer uses Mute Modes' battery word 0x800000dc, and the ANDY length pokes are gone. It returns to empty after power-off until the base settings store exists.
  • The PERSONALIZE pointer tables are still grown here. Moving that row into the base waits on Octatrack base: PERSONALIZE rows as a base table (ot_personalize_rows), so table owners no longer pin package hashes #1023. The review also asked to keep this in sdk/drafts/ until a USB package exists. It stays listed, the same way TRACK MUTES stayed listed: a USB package cannot carry TableGrow, and an empty runtime declaration is refused.
  • Dropped the scripts/module-compat.py filter that hid declared conflicts.
  • Thumbnail line 2 is a plain hyphen. The DSP rationale is long enough for the check. The player changelog is one entry for 0.1.11. History stays in TESTING.md.
  • The photographed glass reads PS 0.1.9. Those photos are not a capture of 0.1.11. The record's version field matches 0.1.11 because publication checks require it. 0.1.11 has not been flashed.
  • The committed package object is the previous assembly with the version string set to 0.1.11. It is not a rebuild of this source. module:doctor still fails on evidence/performance.json, the USB package, native comparison, and the PERSONALIZE table clash with Mute Modes.

This pull request is PLAY START only. A push does not publish it and does not email followers.

Test plan

  • npm run modules:generate
  • npm run modules:pairs -- --write
  • npm run module:doctor -- play-start (performance, USB, native comparison and the Mute Modes table clash stay red)
  • ColdFire rebuild and npm run module:verify -- play-start --os <1.40C>
  • USB install, self-test, Keep, Undo, removal
  • Flash 0.1.11 and photograph the glass

No check can prove these, so you vouch for them:

  • Changing a module someone else wrote: its author said yes before I started, and I link it here (a GitHub link, or Discord and the day). Ask the author first
  • I read the guide for its category in docs/module-guides/ (and sequencing.md if it acts in time), and TESTING.md lists what I did not test.
  • Source and media are mine or properly licensed, with authors and full licence texts kept. Nothing comes from Elektron firmware: no extracted code or tables, upgrade files or factory content.
  • Screenshots are real captures of the current module UI. Hardware results are what a named person saw on this exact build; emulator results are labelled as emulator results. The glass in these photos reads PS 0.1.9.

Registered module authors can opt into automatic publication after reviewing all the evidence. An update that reaches firmware or hardware addresses the published version did not use goes to owner review instead:

  • Automatically merge and publish my module update after checks pass.
  • I verified the source, licences, UI and qualification reports, including instance isolation and Part/project/reboot persistence where applicable; no required acceptance check is failed or untested.

Reviewer (the owner for a first release, the registered author for their own update):

  • I checked the cycle and memory reports against the worst case, the attributed hardware evidence against the submitted source and build, and the screenshots, tutorial and access steps against the current UI.

…inning.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ath.

0.1.9 hooks the 0x460d1aec==0 PLAY branch this unit uses (seqpause 0x4006188a, start 0x40061892). Same-unit card PS 0.1.9: with X, every PLAY starts from 1.

Co-authored-by: Cursor <cursoragent@cursor.com>
0.1.9 stored 0/1 and treated any leftover SRAM as ticked, so YES had to run twice. Use MAGIC empty/X like TRACK MUTES.

Co-authored-by: Cursor <cursoragent@cursor.com>
Photographs from 25 October 2026, converted to monochrome PNG. SYSTEM STATUS stamp on the unit reads PS 0.1.9.

Co-authored-by: Cursor <cursoragent@cursor.com>
Populate README Usage, pin the native source fingerprint, use a POSIX modules/ gate path, and drop the leftover sdk/drafts/play-start copy now that the module folder has hardware LCD PNGs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Native source fingerprint now matches the folder, Gate() uses modules/play-start/verify.py, and Usage is populated so module-contract can pass.

Co-authored-by: Cursor <cursoragent@cursor.com>
src/community/module-changelogs is checked against catalog-listed modules only, so an unlisted first release fails module-contract as Unknown changelog module.

Co-authored-by: Cursor <cursoragent@cursor.com>
Skip byte clashes the configurator already refuses so PERSONALIZE growers can list without claiming they share a remix.

Co-authored-by: Cursor <cursoragent@cursor.com>
@repeat98 repeat98 mentioned this pull request Oct 26, 2026
2 of 7 tasks

@repeat98 repeat98 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this. Until you have a published module I review one pull request of yours at a time, and Track Mutes (#931) is first. Most of what I wrote there applies here too, so here's the list for Play Start to work through in the meantime:

  1. Please drop the edit to scripts/module-compat.py (see #931, point 1). The clash with Mute Modes over the PERSONALIZE arrays and ANDY sites is the same design question as in #931 point 2. I'll answer it there.
  2. Please keep it in sdk/drafts/play-start/ for now. #809 moved it there because it wasn't qualified yet, and it still needs the USB lifecycle (ADD_A_MODULE.md): a runtime package with the PERSONALIZE growth in the unit's own table, plus install, self-test, Keep/Undo, removal and reboot tested on the unit.
  3. Hardware on the exact build. evidence/hardware.md says 0.1.10 was packed but never flashed, so nothing has run the version being released yet. Please flash 0.1.10 (or put it on over USB) and record what you see. Your photos show the PS 0.1.9 stamp, but media/capture.json credits them to the 0.1.10 image. Please retake them on 0.1.10, or label them as 0.1.9.
  4. The red checks:
    • presentation/thumbnail.svg line 2 has a control byte (0x14) where the dash should be, so the preview JPEG comes out blank. A plain hyphen fixes it.
    • resources.impact.dsp.rationale ("No DSP code.", octamod.module.json:104) needs more than 20 characters.
    • evidence/performance.json and the native comparison (npm run module:verify -- play-start --os <your 1.40C file>).
  5. Release notes. Players never had 0.1.0 to 0.1.9, so a single entry for the version you ship is enough. TESTING.md keeps the history.
  6. module-build.json has CRLF file sizes and hashes (see #931, point 8).
  7. Whichever of Play Start and Track Mutes goes in second has to name the other in conflicts and rebuild the packages, since both grow PERSONALIZE.

@repeat98

Copy link
Copy Markdown
Owner

Thanks! This one waits behind Track Mutes (#931), since one module PR is reviewed at a time until your first is published. What I wrote there about USB and PERSONALIZE applies here too; the red check is the PERSONALIZE clash with Mute Modes.

Keep the checkbox in the module instead of Mute Modes' battery word, drop the compatibility-script filter, and leave the PERSONALIZE tables until the shared row lands.

Co-authored-by: Cursor <cursoragent@cursor.com>
Current main is 5f28c9a. Packages were not rebuilt. Track Mutes is not on main yet, so this conflict id stays unresolved until that module lands. PERSONALIZE growth still waits on repeat98#1023.

Co-authored-by: jonathanwardle1992-beep <jonathanwardle1992-beep@users.noreply.github.com>
@repeat98

repeat98 commented Nov 5, 2026

Copy link
Copy Markdown
Owner

Hi, thanks for working through the list. The thumbnail, the DSP note, the single release note, and dropping both the module-compat.py edit and the battery word all look good.

Three things about the latest push:

  1. conflicts: ["track-mutes"]. That one's on me. I said whichever of the two goes in second names the other, but I should have added that it only works once the other one is on main. The gate only accepts ids that are already there, and that's what turns module-contract and module-paths-windows red now. Please take it out. It goes back in once Module/track mutes (MPC style)  #931 merges.
  2. Back to sdk/drafts/play-start/. You're right that a USB package can't carry the table growing today, and Octatrack base: PERSONALIZE rows as a base table (ot_personalize_rows), so table owners no longer pin package hashes #1023 changes exactly that: Play Start will contribute its PERSONALIZE row in runtime.json, and a USB package carries that. Until then, the library copy clashes with Mute Modes in modules:compat whatever else changes. In drafts it stays out of that gate and the package rebuild, so please move it back. It comes out of drafts together with its USB package once Octatrack base: PERSONALIZE rows as a base table (ot_personalize_rows), so table owners no longer pin package hashes #1023 is in.
  3. The package object. A package with only its version string changed doesn't match the new playstart.s, and octatrack-source rebuilds from source, so that check can't pass with it. Rebuild once after Octatrack base: PERSONALIZE rows as a base table (ot_personalize_rows), so table owners no longer pin package hashes #1023, with the Docker steps I described on Module/track mutes (MPC style)  #931, since the row moving into runtime.json changes the package anyway.

No need to merge main again before then. Play Start's full review still comes after Track Mutes.


Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants