diff --git a/.github/ISSUE_TEMPLATE/7_cherry_pick.yml b/.github/ISSUE_TEMPLATE/7_cherry_pick.yml index 3064c8acf0b..6d8814a1a08 100644 --- a/.github/ISSUE_TEMPLATE/7_cherry_pick.yml +++ b/.github/ISSUE_TEMPLATE/7_cherry_pick.yml @@ -38,7 +38,7 @@ body: label: Changelog Description description: >- Explain this CP in less than 80 characters that is accessible to most Flutter developers - See https://github.com/flutter/flutter/wiki/Hotfix-Documentation-Best-Practices for examples + See https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md for examples validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/8_design_doc.yml b/.github/ISSUE_TEMPLATE/8_design_doc.yml index 76e435697d7..c9455bf068c 100644 --- a/.github/ISSUE_TEMPLATE/8_design_doc.yml +++ b/.github/ISSUE_TEMPLATE/8_design_doc.yml @@ -8,7 +8,7 @@ body: Thank you for your interest in contributing to Flutter! Please ensure that you are following - https://github.com/flutter/flutter/wiki/Design-Documents + https://github.com/flutter/flutter/blob/main/docs/contributing/Design-Documents.md when sharing a design document. Please fill out the sections below to the best of your ability. diff --git a/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md b/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md index a442620b0c2..70b550d67d2 100644 --- a/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md +++ b/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md @@ -1,4 +1,4 @@ -This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/wiki/Flutter-Cherrypick-Process#automatically-creates-a-cherry-pick-request) +This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request) Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request. ### Issue Link: @@ -7,7 +7,7 @@ What is the link to the issue this cherry-pick is addressing? < Replace with issue link here > ### Changelog Description: -Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/wiki/Hotfix-Documentation-Best-Practices) for examples +Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples < Replace with changelog description here > diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f33ad35e44e..c1c38641055 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -19,13 +19,13 @@ If you need help, consider asking for advice on the #hackers-new channel on [Discord]. -[Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview -[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene -[test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests -[Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo -[Features we expect every widget to implement]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement +[Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview +[Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md +[test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests +[Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md +[Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests -[breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes -[Discord]: https://github.com/flutter/flutter/wiki/Chat -[Data Driven Fixes]: https://github.com/flutter/flutter/wiki/Data-driven-Fixes +[breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes +[Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md +[Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md diff --git a/.github/workflows/easy-cp.yml b/.github/workflows/easy-cp.yml index 2828d2ed2f9..1b32d42b27c 100644 --- a/.github/workflows/easy-cp.yml +++ b/.github/workflows/easy-cp.yml @@ -81,7 +81,7 @@ jobs: if: ${{ failure() && steps.attempt-cp.conclusion == 'failure' }} run: | FAILURE_MSG="Failed to create CP due to merge conflicts.
" - FAILURE_MSG+="You will need to create the PR manually. See [the cherrypick wiki](https://github.com/flutter/flutter/wiki/Flutter-Cherrypick-Process) for more info." + FAILURE_MSG+="You will need to create the PR manually. See [the cherrypick wiki](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md) for more info." gh pr comment ${{ github.event.pull_request.number }} -R flutter/flutter -b "${FAILURE_MSG}" env: GITHUB_TOKEN: ${{ secrets.FLUTTERACTIONSBOT_CP_TOKEN }} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 86f1ec710e1..090da8c8986 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -38,8 +38,7 @@ concerns. Be wary of agreement by compromise, where two good competing solutions are merged into one mediocre solution. A conflict is addressed when the participants agree that the final solution is _better_ than all the conflicting proposals. Sometimes the solution is -more work than either of the proposals. [Embrace the yak -shave](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#lazy-programming). +more work than either of the proposals. [Embrace the yak shave](./docs/contributing/Style-guide-for-Flutter-repo.md#lazy-programming). ## Questions diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0bc51988e85..bc151543d2d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,7 +3,7 @@ Contributing to Flutter ======================= -_tl;dr: join [Discord](https://github.com/flutter/flutter/wiki/Chat), be [courteous](CODE_OF_CONDUCT.md), follow the steps below to set up a development environment; if you stick around and contribute, you can [join the team](https://github.com/flutter/flutter/wiki/Contributor-access) and get commit access._ +_tl;dr: join [Discord](./docs/contributing/Chat.md), be [courteous](CODE_OF_CONDUCT.md), follow the steps below to set up a development environment; if you stick around and contribute, you can [join the team](./docs/contributing/Contributor-access.md) and get commit access._ Welcome ------- @@ -17,10 +17,10 @@ doing outreach about Flutter, or helping out in any other way. We grant commit access (which includes full rights to the issue database, such as being able to edit labels) to people who have gained our trust and demonstrated a commitment to Flutter. For more details -see the [Contributor access](https://github.com/flutter/flutter/wiki/Contributor-access) -page on our wiki. +see the [Contributor access](./docs/contributing/Contributor-access.md) +page in our docs. -We communicate primarily over GitHub and [Discord](https://github.com/flutter/flutter/wiki/Chat). +We communicate primarily over GitHub and [Discord](./docs/contributing/Chat.md). Before you get started, we encourage you to read these documents which describe some of our community norms: @@ -29,7 +29,7 @@ Before you get started, we encourage you to read these documents which describe also documents our conflict resolution policy and encourages people to ask questions. -2. [Values](https://github.com/flutter/flutter/wiki/Values), +2. [Values](./docs/about/Values.md), which talks about what we care most about. Helping out in the issue database @@ -41,27 +41,27 @@ useful for our engineers. If you want to help us triage, you are very welcome to do so! -1. Join the #hackers-triage [Discord channel](https://github.com/flutter/flutter/wiki/Chat). +1. Join the #hackers-triage [Discord channel](./docs/contributing/Chat.md). 2. Read [our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly that everyone must be gracious, respectful, and professional. If you're helping out with triage, you are representing the Flutter team, and so you want to make sure to make a good impression! -3. Help out as described in our wiki: https://github.com/flutter/flutter/wiki/Triage +3. Help out as described in our [triage guide](./docs/triage/README.md) You won't be able to add labels at first, so instead start by trying to do the other steps, e.g. trying to reproduce the problem and asking for people to provide enough details that you can reproduce the problem, pointing out duplicates, and so on. Chat on the #hackers-triage channel to let us know what you're up to! 4. Familiarize yourself with our - [issue hygiene](https://github.com/flutter/flutter/wiki/Issue-hygiene) wiki page, + [issue hygiene](./docs/contributing/issue_hygiene/README.md) wiki page, which covers the meanings of some important GitHub labels and milestones. 5. Once you've been doing this for a while, someone will invite you to the flutter-hackers team on GitHub and you'll be able to add labels too. See the - [contributor access](https://github.com/flutter/flutter/wiki/Contributor-access) wiki + [contributor access](./docs/contributing/Contributor-access.md) wiki page for details. @@ -75,9 +75,9 @@ that increase our test coverage, writing tests for issues others have filed, all are really valuable contributions to open source projects. If this interests you, you can jump in and submit bug reports without needing anyone's permission! -The #quality-assurance channel on our [Discord server](https://github.com/flutter/flutter/wiki/Chat) +The #quality-assurance channel on our [Discord server](./docs/contributing/Chat.md) is a good place to talk about what you're doing. We're especially eager for QA testing when -we announce a beta release. See https://github.com/flutter/flutter/wiki/Quality-Assurance for +we announce a beta release. See [quality assurance](./docs/releases/Quality-Assurance.md) for more details. If you want to contribute test cases, you can also submit PRs. See the next section @@ -101,35 +101,35 @@ that describe these methodologies. The following list is ordered: you are strongly recommended to go through these documents in the order presented. -1. [Setting up your engine development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment), +1. [Setting up your engine development environment](./docs/engine/contributing/Setting-up-the-Engine-development-environment.md), which describes the steps you need to configure your computer to work on Flutter's engine. If you only want to write code for the Flutter framework, you can skip this step. Flutter's engine mainly uses C++, Java, and Objective-C. -2. [Setting up your framework development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Framework-development-environment), +2. [Setting up your framework development environment](./docs/contributing/Setting-up-the-Framework-development-environment.md), which describes the steps you need to configure your computer to work on Flutter's framework. Flutter's framework mainly uses Dart. -3. [Tree hygiene](https://github.com/flutter/flutter/wiki/Tree-hygiene), +3. [Tree hygiene](./docs/contributing/Tree-hygiene.md), which covers how to land a PR, how to do code review, how to handle breaking changes, how to handle regressions, and how to handle post-commit test failures. -4. [Our style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo), +4. [Our style guide](./docs/contributing/Style-guide-for-Flutter-repo.md), which includes advice for designing APIs for Flutter, and how to format code in the framework. 5. [Flutter design doc template](https://flutter.dev/go/template), which should be used when proposing a new technical design. This is a good practice to do before coding more intricate changes. - See also our [guidance for writing design docs](https://github.com/flutter/flutter/wiki/Design-Documents). + See also our [guidance for writing design docs](./docs/contributing/Design-Documents.md). [![How to contribute to Flutter](https://img.youtube.com/vi/4yBgOBAOx_A/0.jpg)](https://www.youtube.com/watch?v=4yBgOBAOx_A) In addition to the documents, there is a video linked above on **How to contribute to Flutter** from the [Flutter](https://youtube.com/c/flutterdev) YouTube channel, -there are many pages on [our Wiki](https://github.com/flutter/flutter/wiki/), +there are many pages in [our docs](./docs/README.md), and an article [Contributing to Flutter: Getting Started](https://medium.com/@ayushbherwani/contributing-to-flutter-getting-started-a0db68cbcd5b) on Medium that may be of interest. For a curated list of pages see the sidebar on the wiki's home page. They are more or less listed in order of importance. @@ -152,7 +152,7 @@ whether advocating for Flutter, answering questions in fora like or [Reddit](https://www.reddit.com/r/flutterhelp/new/?f=flair_name%3A%22OPEN%22), or creating content for our [documentation](https://docs.flutter.dev/) or sites like [YouTube](https://www.youtube.com/results?search_query=flutter&sp=EgQIAxAB), -the best starting point is to join the #hackers-devrel [Discord channel](https://github.com/flutter/flutter/wiki/Chat). +the best starting point is to join the #hackers-devrel [Discord channel](./docs/contributing/Chat.md). From there, you can describe what you're interested in doing, and go ahead and do it! As others become familiar with your work, they may have feedback, be interested in collaborating, or want to coordinate their efforts with yours. @@ -162,12 +162,12 @@ API documentation ----------------- Another great area to contribute in is sample code and API documentation. If this is an area that interests you, join our -[Discord](https://github.com/flutter/flutter/wiki/Chat) server and introduce yourself on the #hackers-deverl, #hackers-framework, +[Discord](./docs/contributing/Chat.md) server and introduce yourself on the #hackers-deverl, #hackers-framework, or #hackers-engine channels, describing your area of interest. As our API docs are integrated into our source code, see the "developing for Flutter" section above for a guide on how to set up your developer environment. To contribute API documentation, an excellent command of the English language is particularly helpful, as is a careful attention to detail. -We have a [whole section in our style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#documentation-dartdocs-javadocs-etc) +We have a [whole section in our style guide](./docs/contributing/Style-guide-for-Flutter-repo.md#documentation-dartdocs-javadocs-etc) that you should read before you write API documentation. It includes notes on the "Flutter Voice", such as our word and grammar conventions. In general, a really productive way to improve documentation is to use Flutter and stop any time you have a question: find the answer, then @@ -186,7 +186,7 @@ Releases If you are interested in participating in our release process, which may involve writing release notes and blog posts, coordinating the actual generation of binaries, updating our release tooling, and other work of that nature, then reach out on the #hackers-releases -channel of our [Discord](https://github.com/flutter/flutter/wiki/Chat) server. +channel of our [Discord](./docs/contributing/Chat.md) server. Social events in the contributor community @@ -194,5 +194,5 @@ Social events in the contributor community Finally, one area where you could have a lot of impact is in contributing to social interactions among the Flutter contributor community itself. This could take the form of organizing weekly video chats on our Discord, or planning tech talks from contributors, for example. -If this is an area that is of interest to you, please join our [Discord](https://github.com/flutter/flutter/wiki/Chat) and ping Hixie on the #hackers +If this is an area that is of interest to you, please join our [Discord](./docs/contributing/Chat.md) and ping Hixie on the #hackers channel! diff --git a/README.md b/README.md index e19a80f1597..abc247fe338 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ open source. * [Install Flutter](https://flutter.dev/get-started/) * [Flutter documentation](https://docs.flutter.dev/) -* [Development wiki](https://github.com/flutter/flutter/wiki) +* [Development wiki](./docs/README.md) * [Contributing to Flutter](https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md) For announcements about new releases, follow the @@ -100,7 +100,7 @@ Information on how to get started can be found in our [contributor guide](CONTRIBUTING.md). [flutter.dev]: https://flutter.dev -[Discord instructions]: https://github.com/flutter/flutter/wiki/Chat +[Discord instructions]: ./docs/contributing/Chat.md [Discord badge]: https://img.shields.io/discord/608014603317936148?logo=discord [Twitter handle]: https://img.shields.io/twitter/follow/flutterdev.svg?style=social&label=Follow [Twitter badge]: https://twitter.com/intent/follow?screen_name=flutterdev diff --git a/analysis_options.yaml b/analysis_options.yaml index 135153f5f0d..f1f7c43eaeb 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -158,7 +158,7 @@ linter: # - prefer_constructors_over_static_methods # far too many false positives - prefer_contains # - prefer_double_quotes # opposite of prefer_single_quotes - # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods + # - prefer_expression_function_bodies # conflicts with ./docs/contributing/Style-guide-for-Flutter-repo.md#consider-using--for-short-functions-and-methods - prefer_final_fields - prefer_final_in_for_each - prefer_final_locals @@ -171,7 +171,7 @@ linter: - prefer_if_null_operators - prefer_initializing_formals - prefer_inlined_adds - # - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants + # - prefer_int_literals # conflicts with ./docs/contributing/Style-guide-for-Flutter-repo.md#use-double-literals-for-double-constants - prefer_interpolation_to_compose_strings - prefer_is_empty - prefer_is_not_empty diff --git a/dev/bots/README.md b/dev/bots/README.md index daf4aeef356..01b151b1b5d 100644 --- a/dev/bots/README.md +++ b/dev/bots/README.md @@ -10,7 +10,7 @@ Flutter build results are available at: Flutter infra requires special permissions to retrigger builds on the [build dashboard](https://flutter-dashboard.appspot.com/#/build). File an -[infra ticket](https://github.com/flutter/flutter/wiki/Infra-Ticket-Queue) to +[infra ticket](../../docs/infra/Infra-Ticket-Queue.md) to request permission. The [Cirrus](https://cirrus-ci.org)-based bots run the [`test.dart`](test.dart) @@ -28,7 +28,7 @@ The build dashboard includes post-commit testing run on physical devices. See A [set of infra scripts](https://flutter.googlesource.com/recipes/) run on Windows, Linux, and Mac machines. The configuration for how many machines and what kind are managed internally by Google. File an -[infra ticket](https://github.com/flutter/flutter/wiki/Infra-Ticket-Queue) +[infra ticket](../../docs/infra/Infra-Ticket-Queue.md) to request new machine types to be added. Both of these technologies are highly specific to the [LUCI](https://github.com/luci) project, which is the successor to Chromium's infra and the foundation to Flutter's infrastructure. diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart index 67758855eba..84fc647999f 100644 --- a/dev/bots/analyze.dart +++ b/dev/bots/analyze.dart @@ -557,7 +557,7 @@ Future verifyNoSyncAsyncStar(String workingDirectory, {int minimumMatches } if (errors.isNotEmpty) { foundError([ - '${bold}Do not use sync*/async* methods. See https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#avoid-syncasync for details.$reset', + '${bold}Do not use sync*/async* methods. See https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#avoid-syncasync for details.$reset', ...errors, ]); } @@ -624,7 +624,7 @@ Future verifyGoldenTags(String workingDirectory, { int minimumMatches = 20 if (errors.isNotEmpty) { foundError([ ...errors, - '${bold}See: https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter$reset', + '${bold}See: https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md$reset', ]); } } @@ -696,7 +696,7 @@ Future verifyDeprecations(String workingDirectory, { int minimumMatches = message = messageMatch.namedGroup('message'); final String firstChar = String.fromCharCode(message!.runes.first); if (firstChar.toUpperCase() != firstChar) { - throw 'Deprecation notice should be a grammatically correct sentence and start with a capital letter; see style guide: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo'; + throw 'Deprecation notice should be a grammatically correct sentence and start with a capital letter; see style guide: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md'; } } else { message += messageMatch.namedGroup('message')!; @@ -743,7 +743,7 @@ Future verifyDeprecations(String workingDirectory, { int minimumMatches = if (errors.isNotEmpty) { foundError([ ...errors, - '${bold}See: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes$reset', + '${bold}See: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes$reset', ]); } } @@ -878,7 +878,7 @@ Future verifySkipTestComments(String workingDirectory) async { if (errors.isNotEmpty) { foundError([ ...errors, - '\n${bold}See: https://github.com/flutter/flutter/wiki/Tree-hygiene#skipped-tests$reset', + '\n${bold}See: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#skipped-tests$reset', ]); } } @@ -1818,7 +1818,7 @@ Future verifyNoBinaries(String workingDirectory, { Set? legacyBin 'to which you need access, you should consider how to fetch it from another repository;', 'for example, the "assets-for-api-docs" repository is used for images in API docs.', 'To add assets to flutter_tools templates, see the instructions in the wiki:', - 'https://github.com/flutter/flutter/wiki/Managing-template-image-assets', + 'https://github.com/flutter/flutter/blob/main/docs/tool/Managing-template-image-assets.md', ]); } } @@ -2114,9 +2114,9 @@ Future verifyTabooDocumentation(String workingDirectory, { int minimumMatc } if (errors.isNotEmpty) { foundError([ - '${bold}Avoid the word "simply" in documentation. See https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-the-passive-voice-recommend-do-not-require-never-say-things-are-simple for details.$reset', + '${bold}Avoid the word "simply" in documentation. See https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#use-the-passive-voice-recommend-do-not-require-never-say-things-are-simple for details.$reset', '${bold}In many cases these words can be omitted without loss of generality; in other cases it may require a bit of rewording to avoid implying that the task is simple.$reset', - '${bold}Similarly, avoid using "note:" or the phrase "note that". See https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#avoid-empty-prose for details.$reset', + '${bold}Similarly, avoid using "note:" or the phrase "note that". See https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#avoid-empty-prose for details.$reset', ...errors, ]); } diff --git a/dev/bots/analyze_snippet_code.dart b/dev/bots/analyze_snippet_code.dart index 43bf55b6fc9..4453b52b992 100644 --- a/dev/bots/analyze_snippet_code.dart +++ b/dev/bots/analyze_snippet_code.dart @@ -9,7 +9,7 @@ // // For documentation on creating sample code, see ../../examples/api/README.md // See also our style guide's discussion on documentation and sample code: -// https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#documentation-dartdocs-javadocs-etc +// https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md // // This tool is used to analyze smaller snippets of code in the API docs. // Such snippets are wrapped in ```dart ... ``` blocks, which may themselves diff --git a/dev/bots/test/analyze_test.dart b/dev/bots/test/analyze_test.dart index 1ed50e053ed..8b658e2277b 100644 --- a/dev/bots/test/analyze_test.dart +++ b/dev/bots/test/analyze_test.dart @@ -66,14 +66,14 @@ void main() { .map((String line) { return line .replaceAll('/', Platform.isWindows ? r'\' : '/') - .replaceAll('STYLE_GUIDE_URL', 'https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo') + .replaceAll('STYLE_GUIDE_URL', 'https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md') .replaceAll('RELEASES_URL', 'https://flutter.dev/docs/development/tools/sdk/releases'); }) .join('\n'); expect(result, '╔═╡ERROR #1╞════════════════════════════════════════════════════════════════════\n' '$lines\n' - '║ See: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes\n' + '║ See: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n' '╚═══════════════════════════════════════════════════════════════════════════════\n' ); }); @@ -92,7 +92,7 @@ void main() { expect(result.length, 4 + lines.length, reason: 'output had unexpected number of lines:\n${result.join('\n')}'); expect(result[0], '╔═╡ERROR #1╞════════════════════════════════════════════════════════════════════'); expect(result.getRange(1, result.length - 3).toSet(), lines.toSet()); - expect(result[result.length - 3], '║ See: https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter'); + expect(result[result.length - 3], '║ See: https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md'); expect(result[result.length - 2], '╚═══════════════════════════════════════════════════════════════════════════════'); expect(result[result.length - 1], ''); // trailing newline }); @@ -187,7 +187,7 @@ void main() { '║ to which you need access, you should consider how to fetch it from another repository;\n' '║ for example, the "assets-for-api-docs" repository is used for images in API docs.\n' '║ To add assets to flutter_tools templates, see the instructions in the wiki:\n' - '║ https://github.com/flutter/flutter/wiki/Managing-template-image-assets\n' + '║ https://github.com/flutter/flutter/blob/main/docs/tool/Managing-template-image-assets.md\n' '╚═══════════════════════════════════════════════════════════════════════════════\n' ); } diff --git a/dev/bots/utils.dart b/dev/bots/utils.dart index 61b523ed54b..735b5ef3e7e 100644 --- a/dev/bots/utils.dart +++ b/dev/bots/utils.dart @@ -271,7 +271,7 @@ void _printLoudly(String message) { // THE FOLLOWING CODE IS A VIOLATION OF OUR STYLE GUIDE // BECAUSE IT INTRODUCES A VERY FLAKY RACE CONDITION -// https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#never-check-if-a-port-is-available-before-using-it-never-add-timeouts-and-other-race-conditions +// https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#never-check-if-a-port-is-available-before-using-it-never-add-timeouts-and-other-race-conditions // DO NOT USE THE FOLLOWING FUNCTIONS // DO NOT WRITE CODE LIKE THE FOLLOWING FUNCTIONS // https://github.com/flutter/flutter/issues/109474 diff --git a/dev/conductor/README.md b/dev/conductor/README.md index e7b6682096f..2f7e293ecdc 100644 --- a/dev/conductor/README.md +++ b/dev/conductor/README.md @@ -1,7 +1,7 @@ # Flutter Conductor Command-line tool for managing a release of the Flutter SDK. Also see -https://github.com/flutter/flutter/wiki/Release-process for more information on +[Release Process](../../docs/releases/Release-process.md) for more information on the release process. ## Requirements diff --git a/dev/conductor/core/bin/cli.dart b/dev/conductor/core/bin/cli.dart index f1394ca0719..12df3ac1eac 100644 --- a/dev/conductor/core/bin/cli.dart +++ b/dev/conductor/core/bin/cli.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// See: https://github.com/flutter/flutter/wiki/Release-process +// See: https://github.com/flutter/flutter/blob/main/docs/releases/Release-process.md import 'dart:io' as io; diff --git a/dev/conductor/core/lib/conductor_core.dart b/dev/conductor/core/lib/conductor_core.dart index 28065d48337..6b34f9fc958 100644 --- a/dev/conductor/core/lib/conductor_core.dart +++ b/dev/conductor/core/lib/conductor_core.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// See: https://github.com/flutter/flutter/wiki/Release-process +// See: https://github.com/flutter/flutter/blob/main/docs/releases/Release-process.md export 'src/candidates.dart'; export 'src/clean.dart'; diff --git a/dev/conductor/core/lib/src/globals.dart b/dev/conductor/core/lib/src/globals.dart index 83f17a128cf..60a2e56460b 100644 --- a/dev/conductor/core/lib/src/globals.dart +++ b/dev/conductor/core/lib/src/globals.dart @@ -16,7 +16,7 @@ const List kBaseReleaseChannels = ['stable', 'beta']; const List kReleaseChannels = [...kBaseReleaseChannels, FrameworkRepository.defaultBranch]; -const String kReleaseDocumentationUrl = 'https://github.com/flutter/flutter/wiki/Flutter-Cherrypick-Process'; +const String kReleaseDocumentationUrl = 'https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md'; const String kLuciPackagingConsoleLink = 'https://ci.chromium.org/p/dart-internal/g/flutter_packaging/console'; @@ -29,13 +29,13 @@ const String flutterReleaseHotline = 'https://mail.google.com/chat/u/0/#chat/space/AAAA6RKcK2k'; const String hotfixToStableWiki = - 'https://github.com/flutter/flutter/wiki/Hotfixes-to-the-Stable-Channel'; + 'https://github.com/flutter/flutter/blob/main/docs/releases/Hotfixes-to-the-Stable-Channel.md'; const String flutterAnnounceGroup = 'https://groups.google.com/g/flutter-announce'; const String hotfixDocumentationBestPractices = - 'https://github.com/flutter/flutter/wiki/Hotfix-Documentation-Best-Practices'; + 'https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md'; final RegExp releaseCandidateBranchRegex = RegExp( r'flutter-(\d+)\.(\d+)-candidate\.(\d+)', diff --git a/dev/integration_tests/web_e2e_tests/README.md b/dev/integration_tests/web_e2e_tests/README.md index 15ba8faa748..99887848369 100644 --- a/dev/integration_tests/web_e2e_tests/README.md +++ b/dev/integration_tests/web_e2e_tests/README.md @@ -32,7 +32,7 @@ renderer (`--web-renderer=html`). More resources: * chromedriver: https://chromedriver.chromium.org/getting-started -* FlutterDriver: https://github.com/flutter/flutter/wiki/Running-Flutter-Driver-tests-with-Web +* FlutterDriver: https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Running-Flutter-Driver-tests-with-Web.md * `package:integration_test`: https://pub.dev/packages/integration_test [1]: https://chromedriver.chromium.org/downloads diff --git a/dev/tools/update_icons.dart b/dev/tools/update_icons.dart index 1007f722407..a3857af77a4 100644 --- a/dev/tools/update_icons.dart +++ b/dev/tools/update_icons.dart @@ -3,7 +3,7 @@ // found in the LICENSE file. // Regenerates a Dart file with a class containing IconData constants. -// See https://github.com/flutter/flutter/wiki/Updating-Material-Design-Fonts-&-Icons +// See https://github.com/flutter/flutter/blob/main/docs/libraries/material/Updating-Material-Design-Fonts-%26-Icons.md // Should be idempotent with: // dart dev/tools/update_icons.dart --new-codepoints bin/cache/artifacts/material_fonts/codepoints diff --git a/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md b/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md index 48c583ce108..49ec2cf7f11 100644 --- a/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md +++ b/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md @@ -41,7 +41,7 @@ If the Flutter build is broken due to a golden file test failure, this typically Visit https://flutter-gold.skia.org/ to view and approve the image(s), or revert the associated change. For more information, visit the wiki: - https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter + https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md ``` To resolve, visit the [Flutter Gold dashboard](https://flutter-gold.skia.org/) to view the batch of images in question. If they are intended changes, approve them by clicking the checkmark, and re-run the failing test to resolve. If the image changes are not intended, revert the associated change. diff --git a/docs/releases/archive/Commits-Between-1.2.1-and-1.5.4.md b/docs/releases/archive/Commits-Between-1.2.1-and-1.5.4.md index 74d8d8449c1..43c52cf58c4 100644 --- a/docs/releases/archive/Commits-Between-1.2.1-and-1.5.4.md +++ b/docs/releases/archive/Commits-Between-1.2.1-and-1.5.4.md @@ -529,7 +529,7 @@ |Moein Porkamel |Fix typo ([#28558](https://github.com/flutter/flutter/issues/28558))| |liyuqian |Reland "Shader warm up ([#27660](https://github.com/flutter/flutter/issues/27660))" ([#28537](https://github.com/flutter/flutter/issues/28537)) This reverts commit adc8e159a548121a45ff7a45b4e556aff998d4bd. This should be safe to land once https://github.com/flutter/flutter/pull/28530 gets merged Merge on yellow doc test because the doc test is actually green.| |Jonah Williams |remove personal repo and replace with trivial example for smoke test ([#28386](https://github.com/flutter/flutter/issues/28386))| -|liyuqian |Add LICENSE test to presubmit checks ([#28369](https://github.com/flutter/flutter/issues/28369)) ## Description Also update the existing dart files with missing licenses. Without the fix, we'll emit the following error message ``` License headers cannot be found at the beginning of the following files. /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/lib/src/animation/tween_sequence.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/material/raw_material_button_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/async_lifecycle_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/sliver_constraints_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/app_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/test_border.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/physical_model_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/inherited_model.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter_tools/lib/src/base/user_messages.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter_tools/test/src/pubspec_schema.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter_tools/test/ios/simulators_test.dart ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## Related Issues Fixes https://github.com/flutter/flutter/issues/28368 ## Checklist Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (`[x]`). This will ensure a smooth and quick review process. - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] My PR includes tests for *all* changed/updated/fixed behaviors (See [Test Coverage]). - [x] All existing and new tests are passing. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] The analyzer (`flutter analyze --flutter-repo`) does not report any problems on my PR. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I am willing to follow-up on review comments in a timely manner. ## Breaking Change Does your PR require Flutter developers to manually update their apps to accommodate your change? - [ ] Yes, this is a breaking change (Please read [Handling breaking changes]). - [x] No, this is *not* a breaking change. [issue database]: https://github.com/flutter/flutter/issues [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Test Coverage]: https://github.com/flutter/flutter/wiki/Test-coverage-for-package%3Aflutter [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [Features we expect every widget to implement]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [Handling breaking changes]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes| +|liyuqian |Add LICENSE test to presubmit checks ([#28369](https://github.com/flutter/flutter/issues/28369)) ## Description Also update the existing dart files with missing licenses. Without the fix, we'll emit the following error message ``` License headers cannot be found at the beginning of the following files. /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/lib/src/animation/tween_sequence.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/material/raw_material_button_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/async_lifecycle_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/sliver_constraints_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/app_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/test_border.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/physical_model_test.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter/test/widgets/inherited_model.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter_tools/lib/src/base/user_messages.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter_tools/test/src/pubspec_schema.dart /usr/local/google/home/liyuqian/flutter/flutter/packages/flutter_tools/test/ios/simulators_test.dart ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## Related Issues Fixes https://github.com/flutter/flutter/issues/28368 ## Checklist Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (`[x]`). This will ensure a smooth and quick review process. - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] My PR includes tests for *all* changed/updated/fixed behaviors (See [Test Coverage]). - [x] All existing and new tests are passing. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] The analyzer (`flutter analyze --flutter-repo`) does not report any problems on my PR. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I am willing to follow-up on review comments in a timely manner. ## Breaking Change Does your PR require Flutter developers to manually update their apps to accommodate your change? - [ ] Yes, this is a breaking change (Please read [Handling breaking changes]). - [x] No, this is *not* a breaking change. [issue database]: https://github.com/flutter/flutter/issues [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Test Coverage]: https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Test-coverage-for-package-flutter.md [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [Handling breaking changes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes| |liyuqian |Fix backspace and clear length in AnsiStatus ([#28477](https://github.com/flutter/flutter/issues/28477)) Fixes https://github.com/flutter/flutter/issues/26922 Without the fix, the newly added test failed with the following error: ``` 00:07 +24 -4: Spinners AnsiStatus works for fuchsia [E] Expected: a non-negative value Actual: <-1> Which: is not a non-negative value The following line has overflow backtraces: "Hello world \b\b\b\b\b\b\b\b ⣽\b\b\b\b\b\b\b\b ⣻\b\b\b\b\b\b\b\b ⢿\b\b\b\b\b\b\b\b ⡿\b\b\b\b\b\b\b\b ⣟\b\b\b\b\b\b\b\b ⣯\b\b\b\b\b\b\b\b ⣷\b\b\b\b\b\b\b\b ⣾\b\b\b\b\b\b\b\b ⣽\b\b\b\b\b\b\b\b ⣻\b\b\b\b\b\b\b\b ⢿ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⡿ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣟ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣯ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣷ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣾ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣽ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣻ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⢿ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⡿ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣟ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣯ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣷ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣾ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣽ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣻ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⢿ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⡿ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣟ (This is taking an unexpectedly long time.)\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ⣯ (This is taking an unexpectedly long time.)" ```| |Jonah Williams |Add basic web device and run support ([#28302](https://github.com/flutter/flutter/issues/28302))| |Dan Field |increase timeout ([#28480](https://github.com/flutter/flutter/issues/28480))| diff --git a/packages/analysis_options.yaml b/packages/analysis_options.yaml index 3f0e82867e7..f86aafb8ffb 100644 --- a/packages/analysis_options.yaml +++ b/packages/analysis_options.yaml @@ -5,5 +5,5 @@ include: ../analysis_options.yaml linter: rules: - - public_member_api_docs # see https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#documentation-dartdocs-javadocs-etc + - public_member_api_docs # see https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#documentation-dartdocs-javadocs-etc - no_runtimeType_toString # use objectRuntimeType from package:foundation diff --git a/packages/flutter/lib/fix_data/README.md b/packages/flutter/lib/fix_data/README.md index 9e98e276db0..782dbc65989 100644 --- a/packages/flutter/lib/fix_data/README.md +++ b/packages/flutter/lib/fix_data/README.md @@ -26,8 +26,7 @@ dart fix --compare-to-golden For more documentation about Data Driven Fixes, see https://dart.dev/go/data-driven-fixes#test-folder. -To learn more about how fixes are authored in package:flutter, see -https://github.com/flutter/flutter/wiki/Data-driven-Fixes +To learn more about how fixes are authored in package:flutter, see [Data driven Fixes](../../../../docs/contributing/Data-driven-Fixes.md). ## When making structural changes to this directory diff --git a/packages/flutter/lib/src/material/icons.dart b/packages/flutter/lib/src/material/icons.dart index cdf57982135..d0a9ca1aaca 100644 --- a/packages/flutter/lib/src/material/icons.dart +++ b/packages/flutter/lib/src/material/icons.dart @@ -27,7 +27,7 @@ final class PlatformAdaptiveIcons implements Icons { } // Generated code: do not hand-edit. - // See https://github.com/flutter/flutter/wiki/Updating-Material-Design-Fonts-&-Icons + // https://github.com/flutter/flutter/blob/main/docs/libraries/material/Updating-Material-Design-Fonts-%26-Icons.md // BEGIN GENERATED PLATFORM ADAPTIVE ICONS @@ -178,7 +178,7 @@ abstract final class Icons { static PlatformAdaptiveIcons get adaptive => const PlatformAdaptiveIcons._(); // Generated code: do not hand-edit. - // See https://github.com/flutter/flutter/wiki/Updating-Material-Design-Fonts-&-Icons + // https://github.com/flutter/flutter/blob/main/docs/libraries/material/Updating-Material-Design-Fonts-%26-Icons.md // BEGIN GENERATED ICONS /// 10k — material icon named "10k". diff --git a/packages/flutter/pubspec.yaml b/packages/flutter/pubspec.yaml index 3a195e4c377..20d10c15a74 100644 --- a/packages/flutter/pubspec.yaml +++ b/packages/flutter/pubspec.yaml @@ -9,7 +9,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md characters: 1.3.0 collection: 1.18.0 material_color_utilities: 0.11.1 diff --git a/packages/flutter/test/painting/decoration_image_lerp_test.dart b/packages/flutter/test/painting/decoration_image_lerp_test.dart index 8586abbd9ad..12119a290cf 100644 --- a/packages/flutter/test/painting/decoration_image_lerp_test.dart +++ b/packages/flutter/test/painting/decoration_image_lerp_test.dart @@ -4,7 +4,7 @@ // This file is run as part of a reduced test set in CI on Mac and Windows // machines because it contains golden tests; see: -// https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter#reduced-test-set-tag +// https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md @Tags(['reduced-test-set']) library; diff --git a/packages/flutter/test_fixes/README.md b/packages/flutter/test_fixes/README.md index 38dbb060926..4e5c5444af0 100644 --- a/packages/flutter/test_fixes/README.md +++ b/packages/flutter/test_fixes/README.md @@ -17,7 +17,7 @@ For more documentation about Data Driven Fixes, see https://dart.dev/go/data-driven-fixes#test-folder. To learn more about how fixes are authored in package:flutter, see -https://github.com/flutter/flutter/wiki/Data-driven-Fixes +[Data driven fixes](../../../docs/contributing/Data-driven-Fixes.md). ## When making structural changes to this directory diff --git a/packages/flutter/test_private/pubspec.yaml b/packages/flutter/test_private/pubspec.yaml index 4366ea5358e..b1c4caaebde 100644 --- a/packages/flutter/test_private/pubspec.yaml +++ b/packages/flutter/test_private/pubspec.yaml @@ -8,7 +8,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md meta: 1.15.0 path: 1.9.0 process: 5.0.2 diff --git a/packages/flutter/test_private/test/pubspec.yaml b/packages/flutter/test_private/test/pubspec.yaml index 75897900379..67a2db7908d 100644 --- a/packages/flutter/test_private/test/pubspec.yaml +++ b/packages/flutter/test_private/test/pubspec.yaml @@ -7,7 +7,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md flutter: sdk: flutter flutter_test: diff --git a/packages/flutter_driver/lib/fix_data/README.md b/packages/flutter_driver/lib/fix_data/README.md index 3a3622d6306..100c6bf251e 100644 --- a/packages/flutter_driver/lib/fix_data/README.md +++ b/packages/flutter_driver/lib/fix_data/README.md @@ -26,7 +26,7 @@ For more documentation about Data Driven Fixes, see https://dart.dev/go/data-driven-fixes#test-folder. To learn more about how fixes are authored in package:flutter_driver, see -https://github.com/flutter/flutter/wiki/Data-driven-Fixes +[Data driven fixes](../../../../docs/contributing/Data-driven-Fixes.md). ## When making structural changes to this directory diff --git a/packages/flutter_driver/test_fixes/README.md b/packages/flutter_driver/test_fixes/README.md index 647be4469aa..ad6add3e024 100644 --- a/packages/flutter_driver/test_fixes/README.md +++ b/packages/flutter_driver/test_fixes/README.md @@ -17,7 +17,7 @@ For more documentation about Data Driven Fixes, see https://dart.dev/go/data-driven-fixes#test-folder. To learn more about how fixes are authored in package:flutter, see -https://github.com/flutter/flutter/wiki/Data-driven-Fixes +[Data driven fixes](../../../docs/contributing/Data-driven-Fixes.md). ## When making structural changes to this directory diff --git a/packages/flutter_goldens/lib/flutter_goldens.dart b/packages/flutter_goldens/lib/flutter_goldens.dart index 4a3d6638e1b..e88aece5e66 100644 --- a/packages/flutter_goldens/lib/flutter_goldens.dart +++ b/packages/flutter_goldens/lib/flutter_goldens.dart @@ -17,7 +17,7 @@ export 'skia_client.dart'; // If you are here trying to figure out how to use golden files in the Flutter // repo itself, consider reading this wiki page: -// https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package%3Aflutter +// https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md // If you are trying to debug this package, you may like to use the golden test // titled "Inconsequential golden test" in this file: diff --git a/packages/flutter_goldens/lib/skia_client.dart b/packages/flutter_goldens/lib/skia_client.dart index 119954dfb5a..44e446e205b 100644 --- a/packages/flutter_goldens/lib/skia_client.dart +++ b/packages/flutter_goldens/lib/skia_client.dart @@ -13,7 +13,7 @@ import 'package:process/process.dart'; // If you are here trying to figure out how to use golden files in the Flutter // repo itself, consider reading this wiki page: -// https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package%3Aflutter +// https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md const String _kFlutterRootKey = 'FLUTTER_ROOT'; const String _kGoldctlKey = 'GOLDCTL'; @@ -238,7 +238,7 @@ class SkiaGoldClient { ..writeln('Visit https://flutter-gold.skia.org/ to view and approve ') ..writeln('the image(s), or revert the associated change. For more ') ..writeln('information, visit the wiki: ') - ..writeln('https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter') + ..writeln('https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md') ..writeln() ..writeln('Debug information for Gold --------------------------------') ..writeln('stdout: ${result.stdout}') diff --git a/packages/flutter_goldens/pubspec.yaml b/packages/flutter_goldens/pubspec.yaml index 4af7b49b258..d33d6344e53 100644 --- a/packages/flutter_goldens/pubspec.yaml +++ b/packages/flutter_goldens/pubspec.yaml @@ -7,7 +7,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md flutter: sdk: flutter flutter_test: diff --git a/packages/flutter_localizations/pubspec.yaml b/packages/flutter_localizations/pubspec.yaml index 3ac479535c3..fc981a5b986 100644 --- a/packages/flutter_localizations/pubspec.yaml +++ b/packages/flutter_localizations/pubspec.yaml @@ -7,7 +7,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md flutter: sdk: flutter diff --git a/packages/flutter_test/lib/fix_data/README.md b/packages/flutter_test/lib/fix_data/README.md index 2b7b48e81e2..f474b4968e4 100644 --- a/packages/flutter_test/lib/fix_data/README.md +++ b/packages/flutter_test/lib/fix_data/README.md @@ -26,7 +26,7 @@ For more documentation about Data Driven Fixes, see https://dart.dev/go/data-driven-fixes#test-folder. To learn more about how fixes are authored in package:flutter_test, see -https://github.com/flutter/flutter/wiki/Data-driven-Fixes +[Data driven fixes](../../../../docs/contributing/Data-driven-Fixes.md). ## When making structural changes to this directory diff --git a/packages/flutter_test/lib/src/goldens.dart b/packages/flutter_test/lib/src/goldens.dart index 3e1e2b9d680..2d321117310 100644 --- a/packages/flutter_test/lib/src/goldens.dart +++ b/packages/flutter_test/lib/src/goldens.dart @@ -84,7 +84,7 @@ abstract class GoldenFileComparator { /// historical golden files. /// /// Version numbers are used in golden file tests for package:flutter. You can - /// learn more about these tests [here](https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter). + /// learn more about these tests [here](https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md). Uri getTestUri(Uri key, int? version) { if (version == null) { return key; @@ -216,7 +216,7 @@ abstract class WebGoldenComparator { /// historical golden files. /// /// Version numbers are used in golden file tests for package:flutter. You can - /// learn more about these tests [here](https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter). + /// learn more about these tests [here](https://github.com/flutter/flutter/blob/main/docs/contributing/testing/Writing-a-golden-file-test-for-package-flutter.md). Uri getTestUri(Uri key, int? version) { if (version == null) { return key; diff --git a/packages/flutter_test/pubspec.yaml b/packages/flutter_test/pubspec.yaml index 6e19865cdcd..3261de120ba 100644 --- a/packages/flutter_test/pubspec.yaml +++ b/packages/flutter_test/pubspec.yaml @@ -7,7 +7,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md flutter: sdk: flutter diff --git a/packages/flutter_tools/README.md b/packages/flutter_tools/README.md index 606eacfb3ad..23090785d35 100644 --- a/packages/flutter_tools/README.md +++ b/packages/flutter_tools/README.md @@ -7,7 +7,7 @@ for building Flutter applications. Be sure to follow the instructions on [CONTRIBUTING.md](../../CONTRIBUTING.md) to set up your development environment. Further, familiarize yourself with the -[style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo), +[style guide](../../docs/contributing/Style-guide-for-Flutter-repo.md), which we follow. ### Setting up @@ -36,8 +36,8 @@ $ flutter analyze ### Writing tests -As with other parts of the Flutter repository, all changes in behavior [must be -tested](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#write-test-find-bug). +As with other parts of the Flutter repository, all changes in behavior +[must be tested](../../docs/contributing/Style-guide-for-Flutter-repo.md#write-test-find-bug). Tests live under the `test/` subdirectory. - Hermetic unit tests of tool internals go under `test/general.shard` diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index 40e03324a97..e91657b373f 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart @@ -323,7 +323,7 @@ class EngineBuildPaths { /// Information about a local engine build (i.e. `--local-engine[-host]=...`). /// -/// See https://github.com/flutter/flutter/wiki/The-flutter-tool#using-a-locally-built-engine-with-the-flutter-tool +/// See https://github.com/flutter/flutter/blob/main/docs/tool/README.md#using-a-locally-built-engine-with-the-flutter-tool /// for more information about local engine builds. class LocalEngineInfo { /// Creates a reference to a local engine build. diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index c90c52f56c3..4be71827720 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -9,7 +9,7 @@ dependencies: # To update these, use "flutter update-packages --force-upgrade". # # For detailed instructions, refer to: - # https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter + # https://github.com/flutter/flutter/blob/main/docs/infra/Updating-dependencies-in-Flutter.md archive: 3.6.1 args: 2.5.0 browser_launcher: 1.1.1 diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart index 5fc257ce710..f34590cf6ab 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart @@ -923,7 +923,7 @@ void main() { // Import for the new embedding class. expect(mainActivity.contains('import io.flutter.embedding.android.FlutterActivity'), true); - expect(logger.statusText, isNot(contains('https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects'))); + expect(logger.statusText, isNot(contains('https://github.com/flutter/flutter/blob/main/docs/platforms/android/Upgrading-pre-1.12-Android-projects.md'))); }, overrides: { Logger: () => logger, }); diff --git a/packages/flutter_tools/test/general.shard/project_test.dart b/packages/flutter_tools/test/general.shard/project_test.dart index c6e4e52678e..330128a1961 100644 --- a/packages/flutter_tools/test/general.shard/project_test.dart +++ b/packages/flutter_tools/test/general.shard/project_test.dart @@ -211,13 +211,13 @@ void main() { // android:name="flutterEmbedding" android:value="2" />. project.checkForDeprecation(deprecationBehavior: DeprecationBehavior.ignore); - expect(testLogger.statusText, isNot(contains('https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects'))); + expect(testLogger.statusText, isNot(contains('https://github.com/flutter/flutter/blob/main/docs/platforms/android/Upgrading-pre-1.12-Android-projects.md'))); }); _testInMemory('Android plugin project does not throw v1 embedding deprecation warning', () async { final FlutterProject project = await aPluginProject(); project.checkForDeprecation(deprecationBehavior: DeprecationBehavior.exit); - expect(testLogger.statusText, isNot(contains('https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects'))); + expect(testLogger.statusText, isNot(contains('https://github.com/flutter/flutter/blob/main/docs/platforms/android/Upgrading-pre-1.12-Android-projects.md'))); expect(testLogger.statusText, isNot(contains('No `` in '))); }); _testInMemory('Android plugin without example app does not show a warning', () async { @@ -225,7 +225,7 @@ void main() { project.example.directory.deleteSync(); await project.regeneratePlatformSpecificTooling(); - expect(testLogger.statusText, isNot(contains('https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects'))); + expect(testLogger.statusText, isNot(contains('https://github.com/flutter/flutter/blob/main/docs/platforms/android/Upgrading-pre-1.12-Android-projects.md'))); }); _testInMemory('updates local properties for Android', () async { final FlutterProject project = await someProject(); diff --git a/packages/integration_test/lib/fix_data/README.md b/packages/integration_test/lib/fix_data/README.md index 05c275d0b00..94b75089537 100644 --- a/packages/integration_test/lib/fix_data/README.md +++ b/packages/integration_test/lib/fix_data/README.md @@ -26,7 +26,7 @@ For more documentation about Data Driven Fixes, see https://dart.dev/go/data-driven-fixes#test-folder. To learn more about how fixes are authored in package:integration_test, see -https://github.com/flutter/flutter/wiki/Data-driven-Fixes +[Data driven fixes](../../../../docs/contributing/Data-driven-Fixes.md). ## When making structural changes to this directory