Skip to content

Releases: bitfocus/companion

Bitfocus Companion v4.2.2

28 Dec 22:19
6b5530a

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.2.2 - Release Notes

🐞 BUG FIXES

  • add keepalive interval for client websocket
  • improve emulator behaviour when websocket closes
  • revert: limit environment variables exposed to internal actions
  • only search labels in dropdown fields
  • unable to edit color inputs as hex
  • bluetooth support for blackmagic controllers
  • open help links in a new windows
  • isVisibleExpression clone error
  • loupedeck ct bad key map
  • sidebar dom issues
  • better suppress some common/excessive errors

Full Changelog: v4.2.1...v4.2.2

Bitfocus Companion v4.2.1

17 Dec 00:22
3edf7ec

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.2.1 - Release Notes

🐞 BUG FIXES

  • crash at launch on linux arm64 #3826
  • docs search urls incorrect #3824
  • expression variables not updating in ui #3825
  • emulator not showing pincode entry #3827
  • toggling never lock for surface not applying
  • support ajaz akp153 #3840
  • preserve additional environment variables for modules
  • limit environment variables exposed to internal actions
  • preserve sqlite wal when upgrading config #3835

Full Changelog: v4.2.0...v4.2.1

Bitfocus Companion v4.2.0

09 Dec 22:29
982c872

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.2.0 - Release Notes

This is a slightly smaller release than usual, focussing more on smaller improvements.

End of support for macOS 11

This version of Companion requires macOS 12 or later

Rebuilt Documentation

The Companion User Guide has been rewritten to use a new rendering system.

This allows us to host a new publicly available version of the documentation online which is versioned per release, as well as building it in a simplified form within Companion

The new tools allow us to do more with the documentation and will make it easier for us to keep up to date too!

new-docs

Improved Expression Editor

The expression editor input field has been rebuilt, making it easier to use with functionality you would expect from a code editor. This includes functions and keyword suggestions, and better handling of multi-line expressions.

expression-editor

And more

  • The old xkeys $(internal:tbar) and similar variables have been removed, and they should now be bound to custom variables in the config of each surface (#3716)
  • Require macos 12
  • Convert docs to docusaurus (#3741)
  • Rebuild emulator pincode locking
  • Add options to to restrict page access (#3736)
  • Enhanced expressions:
    • Improved expression editor (#3713)
    • More formatting for timestamp (#3668)
    • Handle negative value in msToTimestamp (#3651)
    • Support local variables in step expressions #3762
    • Expressions better handle undefined. add getVariable method #3451 (#3715)
  • Refined connection management:
    • Reworked connection config layout #3559 (#3569)
    • Rework changing connection versions, to remove need to disable module first
    • Add delete button to connection edit panel
    • Allow changing connection enabled state from config panel
    • Indicate connections missing modules in sidebar
  • Surface improvements:
    • Merge surface remote and discover pages (#3677)
    • Support resolve speed editor #3525
    • Support more variants of Mirabox 293S
    • Support for Mirabox Streamdock N3 (#3686)
    • Add repeating button-presses to contour-shuttle shuttle ring (#3492)
    • Improve vec-footpedal surface implementation
    • Support complex surface layouts over satellite api (#3611)
    • Support swipe to change page on Stream Deck + (#3721)
    • Support touch strip variables for Loupedeck Live (#3790)
  • Draw button 'error' state as a red warning triangle (#3675)
  • Remove deprecated bank field from tcp bank_bg_change message #2779
  • Include timestamps and source in module debug logs
  • Add version number variables #3714
  • Rework update check api, improving reliability

🐞 BUG FIXES

  • ember+ api issues with some clients
  • limit env vars passed to modules
  • improve error handling for module executeAction
  • "Sentry DSN not located" error in launcher (#3758)
  • Align the display name of surface_set_position with the UI terminology (#3761)
  • Avoid flooding modules with large objects, batch entity updates to resolve issues with large configs
  • preserve original types of custom variable values from osc and ember+ apis
  • improve version number handling for release vs beta builds
  • Page up button/Page down button don't set page-history (#3683)
  • Reduce frequency of pincode lock state logging (#3792)
  • Loupedeck Live pincode lock layout

Full Changelog: v4.1.6...v4.2.0

Bitfocus Companion v4.1.6

09 Dec 21:35
c3a478d

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.6 - Release Notes

🐞 BUG FIXES

  • Setting local variables for another control failing #3813
  • Unable to select module beta version for connection #3815
  • Suppress some logged errors about local variable names
  • Avoid spamming log with surface lock state messages #3792

Full Changelog: v4.1.5...v4.1.6

Bitfocus Companion v4.1.5

27 Nov 23:00
0dbab2a

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.5 - Release Notes

🐞 BUG FIXES

  • reordering pages not persisting #3727
  • Local variable actions not working on triggers #3788
  • support stream deck mini (discord edition) #3778
  • elgato plugin not handling multiple clients correctly #3775
  • elgato plugin not cleaning up on connection close #3767
  • suppress module SecurityWarnings in a better way

Full Changelog: v4.1.4...v4.1.5

Bitfocus Companion v4.1.4

24 Oct 19:41
4cb4314

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.4 - Release Notes

🐞 BUG FIXES

  • Expression variables not getting value immediately following import
  • Import page not scrolling correctly
  • Import single page unable to create new page
  • Unable to select any file to import on iOs #3676
  • Surfaces not remembering state when using lockout all
  • Failures when installing modules not being displayed
  • Missing tooltips in module versions table
  • Surfaces table upgrade icon position
  • Allow larger module archives
  • Fix some links within the getting started docs #3720
  • Performance improvements for module entity events

Full Changelog: v4.1.3...v4.1.4

Bitfocus Companion v4.1.3

09 Oct 09:09
02928d8

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.3 - Release Notes

🐞 BUG FIXES

  • Crash at startup when checking instance statuses

Full Changelog: v4.1.2...v4.1.3

Bitfocus Companion v4.1.2

08 Oct 21:55
4c7c0ba

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.2 - Release Notes

🐞 BUG FIXES

  • surface import/export errors with last_page_id or name #3650
  • stream deck mini not working with network dock #3682
  • don't assign elgato network dock an index in the surfaces table
  • very old contour shuttle pro v1 has an XKey vendor ID (#3658)
  • Template literal parsing in some expressions has unbound recursion #3655
  • disabled module count incorrect at startup #3679
  • connection status variables showing empty instead of disabled at startup #3652
  • Surface Groups should always show "Current Page" (#3685)
  • hide deprecated modules from add panel if no versions are installed #3684
  • Preset previewStyle is overridden by feedback (#3673)
  • ensure invalid version doesnt crash connections page
  • ios safari downloading exports with bad extension #3676
  • ensure modules being installed look like connections
  • ember+ api not including custom variables (#3681)

Full Changelog: v4.1.1...v4.1.2

Bitfocus Companion v4.1.1

22 Sep 16:19
d48898e

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.1 - Release Notes

🐞 BUG FIXES

  • Version warning showing in the header
  • Pages not being deleted properly during reset
  • Partial import resetting unexpected portions of the system #3625 #3639
  • Unable to drag some collections around
  • Unexpected error logged when aborting an internal: Wait action #3645
  • UI not loading in older Chromium (~121)
  • Ember+ api reporting hidden variables #3646
  • DEBUG-INSPECT not working for all modules

Full Changelog: v4.1.0...v4.1.1

Bitfocus Companion v4.1.0

16 Sep 13:46
094ffba

Choose a tag to compare

📦 Downloads available at

💵 Donate to the project at

Companion v4.1.0 - Release Notes

Ending support for macOS 11

This is the last version of Companion to support macOS 11. Starting with Companion 4.2 you will need to be running macOS 12 or later.

UI improvements

This release focuses on polishing the UI.

A major addition is "collections" — a way to group connections, triggers, or custom variables so you can manage or enable/disable them together. Collections make organising complex setups and toggling related items during events much easier.

connection-collections

We also made a number of small adjustments to improve clarity and flow, such as reworking table layouts in many places.

surfaces-list

These changes prioritise organisation and usability so you can work more quickly.

Local variables

On each button or trigger you can now define local variables. These variables are scoped to that single button or trigger — they do not exist outside of it. Local variables can be configured in a few ways:

  • Work like custom variables (can hold a static value and be changed by actions).
  • Be expression-driven (value is the result of an expression evaluated when needed).
  • Take the value of a feedback.

A key point: not all actions and feedbacks support local variables. Supported items will show a globe icon to indicate compatibility. We're working to broaden support; modules will add compatibility over time and further improvements are planned for 4.2.

local-variables

Improving support for expressions

Expressions let you build more complex configurations and transform data flowing into or out of connections. They allow you to normalise, combine, or conditionally modify values before they're consumed or sent.

The new Expression Variables page lets you define variables computed from expressions. These can be referenced wherever connection or custom variables are accepted; their value is calculated from the expression you provide.

expression-variables

Expression variables can:

  • Return a computed value from an expression.
  • Depend on other variables, feedbacks, connection state, or local variables defined on a button/trigger (so you can break complex logic into sub-expressions or take input from feedbacks).
  • Be used anywhere standard variables are used (actions, feedbacks, connection fields, etc.).

Notes:

  • Circular dependencies between variables are possible but discouraged; they will be rate-limited and can incur a notable performance cost.

Custom backup rules

Companion now supports custom backup rules, allowing you to schedule backups, and keep more restore points.

You can pick how often to run, where to store them, choose how many to keep (auto-pruned), and select the file format.

Tip: Saving backups to a synced folder (Dropbox, OneDrive, or similar), automatically keeps an off-site copy — great for extra safety and easy access across machines.

backup-settings

And more

  • Various UX improvements
    • Connections, triggers and custom variables can be added to 'collections' for grouping
    • Connections and triggers can be enabled/disabled by their collections
    • Connections, triggers and surfaces tables have had their contents rearranged to flow more naturally
    • Surfaces has been reworked to utilise a right panel for the selected surface.
    • Any right hand panels of pages have been refined
    • Version number has moved into the sidebar instead of header
    • Improve clarity of beta module versions
    • Layout improvements of some pages on mobile
    • Indicate whether custom-variable value is valid while typing
    • Improved layout of the launcher window, including a new settings window
    • Add filter/search to triggers page
    • Improved import page
    • Improve emulator list page
  • Added Expression Variables. Similar to Custom Variables, but their value is the result of an expression that executes when needed.
  • Add new 'while loop' action
  • Ability to define 'local variables' on buttons and triggers.
    • Not all actions or feedbacks support these, this will improve over time
  • Additional expression functions
    • arrayIndexOf & arrayLastIndexOf
  • Button step can be driven from an expression
  • Multiple connections from the Elgato Stream Deck software are now supported.
  • Support for Logitech MX Creative Console (buttons, not wheel)
  • Support for MiraBox HSV293S
  • Importing configs can be performed more granularly, without needing to reset everything
  • Variables for installation name
  • Expansion of the Ember+ api
    • Expose variables
    • Allow setting custom-variable values
    • Expose action recorder
  • Support for 'secret' field types in connection config
  • Attempt to keep screen awake in emulator/tablet views
  • Support for defining custom backup rules
  • Syslog support for logging
  • Improve docker image command syntax
  • UI can be hosted under a subpath when behind a reverse proxy
  • Replace the library used for communication with the UI
    • This improves the type safety and code quality of this api and makes it easier for us to work with.
    • There should be no notable impact to users
🐞 BUG FIXES
  • Surface page settings not being persisted correctly in exports
  • Load PNG button not always accepting files
  • Help tooltips not always showing
  • Some internal actions incorrectly claiming to support expressions
  • Some dropdown fields not updating their options when expected
  • Duplicating triggers first execution incorrect
  • Improve drag and drop behaviour in action/feedback lists
  • Sanitise page ids at startup, to ensure the config is sane
  • Better handling when no compatible versions of a module are available to be installed

Full Changelog: v4.0.3...v4.1.0