README.md: migrated to category-first organization with inline language tags
site/index.html: regenerated with new structure and language filtering
site/projects.csv: updated with language extraction and new schema
All 498 entries reorganized from 14 language-based sections to 18
category-based sections with inline language tags. Multi-language
projects properly tagged and filtered. Website supports language,
category, and source filtering with visual color coding by language.
h2 headings are now categories (not languages). Language is extracted
from inline tags like `Python` `Rust` at the start of descriptions.
Changes:
- Add extract_languages() function to parse backtick-delimited language tags
- Update README parsing loop to extract languages from descriptions
- Update Project class to handle multiple languages per entry
- Add 'languages' CSV column with comma-separated language list
- Primary 'language' column contains first language for backward compatibility
The parser now supports category-first README structure with inline
language tags.
- Add site/generate.py: static site with search, filtering, sorting, dark mode
- Add site/static/style.css and main.js for the new frontend
- Extend parse.py: fetch CRAN published dates, PyPI release dates, and
discover GitHub repos from CRAN pages as fallback data sources
- Migrate from Poetry to uv (pyproject.toml + uv.lock)
- Update CI workflow to use uv and generate.py pipeline
- Add CONTRIBUTING.md with entry format guidelines
- Add "Submit a Project" button to site nav
- Update review-pr skill with all accepted entry formats
- Update CLAUDE.md to reflect new architecture
- Remove Quarto files (_quarto.yml, *.qmd, sync-site skill, poetry.lock)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>