- Changed shortcode context from boolean to depth counter for nested shortcodes
- Added shortcode context protection to template-wrapper.php for single page views
- Fixes remaining recursion path in single FediStream post views
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The v0.4.1 fix was incomplete - shortcodes called get_*_data() methods
directly, bypassing the recursion tracking in get_post_data().
Changes:
- Added $in_shortcode_context flag to TemplateLoader
- Added enter/exit_shortcode_context() methods
- All shortcode render methods now enter context before data loading
- When in shortcode context, the_content filter is always skipped
This fully prevents infinite recursion when post content contains
FediStream shortcodes that would otherwise recursively render.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added recursion depth tracking to prevent infinite loops from shortcodes in content
- Nested items now skip the_content filter, using wp_kses_post() instead
- Made get_artist_data(), get_album_data(), get_track_data(), get_playlist_data() public
- Methods now accept both int post IDs and WP_Post objects
- Added $load_nested parameter to control nested item loading
Fixes memory exhaustion in Twig's StagingExtension when post content
contains FediStream shortcodes that trigger recursive template rendering.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Relative URL allows CI to use the same access method as the main repo,
avoiding networking issues with absolute URLs.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add wc-licensed-product-client as git submodule in lib/
- Change Composer repository from VCS to path type
- CI now checks out submodules recursively
- Remove COMPOSER_AUTH (no longer needed)
This solves the CI networking issue by fetching the
dependency via git submodule instead of Composer.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use COMPOSER_AUTH with HTTP basic auth to access private
wc-licensed-product-client repository during builds.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The actions/gitea-release-action doesn't exist on GitHub.
Use curl with Gitea API instead for reliable release creation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Automated release builds triggered by v* tags
- PHP 8.3 environment with production dependencies
- Automatic translation compilation (.po to .mo)
- Version verification (plugin version must match tag)
- WordPress-compliant zip structure
- SHA256 checksum generation
- Package structure verification
- Changelog extraction for release notes
- Automatic Gitea release creation with attachments
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Implement license management using magdev/wc-licensed-product-client
- Reorganize settings page into License, Default Settings, Integrations tabs
- Add license validation and activation via AJAX
- Frontend features require valid license (admin works always)
- Update translations with German (de_CH) for license strings
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Consistent table column separator widths
- Rename duplicate "Requirements" headings to be more specific
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Settings and Dashboard links to the WordPress Plugins page
- Create comprehensive user guide (USERGUIDE.md) covering:
- Installation and configuration
- Managing artists, albums, tracks, and playlists
- Shortcodes and widgets
- ActivityPub and WooCommerce integration
- User library features and troubleshooting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixed timing issue where WooCommerce integration hooks were registered
too late during plugins_loaded. The constructor now calls check_woocommerce()
directly instead of hooking it at priority 5 (which had already passed).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added session history entry for v0.1.0 release
- Cleaned up temporary roadmap section
- Created empty version sections for 0.1.1 and 0.2.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
WP FediStream - Stream music over ActivityPub
Features:
- Custom post types: Artist, Album, Track, Playlist
- Custom taxonomies: Genre, Mood, License
- User roles: Artist, Label
- Admin dashboard with statistics
- Frontend templates and shortcodes
- Audio player with queue management
- ActivityPub integration with actor support
- WooCommerce product types for albums/tracks
- User library with favorites and history
- Notification system (in-app and email)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>