Skip to content

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

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

feat(desktop): Conveyor cross-platform packaging#5134
jamesarich wants to merge 3 commits into
mainfrom
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
@github-actions github-actions Bot added the Stale label May 15, 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 Stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant