fix: address reader-UI feedback (shorts, search, tags, login, UX)
- Shorts: confirm via youtube.com/shorts/<id> probe (SOCS cookie bypasses the consent redirect) instead of a 60s heuristic; concurrent probing, shorts_probed flag, scheduled refinement (migration 0005) - Search: match title + channel name only (descriptions caused noisy results) - Faceted tag filtering: AND across categories (language AND topic narrows), OR within a category; any/all toggle applies to topics - Language detection: majority vote over individual titles (fixes misdetections like multipoleguy -> English; drops bogus Polish/Romanian) - Login: drop forced consent so returning sign-in is quick (select_account) - Feed cards: clickable channel name (opens channel), persistent saved badge, undo toast on hide, Hidden view to restore; tag chips show counts in tooltip
This commit is contained in:
parent
e56502789f
commit
8c245e986f
17 changed files with 306 additions and 35 deletions
|
|
@ -28,13 +28,14 @@ oauth.register(
|
|||
|
||||
@router.get("/login")
|
||||
async def login(request: Request):
|
||||
# access_type=offline + prompt=consent must be on the authorization URL so Google
|
||||
# returns a refresh_token (required for background sync).
|
||||
# access_type=offline ensures a refresh_token on first authorization. We avoid
|
||||
# prompt=consent so returning users get a quick sign-in; the stored refresh token
|
||||
# is kept when Google doesn't re-issue one (see the callback).
|
||||
return await oauth.google.authorize_redirect(
|
||||
request,
|
||||
settings.oauth_redirect_url,
|
||||
access_type="offline",
|
||||
prompt="consent",
|
||||
prompt="select_account",
|
||||
include_granted_scopes="true",
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue