Merge Tier Template into Tier List; pool accepts any card#628
Merged
Conversation
Based on user feedback that the separate Tier Template card was confusing
(you had to create + link one before a Tier List could do anything), this
folds the template's capabilities directly into Tier List:
- Pool of items + "Generate with AI" now live on TierList itself; the
TierTemplate card, its instance, and Spec are removed. The `template`
link is gone.
- `items` is now linksToMany(CardDef): the pool accepts ANY card, each
rendered via its own fitted view (generation still mints TierItem cards).
- One shared TierBoard component drives both formats:
* isolated (list) view = read-only tier bands + drag-to-rank only.
* edit view = same board extended with tier editing, AI generation,
per-tile remove, an "Add a card" chooser button, and an editable name.
- Tiers default to a standard S/A/B/C/D/F set (no template to inherit from).
- UX fixes from testing: suppress the fitted card's default container border,
center text-only item labels, gate the filter to large pools (>20), and
make both views flow inside a scrolling host with a sticky tray so the
unranked tray is never clipped.
- Migrated the example: folded the Programming Languages items onto
My Language Ranking and dropped the template link.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR simplifies the tier-list feature by removing the separate TierTemplate card concept and moving the item pool + AI generation directly onto TierList, while also allowing the pool to link to any card type and render each via its own fitted view.
Changes:
- Removed the TierTemplate card/spec/example and eliminated the
templaterelationship from TierList usage. - Added
items: linksToMany(() => CardDef)on TierList, updated the board UI to render arbitrary cards viagetComponent(...)/fitted, and migrated the example TierList to link items directly. - Added default tiers (S/A/B/C/D/F) and consolidated isolated/edit UI onto a shared
TierBoardwith an@editingflag, including AI pool generation in edit mode.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| d29736-tier-list/TierTemplate/programming-languages.json | Deleted the TierTemplate example instance. |
| d29736-tier-list/TierList/my-language-ranking.json | Migrated the example TierList to link items directly (no template). |
| d29736-tier-list/tier.gts | Updated Tier field comment to reflect TierList-only usage. |
| d29736-tier-list/tier-template.gts | Deleted the TierTemplate card implementation. |
| d29736-tier-list/tier-list.gts | Major refactor: TierList owns items, default tiers, shared board component, fitted rendering for arbitrary cards, and AI generation in edit mode. |
| d29736-tier-list/tier-item.gts | Adjusted fitted layout to better center name-only tiles and improve label wrapping. |
| d29736-tier-list/Spec/d7d3d0cf-ab11-437e-b102-bdabbb3a9cf4.json | Deleted the TierTemplate Spec. |
| d29736-tier-list/Spec/d6aa929f-53d7-43d0-8fab-11037e3102bd.json | Updated TierList Spec README to match the new merged model and views. |
| d29736-tier-list/CardListing/e442113f-570a-4053-be33-2756371f88bb.json | Removed TierTemplate spec from the listing’s referenced specs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0393b9f to
3e12e49
Compare
- Loosen TierBoard's model arg type (boxed model has optional fields, so the strict TierList type was incompatible) — fixes lint:types error. - itemLabel: also fall back to cardInfo.name and wrap in String() so filtering works for any card type and never yields "[object Object]". - Only apply the unranked filter while its input is visible (showFilter), so a stale filter value can't hide items after the pool shrinks below threshold. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3e12e49 to
73fcebd
Compare
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.
Why
User feedback on the tier-list feature: the separate Tier Template card was confusing — you had to create one and link it before a Tier List could do anything, even though the template was really just "a feature to generate items." This merges the two so a single Tier List card does everything.
What changed
Merge template → list
TierList. TheTierTemplatecard, its example instance, and its Spec are deleted; thetemplatelink is removed.Pool accepts any card
itemsis nowlinksToMany(() => CardDef)— the pool can hold any card type, each rendered via its ownfittedview (getComponent). Generation still mintsTierItemcards.One shared board, two formats
TierBoardcomponent drives both views via an@editingflag:UX fixes from testing
@displayContainer={{false}}).Testing
Manually tested in a local catalog realm: ranking persists, generation populates the pool, any-card fitted rendering works, edit/list views scroll correctly, and the example (My Language Ranking) renders end-to-end.
🤖 Generated with Claude Code