Commit Graph
100 Commits
Author SHA1 Message Date
Vinta Chen 5f725c25d7 use sponsorship@awesome-python.com as contact
Deploy Website / deploy (push) Has been cancelled
CI / test (push) Has been cancelled
2026-05-07 21:14:26 +08:00
Vinta Chen 10c06fb26d add category links in llms.txt 2026-05-07 20:00:56 +08:00
Vinta Chen 50d382a5c8 use https 2026-05-07 17:28:40 +08:00
Vinta Chen 0f5085cbdf Merge pull request #3110 from Bortlesboat/codex/use-https-json-schema-link
Use HTTPS for JSON Schema link
2026-05-07 17:27:16 +08:00
Vinta Chen 6c18b6447e feat: use explicit Projects section in README
Deploy Website / deploy (push) Has been cancelled
CI / test (push) Has been cancelled
2026-05-04 21:24:57 +08:00
Vinta Chen 921d47b455 remove index.md 2026-05-04 17:11:34 +08:00
Vinta Chen 3510db9df9 update llms.txt 2026-05-04 17:05:05 +08:00
Vinta Chen 509ebaff7a use file modification time as lastmod in sitemap 2026-05-04 16:24:52 +08:00
Vinta ChenandClaude 82437475ad docs(DESIGN.md): align with actual CSS
Deploy Website / deploy (push) Has been cancelled
CI / test (push) Has been cancelled
- Expand --bg-page surface entry to document the vertical gradient
  (--bg-page-top, --bg-page, --bg-page-end) and top-left radial highlight
- Add --hero-bg-mid to the hero gradient token description
- Clarify non-interactive element token usage: ink tokens on --bg-paper-strong
  or --bg-paper; call out specific .source-badge and .sponsorship-body code rules
- Replace vague 1px shadow rule with the two allowed depth treatments:
  search inset/shadow and primary CTA shadow
- Correct 0.4rem radius callout from 'expand-row' to '.sponsorship-body code'
- Update hero gradient in Depth section to include --hero-bg-mid
- Update .tag hover description: --highlight bg, --tag-hover-border border,
  ink text; active state adds hero-ink text; rename variants to tag-group/tag-source
- Update Source badge / inline code component entry to reflect --ink-soft vs --ink
- Tighten Iteration Guide audit items 2 and 3 to match the above

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 21:20:25 +08:00
Vinta ChenandClaude 7640a32904 docs(DESIGN.md): add flexbox/grid layout rule
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 21:16:20 +08:00
Vinta Chen dc19f2d5cd fix formatting 2026-05-03 21:16:00 +08:00
Vinta ChenandClaude 83bab2cab6 docs(DESIGN.md): add YAML frontmatter, hex approximations, typography table, and Iteration Guide
- Add YAML frontmatter with version, name, and description
- Annotate each color token with approximate hex sRGB equivalent
- Replace bullet-list type scale with a structured typography table
- Add Iteration Guide section with six-step post-generation audit checklist
- Add Known Gaps section documenting color format, frontmatter scope, and spacing scale

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 21:12:05 +08:00
Vinta ChenandClaude db18ff4d40 docs(design): restructure DESIGN.md to follow Google Stitch format
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 20:39:37 +08:00
Vinta ChenandClaude 9379e0a42c style(sitemap): pretty-print generated sitemap.xml with 2-space indent
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 20:16:13 +08:00
Vinta Chen a9a58ce06b Merge pull request #3107 from vinta/chore/refine-ui
chore: refine UI, add JSON-LD, polish category SEO
2026-05-03 20:13:14 +08:00
Vinta ChenandClaude 28b61a9212 style(seo): switch category page title separator from pipe to hyphen
Google truncates pipe separators and treats hyphens as cleaner word
boundaries in SERP titles.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 20:03:29 +08:00
Vinta ChenandClaude c886e470b6 feat(website): lead category meta description with real description when present, count first as fallback
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 19:57:31 +08:00
Vinta ChenandClaude 2f398acefb fix(seo): align JSON-LD with Yoast/RankMath conventions
- Wrap category pages in a self-contained @graph (WebSite + CollectionPage)
- Set canonical @id on CollectionPage to its URL (no hash fragment)
- Expand isPartOf to typed object {"@type": "WebSite", "@id": ...}
- Extract _website_node() and ISPARTOF_WEBSITE constants to avoid repetition
- Update tests to assert @graph structure on category pages

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 19:31:14 +08:00
Vinta ChenandClaude 86d2aa7e01 feat(website): add CollectionPage JSON-LD to category, group, and subcategory pages
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 19:23:14 +08:00
Vinta ChenandClaude b2910d59c8 feat(website): add homepage JSON-LD with WebSite, CollectionPage, ItemList for SEO/AEO
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 19:18:15 +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 f3f92c691a feat(website): render subcategory, group, and source tags as anchor elements
Convert <button> tags for subcategory, group, and source filters to <a>
elements with href attributes so browsers surface URL preview on hover,
support open-in-new-tab, and allow middle-click navigation.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 18:49:34 +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 Chen 1afccd8bc9 update description for curses 2026-05-03 12:53:56 +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
Vinta Chen d7a916837c Merge pull request #3106 from vinta/feature/better-seo-2
Static category pages and path-based filter URLs
2026-05-03 12:38:12 +08:00
Vinta ChenandClaude 0c20fee458 build: add ty config and reorder tool sections in pyproject.toml
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 12:34:33 +08:00
Vinta ChenandClaude 3d99f7336d style(website): apply ruff format
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 12:23:55 +08:00
Vinta ChenandClaude 432a1f4b71 build: add lint, format, typecheck make targets and ty dependency
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 12:23:37 +08:00
Vinta ChenandClaude d3f35a9d21 test(website): remove redundant and brittle tests
Drops tests that either duplicate coverage already provided by adjacent
cases (single-word slugify, trailing-slash checks) or hard-code first-
category names and specific description strings that break whenever the
README content shifts.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 12:19:32 +08:00
Vinta Chen a068219684 fix(website): type build template entries 2026-05-03 12:08:41 +08:00
Vinta ChenandClaude 38b54caabb fix(website): trim sponsorship page nav and hero stats
Remove the 'All projects' nav link and total_entries hero stat from the
sponsorship page. Rename 'View the repository' CTA to 'View on GitHub'.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 11:45:07 +08:00
Vinta ChenandClaude ee01a0bade refactor(website): extract render_category, replace slugify filter with filter_urls map
- Extract render_category() helper to deduplicate the three category/group/builtin
  rendering blocks in build.py
- Replace synthetic dict literals with synthetic_category() helper
- Rewrite subcategory rendering to avoid O(n²) loop using precomputed dicts
- Pass filter_urls (not just JSON) to templates so Jinja can look up group URLs
  directly instead of applying the slugify filter at render time
- Remove slugify from env.filters (no longer used in templates)
- Replace isIndexPage() wrapper with isIndexDocument constant in main.js
- Fix: call applyFilters() on page load when activeFilter is set
- Remove dead else branch in tag click handler (category pages with no URL)
- Switch .hero-category-links from CSS columns to CSS grid for more even layout
- Remove max-width cap on .category-subtitle

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 11:38:22 +08:00
Vinta ChenandClaude 8a32d27ef5 fix(website): tighten sponsorship page copy for clarity
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 09:46:50 +08:00
Vinta Chen 40913c3df3 fix double quotes 2026-05-03 09:38:28 +08:00
Vinta ChenandClaude c68b985d7c feat(website): add /sponsorship/ landing page
Adds a dedicated sponsorship page at /sponsorship/ built from the Jinja2
template, with hero stats, tier cards, and CSS. Updates the index.html
sponsor sidebar link to point to /sponsorship/ instead of the GitHub
SPONSORSHIP.md. Adds the URL to the sitemap and test fixtures.

Also renames .impeccable.md to DESIGN.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 09:35:39 +08:00
Vinta ChenandClaude 64781112d8 feat(website): add Browse by category nav to group page hero
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 09:08:37 +08:00
Vinta ChenandClaude b82a254a09 fix(website): clear filter lands at /#library-index on category pages
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 09:03:25 +08:00
Vinta ChenandClaude 70a8255289 feat(website): add /categories/built-in/ page for Built-in tag filter
Register Built-in as a navigable filter path alongside regular category
and group slugs, emit the page during build, add it to the sitemap, and
wire the Built-in tag buttons in index.html and category.html to navigate
there via data-url.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 08:35:55 +08:00
Vinta ChenandClaude d64b47b910 feat(website): mirror index layout on category pages
Add search input, filter chips, no-results block, and back-to-top
button to category/group/subcategory pages. Pass filter_urls_json to
all page types so tag-chip navigation works site-wide. Fix JS so
filter-clear and no-results-clear redirect to / on non-index pages
instead of trying to filter a non-existent local table. Remove the
now-redundant .category-results CSS overrides.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 08:26:37 +08:00
Vinta ChenandClaude 033694204c feat(website): move descriptions into expand row on category pages
Removes inline .category-row-desc from the name cell and renders
entry.description inside .expand-content instead, matching the
index page pattern. Drops the now-unused CSS rules for
.category-row-desc and the overridden .category-table .expand-content
padding.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 08:17:17 +08:00
Vinta Chen 03db91bcd0 style(website): left-align results note on category pages
Switch justify-self from end to start so the "Sorted by GitHub stars..."
note sits flush left under the heading instead of right-aligned.
2026-05-03 08:02:39 +08:00
Vinta Chen 1139402838 fix(website): stop category-page heading from wrapping
The results-intro grid (1fr + 28rem note column) squeezed the heading on
category pages with long names, e.g. "Python Projects in Environment
Management" wrapped onto two lines.

Scope a single-column override to .category-results so the heading takes
the full row and the note drops below right-aligned. Index page layout
is untouched since its heading is short.
2026-05-03 08:01:37 +08:00
Vinta Chen 8e72e8af8f feat(website): strip #library-index from URL after All projects click
The "All projects" link in the category-page topbar pointed to
/#library-index so the browser would scroll to the library section on
arrival. The hash stayed in the URL, which looked like an internal anchor
state rather than a clean homepage URL.

On homepage load, if the hash is #library-index, scroll to the section
explicitly and use history.replaceState to drop the hash from the URL.
The scrollIntoView call covers the case where the script runs before the
browser's native anchor scroll, since replaceState removes the hash the
browser would have used.
2026-05-03 07:56:54 +08:00
Vinta Chen 8e00055c8c fix(website): remove duplicate tag on group/category pages
The category template rendered a tag for `category.name` plus a tag for
`entry.groups[0]`, which duplicated the group name on group pages where
those values are identical (e.g. /categories/python-language/ showing
"Python Language" twice). It also never rendered `entry.categories`, so
group pages omitted each project's actual category.

Mirror the index template's tag rendering on category, group, and
subcategory pages, and mark whichever tag matches the current page URL
as active. Pass `category_urls` and `current_path` to each render call
so the template can match by URL.
2026-05-03 07:51:39 +08:00
Vinta ChenandClaude Opus 4.7 b0136ac266 feat(website): switch index filter URLs from querystring to path
Tag clicks on / pushState a category/group/subcategory path; on static
pages they fully navigate. Search and sort stay in querystring. Built-in
source tag has no data-url and stays as an in-page filter. The
isIndexDocument flag is captured at load time so toggling on the index
keeps working after pushState changes location.pathname.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:49:41 +08:00
Vinta ChenandClaude Opus 4.7 04a04a136b feat(website): add data-url to tag buttons for client-side routing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:44:43 +08:00
Vinta ChenandClaude Opus 4.7 704332271b fix(website): escape </script> in embedded filter URLs JSON
`| safe` bypasses Jinja autoescape. If a category name ever contained
"</script>", the literal substring would close the script block early,
leaking JSON content into the DOM and creating an XSS vector. Replace
"</" with "<\\/" (still valid JSON) and pass ensure_ascii=False so
non-ASCII names render readably. Also add a group_path() helper to
parallel category_path()/subcategory_path() and reuse category_urls
when seeding filter_urls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:40:52 +08:00
Vinta ChenandClaude e0e7fc9168 feat(website): embed filter-to-url map in index for client routing
Adds filter_urls dict (categories, groups, subcategories) in build.py,
passes filter_urls_json to the template, and injects a JSON script block
before the results section in index.html. Covered by a new test that
verifies all three URL types are present and correctly resolved.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:36:41 +08:00
Vinta ChenandClaude Opus 4.7 e320ba7278 test(website): restore exact sitemap URL list and lastmod count check
Membership-only assertions wouldn't catch phantom URLs added by future
build changes. Tighten back to an exact-list assertion now that we know
the fixture's exact output, and assert lastmod count tracks loc count.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:35:11 +08:00
Vinta ChenandClaude fe7fd35e18 feat(website): include group and subcategory URLs in sitemap
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:32:21 +08:00
Vinta ChenandClaude Opus 4.7 20df47e1e9 style(website): add CSS for category-breadcrumb and assert absence on parent
Mirrors the .category-subtitle a underline style for visual cohesion in
the hero, and locks in the gating behavior with a negative assertion so
a regression that drops the page_kind guard would be caught.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:30:56 +08:00
Vinta ChenandClaude 03702231af feat(website): show parent category breadcrumb on subcategory pages
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:27:22 +08:00
Vinta ChenandClaude Opus 4.7 6bc9d83480 refactor(website): match subcategory by URL prefix instead of name split
Use the precomputed sub["url"] to identify which subcategories belong
to a category. Avoids parsing the "Cat > Sub" value string, which would
silently misfire if a category name ever contained " > ".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:26:12 +08:00
Vinta ChenandClaude eeecacc3bd feat(website): generate static pages for subcategories
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:23:14 +08:00
Vinta ChenandClaude 532d93d436 feat(website): generate static pages for groups under /categories/
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:19:14 +08:00
Vinta ChenandClaude Opus 4.7 cee1e65fb3 test(website): hoist pytest import to module level
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:17:53 +08:00
Vinta ChenandClaude Opus 4.7 583d5e7c51 feat(website): assert unique slugs across categories and groups
Categories and groups will share the /categories/ URL namespace.
Fail the build with a clear error message if a future README change
introduces a collision.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:15:25 +08:00
Vinta ChenandClaude Opus 4.7 a46b57e428 fix(readme): rename group "Miscellaneous" to "Other"
Avoids a slug collision between the group "Miscellaneous" and the
category of the same name once both share the /categories/ URL
namespace introduced in the upcoming filter-URL refactor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:15:19 +08:00
Vinta ChenandClaude 39d4b3db4b feat(website): add subcategory_path and subcategory_public_url helpers
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:08:04 +08:00
Vinta ChenandClaude 4005c2ea82 feat(website): add slug and url to subcategory entries
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:05:02 +08:00
Vinta Chen 7fadbaf6fe feat(website): add homepage category directory 2026-05-02 23:44:27 +08:00
Vinta Chen b00395a301 add missing links of category descriptions 2026-05-02 23:35:24 +08:00
Vinta Chen c98cbe2cb1 style(website): clarify category section heading 2026-05-02 23:31:34 +08:00
Vinta Chen e11afd1730 feat(website): generate static category pages 2026-05-02 23:31:08 +08:00
Vinta ChenandClaude 429c9b3d12 feat: generate llms.txt from template and annotate entries with star counts
Deploy Website / deploy (push) Has been cancelled
CI / test (push) Has been cancelled
- Add llms.txt Jinja2 template with a categories_md placeholder
- Extract categories body from README and inject it into the template
- Annotate bullet-entry lines with GitHub star counts (N GitHub stars)
  for the main index.md and bare numbers for llms.txt
- Add TestAnnotateEntriesWithStars unit tests

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-02 02:32:18 +08:00
Vinta ChenandClaude d9f26a8635 Improve SEO/AEO discovery surface for awesome-python.com (#3103)
* update gitignore

* feat: tighten homepage metadata

* fix: trim generated HTML whitespace

* feat(website): add discovery files and markdown alternate

* feat(website): add sitemap lastmod

* feat(seo): add Content-Signal directive to robots.txt

Signals search, ai-input, and ai-train to crawlers
via the experimental Content-Signal header in robots.txt.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-02 01:53:19 +08:00
Vinta Chen ccd4fb7591 List https://github.com/wsvincent/awesome-django instead 2026-05-01 23:13:58 +08:00
Vinta Chen 42a04dcd55 add awesome-pytest under pytest 2026-05-01 23:08:39 +08:00
Vinta Chen aa25d61e29 add also see awesome-python-testing to Testing 2026-05-01 23:07:03 +08:00
Vinta Chen 9ac5e6ba98 fix description 2026-04-22 03:50:02 +08:00
Vinta Chen 976ae9420c replace pyre-check with pyrefly 2026-04-22 03:49:01 +08:00
Vinta ChenandClaude 0bf9522e5d chore: add uv supply-chain hardening and enforce locked installs
- Set exclude-newer to 3 days and only-binary/:all: in pyproject.toml to
  limit dependency freshness window and block source builds
- Switch uv sync to --locked in Makefile, ci.yml, and deploy-website.yml
  to enforce the lockfile rather than re-resolving on each install
- Regenerate uv.lock with exclude-newer snapshot recorded

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-22 02:21:48 +08:00
Vinta ChenandClaude 99d883c00d docs(ai-agents): add skills-curated link to trailofbits-skills entry
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-22 01:16:33 +08:00
Vinta ChenandClaude 79d60b8d67 docs(contributing): tighten rising star and minimum age thresholds
- Rising Star: reduce star-growth window from 2 years to 1 year
- Hidden Gem: reduce minimum repo age from 6 months to 3 months
- Rejection rule: reduce minimum repo age from 3 months to 1 month

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-22 01:03:33 +08:00
Vinta ChenandClaude Opus 4.7 4fb6c405bd docs: reference SPONSORSHIP.md in Structure section
Note the editorial-independence policy so sponsor placements are never conflated with curated listings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 01:02:51 +08:00
Vinta ChenandClaude Opus 4.7 935a83b63c docs: drop duplicate Entry Format block from CLAUDE.md
Entry Guidelines already defers to CONTRIBUTING.md, so keeping a parallel Entry Format section here creates drift risk (and the placeholder text was already inconsistent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 01:00:40 +08:00
Vinta ChenandClaude Opus 4.7 4e85b22d11 docs: apply entry rules to direct commits too
Rename PR Review Guidelines to Entry Guidelines and clarify that CONTRIBUTING.md rules apply to any entry addition or removal, not just PR reviews.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:56:41 +08:00
Vinta ChenandClaude Opus 4.7 e153f10561 docs: add commit granularity rule for entry changes
One entry per commit when adding or deleting, but format or wording changes across entries can be bundled.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:29:24 +08:00
Vinta ChenandClaude Opus 4.7 4fbe137d45 Add openai-whisper to AI and Agents > Speech
OpenAI's industry-standard ASR model (98k stars, MIT).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:27:29 +08:00
Vinta ChenandClaude Opus 4.7 2067733023 Move speech models into new Speech subcategory
Split vibevoice and voxcpm out of Pre-trained Models and Inference (which now skews to LLMs and diffusion) into a dedicated Speech subcategory to make room for TTS/ASR growth.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:27:20 +08:00
Vinta ChenandClaude Opus 4.7 0235970e94 Add vibevoice to AI and Agents > Pre-trained Models and Inference
Microsoft's open-source voice AI family (TTS + ASR) with 40k stars, ICLR 2026 Oral, and ASR integrated into Hugging Face Transformers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:25:07 +08:00
Vinta ChenandClaude Opus 4.7 c08b1235ac Move voxcpm to AI and Agents > Pre-trained Models and Inference
It is a pretrained neural TTS foundation model, not an audio manipulation library, so it fits better alongside transformers, diffusers, and vllm.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:24:14 +08:00
Vinta ChenandClaude Opus 4.7 94fe9b3aca Add voxcpm to Audio & Video Processing > Audio
OpenBMB's tokenizer-free TTS with multilingual voice design and cloning (15k stars, Apache 2.0).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:21:51 +08:00
Vinta ChenandClaude Opus 4.7 b4c55978a0 Add mlx-lm to AI and Agents > Pre-trained Models and Inference
Apple's ml-explore team library for running and fine-tuning LLMs on Apple Silicon with MLX (4.9k stars, MIT).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:21:51 +08:00
Vinta ChenandClaude Opus 4.7 f97773face Add timesfm to Machine Learning
Google Research's pretrained time-series foundation model (18k stars, Apache 2.0).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:21:51 +08:00
Vinta Chen f461e73108 update rules 2026-04-20 23:29:45 +08:00
Vinta ChenandClaude ebeff71525 docs(.impeccable): add placestoread reference, no-green rule, type size guidance, consistency checks, and narrow-screen behavior
- Primary visual model: placestoread.xyz (table, expand row, sorting, footer)
- Color aversion: no green; warm brown-red/ivory/earthy palette only
- Type sizing: default one step larger than impeccable scale; never reduce unprompted
- Row numbers: left-align, no leading zeros
- Visual consistency checklist: hover/focus, tag variants, typography tiers, gutters, color tokens
- Narrow-screen: < 960px and < 680px must stay functional; run playwright-cli after layout changes

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-20 01:19:26 +08:00
Vinta ChenandClaude f65a2aa9c0 docs(impeccable): prohibit inner max-width caps; override 65-75ch rule
Expands the layout constraint to make explicit that --shell-max on
.section-shell is the ONLY width cap allowed. Blocks future additions
of narrow inner caps on cards, table cells, paragraphs, etc., and
explicitly disables the impeccable skill's default 65-75ch guidance.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-20 01:01:47 +08:00
Vinta ChenandClaude 6c0b0e375a docs: add .impeccable.md design context file
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-20 00:46:14 +08:00
Vinta Chen fb33f904f5 Fix capitalization 2026-04-19 23:16:14 +08:00
Vinta Chen cfcc564120 Merge pull request #3076 from vinta/chore/code-cleanup
chore: simplify website/ Python and polish sponsors section
2026-04-19 22:58:38 +08:00
Vinta Chen 35aee20aa9 remove color 2026-04-19 22:51:25 +08:00
Vinta ChenandClaude 674c169efd fix(css): scope --accent-underline to sponsor-become hover; restore --line-strong at rest
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:48:33 +08:00
Vinta ChenandClaude 7625d1f05d style: use --accent-underline on sponsor link underline
Swaps --line-strong for --accent-underline on the 'Become a sponsor'
text-decoration-color so the underline matches the tan hover underline
on project-name links like thealgorithms.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:47:37 +08:00
Vinta ChenandClaude 19496c2c93 refactor(css): replace sponsor-become border underline with text-decoration
Swap the border-bottom + padding-bottom fake underline on .sponsor-become
for a native text-decoration underline with text-underline-offset so the
line hugs the text at the same distance as the hero @vinta/@JinyangWang27
links, rather than sitting a fixed 0.2rem gap away.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:45:44 +08:00
Vinta ChenandClaude f3c8377bd4 chore: remove arrow from 'Become a sponsor' link and its CSS rules
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:43:19 +08:00
Vinta ChenandClaude 257b69a932 style(sponsors): bump section-label to --text-lg within sponsor scope
Override font-size to var(--text-lg) inside .sponsor-meta so the
Sponsors heading is larger, while the shared .section-label class
remains --text-sm everywhere else.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:40:31 +08:00