Skip to content

Home widget settings show unlabeled checkboxes when Performance Cards or Recent Games are empty #3650

Description

@lichessthrowaway

What is the problem?

In home-screen edit mode, _EditableWidget renders a checkbox beside the live home widget content but does not render the widget's explicit text label:

Row(
  children: [
    Checkbox.adaptive(...),
    Expanded(
      child: IgnorePointer(
        child: child,
      ),
    ),
  ],
)

The live child therefore acts as the checkbox's only visual label. When that child returns SizedBox.shrink(), the editor displays a floating, unlabeled checkbox.

This happens for at least two widgets on current main:

  • Performance Cards: the editor creates the row for an authenticated user, but PerfCards returns SizedBox.shrink() when userPerfs.isEmpty.
  • Recent Games: the editor always creates the row, but RecentGamesWidget returns SizedBox.shrink() when data.isEmpty.

A brand-new account with no rated performances and no games therefore shows orphan checkboxes in the customization screen.

The labels already exist in HomeEditableWidget.label(context.l10n) for every editable home widget, including Performance Cards and Recent Games, but _EditableWidget does not display them.

Expected behavior: Every checkbox in home-screen edit mode has a stable textual label, regardless of whether its corresponding home widget currently has data.

Actual behavior: Performance Cards and Recent Games can render as unlabeled checkboxes for new or empty accounts.

Steps to reproduce the bug

  1. Sign in with a new account that has no rated performances and no games.
  2. Open the home screen's widget customization/edit mode.
  3. Observe the checkbox before Quick Pairing: Performance Cards has no visible label.
  4. Observe the checkbox below Blog: Recent Games has no visible label.
  5. Play rated games or create recent-game data and return to the editor; the live child content may appear, demonstrating that the checkbox label depends on data availability.

App version

0.26.6

Device Info

iPhone / iOS 27.0

Additional information

Related work:

PR #3612 addressed the same blank-checkbox symptom for Friends and Featured Tournaments by hiding those rows when their children have no content. It did not cover Performance Cards or Recent Games, which remain reproducible on current main.

More fundamentally, hiding empty rows keeps editor controls coupled to live content. A better fix is for _EditableWidget to render the existing explicit label from HomeEditableWidget.label(context.l10n), independently of the child widget's current data. This would keep customization options identifiable and available before a user has performance or game data.

Suggested result:

  • Performance Cards
  • Friends
  • Quick Pairing
  • Open Tournaments
  • Blog
  • Recent Games

Each label should remain visible beside its checkbox even when the corresponding home widget would currently render no content.

Activity

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

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions