Skip to content

[Bug]: Error on Youtube login #250

Open

Description

@kinouzero

What happened?

Hi, I installed the stack manually, and I stumble upon 2 problems :

  • first when you have auto connection without password configured on your google account the login doesn't work because the login prompt is stuck waiting for a passkey and impossible to click on the "try other method" button
  • other thing and that's the main problem, I deactivated the auto connection to use password, it worked so first problem solved temporary, but next I have 2 step security on my account I with and without it but the login don't work either and I get a message "error" below the embeded browser but nothing in the logs, the login google work but it fail on the redirect

Steps to reproduce

go to remote YouTube login
try to connect
fail

Area

Token / remote login

Channel

main (stable)

Anything else?

networks:
  default:
    name: ${DOCKER_HOSTNAME}
    external: true

services:
  typetype:
    container_name: typetype
    depends_on:
      typetype-server:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/api/version/web"]
      interval: 5s
      timeout: 3s
      retries: 12
    image: ghcr.io/typetype-video/typetype:1.6.0
    networks:
      - default
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro

  typetype-downloader:
    container_name: typetype-downloader
    depends_on:
      typetype-postgres:
        condition: service_healthy
      typetype-token:
        condition: service_healthy
      typetype-valkey:
        condition: service_healthy
    environment:
      DB_URL: postgres://${USER}:${POSTGRES_PASSWORD}@typetype-postgres:${POSTGRES_PORT}/typetype?sslmode=disable
      PUBLIC_BASE_URL: /api/downloader
      REDIS_HOST: typetype-valkey
      REDIS_PORT: ${VALKEY_PORT}
      S3_ENDPOINT: http://minio:${MINIO_PORT}
      S3_PUBLIC_ENDPOINT: http://minio:${MINIO_PORT}
      S3_REGION: minio
      S3_BUCKET: typetype
      S3_ACCESS_KEY: ${TYPETYPE_S3_ACCESS_KEY}
      S3_SECRET_KEY: ${TYPETYPE_S3_SECRET_KEY}
      STORAGE_BACKEND: s3
    image: ghcr.io/typetype-video/typetype-downloader:1.6.0
    networks:
      - default
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro

  typetype-postgres:
    container_name: typetype-postgres
    environment:
      POSTGRES_DB: typetype
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_USER: ${USER}
      TZ: ${TZ}
    healthcheck:
      interval: 30s
      retries: 3
      start_period: 10s
      test: ['CMD', 'pg_isready', '-d', 'typetype', '-U', '${USER}']
      timeout: 10s
    image: postgres:16-bookworm
    labels:
      docker.stack: track
      homepage.group: Databases
      homepage.href: ${URL_DB}
      homepage.icon: sh-postgresql
      homepage.name: typetype-postgres
      kuma.__db: '"postgres", "postgresql://${USER}:${POSTGRES_PASSWORD}@typetype-postgres:${POSTGRES_PORT}/typetype"'
      kuma.__docker: '"${DOCKER_HOSTNAME}", "socket", "/var/run/docker.sock", ""'
      wud.display.icon: sh-postgresql
      wud.display.name: typetype-postgres
      wud.tag.include: 16-bookworm
      wud.watch.digest: true
    networks:
      - default
    pull_policy: always
    restart: always
    volumes:
      - /home/${USER}/.config/docker/typetype/db:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro

  typetype-server:
    container_name: typetype-server
    depends_on:
      typetype-downloader:
        condition: service_started
      typetype-postgres:
        condition: service_healthy
      typetype-token:
        condition: service_healthy
      typetype-valkey:
        condition: service_healthy
    environment:
      ALLOWED_ORIGINS: ${URL_TYPE}
      DATABASE_URL: jdbc:postgresql://typetype-postgres:${POSTGRES_PORT}/typetype
      DATABASE_USER: ${USER}
      DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
      DRAGONFLY_URL: redis://typetype-valkey:${VALKEY_PORT}
      OIDC_CLIENT_ID: ${TYPETYPE_OIDC_CLIENT_ID}
      OIDC_CLIENT_SECRET: ${TYPETYPE_OIDC_CLIENT_SECRET}
      OIDC_ISSUER: ${URL_AUTH}/application/o/typetype/
      OIDC_PROVIDER_NAME: Authentik
      YOUTUBE_REMOTE_LOGIN_ENABLED: true
      YOUTUBE_REMOTE_LOGIN_INTERNAL_TOKEN: ${TYPETYPE_YOUTUBE_REMOTE_LOGIN_INTERNAL_TOKEN}
      YOUTUBE_SESSION_ENCRYPTION_KEY: ${TYPETYPE_YOUTUBE_SESSION_ENCRYPTION_KEY}
    healthcheck:
      test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:8080/health"]
    image: ghcr.io/typetype-video/typetype-server:1.6.0
    networks:
      - default
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro

  typetype-token:
    container_name: typetype-token
    environment:
      NODE_ENV: production
      YOUTUBE_REMOTE_LOGIN_ENABLED: true
      YOUTUBE_REMOTE_LOGIN_INTERNAL_TOKEN: ${TYPETYPE_YOUTUBE_REMOTE_LOGIN_INTERNAL_TOKEN}
    healthcheck:
      test: ["CMD-SHELL", "curl --fail --silent http://127.0.0.1:8081/health > /dev/null"]
    image: ghcr.io/typetype-video/typetype-token:1.6.0
    init: true
    ipc: host
    networks:
      - default
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro

  typetype-valkey:
    container_name: typetype-valkey
    healthcheck:
      interval: 30s
      retries: 3
      start_period: 10s
      test: ['CMD', 'valkey-cli', 'ping']
      timeout: 10s
    image: valkey/valkey:9.1.1
    labels:
      docker.stack: track
      homepage.group: Redis
      homepage.href: ${URL_REDIS}
      homepage.icon: sh-valkey
      homepage.name: typetype-valkey
      kuma.__db: '"redis", "redis://typetype-valkey:${VALKEY_PORT}"'
      kuma.__docker: '"${DOCKER_HOSTNAME}", "socket", "/var/run/docker.sock", ""'
      wud.display.icon: sh-valkey
      wud.display.name: typetype-valkey
      wud.link.template: https://github.com/valkey-io/valkey/releases
      wud.tag.include: '^\d+\.\d+\.\d+$$'
    networks:
      - default
    restart: always
    volumes:
      - /home/${USER}/.config/docker/typetype/redis:/data
      - /etc/localtime:/etc/localtime:ro
Image

Logs server :

typetype-server  | 2026-08-25T11:53:45.168989892Z 13:53:45.167 [main] INFO  Application - Autoreload is disabled because the development mode is off.
typetype-server  | 2026-08-25T11:53:45.250331640Z 13:53:45.249 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
typetype-server  | 2026-08-25T11:53:45.374694853Z 13:53:45.374 [main] INFO  com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@4690f583
typetype-server  | 2026-08-25T11:53:45.375536705Z 13:53:45.375 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
typetype-server  | 2026-08-25T11:53:45.690565849Z WARNING: A restricted method in java.lang.System has been called
typetype-server  | 2026-08-25T11:53:45.690592929Z WARNING: java.lang.System::loadLibrary has been called by io.netty.util.internal.NativeLibraryUtil in an unnamed module (file:/app/app.jar)
typetype-server  | 2026-08-25T11:53:45.690597659Z WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
typetype-server  | 2026-08-25T11:53:45.690599749Z WARNING: Restricted methods will be blocked in a future release unless native access is enabled
typetype-server  | 2026-08-25T11:53:45.690601619Z 
typetype-server  | 2026-08-25T11:53:46.298235705Z 13:53:46.298 [main] INFO  Application - Application started in 1.248 seconds.
typetype-server  | 2026-08-25T11:53:46.334907103Z 13:53:46.334 [DefaultDispatcher-worker-1] INFO  Application - Responding at http://0.0.0.0:8080
typetype-server  | 2026-08-25T11:54:14.898230289Z 13:54:14.898 [eventLoopGroupProxy-7-1] INFO  Application - requestId=323cc860-9050-47a6-b64b-6ee24abaf0ae method=GET path=/health status=200 durationMs=24
typetype-server  | 2026-08-25T11:54:44.941891233Z 13:54:44.941 [eventLoopGroupProxy-7-2] INFO  Application - requestId=b77d0515-2e58-4b57-8379-d542e42b1c12 method=GET path=/health status=200 durationMs=0
typetype-server  | 2026-08-25T11:55:14.981565139Z 13:55:14.981 [eventLoopGroupProxy-7-3] INFO  Application - requestId=58948230-4f7a-4351-acf4-ec4e98ae5592 method=GET path=/health status=200 durationMs=0
typetype-server  | 2026-08-25T11:55:45.015856449Z 13:55:45.015 [eventLoopGroupProxy-7-4] INFO  Application - requestId=4d96cc83-d346-47db-aa7c-5b220d09da1a method=GET path=/health status=200 durationMs=0
typetype-server  | 2026-08-25T11:56:15.052199192Z 13:56:15.051 [eventLoopGroupProxy-7-5] INFO  Application - requestId=4fb8b143-4efa-46ba-aeb0-42855a37c417 method=GET path=/health status=200 durationMs=0
typetype-server  | 2026-08-25T11:56:16.448114521Z 13:56:16.447 [eventLoopGroupProxy-7-6] INFO  Application - requestId=dcf53141-ff7a-473f-afa4-f959d0e2c2f8 method=GET path=/auth/register/status status=200 durationMs=44
typetype-server  | 2026-08-25T11:56:16.518628490Z 13:56:16.518 [eventLoopGroupProxy-7-9] INFO  Application - requestId=a4600518-3312-4547-8ba4-7bfbf1c42be2 method=POST path=/sessions/activity status=401 durationMs=93
typetype-server  | 2026-08-25T11:56:16.518657480Z 13:56:16.518 [eventLoopGroupProxy-7-8] INFO  Application - requestId=d0cde8c5-a1a8-4d26-9825-8e3efa7b3939 method=POST path=/sessions/activity status=401 durationMs=113
typetype-server  | 2026-08-25T11:56:16.519151842Z 13:56:16.519 [eventLoopGroupProxy-7-10] INFO  Application - requestId=8ddc3e5c-8049-4101-9865-eb49bd46b684 method=GET path=/blocked/videos status=401 durationMs=85
typetype-server  | 2026-08-25T11:56:16.519523413Z 13:56:16.519 [eventLoopGroupProxy-7-7] INFO  Application - requestId=f5f7ec11-67f2-4807-9692-ff3a4884a73e method=GET path=/search-history status=401 durationMs=115
typetype-server  | 2026-08-25T11:56:17.320012522Z 13:56:17.319 [eventLoopGroupProxy-7-12] INFO  Application - requestId=cb4b9aee-d81b-4b78-9828-6827c680e69e method=GET path=/auth/me status=401 durationMs=1
typetype-server  | 2026-08-25T11:56:17.386807012Z 13:56:17.386 [eventLoopGroupProxy-7-13] INFO  Application - requestId=d6d1b5b2-0af8-43ab-8059-fd47dca79688 method=POST path=/auth/refresh status=200 durationMs=42
typetype-server  | 2026-08-25T11:56:17.409361762Z 13:56:17.409 [eventLoopGroupProxy-7-14] INFO  Application - requestId=05d0f596-2347-4d17-a76f-9a71a8b62ccb method=GET path=/auth/me status=200 durationMs=8
typetype-server  | 2026-08-25T11:56:17.489041516Z 13:56:17.488 [eventLoopGroupProxy-7-18] INFO  Application - requestId=0f82a938-43bc-4a37-84e4-3e9cbf97c173 method=GET path=/auth/register/status status=200 durationMs=2
typetype-server  | 2026-08-25T11:56:17.495639114Z 13:56:17.495 [eventLoopGroupProxy-7-17] INFO  Application - requestId=39253998-4c40-4324-81fa-c2b14da466b5 method=GET path=/youtube-session/status status=200 durationMs=11
typetype-server  | 2026-08-25T11:56:17.497988010Z 13:56:17.497 [eventLoopGroupProxy-7-16] INFO  Application - requestId=aa514289-91b2-47a7-a426-e1386b91a2b9 method=GET path=/search-history status=200 durationMs=16
typetype-server  | 2026-08-25T11:56:17.499755875Z 13:56:17.499 [eventLoopGroupProxy-7-15] INFO  Application - requestId=30cd0090-9d9c-4e3f-96a4-697de5a4c646 method=GET path=/settings status=200 durationMs=20
typetype-server  | 2026-08-25T11:56:17.501621900Z 13:56:17.501 [eventLoopGroupProxy-7-19] INFO  Application - requestId=5e73e293-e73c-4859-961e-801f6eb65762 method=POST path=/sessions/activity status=204 durationMs=11
typetype-server  | 2026-08-25T11:56:17.541122306Z 13:56:17.540 [DefaultDispatcher-worker-7] INFO  d.t.s.s.SubscriptionFeedService - subscription_feed event=refresh_started user=c9be25389960a1c03a4d4b62ee195e911b1ad091930f4d6252c7670e7592aabc requestId=d530a7f3-ae54-4b43-a143-1820120a79ec
typetype-server  | 2026-08-25T11:56:17.543479603Z 13:56:17.543 [eventLoopGroupProxy-7-20] INFO  Application - requestId=d530a7f3-ae54-4b43-a143-1820120a79ec method=GET path=/notifications/unread-count status=200 durationMs=10
typetype-server  | 2026-08-25T11:56:17.548051585Z 13:56:17.547 [DefaultDispatcher-worker-7] INFO  d.t.s.s.SubscriptionFeedService - subscription_feed event=refresh_completed user=c9be25389960a1c03a4d4b62ee195e911b1ad091930f4d6252c7670e7592aabc requestId=d530a7f3-ae54-4b43-a143-1820120a79ec generation=1787658977545 videos=0 failedSources=0 durationMs=7
typetype-server  | 2026-08-25T11:56:17.636735003Z 13:56:17.636 [eventLoopGroupProxy-7-11] INFO  Application - requestId=30db0199-8a22-47ab-be7a-efb46abdd917 method=GET path=/instance status=200 durationMs=322
typetype-server  | 2026-08-25T11:56:17.666763544Z 13:56:17.666 [eventLoopGroupProxy-7-21] INFO  Application - requestId=da283e9b-f5c9-40d5-be0d-5637b6f0c2e2 method=GET path=/blocked/channels status=200 durationMs=10
typetype-server  | 2026-08-25T11:56:17.667809746Z 13:56:17.667 [eventLoopGroupProxy-7-22] INFO  Application - requestId=ed14c336-0b4a-41cf-af79-5c3eaca27cb3 method=GET path=/blocked/videos status=200 durationMs=9
typetype-server  | 2026-08-25T11:56:17.669195010Z 13:56:17.669 [eventLoopGroupProxy-7-23] INFO  Application - requestId=dcb593bf-0534-475e-b243-3b497c0a0240 method=GET path=/blocked/keywords status=200 durationMs=7
typetype-server  | 2026-08-25T11:56:17.672867970Z 13:56:17.672 [eventLoopGroupProxy-7-24] INFO  Application - requestId=f63120b5-93b0-44b1-ab96-b8c885505430 method=GET path=/notifications status=200 durationMs=8
typetype-server  | 2026-08-25T11:56:21.254642680Z 13:56:21.254 [eventLoopGroupProxy-7-1] INFO  Application - requestId=f13727c9-97ef-469e-b607-303415b630c2 method=POST path=/youtube-session/browser/start status=201 durationMs=12
typetype-server  | 2026-08-25T11:56:45.087569366Z 13:56:45.087 [eventLoopGroupProxy-7-3] INFO  Application - requestId=65071bc8-070c-4a53-9559-0bd878720dd4 method=GET path=/health status=200 durationMs=0
typetype-server  | 2026-08-25T11:57:15.135476615Z 13:57:15.135 [eventLoopGroupProxy-7-4] INFO  Application - requestId=73057b5d-e957-404c-b33c-2199f9a0b448 method=GET path=/health status=200 durationMs=0
typetype-server  | 2026-08-25T11:57:18.323600525Z 13:57:18.323 [eventLoopGroupProxy-7-5] INFO  Application - requestId=4dbe2a5a-4849-4784-abc6-2611b95c0ea3 method=POST path=/sessions/activity status=204 durationMs=2
typetype-server  | 2026-08-25T11:57:45.174107607Z 13:57:45.173 [eventLoopGroupProxy-7-7] INFO  Application - requestId=fde4d8e2-91c3-40d3-b240-9008a6aec108 method=GET path=/health status=200 durationMs=0

Activity

  1. Priveetee commented on Aug 29, 2026

    @Priveetee
    Member

    Hey @kinouzero, thx for the detailed report!

    This was reported with TypeType 1.6.0. Could u update to TypeType 1.7.0 and see if the problem still happens?

    If it does, please tell me which step gets stuck and share the relevant Server and Token logs from that attempt :)

  2. kinouzero commented on Aug 31, 2026

    @kinouzero
    Author

    Hi @Priveetee,

    I still have the issue even with server 1.7.1 and the rest of the stack on 1.7.0.
    I've the error message when I try to pass the 2fa stage.
    Nothing in the token logs and this is the server logs

    typetype-server  | 2026-08-31T13:34:32.547833345Z 15:34:32.547 [eventLoopGroupProxy-7-14] INFO  Application - requestId=28c41ceb-d95a-4789-81b4-f954db6307bb method=DELETE path=/youtube-session/browser/6ee1e8a4-61d4-49c9-8211-78cef49648f5 status=404 durationMs=3
    typetype-server  | 2026-08-31T13:34:33.696200323Z 15:34:33.695 [eventLoopGroupProxy-7-15] INFO  Application - requestId=b97fe458-58fa-4c10-94ae-27fcbdd196c8 method=POST path=/youtube-session/browser/start status=201 durationMs=6
    typetype-server  | 2026-08-31T13:34:53.482557811Z 15:34:53.482 [eventLoopGroupProxy-7-17] INFO  Application - requestId=d5cf7304-c03c-4330-b3da-0d4a6e6244b0 method=POST path=/sessions/activity status=204 durationMs=3
  3. Priveetee commented on Sep 3, 2026

    @Priveetee
    Member

    Ok not gonna lie, this bug is verry tricky i've been on the freaking hell of debugging with Playwritgh with what he is expecting when manipulating the viewport and I may have something lmao

    If that doesn't bother u, when I feel ready could you spin up an instance of the beta TypeType to test it ?

    If u can it would be very helpful to me !

  4. Priveetee commented on Sep 3, 2026

    @Priveetee
    Member

    If not np ofc !

  5. moved this from Backlog to In progress in TypeType Roadmapon Sep 3, 2026
  6. kinouzero commented on Sep 7, 2026

    @kinouzero
    Author

    Hi, sure no problem, do you have a tag for the beta ?

  7. Priveetee commented on Sep 8, 2026

    @Priveetee
    Member

    Hi @kinouzero,

    I tested the remote YouTube login flow in TypeType 1.8.0 with both Zen Browser (Gecko) and Helium (Chromium). In both browsers, the login screen adapts correctly and the input events are captured properly.

    This release includes the fix for remote YouTube login completion after passkey or 2FA. Could you test again with the complete 1.8.0 stack and confirm whether the error still appears after the 2FA step?

    If it still fails, please share the exact step where it stops and the Server/Token logs from that attempt. I’ll keep the issue open until the fix is confirmed.

  8. moved this from In progress to Testing in TypeType Roadmapon Sep 8, 2026
  9. kinouzero commented on Sep 8, 2026

    @kinouzero
    Author

    Hi,

    I tried the new version 1.8.0, but it is worse than before, I cannot focus on the integrated browser to enter my email, so I cannot test the login. I tried with chrome & safari

  10. Priveetee commented on Sep 8, 2026

    @Priveetee
    Member

    Hi! Sorry it's worse with 1.8.0, and thanks for testing again!

    Before changing the size of the embedded browser, I'd like to understand what's blocking the input:

    • Are you using a Mac, iPhone or iPad?
    • What is your screen resolution, and is your browser window maximized or smaller?
    • Is your browser zoom set to 100%?
    • Can you click other buttons inside the Google login page, or does nothing respond?
    • When you click the email field, does a text cursor appear?

    Could you also share a screenshot of the full TypeType window, with any personal information hidden? That would help me see how the embedded browser fits on your screen.

  11. kinouzero commented on Sep 8, 2026

    @kinouzero
    Author
    • I'm on Mac
    • my screen is 1728x1117
    • the browser set at 100% and isn't maximized
    • I can't click on nothing inside the embedded browser, button or input
    Image
  12. kinouzero commented on Sep 11, 2026

    @kinouzero
    Author

    Hi,
    I tried on the 1.8.1 version, the browser is working again, but I've got an error on the phase indication with the browser freezing when I validate the password and google ask for 2FA, I've got nothing in the logs

  13. Priveetee commented on Sep 13, 2026

    @Priveetee
    Member

    Hey @kinouzero, thx for the retest on 1.8.1!

    I still can't reproduce it on my side, so I instrumented the whole remote login flow in a beta build. Everything is now streamed into the page: what the embedded browser does (navigations, cookie names per domain, inputs applied, Playwright errors, session capture, callback result) and what ur own browser does (clicks with their mapping, keys, focus lost, dropped inputs, frame gaps, tab visibility). No password and no cookie value ever appear in it.

    Could u spin up a beta stack from scratch for this test? Not ur current manual stack, a fresh one with the one-liner from the docs (https://typetype-video.github.io/Docs-TypeType/self-hosting/beta-and-main):

    curl -fsSL https://raw.githubusercontent.com/TypeType-Video/TypeType/dev/scripts/install-stack.sh | bash -s -- --beta
    

    It creates its own ~/typetype-beta-stack with separate ports and volumes, so it won't touch ur main stack.

    That way we compare the same thing, and if it works there we'll know the difference is in ur stack.

    Then on the YouTube sign-in page u'll see a "Diagnostics" box under the embedded browser. Do the login until it freezes or errors, hit "Copy diagnostics", paste the whole thing on https://bin.typetype.video and drop the link here (it stays readable for a week). The box stays visible after the session ends, so no rush.

    I tested the beta myself with a 2FA account and the whole flow goes through, so whatever breaks on ur side should show up clearly in those lines.

    Thx a lot for ur patience on this one :)

  14. Priveetee commented on Sep 21, 2026

    @Priveetee
    Member

    Hello @kinouzero by any chance did u got the time to test it pls ?

  15. Priveetee commented on Sep 29, 2026

    @Priveetee
    Member

    Hey @kinouzero! I wanted to check in once more on the YouTube sign-in issue. Your last test was on 1.8.1, and TypeType 1.9.0 is now available. Would you have a chance to try the sign-in flow again, especially the 2FA step, and let me know whether the browser still freezes or the progress indicator gets stuck? No rush, and thanks again for helping me test this!

  16. Aquarius-Situla commented on Sep 30, 2026

    @Aquarius-Situla
    Contributor

    Hi @Priveetee @kinouzero!

    We encountered this exact same issue previously and traced down what is happening:

    Why it happens

    The reason this is tricky to reproduce with standard accounts is that it specifically triggers when the Google account has Passkeys or FIDO2 Security Keys enabled:

    1. When a Google account has a passkey configured, Google's sign-in flow automatically prioritizes WebAuthn and attempts conditional mediation or calls navigator.credentials.get().
    2. The remote login Chromium browser runs containerized inside typetype-token without access to host/client platform authenticators (Windows Hello, macOS Touch ID, or client-side USB security keys).
    3. When navigator.credentials.get() is invoked with no platform authenticator available in the container, the request hangs or prompts a native dialog outside the viewport, causing the embedded browser session to freeze and fail.
    4. Accounts that only use standard password + TOTP (authenticator app) or SMS don't invoke WebAuthn, which is why standard 2FA accounts go through without hitting this freeze.

    The Fix

    In TypeType-Token's createRemoteLoginPage, we can inject an initialization script via context.addInitScript() before navigation:

    • Report isUserVerifyingPlatformAuthenticatorAvailable = false and isConditionalMediationAvailable = false on window.PublicKeyCredential.
    • Reject navigator.credentials.get() and create() with a standard NotSupportedError DOMException.

    When Google detects that WebAuthn / Passkeys are not supported in the browser environment, it gracefully bypasses the passkey step and displays the password and standard 2FA options (Google Authenticator / TOTP, Google Prompt, or SMS).

    I have opened a PR on TypeType-Token with the fix here:
    👉 TypeType-Video/TypeType-Token#21

    Tested on our self-hosted deployment: accounts with passkeys enabled now breeze through to the TOTP / password stage without freezing!

  17. Priveetee commented on Oct 8, 2026

    @Priveetee
    Member

    @kinouzero Answer meeee, pleassse !!! 😂

  18. kinouzero commented on Oct 13, 2026

    @kinouzero
    Author

    Hi, sorry for the long time, I wasn't able to access my server for a time. I tried with the last version 1.10.0 but it's not working. The error happened when I validate 2FA access from my phone

    Here is the log :

       0.0s [client] websocket connecting Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0.1 Safari/605.1.15
       0.0s [client] window 1510x893 dpr=2 visible=visible focus=true
       0.0s [client] surface 852x478 rect=385px from top
       0.0s [client] input dropped resize 852x478 readyState=0
       0.0s [client] websocket open
       0.0s [client] sent resize 852x478 buffered=42
       0.0s [client] status opening
       0.5s [client] status awaiting_login
       0.6s [client] frame #1 15420 bytes
       0.6s [client] frame size 852x478
       2.9s [client] input focused
       2.9s [client] click #1 client=732,518 rect=205,386 852x478 frame=852x478 viewport=852x478 mapped=527,131 pointer=mouse focused=true
       2.9s [client] sent pointer down 527,131 buffered=65
       3.0s [client] sent pointer up 527,131 buffered=63
       3.0s [client] pointer capture lost
       3.6s [client] sent text 1 chars buffered=27
       3.7s [client] sent text 1 chars buffered=27
       3.9s [client] sent text 1 chars buffered=27
       3.9s [client] sent text 1 chars buffered=27
       4.0s [client] sent text 1 chars buffered=27
       4.4s [client] sent key down Shift buffered=85
       4.6s [client] sent text 1 chars buffered=27
       4.7s [client] sent key up Shift buffered=76
       4.8s [client] sent text 1 chars buffered=27
       4.9s [client] sent text 1 chars buffered=27
       5.0s [client] sent text 1 chars buffered=27
       5.2s [client] sent text 1 chars buffered=27
       5.3s [client] sent text 1 chars buffered=27
       5.4s [client] sent text 1 chars buffered=27
       5.5s [client] sent text 1 chars buffered=27
       6.0s [client] sent text 1 chars buffered=27
       6.3s [client] frame #50 16481 bytes
       6.8s [client] sent text 1 chars buffered=27
       6.9s [client] sent text 1 chars buffered=27
       7.1s [client] sent text 1 chars buffered=27
       7.2s [client] sent text 1 chars buffered=27
       7.2s [client] sent text 1 chars buffered=27
       7.5s [client] sent key down Shift buffered=85
       7.5s [client] sent text 1 chars buffered=27
       7.6s [client] sent key up Shift buffered=76
       7.7s [client] sent text 1 chars buffered=27
       7.8s [client] sent text 1 chars buffered=27
       7.9s [client] sent text 1 chars buffered=27
       8.5s [client] sent key down Enter buffered=73
       8.5s [client] sent key up Enter buffered=71
      10.0s [client] sent key down Shift buffered=84
      10.2s [client] sent text 1 chars buffered=27
      10.2s [client] sent key up Shift buffered=75
      10.4s [client] sent text 1 chars buffered=27
      10.6s [client] sent text 1 chars buffered=27
      10.7s [client] sent text 1 chars buffered=27
      10.9s [client] sent text 1 chars buffered=27
      10.9s [client] sent text 1 chars buffered=27
      11.1s [client] sent text 1 chars buffered=27
      11.1s [client] sent text 1 chars buffered=27
      11.2s [client] sent text 1 chars buffered=27
      11.5s [client] sent key down Shift buffered=84
      11.6s [client] sent text 1 chars buffered=27
      11.7s [client] sent text 1 chars buffered=27
      11.8s [client] sent key up Shift buffered=75
      11.9s [client] sent text 1 chars buffered=27
      12.0s [client] sent text 1 chars buffered=27
      12.2s [client] frame #100 15000 bytes
      12.4s [client] sent text 1 chars buffered=27
      12.5s [client] sent text 1 chars buffered=27
      12.9s [client] sent key down Enter buffered=73
      13.0s [client] sent key up Enter buffered=71
      15.8s [client] sent pointer move 483,144 buffered=65
      16.2s [client] sent wheel 0,1 buffered=38
      16.2s [client] sent wheel 0,3 buffered=38
      16.2s [client] sent wheel -2,4 buffered=39
      16.2s [client] sent wheel -2,5 buffered=39
      16.3s [client] sent wheel -2,5 buffered=39
      16.3s [client] sent wheel -2,5 buffered=39
      16.3s [client] sent wheel -2,7 buffered=39
      16.3s [client] sent wheel -2,7 buffered=39
      16.3s [client] sent wheel -2,10 buffered=40
      16.3s [client] sent wheel -2,11 buffered=40
      16.3s [client] sent wheel -2,13 buffered=40
      16.3s [client] sent wheel -2,10 buffered=40
      16.3s [client] sent wheel -2,11 buffered=40
      16.3s [client] sent wheel -2,12 buffered=40
      16.3s [client] sent wheel -2,11 buffered=40
      16.3s [client] sent wheel -2,11 buffered=40
      16.4s [client] sent wheel -2,15 buffered=40
      16.4s [client] sent wheel -1,5 buffered=39
      16.4s [client] sent wheel -1,9 buffered=39
      16.4s [client] sent wheel -1,10 buffered=40
      16.4s [client] sent wheel -1,9 buffered=39
      16.4s [client] sent wheel -1,7 buffered=39
      16.4s [client] sent wheel -2,14 buffered=40
      16.4s [client] sent wheel -2,8 buffered=39
      16.4s [client] sent wheel -2,7 buffered=39
      16.4s [client] sent wheel -2,7 buffered=39
      16.4s [client] sent wheel -2,6 buffered=39
      16.4s [client] sent wheel -2,6 buffered=39
      16.5s [client] sent wheel -2,6 buffered=39
      16.5s [client] sent wheel -2,6 buffered=39
      16.5s [client] sent wheel -2,6 buffered=39
      16.5s [client] sent wheel -2,6 buffered=39
      16.5s [client] sent wheel -2,5 buffered=39
      16.5s [client] sent wheel -2,5 buffered=39
      16.5s [client] sent wheel -2,5 buffered=39
      16.5s [client] sent wheel -2,4 buffered=39
      16.5s [client] sent wheel -2,4 buffered=39
      16.5s [client] sent wheel -2,5 buffered=39
      16.5s [client] sent wheel -2,4 buffered=39
      16.5s [client] sent wheel -2,4 buffered=39
      16.6s [client] sent wheel -1,4 buffered=39
      16.6s [client] sent wheel -2,2 buffered=39
      16.6s [client] sent wheel -1,3 buffered=39
      16.6s [client] sent wheel 0,3 buffered=38
      16.6s [client] sent wheel -1,2 buffered=39
      16.6s [client] sent wheel -1,2 buffered=39
      16.6s [client] sent wheel -2,2 buffered=39
      16.6s [client] sent wheel 0,2 buffered=38
      16.6s [client] sent wheel -2,2 buffered=39
      16.6s [client] sent wheel 0,2 buffered=38
      16.6s [client] sent wheel -2,2 buffered=39
      16.6s [client] sent wheel 0,2 buffered=38
      16.7s [client] sent wheel 0,2 buffered=38
      16.7s [client] sent wheel 0,1 buffered=38
      16.7s [client] sent wheel 0,1 buffered=38
      16.7s [client] sent wheel 0,2 buffered=38
      16.7s [client] sent wheel 0,2 buffered=38
      16.7s [client] sent wheel -2,2 buffered=39
      16.7s [client] sent wheel 0,2 buffered=38
      17.1s [client] sent pointer move 372,263 buffered=65
      17.9s [client] sent pointer move 604,372 buffered=65
      18.0s [client] click #2 client=808,760 rect=205,386 852x478 frame=852x478 viewport=852x478 mapped=603,373 pointer=mouse focused=true
      18.0s [client] sent pointer down 603,373 buffered=65
      18.0s [client] frame #150 31590 bytes
      18.1s [client] sent pointer up 603,373 buffered=63
      18.1s [client] pointer capture lost
      19.6s [client] sent wheel 0,2 buffered=38
      19.6s [client] sent wheel -2,4 buffered=39
      19.6s [client] sent wheel -2,5 buffered=39
      19.6s [client] sent wheel -2,4 buffered=39
      19.6s [client] sent wheel -1,2 buffered=39
      19.6s [client] sent wheel -1,6 buffered=39
      19.6s [client] sent wheel -1,9 buffered=39
      19.6s [client] sent wheel -2,9 buffered=39
      19.6s [client] sent wheel -2,5 buffered=39
      19.6s [client] sent wheel -2,5 buffered=39
      19.6s [client] sent wheel -2,4 buffered=39
      19.7s [client] sent wheel -2,5 buffered=39
      19.7s [client] sent wheel -2,4 buffered=39
      19.7s [client] sent wheel -2,3 buffered=39
      19.7s [client] sent wheel -2,3 buffered=39
      19.7s [client] sent wheel -2,3 buffered=39
      19.7s [client] sent wheel -1,2 buffered=39
      19.7s [client] sent wheel -1,2 buffered=39
      19.7s [client] sent wheel -1,2 buffered=39
      19.7s [client] sent wheel 0,2 buffered=38
      19.7s [client] sent wheel 0,2 buffered=38
      19.7s [client] sent wheel 0,2 buffered=38
      19.7s [client] sent wheel 0,2 buffered=38
      19.8s [client] sent wheel 0,2 buffered=38
      19.8s [client] sent wheel 0,2 buffered=38
      19.8s [client] sent wheel 0,1 buffered=38
      19.8s [client] sent wheel -1,0 buffered=39
      24.0s [client] frame #200 32410 bytes
      24.3s [client] sent pointer move 574,376 buffered=65
      25.0s [client] sent pointer move 559,315 buffered=65
      25.2s [client] click #3 client=764,702 rect=205,386 852x478 frame=852x478 viewport=852x478 mapped=559,315 pointer=mouse focused=true
      25.2s [client] sent pointer down 559,315 buffered=65
      25.3s [client] sent pointer up 559,315 buffered=63
      25.3s [client] pointer capture lost
      29.9s [client] frame #250 27044 bytes
      31.5s [client] status capturing_session
      33.0s [client] backend error: Completion callback failed
      38.6s [client] input blurred, active=BODY
      43.7s [client] sent cancel buffered=17
  19. Priveetee commented on Oct 13, 2026

    @Priveetee
    Member

    No worries at all ;) Based on ur logs I read that ur call go pass through capturing_session and then warn backend error: Completion callback faile so the failure go after the 2FA but doesn't tell us why this fail....

    Im gonna add some other logs so we can trace it !

  20. Priveetee commented on Oct 22, 2026

    @Priveetee
    Member

    Hello so since I have completely reshaped the login design, now if this doesn't work for u, honestly i'm out of idea lmao.

    When u got a little bit of time go try 1.11.0 and tell me !

  21. kinouzero commented on Oct 22, 2026

    @kinouzero
    Author

    Hi, I updated to the last version but nothing happened when I click the login button, I just got Echec in red, when I click I got a 404 (circled) and nothing in the logs, I tried with chrome and safari

    Image
  22. Priveetee commented on Oct 26, 2026

    @Priveetee
    Member

    Hey! First, I’m really sorry this has taken so long, and thank you for being so patient with me. In 1.11.1, I removed the remote-browser sign-in; the TV device-code flow is the login option that remains. Before trying it, could you clear the cookies/site data for your TypeType instance? You can do that from the three-dot menu by the address bar. Then try signing in with the TV code and let me know if it works. If it still fails, just tell me where it gets stuck and what error you see. Thanks again for bearing with me! ദ്ദി( •̀ ᴗ •́ )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions