Skip to content

Detailed English and Chinese docs, and seven plugin fixes found while verifying them - #50

Merged
linghengqian merged 2 commits into
mainfrom
docs-and-fixes
Oct 20, 2026
Merged

linghengqian merged 2 commits into
mainfrom
docs-and-fixes

Conversation

@linghengqian

Copy link
Copy Markdown
Member

Two commits:

  1. fix: seven plugin problems found while verifying the docs
  2. docs: detailed English and Chinese documentation

Plugin fixes

Each was found by checking the docs against real runs (vfox 1.0.12 and 1.0.13, the live Google, GitHub and gitcode.com endpoints).

Problem Fix
Installing an official release asked gitcode.com (PreInstall → Available → ohos.list()). While gitcode.com answered HTTP 429 the plugin waited 30 + 60 + 120 + 180 s and printed nothing: vfox search took 392 s and vfox install flutter@3.47.4 212 s PreInstall asks for the official releases only. vfox search and latest still list the OpenHarmony releases, but try twice, stop at a 429 and warn on stderr. Installing an OpenHarmony build waits as before
3.13.3, 3.9.0-0.1.pre and 3.17.0-0.0.pre are in the index two or three times for one file, with different checksums, and table.sort is not stable, so an old entry could win: checksum error on Linux The newest release_date of each archive of a version is kept, and the sort order is total
+ohos- tags (four releases since 2026-10-15) were ignored Listed and installable
A global core.autocrlf=true wrote CRLF into bin/internal/shared.sh of Linux ARM64 and OpenHarmony-on-Linux source installs: $'\r': command not found git.init sets core.autocrlf=false in the checkout
-arm64 source installs were offered for every release with an x64 build, but before 2.2.0 (Linux) and 3.44.0-0.1.pre (Windows) the release's own tool takes the x64 Dart SDK Offered from those releases on
vfox install flutter@latest installed the newest beta Stable releases sort before pre-releases
flutter does not support386architecture Spaces

Behavior changes to look at

  • vfox search lists the stable releases first, so flutter@latest is 3.47.7-x64 and not 3.50.0-0.1.pre-x64.
  • ARM64 source installs: Linux no longer offers 1.20.0 to 2.0.6 as -arm64, Windows no longer offers the releases before 3.44.0-0.1.pre. On Linux those could not run. On Windows this is a judgment call: they did run, with the x64 Dart SDK through Windows' emulation, under a name that says arm64. The -x64 archives are still there, but flutter@3.24.0 (no suffix) now needs flutter@3.24.0-x64 on Windows ARM64, as it already does on Apple silicon for old releases. To keep the old Windows behavior, drop the "windows/arm64" line of OLDEST_NATIVE in lib/source.lua.

Docs

  • README.md is the way in; docs/ has a page per subject (versions and names, channels, platforms, architecture selection, mirrors, OpenHarmony builds, flutter upgrade, troubleshooting, install from source, development, e2e, changes), in the style of vfox-java: exact messages, data with the day it was taken, a list of things that look wrong and are not.
  • Every page has a Chinese twin (README_CN.md, docs/zh-CN/) and a language switch line.
  • Behavior that is only on main is marked "Unreleased" / "未发布" and listed in docs/changes.md. After the next release, move those entries under the version and drop the marks: grep -rn -i -e unreleased -e 未发布 docs README*.
  • The commands and messages were run, not copied. Checked on the docs: relative links and anchors (the Chinese headings too), all 41 external links, and every English page against its Chinese twin (headings, code blocks, inline code, table rows, numbers).
  • Corrections to the existing pages: vfox info prints the directory above the SDK, so the .vfox-manifest is below it (flutter-upgrade.md); 2.10.0 is not a release without architecture metadata, 1.22.6 is, and the unverified claim that the Windows ARM64 -x64 archive cannot run is gone (arm64.md); the OpenHarmony list was three names, there are 25, and Flutter has no 3.41.10, 3.35.8, 3.27.5 or 3.22.4, so the fork is not "based on Flutter 3.41.10" (ohos.md).

Verification

  • tests/hooks_test.lua: 22 groups pass, 10 of them new. On the code of main, 9 of the new ones fail; the tenth guards the wait for installing an OpenHarmony build, which must stay.
  • stylua --check ., lua-language-server --check . --checklevel=Warning, the license header check (apache/skywalking-eyes:0.9.0), and gofmt, go vet and go test -short in tests/e2e pass.
  • Linux container e2e, official (3.47.4) and ohos (3.41.10-ohos-1.0.0) with the latest vfox: pass.
  • Real vfox, gitcode.com unreachable: an official install takes under 0.3 s (vfox 1.0.12 and 1.0.13), and with 1.0.13 a proxy that logs CONNECT saw no request to gitcode.com during it; vfox search returns after 2.1 s with the warning; latest installs 3.47.7-x64. 3.41.9+ohos-1.0.2 installs, lists, is used and uninstalled on live gitcode.com.
  • Real index: PreInstall picks the newest checksum for 3.13.3, 3.9.0-0.1.pre and 3.17.0-0.0.pre.
  • core.autocrlf: with the real global core.autocrlf=true, the checkout of the old code has CRLF in shared.sh, the new one has LF and flutter --version runs.
  • ARM64 boundaries: the bootstrap scripts of all 300 releases with an x64 build were classified (Linux: 283 pick the Linux zip by CPU, from 2.2.0; Windows: 148 mention ARM64, from 3.20.0-1.1.pre), the Dart SDK of each was looked up in Flutter's storage, and the Linux scripts of eight releases were run as an aarch64 machine: dart-sdk-linux-x64.zip up to 2.0.6, dart-sdk-linux-arm64.zip from 2.2.0.

Only CI can tell

  • Windows, macOS and real ARM64 hardware: this PR's ubuntu-26.04-arm, windows-latest and windows-11-arm jobs install 3.47.4 on them. The ARM64 ones are source installs, so they run core.autocrlf=false and the cutoff.
  • That core.autocrlf=false writes the same CRLF files as true on Windows (core.eol is native there) was checked on Linux with core.eol=crlf and Flutter's .gitattributes, not on Windows.
  • That an x64 Dart SDK does not run on an ARM64 Linux machine follows from the architecture and was not tried.

Squash merge is the only option here, so the PR title becomes the commit title.

Each was found by checking the docs against real runs of vfox (1.0.12 and
1.0.13) and the live Google, GitHub and gitcode.com endpoints, and the
fixes were checked against the same endpoints.

- Installing an official release asked gitcode.com for the OpenHarmony
  releases, because PreInstall calls Available. When gitcode.com rate
  limited its API (HTTP 429) the plugin waited 30, 60, 120 and 180
  seconds: `vfox search` took 392 s and `vfox install flutter@3.47.4`
  212 s, printing nothing. PreInstall now asks for the official releases
  only (ctx.officialOnly). Listing still asks gitcode.com, but with two
  attempts, no wait after a 429, and a warning on stderr when the list is
  missing. Installing an OpenHarmony build waits as before.
- The index lists 3.13.3, 3.9.0-0.1.pre and 3.17.0-0.0.pre two or three
  times for one file, and only the newest entry has the checksum of the
  file that is there now. Which entry won depended on the unstable
  table.sort, and `vfox install flutter@3.13.3` ended with `checksum
  error` on Linux. Keep the newest entry (release_date) of each archive
  of a version, and make the sort order total.
- OpenHarmony tags with `+ohos-` (3.41.9+ohos-1.0.2 and three more, from
  2026-10-15) were not recognized.
- A global core.autocrlf=true wrote Flutter's shell scripts with CRLF in
  source installs (Linux ARM64, OpenHarmony builds on Linux), and
  `flutter` stopped with `$'\r': command not found`. git.init sets
  core.autocrlf=false in the checkout.
- Linux ARM64 and Windows ARM64 offered an `-arm64` source install of
  every release with an x64 build. Before Flutter 2.2.0 (Linux) and
  3.44.0-0.1.pre (Windows) the release's own tool takes the x64 Dart SDK
  instead, which an ARM64 Linux machine does not run. Offer them from
  those releases on; the boundaries were checked for all 300 releases on
  2026-10-21.
- `vfox install flutter@latest` installed the newest beta
  (3.50.0-0.1.pre-x64) because the list was sorted by version number
  alone. Stable releases sort before pre-releases now.
- The message for an unsupported CPU had no spaces
  (`flutter does not support386architecture`).

tests/hooks_test.lua has a test for each; the core.autocrlf one runs real
git and skips itself without it.
README.md becomes the way in: a few sentences and a link for each
subject. The details are one page each in docs/ (versions and names,
channels, platforms, architecture selection, mirrors, OpenHarmony builds,
`flutter upgrade`, troubleshooting, install from source, development,
e2e, changes), in the style of version-fox/vfox-java: exact messages,
data with the day it was taken, and a list of things that look wrong and
are not.

Every page has a Chinese twin (README_CN.md, docs/zh-CN/) and a language
switch line. Behavior that only exists on main is marked "Unreleased" /
"未发布" and listed in docs/changes.md, to be moved under the version at
the next release.

The commands and messages were run against real vfox 1.0.12 and 1.0.13
with a fake mirror, and against the live Google, GitHub and gitcode.com
endpoints.

Corrections to the existing docs:
- flutter-upgrade.md: `vfox info` prints the directory above the SDK, so
  the .vfox-manifest is in flutter-<version>/ below it.
- arm64.md: 2.10.0 is not a release without architecture metadata, 1.22.6
  is; the unverified claim that the Windows ARM64 `-x64` archive cannot
  run is gone.
- ohos.md: the list of releases was three names, there are 25; Flutter
  has no 3.41.10, 3.35.8, 3.27.5 or 3.22.4, so the fork is not based on
  "Flutter 3.41.10".
@linghengqian linghengqian added bug Something isn't working documentation Improvements or additions to documentation labels Oct 20, 2026
@linghengqian
linghengqian marked this pull request as ready for review October 20, 2026 21:39
@linghengqian
linghengqian merged commit 57f1899 into main Oct 20, 2026
10 checks passed
@linghengqian
linghengqian deleted the docs-and-fixes branch October 20, 2026 21:39
linghengqian added a commit that referenced this pull request Oct 20, 2026
- changes.md (English and Chinese): the "Unreleased" entries are now
  0.2.5 (2026-10-21), each with its #50 link, and the intro names 0.2.5
  as the newest release.
- Take out the "Unreleased: release 0.2.4 ..." marks. The pages describe
  0.2.5; what older releases do stays in troubleshooting.md (as "update
  the plugin") and in changes.md.
- flutter-upgrade.md: `plugin_version` in the manifest sample is 0.2.5,
  checked by installing the released v0.2.5 plugin against a fake mirror.
- development.md: list the doc chores of a release, and how long the
  vfox-plugins registry took to follow the last three releases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant