Skip to content

Site and README: winget command, v0.5.1 facts, structured data, CSV task page - #46

Merged
abooodbah merged 4 commits into
mainfrom
seo-2026-11
Nov 8, 2026
Merged

abooodbah merged 4 commits into
mainfrom
seo-2026-11

Conversation

@abooodbah

@abooodbah abooodbah commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

This follows the LeanRows section (3.4) and the site and README checklists (4.1, 4.2) of the November discoverability research. It touches site/ and README.md only. No layout change, no new dependency, no build change.

What changed and why

  • winget community package. winget install abooodbah.LeanRows is now on the page (install block, before the Store line) and first under Install in the README (report 3.4 row 1, S1, R2). I checked microsoft/winget-pkgs: manifests/a/abooodbah/LeanRows holds 0.5.0 only, a zip with a nested portable leanrows.exe and the command alias leanrows. The wording says what that manifest does and nothing more.
  • One executable size. The site said 618 KB and the README 1,025 KB. I downloaded the v0.5.1 release with gh release download v0.5.1 and listed the zip: leanrows.exe is 1,024,512 bytes (zip 506,295 bytes). Both surfaces now say "1,024,512 bytes in v0.5.1" (3.4 row 2, S2, R4).
  • v0.5.1 where the page names the current download. The release note under the button, the "Before installing" eyebrow and the Get-FileHash file name now say v0.5.1, which is releases/latest. Text that describes the v0.5.0 interface and the v0.5.0 CI measurement is unchanged, because it is about that version.
  • Structured data (S3). softwareVersion 0.5.1. codeRepository removed (not a SoftwareApplication property) and replaced by sameAs: the GitHub repo, the Store page, the winget-pkgs folder and the Chocolatey package. Added screenshot (the 20 million row capture shown on the page), image (the social preview) and author.url (the hub). No aggregateRating or review.
  • Head and LCP (S6, S7). fetchpriority="high" on the 20 million row capture, the largest image on the page; it already had width, height and no lazy loading. Added <link rel="alternate" type="application/atom+xml"> to the releases feed.
  • Task page (S5, 3.4 "one page for every intent"). New plain HTML page site/open-csv-too-large-for-excel/index.html: the 1,048,576-row limit, then Power Query, splitting, DuckDB, Python, and a large-file viewer. LeanRows is the fifth option. Its numbers are the run already on the main page (20,000,001 rows, 1,532,454,643 bytes, 18.4 MB peak working set) and the two runs in docs/releases/v0.2.0.md, with the same note that the PC's hardware is not recorded. It names no other product and makes no comparison. It reuses styles.css; four new rules scoped to .task-copy set its heading sizes and width, so the main page is not affected. Linked from the first FAQ answer and the README.
  • Sitemap (S4). Lists the task page; lastmod 2026-11-08 for both URLs.
  • README (R1, R3). The bold lead now says the task first ("Open CSV files too big for Excel"), keeps the measured run, and adds .xlsx with "read-only, one sheet at a time". One badge line: winget version, GitHub release, license, total downloads (each badge URL returned an aria-label on 2026-11-07: winget v0.5.0, release v0.5.1, license MIT, downloads 237). The link line adds Releases and its Atom feed. Added the 0.5.1 release notes to the documentation list.
  • site/validate.mjs. Pins each item above: version 0.5.1, no codeRepository, no ratings, the three sameAs URLs, the screenshot, the winget line, fetchpriority, the feed link, the task-page link, the sitemap entry, and the task page's doctype, canonical, description, single h1 and local references. Folder links (open-csv-too-large-for-excel/) now resolve to their index.html in the existing local-reference check.

Checks run

Check main this branch
node site/validate.mjs passes passes
npx html-validate@9 on site/index.html 10 errors 10 errors (the same rules on the same elements: lowercase doctype, aria-label on <pre>/<div>, prefer-native-element on the format list; all pre-existing, not touched)
npx html-validate@9 on the task page n/a 0 errors
JSON-LD: JSON.parse plus a field check codeRepository present, no sameAs/screenshot parses; all S3 fields present; codeRepository, aggregateRating, review absent; 4 sameAs
npx linkinator@6 http://127.0.0.1:8722/ --recurse (shields skipped) n/a 25 links, 1 broken: the task page's own canonical URL on github.io, which returns 404 until this deploys
npx linkinator@6 README.md --markdown n/a 40 links, 1 broken: the same not-yet-deployed task page URL
Lighthouse 13.6.0, mobile, Edge headless, local http-server 4 runs on /: performance 89, 96, 96, 100; accessibility, best practices, SEO 100 in every run; LCP 0.9 to 1.2 s; CLS 0 3 runs on /: performance 87, 99, 100; accessibility, best practices, SEO 100 in every run; LCP 0.9 to 1.2 s; CLS 0. Task page, 1 run: 100 / 100 / 100 / 100

The performance score moves with total blocking time on this laptop (10 to 520 ms across runs of the same page), so the before and after ranges overlap and I do not claim a change from fetchpriority on localhost. LCP on localhost is the same either way.

Validator mutations, each reverted after: dropping fetchpriority, the winget line, the feed link, the task-page link or the sitemap entry, setting the version back to 0.5.0, or putting codeRepository back each makes validate.mjs fail with its own message.

Browser check: headless Edge full-page captures of / on main and on this branch at 1280x10000, compared pixel by pixel. The differences are the v0.5.0 to v0.5.1 text under the download button and the install block, which now has the winget paragraph and command above the Store line; nothing above or around them moved apart from the page growing by that block. The task page renders with the site header, fonts, colours and footer. At 375 px wide (browser pane, mobile preset) neither page scrolls sideways; on / the two long commands scroll inside their code boxes, as on main.

Left out, and why

  • The social preview image (assets/social-preview.png and its source in docs/images/social-preview-source/) still says "One 618 KB exe". Regenerating the image is outside a safe same-day change; it should be rebuilt with the 1,024,512-byte figure.
  • The benchmark re-run on the current release with the machine named (report 3.4). It needs a measured run; I did not invent or carry over numbers.
  • The 18.4 MB run's version is not recorded in the repo, so the README lead keeps it without a version.
  • A README "Questions" section (optional in the report) and repository topics xlsx, excel (a repo setting).
  • A check in validate.mjs that the JSON-LD version equals the latest release tag needs network access in CI; the version is pinned by hand instead, as before.

Left for the owner or orchestrator

  • Hub site: the LeanRows winget line and the other hub items (3.1).
  • winget 0.5.1 manifest (PR in review) and its tags; Chocolatey is at 0.4.0, 0.5.1 to push.
  • After deploy: Search Console URL Inspection and "Request indexing" for /leanrows/ and /leanrows/open-csv-too-large-for-excel/; Bing submission or IndexNow if wanted; re-run linkinator against github.io to clear the one expected 404.
  • Repo topics xlsx and excel; keyword-first first line in the next release notes.

Deploy and rollback

Merging into main changes site/**, so pages.yml redeploys the site; windows.yml runs validate.mjs again on push. Rollback is a revert of this PR, which redeploys the previous page.

Plain HTML at site/open-csv-too-large-for-excel/ with the common options
(Power Query, splitting, DuckDB, Python, a large-file viewer). LeanRows
numbers are the measured run already on the main page. Listed in the
sitemap; lastmod set to 2026-11-08 for both pages.
- winget install abooodbah.LeanRows next to the Store and Chocolatey lines
- v0.5.1 in the download note and checksum command
- executable size from the v0.5.1 release ZIP: 1,024,512 bytes
- JSON-LD: version 0.5.1, sameAs instead of codeRepository, screenshot,
  image, author url
- fetchpriority=high on the 20 million row capture, releases feed link
- FAQ links the new task page; validate.mjs pins each of these
- lead names the task, the measured run and .xlsx support
- badge line: winget, release, license, downloads
- links the releases page and its Atom feed
- winget install abooodbah.LeanRows first in Install
- executable size 1,024,512 bytes (v0.5.1), matching the site
- links the new task page and the 0.5.1 release notes
The task page uses an uppercase DOCTYPE and the new winget block drops its
aria-label, so the change adds no html-validate findings.
@abooodbah
abooodbah merged commit 91a063d into main Nov 8, 2026
4 checks passed
@abooodbah
abooodbah deleted the seo-2026-11 branch November 8, 2026 05:14
@abooodbah abooodbah mentioned this pull request Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant