refactor(api): honest FeedResponse; derive pageTitleKey from the registry (R7 S3a·2-3)
- FeedResponse claimed a required `limit`, but /api/search/youtube never returns it (only /api/feed does) and nothing in the app reads it. Drop the field so searchYoutube's Promise<FeedResponse> stops lying; documented for re-add if a consumer appears. - pageMeta's hand-written 13-case Page->title switch now derives from the ModuleDef registry via a new optional `titleKey` (the longer tab title, e.g. "Channel manager"; falls back to the short nav labelKey). A new page is one touch (add it to MODULES) instead of also editing a switch. A test pins all 13 title keys byte-identical to the old switch (suite 74).
This commit is contained in:
@@ -123,10 +123,12 @@ export interface FeedResponse {
|
||||
has_more: boolean;
|
||||
// Opaque keyset cursor for the next page, or null when this is the last page.
|
||||
next_cursor: string | null;
|
||||
limit: number;
|
||||
// Only set by the live YouTube search: "scrape" (InnerTube, no API quota) or "api"
|
||||
// (search.list, 100 units/page) — lets the UI drop the quota warning in scrape mode.
|
||||
source?: "scrape" | "api";
|
||||
// NOTE: /api/feed also returns an echoed `limit`, but /api/search/youtube does not and nothing
|
||||
// in the app reads it, so it's deliberately omitted rather than typed required (a lie for search)
|
||||
// or optional (dead surface). Re-add if a consumer ever needs it.
|
||||
}
|
||||
|
||||
export type PlaylistKind = "user" | "watch_later";
|
||||
|
||||
Reference in New Issue
Block a user