Skip to content

Commit 72a9211

Browse files
committed
Merge branch 'release52' into release53
# Conflicts: # packages/blueprints-integration/CHANGELOG.md # packages/documentation/docs/user-guide/installation/installing-sofie-server-core.md # packages/lerna.json # packages/mos-gateway/CHANGELOG.md # packages/playout-gateway/CHANGELOG.md # packages/server-core-integration/CHANGELOG.md # packages/webui/src/client/ui/Prompter/PrompterView.tsx
2 parents b9be6c9 + f6ac7f7 commit 72a9211

File tree

23 files changed

+96
-44
lines changed

23 files changed

+96
-44
lines changed

meteor/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,6 @@ COPY --from=1 /opt/bundle /opt/core
6060
COPY meteor/docker-entrypoint.sh /opt
6161

6262
WORKDIR /opt/core/
63+
RUN chown -R 1000:1000 /opt/core
64+
USER 1000
6365
CMD ["/opt/docker-entrypoint.sh"]

meteor/Dockerfile.circle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ RUN apk add --no-cache tzdata
55

66
COPY meteor/bundle /opt/core
77
COPY meteor/docker-entrypoint.sh /opt
8-
WORKDIR /opt/core/
8+
WORKDIR /opt/core
9+
RUN chown -R 1000:1000 /opt/core
10+
USER 1000
911
CMD ["/opt/docker-entrypoint.sh"]

packages/blueprints-integration/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
3030
- routeset config defined in blueprints ([e839b97](https://github.com/nrkno/sofie-core/commit/e839b97c0205df38e5bc7ab816a9c79406a7d767))
3131
- update meteor to 3.1 and node to 22 ([61b6854](https://github.com/nrkno/sofie-core/commit/61b6854261a03f04e81416b9d37ee995e3a10108))
3232

33+
## [1.51.7](https://github.com/nrkno/sofie-core/compare/v1.51.6...v1.51.7) (2025-05-06)
34+
35+
**Note:** Version bump only for package @sofie-automation/blueprints-integration
36+
3337
## [1.51.6](https://github.com/nrkno/sofie-core/compare/v1.51.5...v1.51.6) (2025-01-14)
3438

3539
**Note:** Version bump only for package @sofie-automation/blueprints-integration

packages/corelib/src/playout/processAndPrune.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,7 @@ function getPieceStartTimeAsReference(newPieceStart: number | 'now'): number | R
1515
}
1616

1717
function getPieceStartTimeWithinPart(p: ReadonlyDeep<PieceInstance>): 'now' | number {
18-
// If the piece is dynamically inserted, then its preroll should be factored into its start time, but not for any infinite continuations
19-
const isStartOfAdlib =
20-
!!p.dynamicallyInserted && !(p.infinite?.fromPreviousPart || p.infinite?.fromPreviousPlayhead)
21-
22-
if (isStartOfAdlib && p.piece.enable.start !== 'now') {
23-
return p.piece.enable.start + (p.piece.prerollDuration ?? 0)
24-
} else {
25-
return p.piece.enable.start
26-
}
18+
return p.piece.enable.start
2719
}
2820

2921
function isClear(piece?: ReadonlyDeep<PieceInstance>): boolean {

packages/documentation/docs/user-guide/installation/installing-sofie-server-core.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ sidebar_position: 2
88

99
### **Prerequisites**
1010

11-
**\(Linux\)** Install [Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/) and [docker-compose](https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04).
11+
**\(Linux\)** Install [Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/) and [docker-compose](https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04).
1212
**\(Windows\)** Install [Docker for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows).
1313

1414
### Installation
@@ -121,6 +121,12 @@ Then open a terminal, `cd your-sofie-folder` and `sudo docker-compose up` \(just
121121

122122
Once the installation is done, Sofie should be running on [http://localhost:3000](http://localhost:3000)
123123

124+
Next, you will need to install a Rundown Gateway. Visit [Rundowns & Newsroom Systems](installing-a-gateway/rundown-or-newsroom-system-connection/intro.md) to see which _Rundown Gateway_ is best suited for _your_ production environment.
125+
126+
:::note
127+
Starting with Sofie version 1.52.0, `sofietv` container images will run as UID 1000.
128+
:::
129+
124130
### Tips for running in production
125131

126132
There are some things not covered in this guide needed to run _Sofie_ in a production environment:
@@ -133,7 +139,7 @@ There are some things not covered in this guide needed to run _Sofie_ in a produ
133139

134140
Installation instructions for installing Sofie-Core or the various gateways are available in the README file in their respective github repos.
135141

136-
Common prerequisites are [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/).
142+
Common prerequisites are [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/).
137143
Links to the repos are listed at [Applications & Libraries](../../for-developers/libraries.md).
138144

139145
[_Sofie&nbsp;Core_ GitHub Page for Developers](https://github.com/nrkno/sofie-core)

packages/job-worker/src/playout/__tests__/timeline.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,8 +1286,9 @@ describe('Timeline', () => {
12861286
})
12871287

12881288
const pieceOffset = 12560
1289+
12891290
// Simulate the piece timing confirmation from playout-gateway
1290-
await doSimulatePiecePlaybackTimings(playlistId, pieceOffset, 2)
1291+
await doSimulatePiecePlaybackTimings(playlistId, pieceOffset, 2) // This pieceOffset includes the partPreroll
12911292

12921293
// Now we have a concrete time
12931294
await checkTimings({
@@ -1457,16 +1458,14 @@ describe('Timeline', () => {
14571458
// Simulate the piece timing confirmation from playout-gateway
14581459
await doSimulatePiecePlaybackTimings(playlistId, pieceOffset, 2)
14591460

1460-
const pieceOffsetWithPreroll = pieceOffset + 340
1461-
14621461
// Now we have a concrete time
14631462
await checkTimings({
14641463
previousPart: null,
14651464
currentPieces: {
14661465
piece000: {
14671466
controlObj: {
14681467
start: 500, // This one gave the preroll
1469-
end: pieceOffsetWithPreroll,
1468+
end: pieceOffset,
14701469
},
14711470
childGroup: {
14721471
preroll: 500,
@@ -1485,7 +1484,7 @@ describe('Timeline', () => {
14851484
[adlibbedPieceId]: {
14861485
// Our adlibbed piece
14871486
controlObj: {
1488-
start: pieceOffsetWithPreroll,
1487+
start: pieceOffset,
14891488
},
14901489
childGroup: {
14911490
preroll: 340,

packages/job-worker/src/playout/timeline/__tests__/pieceGroup.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ describe('Pieces', () => {
539539
classes: [],
540540
enable: {
541541
...enable,
542-
end: 400,
542+
end: 600,
543543
},
544544
})
545545
})

packages/job-worker/src/playout/timeline/multi-gateway.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,14 +225,15 @@ function deNowifyCurrentPieces(
225225
const objectsNotDeNowified: TimelineObjRundown[] = []
226226
// The relative time for 'now' to be resolved to, inside of the part group
227227
const nowInPart = targetNowTime - currentPartGroupStartTime
228+
const nowInPartWithoutPreroll = nowInPart - (currentPartInstance.partInstance.partPlayoutTimings?.toPartDelay ?? 0)
228229

229230
// Ensure any pieces in the currentPartInstance have their now replaced
230231
for (const pieceInstance of currentPartInstance.pieceInstances) {
231232
if (pieceInstance.pieceInstance.piece.enable.start === 'now') {
232233
pieceInstance.updatePieceProps({
233234
enable: {
234235
...pieceInstance.pieceInstance.piece.enable,
235-
start: nowInPart,
236+
start: nowInPartWithoutPreroll,
236237
},
237238
})
238239
}

packages/job-worker/src/playout/timeline/part.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export function transformPartIntoTimeline(
6666
nowInParentGroup,
6767
pieceInstance,
6868
pieceEnable,
69-
0,
69+
pieceInstance.dynamicallyInserted ? 0 : partTimings.toPartDelay,
7070
pieceGroupFirstObjClasses,
7171
isInHold,
7272
false

packages/job-worker/src/playout/timeline/piece.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,8 @@ export function getPieceEnableInsidePart(
9595
): TSR.Timeline.TimelineEnable {
9696
const pieceEnable: TSR.Timeline.TimelineEnable = { ...pieceInstance.piece.enable }
9797
if (typeof pieceEnable.start === 'number') {
98-
if (pieceInstance.dynamicallyInserted) {
99-
// timed adlibbed pieces needs to factor in their preroll
100-
pieceEnable.start += pieceInstance.piece.prerollDuration || 0
101-
} else {
102-
// timed planned pieces should be offset based on the preroll of the part
103-
pieceEnable.start += partTimings.toPartDelay
104-
}
98+
// pieces should be offset based on the preroll of the part
99+
pieceEnable.start += partTimings.toPartDelay
105100
}
106101

107102
// If the part has an end time, we can consider post-roll

0 commit comments

Comments
 (0)