Commit Graph

2383 Commits

Author SHA1 Message Date
Vinta Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
eeecacc3bd feat(website): generate static pages for subcategories
Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-03 00:23:14 +08:00
Vinta Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
429c9b3d12 feat: generate llms.txt from template and annotate entries with star counts
- 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 Chen
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
Jinyang
07ad943652 Merge pull request #3094 from JinyangWang27/JinyangWang27-patch-1
Add OpenChronicle - open source version of OpenAI Chonicle
2026-04-27 19:58:22 +04:00
Joseba Fuentes
b582db93f3 Merge pull request #3071 from Tlaloc-Es/patch-1
Add KillPy to environment management section
2026-04-27 23:56:45 +08:00
Jinyang
3854021599 Add OpenChronicle to the list of AI frameworks 2026-04-26 20:12:09 +04:00
Jinyang
154dbaad93 Merge pull request #3090 from cak/master 2026-04-24 20:23:22 +04:00
Jinyang
5a3c61d587 Merge pull request #3089 from smortezah/master 2026-04-24 20:21:20 +04:00
Jinyang
8924f6dbfc Merge pull request #3079 from vvlrff/add-faststream 2026-04-24 20:20:43 +04:00
cak
e386fbb0e6 add Web Security section and secure 2026-04-24 08:58:59 -04:00
Morteza Hosseini
39b1476ac4 docs(ai-agents): add OpenAI's framework for building AI agents
Co-authored-by: Copilot <copilot@github.com>
2026-04-24 12:33:01 +01:00
Semen Frolov
427dfc0003 Rename Message Brokers to Messaging
Updated 'Message Brokers' section to 'Messaging' and added MQTT to the faststream description.
2026-04-23 22:45:50 +03:00
Semen Frolov
ead4794fc9 Merge branch 'master' into add-faststream 2026-04-22 19:53:36 +03:00
Jinyang
756314e21d Merge pull request #3080 from vvlrff/add-ag2
docs(ai-agents): add ag2 to AI Agents Orchestration
2026-04-22 14:11:49 +04: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
Semen Frolov
e590d33b80 docs(ai-agents): add ag2 to Orchestration
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 21:32:02 +03:00
Semen Frolov
4a334d9cda docs(message-brokers): add FastStream and Message Brokers category
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 21:30:40 +03:00
Vinta Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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 Chen
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