Skip to content

Releases: ninoleto/companion-module-ninoleto-lrbridge

LRBridge Companion Module v0.4.2

Choose a tag to compare

@ninoleto ninoleto released this 18 Jul 01:30

Native Bitfocus Companion control for Adobe Lightroom Classic through LRBridge.

Version 0.4.2 adds a complete ready-to-use preset library while retaining the native Companion actions, live Lightroom slider variables, and context-aware feedback introduced in v0.4.1.

LRBridge Companion preset library

What this repository contains

This repository contains the Bitfocus Companion module for LRBridge.

It does not contain LRBridge itself.

LRBridge is a separate Windows application and Adobe Lightroom Classic plugin. LRBridge must run on the same computer as Lightroom Classic.

LRBridge repository: https://github.com/ninoleto/LRBridge

The communication flow is: Bitfocus Companion → LRBridge → Adobe Lightroom Classic

Feedback returns through: Adobe Lightroom Classic → LRBridge → Bitfocus Companion

What this module does

The LRBridge Companion Module lets users control Adobe Lightroom Classic from Bitfocus Companion using buttons, rotary encoders, pages, variables, feedbacks, browser surfaces, and supported hardware controllers.

Typical uses include:

  • Control Lightroom Develop sliders from Companion.
  • Use Loupedeck Live or Razer Stream Controller as a Lightroom controller.
  • Use Elgato Stream Deck buttons for Lightroom controls.
  • Use Companion rotary encoders for Lightroom sliders.
  • Display current Lightroom slider values on Companion buttons.
  • Refresh displayed values when another photo is selected in Lightroom.
  • Run Lightroom actions such as Auto Tone and Auto White Balance.
  • Control Lightroom from another computer over LAN.
  • Build custom Lightroom control pages without relying on keyboard shortcuts.

What is new in v0.4.2

Version 0.4.2 adds a complete preset library for supported Lightroom controls.

For every supported numeric Lightroom slider, the module provides four ready-to-use presets:

  • Rotary control
  • Decrease button
  • Reset button
  • Increase button

Rotary presets are configured so that:

  • Turning left decreases the slider by 1.
  • Turning right increases the slider by 1.
  • Pressing the rotary resets the slider.
  • The current Lightroom slider value is displayed on the button.

Additional preset improvements:

  • Presets are organized into individual sections for each Lightroom control.
  • Short labels are used to fit controls on smaller hardware buttons.
  • Rotary presets use automatic text sizing for longer control names.
  • Neutral slider values use a neutral background.
  • Positive values can display a blue background.
  • Negative values can display a red background.
  • Controls where positive and negative colors could be misleading remain visually neutral.
  • Auto Tone and Auto White Balance show an amber WAIT indication during the LRBridge cooldown period.
  • Preset descriptions include the Companion live-value variable code for users creating custom buttons.

This release also adds command presets for:

  • Lens Profile ON
  • Lens Profile OFF
  • Remove Chromatic Aberration ON
  • Remove Chromatic Aberration OFF

What to download

Normal Companion users should download:

ninoleto-lrbridge-0.4.2.tgz

Do not download the automatically generated Source code zip or Source code tar.gz unless you are a developer and want to build the module manually.

Required software

This module requires:

  • Bitfocus Companion
  • Adobe Lightroom Classic
  • LRBridge v0.5.1 or newer

LRBridge must be installed and running on the same computer as Adobe Lightroom Classic.

Normal user installation

  1. Download ninoleto-lrbridge-0.4.2.tgz from this release.
  2. Open Bitfocus Companion.
  3. Go to the Modules page.
  4. Click Import module package.
  5. Select ninoleto-lrbridge-0.4.2.tgz.
  6. Add a new connection named LRBridge.
  7. Enter the LRBridge host address and ports.

Default LRBridge ports:

  • Command API Port: 17891
  • Feedback / Web Controller Port: 17892

If Import module package is unavailable, Companion must be started with restricted module imports enabled.

Connection host guide

LRBridge must run on the same computer as Adobe Lightroom Classic.

Companion and LRBridge on the same computer

Use:

  • Host: 127.0.0.1
  • Command API Port: 17891
  • Feedback / Web Controller Port: 17892
  • Feedback Timing: Normal, recommended

Companion and LRBridge on different computers

Use the LAN IP address of the computer running LRBridge and Lightroom Classic.

Example setup:

  • Companion runs on a Linux computer.
  • Lightroom Classic and LRBridge run on a Windows computer.
  • The Windows computer has LAN address 192.168.1.55.

Companion connection settings:

  • Host: 192.168.1.55
  • Command API Port: 17891
  • Feedback / Web Controller Port: 17892
  • Feedback Timing: Normal, recommended

Do not use 0.0.0.0 as the Companion connection host.

0.0.0.0 is used by servers to listen on all available network interfaces. Companion should connect to 127.0.0.1, a real LAN address.

Confirmed working

  • Adjust Lightroom slider
  • Reset an individual Lightroom slider
  • Run LRBridge action
  • Auto Tone
  • Auto White Balance
  • Lightroom slider feedback variables
  • Immediate feedback after native Companion slider actions
  • Context-aware feedback refresh after changing photos
  • Ready-to-use rotary presets
  • Ready-to-use decrease, reset, and increase buttons
  • Imported .tgz module installation in Companion
  • Local network control

Current public action list

The module intentionally exposes only three action types:

  • Adjust Lightroom slider
  • Reset Lightroom slider
  • Run LRBridge action

The action list is deliberately kept small so the module remains safe and predictable during real Lightroom editing work.

Live slider feedback

The module provides Companion variables containing current Lightroom slider values.

Examples:

$(LRBridge:slider_exposure)
$(LRBridge:slider_contrast)
$(LRBridge:slider_temperature)
$(LRBridge:slider_tint)
$(LRBridge:slider_highlights)
$(LRBridge:slider_shadows)
$(LRBridge:slider_whites)
$(LRBridge:slider_blacks)
$(LRBridge:slider_texture)
$(LRBridge:slider_clarity)
$(LRBridge:slider_dehaze)
$(LRBridge:slider_vibrance)
$(LRBridge:slider_saturation)

HSL / Color Mixer examples:

$(LRBridge:slider_hueadjustmentred)
$(LRBridge:slider_hueadjustmentorange)
$(LRBridge:slider_hueadjustmentyellow)
$(LRBridge:slider_hueadjustmentgreen)
$(LRBridge:slider_hueadjustmentaqua)
$(LRBridge:slider_hueadjustmentblue)
$(LRBridge:slider_hueadjustmentpurple)
$(LRBridge:slider_hueadjustmentmagenta)

The exact connection prefix depends on the name of the LRBridge connection in Companion.

Use Companion's variable picker to insert the correct variable into a custom button.

Important feedback note

Use the native LRBridge Companion actions and presets when immediate slider feedback is required.

Native actions:

  • Adjust Lightroom slider
  • Reset Lightroom slider
  • Run LRBridge action

Generic HTTP actions can still send commands directly to LRBridge, but this module cannot detect when an unrelated Generic HTTP action is executed.

Because of this, Generic HTTP actions do not trigger the module's immediate feedback refresh.

For the best results, use the native actions and presets included with this module.

Context-aware photo feedback

LRBridge v0.5.1 provides a /context endpoint.

The module checks this endpoint to detect:

  • Selected photo changes
  • Lightroom module changes
  • Develop-state changes

When LRBridge reports a context change, the Companion module performs a one-time refresh of Lightroom slider variables.

This allows Companion, Loupedeck, Stream Deck, Razer Stream Controller, and browser pages to display the correct values after another photo is selected in Lightroom.

Constant background polling of every Lightroom slider remains disabled by default.

Feedback timing

The module provides three feedback timing options:

  • Fast, experimental
  • Normal, recommended
  • Safe, slower

Normal is recommended for most users.

Fast can occasionally read an older Lightroom value on slower computers or large Lightroom catalogs.

Safe waits longer and can be more reliable on slower systems or demanding catalogs.

Lens Profile and Chromatic Aberration limitation

LRBridge v0.5.1 does not provide authoritative feedback for the current state of these Lightroom checkboxes.

The presets therefore send explicit commands:

  • LENS ON sends value 1.
  • LENS OFF sends value -1.
  • CA ON sends value 1.
  • CA OFF sends value -1.

These buttons send commands only. They do not display the current Lightroom checkbox state.

Real checkbox-state feedback may be added in a future LRBridge release.

Intentional limitations

This release intentionally does not include:

  • Reset all sliders
  • Reset slider group
  • Keyboard shortcut sending
  • Direct Lightroom keyboard emulation
  • Operating-system-level Lightroom automation

Reset All and Reset Group are excluded because they can be risky during real Lightroom editing work.

Keyboard shortcuts should be handled separately, for example through Vicreo Hotkey, unless LRBridge later adds a safe Lightroom-specific shortcut system.

The module remains focused on safe Lightroom API control, useful presets, and reliable feedback through LRBridge.

Supported Companion surfaces

The module and presets can be used with:

  • Loupedeck Live
  • Razer Stream Controller
  • Elgato Stream Deck
  • Companion browser surfaces
  • Other Companion-compatible buttons and rotary encoders

The exact layout and visual appearance depend on the capabilities and button size of the selected Companion surface...

Read more

LRBridge Companion Module v0.4.1

Choose a tag to compare

@ninoleto ninoleto released this 08 Jul 01:11

LRBridge Companion Module v0.4.1

Context-aware Bitfocus Companion module for LRBridge.

This release adds native Bitfocus Companion control and live Lightroom slider feedback for LRBridge, a separate local HTTP bridge for controlling Adobe Lightroom Classic.

LRBridge repository:
https://github.com/ninoleto/LRBridge

This repository is not LRBridge itself. It is only the Bitfocus Companion module that sends commands to LRBridge and reads Lightroom feedback values from LRBridge.

The module is designed for Lightroom control workflows using Bitfocus Companion, Loupedeck Live, Razer Stream Controller, Elgato Stream Deck, encoders, button panels, browser devices, automation systems, scripts, and remote control setups.

What this module is

LRBridge Companion Module connects Bitfocus Companion to Adobe Lightroom Classic through LRBridge.

LRBridge runs on the same computer as Lightroom Classic and exposes local HTTP APIs.

This Companion module runs inside Bitfocus Companion and lets users build Lightroom control surfaces with buttons, encoders, pages, variables, and live feedback values.

Typical use cases:

  • Control Adobe Lightroom Classic from Bitfocus Companion.
  • Use Loupedeck Live or Razer Stream Controller as a Lightroom controller.
  • Use Stream Deck buttons for Lightroom slider and action control.
  • Use Companion encoders for Lightroom Develop sliders.
  • Show current Lightroom slider values as Companion variables.
  • Refresh slider values when changing photos in Lightroom.
  • Control Lightroom remotely over LAN or Tailscale.
  • Build custom Lightroom automation workflows without relying on keyboard shortcuts.

What to download

For normal Companion users, download:

ninoleto-lrbridge-0.4.1.tgz

Do not download Source code zip or Source code tar.gz unless you are a developer and want to build the module manually.

Required LRBridge version

This release requires:

LRBridge v0.5.1 or newer

LRBridge v0.5.1 adds the context and feedback behavior required by this Companion module.

Required LRBridge repository:
https://github.com/ninoleto/LRBridge

Normal user installation

  1. Download ninoleto-lrbridge-0.4.1.tgz from this release.
  2. Open Bitfocus Companion.
  3. Go to the Modules page.
  4. Click Import module package.
  5. Select the downloaded ninoleto-lrbridge-0.4.1.tgz file.
  6. Add a new connection named LRBridge.
  7. Set the LRBridge host and ports.

Default LRBridge Command API port: 17891
Default LRBridge Feedback / Web Controller API port: 17892

Connection host guide

LRBridge must run on the same computer as Adobe Lightroom Classic.

If Companion and LRBridge are running on the same computer, use:

Host: 127.0.0.1
Command API Port: 17891
Feedback / Web Controller Port: 17892
Feedback Timing: Normal, recommended

If Companion is running on another computer, use the LAN IP address of the computer running LRBridge:

Host: 192.168.1.x
Command API Port: 17891
Feedback / Web Controller Port: 17892
Feedback Timing: Normal, recommended

Example:

Companion on Linux/Ubuntu
LRBridge and Lightroom on Windows PC
Windows PC LAN IP: 192.168.1.55

Companion connection:

Host: 192.168.1.55
Command API Port: 17891
Feedback / Web Controller Port: 17892
Feedback Timing: Normal, recommended

Do not use 0.0.0.0 as the Companion connection host. 0.0.0.0 is used by servers to listen on all network interfaces. Clients should connect to 127.0.0.1 or to the real LAN IP address.

Confirmed working

  • Adjust Lightroom slider
  • Reset individual Lightroom slider
  • Run LRBridge action
  • Auto Tone / Auto White Balance actions
  • Slider feedback variables
  • Feedback update after native Companion slider actions
  • Context-aware slider refresh after changing photos in Lightroom
  • Imported .tgz module package installation in Companion

Current public action list

This release intentionally exposes only three action types:

  • Adjust Lightroom slider
  • Reset Lightroom slider
  • Run LRBridge action

The public action list is kept small on purpose so the module remains safe and predictable for real Lightroom editing workflows.

Live slider feedback

This release adds live slider feedback support through LRBridge.

The module provides Companion variables for Lightroom slider values, for example:

$(LRBridge:slider_exposure)
$(LRBridge:slider_contrast)
$(LRBridge:slider_temperature)
$(LRBridge:slider_tint)
$(LRBridge:slider_highlights)
$(LRBridge:slider_shadows)
$(LRBridge:slider_whites)
$(LRBridge:slider_blacks)
$(LRBridge:slider_texture)
$(LRBridge:slider_clarity)
$(LRBridge:slider_dehaze)
$(LRBridge:slider_vibrance)
$(LRBridge:slider_saturation)

HSL / Color Mixer Hue examples:

$(LRBridge:slider_hueadjustmentred)
$(LRBridge:slider_hueadjustmentorange)
$(LRBridge:slider_hueadjustmentyellow)
$(LRBridge:slider_hueadjustmentgreen)
$(LRBridge:slider_hueadjustmentaqua)
$(LRBridge:slider_hueadjustmentblue)
$(LRBridge:slider_hueadjustmentpurple)
$(LRBridge:slider_hueadjustmentmagenta)

Use Companion's variable picker to insert the exact variable name with the correct connection prefix.

Important feedback note

Use the native LRBridge Companion actions if you want immediate slider feedback.

Native actions:

  • Adjust Lightroom slider
  • Reset Lightroom slider
  • Run LRBridge action

Generic HTTP actions can still send commands to LRBridge, but this module cannot know when a generic HTTP action was pressed. Because of that, generic HTTP actions do not trigger immediate Companion variable refresh.

For best results, use the native LRBridge actions provided by this module.

Context-aware photo feedback

LRBridge v0.5.1 provides a /context endpoint.

This module polls /context to detect:

  • selected photo changes
  • Lightroom module changes
  • develop-state changes

When LRBridge reports a context change, this module refreshes slider feedback variables once.

This is designed for editing workflows where the user changes photo in Lightroom and wants Companion, Loupedeck, Stream Deck, or Razer Stream Controller pages to show the correct current slider values for the newly selected photo.

Constant background all-slider polling is disabled by default.

Feedback timing

The module exposes one simple timing option:

Feedback Timing

Available presets:

  • Fast, experimental
  • Normal, recommended
  • Safe, slower

Normal is recommended for most users.

Fast can read old Lightroom values on slower machines or heavy catalogs.

Safe is slower, but can be more reliable on heavier Lightroom catalogs or slower systems.

Expected LRBridge API routes

The module expects LRBridge v0.5.1 or newer to provide these routes.

Command API, usually port 17891:

/status
/context
/adjust?slider=Exposure&amount=1
/reset?slider=Exposure
/action?action=setAutoTone

Feedback / Web Controller API, usually port 17892:

/api/feedback/request?slider=Exposure
/api/feedback/value?slider=Exposure
/api/feedback/request-many?sliders=Exposure,Contrast
/api/feedback/all

Available sliders and actions depend on the installed LRBridge version.

Intentional limitations

This release intentionally does not include:

  • Reset all sliders
  • Reset slider group
  • Keyboard shortcut sending
  • Direct Lightroom keyboard emulation
  • OS-level Lightroom automation

Reset all and reset group actions are excluded on purpose because they can be risky in real Lightroom editing workflows.

Keyboard shortcuts should be handled separately, for example with Vicreo Hotkey, unless LRBridge later adds a safe Lightroom-focused shortcut system.

This module should remain focused on LRBridge API control and LRBridge feedback.

Developer installation

Developers can clone the repository and build manually:

corepack enable
corepack prepare yarn@4.17.0 --activate
yarn install
yarn build
yarn package

For Companion developer-module testing, place the module folder inside Companion's developer modules folder and set Companion's developer module path to the parent folder.

Example module folder:

/home/user/companion-module-dev/companion-module-ninoleto-lrbridge

Example developer module path:

/home/user/companion-module-dev

Notes for future maintainers and AI assistants

This repository contains the Bitfocus Companion module for LRBridge.

LRBridge itself is a separate local bridge application for controlling Adobe Lightroom Classic through HTTP:

https://github.com/ninoleto/LRBridge

Do not confuse this repository with the LRBridge app. This module only runs inside Bitfocus Companion and communicates with LRBridge.

Before changing this module, preserve these rules:

  1. Keep the public action list simple.
  2. Do not re-add reset all or reset group actions without a clear safety reason.
  3. Do not mix generic keyboard shortcuts into this module.
  4. Prefer LRBridge API actions over OS-level automation.
  5. Keep LRBridge itself as the source of truth for Lightroom behavior.
  6. Keep command API traffic on port 17891 by default.
  7. Keep feedback API traffic on port 17892 by default.
  8. Use native Companion actions for immediate feedback.
  9. Do not rely on generic HTTP actions for slider feedback.
  10. Keep background all-slider polling disabled by default.
  11. Prefer context-triggered one-shot refresh over constant polling.
  12. If new sliders or actions are added, update choices and documentation together.
  13. Test changes in Companion with a real LRBridge connection before release.

Preserve the design goal: this module should stay focused on safe Lightroom control through LRBridge, with simple actions, useful feedback variables, and minimal risky automation.

Keywords

Adobe Lightroom Classic control surface
Lightroom Companion module
Bitfocus Companion Lightroom
Loupedeck Lightroom control
Razer Stream Co...

Read more

v0.3.0 - Experimental Lightroom slider feedback

Choose a tag to compare

@ninoleto ninoleto released this 07 Jul 02:21

v0.3.0 - Experimental Lightroom slider feedback

This is an experimental feedback release of the LRBridge Bitfocus Companion module.

The module now supports native Lightroom slider value feedback from LRBridge.

What is new

  • Added Lightroom slider feedback variables
  • Added action-triggered feedback for native LRBridge slider actions
  • Added separate feedback/web controller port setting
  • Added default LRBridge command port 17891
  • Added default LRBridge feedback/web port 17892
  • Added Auto Tone / Auto White Balance cooldown after slider movement
  • Background all-slider feedback is disabled by default
  • Action feedback debounce default is 500 ms

Important

Feedback works only when buttons use the native LRBridge Companion actions.

Use:

  • LRBridge -> Adjust Lightroom slider
  • LRBridge -> Reset Lightroom slider
  • LRBridge -> Run LRBridge action

Generic HTTP buttons can still move Lightroom sliders, but they do not trigger this module's action-based feedback.

Recommended settings

  • LRBridge Host / IP: IP address of the Lightroom PC
  • Command API Port: 17891
  • Feedback / Web Controller Port: 17892
  • Background All Slider Feedback Poll Interval: 0
  • Action Feedback Debounce: 500 ms

Known limitation

When changing photos inside Lightroom, Companion will not automatically refresh all slider values yet unless background all-slider feedback is enabled.

A future LRBridge update should expose selected-photo change information, so the Companion module can refresh all slider values once when the selected photo changes.

Package

Normal users should download and install:

ninoleto-lrbridge-0.3.0.tgz

The source code archives are mainly for developers.

v0.1.0 - Initial LRBridge Companion module

Choose a tag to compare

@ninoleto ninoleto released this 05 Jul 03:37

Initial experimental Bitfocus Companion module for LRBridge.

This release adds native Bitfocus Companion control for LRBridge, a separate local HTTP bridge for controlling Adobe Lightroom Classic.

LRBridge repository:
https://github.com/ninoleto/LRBridge

This repository is not LRBridge itself. It is only the Companion module that sends HTTP commands to LRBridge.

What to download

For normal Companion users, download:

ninoleto-lrbridge-0.1.0.tgz

Do not download Source code zip or Source code tar.gz unless you are a developer and want to build the module manually.

Normal user installation

  1. Download ninoleto-lrbridge-0.1.0.tgz from this release.
  2. Open Bitfocus Companion.
  3. Go to the Modules page.
  4. Click Import module package.
  5. Select the downloaded ninoleto-lrbridge-0.1.0.tgz file.
  6. Add a new connection named LRBridge.
  7. Set the LRBridge host and port.

Default LRBridge API port: 17891

Connection host guide

LRBridge must run on the same computer as Adobe Lightroom Classic.

If Companion and LRBridge are running on the same computer, use:

Host: 127.0.0.1
Port: 17891

If Companion is running on another computer, use the LAN IP address of the computer running LRBridge:

Host: 192.168.1.x
Port: 17891

Example:

Companion on Linux/Zorin
LRBridge and Lightroom on Windows PC
Windows PC LAN IP: 192.168.1.11

Companion connection:

Host: 192.168.1.11
Port: 17891
Poll interval: 1000 ms

Do not use 0.0.0.0 as the Companion connection host. 0.0.0.0 is used by servers to listen on all network interfaces. Clients should connect to 127.0.0.1 or to the real LAN IP address.

Confirmed working

  • Adjust Lightroom slider
  • Reset individual Lightroom slider
  • Run LRBridge action

Current public action list

This first release intentionally exposes only three action types:

  • Adjust Lightroom slider
  • Reset Lightroom slider
  • Run LRBridge action

Expected LRBridge API routes

The module currently expects LRBridge to provide these API routes:

  • /status
  • /adjust
  • /reset
  • /action

Expected endpoint patterns:

/adjust?slider=Exposure&amount=1
/reset?slider=Exposure
/action?action=setAutoTone

Available sliders and actions depend on the installed LRBridge version.

Intentional limitations

This release intentionally does not include:

  • Reset all sliders
  • Reset slider group
  • Keyboard shortcut sending
  • Direct Lightroom keyboard emulation
  • Live slider value feedback

Reset all and reset group actions are excluded on purpose because they can be risky in real Lightroom editing workflows.

Keyboard shortcuts should be handled separately, for example with Vicreo Hotkey, unless LRBridge later adds a safe Lightroom-focused shortcut system.

Developer installation

Developers can clone the repository and build manually:

corepack enable
corepack prepare yarn@4.17.0 --activate
yarn install
yarn build

For Companion developer-module testing, place the module folder inside Companion's developer modules folder and set Companion's developer module path to the parent folder.

Example module folder:

/home/nino/companion-module-dev/companion-module-ninoleto-lrbridge

Example developer module path:

/home/nino/companion-module-dev

Notes for future maintainers and AI assistants

Before changing this module, preserve these rules:

  1. Keep the public action list simple.
  2. Do not re-add reset all or reset group actions without a clear safety reason.
  3. Do not mix generic keyboard shortcuts into this module.
  4. Prefer LRBridge API actions over OS-level automation.
  5. Keep LRBridge itself as the source of truth for Lightroom behavior.
  6. If new sliders or actions are added, update choices and documentation together.
  7. Test changes in Companion with a real LRBridge connection before release.

Status

Experimental v0.1.0 pre-release.