Skip to content

Consume valar-core + scheduling as remote packages (retire self-contained core) - #33

Merged
daniel-frenkel merged 3 commits into
mainfrom
rewire/valar-core
Jul 20, 2026
Merged

daniel-frenkel merged 3 commits into
mainfrom
rewire/valar-core

Conversation

@daniel-frenkel

Copy link
Copy Markdown
Member

Rewires the Ropener firmware to build on the shared valar-core instead of carrying its own copy of the board core. Ropener now pulls valar-core + scheduling from Valar-Systems/valar-motion as remote packages (pinned to tag v0.2.0) and keeps only the Ropener product layer. Fix a board bug once in valar-core and every product inherits it.

What changed

  • Removed firmware/common/ropener-core.yaml (1,785 lines) and the old per-board wrappers.
  • firmware/common/ropener-product.yaml — the product layer: cover, sensorless homing, two-button gesture UI, gear/distance math, and the schedule_open/schedule_close scripts the scheduling mixin calls. Renames core's shared entities via !extend so field units keep their existing Home Assistant entity_ids (IRUN value, SGTHRS value, TCOOLTHRS value, SG_RESULT Sensor, TSTEP Sensor, WiFi Reset).
  • firmware/VAL3000|VAL3100/Ropener-*.yml — thin board wrappers pinning valar-core + scheduling at v0.2.0; fw_version → 2.7.0.
  • .github/workflows/build-release.yml — builds every board and, on a tag, attaches factory.bin + ota.bin + ota.bin.md5 with the stable Ropener-VAL3000 / Ropener-VAL3100 asset names.

Regression gate (both boards)

  • 0 entity regressions — all original entities preserved (28 on VAL3100, 27 on VAL3000), + 7 new shared diagnostics from core (Restart, WiFi Signal, Uptime, ESP Internal Temperature, IP/SSID/MAC).
  • OTA button URL byte-identical — https://github.com/Valar-Systems/Ropener/releases/latest/download/Ropener-VAL3100.ota.bin — so field units keep self-updating from the same place, and release asset names are unchanged.
  • Compiles green on the real ESP-IDF toolchain against valar-motion v0.2.0, and verified working on physical hardware.

After merge

  • Cut Ropener v2.7.0 → build-release.yml attaches the Ropener-VAL3x00 binaries; existing units OTA-update safely (names + URL preserved).
  • Follow-up: drop rewire/valar-core from the workflow's branch triggers (present only to verify pre-merge).

🤖 Generated with Claude Code

https://claude.ai/code/session_01XpCz2RvuxV5uV8bFwCEpkL


Generated by Claude Code

claude added 3 commits July 20, 2026 21:26
…anch)

Prove-out of the shared-core rewire (not for merge yet). Replaces Ropener's
self-contained board core with the shared valar-core + scheduling packages from
Valar-Systems/valar-motion, keeping only the Ropener product layer
(cover, sensorless homing, two-button gesture UI, gear math, and the
schedule_open/schedule_close scripts the scheduling mixin calls).

- firmware/common/ropener-product.yaml — the product layer; renames core's
  shared entities via !extend so field units keep their HA entity_ids
  (IRUN value, SGTHRS value, TCOOLTHRS value, SG_RESULT Sensor, TSTEP Sensor,
  WiFi Reset)
- firmware/VAL3000|VAL3100/Ropener-*-rewired.yml — board wrappers pulling the
  remote packages (pinned to a valar-motion commit) + the product layer
- .github/workflows/verify-rewire.yml — compiles both on GitHub runners

Regression gate (esphome config, both boards): 0 entity regressions, all
original entities preserved, +7 new core diagnostics; OTA button URL and asset
names byte-identical (Ropener-VAL3x00, self-updating from the Ropener repo).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpCz2RvuxV5uV8bFwCEpkL
Make the valar-core rewire the canonical Ropener firmware:
- delete firmware/common/ropener-core.yaml and the old per-board wrappers
- Ropener-VAL3000.yml / Ropener-VAL3100.yml now pull valar-core + scheduling
  from Valar-Systems/valar-motion pinned to tag v0.2.0, + ropener-product.yaml
- bump fw_version 2.6.4 -> 2.7.0
- replace the verify workflow with build-release.yml: builds every board and,
  on a tag, attaches factory.bin + ota.bin + ota.bin.md5 with the stable
  Ropener-VAL3000 / Ropener-VAL3100 asset names (the md5 the OTA button needs)

Verified on real hardware against the identical core commit (v0.2.0 = bc869f7):
0 entity regressions, OTA button URL + asset names unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpCz2RvuxV5uV8bFwCEpkL
@daniel-frenkel
daniel-frenkel merged commit eb8351e into main Jul 20, 2026
4 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.

2 participants