Commit Graph
172 Commits
Author SHA1 Message Date
Vinta ChenandClaude 540bb66ed6 style: tighten the gaps between a row's name, description, and links
An open row put about 38px between the project name and its description and 10px before its links, and category rows put 26px between name and description, because .table tbody td overrode the zero top padding meant for description and expand rows. The top gap is now about 2px larger than the bottom one, since the bold name's descenders make an equal gap look smaller.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 23:28:59 +08:00
Vinta ChenandClaude f171784d4f style: give an open row and its expand row one flat background
Each row restarted its own gradient, so the darker bottom of the open row met the lighter top of its expand row and read as a faint border between them.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 23:18:52 +08:00
Vinta ChenandClaude 6e9dc809af fix: drop plural and sort/search hints on single-project category pages
Pages with one project read "Search 1 projects" and told readers to re-sort or search a one-row table.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 23:12:13 +08:00
Vinta ChenandClaude e51b74c03d fix: show months instead of 0 years for dates under a year old
Commit dates 360-364 days old rendered as "0 years ago".

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 22:32:35 +08:00
Vinta ChenandClaude 60d6cd8dd6 style: align sponsor link with its label in the stacked sponsor band
Below 960px the -1rem top margin on the sponsor link, meant for the side-by-side desktop layout, pulled the sponsor name closer to the link than the link sat to its own label, so the link read as part of the sponsor entry.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 20:37:51 +08:00
Vinta ChenandClaude 11b72122c5 feat: drop the build date stat from the hero stats lines
The hero "Updated on" stat only restated when the site was last built.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 20:21:48 +08:00
Vinta ChenandClaude 28b03ce6b7 fix: stack hero stats on phones instead of running them together
On phones the hero stats ran together as one sentence, breaking wherever space ran out and leaving a "/" dangling at a line end.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 20:17:42 +08:00
Vinta ChenandClaude 9d4f372a79 fix: shorten sponsorship email buttons and break address only after @
At phone width the two primary buttons labelled with the full address wrapped over three lines, and the address in the Get started sentence broke at its hyphen.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 20:09:39 +08:00
Vinta ChenandClaude 7516a5c4f6 fix: keep each hero stat on one line and read "Updated on"
On phones the ISO date in the hero stat broke at its hyphen.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 20:03:15 +08:00
Vinta ChenandClaude 82320c9d23 fix: remove animated sheen from hero background
On narrow phone heroes the sheen, a diagonal light stripe sliding across for 54s after load, rendered as a near-vertical band sweeping sideways that read as a loading or progress bar.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 19:57:47 +08:00
Vinta ChenandClaude 19a619ebbb fix: size the home hero to its content height
The home hero was forced to the full viewport height, opening an empty band between the top bar and the headline whenever its content was shorter than the window and pushing the project table down.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 16:42:35 +08:00
Vinta ChenandClaude 15843ae568 fix: use the shared accent focus outline on more links
Sponsorship-page, sponsor band, category, group-page lead, and home hero links fell back to the browser's default focus ring.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 16:36:33 +08:00
Vinta ChenandClaude cf804b5f78 fix: shorten the search placeholder on phones
The full placeholder was cut off on narrow screens, e.g. "Search 529 projects across 74".

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 16:36:33 +08:00
Vinta ChenandClaude 85912280e2 style: enlarge back-to-top tap target to 37x36px
The table header's back-to-top button had a 37x20px tap target, below the WCAG 2.2 minimum of 24x24px.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 16:26:27 +08:00
Vinta ChenandClaude 766bff0c08 style: set sponsor band apart from the search section and mark names as outbound links
The sponsor band's background faded from --bg-paper-strong to --bg-paper, ending lighter than the page below it, with only a faint bottom border, so the band blended into the search section and read as its intro rather than a sponsor placement; the sponsor name also gave no cue that it links out.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 16:22:57 +08:00
Vinta ChenandClaude 2c0145fbbc style: wrap tier billing line under price and keep amounts with units
The longer billing lines added with the annual prices broke across two or three lines beside the price and split amounts from their units.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:51:43 +08:00
Vinta ChenandClaude 9b43e6e337 fix: collapse home hero category list into a disclosure on phones
On phones the hero's 74-link category grid was 1,236px tall and pushed the project table down to 2,583px, over three screens.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:36 +08:00
Vinta ChenandClaude 5f2bff2845 fix: show Downloads instead of Stars on narrow screens
Below 960px the table hid the PyPI Downloads column but kept the default downloads sort, so the visible Stars column looked unsorted and the active sort header was not shown or tappable.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:36 +08:00
Vinta ChenandClaude f45997e386 fix: draw one focus outline on a focused table row
Keyboard focus on a table row drew one box per cell, because the focused row fell back to the browser's default outline and each cell also got an inset accent stripe on its left edge.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:35 +08:00
Vinta ChenandClaude 94126bc6bc style: tighten sponsorship hero kicker spacing
The sponsorship hero kicker sat farther above the heading than the heading sat above its subtitle, so the label read as detached from the heading it labels.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:35 +08:00
Vinta ChenandClaude af4f4f8d2f fix: scale category subtitle margin with the hero heading
The subtitle's fixed top margin did not grow with the fluid h1, so heading descenders crowded the subtitle on category and sponsorship heroes.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:35 +08:00
Vinta ChenandClaude 537aff4a46 style: set sponsorship ledes in Manrope and stack past sponsor names above descriptions
The sponsorship ledes were set in Cormorant Garamond, whose short x-height and thin strokes read poorly across a paragraph, and past sponsor names shared a baseline with Manrope descriptions, where the mismatched x-heights clash.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:35 +08:00
Vinta ChenandClaude b3b3bc202f style: raise tier eyebrow and fact labels to text-sm
On the sponsorship page the tier names and fact labels rendered smaller than the "/ month" cadence beneath them, inverting the hierarchy.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:19 +08:00
Vinta ChenandClaude ede39d7ad1 style: round ad-hoc font sizes into scale tokens
Roughly 20 ad-hoc font-size values rendered near-duplicate sizes 1-2px apart, reading as noise rather than hierarchy, and .hero-category-link rendered below the documented 12px floor.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:19 +08:00
Vinta ChenandClaude a1f29c58f7 fix: use lining figures for tier prices
Sponsorship tier prices rendered in Cormorant Garamond's default old-style figures, so zeros sat at x-height and the 5 dropped below the baseline, making "$500" hard to read.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 15:49:19 +08:00
Vinta ChenandClaude 7e6baa968b feat(website): send a GA4 event on sponsorship email clicks
Mailto clicks on the sponsorship page leave no page view, so the sponsor funnel ended at the sponsorship page and never showed who went on to email. Each click now sends a sponsor_contact event with a short tier value (headline, featured, indie, or general) rather than the link URL, since GA4 caps event parameter values at 100 characters and the Indie Dev mailto href is 101.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-21 09:09:21 +08:00
Vinta ChenandGitHub 3e8c86bac6 Merge pull request #3376 from Aurantium-47/codex/preserve-keyboard-link-navigation
fix(website): preserve keyboard link activation in project rows
2026-10-17 16:58:56 +08:00
Vinta ChenandClaude 1ebff58bf9 feat: link category intro picks to their table rows
Picks in a "How to choose" list were plain text, so a reader had to hunt for the tool's row in the table.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-16 19:45:38 +08:00
AurantiumandGitHub 1f880e070f fix(website): preserve keyboard link activation in project rows
Skip anchors in the delegated row key handler, matching the click handler.

Assisted-by: OpenAI Codex <noreply@openai.com>
2026-10-15 03:57:39 -07:00
Vinta ChenandClaude 9bfb413748 fix: remove hero fade-in animation that delayed LCP
The hero-rise fade-in started .hero-copy, which holds the LCP <h1>, at opacity 0, and Chrome ignores opacity-0 paints for LCP, delaying it by about 455 ms.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-15 12:43:11 +08:00
Vinta ChenandClaude 41d045e1db style: remove max-width from .results-note
`.results-note` carried an inner `max-width: 28rem`, which breaks the rule that `.section-shell` is the only width cap.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-11 09:53:47 +08:00
Vinta ChenandClaude c16dae14ef feat: show section intro lead on group pages
Group pages showed only tables, so visitors arriving from broad searches like "python ml library" got none of the which-one-to-pick guidance that each section's intro already gives.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-02 19:35:04 +08:00
Vinta ChenandClaude b6748825e6 style: give inline code in intros a chip appearance
Inline code in category intros and guides inherited the body font with no background, so identifiers like INSTALLED_APPS read as ordinary words.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 15:19:27 +08:00
Vinta ChenandClaude 0abd19a99c fix: number rows in sorted order after a column sort
applyFilters walked the static load-order NodeList, so after sorting by a column header, row numbers kept each row's original load-order position instead of counting 1..n down the sorted table.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 14:48:02 +08:00
Vinta ChenandClaude 77b1b70df5 fix: hide use-case and page tags that repeat the group heading
On section and subcategory pages, every row repeated its use case and current page as tags (and as the label under the name on phones), right under a heading that already said the same thing. They are now hidden in editorial order and shown again when a column sort flattens the groups.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:05:18 +08:00
Vinta ChenandClaude ef00fe3adb fix: restore hidden group headings when navigating to a jump link
After sorting by a column, or while a search hid a group, category page group headings stayed hidden, so the header's jump links (and any use-case heading link) pointed at a hidden element and did nothing.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:04:41 +08:00
Vinta ChenandClaude 62a4e7c4e5 fix: make tags link to category pages instead of filtering in place
Clicking a category or group tag filtered the homepage table in place while rewriting the address bar to the category URL, so one URL rendered two different pages and readers never reached category pages with their intros and guides; category pages also showed a redundant self-referential filter bar.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:34:07 +08:00
Vinta ChenandClaude 2b9469c0ae feat: group category page rows by use case, restructure intro
Category pages sorted rows by downloads, which buried editorial leads (the Django ORM showed as row 7 of 7, tkinter as 14 of 14) against CONTRIBUTING.md's "position is the marker"; the full intro in the hero pushed the table 2.5 screens down on a phone; and every page repeated the same "Search every project in one place" H2.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 23:33:57 +08:00
Vinta ChenandClaude a74ca52860 feat: render per-category intro text above the entry list
Category pages carried no text of their own beyond the README one-line description, and most meta descriptions fell back to a generic "Explore N curated Python projects" line, which correlated with weak search rankings for category queries. This adds optional per-category intro markdown files rendered under the H1, with the first paragraph used as the meta description and links opening in a new tab, starting with the ORM category.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 19:42:22 +08:00
Vinta ChenandClaude 4fc35351b2 docs: update og-image wordings to match current site copy
Kicker now mirrors the hero kicker ("The definitive list that
answers..."), replacing the old "field guide" line changed in
8b14b4f. Subtitle now matches the current tagline ("An opinionated
guide to the best Python frameworks, libraries, and tools.") on one
line. PNG regenerated from the SVG.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 20:31:39 +08:00
Vinta Chen 8b14b4fd1e update styles 2026-08-16 20:25:19 +08:00
Vinta ChenandClaude d3fec1f7fa feat: default-sort the website table by downloads per month
Entries with a download count now sort first (descending), with
stars, then Built-in, then name as fallback tiers for entries that
lack a count. main.js mirrors this in its default activeSort, clean
URL check, and third-click reset target. Sorting by stars remains one
header click away.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 19:15:21 +08:00
Vinta ChenandClaude cc804b1de2 feat: add Downloads/Month column to website table
Sourced from website/data/pypi_downloads.tsv the same way
github_stars.json feeds the stars column. The new sortable column
sits between GitHub Stars and Last Commit on the homepage and
category pages, formatted with thousands separators like stars, with
an em dash when no PyPI data exists. Rows are matched by normalized
README display name; Built-in entries never show counts since
same-named PyPI packages are stdlib backports (e.g. the asyncio
package).

Below 960px the column hides and the count moves into the expand
row, mirroring the existing Last Commit treatment. main.js gains the
downloads sort branch and URL param.

The deploy workflow fetches the TSV via the new
make fetch_pypi_downloads target with a daily actions/cache
fallback, mirroring the stars fetch, but non-fatal: the column
degrades to dashes when the fetch fails, unlike stars which the
build requires.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 17:52:04 +08:00
Vinta Chen c0b80fd75f fix: surface sponsorship link in header 2026-06-07 03:22:28 +08:00
Vinta Chen ee08cd7d86 update sponsorship webpage 2026-06-07 02:50:19 +08:00
Vinta ChenandClaude 138059feeb feat(website): add Awesome Python and Sponsorship links to footer
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 19:05:40 +08:00
Vinta ChenandClaude f57fc44295 style: bump tag font size to var(--text-xs) and codify 12px minimum font-size rule
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 18:54:23 +08:00
Vinta ChenandClaude 9de86ea785 feat(website): append #library-index to tag links on non-index pages
Tag clicks on category/other pages now land with the results section
scrolled into view.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 18:45:09 +08:00
Vinta ChenandClaude fc8d1ba35e feat(website): show desc-row on index page when a filter is active
On category pages desc-rows are always visible. On the index page they
were always hidden. Now they become visible whenever a tag/category
filter is applied, giving filtered results the same richness as category
pages.

Also tightens two related CSS rules: border-bottom suppression only
fires when the adjacent desc-row is actually visible, and the expand-row
description is hidden while the desc-row is already showing to avoid
duplicate text.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 13:08:27 +08:00
Vinta ChenandClaude 1468ae78ff feat(website): show project description as always-visible desc-row on category pages
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 12:47:17 +08:00