Skip to content

GT-3102 Adjust the personalized tools language filter - #4587

Open
tjohnson009 wants to merge 2 commits into
developfrom
GT-3102-Personalized-Tools-Language-Filter
Open

tjohnson009 wants to merge 2 commits into
developfrom
GT-3102-Personalized-Tools-Language-Filter

Conversation

@tjohnson009

Copy link
Copy Markdown
Contributor

Resolves GT-3102

Gives the Personalized tools language filter its own persisted setting so the Personalized and All Tools filter selections are independent, per the ticket spec and the Figma design.

Changes

  • New dashboardPersonalizedFilterLocale setting. Unset resolves to the app language, which satisfies the first-run default with no migration — while the existing All Tools setting keeps its unset = "Any language" behavior.
  • DefaultToolFiltersStateProducer is mode-aware: it reads/writes the per-tab setting, resolves the personalized default, and omits the "Any language" item in personalized mode.
  • LanguageFilter hides the "# Tools available" supporting text in personalized mode, and never renders the "Any language" label there (including the brief state before the stored language loads, matching how Lessons behaves).
  • The Personalization Paparazzi scenarios now set a selected language to reflect the realistic filter state — those goldens are re-recorded via the Record Snapshots workflow.

Intentionally unchanged

  • The category filter remains shared between tabs — the ticket only covers the language filter. Asking Jillian whether the category dropdown's counts should also be hidden, since the "unwieldy number" rationale could apply there too.
  • The Figma mockup still shows "Any language" on the personalized button; the ticket text explicitly supersedes that.
  • The filter's position (between Featured and the ranked list) already matched the design — no layout change needed.

🤖 Generated with Claude Code

Give the personalized tools language filter its own persisted setting
so the Personalized and All Tools filter selections are independent.
The personalized filter defaults to the app language until the user
changes it, hides the "Any language" option, and hides the tools
available counts in the dropdown, matching the personalization design.

The Personalization Paparazzi scenarios now set a selected language to
reflect the realistic filter state, those goldens need re-recording.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tjohnson009
tjohnson009 requested a review from a team September 3, 2026 12:25

@tjohnson009 tjohnson009 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review: GT-3102 (self-review, pre-push)

Summary

Per-tab persisted language filter selection, app-language default, no "Any language" option, and no availability counts in personalized mode — every ticket bullet pinned by a test.

✅ Looks Good

  • Repo-wide ktlint passes; both app unit-test variants and library:base tests pass
  • Per-mode setting writes guarded by cross-contamination assertions (coVerify(exactly = 0) on the opposite key)
  • The new Settings pair is an exact pattern-copy of its sibling, with a mirrored SettingsTest
  • The "Any language" string can never render in personalized mode, including the pre-load blink (matches Lessons)
  • Paparazzi Personalization scenarios updated to the realistic selected-language state; All Tools goldens verified untouched

⚠️ Minor

  • ToolFiltersTest uses the file's pre-existing createComposeRule() pattern rather than runComposeUiTest — converting the file is a separate chore; the new tests follow local convention.
  • The 13 Personalization goldens fail verify until the Record Snapshots workflow commit lands on this branch (workflow triggered).

❌ Must Fix

  • None

Verdict: APPROVE (posted as comment — self-review)

🤖 Posted by Claude Code

@codecov

codecov Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.00000% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 53.30%. Comparing base (35ed24f) to head (b9d0956).
⚠️ Report is 15 commits behind head on develop.

Files with missing lines Patch % Lines
...org/cru/godtools/ui/dashboard/tools/ToolFilters.kt 91.66% 0 Missing and 2 partials ⚠️
...ols/ui/dashboard/tools/ToolFiltersStateProducer.kt 87.50% 0 Missing and 2 partials ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #4587      +/-   ##
===========================================
+ Coverage    53.19%   53.30%   +0.10%     
===========================================
  Files          440      440              
  Lines        11585    11612      +27     
  Branches      1960     1970      +10     
===========================================
+ Hits          6163     6190      +27     
  Misses        4839     4839              
  Partials       583      583              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant