feat(tags): Add tag archive route and admin interface integration
Implement Phase 3 of v1.3.0 tags feature per microformats-tags-design.md: Routes (starpunk/routes/public.py): - Add /tag/<tag> archive route with normalization and 404 handling - Pre-load tags in index route for all notes - Pre-load tags in note route for individual notes Admin (starpunk/routes/admin.py): - Parse comma-separated tag input in create route - Parse tag input in update route - Pre-load tags when displaying edit form - Empty tag field removes all tags Templates: - Add tag input field to templates/admin/edit.html - Add tag input field to templates/admin/new.html - Use Jinja2 map filter to display existing tags Implementation details: - Tag URL parameter normalized to lowercase before lookup - Tags pre-loaded using object.__setattr__ pattern (like media) - parse_tag_input() handles trim, dedupe, normalization - All existing tests pass (micropub categories, admin routes) Per architect design: - No pagination on tag archives (acceptable for v1.3.0) - No autocomplete in admin (out of scope) - Follows existing media loading patterns Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
18
README.md
18
README.md
@@ -2,13 +2,13 @@
|
||||
|
||||
A minimal, self-hosted IndieWeb CMS for publishing notes with RSS syndication.
|
||||
|
||||
**Current Version**: 1.1.0
|
||||
**Current Version**: 1.2.0
|
||||
|
||||
## Versioning
|
||||
|
||||
StarPunk follows [Semantic Versioning 2.0.0](https://semver.org/):
|
||||
- Version format: `MAJOR.MINOR.PATCH`
|
||||
- Current: `1.1.0` (stable release)
|
||||
- Current: `1.2.0` (stable release)
|
||||
- Check version: `python -c "from starpunk import __version__; print(__version__)"`
|
||||
- See changes: [CHANGELOG.md](CHANGELOG.md)
|
||||
- Versioning strategy: [docs/standards/versioning-strategy.md](docs/standards/versioning-strategy.md)
|
||||
@@ -29,10 +29,14 @@ StarPunk is designed for a single user who wants to:
|
||||
- **File-based storage**: Notes are markdown files, owned by you
|
||||
- **IndieAuth authentication**: Use your own website as identity
|
||||
- **Micropub support**: Full W3C Micropub specification compliance
|
||||
- **RSS feed**: Automatic syndication
|
||||
- **Media attachments**: Upload and display images with your notes
|
||||
- **Microformats2**: Full h-entry, h-card, and h-feed markup for IndieWeb compatibility
|
||||
- **Author discovery**: Automatic profile discovery from your IndieWeb identity
|
||||
- **RSS, ATOM, JSON Feed**: Multiple syndication formats with Media RSS support
|
||||
- **Custom slugs**: Control your note permalinks
|
||||
- **No database lock-in**: SQLite for metadata, files for content
|
||||
- **Self-hostable**: Run on your own server
|
||||
- **Minimal dependencies**: 6 core dependencies, no build tools
|
||||
- **Minimal dependencies**: Core dependencies, no build tools
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -154,8 +158,10 @@ See [docs/architecture/](docs/architecture/) for complete documentation.
|
||||
StarPunk implements:
|
||||
- [Micropub](https://micropub.spec.indieweb.org/) - Publishing API
|
||||
- [IndieAuth](https://www.w3.org/TR/indieauth/) - Authentication
|
||||
- [Microformats2](http://microformats.org/) - Semantic HTML markup
|
||||
- [RSS 2.0](https://www.rssboard.org/rss-specification) - Feed syndication
|
||||
- [Microformats2](http://microformats.org/) - h-entry, h-card, h-feed markup
|
||||
- [RSS 2.0](https://www.rssboard.org/rss-specification) with Media RSS extensions
|
||||
- [ATOM 1.0](https://validator.w3.org/feed/docs/atom.html) - Syndication format
|
||||
- [JSON Feed 1.1](https://jsonfeed.org/version/1.1) - Modern feed format
|
||||
|
||||
## Deployment
|
||||
|
||||
|
||||
Reference in New Issue
Block a user