Files
recap-relay/startos/versions/v0.2.57.ts
T

14 lines
1.3 KiB
TypeScript

import { VersionInfo } from '@start9labs/start-sdk'
export const v_0_2_57 = VersionInfo.of({
version: '0.2.57:0',
releaseNotes: {
en_US:
'Defensive title normalization in /relay/summarize-url. The yt-dlp-extracted-title fallback at line ~219 (`if (!title && audio.title) title = audio.title`) was only firing when the client either omitted the title field entirely or passed an empty string — both of which yield a falsy `title`. Recap-app < 0.2.71 actually passed the literal string "Untitled" when the operator hadn\'t pre-fetched metadata (because Recap\'s relay-mode branch built its title hint as `titleSurrogate = itemTitle || "Untitled"`). `"Untitled"` is truthy, so the fallback gate never tripped and the relay echoed `"Untitled"` back as if it were a real title — library entries on Recap stayed "Untitled" forever even though yt-dlp had fetched the right one. Fix: normalize the incoming `bodyTitle` at the route entry — treat both empty string and the literal sentinel "Untitled" as "no title supplied" (set to null). The yt-dlp fallback then fires correctly for both new Recap clients (0.2.71+, which now pass empty string) and old Recap clients (still passing "Untitled"). No behavior change for any client that passes a real title.',
},
migrations: {
up: async ({ effects }) => {},
down: async ({ effects }) => {},
},
})