Skip to content

chore: add esp32h2 to init chip options, bump to 0.1.0 - #15

Merged
HaoboGu merged 6 commits into
feat/layout-toolsfrom
chore/esp32h2-and-0.1.0
Aug 29, 2026
Merged

chore: add esp32h2 to init chip options, bump to 0.1.0#15
HaoboGu merged 6 commits into
feat/layout-toolsfrom
chore/esp32h2-and-0.1.0

Conversation

@HaoboGu

@HaoboGu HaoboGu commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

Stack 3/3 — base #14, review that one first.

rmk-template gained esp32h2 and esp32h2_split templates back in July, but rmkit init had no way to pick them — the chip list never got the entry.

Version goes to 0.1.0 rather than 0.0.22: the layout subcommands are a new surface, and the 0.0.x series predates the rmk-rs migration.

Release checklist once this stack lands (nothing here unblocks it on its own):

  1. publish rmk-config 0.7 / rynk / rynk-kle to crates.io
  2. switch the two git dependencies in Cargo.toml back to versions
  3. update rmk-template to the v0.9 schema, freeze the "0.8" entry in version-mapping.json to the last v0.8-compatible commit, and add a "0.9" entry
  4. release rmkit 0.1.0

rmk-template gained esp32h2 and esp32h2_split templates, but 'rmkit init'
had no way to pick them.

0.1.0 rather than 0.0.22: the layout subcommands are a new surface, and the
0.0.x series predates the rmk-rs migration.
HaoboGu and others added 5 commits August 17, 2026 11:17
…oml as-is

A `Cargo.toml` or `memory.x` sitting next to keyboard.toml replaces the
template's copy verbatim, so a project can add rmk features, pin
dependencies, or change the flash layout without touching the template
or the cloud build workflow. When the user provides Cargo.toml, rmkit no
longer adjusts the rmk feature list — keyboard.toml/feature mismatches
are reported by rmk-macro at build time.

Claude-Session: https://claude.ai/code/session_01YPLK88rkh5jqoHmRUdAvUN
Both `rmk-config` and `rynk-kle` were git dependencies, which blocks
`cargo publish` outright — 0.1.0 could not have shipped as it stood. Both
are on crates.io now (rmk-config 0.7.0, rynk-kle 0.2.0), so point at the
published versions. Record in the manifest why the rmk-config version is
coupled to the keyboard.toml schema: the config structs are
`deny_unknown_fields`, so they reject keys added by later versions and
the pin has to move with each rmk release.

Checking the chip list against rmk-template also turned up three options
that cannot work: `nrf52833`, `nrf52811` and `nrf52810` have no template
at all, so choosing one fails with "The specified chip/board does not
exist in the template repo". Unlike stm32 there is no family fallback,
so stop advertising them.

Also move off the yanked rust-ini 0.21.2.

Signed-off-by: Haobo Gu <haobogu@outlook.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmkit had no CI beyond cargo-dist's release workflow, and it hardcodes
assumptions about rmk that nothing verifies: the keyboard.toml schema it
parses, the cargo feature names it writes into generated projects, and
the chips it offers. Those rot silently whenever rmk moves — 89c4796 was
cleaning up exactly that kind of rot, long after the fact.

`ci.yml` runs fmt, clippy and a locked build on every PR, plus a
`publishable` job that rejects git dependencies in the lockfile and runs
`cargo publish --dry-run`. That trap already cost 0.0.22 a release cycle
and only surfaces at release time otherwise.

`scripts/check_upstream_drift.py` compares rmkit against rmk on two axes:

    release  crates.io rmkit  vs  crates.io rmk
    main     the working tree vs  rmk's main branch

They answer different questions — whether what users can install today
works with the RMK they can install today, versus whether the next
release will. The release axis reports but never gates, because nothing
in the working tree changes its verdict; the only fix is to cut a
release. Findings are cross-referenced between the axes so each one says
whether it is already fixed on main or still live.

It checks the rmk-config version requirement, the emitted feature names
against rmk's `[features]`, parsing of every `examples/use_config`
keyboard.toml with the real binary, the chip list against rmk-template,
and version-mapping.json coverage. Feature names and chip options are
extracted from rmkit's own source rather than copied into the script, so
the checker cannot quietly fall out of sync with what it checks; a
refactor that breaks an anchor raises instead.

`upstream-drift.yml` runs it daily, keeping one always-current issue open
while drift persists and closing it when it clears. It deliberately does
not run on pull requests: it can go red because upstream changed
overnight, which says nothing about the PR under review.

The version.rs change is the one rustfmt violation the new fmt gate
would otherwise trip on.

Signed-off-by: Haobo Gu <haobogu@outlook.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`rmkit layout` added a second dependency on the rmk workspace, and with
it a second way to drift: rynk-kle pins rmkit to a point in rmk's history
just as rmk-config does. Track both — the checker now takes a set of
crates instead of hardcoding rmk-config, reports each one's shipped
version, and says which capability breaks when one falls out of step.

Two wrinkles the tracking has to handle: rynk's members inherit
`version.workspace = true`, so resolve against the nearest ancestor
`[workspace.package]`, and older rmk releases predate rynk entirely, so a
missing crate is a finding rather than a crash.

Also run `cargo test` in CI, which the layout work made worth doing, and
apply rustfmt to the files the new fmt gate would otherwise reject. The
one non-mechanical part is a blank line in tests/cli.rs: without it
rustfmt reads the comment as a continuation of the preceding trailing
comment and indents it off the right margin.

Signed-off-by: Haobo Gu <haobogu@outlook.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmk-config 0.8.0 / rynk-kle 0.3.0 are what the published RMK 0.9.0
ships; rynk-kle 0.3.0 pins rmk-config =0.8.0, so the two move together.
Re-add nrf52833 to the chip options now that rmk-template's 0.9 update
carries its template — publish rmkit only after that PR merges.
@HaoboGu
HaoboGu merged commit 0f92af3 into master Aug 29, 2026
7 checks passed
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.

1 participant