Skip to content

feat: User Edit operations on AdLib Pieces and Actions - #1790

Merged
jstarpl merged 9 commits into
Sofie-Automation:mainfrom
nrkno:feat/adlib-user-edits
Aug 17, 2026
Merged

feat: User Edit operations on AdLib Pieces and Actions#1790
jstarpl merged 9 commits into
Sofie-Automation:mainfrom
nrkno:feat/adlib-user-edits

Conversation

@jstarpl

@jstarpl jstarpl commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

About the Contributor

This pull request is posted on behalf of the NRK.

Type of Contribution

This is a:

Feature

Current Behavior

While Segments, Parts and Pieces can have User Edit actions and properties, AdLib Pieces and Actions do not.

New Behavior

AdLib Pieces and Actions can also be edited using the Properties panel.

Testing

  • I have added one or more unit tests for this PR
  • I have updated the relevant unit tests
  • No unit test changes are needed for this PR

Affected areas

Breaking change: This PR affects the "User Edits" functionality and tightens the API this functionality uses to integrate with the Blueprints.

Time Frame

Not urgent, but we would like to get this merged into the in-development release.

Other Information

Status

  • PR is ready to be reviewed.
  • The functionality has been tested by the author.
  • Relevant unit tests has been added / updated.
  • Relevant documentation (code comments, system documentation) has been added / updated.

@jstarpl
jstarpl requested a review from tsorbo July 6, 2026 11:48
@jstarpl jstarpl added the Contribution from NRK Contributions sponsored by NRK (nrk.no) label Jul 6, 2026
@coderabbitai

coderabbitai Bot commented Jul 6, 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 Plus

Run ID: 3ec4c076-6909-404b-828a-97a49a513a0b

📥 Commits

Reviewing files that changed from the base of the PR and between 6f31b1f and 62355ea.

📒 Files selected for processing (28)
  • packages/blueprints-integration/src/action.ts
  • packages/blueprints-integration/src/api/studio.ts
  • packages/blueprints-integration/src/documents/piece.ts
  • packages/blueprints-integration/src/documents/pieceGeneric.ts
  • packages/blueprints-integration/src/ingest.ts
  • packages/blueprints-integration/src/triggers.ts
  • packages/corelib/src/TranslatableMessage.ts
  • packages/corelib/src/dataModel/AdLibPiece.ts
  • packages/corelib/src/dataModel/AdlibAction.ts
  • packages/corelib/src/dataModel/Piece.ts
  • packages/corelib/src/worker/ingest.ts
  • packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md
  • packages/job-worker/src/blueprints/context/lib.ts
  • packages/job-worker/src/blueprints/postProcess.ts
  • packages/webui/src/client/lib/forms/SchemaFormOneOfButtons/OneOfButtons.tsx
  • packages/webui/src/client/lib/rundown.ts
  • packages/webui/src/client/styles/contextMenu.scss
  • packages/webui/src/client/ui/RundownView.tsx
  • packages/webui/src/client/ui/RundownView/DragContextProvider.tsx
  • packages/webui/src/client/ui/RundownView/RundownDetachedShelf.tsx
  • packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx
  • packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx
  • packages/webui/src/client/ui/Shelf/AdLibPanel.tsx
  • packages/webui/src/client/ui/Shelf/ExternalFramePanel.tsx
  • packages/webui/src/client/ui/Shelf/Shelf.tsx
  • packages/webui/src/client/ui/Shelf/ShelfContextMenu.tsx
  • packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx
  • packages/webui/src/client/ui/UserEditOperations/__tests__/PropertiesPanel.test.tsx
💤 Files with no reviewable changes (1)
  • packages/blueprints-integration/src/documents/piece.ts
🚧 Files skipped from review as they are similar to previous changes (26)
  • packages/blueprints-integration/src/api/studio.ts
  • packages/webui/src/client/ui/RundownView.tsx
  • packages/webui/src/client/ui/Shelf/AdLibPanel.tsx
  • packages/webui/src/client/styles/contextMenu.scss
  • packages/webui/src/client/ui/Shelf/Shelf.tsx
  • packages/blueprints-integration/src/triggers.ts
  • packages/webui/src/client/ui/RundownView/DragContextProvider.tsx
  • packages/job-worker/src/blueprints/context/lib.ts
  • packages/webui/src/client/lib/rundown.ts
  • packages/corelib/src/dataModel/AdlibAction.ts
  • packages/corelib/src/dataModel/Piece.ts
  • packages/blueprints-integration/src/documents/pieceGeneric.ts
  • packages/webui/src/client/ui/Shelf/ShelfContextMenu.tsx
  • packages/corelib/src/worker/ingest.ts
  • packages/corelib/src/dataModel/AdLibPiece.ts
  • packages/blueprints-integration/src/ingest.ts
  • packages/webui/src/client/ui/RundownView/RundownDetachedShelf.tsx
  • packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx
  • packages/webui/src/client/ui/UserEditOperations/tests/PropertiesPanel.test.tsx
  • packages/blueprints-integration/src/action.ts
  • packages/webui/src/client/ui/Shelf/ExternalFramePanel.tsx
  • packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md
  • packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx
  • packages/job-worker/src/blueprints/postProcess.ts
  • packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx
  • packages/corelib/src/TranslatableMessage.ts

Included review availability: Your plan includes up to 2 reviews per rolling hour; 0 remain after this review.


Walkthrough

Introduces user-editable properties across blueprint contracts, core data models, job-worker conversion, and webui selection and editing flows. It also adds typed operation targets and updates several independent type, form, ingest, and styling declarations.

Changes

User Editing Properties Feature

Layer / File(s) Summary
Blueprint contracts and user-operation targets
packages/blueprints-integration/src/action.ts, packages/blueprints-integration/src/documents/pieceGeneric.ts, packages/blueprints-integration/src/ingest.ts, packages/blueprints-integration/src/triggers.ts, packages/documentation/docs/.../manipulating-ingest-data.md
Adds user-edit fields, defines target-specific operation IDs, re-exports DeviceActions, and updates ingest documentation.
Core data model updates
packages/corelib/src/TranslatableMessage.ts, packages/corelib/src/dataModel/*
Adds user-edit fields to core models and centralizes blueprint translation namespace generation.
Blueprint conversion and post-processing
packages/job-worker/src/blueprints/context/lib.ts, packages/job-worker/src/blueprints/postProcess.ts
Translates and propagates user-edit fields through pieces and adlib actions.
AdLib selection resolution
packages/webui/src/client/lib/rundown.ts, packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx
Resolves AdLib and rundown-baseline entities and exposes their user-edit metadata.
Shelf editing entry point
packages/webui/src/client/ui/RundownView.tsx, packages/webui/src/client/ui/RundownView/RundownDetachedShelf.tsx, packages/webui/src/client/ui/Shelf/*
Wires user-edit settings and adds the conditional Edit Piece Properties menu action.
Typed operation target wiring
packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx, packages/webui/src/client/ui/RundownView/DragContextProvider.tsx, packages/webui/src/client/ui/Shelf/ExternalFramePanel.tsx
Builds discriminated segment, part, and piece targets using external IDs.
Properties panel editing flow
packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx, packages/webui/src/client/ui/UserEditOperations/__tests__/PropertiesPanel.test.tsx
Centralizes target derivation for edit operations and adds AdLib action test coverage.

Maintenance Changes

Layer / File(s) Summary
Type, form, and styling updates
packages/blueprints-integration/src/api/studio.ts, packages/corelib/src/worker/ingest.ts, packages/webui/src/client/lib/forms/.../OneOfButtons.tsx, packages/webui/src/client/styles/contextMenu.scss
Adds Studio type aliases, corrects the bucket ingest type, updates value synchronization, and adjusts SVG alignment.

Estimated code review effort: 4 (Complex) | ~60 minutes

Merge Risk: ⚪ Minimal · up to 62355

This change adds editing support for AdLib Pieces and Actions; no actionable merge-blocking risk remains beyond normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant RundownView
  participant Shelf
  participant SelectedElementsContext
  participant PropertiesPanel
  participant MeteorCall

  RundownView->>Shelf: enableUserEdits, onEditProps
  Shelf->>SelectedElementsContext: selected element
  SelectedElementsContext->>SelectedElementsContext: resolve piece or AdLib entity
  SelectedElementsContext-->>PropertiesPanel: selectedObjects, type, rundownId
  PropertiesPanel->>PropertiesPanel: getTargetForSelectedElement
  PropertiesPanel->>MeteorCall: executeUserChangeOperation(target, change)
Loading

Suggested reviewers: tsorbo

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 37.04% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description check ✅ Passed The description clearly explains the feature, current and new behavior, affected areas, testing, and documentation updates.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding User Edit operations for AdLib Pieces and Actions.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@codecov

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx (2)

306-370: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Set lastValidSmallestElement.current before relying on the fallback — the ref is only ever read here, so the fallback never triggers and transient lookup misses still clear the panel. Update it whenever piece/adLibPiece/rundownBaselineAdLibPiece/adLibAction/rundownBaselineAdLibAction resolves to a document.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx` around
lines 306 - 370, The fallback in SelectedElementsContext’s useEffect never works
because lastValidSmallestElement.current is only read, not updated, so transient
lookup misses still clear the selected panel. Update
lastValidSmallestElement.current whenever one of the document lookups in the
Tracker.autorun block resolves (piece, adLibPiece, rundownBaselineAdLibPiece,
adLibAction, or rundownBaselineAdLibAction), and keep the existing fallback
switch so it can reuse the last valid document on temporary misses.

308-370: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Resolve partInstance selection through the parent part. SelectedElement.elementId is a PartInstanceId in this branch, but UIParts.findOne looks up PartIds, so selectedObjects.part stays undefined and the partInstance edit props path never gets data.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx` around
lines 308 - 370, The selection lookup in SelectedElementsContext’s useEffect is
using selectedElement?.elementId directly as a UIParts key for the partInstance
branch, but that value is a PartInstanceId and must be resolved through the
parent part first. Update the logic around the piece/adLib lookups and the
UIParts.findOne call so the part is fetched via the selected item’s
startPartId/partId relationship rather than the instance id, and then derive the
segment from that resolved part. This should allow selectedObjects.part to
populate correctly for the partInstance path.
packages/webui/src/client/ui/Shelf/ShelfContextMenu.tsx (1)

173-225: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Re-check the discriminant before accessing context.details.adLib. pieceHasEditableContent is only a boolean, so it doesn’t narrow context here; use an explicit context?.type === ContextType.ADLIB guard in this branch, or make the helper a type predicate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/webui/src/client/ui/Shelf/ShelfContextMenu.tsx` around lines 173 -
225, The `pieceHasEditableContent` boolean in `ShelfContextMenu` does not narrow
`context`, so the `enableUserEdits && pieceHasEditableContent` branch still
accesses `context.details.adLib` unsafely. Update the `MenuItem`/edit-properties
block to re-check `context?.type === ContextType.ADLIB` before reading
`context.details.adLib`, or change `hasUserEditableContent` to a type predicate
so the `ShelfContextMenu` render path is properly narrowed.
♻️ Duplicate comments (1)
packages/webui/src/client/lib/rundown.ts (1)

43-44: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Same /src/ vs /dist/ import path concern as in SelectedElementsContext.tsx.

Both new imports resolve via @sofie-automation/corelib/src/... rather than /dist/..., which is the convention used elsewhere for corelib types (e.g. postProcess.ts's import of the same-generation UserEditingDefinitions types). This risks build/type-resolution failures depending on corelib's package.json exports policy.

🩹 Suggested fix
-import type { AdLibAction } from '`@sofie-automation/corelib/src/dataModel/AdlibAction.js`'
-import type { RundownBaselineAdLibAction } from '`@sofie-automation/corelib/src/dataModel/RundownBaselineAdLibAction.js`'
+import type { AdLibAction } from '`@sofie-automation/corelib/dist/dataModel/AdlibAction.js`'
+import type { RundownBaselineAdLibAction } from '`@sofie-automation/corelib/dist/dataModel/RundownBaselineAdLibAction.js`'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/webui/src/client/lib/rundown.ts` around lines 43 - 44, The new
corelib type imports in rundown.ts use the /src/ path instead of the /dist/
convention used elsewhere, which can break type resolution depending on corelib
exports. Update the AdLibAction and RundownBaselineAdLibAction imports to match
the same package import pattern used in other webui files like postProcess.ts
and SelectedElementsContext.tsx, keeping the symbols unchanged but pointing them
at the generated/dist entry points.
🧹 Nitpick comments (2)
packages/corelib/src/dataModel/AdlibAction.ts (1)

6-6: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider import type for consistency.

CoreUserEditingDefinition/CoreUserEditingProperties are pure types, but this import isn't marked import type, while sibling changes in action.ts and pieceGeneric.ts in the same PR explicitly convert equivalent type-only imports to import type. Purely stylistic; flagging for consistency only.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/corelib/src/dataModel/AdlibAction.ts` at line 6, The import in
AdlibAction should be converted to a type-only import for consistency with the
sibling updates in action.ts and pieceGeneric.ts. Update the existing import of
CoreUserEditingDefinition and CoreUserEditingProperties from
UserEditingDefinitions.js to use import type, since both symbols are pure types
and do not need a runtime import.
packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md (1)

74-100: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Same stale variable name left unfixed just below the fix.

Line 58 was corrected from ingestRundownChanges.changes to changes (matching the function's changes parameter), but the nearly-identical example at Line 86 still passes ingestRundownChanges.changes, which doesn't exist in this function's scope.

📝 Proposed fix
 		const groupedResult = context.groupPartsInRundownAndChanges(
 			nrcsIngestRundown,
 			previousNrcsIngestRundown,
-			ingestRundownChanges.changes,
+			changes,
 			(segments) => {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md`
around lines 74 - 100, The example in processIngestData still uses the stale
ingestRundownChanges.changes reference even though the function receives changes
as its parameter. Update that call inside groupPartsInRundownAndChanges to use
the existing changes variable, matching the earlier fix, so the snippet is
consistent and references only in-scope symbols.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/blueprints-integration/src/action.ts`:
- Around line 132-142: Update the JSDoc for IBlueprintActionManifest fields
userEditOperations and userEditProperties so it refers to the action/manifest,
not “this piece,” and replace the incorrect operation type name with the real
enum symbol DefaultUserOperationsTypes.UPDATE_PROPS. Apply the same wording
correction in AdlibAction.ts where the copied “piece” language appears, and
ensure any duplicated docs in pieceGeneric.ts and Piece.ts use the correct
symbol name from ingest.ts rather than the nonexistent
DefaultUserOperationEditProperties reference.

In
`@packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md`:
- Around line 110-114: The documentation wording around userEditOperations is
incomplete and the typedoc link is pointing to the wrong symbol. Update the
description to include AdLib Pieces and AdLib Actions alongside Rundowns,
Segments, Parts, and Pieces, and change the anchor to
IBlueprintPieceGeneric#usereditoperations. Also correct the text to “built-in”
and “defined”, and keep the reference to DefaultUserOperationsTypes accurate.

In `@packages/webui/src/client/lib/forms/SchemaFormOneOfButtons/OneOfButtons.tsx`:
- Around line 181-193: The two sync effects in OneOfButtons are overlapping and
the first one updates oldValue.current before the second effect can observe the
initial undefined state, so the push-default update path never fires. Merge the
logic into a single useEffect in OneOfButtons.tsx that preserves the original
mutually exclusive branches: when selected and value changes from a defined
prior value, sync editingValue and oldValue.current; when selected and
oldValue.current is still undefined on the initial value push, call
handleUpdateRef.current with editingValue before recording the new value.

In `@packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx`:
- Around line 28-31: SelectedElementsContext.tsx has one deep import that still
points to the corelib src path instead of the shipped dist subpath. Update the
import of CoreUserEditingDefinition and CoreUserEditingProperties to use the
same `@sofie-automation/corelib/dist/`... pattern used elsewhere in the file so it
matches the package exports and stays consistent with the rest of the imports.

In `@packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx`:
- Around line 96-133: The revert flow in PropertiesPanel.handleRevertChanges
currently rejects the exact selections it should support because the target-type
guard only allows already-segment/part targets and returns early for piece/adlib
selections. Update the conversion logic so piece, adlibPiece, and adlibAction
selections are mapped through getTargetForSelectedElement into a valid part or
segment target before calling MeteorCall.userAction.executeUserChangeOperation,
and keep the existing DefaultUserOperationsTypes choice based on
selectedElement.type.
- Around line 52-69: The auto-close guard in PropertiesPanel only tracks
selectedObjects.piece, so deselecting AdLib-related items will not clear
selections. Update the hadSmallestElement tracking effect and the pieceChangedId
check in PropertiesPanel to include selectedObjects.adLibPiece,
selectedObjects.rundownBaselineAdLibPiece, selectedObjects.adLibAction, and
selectedObjects.rundownBaselineAdLibAction alongside piece, then keep the
clearSelections() reset behavior when any of those smallest-element selections
are removed.

---

Outside diff comments:
In `@packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx`:
- Around line 306-370: The fallback in SelectedElementsContext’s useEffect never
works because lastValidSmallestElement.current is only read, not updated, so
transient lookup misses still clear the selected panel. Update
lastValidSmallestElement.current whenever one of the document lookups in the
Tracker.autorun block resolves (piece, adLibPiece, rundownBaselineAdLibPiece,
adLibAction, or rundownBaselineAdLibAction), and keep the existing fallback
switch so it can reuse the last valid document on temporary misses.
- Around line 308-370: The selection lookup in SelectedElementsContext’s
useEffect is using selectedElement?.elementId directly as a UIParts key for the
partInstance branch, but that value is a PartInstanceId and must be resolved
through the parent part first. Update the logic around the piece/adLib lookups
and the UIParts.findOne call so the part is fetched via the selected item’s
startPartId/partId relationship rather than the instance id, and then derive the
segment from that resolved part. This should allow selectedObjects.part to
populate correctly for the partInstance path.

In `@packages/webui/src/client/ui/Shelf/ShelfContextMenu.tsx`:
- Around line 173-225: The `pieceHasEditableContent` boolean in
`ShelfContextMenu` does not narrow `context`, so the `enableUserEdits &&
pieceHasEditableContent` branch still accesses `context.details.adLib` unsafely.
Update the `MenuItem`/edit-properties block to re-check `context?.type ===
ContextType.ADLIB` before reading `context.details.adLib`, or change
`hasUserEditableContent` to a type predicate so the `ShelfContextMenu` render
path is properly narrowed.

---

Duplicate comments:
In `@packages/webui/src/client/lib/rundown.ts`:
- Around line 43-44: The new corelib type imports in rundown.ts use the /src/
path instead of the /dist/ convention used elsewhere, which can break type
resolution depending on corelib exports. Update the AdLibAction and
RundownBaselineAdLibAction imports to match the same package import pattern used
in other webui files like postProcess.ts and SelectedElementsContext.tsx,
keeping the symbols unchanged but pointing them at the generated/dist entry
points.

---

Nitpick comments:
In `@packages/corelib/src/dataModel/AdlibAction.ts`:
- Line 6: The import in AdlibAction should be converted to a type-only import
for consistency with the sibling updates in action.ts and pieceGeneric.ts.
Update the existing import of CoreUserEditingDefinition and
CoreUserEditingProperties from UserEditingDefinitions.js to use import type,
since both symbols are pure types and do not need a runtime import.

In
`@packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md`:
- Around line 74-100: The example in processIngestData still uses the stale
ingestRundownChanges.changes reference even though the function receives changes
as its parameter. Update that call inside groupPartsInRundownAndChanges to use
the existing changes variable, matching the earlier fix, so the snippet is
consistent and references only in-scope symbols.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ae6efeae-b0bc-44b2-9e5e-4b1ff9de8934

📥 Commits

Reviewing files that changed from the base of the PR and between 10db30e and 3e9b01e.

📒 Files selected for processing (28)
  • packages/blueprints-integration/src/action.ts
  • packages/blueprints-integration/src/api/studio.ts
  • packages/blueprints-integration/src/documents/piece.ts
  • packages/blueprints-integration/src/documents/pieceGeneric.ts
  • packages/blueprints-integration/src/ingest.ts
  • packages/blueprints-integration/src/triggers.ts
  • packages/corelib/src/TranslatableMessage.ts
  • packages/corelib/src/dataModel/AdLibPiece.ts
  • packages/corelib/src/dataModel/AdlibAction.ts
  • packages/corelib/src/dataModel/Piece.ts
  • packages/corelib/src/worker/ingest.ts
  • packages/documentation/docs/for-developers/for-blueprint-developers/manipulating-ingest-data.md
  • packages/job-worker/src/blueprints/context/lib.ts
  • packages/job-worker/src/blueprints/postProcess.ts
  • packages/webui/src/client/lib/forms/SchemaFormOneOfButtons/OneOfButtons.tsx
  • packages/webui/src/client/lib/rundown.ts
  • packages/webui/src/client/styles/contextMenu.scss
  • packages/webui/src/client/ui/RundownView.tsx
  • packages/webui/src/client/ui/RundownView/DragContextProvider.tsx
  • packages/webui/src/client/ui/RundownView/RundownDetachedShelf.tsx
  • packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx
  • packages/webui/src/client/ui/SegmentTimeline/SegmentContextMenu.tsx
  • packages/webui/src/client/ui/Shelf/AdLibPanel.tsx
  • packages/webui/src/client/ui/Shelf/ExternalFramePanel.tsx
  • packages/webui/src/client/ui/Shelf/Shelf.tsx
  • packages/webui/src/client/ui/Shelf/ShelfContextMenu.tsx
  • packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx
  • packages/webui/src/client/ui/UserEditOperations/__tests__/PropertiesPanel.test.tsx
💤 Files with no reviewable changes (1)
  • packages/blueprints-integration/src/documents/piece.ts

Comment thread packages/blueprints-integration/src/action.ts
Comment thread packages/webui/src/client/ui/RundownView/SelectedElementsContext.tsx Outdated
Comment thread packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx Outdated
Comment thread packages/webui/src/client/ui/UserEditOperations/PropertiesPanel.tsx
@jstarpl
jstarpl force-pushed the feat/adlib-user-edits branch from 3e9b01e to eb99798 Compare July 6, 2026 12:42
@jstarpl
jstarpl requested a review from nytamin July 9, 2026 10:18
@jstarpl
jstarpl force-pushed the feat/adlib-user-edits branch from eb99798 to 62355ea Compare August 17, 2026 10:06
@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@jstarpl
jstarpl merged commit 5899274 into Sofie-Automation:main Aug 17, 2026
24 checks passed
@jstarpl
jstarpl deleted the feat/adlib-user-edits branch August 17, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Contribution from NRK Contributions sponsored by NRK (nrk.no)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants