Skip to content

Device test: device ID, theme and more diagnostics, with how to fix what fails #2054

Closed

Description

@rpgmem

Problem

The "Test my device" mode (#2047) checks what a form needs, but not what support is asked about most:

  • Device limit. A visitor says "it says I already submitted from this device", or the limit does not hold on one phone. Nothing shows whether the browser gives the fingerprint signals, nor whether they stay the same between two reads. A signal that changes on every read breaks the "N of M" match.
  • Theme. A visitor reports odd colours. Nothing shows whether the dark theme is applied, nor what the site setting and the system preference are.
  • Common silent causes. A wrong device clock breaks date windows and the captcha's expiry. Blocked storage (a private window) makes "already submitted" and "Continue anyway" forget. A browser without Web Crypto or Workers cannot solve the ALTCHA captcha. Data saver can stop scripts loading.
  • No way forward. A failing row says what is wrong, not what to do about it. A check that hangs leaves the row with no answer.

Plan

  • Device ID. It reads the same signals the forms send (ffc-device-signals.js, thumbmark), through a read-only collector that never creates the persistent id, twice. It shows:

    • a short code (8 hex characters from the signal hashes);
    • how many of the site's signals were read;
    • whether they stayed the same, naming the ones that changed.

    Its states include "not used on this site" and "not available in this browser".

  • Theme: the theme applied, the site setting and the system preference.

  • Local storage: a probe key written and removed at once.

  • Captcha: Web Crypto and Web Workers.

  • Device clock: compared with the Date header of a HEAD request for the page itself; no endpoint.

  • Time zone and language: the IANA zone, the UTC offset and the language.

  • Screen: window, screen and zoom.

  • Connection: online or offline, the type and data saver, where the browser says them.

  • "How to fix it". A failing row carries an information button that reveals the fix; for a blocked location the fix depends on the platform.

  • Countdown. A check still running counts down from 20 seconds and says when no answer came.

  • Nothing is sent or stored.

Acceptance criteria

  • The device ID row shows the code, the count and stability, names the changing signals, and never creates ffc_device_id.
  • Device ID off and unavailable states.
  • The theme row for each setting × system preference.
  • Storage, captcha, clock (correct, ahead, behind, unknown), locale, screen and connection (type, data saver, offline) rows.
  • The information button and its fix on warn/fail only; platform-aware location fix.
  • Countdown and timeout.
  • Tests for each case.

Activity

  1. changed the title [-]Device test: show the device id the device limit reads, and the theme in use[/-] [+]Device test: device ID, theme and more diagnostics, with how to fix what fails[/+] on Oct 24, 2026
  2. added a commit that references this issue on Oct 24, 2026
    3b64f06
  3. rpgmem commented on Oct 24, 2026

    @rpgmem
    OwnerAuthor

    Delivered in #2055 (merged to develop). New device-test rows:

    • local storage;
    • captcha requirements;
    • device ID, read-only (short code, signals read, stable or unstable between reads);
    • device clock against the server's;
    • time zone and language;
    • screen;
    • connection;
    • theme.

    Each failing row has a "How to fix it" info button with platform-specific steps. A row that is still running counts down from 20 seconds and then asks for a reload.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions