Repository navigation
chore: add fsd lint guardrails and specs before the frontend move - #93
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Tw6MLK1HN9LphNtP6APJ2w
This was referenced Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Chunk 1 of 6 of the frontend FSD + kebab-case move. Nothing moves yet. This PR adds the tests and linters the later chunks rely on.
Changes
feed-filters.spec.ts: each filter row (From, Topics, Published, Sort by, search) narrows the feed, and the list matches the response.rails.spec.ts: on wide screens the header spans the inline rails on the feed and narrows on/profile. On mid screens the rail button shows on the feed only, and[opens and closes the sheet but not while typing in search.admin.spec.ts: an admin opens analytics from the user menu and changes the window. A reader sees "Admins only." Logged out,/adminredirects to login.bun run lint:layers, plus a CI step intest-frontend.ymlwithcontinue-on-error(report only).fsd/insignificant-sliceis off: Steiger only counts references from FSD layers, androutes/isn't one, so every slice imported only by a route shows as unused.useFilenamingConvention(kebab-case) atwarn. It passes__root.tsx,_layout.tsx,$id.tsxandfoo.index.tsxwithout extra config.scripts/check-banned-module-names.shnow allowfrontend/src/shared/, the FSD layer name Steiger requires. The hook still checks every name below it.src/index.css:bun run lintreformats one rule that was committed unformatted on master.Findings from the spike
routes/above the layers. It catches feature→feature and upward imports. It does not catchroutes/importing past a slice'sindex.ts.no-segmentless-slices), so slices useui/,model/andlib/segments.@/shared/*, the shadcn CLI writes intosrc/shared/ui/and rewrites imports correctly. I tested against a stub registry becauseui.shadcn.comis blocked from this sandbox.LikeButtongoes intofeatures/feed, andAuthLayoutbecomes a pathlessroutes/_auth.tsx.Checks
bun run buildgreen.test-frontend.ymlit reports no findings.Generated by Claude Code