From c9ed985dd6b04678954f39a01918130abc6f61c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Istv=C3=A1n=20So=C3=B3s?= Date: Wed, 12 Feb 2025 14:17:22 +0100 Subject: [PATCH 1/2] Cleanup after enabling experiments. (#8560) --- app/lib/frontend/handlers/experimental.dart | 10 -------- .../templates/views/pkg/score_tab.dart | 4 +--- .../templates/views/shared/search_banner.dart | 4 +--- .../templates/views/shared/site_header.dart | 23 ++++++------------- app/test/search/backend_test.dart | 2 +- .../test/search_completition_test.dart | 4 ---- .../test/theme_switch_test.dart | 2 -- 7 files changed, 10 insertions(+), 39 deletions(-) diff --git a/app/lib/frontend/handlers/experimental.dart b/app/lib/frontend/handlers/experimental.dart index f42da4d181..e85424c1de 100644 --- a/app/lib/frontend/handlers/experimental.dart +++ b/app/lib/frontend/handlers/experimental.dart @@ -9,13 +9,7 @@ import '../../shared/cookie_utils.dart'; typedef PublicFlag = ({String name, String description}); const _publicFlags = { - (name: 'dark', description: 'Dark mode'), - (name: 'search-completion', description: 'Completions for the search bar'), (name: 'search-topics', description: 'Show matching topics when searching'), - ( - name: 'download-counts-version-chart', - description: 'Show downloads counts version chart' - ), }; final _allFlags = { @@ -92,14 +86,10 @@ class ExperimentalFlags { return params; } - bool get isSearchCompletionEnabled => true; bool get isSearchTopicsEnabled => isEnabled('search-topics'); - bool get isDarkModeEnabled => true; bool get isDarkModeDefault => isEnabled('dark-as-default'); - bool get showDownloadCountsVersionChart => true; - String encodedAsCookie() => _enabled.join(':'); @override diff --git a/app/lib/frontend/templates/views/pkg/score_tab.dart b/app/lib/frontend/templates/views/pkg/score_tab.dart index 9a61026d20..be621b7915 100644 --- a/app/lib/frontend/templates/views/pkg/score_tab.dart +++ b/app/lib/frontend/templates/views/pkg/score_tab.dart @@ -14,7 +14,6 @@ import 'package:pub_dev/shared/utils.dart'; import '../../../../scorecard/models.dart' hide ReportStatus; import '../../../../shared/urls.dart' as urls; import '../../../dom/dom.dart' as d; -import '../../../request_context.dart'; import '../../../static_files.dart'; /// Renders the score page content. @@ -95,8 +94,7 @@ d.Node scoreTabNode({ d.text(' for details.'), ], ), - if (card.weeklyVersionDownloads != null && - requestContext.experimentalFlags.showDownloadCountsVersionChart) + if (card.weeklyVersionDownloads != null) _downloadsChart(card.weeklyVersionDownloads!), ]); } diff --git a/app/lib/frontend/templates/views/shared/search_banner.dart b/app/lib/frontend/templates/views/shared/search_banner.dart index ef455c5de8..be6862ca4b 100644 --- a/app/lib/frontend/templates/views/shared/search_banner.dart +++ b/app/lib/frontend/templates/views/shared/search_banner.dart @@ -5,7 +5,6 @@ import 'dart:convert'; import 'package:_pub_shared/data/completion.dart'; -import 'package:pub_dev/frontend/request_context.dart'; import '../../../dom/dom.dart' as d; import '../../../static_files.dart' show staticUrls; @@ -36,8 +35,7 @@ d.Node searchBannerNode({ value: queryText, attributes: { 'title': 'Search', - if (requestContext.experimentalFlags.isSearchCompletionEnabled) - 'data-widget': 'completion', + 'data-widget': 'completion', 'data-completion-src': '/api/search-input-completion-data', 'data-completion-class': 'search-completion', }, diff --git a/app/lib/frontend/templates/views/shared/site_header.dart b/app/lib/frontend/templates/views/shared/site_header.dart index c5b8ffa8bf..cbb421ebaf 100644 --- a/app/lib/frontend/templates/views/shared/site_header.dart +++ b/app/lib/frontend/templates/views/shared/site_header.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:pub_dev/frontend/request_context.dart'; - import '../../../../account/models.dart' show SessionData; import '../../../../shared/urls.dart' as urls; import '../../../dom/dom.dart' as d; @@ -116,24 +114,17 @@ d.Node siteHeaderNode({ _userBlock(userSession), ], ), - _themeSwitcher(), + // TODO: consider using Material symbols similar to dartdoc: + // dark_mode + // light_mode + d.button( + classes: ['-pub-theme-toggle'], + ariaLabel: 'light/dark theme toggle', + ), ], ); } -d.Node _themeSwitcher() { - // dark_mode - // light_mode - if (requestContext.experimentalFlags.isDarkModeEnabled) { - return d.fragment([ - d.button( - classes: ['-pub-theme-toggle'], ariaLabel: 'light/dark theme toggle'), - ]); - } else { - return d.fragment([]); - } -} - d.Node _userBlock(SessionData userSession) { return d.div( classes: ['nav-container', 'nav-profile-container', 'hoverable'], diff --git a/app/test/search/backend_test.dart b/app/test/search/backend_test.dart index b70133181e..4e02d43c9c 100644 --- a/app/test/search/backend_test.dart +++ b/app/test/search/backend_test.dart @@ -17,7 +17,7 @@ void main() { final descr = await searchBackend.fetchSdkLibraryDescriptions( baseUri: index.baseUri, libraryRelativeUrls: { - 'dart:async': 'dart-async/dart-async-library.html', + 'dart:async': 'dart-async/index.html', }, ); expect(descr, { diff --git a/pkg/pub_integration/test/search_completition_test.dart b/pkg/pub_integration/test/search_completition_test.dart index 12d8ffd716..2dcab4025e 100644 --- a/pkg/pub_integration/test/search_completition_test.dart +++ b/pkg/pub_integration/test/search_completition_test.dart @@ -44,8 +44,6 @@ void main() { final user = await fakeTestScenario.createAnonymousTestUser(); await user.withBrowserPage((page) async { - await page.gotoOrigin('/experimental?search-completion=1'); - await page.gotoOrigin('/'); await page.keyboard.type('is:un'); await Future.delayed(Duration(milliseconds: 200)); @@ -59,8 +57,6 @@ void main() { }); await user.withBrowserPage((page) async { - await page.gotoOrigin('/experimental?search-completion=1'); - await page.gotoOrigin('/packages?q=abc'); await page.focus('input[name="q"]'); // go to the end of the input field and start typing diff --git a/pkg/pub_integration/test/theme_switch_test.dart b/pkg/pub_integration/test/theme_switch_test.dart index b89f49159f..b953d1a089 100644 --- a/pkg/pub_integration/test/theme_switch_test.dart +++ b/pkg/pub_integration/test/theme_switch_test.dart @@ -41,8 +41,6 @@ void main() { // test keyboard navigation await user.withBrowserPage((page) async { - await page.gotoOrigin('/experimental?dark=1'); - Future expectDarkTheme() async { expect(await page.$OrNull('body.light-theme'), isNull); expect(await page.$OrNull('body.dark-theme'), isNotNull); From 178893bd1e28061ed4f4fa970978b774332e305c Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Tue, 11 Feb 2025 16:48:11 +0100 Subject: [PATCH 2/2] Fix inconsistency between package list and package page copy icon opacities. --- app/lib/frontend/templates/views/pkg/package_list.dart | 3 ++- .../frontend/templates/views/shared/detail/header.dart | 5 ++++- app/test/frontend/golden/my_activity_log_page.html | 2 +- app/test/frontend/golden/my_liked_packages.html | 2 +- app/test/frontend/golden/my_packages.html | 6 +++--- app/test/frontend/golden/my_publishers.html | 2 +- app/test/frontend/golden/pkg_activity_log_page.html | 2 +- app/test/frontend/golden/pkg_admin_page.html | 2 +- app/test/frontend/golden/pkg_changelog_page.html | 2 +- app/test/frontend/golden/pkg_example_page.html | 2 +- app/test/frontend/golden/pkg_index_page.html | 6 +++--- app/test/frontend/golden/pkg_install_page.html | 2 +- app/test/frontend/golden/pkg_score_page.html | 2 +- .../golden/pkg_score_page_with_downloads_chart.html | 2 +- app/test/frontend/golden/pkg_show_page.html | 2 +- app/test/frontend/golden/pkg_show_page_discontinued.html | 2 +- .../frontend/golden/pkg_show_page_flutter_plugin.html | 2 +- app/test/frontend/golden/pkg_show_page_publisher.html | 2 +- app/test/frontend/golden/pkg_show_page_retracted.html | 2 +- .../pkg_show_page_retracted_non_retracted_version.html | 2 +- app/test/frontend/golden/pkg_show_version_page.html | 2 +- app/test/frontend/golden/pkg_versions_page.html | 2 +- app/test/frontend/golden/publisher_activity_log_page.html | 2 +- app/test/frontend/golden/publisher_admin_page.html | 2 +- app/test/frontend/golden/publisher_packages_page.html | 6 +++--- .../frontend/golden/publisher_unlisted_packages_page.html | 6 +++--- app/test/frontend/golden/search_page.html | 4 ++-- app/test/task/testdata/goldens/packages/oxygen.html | 2 +- .../task/testdata/goldens/packages/oxygen/changelog.html | 2 +- .../task/testdata/goldens/packages/oxygen/example.html | 2 +- .../task/testdata/goldens/packages/oxygen/install.html | 2 +- .../task/testdata/goldens/packages/oxygen/license.html | 2 +- app/test/task/testdata/goldens/packages/oxygen/score.html | 2 +- .../task/testdata/goldens/packages/oxygen/versions.html | 2 +- .../testdata/goldens/packages/oxygen/versions/1.0.0.html | 2 +- .../goldens/packages/oxygen/versions/1.0.0/changelog.html | 2 +- .../goldens/packages/oxygen/versions/1.0.0/example.html | 2 +- .../goldens/packages/oxygen/versions/1.0.0/install.html | 2 +- .../goldens/packages/oxygen/versions/1.0.0/license.html | 2 +- .../goldens/packages/oxygen/versions/1.0.0/score.html | 2 +- .../testdata/goldens/packages/oxygen/versions/2.0.0.html | 2 +- pkg/web_css/lib/src/_base.scss | 1 + pkg/web_css/lib/src/_list.scss | 8 -------- pkg/web_css/lib/src/_pkg.scss | 4 ---- 44 files changed, 55 insertions(+), 62 deletions(-) diff --git a/app/lib/frontend/templates/views/pkg/package_list.dart b/app/lib/frontend/templates/views/pkg/package_list.dart index 31aca6d73a..5063932a54 100644 --- a/app/lib/frontend/templates/views/pkg/package_list.dart +++ b/app/lib/frontend/templates/views/pkg/package_list.dart @@ -225,7 +225,8 @@ d.Node _item({ classes: ['packages-header'], children: [ d.h3(classes: [ - 'packages-title' + 'packages-title', + 'pub-monochrome-icon-hoverable', ], children: [ d.a(href: url, text: name), if (copyIcon != null) copyIcon, diff --git a/app/lib/frontend/templates/views/shared/detail/header.dart b/app/lib/frontend/templates/views/shared/detail/header.dart index 318fa4663a..631e34ebd6 100644 --- a/app/lib/frontend/templates/views/shared/detail/header.dart +++ b/app/lib/frontend/templates/views/shared/detail/header.dart @@ -111,7 +111,10 @@ d.Node detailHeaderNode({ d.div( classes: ['detail-header-content-block'], children: [ - d.h1(classes: ['title'], child: titleNode), + d.h1( + classes: ['title', 'pub-monochrome-icon-hoverable'], + child: titleNode, + ), d.div(classes: ['metadata'], child: metadataNode), if (tagsNode != null || likeCount != null) d.div( diff --git a/app/test/frontend/golden/my_activity_log_page.html b/app/test/frontend/golden/my_activity_log_page.html index c9b03646de..60dd3598c9 100644 --- a/app/test/frontend/golden/my_activity_log_page.html +++ b/app/test/frontend/golden/my_activity_log_page.html @@ -142,7 +142,7 @@

user profile picture
-

admin

+

admin

-

user

+

user

-

user

+

user