feat: align builder commander hover with deck view

- reuse shared hover metadata in Step 5 and keep the preview in-app\n- let hover reasons expand without an embedded scrollbar\n- document the hover polish in CHANGELOG and release notes
This commit is contained in:
matt 2025-09-29 21:32:08 -07:00
parent b0080ed482
commit a0299fbcfc
14 changed files with 1046 additions and 473 deletions

View file

@ -72,6 +72,13 @@
"Proliferate"
],
"primary_color": "Black",
"example_commanders": [
"Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)",
"Rishkar, Peema Renegade - Synergy (Counters Matter)",
"Krenko, Tin Street Kingpin - Synergy (Counters Matter)",
"Yawgmoth, Thran Physician - Synergy (Proliferate)",
"Tekuthal, Inquiry Dominus - Synergy (Proliferate)"
],
"example_cards": [
"Spirit Shackle",
"Greater Werewolf"
@ -549,7 +556,8 @@
"Appa, Steadfast Guardian",
"Aang, Airbending Master",
"Avatar Aang // Aang, Master of Elements",
"Aang, the Last Airbender"
"Aang, the Last Airbender",
"Muldrotha, the Gravetide - Synergy (Avatar Kindred)"
],
"example_cards": [
"Appa, Steadfast Guardian",
@ -558,6 +566,12 @@
"Avatar Aang // Aang, Master of Elements",
"Aang, the Last Airbender"
],
"synergy_commanders": [
"Multani, Yavimaya's Avatar - Synergy (Avatar Kindred)",
"Gishath, Sun's Avatar - Synergy (Avatar Kindred)",
"Niv-Mizzet, Parun - Synergy (Flying)",
"Old Gnawbone - Synergy (Flying)"
],
"popularity_bucket": "Rare",
"editorial_quality": "draft",
"description": "Builds around the Airbending theme and its supporting synergies."
@ -804,7 +818,10 @@
"secondary_color": "Red",
"example_commanders": [
"Kozilek, Butcher of Truth",
"Ulamog, the Infinite Gyre"
"Ulamog, the Infinite Gyre",
"Ulamog, the Ceaseless Hunger - Synergy (Eldrazi Kindred)",
"Azusa, Lost but Seeking - Synergy (Ramp)",
"Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Ramp)"
],
"example_cards": [
"Artisan of Kozilek",
@ -816,6 +833,9 @@
"Ulamog's Crusher",
"Nulldrifter"
],
"synergy_commanders": [
"Syr Konrad, the Grim - Synergy (Big Mana)"
],
"popularity_bucket": "Rare",
"editorial_quality": "draft",
"description": "Builds around the Annihilator theme and its supporting synergies."
@ -1015,6 +1035,13 @@
],
"primary_color": "Green",
"secondary_color": "White",
"example_commanders": [
"Azusa, Lost but Seeking - Synergy (Toughness Matters)",
"Sheoldred, the Apocalypse - Synergy (Toughness Matters)",
"Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)",
"Ragavan, Nimble Pilferer - Synergy (Little Fellas)",
"Toski, Bearer of Secrets - Synergy (Little Fellas)"
],
"example_cards": [
"Spinewoods Armadillo",
"Armored Armadillo"
@ -1262,6 +1289,13 @@
"Artifact Tokens"
],
"primary_color": "White",
"example_commanders": [
"Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)",
"Loran of the Third Path - Synergy (Artifacts Matter)",
"Lotho, Corrupt Shirriff - Synergy (Artifacts Matter)",
"Urza, Lord High Artificer - Synergy (Construct Kindred)",
"Jan Jansen, Chaos Crafter - Synergy (Construct Kindred)"
],
"example_cards": [
"Academy Manufactor",
"Mishra's Factory",
@ -1272,6 +1306,9 @@
"Dutiful Replicator",
"Cogwork Assembler"
],
"synergy_commanders": [
"Peregrin Took - Synergy (Artifact Tokens)"
],
"popularity_bucket": "Rare",
"editorial_quality": "draft",
"description": "Focuses on getting a high number of Assembly-Worker creatures into play with shared payoffs."
@ -1434,6 +1471,12 @@
"Aggro"
],
"primary_color": "Green",
"example_commanders": [
"Ghalta, Primal Hunger - Synergy (Trample)",
"Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)",
"Ghalta, Stampede Tyrant - Synergy (Trample)",
"Etali, Primal Storm - Synergy (Aggro)"
],
"example_cards": [
"Rimehorn Aurochs",
"Bull Aurochs",
@ -1530,7 +1573,10 @@
"secondary_color": "Red",
"example_commanders": [
"Virtus the Veiled",
"Kels, Fight Fixer"
"Kels, Fight Fixer",
"Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)",
"Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)",
"Captain Lannery Storm - Synergy (Outlaw Kindred)"
],
"example_cards": [
"Mindblade Render",
@ -1542,6 +1588,11 @@
"Kels, Fight Fixer",
"Blaring Captain"
],
"synergy_commanders": [
"Sakashima of a Thousand Faces - Synergy (Rogue Kindred)",
"Rankle, Master of Pranks - Synergy (Rogue Kindred)",
"Syr Konrad, the Grim - Synergy (Sacrifice Matters)"
],
"popularity_bucket": "Rare",
"editorial_quality": "draft",
"description": "Focuses on getting a high number of Azra creatures into play with shared payoffs."
@ -1633,7 +1684,10 @@
"secondary_color": "Red",
"example_commanders": [
"Greensleeves, Maro-Sorcerer",
"Hugs, Grisly Guardian"
"Hugs, Grisly Guardian",
"Ragavan, Nimble Pilferer - Synergy (Little Fellas)",
"Azusa, Lost but Seeking - Synergy (Little Fellas)",
"Toski, Bearer of Secrets - Synergy (Little Fellas)"
],
"example_cards": [
"Greensleeves, Maro-Sorcerer",
@ -1645,6 +1699,11 @@
"Charging Badger",
"Badgermole"
],
"synergy_commanders": [
"Sheoldred, the Apocalypse - Synergy (Toughness Matters)",
"Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)",
"Etali, Primal Storm - Synergy (Aggro)"
],
"popularity_bucket": "Rare",
"editorial_quality": "draft",
"description": "Focuses on getting a high number of Badger creatures into play with shared payoffs."
@ -27938,370 +27997,12 @@
"generated_from": "merge (analytics + curated YAML + whitelist)",
"metadata_info": {
"mode": "merge",
"generated_at": "2025-09-27T15:09:05",
"generated_at": "2025-09-30T00:38:22",
"curated_yaml_files": 735,
"synergy_cap": 5,
"inference": "pmi",
"version": "phase-b-merge-v1",
"catalog_hash": "f905534d554835f6fbcb2a14643f8db00f55ce4f9d40631435f6cdb12d4b2ff4"
"catalog_hash": "58d00ba9900f1036f00f8e831713ce53c1df5fde36899a71e9305e65e67d8f16"
},
"description_fallback_summary": {
"total_themes": 735,
"generic_total": 279,
"generic_with_synergies": 262,
"generic_plain": 17,
"generic_pct": 37.96,
"top_generic_by_frequency": [
{
"theme": "Little Fellas",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 7147,
"description": "Builds around Little Fellas leveraging synergies with Banding and Licid Kindred."
},
{
"theme": "Combat Matters",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 6391,
"description": "Builds around Combat Matters leveraging synergies with Aggro and Voltron."
},
{
"theme": "Interaction",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 4160,
"description": "Builds around Interaction leveraging synergies with Removal and Combat Tricks."
},
{
"theme": "Toughness Matters",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 3511,
"description": "Builds around Toughness Matters leveraging synergies with Defender and Egg Kindred."
},
{
"theme": "Leave the Battlefield",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 3113,
"description": "Builds around Leave the Battlefield leveraging synergies with Blink and Enter the Battlefield."
},
{
"theme": "Enter the Battlefield",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 3109,
"description": "Builds around Enter the Battlefield leveraging synergies with Blink and Reanimate."
},
{
"theme": "Card Draw",
"popularity_bucket": "Very Common",
"synergy_count": 17,
"total_frequency": 2708,
"description": "Builds around Card Draw leveraging synergies with Loot and Wheels."
},
{
"theme": "Life Matters",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 2423,
"description": "Builds around Life Matters leveraging synergies with Lifegain and Lifedrain."
},
{
"theme": "Flying",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 2232,
"description": "Builds around Flying leveraging synergies with Phoenix Kindred and Archon Kindred."
},
{
"theme": "Removal",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 1601,
"description": "Builds around Removal leveraging synergies with Soulshift and Interaction."
},
{
"theme": "Legends Matter",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 1563,
"description": "Builds around Legends Matter leveraging synergies with Historics Matter and Superfriends."
},
{
"theme": "Topdeck",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 1112,
"description": "Builds around Topdeck leveraging synergies with Scry and Surveil."
},
{
"theme": "Discard Matters",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 1055,
"description": "Builds around Discard Matters leveraging synergies with Loot and Wheels."
},
{
"theme": "Unconditional Draw",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 1050,
"description": "Builds around Unconditional Draw leveraging synergies with Dredge and Learn."
},
{
"theme": "Combat Tricks",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 858,
"description": "Builds around Combat Tricks leveraging synergies with Flash and Strive."
},
{
"theme": "Protection",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 810,
"description": "Builds around Protection leveraging synergies with Ward and Hexproof."
},
{
"theme": "Exile Matters",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 718,
"description": "Builds around Exile Matters leveraging synergies with Impulse and Suspend."
},
{
"theme": "Board Wipes",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 649,
"description": "Builds around Board Wipes leveraging synergies with Bracket:MassLandDenial and Pingers."
},
{
"theme": "Pingers",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 643,
"description": "Builds around Pingers leveraging synergies with Extort and Devil Kindred."
},
{
"theme": "Loot",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 526,
"description": "Builds around Loot leveraging synergies with Card Draw and Discard Matters."
},
{
"theme": "Cantrips",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 515,
"description": "Builds around Cantrips leveraging synergies with Clue Token and Investigate."
},
{
"theme": "X Spells",
"popularity_bucket": "Very Common",
"synergy_count": 5,
"total_frequency": 506,
"description": "Builds around X Spells leveraging synergies with Ravenous and Firebending."
},
{
"theme": "Conditional Draw",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 458,
"description": "Builds around Conditional Draw leveraging synergies with Max speed and Start your engines!."
},
{
"theme": "Toolbox",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 453,
"description": "Builds around Toolbox leveraging synergies with Entwine and Bracket:TutorNonland."
},
{
"theme": "Cost Reduction",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 433,
"description": "Builds around Cost Reduction leveraging synergies with Affinity and Freerunning."
},
{
"theme": "Flash",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 427,
"description": "Builds around Flash leveraging synergies with Evoke and Combat Tricks."
},
{
"theme": "Haste",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 402,
"description": "Builds around Haste leveraging synergies with Hellion Kindred and Phoenix Kindred."
},
{
"theme": "Lifelink",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 401,
"description": "Builds around Lifelink leveraging synergies with Lifegain Triggers and Lifegain."
},
{
"theme": "Vigilance",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 401,
"description": "Builds around Vigilance leveraging synergies with Angel Kindred and Mount Kindred."
},
{
"theme": "Counterspells",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 397,
"description": "Builds around Counterspells leveraging synergies with Control and Stax."
},
{
"theme": "Transform",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 366,
"description": "Builds around Transform leveraging synergies with Incubator Token and Incubate."
},
{
"theme": "Super Friends",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 344,
"description": "Builds around Super Friends leveraging synergies with Planeswalkers and Superfriends."
},
{
"theme": "Mana Dork",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 340,
"description": "Builds around Mana Dork leveraging synergies with Firebending and Scion Kindred."
},
{
"theme": "Cycling",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 299,
"description": "Builds around Cycling leveraging synergies with Landcycling and Basic landcycling."
},
{
"theme": "Bracket:TutorNonland",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 297,
"description": "Builds around Bracket:TutorNonland leveraging synergies with Transmute and Bracket:GameChanger."
},
{
"theme": "Scry",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 284,
"description": "Builds around Scry leveraging synergies with Topdeck and Role token."
},
{
"theme": "Clones",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 283,
"description": "Builds around Clones leveraging synergies with Myriad and Populate."
},
{
"theme": "Reach",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 275,
"description": "Builds around Reach leveraging synergies with Spider Kindred and Archer Kindred."
},
{
"theme": "First strike",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 252,
"description": "Builds around First strike leveraging synergies with Banding and Kithkin Kindred."
},
{
"theme": "Politics",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 246,
"description": "Builds around Politics leveraging synergies with Encore and Melee."
},
{
"theme": "Defender",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 230,
"description": "Builds around Defender leveraging synergies with Wall Kindred and Egg Kindred."
},
{
"theme": "Menace",
"popularity_bucket": "Common",
"synergy_count": 5,
"total_frequency": 226,
"description": "Builds around Menace leveraging synergies with Warlock Kindred and Blood Token."
},
{
"theme": "Deathtouch",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 192,
"description": "Builds around Deathtouch leveraging synergies with Basilisk Kindred and Scorpion Kindred."
},
{
"theme": "Equip",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 187,
"description": "Builds around Equip leveraging synergies with Job select and For Mirrodin!."
},
{
"theme": "Land Types Matter",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 185,
"description": "Builds around Land Types Matter leveraging synergies with Plainscycling and Mountaincycling."
},
{
"theme": "Spell Copy",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 184,
"description": "Builds around Spell Copy leveraging synergies with Storm and Replicate."
},
{
"theme": "Landwalk",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 170,
"description": "Builds around Landwalk leveraging synergies with Swampwalk and Islandwalk."
},
{
"theme": "Impulse",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 163,
"description": "Builds around Impulse leveraging synergies with Junk Tokens and Junk Token."
},
{
"theme": "Morph",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 140,
"description": "Builds around Morph leveraging synergies with Beast Kindred and Illusion Kindred."
},
{
"theme": "Devoid",
"popularity_bucket": "Uncommon",
"synergy_count": 5,
"total_frequency": 114,
"description": "Builds around Devoid leveraging synergies with Ingest and Processor Kindred."
}
]
}
"description_fallback_summary": null
}