Skip to content

Merge main into the epic: NestJS 11, slug-change rendering — and make CI actually run - #1993

Merged
johan-bell merged 5 commits into
1878-api-cms-hls-media-data-modelfrom
1878-merge-main-2
Sep 2, 2026
Merged

Merge main into the epic: NestJS 11, slug-change rendering — and make CI actually run#1993
johan-bell merged 5 commits into
1878-api-cms-hls-media-data-modelfrom
1878-merge-main-2

Conversation

@johan-bell

Copy link
Copy Markdown
Collaborator

⚠️ Merge this with a merge commit, not squash. A squash discards the merge parent, and #1910 stays "conflicting" against main afterwards — the same trap #1981 hit.

The merge (unblocks #1910)

Main's three commits since the last merge-of-main: the NestJS 10→11 migration (#1950, the @fastify/middie auth-bypass CVE), the SingleContent slug-change rendering fix + navigation tests (#1968), and the theme pre-paint work (#1984).

One conflict, in SingleContent.vue: main keys the video player by content id so slug navigation re-renders it; the epic reads the source through hasVideoSource (parentMedia-aware) instead of content.video. Kept the epic's condition and took main's :key — both fixes survive, per "prioritize the epic's changes".

The CI fixes

Every submodule-cloning workflow assumed the encoder repo is public; it isn't yet, so all four died at checkout ("repository not found"). They now pass secrets.MEDIA_CONVERT_SUBMODULE_TOKEN || github.token.

➡️ One action needed from you: create a fine-grained PAT with read-only Contents access to bccsa/luminary-media-convert and add it as the repo secret MEDIA_CONVERT_SUBMODULE_TOKEN. Once the repo goes public, delete the secret — the fallback takes over, no workflow change needed.

E2E (local stack) had two extra gaps: no submodule in its checkout, and no player-library build — the app's production build failed on Rollup failed to resolve import "@luminary-media-converter/player-web-legacy". It now checks out and builds them like the unit-test workflows do.

With checkout fixed, type-check finally runs — and it failed on errors the dead checkout had been masking: the sync specs' accessible-groups literals predate DocType.Sidecar (app + cms), EditContentMedia.spec reads props("parent") without narrowing (6×), one hoisted mock's call tuple is typed empty. All fixed.

Verified locally

  • api: 982/982 under NestJS 11, tsc clean
  • app: 992 tests pass (incl. main's new navigation tests), type-check 0 errors
  • cms: 1177 tests pass, vue-tsc 0 errors (down from the 9-error baseline)
  • shared: 1367/1368 — the one failure (responseCache … overflows quota) reproduces byte-identically on origin/main, so it's pre-existing there, not from this merge

ChrisTouo and others added 5 commits September 1, 2026 17:29
…nd add navigation tests (#1968)

* fix(SingleContent): ensure correct content rendering on slug change and add navigation tests

* test(post-navigation): add tests to ensure previous post content is not rendered when navigating between posts

* fix(SingleContent): prevent navigation to previous post's translation when opening a new post

* fix(HybridQuery): implement keepPreviousResult option to control output persistence across query rebuilds

* feat(HybridQuery): add keepPreviousResult option to maintain output during query rebuilds
… handling (#1984)

* feat(theme): centralize theme storage key and enhance pre-paint theme handling

* refactor(theme): replace THEME_STORAGE_KEY import with hard-coded value and remove themeStorage module
…-paint

One conflict, in SingleContent.vue: main's #1968 keys the video player by
content id so slug navigation re-renders it; the epic reads the source
through hasVideoSource (parentMedia-aware) rather than content.video.
Kept the epic's condition and took main's :key — both fixes survive.
…and clear the type errors CI never got far enough to see

The four workflows that clone the submodule assumed the encoder
repository is public; it is not yet, so every run died at checkout with
"repository not found". They now pass
`secrets.MEDIA_CONVERT_SUBMODULE_TOKEN || github.token` — a fine-grained
read PAT until the repository goes public, the default token after,
when the secret can simply be deleted.

E2E (local stack) had two gaps of its own: no submodule in its checkout
and no player-library build, so the app's production build could not
resolve @luminary-media-converter/player-web-legacy. It now checks out
and builds them the same way the unit-test workflows do.

With checkout fixed, type-check runs — and fails on errors the dead
checkout had been masking: the sync specs' accessible-groups literals
predate DocType.Sidecar, EditContentMedia's spec reads props("parent")
without narrowing, and one hoisted mock's call tuple is typed empty.
All fixed; app and cms type-checks are clean.
@johan-bell
johan-bell merged commit 86d2177 into 1878-api-cms-hls-media-data-model Sep 2, 2026
@johan-bell
johan-bell deleted the 1878-merge-main-2 branch September 2, 2026 17:45
johan-bell added a commit that referenced this pull request Sep 2, 2026
The content of main's three commits arrived in the squash of #1993; the
squash kept the tree and discarded the merge parent, so GitHub still
reported #1910 as conflicting. This merge adds the parentage and changes
no files.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants