Commit Graph

2349 Commits

Author SHA1 Message Date
cak e386fbb0e6 add Web Security section and secure 2026-04-24 08:58:59 -04: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
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
Vinta Chen 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 Chen 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 Chen 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
Jinyang 832928305c Merge pull request #3077 from sobolevn/patch-3 2026-04-21 19:14:53 +04:00
Vinta Chen f461e73108 update rules 2026-04-20 23:29:45 +08:00
sobolevn b0af62d911 Add django-modern-rest hidden gem
https://github.com/vinta/awesome-python/blob/master/CONTRIBUTING.md#3-hidden-gem
2026-04-20 09:12:03 +03:00
Vinta Chen 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 Chen 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 Chen 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 Chen 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 Chen 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 Chen 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 Chen 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 Chen 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
Vinta Chen f10337bb31 refactor(tests): modernize test_readme_parser to use pathlib.Path
Replace os.path.join + manual open() with Path(__file__).resolve().parents[2]
and Path.read_text() for locating and reading README.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:07:16 +08:00
Vinta Chen 92936964b6 refactor(readme_parser): fuse _parse_sponsor_item into single pass
Eliminate the redundant _find_link_deep precheck by merging the two
walks over inline.children into one loop that simultaneously locates
the link and records its top-level index.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:06:41 +08:00
Vinta Chen 420bf8cd9d refactor(readme_parser): collapse render_inline_html/text into _render_inline helper
Merge the two inline-renderer implementations into a single _render_inline(children, *, html) function that handles both output modes. The original public functions become one-line wrappers so all dispatch logic lives in one place. Also aligns html_inline handling: the html=True path now escapes the raw content instead of silently dropping it in the plain-text path.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:05:35 +08:00
Vinta Chen 0630ee973b refactor(build): flatten extract_entries and annotate result dict
Collapse the if-seen/else-new branches so the category/group/subcategory
merge logic runs once per entry unconditionally, appending to empty lists
on first sight instead of duplicating the append logic in the else branch.

Annotate seen and entries as dict[str, Any] so ty can resolve the mixed
value types (str, list, None) in each entry dict.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:04:14 +08:00
Vinta Chen 6ae7c89688 refactor: replace manual total_seconds()/3600 with timedelta comparison
Use timedelta(hours=CACHE_MAX_AGE_HOURS) so the cache-age check
reads at the intended hours unit directly, removing the conversion
arithmetic.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:02:14 +08:00
Vinta Chen 95115f7949 refactor(fetch_github_stars): replace manual slice loop with itertools.batched
Use itertools.batched (stdlib since Python 3.12, targeted by this project)
instead of manual range(0, N, BATCH_SIZE) slicing. Loosen fetch_batch,
build_graphql_query, and parse_graphql_response signatures from list[str]
to Sequence[str] since batched yields tuples.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:01:35 +08:00
Vinta Chen 39b65bc994 refactor(build): inline format_stars_short into its call site
The helper only appeared once and the logic is two lines, so the named
function added indirection without clarity. Removed the four dedicated
unit tests that covered the function directly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 22:00:45 +08:00
Vinta Chen 85b55efb28 refactor(readme_parser): inline _is_leading_link at its call site
The helper was only called once and the bool(inline.children) guard
was redundant: first_link being non-None already implies inline.children
is non-empty.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:59:59 +08:00
Vinta Chen 486fbf2185 refactor(readme_parser): replace _find_first_link with _find_child(inline, "link")
The private helper duplicated _find_child with a hardcoded type filter.
Remove it and call the general helper directly at both call sites.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:59:16 +08:00
Vinta Chen e0b0dc9c0a refactor(readme_parser): add _href helper to narrow attrGet return type
Extracts a _href(link) helper that returns link.attrGet('href') narrowed
to str (falling back to '') instead of the raw str|int|float|None union.
Replaces all four attrGet('href') or '' call sites with _href(), fixing
ty errors where the widened union leaked into TypedDict url fields.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:58:27 +08:00
Vinta Chen 7e7de19ef6 refactor(build): remove StarData TypedDict, loosen load_stars return to dict[str, dict]
Cache-write shape mismatches the TypedDict and callers mix .get() and
direct access, so the stricter type was providing false safety. Using
dict[str, dict] accurately reflects the actual runtime contract.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:57:30 +08:00
Vinta Chen 7f4a163534 refactor(build): tighten extract_entries parameter types to ParsedSection/ParsedGroup
Replace loose list[dict] annotations with concrete TypedDicts imported
from readme_parser so ty can verify call-site compatibility.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:56:46 +08:00
Vinta Chen c85f81bb24 refactor(build): accept Path directly in build() signature
Remove internal str->Path conversion; callers and tests now pass
Path objects directly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:56:06 +08:00
Vinta Chen b9236c4925 refactor(fetch_github_stars): drop unnecessary keyword-only marker on fetch_batch
client is the only non-first param and is always required, so the * separator
adds no clarity. Update the call site accordingly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:55:32 +08:00
Vinta Chen a358d45ca4 refactor: use datetime.UTC alias instead of timezone.utc
Python 3.11 introduced datetime.UTC as a cleaner alias for
datetime.timezone.utc. Both build.py and fetch_github_stars.py
are updated to use the shorter form.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:54:55 +08:00
Vinta Chen e47d229528 refactor(readme_parser): consolidate state reset to tail of flush_group
State reset (current_group_name = None, current_group_cats = []) was
duplicated in both branches of the early-return guard. Move it after
the conditional so it runs exactly once regardless of path.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:54:16 +08:00
Vinta Chen b897676e01 refactor(fetch_github_stars): remove redundant early-return guard in build_graphql_query
The empty-parts check after the loop makes the upfront `if not repos: return ""` guard redundant.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-19 21:53:39 +08:00