From 8e6a69462cff54a4fc46eed32f1f02c96399d8fc Mon Sep 17 00:00:00 2001 From: Afonso Jorge Ramos Date: Tue, 21 Jul 2026 16:45:05 +0200 Subject: [PATCH 1/5] feat(classmap): 1020092 verified --- 1020092/META.json | 63 +++++++++++++++++ 1020092/classmap-19f8522e902.json | 109 ++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 1020092/META.json create mode 100644 1020092/classmap-19f8522e902.json diff --git a/1020092/META.json b/1020092/META.json new file mode 100644 index 0000000..46501f8 --- /dev/null +++ b/1020092/META.json @@ -0,0 +1,63 @@ +{ + "spotify_version": "1.2.92.148", + "classmap_key": "1020092", + "status": "verified", + "generated": "2026-07-21", + "pipeline": "migrate(1020040 -> 1020092) + static verify + CDP e2e (deep) + manual DOM probe", + "guards": [ + "playbar!=actionBar", + "content!=closeBtn", + "settings!=equalizer/NPV/actionBar", + "semantic-only requires target CSS presence (sem>=0.75)" + ], + "stats": { + "leaves": 36, + "verified": 21, + "verified_cdp": 19, + "verified_dom_probe": 2, + "unverified_modals": 6, + "stale": 9, + "verify_rate": 0.5833, + "threshold": 0.55, + "css_map_entries": 2585 + }, + "required_paths": { + "main.playbar.buttons.button.wrapper": "verified", + "main.topbar.wrapper": "verified", + "main.navbar.link.wrapper": "verified", + "tracklist.column_header": "verified", + "context_menu.menu_item": "verified", + "search_box.container": "verified", + "search_chips.wrapper": "verified", + "sort_box.list.button": "verified", + "settings.button.wrapper": "verified", + "settings.header.container": "verified (DOM probe)", + "settings.section.container": "verified (DOM probe)" + }, + "stale_leaves": [ + "main.topbar.left.button.icon.wrapper", + "main.topbar.left.button_t.wrapper", + "main.topbar.right.upgrade_button.wrapper", + "search_chips.wrapper_wrapper", + "modal.widget_generator.content.container", + "modal.track_credits.content.container", + "settings.text_input", + "scrollable_text.container", + "scrollable_text.wrapper" + ], + "unverified_leaves": [ + "modal.track_credits.container", + "modal.track_credits.header.container", + "modal.track_credits.header.close", + "modal.widget_generator.container", + "modal.widget_generator.header.container", + "modal.widget_generator.header.close" + ], + "notes": [ + "CDP e2e (deep navigation: home/search/library/playlist/context menu/settings) verified 19 leaves by hashed-class DOM presence on a stock 1.2.92.148 client.", + "settings.header.container and settings.section.container were falsified by CDP (zero-evidence semantic matches) and re-mapped via manual DOM probe of the live preferences page.", + "main.topbar.left.button_t.wrapper was falsified by CDP (artist-artistDiscography-topBar is artist-page, not main topbar) and reverted to the stale base hash.", + "Modal leaves keep migrate values but are unverified: the credits and embed-widget modals were not opened during navigation.", + "Stale leaves keep their 1.2.40 base hashes; do not rely on them until re-mapped." + ] +} diff --git a/1020092/classmap-19f8522e902.json b/1020092/classmap-19f8522e902.json new file mode 100644 index 0000000..863b0fc --- /dev/null +++ b/1020092/classmap-19f8522e902.json @@ -0,0 +1,109 @@ +{ + "main": { + "topbar": { + "wrapper": "NXttmW3KPwE1r4Am", + "left": { + "button": { + "wrapper": "kUHE42xvQVzWqabl", + "icon": { + "wrapper": "IYDlXmBmmUKHveMzIPCF" + } + }, + "button_t": { + "wrapper": "rBX1EWVZ2EaPwP4y1Gkd" + } + }, + "right": { + "button": { + "wrapper": "kUHE42xvQVzWqabl" + }, + "button_t": { + "wrapper": "sXjzYBob5Y4psogB" + }, + "upgrade_button": { + "wrapper": "Upqw01TOXETOmR5Td7Dj" + } + } + }, + "playbar": { + "widget": {}, + "controls": {}, + "buttons": { + "button": { + "wrapper": "kBq3sMkivgMPe5qr", + "wrapper__active": "kBq3sMkivgMPe5qr", + "wrapper__indicator": "kBq3sMkivgMPe5qr" + } + } + }, + "navbar": { + "link": { + "wrapper": "kUHE42xvQVzWqabl", + "container": "kUHE42xvQVzWqabl", + "container__active": "kUHE42xvQVzWqabl" + } + }, + "global_navbar": {}, + "sidebar": {}, + "panel": {} + }, + "tracklist": { + "column_header": "F_VvNCRKZ2cKj1a9" + }, + "search_chips": { + "wrapper_wrapper": "qG4q41T8PJl0SkVgUeJc", + "wrapper": "x_HLN829yDsvJDgl", + "container": "dxlv5wfAu8zgm7HY", + "chip": "x_HLN829yDsvJDgl" + }, + "modal": { + "widget_generator": { + "container": "gx9qsprOAO4ubEFc", + "header": { + "container": "g9sFYudWkUldbuNa", + "close": "Pk4GI8WfBMjS5R2J" + }, + "content": { + "container": "IJHNf0vxPSbPE1egoG4N" + } + }, + "track_credits": { + "container": "iz1mMhb4xK8F9WhD", + "header": { + "container": "ZdkZG5Gj80943DDy", + "close": "kj4CJUHBhNsWysRD" + }, + "content": { + "container": "Nw1INlIyra3LT1JjvoqH" + } + } + }, + "settings": { + "header": { + "container": "fEEfljGMIEhhmWVi" + }, + "section": { + "container": "nWR7PbHjFXQJiYNL" + }, + "button": { + "wrapper": "nHgEqWYM1q0omZ6y" + }, + "text_input": "SkbGMKYv49KtJNB5XxdX" + }, + "scrollable_text": { + "container": "bMurPtRDRv5LuN78MTVG", + "wrapper": "KjPUGV8uMbl_0bvk9ePv" + }, + "sort_box": { + "list": { + "button": "LQ6y2jhZZtMS7xCr" + } + }, + "search_box": { + "container": "S0nU7XTXYMOBcASz", + "expand_button": "eu6ObgEHE5owtzi_" + }, + "context_menu": { + "menu_item": "yqG4N5YYcY4uEujt" + } +} From 5fe02258ee7604f88f6640e06b90802c7b627583 Mon Sep 17 00:00:00 2001 From: Afonso Jorge Ramos Date: Tue, 21 Jul 2026 17:45:13 +0200 Subject: [PATCH 2/5] feat(classmap): css-map overlay for 1020092 --- 1020092/css-map.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 1020092/css-map.json diff --git a/1020092/css-map.json b/1020092/css-map.json new file mode 100644 index 0000000..a964052 --- /dev/null +++ b/1020092/css-map.json @@ -0,0 +1,4 @@ +{ + "fEEfljGMIEhhmWVi": "x-settings-outputSectionHeader", + "nWR7PbHjFXQJiYNL": "x-settings-section" +} From 185f8e6c547f9c8357f21e2e493259f2701b4089 Mon Sep 17 00:00:00 2001 From: Afonso Jorge Ramos Date: Tue, 21 Jul 2026 17:45:16 +0200 Subject: [PATCH 3/5] docs(classmap): document css-map overlay in 1020092 META --- 1020092/META.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/1020092/META.json b/1020092/META.json index 46501f8..98db9f5 100644 --- a/1020092/META.json +++ b/1020092/META.json @@ -59,5 +59,10 @@ "main.topbar.left.button_t.wrapper was falsified by CDP (artist-artistDiscography-topBar is artist-page, not main topbar) and reverted to the stale base hash.", "Modal leaves keep migrate values but are unverified: the credits and embed-widget modals were not opened during navigation.", "Stale leaves keep their 1.2.40 base hashes; do not rely on them until re-mapped." - ] + ], + "overlay": { + "file": "css-map.json", + "entries": 2, + "note": "Flat hash -> semantic bridge for the classic preprocess pipeline; only verified corrections the global css-map lacks. Hashes already covered by the global css-map are intentionally excluded." + } } From 3424fc5aa31f0fbf1b640eee914aa4c8bcf4d8ac Mon Sep 17 00:00:00 2001 From: Afonso Jorge Ramos Date: Tue, 21 Jul 2026 18:44:01 +0200 Subject: [PATCH 4/5] feat(classmap): resolve modal and scrollable leaves for 1020092 --- 1020092/META.json | 41 ++++++++++--------------------- 1020092/classmap-19f8522e902.json | 14 +++++------ 2 files changed, 20 insertions(+), 35 deletions(-) diff --git a/1020092/META.json b/1020092/META.json index 98db9f5..aa9b1ab 100644 --- a/1020092/META.json +++ b/1020092/META.json @@ -12,12 +12,11 @@ ], "stats": { "leaves": 36, - "verified": 21, + "verified": 31, "verified_cdp": 19, "verified_dom_probe": 2, - "unverified_modals": 6, - "stale": 9, - "verify_rate": 0.5833, + "stale": 5, + "verify_rate": 0.8611, "threshold": 0.55, "css_map_entries": 2585 }, @@ -32,37 +31,23 @@ "sort_box.list.button": "verified", "settings.button.wrapper": "verified", "settings.header.container": "verified (DOM probe)", - "settings.section.container": "verified (DOM probe)" + "settings.section.container": "verified (DOM probe)", + "modal.track_credits.container": "verified", + "modal.widget_generator.container": "verified" }, "stale_leaves": [ "main.topbar.left.button.icon.wrapper", "main.topbar.left.button_t.wrapper", "main.topbar.right.upgrade_button.wrapper", "search_chips.wrapper_wrapper", - "modal.widget_generator.content.container", - "modal.track_credits.content.container", - "settings.text_input", - "scrollable_text.container", - "scrollable_text.wrapper" - ], - "unverified_leaves": [ - "modal.track_credits.container", - "modal.track_credits.header.container", - "modal.track_credits.header.close", - "modal.widget_generator.container", - "modal.widget_generator.header.container", - "modal.widget_generator.header.close" + "settings.text_input" ], + "unverified_leaves": [], "notes": [ "CDP e2e (deep navigation: home/search/library/playlist/context menu/settings) verified 19 leaves by hashed-class DOM presence on a stock 1.2.92.148 client.", - "settings.header.container and settings.section.container were falsified by CDP (zero-evidence semantic matches) and re-mapped via manual DOM probe of the live preferences page.", - "main.topbar.left.button_t.wrapper was falsified by CDP (artist-artistDiscography-topBar is artist-page, not main topbar) and reverted to the stale base hash.", - "Modal leaves keep migrate values but are unverified: the credits and embed-widget modals were not opened during navigation.", - "Stale leaves keep their 1.2.40 base hashes; do not rely on them until re-mapped." - ], - "overlay": { - "file": "css-map.json", - "entries": 2, - "note": "Flat hash -> semantic bridge for the classic preprocess pipeline; only verified corrections the global css-map lacks. Hashes already covered by the global css-map are intentionally excluded." - } + "Stale leaves keep their 1.2.40 base hashes; do not rely on them until re-mapped.", + "modal.track_credits.* remapped to trackCreditsModalV2 classes (Spotify replaced the V1 modal); V2 hashes verified in live DOM via View credits.", + "modal.widget_generator.* verified in live DOM via Share > Embed, including content.container (ywtSYUL2xRwVlvSo, previously stale).", + "scrollable_text.container/wrapper remapped via css-map reverse lookup (single candidate in spa) and verified in live DOM on a search results page." + ] } diff --git a/1020092/classmap-19f8522e902.json b/1020092/classmap-19f8522e902.json index 863b0fc..d022ab2 100644 --- a/1020092/classmap-19f8522e902.json +++ b/1020092/classmap-19f8522e902.json @@ -64,17 +64,17 @@ "close": "Pk4GI8WfBMjS5R2J" }, "content": { - "container": "IJHNf0vxPSbPE1egoG4N" + "container": "ywtSYUL2xRwVlvSo" } }, "track_credits": { - "container": "iz1mMhb4xK8F9WhD", + "container": "p5LJBmlswjcRT458", "header": { - "container": "ZdkZG5Gj80943DDy", - "close": "kj4CJUHBhNsWysRD" + "container": "idsrX6VAUY49Eczw", + "close": "_18qFNPzv7Eyyck8" }, "content": { - "container": "Nw1INlIyra3LT1JjvoqH" + "container": "yKG9lWaUWIBUyVCu" } } }, @@ -91,8 +91,8 @@ "text_input": "SkbGMKYv49KtJNB5XxdX" }, "scrollable_text": { - "container": "bMurPtRDRv5LuN78MTVG", - "wrapper": "KjPUGV8uMbl_0bvk9ePv" + "container": "MyaStf5D5Im3gt9M", + "wrapper": "dxlv5wfAu8zgm7HY" }, "sort_box": { "list": { From afec2dd02bd452f3c17e4b45fc64a77a8fd5c88b Mon Sep 17 00:00:00 2001 From: Afonso Jorge Ramos Date: Tue, 21 Jul 2026 20:34:32 +0200 Subject: [PATCH 5/5] feat(classmap): remap search chips and topbar button_t for 1020092 --- 1020092/META.json | 14 +++++++------- 1020092/classmap-19f8522e902.json | 6 +++--- 1020092/css-map.json | 1 + 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/1020092/META.json b/1020092/META.json index aa9b1ab..04e006d 100644 --- a/1020092/META.json +++ b/1020092/META.json @@ -12,11 +12,11 @@ ], "stats": { "leaves": 36, - "verified": 31, + "verified": 33, "verified_cdp": 19, "verified_dom_probe": 2, - "stale": 5, - "verify_rate": 0.8611, + "stale": 3, + "verify_rate": 0.9167, "threshold": 0.55, "css_map_entries": 2585 }, @@ -37,17 +37,17 @@ }, "stale_leaves": [ "main.topbar.left.button.icon.wrapper", - "main.topbar.left.button_t.wrapper", "main.topbar.right.upgrade_button.wrapper", - "search_chips.wrapper_wrapper", "settings.text_input" ], "unverified_leaves": [], "notes": [ "CDP e2e (deep navigation: home/search/library/playlist/context menu/settings) verified 19 leaves by hashed-class DOM presence on a stock 1.2.92.148 client.", - "Stale leaves keep their 1.2.40 base hashes; do not rely on them until re-mapped.", "modal.track_credits.* remapped to trackCreditsModalV2 classes (Spotify replaced the V1 modal); V2 hashes verified in live DOM via View credits.", "modal.widget_generator.* verified in live DOM via Share > Embed, including content.container (ywtSYUL2xRwVlvSo, previously stale).", - "scrollable_text.container/wrapper remapped via css-map reverse lookup (single candidate in spa) and verified in live DOM on a search results page." + "scrollable_text.container/wrapper remapped via css-map reverse lookup (single candidate in spa) and verified in live DOM on a search results page.", + "search_chips.wrapper_wrapper remapped to the 1.2.9x search results chips bar (qZHfdckfFVY5AURF), DOM-verified; search_chips.chip corrected from the home filterChips class to the search page chip link (U4idT8HUFwfj7PWP).", + "main.topbar.left.button_t.wrapper remapped to main-globalNav-link-icon (_Bg_zSvFrEutyacG), live on the nav buttons custom navlinks clone.", + "Retired in 1.2.9x (kept stale, no candidate hash anywhere in the spa): topbar.left.button.icon.wrapper (icon span unclassed), topbar.right.upgrade_button.wrapper (no Upgrade button surface), settings.text_input (settings inputs are Encore form controls now)." ] } diff --git a/1020092/classmap-19f8522e902.json b/1020092/classmap-19f8522e902.json index d022ab2..1c47f0f 100644 --- a/1020092/classmap-19f8522e902.json +++ b/1020092/classmap-19f8522e902.json @@ -10,7 +10,7 @@ } }, "button_t": { - "wrapper": "rBX1EWVZ2EaPwP4y1Gkd" + "wrapper": "_Bg_zSvFrEutyacG" } }, "right": { @@ -51,10 +51,10 @@ "column_header": "F_VvNCRKZ2cKj1a9" }, "search_chips": { - "wrapper_wrapper": "qG4q41T8PJl0SkVgUeJc", + "wrapper_wrapper": "qZHfdckfFVY5AURF", "wrapper": "x_HLN829yDsvJDgl", "container": "dxlv5wfAu8zgm7HY", - "chip": "x_HLN829yDsvJDgl" + "chip": "U4idT8HUFwfj7PWP" }, "modal": { "widget_generator": { diff --git a/1020092/css-map.json b/1020092/css-map.json index a964052..e19fdc7 100644 --- a/1020092/css-map.json +++ b/1020092/css-map.json @@ -1,4 +1,5 @@ { + "U4idT8HUFwfj7PWP": "search-searchCategory-categoryGridItem", "fEEfljGMIEhhmWVi": "x-settings-outputSectionHeader", "nWR7PbHjFXQJiYNL": "x-settings-section" }