# Menu Bar App

The Nobe LutBake menu bar app lives in the macOS menu bar and provides a convenient interface for capturing LUTs from DaVinci Resolve.

<figure><img src="/files/8h6OsHzZKT1fXTVidanL" alt="" width="300"><figcaption><p>Menu bar popover showing plugin status and capture button</p></figcaption></figure>

## Features

* **Global keyboard shortcut** — Trigger LUT capture from any app (default: `Cmd+Shift+L`).
* **Plugin status** — Shows whether the OFX plugin is installed and detected.
* **Capture button** — Click to capture a LUT without using the keyboard shortcut.
* **Settings** — Configure output path, LUT size, filename templates, and more.
* **Launch at login** — Optionally starts automatically when you log in (via macOS Login Items).
* **Auto updates** — Automatic updates keep you on the latest version.

## Settings

### General

<figure><img src="/files/P49FLEE0ak5mM0HGWJUE" alt="" width="400"><figcaption><p>General settings tab</p></figcaption></figure>

* **Output folder** — Directory where `.cube` files are saved.
* **Filename template** — Supports placeholders for auto-incrementing filenames.
* **Node label** — Label of the HALD Generator node the app should toggle (default: `HALD`). On DaVinci Resolve 20+, nodes are also discovered automatically via `GetToolsInNode()`, so labeling is optional.
* **Node graph** — Choose between Clip, Timeline, Group Pre-Clip, or Group Post-Clip. The app scans all graphs in processing order (Pre-Clip → Clip → Post-Clip → Timeline) to find your LutBake nodes, so this setting is mainly used as a hint for older Resolve versions.
* **Resolve path** — Path to the DaVinci Resolve application.
* **Python Interpreter** — By default, the app uses **System python3**. An optional **Use fuscript (advanced)** toggle switches to Resolve's bundled interpreter for compatibility troubleshooting in restricted environments.
* **Scan for spatial effects before capture** — When enabled, the app scans for spatial effects between your two LutBake nodes before each capture. On DaVinci Resolve 20+, it uses the `GetToolsInNode()` API to identify 40+ known spatial tools (blur, sharpen, grain, noise reduction, Power Windows, and more) across all node graphs. Unknown or third-party plugins are flagged via heuristic keyword matching. On older Resolve versions, it falls back to node label matching.
* **Warn on suspected spatial corruption** — When enabled, shows a post-capture warning if the extracted LUT data shows mathematical signs of spatial corruption (e.g., from effects that were active during capture).
* **Refresh LUT list after capture** — When enabled, automatically calls Resolve's `RefreshLUTList()` after saving a LUT so it appears immediately in Resolve's 3D LUT dropdown menus without needing to manually click "Update Lists". Disabled by default. Available on both macOS and Windows (0.28.0+).

#### Spatial effects warning dialog

When the preflight scan detects spatial effects, a dialog shows the detected tools grouped by confidence level:

* **Known spatial effects** — tools confirmed to corrupt LUT baking (e.g., Gaussian Blur, Power Windows, Film Grain).
* **Possible spatial effects** — unknown tools matched by heuristic keywords.

The dialog offers three options (two on Resolve < 20):

* **Auto-Disable & Capture** (Resolve 20+ only) — temporarily disables the detected spatial nodes, captures the LUT, and restores your original grade via version rollback.
* **Continue Anyway** — captures without disabling anything.
* **Cancel** — aborts the capture.

A **"Don't warn again this session"** checkbox suppresses the warning for all subsequent captures until the app is restarted.

### Presets

Presets let you save and recall complete sets of capture settings — output folder, filename template, node label, LUT size, and more.

* **Switching presets** — Selecting a preset fills only empty fields with preset values; existing field values are preserved (0.29.0+).
* **Update Preset** — After editing settings, click **Update Preset** to save the current field values back to the active preset (0.29.0+).
* **Editing fields** — Changing Show, IDT, ODT, or Note fields no longer deselects the active preset (0.29.0+).
* **Template placeholders** — Filename template placeholders are case-insensitive: `{IDT}` and `{idt}` are equivalent (0.29.0+).

### LUT Settings

<figure><img src="/files/HUqa4ZrQ2wB5B7fVYBkR" alt="" width="400"><figcaption><p>LUT settings tab</p></figcaption></figure>

* **LUT size** — Override the plugin's LUT size setting (17, 33, 64, 65, or 100). Use 64 with HALD 8 or 100 with HALD 10 for zero interpolation error.
* **HALD level** — Override the plugin's HALD level.
* **Title** — Metadata written into the `.cube` file header.
* **Description** — Additional metadata for the `.cube` file.
* **Decimal precision** — Number of decimal places in the `.cube` output (1-16, default 10).
* **Clamp output to 0..1** — Clamps LUT output values to `[0, 1]` before writing. Enabled by default for broad compatibility.

### Keyboard Shortcuts

<figure><img src="/files/5WbEEmfxGcyJ01pv8ytC" alt="" width="400"><figcaption><p>Keyboard shortcuts tab</p></figcaption></figure>

Configure the global keyboard shortcut for LUT capture. The shortcut works system-wide, even when Resolve is in the foreground.

## DRX Still Export

When enabled, the app automatically grabs a still from the current frame after each LUT capture and exports it as a `.drx` file in the same output directory. This is useful for archiving a visual reference alongside each LUT.

{% hint style="info" %}
Resolve adds its own suffix to DRX filenames (e.g., `LUT_001_1.1.3.PRE.drx`). The app cannot control this naming convention.
{% endhint %}

## Launch at Login

Nobe LutBake can register itself as a macOS login item so it starts automatically when you log in. This is configured during the [setup wizard](/nobe-lutbake/first-launch-wizard.md) on the final "Ready" step, or can be managed in **macOS System Settings > General > Login Items**.

The app uses macOS `SMAppService` — no background helper or daemon is involved. The login item appears under your account's **Login Items** in System Settings.

## OFX Plugin Installation

The app can install the OFX plugin with a single click. The plugin is linked to the app bundle, so updating the app automatically updates the plugin as well.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.timeinpixels.com/nobe-lutbake/menu-bar-app.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
