feat: add rtl filtering and guidance for search/design-system - #416
feat: add rtl filtering and guidance for search/design-system#416notedavidrinaldi wants to merge 3 commits into
Conversation
|
Thanks @notedavidrinaldi for the comprehensive implementation! The PR looks solid and covers all the key functionality. I noticed one difference from the earlier discussion with @clark-cant — the original suggestion was to use an rtl_level column with values full/partial/caveats instead of a boolean rtl_compatible column. This would allow for more flexible filtering (e.g., --rtl=full for strict RTL-only results). Would you be open to updating the schema to match that approach? I'd be happy to help with the changes if needed. Let me know your thoughts! Thanks again for your work on this! 🙌 |
|
Thank you for implementing the requested changes so promptly. I have reviewed the latest commit (3337387) and confirm that the migration to the tri-state The logic in I appreciate your collaboration and the quality of your work. Please let me know if you require any further review or assistance before merging. Best regards, |
clark-cant
left a comment
There was a problem hiding this comment.
Review: Schema Mismatch with Maintainer Specification
Summary: PR adds RTL filtering and design-system guidance, which is a welcome feature. However, there is a critical schema mismatch between what was specified and what was implemented.
Risk level: Medium — feature scope is appropriate but data schema does not match maintainer's explicit specification.
Mandatory Gates
- Duplicate/prior implementation: clear — no prior RTL implementation found
- Project standards: docs found — maintainer specified exact schema in issue #409 comment
- Strategic necessity: clear value — RTL support expands accessibility for Arabic/Persian/Hebrew markets
Findings
Important (must fix):
-
Schema mismatch: The maintainer explicitly specified a
rtl_levelcolumn with tri-state values (full,partial,caveats) for flexible filtering. The PR implementsrtl_compatiblewith booleanTRUE/FALSEvalues instead. This contradicts the specification at #409 (comment) -
Comment/code discrepancy: Your comment at #409 (comment) states you "switched to tri-state rtl_level (full|partial|caveats)" but the actual diff still shows:
- CSV columns named
rtl_compatible(notrtl_level) - Boolean values
TRUE/FALSE(notfull/partial/caveats) - search.py filtering:
row.get('rtl_compatible', 'TRUE').upper() == 'TRUE'
- CSV columns named
-
Search flag interface: Maintainer specified
--rtlwith optional values (--rtl=full,--rtl=partial) for granular filtering. PR implements--rtlas a simple boolean flag with no value options.
What Looks Good
- ✅ RTL guidelines section in design-system output is well-structured
- ✅ Source-of-truth sync across
src/,cli/assets/,.claude/skills/is maintained - ✅ README and skill-content.md updates included
- ✅ Closes #409 reference in PR body
Required Actions
- Rename
rtl_compatiblecolumn tortl_levelin all CSVs - Change values from
TRUE/FALSEtofull/partial/caveatsbased on RTL suitability - Update search.py to support
--rtlwith optional values per specification - Verify the commit you referenced (3337387) actually contains these changes
Verdict: Request changes — schema must align with maintainer specification before merge.
Posted by github-maintain cron at $(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
Following up on the review from @clark-cant. I have also reviewed the current state of the PR and the points raised are critical for alignment with the project's specification:
I understand this is a significant change. If you need any assistance with updating the schema or the search logic, I am available to help. We can coordinate to get this PR in line with the specification. Let me know your thoughts or if you need me to open a separate PR with the required fixes. Best, |
clark-cant
left a comment
There was a problem hiding this comment.
Updated Review: Partial Fix Acknowledged
Summary: PR partially addresses the schema mismatch from the previous review. CSV columns are now correct, but the CLI flag interface remains incomplete.
What's Fixed ✅
- CSV schema corrected: Columns are now named
rtl_levelwith tri-state values (full,partial,caveats) instead of booleanrtl_compatible. This matches the maintainer specification. - Internal filtering logic: The
_resolve_rtl_levelfunction in core.py properly handles the tri-state values with backward compatibility. - Data sync: Source-of-truth sync across
src/,cli/assets/,.claude/skills/is maintained.
What's Still Missing ❌
--rtlflag interface: Still implemented asaction="store_true"(boolean). The maintainer specification requiresnargs="?"with optional values for granular filtering:
Current implementation:
parser.add_argument("--rtl", action="store_true", help="Filter results to RTL-friendly entries")Required implementation:
parser.add_argument(
"--rtl",
nargs="?",
const="all",
choices=["all", "full", "partial", "caveats"],
default=None,
help="Filter results by RTL compatibility level"
)This would enable:
--rtl(no value) → all RTL-compatible entries--rtl=full→ onlyrtl_level == "full"--rtl=partial→ onlyrtl_level == "partial"
Required Actions
- Update the
--rtlflag to usenargs="?"with choices as specified - Update the search filter logic to respect the optional value (currently filters all RTL entries regardless)
- Verify the change works with both
--domainsearch and--design-systemmodes
Verdict
Changes requested — CSV schema is now correct, but the CLI interface needs the granular filtering capability. This is a small change (~10 lines in search.py).
Posted by github-maintain cron
|
Hi @notedavidrinaldi — I prepared a helper PR addressing the requested RTL changes and current merge conflicts: notedavidrinaldi#1 It adds granular |
|
Hi, sorry for the delayed response 🙏 Thank you for the review and for the helpful feedback. I’ve addressed the RTL-related concern and pushed the fixes on branch Summary of updates:
Please let me know if you want any further adjustments — happy to handle them right away. Thanks again! 🙌 |
|
Thank you for your continued work on this and for pushing the fixes to your branch. As you mentioned, the level-aware To ensure this can be merged, could you please update this PR (#416) with the latest changes from your I'm available to help if you need anything. Best regards, |
|
Hey @notedavidrinaldi 👋 Thanks for pushing the RTL fixes in commit Current blocker: This PR has merge conflicts with @darajoukar thanks for the ongoing coordination and review — your feedback on the Posted by github-maintain cron |
clark-cant
left a comment
There was a problem hiding this comment.
Re-review: Previous Findings Addressed ✅
Summary: PR now implements the maintainer-specified schema and CLI interface correctly.
What's Fixed
--rtlflag interface: Now usesnargs="?"with choices["full", "partial", "caveats", "all"]— matches specification exactly ✅- Integration: Flag is passed to both
generate_design_system()andsearch()functions ✅ - Documentation: skill-content.md includes RTL Design Support section with usage examples ✅
Remaining Blocker
Merge conflicts: PR is currently DIRTY and cannot be merged until rebased against main.
@notedavidrinaldi please rebase/merge from main to resolve conflicts. Once clean, this can be merged.
Verdict: Approve — code changes are correct. Merge blocked by conflicts.
Posted by github-maintain cron at $(date -u +"%Y-%m-%dT%H:%M:%SZ")
clark-cant
left a comment
There was a problem hiding this comment.
Review: Schema mismatch with maintainer specification
@notedavidrinaldi thanks for the RTL implementation work and the recent commit cca4313 that added level-aware filtering.
However, the PR still has a schema mismatch with the maintainer specification from issue #409:
Current implementation
- CSV column:
rtl_compatiblewith booleanTRUE/FALSEvalues --rtlflag: acceptsfull|partial|caveats|allbut the underlying data doesn't support this
Maintainer specification
- CSV column should be:
rtl_levelwith tri-state values (full,partial,caveats) --rtlflag should filter based on thertl_levelcolumn values
What needs to change
- CSV schema: Rename
rtl_compatibletortl_levelinstyles.csv,products.csv, andcolors.csv - Data values: Change from boolean
TRUE/FALSEto tri-statefull|partial|caveats - Search logic: Update
search.pyto filter onrtl_levelcolumn instead ofrtl_compatible
The good news: your commit cca4313 already has the correct --rtl flag interface with optional values. The main issue is the underlying CSV data structure doesn't match.
Also noting this PR is currently blocked by merge conflicts against main. A rebase will be needed.
Scope check
- ✅ Addresses issue #409 (RTL support proposal)
- ✅ Implements maintainer-specified schema (mostly - data values need correction)
⚠️ 21 files changed, +1963/-1446 - this is on the larger side but acceptable for a feature that touches data files across source/cli/assets⚠️ Merge conflicts need resolution
Please update the CSV data to use rtl_level with tri-state values and rebase from main. Once those changes are in, this should be ready for approval.
cc @darajoukar who has been following this closely
Summary
Add RTL support for search and design-system generation.
Changes
--rtlflag support in CLI (search.py) for both domain search and design-system mode.rtl_compatiblewhen--rtlis used.rtl_compatiblecolumn tostyles.csv,colors.csv,products.csv.src/,cli/assets/, and.claude/.Validation
npm --prefix cli run check:assetsnpm --prefix cli run validate:csvnpm --prefix cli run smoke:domainsnpm --prefix cli run smoke:stacksnpm --prefix cli run typechecknpm --prefix cli run buildnpm --prefix cli run prepublishOnlyCloses #409