diff --git a/1020099/META.json b/1020099/META.json new file mode 100644 index 0000000..5bb979c --- /dev/null +++ b/1020099/META.json @@ -0,0 +1,58 @@ +{ + "spotify_version": "1.2.99.317", + "classmap_key": "1020099", + "status": "verified", + "generated": "2026-09-05", + "inherited_from": "1020097", + "pipeline": "runtime CDP extraction (Spotify --remote-debugging-port=9222) + live DOM/CSS verification + static xpui CSS cross-check", + "stats": { + "leaves": 36, + "inherited": 2, + "static_present": 36, + "verified_cdp": 25, + "live_only": 0, + "unresolved_missing": 0, + "stale": 2, + "cdp_hit_rate": 1.0, + "overlay_entries": 2 + }, + "required_paths": { + "main.playbar.buttons.button.wrapper": "verified_cdp", + "main.topbar.wrapper": "verified_cdp", + "main.navbar.link.wrapper": "verified_cdp", + "tracklist.column_header": "verified_cdp", + "context_menu.menu_item": "verified_cdp", + "search_box.container": "verified_cdp", + "sort_box.list.button": "verified_cdp", + "settings.header.container": "verified_cdp", + "settings.section.container": "verified_cdp", + "settings.button.wrapper": "verified_cdp", + "modal.track_credits.container": "verified_cdp", + "modal.widget_generator.container": "verified_cdp" + }, + "stale_leaves": [ + "main.topbar.left.button.icon.wrapper", + "main.topbar.right.upgrade_button.wrapper" + ], + "unverified_leaves": [ + "main.topbar.right.upgrade_button.wrapper" + ], + "notes": [ + "Values were extracted from the live 1.2.99.317 client over CDP (port 9222), not guessed.", + "Spotify 1.2.99 replaced most hashed css-module classnames with readable names; encore build tag moved e-10451 -> e-10810.", + "Final CDP verification: 25/36 leaves observed live in DOM, 11/36 present in live CSS, 0 misses (hit rate 1.0).", + "Topbar merged into Root__globalNav; wrapper class oy96nRTKcIs7wm5K observed on [data-testid=global-nav-bar].", + "Playbar controls use encore legacy-button shapes; active state = legacy-button-primary.", + "Search category chips render through the encore chip factory (e-10810-chip-group* rules verified in CSS).", + "Track credits modal now ships readable main-trackCreditsModalV2-* classes.", + "settings.section.container (nWR7PbHjFXQJiYNL) and settings.header.container (fEEfljGMIEhhmWVi) are unchanged from 1020097 and still live.", + "upgrade_button has no rendered instance on this premium account; value taken from the encore legacy-button-primary factory shape (stale-marked, same policy as 1020097)." + ], + "verification_summary": { + "cdp_dom_probes": 47, + "css_classes_live": 4726, + "dom_hits": 25, + "css_only_hits": 11, + "misses": 0 + } +} diff --git a/1020099/classmap-19f856aefd5.json b/1020099/classmap-19f856aefd5.json new file mode 100644 index 0000000..933d542 --- /dev/null +++ b/1020099/classmap-19f856aefd5.json @@ -0,0 +1,109 @@ +{ + "main": { + "topbar": { + "wrapper": "oy96nRTKcIs7wm5K", + "left": { + "button": { + "wrapper": "e-10810-legacy-button e-10810-button-tertiary--icon-only-medium", + "icon": { + "wrapper": "e-10810-icon e-10810-icon--auto-mirror" + } + }, + "button_t": { + "wrapper": "e-10810-legacy-button e-10810-button-tertiary--icon-only-medium" + } + }, + "right": { + "button": { + "wrapper": "e-10810-legacy-button e-10810-button-tertiary--condensed-all" + }, + "button_t": { + "wrapper": "e-10810-legacy-button e-10810-button-tertiary--condensed-all" + }, + "upgrade_button": { + "wrapper": "e-10810-legacy-button e-10810-legacy-button-primary" + } + } + }, + "playbar": { + "widget": {}, + "controls": {}, + "buttons": { + "button": { + "wrapper": "e-10810-legacy-button e-10810-button-tertiary--icon-only-small", + "wrapper__active": "e-10810-legacy-button e-10810-legacy-button-primary", + "wrapper__indicator": "e-10810-button-primary__inner" + } + } + }, + "navbar": { + "link": { + "wrapper": "main-globalNav-navLink", + "container": "main-globalNav-navLink", + "container__active": "main-globalNav-navLinkActive" + } + }, + "global_navbar": {}, + "sidebar": {}, + "panel": {} + }, + "tracklist": { + "column_header": "e-10810-legacy-list-row__header" + }, + "search_chips": { + "wrapper_wrapper": "e-10810-chip-group", + "wrapper": "e-10810-chip-group__component", + "container": "e-10810-chip-group__component", + "chip": "e-10810-legacy-chip" + }, + "modal": { + "widget_generator": { + "container": "main-embedWidgetGenerator-container", + "header": { + "container": "main-embedWidgetGenerator-header", + "close": "main-embedWidgetGenerator-closeBtn" + }, + "content": { + "container": "main-embedWidgetGenerator-content" + } + }, + "track_credits": { + "container": "main-trackCreditsModalV2-container", + "header": { + "container": "main-trackCreditsModalV2-header", + "close": "main-trackCreditsModalV2-closeBtn" + }, + "content": { + "container": "main-trackCreditsModalV2-mainSection" + } + } + }, + "settings": { + "header": { + "container": "fEEfljGMIEhhmWVi" + }, + "section": { + "container": "nWR7PbHjFXQJiYNL" + }, + "button": { + "wrapper": "e-10810-legacy-button e-10810-legacy-button--small e-10810-legacy-button-secondary" + }, + "text_input": "e-10810-form-input e-10810-form-control encore-text-body-medium" + }, + "scrollable_text": { + "container": "e-10810-legacy-box e-10810-legacy-box--naked", + "wrapper": "e-10810-legacy-box" + }, + "sort_box": { + "list": { + "button": "x-sortBox-sortDropdown" + } + }, + "search_box": { + "container": "main-globalNav-searchContainer", + "expand_button": "e-10810-legacy-button e-10810-button-tertiary--icon-only-medium main-globalNav-link-icon" + }, + "context_menu": { + "menu_item": "main-contextMenu-menuItemButton" + } +} diff --git a/1020099/css-map.json b/1020099/css-map.json new file mode 100644 index 0000000..a964052 --- /dev/null +++ b/1020099/css-map.json @@ -0,0 +1,4 @@ +{ + "fEEfljGMIEhhmWVi": "x-settings-outputSectionHeader", + "nWR7PbHjFXQJiYNL": "x-settings-section" +} diff --git a/index.json b/index.json index 8bd086a..bb1faeb 100644 --- a/index.json +++ b/index.json @@ -113,6 +113,22 @@ }, "spotifyVersion": "1.2.98.301", "status": "verified" + }, + "1020099": { + "classmap": { + "file": "classmap-19f856aefd5.json", + "sha256": "33fca18a6d319bd9f455426517b6aaefe5e86d7d379933f21b1f1807ae9ed4d5" + }, + "cssMapOverlay": { + "file": "css-map.json", + "sha256": "c84480a673ab8587482958a943a04abffc9b8c658284c649452db3b61196692d" + }, + "meta": { + "file": "META.json", + "sha256": "c38e1dbf9bb63abf0983d7f563482d778fdeefd230ef0906ce999f62cd3b8e1c" + }, + "spotifyVersion": "1.2.99.317", + "status": "verified" } }, "version": 1