Skip to content

feat: surface gauge support#323

Open
Julusian wants to merge 1 commit into
mainfrom
feat/surface-gauge-leds
Open

feat: surface gauge support#323
Julusian wants to merge 1 commit into
mainfrom
feat/surface-gauge-leds

Conversation

@Julusian

@Julusian Julusian commented Jul 14, 2026

Copy link
Copy Markdown
Member

partner to bitfocus/companion#4314

Summary by CodeRabbit

  • New Features

    • Added support for addressable LED configurations in surface layouts and control drawing.
    • LED support is now detected based on the connected Companion version.
    • Unsupported LED features are automatically omitted for compatible operation.
  • Bug Fixes

    • Prevented unsupported manifest features from being sent to older Companion versions.
  • Tests

    • Added coverage for LED preservation, removal, capability handling, and input immutability.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​companion-surface/​host@​1.3.3 ⏵ 1.3.3-nightly-main-20260713-213540-a42afb978 +11007695 +2100

View full report

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7b8bb1c6-886b-4c0c-b2a4-cba8b41b3bab

📥 Commits

Reviewing files that changed from the base of the PR and between 36767c3 and cc0aa39.

⛔ Files ignored due to path filters (2)
  • satellite/src/generated/SurfaceManifestSchema.ts is excluded by !**/generated/**
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (10)
  • eslint.config.mjs
  • package.json
  • satellite/src/__tests__/translateSchema.test.ts
  • satellite/src/client/client.ts
  • satellite/src/surface-manager.ts
  • satellite/src/surface-thread/child-handler.ts
  • satellite/src/surface-thread/entrypoint.ts
  • satellite/src/surface-thread/host-context.ts
  • satellite/src/surface-thread/ipc-types.ts
  • satellite/src/translateSchema.ts

📝 Walkthrough

Walkthrough

Changes

Adds addressable LED support across manifest translation, Companion capability negotiation, client draw events, and surface-plugin IPC. Unsupported manifests are filtered, LED payloads are decoded for plugins, and related lint and package resolution settings are updated.

Addressable LED support

Layer / File(s) Summary
Manifest LED translation and filtering
satellite/src/translateSchema.ts, satellite/src/__tests__/translateSchema.test.ts
LED preset configuration is translated into manifests, unsupported LED fields are removed immutably, and both behaviors are tested.
Companion capability and state handling
satellite/src/client/client.ts
The client negotiates LED support, parses KEY-STATE LED data, exposes the capability, and filters manifests before registration.
Capability propagation and plugin drawing
satellite/src/surface-manager.ts, satellite/src/surface-thread/*
LED capability flags and base64 LED draw payloads flow through child initialization and are decoded before plugin drawing.
Lint and package resolution
eslint.config.mjs, package.json
Vitest configuration files are ignored by ESLint, and Companion Surface nightly builds are pinned through resolutions.

Poem

LEDs wake in RGB light,
Manifests carry colors bright,
Signals cross the process stream,
Buffers glow like a tiny dream,
Plugins draw the shining sight.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the PR’s stated goal of adding surface gauge support, which is the main feature implemented across the client, surface, and schema layers.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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