proposal.md 2.31 KB

Proposal: Fix macOS Login Input Field Visibility

Overview

Change ID: fix-macos-login-input-visibility

Problem: On macOS, the username and password Entry input fields in the LoginWindow are not visible (appearing as empty/transparent), while checkboxes display correctly. This prevents users from seeing what they're typing during login.

Impact: Critical usability issue - users on macOS cannot effectively use the login functionality as they cannot see the input fields or their typed content.

Root Cause Analysis

After analyzing image_generator.py lines 162-183, the issue stems from:

  1. Missing explicit background color: Entry widgets on lines 162-166 and 178-183 don't specify a bg parameter
  2. Theme compatibility: The 'clam' theme (line 123) may render Entry widgets with system-default colors that conflict with macOS's window background
  3. No explicit styling: Unlike labels and frames which have explicit bg='white', Entry widgets rely on theme defaults

The checkboxes work because they explicitly set bg='white' and activebackground='white' (lines 199-214).

Proposed Solution

Add explicit background and foreground colors to both Entry widgets to ensure visibility across all platforms, matching the pattern already used for other UI elements.

Changes Required:

  • Add bg='#fafafa' (light gray background for better contrast)
  • Add fg='#000000' (explicit black text)
  • Optionally add insertbackground='#000000' (cursor color) for better visibility

This approach:

  • Maintains consistency with the main app's text input styling (see line 627: bg='#fafafa')
  • Follows the existing pattern of explicit color specification
  • Minimal risk - only affects visual rendering, not functionality

Alternative Approaches Considered

  1. Change theme from 'clam': Would affect entire UI consistency
  2. Platform-specific code: Adds complexity and maintenance burden
  3. Use ttk.Entry instead of tk.Entry: May have other side effects

Dependencies

None - this is a self-contained UI fix.

Risks

  • Minimal: Only changes visual appearance
  • No breaking changes to functionality
  • Backwards compatible

Testing Strategy

  • Manual testing on macOS to verify input fields are visible
  • Verify on Windows/Linux that appearance remains acceptable
  • Test both light and dark system themes