62 KiB
Phase 4 dependency analysis and seams
Source: cd4a25a, 587,029 bytes. Acorn 8 parses classic scripts with source ranges; eslint-scope 8 resolves lexical references, including shadowing. Outside references are references outside the declaration’s owning top-level statement, plus unresolved references from other frontend classic scripts. Property names and strings are not lexical references. Browser globals and other scripts’ globals remain available. Positions below refer to this source, before extraction.
Reproduce: npm install --prefix perf/.tmp/analysis --no-audit --no-fund acorn@8 eslint-scope@8, then run node perf/analyze-app.cjs cd4a25a. Analysis tools are development-only; no frontend/server import is added.
Measured candidate ranking
Coupling = distinct other app top-level bindings referenced inside the candidate; ratio = source UTF-8 bytes divided by coupling. This is a ranking, not a safety judgment.
| Candidate | Bytes | Coupling | Bytes/coupling | Decision |
|---|---|---|---|---|
| notes | 56491 | 18 | 3138 | Keep eager; protected owner requirement |
| sectionRail | 10973 | 5 | 2195 | Include in eager shell renderer cut |
| presenter | 9492 | 6 | 1582 | Extract |
| party | 22833 | 18 | 1269 | Extract |
| remote | 30421 | 31 | 981 | Extract |
| share | 13334 | 14 | 952 | Extract |
| editor | 6603 | 8 | 825 | Leave for later; six seam limit |
| stats | 7074 | 9 | 786 | Extract |
| gestures | 5217 | 8 | 652 | Keep playback wiring untouched |
| settings | 31516 | 49 | 643 | Keep eager; protected owner requirement |
| shell | 14608 | 29 | 504 | Extract |
| export | 5159 | 11 | 469 | Leave for later; six seam limit |
| service | 5006 | 15 | 334 | Keep eager; protected owner requirement |
Six cuts and ordering
- Eager shell/renderers:
shell-core.jscontains homepage/recommendations, sidebar, bottom/mini chrome and now-playing action paint.views-core.jscontains existing shared list/card/Settings renderers;section-rail.jsremains eager. These all load before app.js; callbacks read the shared lexical state only after app initializes it. No new asynchronous renderer interface. Move 98,378 source bytes; keep four required features in RAM. - Presenter: 9,492 bytes, lazy
feature:presenter, boot only on presenter/overlay URLs. - Remote: 30,421 bytes, lazy
feature:remote-client; preserve synchronous changed hook, bind entry buttons eagerly, auto-load only for a configured host or pair URL. - Watch party: 22,833 bytes, lazy
feature:watch-party; synchronous no-session defaults for guestActive/intercept/nextDJ, same instance once loaded; resume stored host or party URL. - Share/External: 13,334 bytes, lazy
feature:share-external; open/bootFromUrl are the seam. - Stats view: 7,074 bytes, separate
feature:stats-viewdepending on pure stats group, so playback tracking does not parse the view.
Total original source moved: 181,532 bytes (30.92%); facade overhead must keep final reduction ≥30%. Shared lexical scope is intentional; the broader eager view cut retains its existing renderer calls and high outbound coupling rather than inventing a context object or delaying Settings. Player, Transition, sleep/drift/resume, queue, persistence and boot stay in app.js unchanged apart from explicit lazy boot calls. The required now-playing metadata mutation inside Player remains untouched; its markup, mini bar and paint helpers load eagerly.
Executing stateful chunks remain pinned until playback-guarded reload. No live replacement: no disposal/state handoff is implemented, so Phase 4 does not enable it. New unexecuted chunks obey Phase 3 contracts/N-1 guard.
Every top-level declaration
Outside references use app line numbers or file:line; imports name other app bindings (not browser globals). Multiple declarations sharing a statement share its byte count; never sum this table blindly.
| Declaration | Line | Statement bytes | Other app bindings read/written | Outside references |
|---|---|---|---|---|
| sanitizeId | 30 | 124 | — | 602, 603, 607, 607, 610, 611, 616, 617, 1995 |
| TAURI | 34 | 87 | — | 37, 54, 54, 649, 649, 649, 2296 |
| ZERO | 35 | 90 | — | 37, 55, 55 |
| WEB | 37 | 28 | TAURI, ZERO | 572, 575, 579, 582, 585, 590, 593, 597, 601, 606, 609, 612, 615, 618, 628, 698, 867, 873, 954, 981, 1183, 1281, 1296, 1339, 1712, 1743, 1769, 1792, 1811, 1905, 2067, 2287, 2299, 2329, 3029, 3145, 3146, 3198, 3199, 3362, 3475, 4764, 5509, 5698, 5808, 5818, 5826, 5829, 5881, 5890, 5907, 5909, 6100, 6686, 7501, 8919, 9191, 9206, 9240, 9897, 10126, 11983, 12367, 12627, 12678, 12683, 12691, 12698, 12700, 12709, 12711, 12717 |
| APP_VERSION | 38 | 28 | — | 94, 9857, 9880, 10132, 12723 |
| perfMark | 42 | 87 | — | 2265, 11167, 12564 |
| perfMeasure | 43 | 116 | — | 3031, 11217, 12614 |
| call | 53 | 258 | TAURI, ZERO | 574, 584, 587, 592, 595, 599, 603, 611, 614, 617, 620 |
| webFetch | 62 | 274 | — | 573, 580, 583, 586, 591, 5812, 5896, 12630 |
| loadDataFromStorage | 73 | 160 | — | 594 |
| saveDataToStorage | 80 | 851 | APP_VERSION, profileHeaders | 598, 9897 |
| NO_HEVC_KEY | 105 | 32 | — | 107, 1907, 2499 |
| hevcCapable | 106 | 267 | NO_HEVC_KEY | 451, 591, 9192 |
| RecentSearches | 122 | 2371 | SearchLibrary | 11168, 11171, 11212, 11251, 11253, 11266, 11281, 11294 |
| SearchLibrary | 181 | 4754 | collectSearchMetadata | 162, 165, 169, 5820, 9283, 9290, 9875, 9928, 9930, 9941, 9947, 9951, 11181, 11233, 11234, 11252, 11262, 11262, 11266 |
| SaveSlots | 291 | 800 | data | 1849, 1877, 9874, 9874, 9902 |
| saveControllers | 315 | 34 | — | 333, 381, 1845, 1875 |
| SaveQueue | 316 | 3701 | saveControllers, view, cachedIds, downloading, preload, renderList | 1844, 1846, 1851, 1852, 1857, 1859, 1872, 1876, 1878, 9541, 9541, 9542, 9542, 12688, 12688, 12688, 12689, 12689, 12689, 12698 |
| resumableOpfsSave | 401 | 2172 | — | 464 |
| opfsDownload | 440 | 2721 | hevcCapable, resumableOpfsSave | 602 |
| opfsDownloadEdited | 501 | 1261 | — | 607 |
| opfsStatus | 533 | 277 | — | 610 |
| opfsList | 543 | 344 | — | 613 |
| opfsDelete | 554 | 325 | — | 616 |
| opfsClear | 561 | 295 | — | 619 |
| _currentBlobUrl | 569 | 27 | — | 2281, 2282, 2283, 2284, 2301, 2336 |
| API | 571 | 2945 | sanitizeId, WEB, call, webFetch, loadDataFromStorage, saveDataToStorage, hevcCapable, opfsDownload, opfsDownloadEdited, opfsStatus, opfsList, opfsDelete, opfsClear | 776, 889, 910, 1696, 1852, 1910, 2010, 2050, 2297, 2347, 3117, 5279, 5515, 7861, 8669, 9383, 9427, 9487, 10036, 10056, 10073, 10572, 11194, 11203, 11459, 11917, 12572, 12630 |
| warmedAt | 625 | 27 | — | 632, 633 |
| knownServerCachedIds | 626 | 39 | — | 642, 2351 |
| warmStreams | 627 | 435 | WEB, warmedAt, cachedIds | 640, 10249, 11215 |
| warmNextQueue | 638 | 235 | knownServerCachedIds, warmStreams, data, queue, queueIndex, cachedIds | 3034, 8079 |
| toAssetUrl | 648 | 138 | TAURI | 2298 |
| DEFAULT_SETTINGS | 654 | 1577 | — | 675, 908, 12588 |
| data | 675 | 275 | DEFAULT_SETTINGS | 294, 640, 776, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 867, 867, 873, 873, 877, 878, 886, 889, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 947, 954, 954, 956, 956, 962, 967, 968, 969, 981, 981, 982, 1012, 1022, 1022, 1026, 1029, 1030, 1052, 1101, 1101, 1255, 1262, 1262, 1263, 1282, 1282, 1349, 1349, 1350, 1352, 1352, 1353, 1353, 1354, 1354, 1423, 1440, 1449, 1450, 1456, 1456, 1457, 1458, 1465, 1503, 1503, 1549, 1550, 1551, 1556, 1662, 1671, 1731, 1798, 1886, 1915, 1947, 1953, 1955, 2019, 2020, 2020, 2021, 2038, 2052, 2052, 2053, 2054, 2054, 2328, 2328, 2437, 2437, 2438, 2539, 2541, 2697, 2868, 2954, 2980, 3061, 3072, 3144, 3144, 3198, 3199, 3476, 3476, 3484, 3485, 3485, 3488, 3488, 3631, 3743, 4178, 4178, 4184, 4185, 4245, 4246, 4247, 4261, 4374, 4375, 4442, 4450, 4466, 4594, 4594, 4596, 4597, 4630, 4748, 4852, 4857, 4863, 4863, 4913, 5461, 5464, 5468, 5475, 5573, 5579, 5595, 5628, 5635, 5637, 5691, 5835, 5835, 5895, 5927, 5927, 5974, 6004, 6084, 6363, 6366, 6371, 6575, 6602, 6697, 6698, 6865, 6869, 6869, 6869, 6917, 6917, 6923, 6924, 6933, 6933, 6938, 6956, 6956, 7091, 7122, 7123, 7187, 7523, 7523, 7602, 7972, 8055, 8055, 8056, 8056, 8057, 8057, 8058, 8063, 8063, 8078, 8102, 8102, 8103, 8115, 8120, 8129, 8130, 8137, 8137, 8141, 8150, 8157, 8158, 8174, 8220, 8241, 8252, 8252, 8255, 8258, 8258, 8261, 8280, 8288, 8289, 8290, 8296, 8297, 8298, 8442, 8442, 8481, 8483, 8497, 8498, 8499, 8507, 8517, 8531, 8699, 8733, 8740, 8804, 8805, 8809, 8932, 8970, 9022, 9206, 9240, 9433, 9435, 9436, 9437, 9437, 9492, 9492, 9493, 9494, 9494, 9551, 9555, 9557, 9561, 9584, 9596, 9600, 9604, 9608, 9615, 9622, 9634, 9638, 9654, 9658, 9662, 9669, 9676, 9687, 9694, 9716, 9723, 9785, 9789, 9827, 9827, 9827, 9841, 9841, 9842, 9842, 9871, 9871, 9872, 9873, 9874, 9876, 9877, 9879, 9884, 9887, 9888, 9891, 9891, 9894, 9896, 9897, 9897, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9909, 9915, 9958, 9963, 9970, 9975, 9979, 9984, 9986, 9989, 9994, 10089, 10091, 10102, 10103, 10117, 10272, 10272, 10277, 10307, 10308, 10314, 10378, 10397, 10400, 10493, 10500, 10500, 10501, 10598, 10642, 10678, 10849, 10849, 10850, 10852, 10852, 10856, 10863, 10880, 10880, 10881, 10881, 10965, 11413, 11413, 11415, 11430, 11524, 11537, 11543, 11543, 11543, 11544, 11545, 11554, 11571, 11668, 11680, 11718, 11762, 11784, 11787, 11826, 11844, 11853, 11864, 11876, 11886, 11886, 11983, 11994, 11995, 11998, 12000, 12003, 12009, 12055, 12071, 12079, 12084, 12085, 12086, 12099, 12100, 12101, 12102, 12103, 12104, 12105, 12105, 12106, 12107, 12108, 12109, 12109, 12431, 12434, 12517, 12574, 12630, 12630, 12630, 12631, 12631, 12631, 12632, 12632, 12648, 12650, 12650, 12650, 12652, 12653, 12654, 12655, 12663, 12663, 12664, 12670, 12671, 12672, 12679, 12679, 12679, 12679, 12684, 12690, 12690, 12720, 12720, 12724, 12725, 12725, 12726, 12727 |
| view | 676 | 30 | — | 378, 1730, 1731, 1734, 1734, 1734, 1837, 1884, 1884, 1884, 1885, 1886, 1914, 1915, 2006, 2025, 2025, 2036, 2036, 2036, 2037, 2038, 2059, 2059, 2059, 5967, 6339, 8065, 8133, 8147, 8153, 8167, 8174, 8177, 8177, 8177, 8665, 8670, 8679, 8710, 8710, 8713, 8717, 8721, 8777, 8802, 8803, 8804, 8805, 8806, 8807, 8807, 8808, 8809, 8884, 8887, 8888, 8889, 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8900, 8905, 8919, 8923, 8925, 8927, 8935, 8946, 8947, 8952, 8958, 8969, 8970, 9037, 9046, 9057, 9068, 9075, 9082, 9112, 9245, 9316, 9384, 9530, 9533, 10057, 10129, 10225, 10253, 10253, 10253, 10253, 10261, 10261, 10261, 10261, 10264, 10265, 10265, 10270, 10271, 10271, 10277, 10284, 10284, 10306, 10308, 10312, 10342, 10350, 10350, 10350, 10352, 10366, 10366, 10366, 10541, 10642, 10682, 10833, 10833, 10841, 10841, 10884, 11170, 11232, 11288, 11312, 11319, 11412, 11412, 11414, 11415, 11417, 11654, 11654, 11977, 11977, 11980, 11985, 11987, 12059, 12496, 12541, 12630, f7-layout.js:34 |
| searchResults | 677 | 23 | — | 8803, 8888, 11174, 11197, 11208, 11232, 11234 |
| searchAttempted | 680 | 28 | — | 8888, 9062, 11175, 11198, 11209 |
| searchSeq | 684 | 18 | — | 11166, 11172, 11195, 11205, 11220 |
| channelData | 685 | 78 | — | 8666, 8670, 8672, 8673, 8674, 8675, 8678, 8806, 8959, 8963, 8966, 9046 |
| queue | 686 | 15 | — | 640, 4879, 4895, 4922, 4927, 4933, 4934, 4943, 4944, 4944, 5467, 5468, 5525, 7451, 7478, 8072, 8080, 8091, 8092, 8093, 8098, 8098, 8107, 8109, 8141, 8142, 8185, 8209, 8218, 8220, 8228, 8314, 8377, 8377, 8403, 8403, 8404, 8802, 10314, 10315, 11956, f7-layout.js:34 |
| queueIndex | 687 | 20 | — | 639, 640, 4882, 4885, 4895, 4922, 4944, 5467, 5467, 5467, 7451, 7478, 8073, 8080, 8091, 8093, 8098, 8110, 8142, 8185, 8210, 8218, 8218, 8219, 8221, 8228, 8312, 8313, 8314, 8377, 8377, 8403, 8403, 8404, 10315, 10315, 11956, f7-layout.js:34 |
| queueSource | 688 | 21 | — | 5474, 5474, 8074, 8139, 8173, 8173, 8625, 10253, 10312, 10756, 10756, 11862, 11862, 11863, f7-layout.js:34 |
| playFullMode | 689 | 25 | — | 2434, 3060, 3069, 5468, 5475, 7971, 8075, 8220, 8241, 8243, 8243, 11956 |
| current | 692 | 19 | — | 1842, 1842, 1842, 1882, 1882, 1882, 2057, 2057, 2057, 2073, 2073, 2073, 2307, 2338, 2350, 2351, 2351, 2351, 2353, 2353, 2379, 2380, 2381, 2382, 2390, 2394, 2396, 2407, 2408, 2409, 2409, 2433, 2467, 2479, 2479, 2482, 2483, 2484, 2494, 2494, 2495, 2498, 2501, 2522, 2541, 2541, 2549, 2549, 2556, 2557, 2569, 2575, 2575, 2578, 2584, 2606, 2609, 2619, 2626, 2842, 2842, 2842, 2842, 2868, 2874, 2952, 2965, 3029, 3029, 3055, 3055, 3061, 3069, 3069, 3072, 3121, 3121, 3121, 3123, 3124, 3124, 3124, 3160, 3160, 3160, 3295, 3295, 3296, 3352, 3352, 3353, 3357, 3693, 3693, 3693, 3905, 3905, 3905, 3905, 3914, 3914, 3914, 4181, 4181, 4181, 4181, 4211, 4211, 4211, 4294, 4294, 4294, 4405, 4405, 4405, 4731, 4731, 4849, 4849, 4943, 5473, 5473, 5528, 5532, 5532, 5532, 5609, 5609, 5612, 5691, 5691, 5691, 5739, 5739, 5782, 5791, 5932, 5932, 6309, 6309, 6309, 6444, 6444, 6819, 6867, 6867, 7057, 7073, 7438, 7438, 7599, 7599, 7641, 7641, 7641, 7957, 8011, 8011, 8028, 8028, 8029, 8031, 8032, 8038, 8038, 8106, 8106, 8106, 8140, 8140, 8140, 8165, 8396, 8396, 8549, 8549, 8624, 8624, 8624, 9442, 9497, 9911, 9911, 9911, 9918, 9918, 9918, 10040, 10075, 10075, 10075, 10313, 10313, 10313, 10328, 10328, 10575, 10575, 10575, 10755, 10755, 10755, 10757, 10758, 11002, 11002, 11449, 11449, 11450, 11471, 11478, 11478, 11478, 11480, 11480, 11480, 11483, 11483, 11483, 11486, 11486, 11486, 11487, 11498, 11498, 11498, 11503, 11503, 11503, 11504, 11504, 11508, 11508, 11508, 11509, 11509, 11526, 11556, 11574, 11595, 11595, 11595, 11596, 11597, 11598, 11599, 11601, 11602, 11810, 11817, 11825, 11825, 11826, 11835, 11835, 11844, 11849, 11849, 11853, 11861, 11861, 11866, 11874, 11874, 11876, 11879, 11879, 11880, 11919, 11924, 11924, 12631, 12648, 12654, 12654, 12665 |
| IS_IOS | 693 | 131 | — | 2521, 2539 |
| _currentEqUrl | 695 | 25 | — | 697, 697, 697, 699, 699, 700 |
| useEqRender | 696 | 286 | WEB, _currentEqUrl, EqRender | 2305, 2337 |
| dragSource | 702 | 20 | — | 10288, 10303 |
| listFilter | 703 | 20 | — | 8909, 8910, 9464, 9529, 10354, 11381, 11390, 11390 |
| selectMode | 704 | 23 | — | 8902, 8903, 8915, 9038, 9039, 9040, 10252, 11611, 12024, 12032, 12032, 12035, 12036 |
| selectedIds | 705 | 28 | — | 8903, 10196, 11392, 11393, 11393, 11394, 11395, 11400, 11404, 11408, 11413, 11416, 11418, 11427, 12025, 12033, 12042, 12042, 12042, 12043, 12044 |
| sleepTimerRemaining | 706 | 28 | — | 4859, 11691, 11694, 11695, 11698, 11707, 11745, 11750, 11751, 11799 |
| sleepTimerTick | 707 | 26 | — | 11693, 11705, 11705, 11706 |
| abA | 708 | 15 | — | 2447, 2447, 2450, 4682, 5476, 6482, 6482, 7971, 7971, 7973, 7977, 11811, 11814, 11824, 11836, 11837, 11849, 11854, 11898, 11901, 11908, 12654, 12659 |
| abB | 709 | 15 | — | 5476, 6483, 6483, 6483, 7971, 7971, 7971, 11818, 11821, 11824, 11836, 11837, 11849, 11855, 11898, 11902, 11909, 12654, 12659 |
| relatedVideos | 710 | 23 | — | 11920, 11928, 11942 |
| relatedCollapsed | 711 | 29 | — | 7206, 7209, 7210, 11376, 11930 |
| saveTimer | 712 | 21 | — | 775, 776 |
| cachedIds | 713 | 28 | — | 336, 371, 631, 641, 1699, 1700, 1721, 1722, 1725, 1725, 1728, 1794, 1827, 1863, 1881, 1903, 1911, 1940, 2002, 2012, 2034, 2051, 2287, 2293, 2329, 2332, 3115, 3118, 3182, 3190, 3201, 3366, 3377, 4852, 5508, 6615, 6745, 6795, 6796, 7602, 9181, 9430, 9490, 10037, 10074, 10194, 10562, 10571, 10573, 10816, 11453, 11461, 11491, 12632, 12640 |
| downloading | 714 | 30 | — | 336, 372, 1725, 1827, 1834, 1879, 1926, 2002, 2003, 2032, 3176, 3189, 3373, 10195, 10790, 11452, 12688 |
| downloadMeta | 715 | 31 | — | 1835, 1880, 2004, 2033 |
| removing | 716 | 27 | — | 3369, 11452, 11456 |
| playlistOps | 717 | 30 | — | 10606 |
| runExclusive | 721 | 230 | — | 10606, 11456 |
| $ | 729 | 82 | — | 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 836, 838, 838, 839, 999, 1079, 1087, 1088, 1089, 1146, 1148, 1155, 1301, 1398, 1406, 1483, 1483, 1498, 1498, 1524, 1573, 1589, 1615, 1633, 1732, 1887, 1916, 1927, 1930, 2039, 3092, 3096, 3097, 3142, 3254, 3270, 3328, 3366, 3462, 3517, 3537, 3538, 3539, 3540, 3585, 3586, 3591, 3592, 3593, 3629, 3630, 3632, 3659, 3660, 3663, 3667, 3680, 3684, 3691, 3717, 3724, 3726, 3736, 3934, 3944, 3950, 3953, 3978, 4254, 4263, 4269, 4270, 4272, 4280, 4281, 4283, 4353, 4378, 4386, 4395, 4419, 4447, 4448, 4449, 4457, 4465, 4471, 4478, 4524, 4525, 4531, 4532, 4564, 4565, 4566, 4567, 4576, 4577, 4578, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, 4604, 4610, 4612, 4612, 4615, 4627, 4628, 4629, 4634, 4657, 4661, 4662, 4663, 4664, 4665, 4694, 4695, 4707, 4709, 4710, 4713, 4720, 4726, 4727, 4727, 4746, 4746, 4749, 4749, 4992, 4997, 5006, 5006, 5098, 5099, 5103, 5104, 5105, 5107, 5108, 5108, 5116, 5117, 5118, 5140, 5174, 5175, 5176, 5177, 5181, 5184, 5185, 5186, 5188, 5189, 5192, 5193, 5194, 5202, 5203, 5209, 5210, 5229, 5303, 5304, 5305, 5311, 5313, 5316, 5326, 5328, 5341, 5357, 5361, 5362, 5363, 5370, 5370, 5371, 5371, 5372, 5376, 5377, 5378, 5382, 5391, 5393, 5397, 5398, 5405, 5406, 5413, 5626, 5670, 5732, 5776, 5789, 5882, 6071, 6099, 6106, 6109, 6126, 6127, 6134, 6140, 6206, 6291, 6292, 6292, 6293, 6293, 6297, 6411, 6812, 6930, 7035, 7583, 7802, 7817, 7820, 7820, 7823, 7824, 7839, 7843, 7865, 7874, 7875, 7882, 7938, 7979, 8029, 8030, 8033, 8041, 8043, 8047, 8121, 8124, 8186, 8187, 8188, 8189, 8234, 8248, 8299, 8325, 8367, 8375, 8386, 8387, 8390, 8397, 8398, 8409, 8427, 8458, 8487, 8522, 8524, 8526, 8526, 8542, 8547, 8550, 8578, 8636, 8650, 8870, 8871, 8886, 8886, 8887, 8901, 8902, 8903, 8905, 8975, 9015, 9029, 9031, 9041, 9043, 9239, 9377, 9387, 9403, 9454, 9522, 9523, 9874, 9894, 9895, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9914, 9914, 9925, 9930, 9934, 9935, 9936, 9937, 9940, 9945, 9949, 9957, 9962, 9969, 9974, 9978, 9983, 9988, 9993, 9999, 10000, 10009, 10010, 10031, 10049, 10060, 10061, 10062, 10083, 10088, 10096, 10097, 10098, 10098, 10099, 10102, 10103, 10104, 10105, 10105, 10106, 10109, 10110, 10111, 10112, 10113, 10114, 10115, 10116, 10131, 10133, 10154, 10155, 10163, 10355, 10427, 10436, 10439, 10528, 10704, 10819, 10832, 10840, 10861, 10870, 10895, 10900, 10900, 10901, 10902, 10910, 10911, 10914, 10923, 10925, 10932, 10933, 10970, 10972, 10972, 10972, 11000, 11007, 11117, 11124, 11128, 11129, 11144, 11145, 11148, 11150, 11189, 11231, 11239, 11240, 11357, 11358, 11358, 11359, 11360, 11361, 11362, 11363, 11364, 11367, 11368, 11369, 11370, 11373, 11380, 11386, 11388, 11394, 11396, 11398, 11407, 11425, 11474, 11474, 11475, 11475, 11476, 11476, 11477, 11477, 11478, 11478, 11507, 11518, 11518, 11521, 11521, 11610, 11610, 11616, 11619, 11620, 11621, 11622, 11623, 11624, 11625, 11628, 11629, 11630, 11631, 11645, 11650, 11738, 11739, 11746, 11748, 11752, 11754, 11893, 11899, 11899, 11899, 11900, 11907, 11907, 11927, 11927, 11972, 12026, 12028, 12029, 12034, 12036, 12037, 12038, 12043, 12231, 12629, 12645, 12648, 12648, 12648, 12648, 12714, 12714, 12715, 12715 |
| els | 730 | 1141 | $ | 1549, 1550, 1551, 1607, 1609, 2245, 2261, 2279, 2363, 2369, 2372, 2387, 2388, 2389, 2390, 2391, 2395, 2397, 2398, 2398, 2398, 2399, 2399, 2522, 2525, 2526, 2527, 2528, 2532, 2532, 2558, 2577, 2578, 2586, 2608, 2609, 2618, 2627, 2701, 2704, 2764, 2772, 2782, 2831, 2836, 2844, 2844, 2878, 2878, 2948, 2966, 2970, 2978, 2980, 2985, 2985, 3091, 3209, 3210, 3221, 3229, 3358, 3358, 3359, 3359, 3361, 3362, 3363, 3364, 3367, 4914, 5537, 5884, 5911, 5969, 5971, 5972, 5973, 6326, 6328, 6329, 6330, 6336, 6341, 6353, 6354, 6361, 6362, 6373, 6374, 6808, 6919, 6920, 6996, 6997, 7014, 7015, 7037, 7123, 7648, 7917, 7917, 7958, 7959, 7960, 8009, 8018, 8018, 8167, 8171, 8172, 8296, 8296, 8297, 8297, 8298, 8298, 8459, 8680, 8681, 8682, 8698, 8714, 8746, 8746, 8747, 8747, 8819, 8820, 8831, 8874, 8875, 8876, 8877, 8878, 8879, 8884, 8888, 8914, 8915, 8917, 8919, 8924, 8926, 8928, 8933, 8936, 8944, 8948, 8956, 8959, 8967, 8971, 9007, 9008, 9009, 9010, 9011, 9012, 9030, 9052, 9053, 9061, 9062, 9099, 9102, 9104, 9277, 9279, 9280, 9281, 9300, 9301, 9301, 9308, 9310, 9311, 9312, 9337, 9373, 9375, 9376, 9378, 9516, 9518, 9519, 9520, 9571, 9573, 9574, 9575, 9959, 9964, 9971, 10352, 11090, 11149, 11223, 11224, 11225, 11243, 11244, 11246, 11252, 11254, 11267, 11269, 11270, 11271, 11272, 11274, 11277, 11302, 11307, 11325, 11351, 11352, 11448, 11479, 11482, 11482, 11485, 11485, 11497, 11501, 11501, 11502, 11514, 11515, 11516, 11517, 11519, 11520, 11521, 11523, 11523, 11529, 11531, 11533, 11536, 11537, 11542, 11545, 11551, 11553, 11554, 11570, 11571, 11590, 11591, 11640, 11653, 12521, 12522, 12556, 12557, 12665, 12665, 12670, 12671, 12672, 12706 |
| persist | 774 | 147 | API, data, saveTimer, scheduleProfilePush | 1264, 1424, 1451, 2022, 2055, 3062, 3073, 4186, 4443, 4451, 4467, 4598, 4631, 4917, 5638, 5929, 6939, 7140, 7218, 8064, 8112, 8131, 8145, 8151, 8253, 8259, 8291, 8500, 8532, 8932, 9438, 9495, 9888, 9891, 9894, 9897, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9910, 9916, 9960, 9967, 9972, 9976, 9980, 9985, 9990, 9995, 10092, 10102, 10103, 10119, 10273, 10278, 10318, 10404, 10502, 10621, 10643, 10680, 10711, 10763, 10853, 10857, 10882, 11420, 11435, 11524, 11540, 11548, 11555, 11572, 11784, 11787, 11829, 11845, 11888, 12057, 12080, 12110, 12483, 12630, 12631, 12632, 12650, 12652, 12653, 12654, 12655 |
| profilePayload | 786 | 528 | data | 878, 1415 |
| ProfileSecret | 806 | 671 | — | 817, 846, 859, 1030, 1444, 1448, 1448, 1458, 1504, 1507, 1536, 10118, 12679 |
| profileHeaders | 816 | 143 | ProfileSecret | 87, 877, 956, 1314, 1328, 5896, 12720 |
| askProfileSecret | 822 | 1307 | $, importProfileCredentials, escapeHtml, showModal, closeModal | 855 |
| fetchProfile | 845 | 740 | ProfileSecret, askProfileSecret | 1373, 1534, 1577 |
| profilePushTimer | 865 | 28 | — | 868, 869 |
| scheduleProfilePush | 866 | 179 | WEB, data, profilePushTimer, pushProfile | 777, 972 |
| pushProfile | 872 | 947 | WEB, API, data, profilePayload, profileHeaders, toast | 869 |
| applyProfileData | 895 | 1432 | API, DEFAULT_SETTINGS, data | 970, 1545 |
| _syncBusy | 917 | 18 | — | 919, 919, 921 |
| setSyncing | 918 | 192 | _syncBusy | 926, 934 |
| syncOnLaunch | 925 | 637 | setSyncing, playlistFingerprint, pullProfileIfNewer, updateProfileStatus, checkPlaylistInbox, render, renderSmartSidebar | 12618 |
| playlistFingerprint | 945 | 189 | data | 927, 937 |
| pullProfileIfNewer | 953 | 1123 | WEB, data, profileHeaders, scheduleProfilePush, applyProfileData, toast | 929 |
| profileShareUrl | 980 | 175 | WEB, data | 986, 1006, 1023, 9829, 9834, 9839, 9840 |
| copyProfileLink | 985 | 759 | $, profileShareUrl, escapeHtml, toast, showModal, closeModal | 1008, 10111, 11144 |
| shareProfileLink | 1005 | 427 | data, profileShareUrl, copyProfileLink | 10112, 11145 |
| updateProfileStatus | 1021 | 1681 | data, ProfileSecret, profileShareUrl | 941, 1425, 1452, 1555, 10120, 10123, 12666 |
| showSharedPlaylistModal | 1057 | 3747 | data, $, escapeHtml, toast, showModal, closeModal | 1174 |
| sharePlaylist | 1160 | 696 | showSharedPlaylistModal, toast | 9014 |
| adoptSharedPlaylistFromUrl | 1182 | 555 | WEB, adoptSharedPlaylistByCode | 12605 |
| adoptSharedPlaylistByCode | 1205 | 2628 | data, persist, escapeHtml, toast, uid, renderSidebar, render, slim, showModal, closeModal | 1198, 1324 |
| inboxCheckRunning | 1278 | 30 | — | 1281, 1284, 1289 |
| inboxLastCheck | 1279 | 23 | — | 1285, 1299 |
| checkPlaylistInbox | 1280 | 352 | WEB, data, inboxCheckRunning, inboxLastCheck, drainPlaylistInbox | 932, 1303 |
| INBOX_POLL_MS | 1293 | 36 | — | 1307 |
| INBOX_MIN_GAP_MS | 1294 | 35 | — | 1299 |
| startPlaylistInboxWatch | 1295 | 547 | WEB, $, inboxLastCheck, checkPlaylistInbox, INBOX_POLL_MS, INBOX_MIN_GAP_MS | 12619 |
| drainPlaylistInbox | 1310 | 853 | profileHeaders, adoptSharedPlaylistByCode | 1287 |
| adoptProfileFromUrl | 1338 | 1712 | WEB, data, fetchProfile, finishProfileLoad, escapeHtml, toast, showModal, closeModal | 12606 |
| createProfileFlow | 1385 | 1098 | $, requestCreateProfile, toast, showModal, closeModal | 10109 |
| requestCreateProfile | 1410 | 756 | data, persist, profilePayload, updateProfileStatus, toast, closeModal | 1396, 1403 |
| randomProfileKey | 1433 | 193 | — | 1476 |
| setProfileSecretOnServer | 1439 | 639 | data, persist, ProfileSecret, updateProfileStatus | 1476, 1487, 1494 |
| protectProfileFlow | 1455 | 2453 | data, $, ProfileSecret, randomProfileKey, setProfileSecretOnServer, exportProfileCredentials, escapeHtml, toast, showModal, closeModal | 10113 |
| exportProfileCredentials | 1502 | 1276 | data, ProfileSecret, toast | 1479, 10114 |
| importProfileCredentials | 1523 | 1125 | $, ProfileSecret, fetchProfile, finishProfileLoad, toast | 835, 10115 |
| finishProfileLoad | 1544 | 623 | data, els, applyProfileData, updateProfileStatus, toast, applyAppearance, preloadPlaylist, preloadPinnedPlaylists, updateQueueBadge, updateLoopRepeatButtons, renderSidebar, render, renderSmartSidebar | 1379, 1537, 1583 |
| loadProfileFlow | 1561 | 1120 | $, fetchProfile, finishProfileLoad, toast, showModal, closeModal | 10110 |
| escapeHtml | 1595 | 187 | — | 828, 997, 1061, 1063, 1233, 1241, 1360, 1465, 3589, 3613, 3616, 3664, 3665, 3673, 3674, 3779, 3841, 4018, 4019, 4295, 4406, 4552, 5031, 5038, 5038, 5215, 5216, 5284, 5285, 5285, 6012, 6030, 6031, 6039, 6039, 6041, 6041, 6209, 6209, 6389, 6390, 6390, 6392, 6394, 6394, 6506, 6510, 6533, 6537, 7263, 7453, 7456, 7457, 7458, 7462, 7846, 7847, 7849, 7868, 7869, 7869, 8195, 8768, 9296, 9354, 9469, 9834, 9932, 9933, 10202, 10479, 11257, 11258, 11259, 11259, 11945 |
| ICON_PLAY | 1601 | 113 | — | 3091, 3093 |
| ICON_PAUSE | 1602 | 130 | — | 3091, 3093 |
| lastVolume | 1605 | 19 | — | 1610, 11543, 11544, 11544 |
| syncMuteIcon | 1606 | 709 | $, els, lastVolume | 4916, 7125, 9966, 11539, 11547, 12668 |
| fmtTime | 1620 | 322 | — | 2441, 4785, 5783, 7627, 7958, 7959, 8041, 8388, 8389, 10203, 11814, 11821, 11901, 11902, 11908, 11909 |
| toast | 1629 | 1015 | $ | 882, 963, 990, 1077, 1170, 1176, 1211, 1216, 1229, 1267, 1376, 1381, 1400, 1419, 1426, 1428, 1459, 1478, 1480, 1484, 1485, 1489, 1490, 1494, 1495, 1505, 1520, 1530, 1531, 1532, 1535, 1538, 1558, 1580, 1585, 1671, 1831, 1843, 1855, 1867, 1869, 1873, 2008, 2024, 2027, 2030, 2058, 2066, 2068, 2078, 2361, 2441, 2486, 2502, 2510, 2514, 2630, 3114, 3130, 3172, 3173, 3174, 3185, 3226, 3341, 3511, 3807, 3810, 3819, 3824, 3827, 3911, 3912, 3916, 3938, 4008, 4033, 4063, 4066, 4098, 4134, 4143, 4145, 4149, 4165, 4172, 4192, 4196, 4200, 4204, 4210, 4234, 4235, 4339, 4835, 4836, 4945, 4988, 5049, 5070, 5070, 5295, 5321, 5411, 5645, 5966, 6316, 6439, 6440, 6445, 6818, 6819, 6820, 6831, 6877, 6946, 6975, 7439, 7473, 7473, 7482, 7541, 7583, 7593, 7627, 7670, 7746, 7750, 7756, 7779, 7820, 7820, 7894, 7898, 7898, 7938, 8115, 8129, 8134, 8154, 8243, 8255, 8261, 8293, 8511, 8664, 8781, 8955, 8966, 8989, 8997, 9004, 9129, 9155, 9429, 9441, 9489, 9499, 9891, 9898, 9919, 9947, 9951, 10023, 10039, 10076, 10121, 10278, 10386, 10406, 10408, 10431, 10505, 10510, 10576, 10622, 10624, 10684, 10766, 10828, 10854, 10859, 11216, 11222, 11359, 11404, 11421, 11436, 11463, 11466, 11720, 11728, 11792, 11796, 11801, 11814, 11821, 11832, 11890, 12061, 12081, 12113, 12116, 12240, 12310, 12311, 12331, 12353, 12357, 12363, 12472, 12485, 12487, 12491, 12513, 12630, 12631, 12648, 12663, 12664, 12665, 12713 |
| uid | 1657 | 91 | — | 1261, 1995, 10499, 10677, 12054, 12433, 12630 |
| applyAppearance | 1661 | 783 | data, toast | 1546, 9894, 9897, 9901, 9903, 9904, 9905, 12662 |
| fmtBytes | 1677 | 204 | — | 9162, 9257, 9290, 9357, 9452, 9473, 9930, 10060, 10061, 10070 |
| isUsableCacheItem | 1689 | 110 | — | 1697, 1719 |
| refreshCachedIds | 1693 | 340 | API, cachedIds, isUsableCacheItem | 12675 |
| cacheMutations | 1709 | 23 | — | 1715, 1718, 1864, 2013, 3183 |
| cacheResyncRunning | 1710 | 31 | — | 1712, 1713, 1738 |
| resyncCachedIds | 1711 | 1269 | WEB, data, view, cachedIds, downloading, $, isUsableCacheItem, cacheMutations, cacheResyncRunning, markCardCacheState, renderSidebar, renderList, updatePlaylistOfflineButton | 1749 |
| startCacheResyncWatch | 1742 | 356 | WEB, resyncCachedIds | 12676 |
| warmSearchThumbs | 1762 | 268 | warmThumb | 11179, 11214 |
| warmThumb | 1768 | 150 | WEB | 1765, 1866, 2016 |
| YT_ID_RE | 1774 | 39 | — | 1777 |
| UPLOAD_ID_RE | 1775 | 42 | — | 1776 |
| isUploadId | 1776 | 63 | UPLOAD_ID_RE | 1777, 1781, 3366, 3602, 3644, 4527, 6453, 6619, 7420, 7422, 9470 |
| isMediaId | 1777 | 76 | YT_ID_RE, isUploadId | 3475, 4941, 5698, 6187, 6568 |
| thumbUrlFor | 1779 | 324 | isUploadId | 1795, 1866, 2016, 8553, 9469, 9534, 9534 |
| THUMB_WARM_MAX | 1790 | 27 | — | 1801 |
| warmOfflineThumbs | 1791 | 576 | WEB, data, cachedIds, thumbUrlFor, THUMB_WARM_MAX, videoById | 12702 |
| recordDeviceFile | 1810 | 528 | WEB | 1865, 3184 |
| preload | 1821 | 3504 | SaveSlots, saveControllers, SaveQueue, API, data, view, current, cachedIds, downloading, downloadMeta, $, toast, cacheMutations, warmThumb, thumbUrlFor, recordDeviceFile, updateDownloadBadge, markCardCacheState, updateNowPlayingActions, EqRender, renderSidebar, renderList, slim, updatePlaylistOfflineButton | 374, 1921, 1948, 1957, 2330, 3128, 9223, 10578, 10619, 10679, 10831, 10858, 11434, 11471, 12056, 12633, 12689 |
| resavedAfterFailure | 1900 | 38 | — | 1919, 1920 |
| dropBrokenLocalCopy | 1901 | 871 | WEB, NO_HEVC_KEY, API, data, view, cachedIds, $, preload, resavedAfterFailure, markCardCacheState, renderSidebar, updatePlaylistOfflineButton | 2485 |
| updateDownloadBadge | 1925 | 331 | downloading, $ | 1838, 1883, 2007, 2035, 3178, 3191, 8724 |
| playlistOfflineStats | 1936 | 266 | cachedIds | 8700, 8754, 10789, 10821 |
| preloadPlaylist | 1946 | 138 | data, preload | 1556, 9986, 12684 |
| preloadPinnedPlaylists | 1952 | 299 | data, preload | 1557, 12685 |
| markCardCacheState | 1963 | 669 | — | 1728, 1836, 1881, 1912, 2005, 2034, 2056, 3119, 3177, 3190, 9498, 10574, 11462 |
| customVideoId | 1994 | 91 | sanitizeId, uid | 2221 |
| downloadEdited | 2000 | 1949 | API, data, view, cachedIds, downloading, downloadMeta, $, persist, toast, cacheMutations, warmThumb, thumbUrlFor, updateDownloadBadge, markCardCacheState, renderSidebar, renderList, videoById, slim, updatePlaylistOfflineButton | 2233 |
| deleteCustomVideo | 2049 | 620 | API, data, view, current, cachedIds, persist, toast, markCardCacheState, updateNowPlayingActions, renderList | 10566 |
| openVideoEditor | 2065 | 6603 | WEB, current, toast, customVideoId, downloadEdited, Player, showModal, closeModal | 10589, 11483 |
| Player | 2243 | 30427 | TAURI, WEB, perfMark, NO_HEVC_KEY, _currentBlobUrl, API, knownServerCachedIds, toAssetUrl, data, playFullMode, current, IS_IOS, useEqRender, abA, cachedIds, els, fmtTime, toast, preload, dropBrokenLocalCopy, showSpinner, chooseQuality, buildQualityMenu, offerPeerDownload, updateNowPlayingActions, Notes, Remote, Transition, Wave, Level, Gestures, Party, setHomeOverPlayer, showMiniBar, addToHistory, playNext, playPrev, updateServiceMode, channelKeyOf, markPlayingCard, scrollPlayerIntoViewPortrait, restoreAbMarkers, rememberPosEnabled, updateRememberPosUI, loadRelated, exitSelectMode | 2073, 2073, 2074, 2150, 2152, 2925, 2926, 2932, 2935, 2937, 2938, 2942, 2943, 2987, 2990, 2994, 2995, 2997, 2998, 3005, 3005, 3010, 3014, 3014, 3015, 3036, 3037, 3037, 3040, 3041, 3043, 3056, 3058, 3059, 3070, 3082, 3082, 3091, 3093, 3095, 3096, 3098, 3122, 3122, 3123, 3125, 3125, 3222, 3490, 3490, 3693, 3693, 3712, 3712, 4099, 4099, 4121, 4121, 4121, 4121, 4134, 4135, 4144, 4460, 4497, 4569, 4569, 4569, 4654, 4659, 4672, 4682, 4689, 4689, 4722, 4722, 4730, 4850, 4900, 4901, 4902, 4907, 4915, 5325, 5325, 5325, 5479, 5479, 5500, 5558, 5558, 5570, 5572, 5573, 5574, 5586, 5587, 5593, 5596, 5606, 5739, 5740, 5782, 5791, 5792, 5941, 5945, 6085, 6116, 6116, 6116, 6309, 6310, 6311, 6311, 6314, 6315, 6316, 6316, 6317, 6318, 6446, 6820, 6836, 6836, 6836, 6839, 6839, 6839, 7058, 7058, 7058, 7073, 7073, 7124, 7569, 7600, 7619, 7620, 7621, 7622, 7646, 7648, 7649, 7650, 7651, 7657, 7918, 7956, 7957, 7973, 7976, 7977, 8039, 8040, 8080, 8228, 8241, 8241, 8246, 8311, 8311, 8314, 8423, 8423, 8424, 8424, 8428, 8429, 8588, 8588, 9965, 11514, 11525, 11525, 11526, 11526, 11526, 11532, 11533, 11538, 11546, 11551, 11558, 11559, 11561, 11563, 11564, 11565, 11567, 11575, 11577, 11578, 11578, 11579, 11587, 11588, 11588, 11589, 11589, 11619, 11628, 11676, 11680, 11709, 11716, 11717, 11811, 11818, 11956, 12648, 12654, 12654, 12654, 12654, 12654, 12656, 12660, 12660, 12660, 12660, 12665, 12665, 12665, 12665, sw-update.js:177, sw-update.js:177 |
| showSpinner | 2947 | 75 | els | 2277, 2290, 2360, 2513, 2629, 3025, 3035, 3046 |
| chooseQuality | 2951 | 459 | data, current | 2356, 2874, 11560, 11576 |
| buildQualityMenu | 2964 | 559 | data, current, els | 2386 |
| wirePlayerEvents | 2984 | 4922 | WEB, perfMeasure, warmNextQueue, data, playFullMode, current, els, persist, Player, showSpinner, updatePlayBtn, updateProgress, onTrackEnded, rememberPosEnabled | 12565 |
| updatePlayBtn | 3089 | 530 | $, els, ICON_PLAY, ICON_PAUSE, Player, Remote | 2990, 3007, 7073, 7650, 7651, 7978, 8234, 8247, 12648, 12656, 12660, 12665 |
| reportingBroken | 3104 | 34 | — | 3107, 3108, 3132, 3363, 3364 |
| reportBroken | 3105 | 1271 | API, current, cachedIds, toast, preload, markCardCacheState, Player, reportingBroken, updateNowPlayingActions | 11494 |
| availCache | 3140 | 29 | — | 3150, 3153, 3158, 3158, 3158 |
| renderAvailability | 3141 | 1214 | WEB, data, current, $, availCache | 3354 |
| getFromPeers | 3171 | 1175 | cachedIds, downloading, toast, cacheMutations, recordDeviceFile, updateDownloadBadge, markCardCacheState, renderSidebar | 3217, 9214 |
| offerPeerDownload | 3197 | 1554 | WEB, data, cachedIds, els, toast, Player, getFromPeers | 2373 |
| openMoreControls | 3237 | 2465 | $, showModal, closeModal | 4718, 11477 |
| openAddChoice | 3294 | 998 | current, addToQueue, openCardMenu, showModal, closeModal | 11475 |
| openMoreActions | 3318 | 1347 | $, toast, showModal, closeModal | 11474 |
| setTile | 3347 | 135 | — | 3370, 3374, 3378, 3383 |
| updateNowPlayingActions | 3351 | 1537 | WEB, current, cachedIds, downloading, removing, $, els, isUploadId, reportingBroken, renderAvailability, setTile | 1842, 1882, 2057, 2400, 3109, 3133, 9442, 9497, 10040, 10075, 10575, 11457, 11469 |
| SERVICE_LYRIC_MIN_PX | 3390 | 32 | — | 4257 |
| fitLyricLines | 3400 | 2596 | — | 4257, 4411, 4414, 6225 |
| Notes | 3460 | 56491 | WEB, data, current, abA, $, persist, escapeHtml, toast, isUploadId, isMediaId, Player, SERVICE_LYRIC_MIN_PX, fitLyricLines, Party, isServiceModeOpen, updateServiceViewBtn, showModal, closeModal | 2380, 4722, 4722, 7810, 7810, 7903, 7963, 8502, 8644, 9981, 11586, 11598, 11599, 11601, 11602, 11630, 12648, 12648, 12648, 12658 |
| Remote | 4762 | 30421 | WEB, API, data, queue, queueIndex, current, sleepTimerRemaining, cachedIds, $, els, persist, escapeHtml, syncMuteIcon, fmtTime, toast, isMediaId, Player, playVideoAt, playFromList, renderUpNext, playNext, playPrev, isServiceModeOpen, enterServiceMode, exitServiceMode, slim, showModal, closeModal, closeSidebar, startSleepTimer, cancelSleepTimer | 2385, 3090, 8184, 12643 |
| TRANSITION_MODES | 5450 | 57 | — | 5636, 5636, 5636 |
| Transition | 5451 | 8619 | WEB, API, data, queue, queueIndex, queueSource, playFullMode, current, abA, abB, cachedIds, $, els, persist, toast, Player, TRANSITION_MODES, Party, advanceQueue, sleepAtTrackEnd | 2266, 7964, 8238, 11360, 12646 |
| Wave | 5668 | 5245 | WEB, data, current, $, fmtTime, isMediaId, Player | 2381, 7967, 11573 |
| CatalogSync | 5801 | 1192 | WEB, webFetch, SearchLibrary | 5829, 12730 |
| collectSearchMetadata | 5829 | 81 | WEB, CatalogSync | 251, 11180 |
| Recommendations | 5831 | 5450 | WEB, webFetch, data, $, els, profileHeaders, updateBottomChrome, setHomeOverPlayer, playFromList, addToQueue, openCardMenu | 8738, 8920, 12729 |
| StatsTrack | 5923 | 1462 | data, current, persist, Player | 5968, 7966 |
| renderStats | 5965 | 7074 | data, view, $, els, escapeHtml, toast, Player, StatsTrack, resetListHeaderExtras | 8894 |
| Presenter | 6097 | 9492 | WEB, $, escapeHtml, isMediaId, Player, fitLyricLines | 12621 |
| playVideoAt | 6308 | 546 | current, toast, Player | 5179, 6409, 6575, 7569, 7643, 12517 |
| renderLibrary | 6325 | 1254 | view, els, resetListHeaderExtras, renderCard | 8896 |
| renderNotesView | 6360 | 3892 | data, $, els, escapeHtml, playVideoAt | 8895 |
| Share | 6434 | 8739 | data, current, abA, abB, escapeHtml, toast, isUploadId, isMediaId, Player, playVideoAt, showModal, closeModal | 11361, 12624 |
| Level | 6588 | 3894 | data, cachedIds, isUploadId, EqRender, EQ | 2382, 6695, 6695, 6696, 6877, 9647, 9872, 9911, 9918 |
| EqRender | 6684 | 5914 | WEB, data, cachedIds, Level, loadSoundFeatures, EQ | 698, 699, 1862, 1862, 6594, 6594, 6942, 6942, 9912, 12652, 12653, 12700 |
| PiP | 6807 | 1774 | current, $, els, toast, Player | 11363, 11600, 12647 |
| loadSoundFeatures | 6853 | 107 | — | 6749, 6877, 6946 |
| EQ_BANDS | 6854 | 36 | — | 6882, 6921, 6959, 7022 |
| EQ_PRESETS | 6855 | 40 | — | 6869, 6934, 6934, 6958, 6973, 6975 |
| EQ | 6856 | 7927 | data, current, $, els, persist, toast, Level, EqRender, loadSoundFeatures, EQ_BANDS, EQ_PRESETS, showModal, closeModal | 6609, 6610, 6686, 6694, 6762, 8567, 8567, 9643, 9649, 9911, 9917, 11364, 11603, 12649, 12651, 12652, 12652, 12653 |
| Gestures | 7033 | 5217 | data, current, $, els, persist, syncMuteIcon, Player, updatePlayBtn | 2383 |
| SectionRail | 7170 | 10973 | data, relatedCollapsed, persist, escapeHtml, restoreNowPlayingList | 10371, 11376, 12623 |
| External | 7417 | 4595 | queue, queueIndex, current, escapeHtml, toast, isUploadId, showModal, closeModal | 11362 |
| Party | 7499 | 22833 | WEB, API, data, current, cachedIds, $, els, escapeHtml, fmtTime, toast, Player, updatePlayBtn, Notes, playVideoAt, advanceQueue, playNext, playPrev, closeSidebar | 2384, 4392, 4392, 4392, 5478, 8217, 8233, 8240, 8310, 12628 |
| updateProgress | 7955 | 1111 | data, playFullMode, current, abA, abB, $, els, fmtTime, Player, updatePlayBtn, Notes, Transition, Wave, StatsTrack, updateMiniBar, advanceQueue, updateServiceProgress, sleepAtTrackEnd, applySleepFade | 3049, 3077 |
| updateBottomChrome | 7990 | 525 | — | 5886, 8001, 8002, 8035, 8048, 12686 |
| setHomeOverPlayer | 8008 | 702 | current, els, showMiniBar, isServiceModeOpen, exitServiceMode, renderHomePlaylists | 2278, 5871, 8170, 10343, 11312, 11320 |
| showMiniBar | 8027 | 376 | current, $, updateBottomChrome, updateMiniBar, channelKeyOf | 2402, 8021, 11005 |
| updateMiniBar | 8037 | 303 | current, $, fmtTime, Player | 7961, 8034 |
| hideMiniBar | 8046 | 111 | $, updateBottomChrome | 11004, 11632, 11650 |
| addToHistory | 8054 | 535 | data, view, persist, renderList | 2379 |
| playFromList | 8071 | 403 | warmNextQueue, data, queue, queueIndex, queueSource, playFullMode, Player, unshuffledQueue, applyShuffle, renderUpNext | 4943, 5871, 8158, 8633, 8780, 8952, 8963, 8980, 8988, 9259, 9336, 9365, 9478, 10253 |
| unshuffledQueue | 8088 | 27 | — | 8076, 8092, 8092, 8105, 8107, 8108 |
| applyShuffle | 8090 | 436 | queue, queueIndex, unshuffledQueue | 8078, 8104 |
| toggleShuffle | 8101 | 558 | data, queue, queueIndex, current, persist, toast, unshuffledQueue, applyShuffle, renderUpNext, updateLoopRepeatButtons | 8290, 11517, 11594 |
| updateQueueBadge | 8119 | 339 | data, $ | 1548, 8132, 8146, 8152, 8723, 12669 |
| addToQueue | 8127 | 338 | data, view, persist, toast, updateQueueBadge, renderList, slim | 3310, 5874, 8955, 8966, 9004, 10548, 11402, 11498, 11595 |
| removeFromQueue | 8136 | 479 | data, view, queue, queueIndex, queueSource, current, persist, updateQueueBadge, renderUpNext, renderList | 10270, 11418 |
| clearQueue | 8149 | 148 | data, view, persist, toast, updateQueueBadge, renderList | 4692, 8943 |
| playQueue | 8156 | 119 | data, playFromList | 8940 |
| restoreNowPlayingList | 8164 | 845 | data, view, queueSource, current, els, setHomeOverPlayer, renderUpNext, _lastViewKey, render | 7234, 10338, 11025, 11639, 11650 |
| renderUpNext | 8182 | 1289 | queue, queueIndex, $, escapeHtml, Remote, playNext, updateServiceUpNext, openChannel, channelKeyOf | 4927, 4935, 4944, 8081, 8114, 8143, 8179, 8229, 8315, 10316, 11956 |
| advanceQueue | 8216 | 598 | data, queue, queueIndex, playFullMode, Player, Party, renderUpNext | 5574, 7569, 7974, 8234, 8242 |
| playNext | 8232 | 143 | $, updatePlayBtn, Party, advanceQueue | 2414, 4903, 4922, 7623, 8210, 11515, 11620, 12648, 12657, 12665 |
| onTrackEnded | 8237 | 702 | data, playFullMode, $, toast, Player, updatePlayBtn, Transition, Party, advanceQueue, sleepAtTrackEnd, finishSleep | 3078 |
| toggleLoopOne | 8251 | 191 | data, persist, toast, updateLoopRepeatButtons | 11519, 11592 |
| toggleRepeat | 8257 | 229 | data, persist, toast, updateLoopRepeatButtons | 11520, 11593 |
| PLAY_MODES | 8265 | 335 | — | 8286, 8293, 8302, 8305, 8305, 8306 |
| MODE_ICONS | 8272 | 456 | — | 8302 |
| playModeIndex | 8279 | 176 | data | 8286, 8301 |
| cyclePlayMode | 8285 | 416 | data, persist, toast, toggleShuffle, PLAY_MODES, playModeIndex, updateLoopRepeatButtons | 11518 |
| updateLoopRepeatButtons | 8295 | 769 | data, $, els, PLAY_MODES, MODE_ICONS, playModeIndex | 1547, 8113, 8254, 8260, 8292, 9906, 9907, 12667 |
| playPrev | 8309 | 268 | queue, queueIndex, Player, Party, renderUpNext | 2413, 4904, 7624, 11516, 11621, 12665 |
| serviceWakeLock | 8322 | 27 | — | 8332, 8337, 8337, 8338, 8341, 8343, 8344, 8349, 8355, 8357, 8358, 8361, 8369, 8369 |
| isServiceModeOpen | 8324 | 116 | $ | 2927, 2939, 2944, 4246, 4858, 8014, 8330, 8395, 8461, 8544, 11606, 11735, 12648, 12648 |
| acquireWakeLock | 8329 | 671 | serviceWakeLock, isServiceModeOpen, updateWakeStateUI | 2927, 2939, 2944, 8646 |
| releaseWakeLock | 8354 | 229 | serviceWakeLock, updateWakeStateUI | 8657, 11736 |
| updateWakeStateUI | 8366 | 268 | $, serviceWakeLock | 8333, 8345, 8351, 8363, 8432 |
| updateServiceUpNext | 8374 | 340 | queue, queueIndex, $ | 8183, 8420 |
| updateServiceProgress | 8385 | 379 | $, fmtTime | 7962, 8425 |
| updateServiceMode | 8394 | 1370 | queue, queueIndex, current, $, Player, isServiceModeOpen, updateWakeStateUI, updateServiceUpNext, updateServiceProgress, ServiceVisual, currentPlaylistEntry | 2403, 8643, 10759 |
| serviceVideoOn | 8441 | 96 | data | 8461, 8482 |
| applyServiceVideoLayout | 8457 | 351 | $, els, isServiceModeOpen, serviceVideoOn | 8468 |
| updateServiceVideoUI | 8467 | 90 | applyServiceVideoLayout, updateServiceViewBtn | 8501, 8641, 8655 |
| SERVICE_VIEWS | 8473 | 680 | — | 8489, 8489, 8507, 8511 |
| serviceView | 8480 | 213 | data, serviceVideoOn | 8489, 8508, 8544 |
| updateServiceViewBtn | 8486 | 484 | $, SERVICE_VIEWS, serviceView | 4262, 8469, 8503 |
| setServiceView | 8496 | 278 | data, persist, Notes, updateServiceVideoUI, updateServiceViewBtn, ServiceVisual | 8510 |
| cycleServiceView | 8506 | 327 | data, toast, SERVICE_VIEWS, serviceView, setServiceView | 11623 |
| SERVICE_FONT_SCALES | 8515 | 85 | — | 8523 |
| serviceFontStep | 8516 | 137 | data | 8521, 8531 |
| applyServiceFont | 8520 | 402 | $, SERVICE_FONT_SCALES, serviceFontStep | 8533, 8642 |
| stepServiceFont | 8530 | 150 | data, persist, serviceFontStep, applyServiceFont | 11624, 11625 |
| ServiceVisual | 8537 | 3523 | current, $, thumbUrlFor, Player, EQ, isServiceModeOpen, serviceView | 8421, 8504, 8645, 8656 |
| enterServiceMode | 8621 | 1132 | queueSource, current, $, Notes, playFromList, acquireWakeLock, updateServiceMode, updateServiceVideoUI, applyServiceFont, ServiceVisual | 4954, 8998, 11476, 11647 |
| exitServiceMode | 8649 | 351 | $, releaseWakeLock, updateServiceVideoUI, ServiceVisual | 4954, 8014, 11606, 11622, 11735 |
| openChannel | 8663 | 954 | API, view, channelData, els, toast, renderList, render | 8206, 10220, 11504, 11509, 11952 |
| channelKeyOf | 8688 | 227 | — | 2396, 8032, 8203, 8206, 10215, 10220, 11503, 11504, 11508, 11509, 11949, 11952 |
| renderSidebar | 8697 | 1422 | data, view, els, updateDownloadBadge, playlistOfflineStats, updateQueueBadge, renderHomePlaylists, render | 1265, 1552, 1729, 1890, 1913, 2042, 3192, 10360, 10405, 10503, 10836, 10844, 10872, 12632, 12663 |
| renderHomePlaylists | 8732 | 2774 | data, view, els, escapeHtml, toast, playlistOfflineStats, Recommendations, playFromList, updateHomeGridScrollState, render | 8020, 8725 |
| updateHomeGridScrollState | 8792 | 345 | — | 8786, 11150, 11151 |
| currentList | 8801 | 495 | data, view, searchResults, channelData, queue, getSmartList | 8908, 11389, 11399, 11426 |
| showSearchSkeletons | 8815 | 750 | els, setListPaneHidden | 9047, 11184 |
| setListPaneHidden | 8839 | 143 | — | 8818, 8888 |
| LIST_ICONS | 8845 | 547 | — | 8860, 8865 |
| listIconBtn | 8854 | 392 | LIST_ICONS | 9013, 9014, 9018, 9023, 9028, 9038 |
| setListIcon | 8864 | 126 | LIST_ICONS | 10795, 10805 |
| resetListHeaderExtras | 8869 | 399 | $, els | 5970, 6327, 8885, 8916, 9278, 9309, 9374, 9517, 9572 |
| renderList | 8882 | 10974 | WEB, data, view, searchResults, searchAttempted, channelData, listFilter, selectMode, selectedIds, $, els, persist, sharePlaylist, toast, Recommendations, renderStats, renderLibrary, renderNotesView, playFromList, addToQueue, clearQueue, playQueue, enterServiceMode, currentList, showSearchSkeletons, setListPaneHidden, listIconBtn, resetListHeaderExtras, addBrowseCta, renderP2pStrip, renderSavedSearches, renderP2pList, renderSaved, renderDownloads, renderSettings, renderCard, markPlayingCard, renamePlaylist, updatePlaylistOfflineButton, makePlaylistOffline, togglePinPlaylist, deletePlaylist, SMART_PLAYLISTS, toggleSelectMode | 378, 1735, 1837, 1884, 2006, 2025, 2036, 2059, 8065, 8133, 8147, 8153, 8676, 9535, 10041, 10077, 10274, 10319, 10362, 10765, 11199, 11210, 11382, 11386, 11405, 11611, 12039 |
| addBrowseCta | 9108 | 252 | view, render | 9074, 9081, 9088, 9096, 9411 |
| exportToDevice | 9128 | 5159 | WEB, hevcCapable, data, cachedIds, toast, fmtBytes, preload, getFromPeers, videoTitleById, showModal, closeModal | 9258, 9364, 9480, 10556, 11478, 12637, 12638 |
| p2pStripAt | 9237 | 40 | p2pStripData | 9241, 9243 |
| p2pStripData | 9237 | 40 | p2pStripAt | 9241, 9242, 9242, 9246, 9246, 9246 |
| renderP2pStrip | 9238 | 1834 | WEB, data, view, $, fmtBytes, playFromList, exportToDevice, p2pStripAt, p2pStripData, videoTitleById | 8976 |
| fmtAgo | 9269 | 263 | — | 9297, 9933, 11234 |
| renderSavedSearches | 9276 | 1587 | SearchLibrary, els, escapeHtml, fmtBytes, resetListHeaderExtras, fmtAgo | 8892 |
| renderP2pList | 9307 | 3593 | view, els, escapeHtml, fmtBytes, playFromList, resetListHeaderExtras, exportToDevice, videoTitleById, markPlayingCard, openCardMenu | 8891 |
| renderSaved | 9372 | 6530 | API, data, view, current, listFilter, cachedIds, $, els, persist, escapeHtml, toast, fmtBytes, isUploadId, thumbUrlFor, markCardCacheState, updateNowPlayingActions, playFromList, resetListHeaderExtras, addBrowseCta, exportToDevice, videoById, videoTitleById, markPlayingCard, showModal, closeModal | 8890 |
| renderDownloads | 9515 | 1216 | SaveQueue, view, listFilter, $, els, thumbUrlFor, resetListHeaderExtras, renderList, render, showModal, closeModal | 8893 |
| videoById | 9550 | 533 | data | 1795, 2016, 9458, 9566, 10018, 11401, 11427 |
| videoTitleById | 9565 | 85 | videoById | 9132, 9252, 9324, 9463, 10071 |
| renderSettings | 9570 | 31516 | WEB, APP_VERSION, saveDataToStorage, SearchLibrary, SaveSlots, API, data, view, current, cachedIds, $, els, persist, ProfileSecret, profileShareUrl, copyProfileLink, shareProfileLink, updateProfileStatus, createProfileFlow, protectProfileFlow, exportProfileCredentials, importProfileCredentials, loadProfileFlow, escapeHtml, syncMuteIcon, toast, applyAppearance, fmtBytes, preloadPlaylist, Player, updateNowPlayingActions, Notes, Level, EqRender, EQ, updateLoopRepeatButtons, resetListHeaderExtras, renderList, fmtAgo, videoById, videoTitleById, exportPlaylists, importPlaylists, openImportYouTubeModal, showModal, closeModal, doAutoBackup, importBackup, hardReloadUI | 8889 |
| renderCard | 10192 | 5357 | warmStreams, data, view, queue, queueIndex, queueSource, current, dragSource, selectMode, selectedIds, cachedIds, downloading, persist, escapeHtml, fmtTime, toast, playFromList, removeFromQueue, renderUpNext, openChannel, channelKeyOf, renderList, render, openCardMenu, openSongNoteModal, toggleSelectCard | 6354, 9104 |
| markPlayingCard | 10326 | 170 | current | 2401, 9105, 9369, 9509 |
| _lastViewKey | 10348 | 24 | — | 8177, 10351, 10351, 10367, 10367, 10368 |
| render | 10349 | 1194 | view, listFilter, $, els, SectionRail, renderSidebar, renderList, _lastViewKey, scrollListIntoViewPortrait, closeSidebar, renderSmartSidebar, exitSelectMode | 939, 1266, 1554, 8178, 8667, 8713, 8777, 9112, 9533, 10278, 10344, 10504, 10627, 10644, 10683, 10712, 10885, 11176, 11183, 11289, 11312, 11321, 11420, 11980, 11987, 12060, 12112, 12497, 12542, 12613, 12630, 12705 |
| exportPlaylists | 10377 | 402 | data, toast | 10097 |
| importPlaylists | 10388 | 876 | data, persist, toast, renderSidebar | 10099 |
| openImportYouTubeModal | 10414 | 4468 | data, $, persist, escapeHtml, toast, uid, renderSidebar, render, slim, showModal, closeModal | 10096 |
| openCardMenu | 10540 | 4233 | API, data, view, current, cachedIds, playlistOps, runExclusive, persist, toast, preload, markCardCacheState, deleteCustomVideo, openVideoEditor, updateNowPlayingActions, addToQueue, exportToDevice, render, slim, newPlaylist, showModal, closeModal | 3311, 5875, 9364, 10257, 11480 |
| slim | 10651 | 487 | — | 1226, 1835, 2004, 4942, 8130, 10471, 10616, 10677, 11434, 12054, 12482, 12630 |
| newPlaylist | 10667 | 756 | data, view, persist, toast, uid, preload, render, slim, showModal, closeModal | 10635, 11148, 11325 |
| renamePlaylist | 10691 | 1109 | $, persist, render, showModal, closeModal | 9011, 9012, 9013 |
| openSongNoteModal | 10719 | 1703 | queueSource, current, persist, toast, updateServiceMode, renderList, showModal, closeModal | 10243 |
| updatePlaylistOfflineButton | 10787 | 1338 | downloading, playlistOfflineStats, setListIcon | 1733, 1888, 1917, 2040, 9020, 10834, 10842, 10871 |
| makePlaylistOffline | 10814 | 1075 | view, cachedIds, $, toast, preload, playlistOfflineStats, renderSidebar, updatePlaylistOfflineButton | 9018 |
| togglePinPlaylist | 10847 | 1045 | data, $, persist, toast, preload, renderSidebar, updatePlaylistOfflineButton | 9023 |
| deletePlaylist | 10875 | 507 | data, view, persist, render, showModal, closeModal | 9028 |
| toggleShortcutHelp | 10894 | 108 | $ | 11604 |
| wireShortcutHelp | 10899 | 272 | $ | 12567 |
| showModal | 10909 | 515 | $ | 833, 998, 1143, 1244, 1364, 1394, 1497, 1570, 2207, 3289, 3312, 3342, 3782, 3877, 4036, 4077, 4125, 4224, 5082, 5297, 5350, 5365, 6557, 6951, 6986, 7443, 9152, 9423, 9481, 9531, 9531, 10032, 10164, 10483, 10522, 10648, 10671, 10706, 10776, 10876, 11409, 11444, 11492, 11800, 12049, 12096, 12256, 12630, 12633 |
| closeModal | 10925 | 61 | $ | 832, 835, 998, 1121, 1245, 1246, 1365, 1366, 1395, 1422, 1473, 1477, 1488, 1494, 1571, 1576, 2208, 2232, 3282, 3289, 3307, 3312, 3338, 3342, 3783, 3784, 3878, 3887, 4030, 4037, 4067, 4078, 4121, 4125, 5083, 5297, 5351, 5352, 5366, 5367, 6549, 6951, 6986, 7443, 9152, 9155, 9424, 9429, 9440, 9484, 9489, 9498, 9532, 9532, 10033, 10038, 10168, 10171, 10484, 10489, 10523, 10548, 10556, 10566, 10570, 10589, 10626, 10635, 10638, 10644, 10672, 10681, 10707, 10712, 10764, 10777, 10877, 10883, 10933, 11410, 11420, 11435, 11442, 11444, 11493, 11494, 11616, 11791, 11795, 11801, 11802, 12050, 12058, 12097, 12111, 12257, 12259, 12630, 12633, 12633 |
| _portraitPwaMQ | 10944 | 172 | — | 10949, 11051 |
| isPortraitPWA | 10948 | 61 | _portraitPwaMQ | 10961, 11015, 11055 |
| isStackedPlayerLayout | 10954 | 412 | isPortraitPWA | 10339, 11026, 11039, 11637 |
| playerScrollBehavior | 10964 | 160 | data | 11029, 11046 |
| setupClassicLayout | 10968 | 2013 | current, $, showMiniBar, hideMiniBar | 12569 |
| applyPortraitPwaClass | 11012 | 223 | isPortraitPWA | 11050, 11052 |
| scrollPlayerIntoViewPortrait | 11024 | 241 | restoreNowPlayingList, isStackedPlayerLayout, playerScrollBehavior | 2421, 11637 |
| scrollListIntoViewPortrait | 11038 | 556 | isStackedPlayerLayout, playerScrollBehavior | 10367, 11181, 11188 |
| setupPortraitPwaWatcher | 11049 | 313 | _portraitPwaMQ, isPortraitPWA, applyPortraitPwaClass, closeSidebar | 12568 |
| setupViewportAnchorGuard | 11076 | 1614 | els | 12570 |
| openSidebar | 11113 | 211 | $ | 11134 |
| closeSidebar | 11120 | 216 | $ | 5358, 5358, 7876, 7876, 10358, 10358, 11055, 11133, 11137, 11609 |
| setupSidebarDrawer | 11127 | 399 | $, openSidebar, closeSidebar | 11141 |
| wireUI | 11140 | 24799 | perfMark, perfMeasure, RecentSearches, SearchLibrary, API, warmStreams, data, view, searchResults, searchAttempted, searchSeq, current, listFilter, selectMode, selectedIds, relatedCollapsed, cachedIds, downloading, removing, runExclusive, $, els, persist, copyProfileLink, shareProfileLink, escapeHtml, lastVolume, syncMuteIcon, toast, warmSearchThumbs, preload, markCardCacheState, openVideoEditor, Player, chooseQuality, reportBroken, openMoreControls, openAddChoice, openMoreActions, updateNowPlayingActions, Notes, Transition, Wave, collectSearchMetadata, Share, PiP, EQ, SectionRail, External, setHomeOverPlayer, hideMiniBar, toggleShuffle, addToQueue, removeFromQueue, restoreNowPlayingList, playNext, toggleLoopOne, toggleRepeat, cyclePlayMode, playPrev, isServiceModeOpen, cycleServiceView, stepServiceFont, enterServiceMode, exitServiceMode, openChannel, channelKeyOf, updateHomeGridScrollState, currentList, showSearchSkeletons, renderList, exportToDevice, fmtAgo, videoById, render, openCardMenu, slim, newPlaylist, toggleShortcutHelp, showModal, closeModal, isStackedPlayerLayout, scrollPlayerIntoViewPortrait, scrollListIntoViewPortrait, closeSidebar, setupSidebarDrawer, cancelSleepTimer, openSleepTimer, setAbA, setAbB, clearAb, toggleRememberPos, exitSelectMode, newPlaylistWithVideos, updateFromIcon | 12566 |
| sleepAtTrackEnd | 11664 | 28 | — | 5477, 7965, 8239, 11686, 11708, 11745, 11747, 11799 |
| sleepFading | 11665 | 24 | — | 11676, 11676, 11679, 11709, 11709, 11752 |
| sleepFadeSec | 11667 | 138 | data | 11674, 11761, 11796, 11796 |
| applySleepFade | 11673 | 346 | data, Player, sleepFading, sleepFadeSec | 7965, 11698 |
| startSleepTimer | 11683 | 487 | sleepTimerRemaining, sleepTimerTick, sleepAtTrackEnd, applySleepFade, cancelSleepTimer, finishSleep, updateSleepTimerUI | 4950, 11790, 11794 |
| cancelSleepTimer | 11704 | 253 | sleepTimerRemaining, sleepTimerTick, Player, sleepAtTrackEnd, sleepFading, updateSleepTimerUI | 4950, 11359, 11684, 11715, 11801 |
| finishSleep | 11714 | 674 | data, toast, Player, cancelSleepTimer, showSleepCurtain | 8239, 11696 |
| showSleepCurtain | 11734 | 390 | $, isServiceModeOpen, releaseWakeLock, exitServiceMode | 11724, 11726 |
| updateSleepTimerUI | 11744 | 579 | sleepTimerRemaining, $, sleepAtTrackEnd, sleepFading | 11687, 11692, 11699, 11710 |
| openSleepTimer | 11758 | 2657 | data, sleepTimerRemaining, persist, toast, showModal, closeModal, sleepAtTrackEnd, sleepFadeSec, startSleepTimer, cancelSleepTimer | 11357 |
| setAbA | 11809 | 152 | current, abA, fmtTime, toast, Player, saveAbMarkers, updateAbUI | 11367, 11596, 12659 |
| setAbB | 11816 | 152 | current, abB, fmtTime, toast, Player, saveAbMarkers, updateAbUI | 11368, 11597, 12659 |
| clearAb | 11823 | 263 | data, current, abA, abB, persist, toast, currentPlaylistEntry, updateAbUI | 11369, 12654, 12659 |
| saveAbMarkers | 11834 | 550 | data, current, abA, abB, persist, currentPlaylistEntry | 11812, 11819, 12654 |
| restoreAbMarkers | 11848 | 426 | data, current, abA, abB, currentPlaylistEntry, updateAbUI | 2423 |
| currentPlaylistEntry | 11860 | 383 | data, queueSource, current | 8405, 11827, 11842, 11852, 11875, 11882 |
| rememberPosEnabled | 11873 | 196 | data, current, currentPlaylistEntry | 2437, 3060, 3069, 11881, 11894 |
| toggleRememberPos | 11878 | 467 | data, current, persist, toast, currentPlaylistEntry, rememberPosEnabled, updateRememberPosUI | 11370 |
| updateRememberPosUI | 11892 | 134 | $, rememberPosEnabled | 2424, 11889 |
| updateAbUI | 11897 | 931 | abA, abB, $, fmtTime | 11813, 11820, 11831, 11849, 11856, 12654 |
| relatedState | 11915 | 51 | — | 11920, 11928, 11932, 11934, 11935 |
| fetchRelatedVideos | 11916 | 265 | API, current, relatedVideos, relatedState, renderRelated | 11924 |
| loadRelated | 11923 | 115 | current, fetchRelatedVideos | 2425, 11938 |
| renderRelated | 11926 | 2002 | queue, queueIndex, playFullMode, relatedVideos, relatedCollapsed, $, escapeHtml, Player, renderUpNext, openChannel, channelKeyOf, relatedState, loadRelated | 11920 |
| SMART_PLAYLISTS | 11965 | 233 | — | 8947, 11975 |
| renderSmartSidebar | 11971 | 928 | WEB, data, view, $, render, SMART_PLAYLISTS | 938, 1553, 10361, 12612 |
| getSmartList | 11991 | 926 | data | 8807 |
| exitSelectMode | 12023 | 230 | selectMode, selectedIds, $ | 2426, 10359, 11386, 11405, 11420, 11435, 11442, 11611 |
| toggleSelectMode | 12031 | 328 | selectMode, selectedIds, $, renderList | 9038 |
| toggleSelectCard | 12041 | 309 | selectedIds, $ | 10252 |
| newPlaylistWithVideos | 12046 | 721 | data, view, persist, toast, uid, preload, render, slim, showModal, closeModal | 11442 |
| doAutoBackup | 12070 | 479 | data, persist, toast | 10104, 12086 |
| checkAutoBackup | 12083 | 232 | data, doAutoBackup | 12704 |
| importBackup | 12088 | 1722 | data, persist, toast, render, showModal, closeModal | 10106 |
| RUNNING_BUILD | 12135 | 159 | — | 12159, 12239, 12350, 12350, 12350, 12353 |
| _knownBuildTag | 12141 | 26 | — | 12159, 12160, 12178, 12239 |
| fetchServerBuild | 12143 | 196 | — | 12157, 12238, 12347 |
| maybeShowUpdateBanner | 12154 | 774 | RUNNING_BUILD, _knownBuildTag, fetchServerBuild, prefetchUpdate, _updateBannerShown, _updating, showUpdateBanner | 12190, 12386, 12393, 12399 |
| _prefetchedFor | 12175 | 26 | — | 12179, 12180 |
| prefetchUpdate | 12176 | 398 | _knownBuildTag, _prefetchedFor, _swReg | 12167 |
| checkBuildTag | 12189 | 62 | maybeShowUpdateBanner | 12194, 12712, 12713 |
| pollBuildTag | 12193 | 117 | checkBuildTag | 12711 |
| hardReloadUI | 12204 | 865 | — | 10160 |
| _updateBannerShown | 12224 | 31 | — | 12155, 12248, 12249, 12334, 12345, 12352, 12361 |
| _updating | 12225 | 22 | — | 12155, 12235, 12288, 12289, 12328 |
| _updateToast | 12226 | 24 | — | 12308, 12308, 12309, 12330, 12330, 12330, 12357 |
| setUpdateIcon | 12230 | 106 | $ | 12236, 12240, 12251, 12257, 12332 |
| updateFromIcon | 12234 | 384 | toast, RUNNING_BUILD, _knownBuildTag, fetchServerBuild, _updating, setUpdateIcon, applyUpdate | 11629 |
| showUpdateBanner | 12246 | 821 | showModal, closeModal, _updateBannerShown, setUpdateIcon, applyUpdate | 12168 |
| _swReg | 12267 | 18 | — | 12183, 12295, 12372 |
| UPDATE_STATE_KEY | 12273 | 44 | — | 12278, 12282, 12283 |
| UPDATE_MAX_ATTEMPTS | 12274 | 30 | — | 12356 |
| SHELL_CACHE_RE | 12275 | 54 | — | 12316 |
| readUpdateState | 12277 | 134 | UPDATE_STATE_KEY | 12290, 12342 |
| writeUpdateState | 12280 | 251 | UPDATE_STATE_KEY | 12291, 12329, 12351, 12362 |
| applyUpdate | 12287 | 2240 | toast, _updateBannerShown, _updating, _updateToast, setUpdateIcon, _swReg, SHELL_CACHE_RE, readUpdateState, writeUpdateState | 12243, 12260, 12358 |
| checkUpdateOutcome | 12341 | 1002 | toast, RUNNING_BUILD, fetchServerBuild, _updateBannerShown, _updateToast, UPDATE_MAX_ATTEMPTS, readUpdateState, writeUpdateState, applyUpdate | 12709 |
| registerServiceWorker | 12366 | 1896 | WEB, maybeShowUpdateBanner, _swReg | 12710 |
| youtubeFromText | 12419 | 341 | — | 12515 |
| SHARE_INBOX | 12427 | 38 | — | 12464 |
| SHARED_PLAYLIST | 12428 | 41 | — | 12433, 12485 |
| sharedUploadsPlaylist | 12430 | 231 | data, uid, SHARED_PLAYLIST | 12481, 12495 |
| uploadSharedFile | 12440 | 852 | — | 12473 |
| _sharing | 12459 | 21 | — | 12461, 12462, 12499 |
| processSharedFiles | 12460 | 1649 | view, persist, toast, render, slim, SHARE_INBOX, SHARED_PLAYLIST, sharedUploadsPlaylist, uploadSharedFile, _sharing | 12525, 12526 |
| bootShareFromUrl | 12502 | 1091 | data, els, toast, playVideoAt, youtubeFromText, processSharedFiles | 12627 |
| URL_VIEWS | 12530 | 121 | — | 12540 |
| bootViewFromUrl | 12531 | 391 | view, render, URL_VIEWS | 12625 |
| bootSearchFromUrl | 12545 | 414 | els | 12626 |
| boot | 12563 | 11475 | WEB, APP_VERSION, perfMark, perfMeasure, webFetch, SaveQueue, API, DEFAULT_SETTINGS, data, view, current, abA, abB, cachedIds, downloading, $, els, persist, ProfileSecret, profileHeaders, syncOnLaunch, updateProfileStatus, adoptSharedPlaylistFromUrl, startPlaylistInboxWatch, adoptProfileFromUrl, syncMuteIcon, toast, uid, applyAppearance, refreshCachedIds, startCacheResyncWatch, warmOfflineThumbs, preload, preloadPlaylist, preloadPinnedPlaylists, Player, wirePlayerEvents, updatePlayBtn, Notes, Remote, Transition, CatalogSync, Recommendations, Presenter, Share, EqRender, PiP, EQ, SectionRail, Party, updateBottomChrome, updateQueueBadge, playNext, updateLoopRepeatButtons, playPrev, isServiceModeOpen, renderSidebar, exportToDevice, render, slim, wireShortcutHelp, showModal, closeModal, setupClassicLayout, setupPortraitPwaWatcher, setupViewportAnchorGuard, wireUI, setAbA, setAbB, clearAb, saveAbMarkers, updateAbUI, renderSmartSidebar, checkAutoBackup, checkBuildTag, pollBuildTag, checkUpdateOutcome, registerServiceWorker, bootShareFromUrl, bootViewFromUrl, bootSearchFromUrl | 12734 |
Final cuts and review
Exactly six seams shipped: 3c9a24a (eager shell/shared renderers), 5fb9564
(Presenter), 8e7fa19 (Remote), 94ea211 (Watch party), 0475a18 (Share/External),
b335f95 (Stats view). 2c50035 handles lazy-entry failures without rejected UI
navigation promises. Final app.js: 408,473 bytes; net removal 178,556 bytes
(30.4169%), including 2,976 bytes of facade/call-site overhead.
Original bytes moved, independently counted from UTF-8 AST source slices: 98,378 eager renderer/shell/rail; 9,492 Presenter; 30,421 Remote; 22,833 Party; 13,334 Share/External; 7,074 Stats view. Published files include headers/registry wrappers. Shared functions retain classic global lexical access; new UI definitions evaluate safely before data/$/els/Player initialization.
Self-review against master §6/6b: all new files belong to explicit manifest groups and legacy SHELL; source JSON matches assets.json; core scripts load first; required eager features stay parsed. Player, Transition, Wave, EQ/level rendering, queue, persistence, tracking and sleep bodies have exact source fingerprint tests. Transport internals move intact; entry button bindings move to core facades to avoid duplicate listeners. Inbound APIs remain short; synchronous boolean/hooks never become promises. Boot URL/session triggers remain; no banner/cache-header rule is changed. Executing groups remain pinned; no disposal/handoff or live replacement is introduced. Contract/N-1 safeguards remain tested by existing unit/integration checks.
Deliberately left: Notes/editor, service mode, playlist mutations, persistence, player/queue/boot, audio watchdogs/EQ/sleep, Gestures, video editor/export glue and other candidates beyond six seams. Settings paint moves to views-core but remains eager. Now-playing metadata mutations inside Player stay there to honor the untouched-playback constraint; their DOM, action paint and mini bar are eager.