Commit Graph

34 Commits

Author SHA1 Message Date
d1597aa854 docs: Update CLAUDE.md with memory leak investigation session
- Documented v0.4.1 through v0.4.9 fix attempts
- Listed all protection mechanisms in place
- Recorded key learnings about WordPress hooks and recursion
- Status: unresolved, documented as known incompatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 20:10:09 +01:00
12f7d8f7b3 docs: Add known plugin incompatibilities section
- Added Known Issues section documenting WP Prometheus incompatibility
- Updated version badge to 0.4.9

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 20:07:50 +01:00
bdc11d8769 revert: Restore conditional the_content filter usage
All checks were successful
Create Release Package / build-release (push) Successful in 1m1s
- Reverted nuclear option from v0.4.8
- get_post_data() now uses the_content filter conditionally
- All other protections remain in place
- Memory leak investigation to be continued later

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.9
2026-02-02 20:05:59 +01:00
35ad390aeb fix: Nuclear option - never apply the_content filter
All checks were successful
Create Release Package / build-release (push) Successful in 1m2s
- get_post_data() now ALWAYS strips shortcodes and uses raw content
- Never calls apply_filters('the_content') or get_the_excerpt()
- FediStream posts don't need shortcode processing in content
- This guarantees no recursion through WordPress hook system

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.8
2026-02-02 19:59:04 +01:00
b592e45d58 fix: Hard main template rendering lock
Some checks failed
Create Release Package / build-release (push) Failing after 53s
- Added $rendering_main_template flag that blocks all other renders
- Reduced MAX_RENDER_DEPTH from 5 to 2
- template-wrapper.php passes is_main_template=true to enable hard lock
- Any render attempt during main template rendering is blocked

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.7
2026-02-02 19:55:23 +01:00
a41eddbc49 fix: Block shortcode rendering during page template loading
All checks were successful
Create Release Package / build-release (push) Successful in 1m2s
- Added $loading_page_template flag in TemplateLoader
- template-wrapper.php sets flag before loading theme header/footer
- Shortcodes::render_template() returns early if flag is set
- Prevents recursion from theme components, widgets, or other plugins

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.6
2026-02-02 17:09:16 +01:00
eb85870909 fix: Multi-layer protection against Twig rendering recursion
All checks were successful
Create Release Package / build-release (push) Successful in 57s
- Added render depth tracking in Plugin::render() with max depth of 5
- Strip shortcodes from content when in shortcode context
- Prevents any later do_shortcode() calls from triggering recursion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.5
2026-02-02 17:04:38 +01:00
6988e49287 fix: Prevent get_the_excerpt() from triggering the_content filter
All checks were successful
Create Release Package / build-release (push) Successful in 58s
- get_the_excerpt() internally calls the_content filter when generating auto-excerpts
- When in shortcode context, now uses raw post_excerpt or wp_trim_words() instead
- This was the remaining recursion path causing memory exhaustion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.4
2026-02-02 16:56:52 +01:00
166a5e6f7c fix: Complete memory leak fix for shortcode context handling
All checks were successful
Create Release Package / build-release (push) Successful in 58s
- 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>
v0.4.3
2026-02-02 16:52:13 +01:00
fedab21c2a fix: Complete memory leak fix with shortcode context tracking
All checks were successful
Create Release Package / build-release (push) Successful in 57s
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>
v0.4.2
2026-02-02 16:44:51 +01:00
eaefcff9c9 fix: Critical memory leak in TemplateLoader causing OOM errors
All checks were successful
Create Release Package / build-release (push) Successful in 57s
- 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>
v0.4.1
2026-02-02 16:37:43 +01:00
04201a66f8 docs: Update session history with CI/CD fixes
Document all CI/CD pipeline fixes:
- Gitea API for releases (not GitHub action)
- Git submodule with relative URL
- Composer path repository
- gettext installation
- SIGPIPE fix

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:46:06 +01:00
8ae703787c chore: Reorder exclusions in release workflow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:38:37 +01:00
c540cde0a4 docs: Update README for v0.4.0
- Update version badge to 0.4.0
- Add CI/CD badge
- Add release package installation instructions
- Add license key section
- Add releases section
- Update from-source instructions for submodules

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:35:06 +01:00
d96e3e3a4d chore: Exclude .gitea and .gitmodules from release package
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:33:54 +01:00
20c879c065 fix: Handle SIGPIPE in package verification
All checks were successful
Create Release Package / build-release (push) Successful in 58s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.4.0
2026-01-29 18:27:22 +01:00
d104b0ae46 fix: Install gettext for msgfmt in CI
Some checks failed
Create Release Package / build-release (push) Failing after 56s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:24:04 +01:00
98ddb63d44 fix: Use relative URL for submodule
Some checks failed
Create Release Package / build-release (push) Failing after 50s
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>
2026-01-29 18:21:21 +01:00
3dd2f4d126 feat: Use git submodule for private dependency
Some checks failed
Create Release Package / build-release (push) Has been cancelled
- 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>
2026-01-29 18:18:14 +01:00
dfa405c89b fix: Add Composer auth for private repository in CI
Some checks failed
Create Release Package / build-release (push) Has been cancelled
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>
2026-01-29 17:11:05 +01:00
a7dbb7b4c5 fix: Use SRC_GITEA_TOKEN secret for releases
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 17:01:55 +01:00
efd3f7a170 chore: Update license client to ^0.2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:47:32 +01:00
077093765e chore: Update license client to dev-main
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:44:04 +01:00
d4425103ea fix: Use Gitea API directly for release creation
Some checks failed
Create Release Package / build-release (push) Failing after 3m6s
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>
2026-01-29 16:31:53 +01:00
02e2ed82ef docs: Update session history for v0.4.0 CI/CD pipeline
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 15:43:34 +01:00
b21394c674 feat: Add Gitea Actions CI/CD pipeline for releases (v0.4.0)
Some checks failed
Create Release Package / build-release (push) Failing after 4s
- 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>
2026-01-29 15:40:08 +01:00
f3cd19efe0 feat: Add license management and tabbed settings (v0.3.0)
- 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>
v0.3.0
2026-01-29 12:03:05 +01:00
d62f01cf41 docs: Update session history with v0.1.1 and v0.2.0 work
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 23:56:52 +01:00
edfd19dea1 docs: Fix markdown linting issues in user guide
- Consistent table column separator widths
- Rename duplicate "Requirements" headings to be more specific

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 23:56:13 +01:00
db67a17fd4 feat: Add plugin action links and user guide
- 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>
v0.2.0
2026-01-28 23:52:12 +01:00
96269eb355 fix: WooCommerce product types not appearing in selector
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>
v0.1.1
2026-01-28 23:47:56 +01:00
01c256349f docs: Update session history with successful push
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 23:28:44 +01:00
38377f11e0 docs: Update CLAUDE.md with session history and cleanup roadmap
- 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>
2026-01-28 23:24:52 +01:00
4a5d7b9f4d feat: Initial release v0.1.0
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>
v0.1.0
2026-01-28 23:23:05 +01:00