chore(blog-search): add astro/check dep, plan, and follow-up note
- @astrojs/check + typescript bump are needed to run `npx astro check`, which is the type-verification command used throughout this branch. - docs/superpowers/plans/ pairs with the existing spec under specs/. - docs/superpowers/follow-ups/ records the featured-match behaviour change surfaced during manual test; addresses in a later branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d80cd255d4
commit
be9b0ac994
4 changed files with 1533 additions and 2 deletions
|
|
@ -0,0 +1,34 @@
|
|||
# Follow-up: featured article should respect search match
|
||||
|
||||
**Date filed:** 2026-06-02
|
||||
**Source:** Manual test of `feat/blog-search` before merge
|
||||
**Relates to:** `docs/superpowers/specs/2026-06-01-blog-search-design.md` (§ "What should happen to the featured article when a query is active?")
|
||||
|
||||
## What's wrong
|
||||
|
||||
When a query is typed into the blog search input, the featured article currently hides regardless of whether its content matches the query. In manual testing this felt wrong — if the featured article matches the search term, it should remain visible like any other matching row.
|
||||
|
||||
## What the original design said
|
||||
|
||||
During brainstorming, three options were presented for featured-article behavior under filtering. The user chose "Hide while filtering" with the reasoning "simpler mental model: query active = filter mode." After actually using the feature, the user now wants option 2 from that brainstorm: **treat the featured article as a filterable row** — visible iff it matches the query.
|
||||
|
||||
## What needs to change
|
||||
|
||||
In `src/components/molecules/BlogSearch.astro`, the `applyFilter` function has this branch:
|
||||
|
||||
```ts
|
||||
} else if (isFeatured) {
|
||||
// Featured hides whenever there's a query, regardless of match.
|
||||
visible = false;
|
||||
}
|
||||
```
|
||||
|
||||
Replace it so the featured row goes through the same `tokens.every(t => haystack.includes(t))` check as every other row. Drop the `isFeatured` special case entirely — it can fall through to the general match branch.
|
||||
|
||||
Then sanity-check the empty-state count: `visibleCount` currently skips the featured (`if (visible && !isFeatured) visibleCount += 1`). Once featured participates in the filter, it should count toward the visible total — otherwise a query that *only* matches the featured will trigger the "no entries match" message even though featured is showing. Drop the `!isFeatured` guard there too.
|
||||
|
||||
Visually the featured block is much bigger than a row, so when it's the sole match the layout will look unusual but not broken. If that turns out to feel wrong in practice, the second-order fix would be to render the featured-as-result in the same compact PostRow style as the archive. Don't pre-emptively build that — wait until the simple behavior change is in and see if it's actually needed.
|
||||
|
||||
## Update the spec when you fix this
|
||||
|
||||
Update `docs/superpowers/specs/2026-06-01-blog-search-design.md`'s relevant section so the spec reflects the new behavior. The current text claims "Featured hides while filtering" — that line is now wrong.
|
||||
Loading…
Add table
Add a link
Reference in a new issue