- fix: reserve the scrollbar gutter (scrollbar-gutter:stable) on the channel page's scroll container, so switching between the tall Videos tab and the short About tab no longer shifts the banner/avatar/buttons a few px sideways (the vertical scrollbar was appearing/disappearing between the two tabs). - About tab now shows Country (flag + localized name), Language, Topics (topicCategories → readable chips), and Keywords (brandingSettings keywords parsed into chips, quoted multi-word tags kept whole). country/language/topics were already stored; keywords is new (migration 0055_channel_keywords, mapped in apply_channel_details, returned by channel_detail). - Discovery → channel page: the Channel-manager "Discover from playlists" tab now links each channel name to its in-app channel page (ChannelLink onView), so a discovered channel's About/videos can be inspected BEFORE subscribing (was subscribe-only, plain text before). Note: the channel info-card epic itself was already delivered in v0.19.0; this is the About-tab enrichment follow-up + the header-shift fix. external_links stays empty by design (YouTube removed the field from the Data API ~2023).
23 lines
619 B
Python
23 lines
619 B
Python
"""channels.keywords: creator keyword tags from brandingSettings (About tab)
|
|
|
|
Revision ID: 0055_channel_keywords
|
|
Revises: 0054_audit_log
|
|
Create Date: 2026-07-12
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
revision: str = "0055_channel_keywords"
|
|
down_revision: Union[str, None] = "0054_audit_log"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column("channels", sa.Column("keywords", sa.Text(), nullable=True))
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("channels", "keywords")
|