Skip to content

feat(desktop): Conveyor cross-platform packaging#5134

Draft
jamesarich wants to merge 3 commits intomainfrom
feat/conveyor-packaging
Draft

feat(desktop): Conveyor cross-platform packaging#5134
jamesarich wants to merge 3 commits intomainfrom
feat/conveyor-packaging

Conversation

@jamesarich
Copy link
Copy Markdown
Collaborator

Summary

Replaces the 4-OS matrix desktop build with Conveyor — a single Linux runner that cross-compiles macOS, Windows, and Linux packages in ~52 seconds.

Relates to #5132 (desktop ship-readiness metadata).

What changed

File Change
desktop/conveyor.conf Main Conveyor config (app metadata, icons, JVM modules, entitlements, upgrade UUID)
desktop/ci.conveyor.conf CI overrides (production URL, Apple notarization env vars)
desktop/defaults.conf.example Template for local signing keys
desktop/build.gradle.kts Added dev.hydraulic.conveyor plugin v2.0
settings.gradle.kts Added Conveyor Maven repo
.github/workflows/release.yml Single Conveyor job replaces 4-OS matrix
.gitignore Ignore generated Conveyor artifacts

Output artifacts (from single ubuntu-24.04 runner)

  • macOS: aarch64 + amd64 zips (~93 MB each)
  • Windows: amd64 zip + MSIX + installer exe (~84 MB)
  • Linux: amd64 tarball + Debian package (~75–89 MB)
  • Auto-generated download.html with OS detection
  • Sparkle appcasts for macOS auto-updates

New secrets (optional, for signing/notarization)

Secret Purpose
CONVEYOR_SIGNING_KEY Conveyor root signing key
APPLE_TEAM_ID Apple Developer Team ID
APPLE_ID Apple ID for notarization
APPLE_APP_SPECIFIC_PASSWORD App-specific password for notarization

Testing

jamesarich and others added 3 commits April 14, 2026 13:13
…port

Add charting, detail card display, and CSV export for up to 8 1-Wire
temperature sensor channels from the environment_metrics.one_wire_temperature
repeated field.

- EnvironmentMetricsState: ONE_WIRE_TEMP_1..8 enum entries with getOrNull()
  access (safely returns null when firmware does not populate the field)
- EnvironmentCharts: LEGEND_DATA_4 with per-channel labels and distinct colours
- CommonCharts: LegendData.labelOverride for per-instance legend labels
- EnvironmentMetrics: OneWireTemperatureDisplay composable in the detail card
- EnvironmentMetrics component: inline 1-Wire chip display with temp formatting
- MetricsViewModel: Fahrenheit conversion for one_wire_temperature in CSV export

No version gating needed — the proto field defaults to an empty list on older
firmware, so the UI elements are naturally hidden when no data is reported.
Replace hardcoded one-wire temperature indices (0-7) with a loop over
ONE_WIRE_SENSOR_COUNT constant to fix CyclomaticComplexMethod and
MagicNumber detekt violations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the 4-OS matrix desktop build in release.yml with a single
Conveyor runner on ubuntu-24.04 that cross-compiles all platform
packages (macOS, Windows, Linux) from one machine.

- Add Conveyor Gradle plugin (dev.hydraulic.conveyor v2.0)
- Add conveyor.conf with app metadata, icons, JVM modules, entitlements
- Add ci.conveyor.conf for CI overrides (production URL, Apple notarization)
- Add defaults.conf.example template for local signing keys
- Update release.yml: single Conveyor job replaces 4-OS matrix
- Add 4 optional secrets: CONVEYOR_SIGNING_KEY, APPLE_TEAM_ID,
  APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD
- Add Conveyor Maven repo to settings.gradle.kts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions bot added enhancement New feature or request repo Repository maintenance needs-review labels Apr 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request needs-review repo Repository maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant