Skip to content

Fix my release#173

Merged
NaysKutzu merged 3 commits into
mainfrom
develop
May 14, 2026
Merged

Fix my release#173
NaysKutzu merged 3 commits into
mainfrom
develop

Conversation

@NaysKutzu
Copy link
Copy Markdown
Member

@NaysKutzu NaysKutzu commented May 14, 2026

Fix my release

Summary by CodeRabbit

  • New Features

    • Queued plugin dependency installation for streamlined marketplace workflows
    • FeatherCloud marketplace search and filtering capabilities
    • Premium plugin ownership tracking and purchase options
    • Enhanced online addon loading with pagination support
    • UI preview mode for marketplace testing
  • Bug Fixes

    • Improved plugin loader strategy to resolve prior update issues
    • Enhanced OAuth2 link handling with better fallback logic
  • Chores

    • Version bumped to v1.3.7.2

Review Change Stack

NaysKutzu and others added 3 commits May 14, 2026 21:28
Merge pull request #171 from MythicalLTD/develop
…mprove UI for plugin installation and search features
…insController and PluginProcessor; improve analytics page rendering logic for better status display
@NaysKutzu NaysKutzu merged commit 3470049 into main May 14, 2026
24 of 25 checks passed
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 14, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2cd178c2-2ae4-4f52-8aa3-7e0e9b5b9402

📥 Commits

Reviewing files that changed from the base of the PR and between 29c2d3b and 4143bc8.

⛔ Files ignored due to path filters (1)
  • runner/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • .github/README.md
  • CHANGELOG.md
  • app
  • backend/app/App.php
  • backend/app/Controllers/Admin/CloudManagementController.php
  • backend/app/Controllers/Admin/CloudPluginsController.php
  • backend/app/Plugins/PluginProcessor.php
  • backend/cli
  • backend/public/index.php
  • frontendv2/package.json
  • frontendv2/public/locales/en.json
  • frontendv2/src/app/(app)/admin/analytics/system/page.tsx
  • frontendv2/src/app/(app)/admin/feathercloud/plugins/page.tsx
  • frontendv2/src/app/(app)/admin/feathercloud/spells/page.tsx
  • runner/Cargo.toml

Walkthrough

Version 1.3.7.2 patches the plugin system with route collision detection, event class fallback discovery, and queued dependency resolution—enabling recursive plugin installation within a session. Frontend marketplaces gained infinite "load more" pagination and preview mode. FeatherCloud product ownership now gated premium plugin selection. App URLs hardened against empty strings with fallback resolution.

Changes

Release Version 1.3.7.2

Layer / File(s) Summary
Version bumps and release documentation
app, backend/cli, backend/public/index.php, frontendv2/package.json, runner/Cargo.toml, CHANGELOG.md, .github/README.md
APP_VERSION bumped from v1.3.7.1 to v1.3.7.2 across all entry points, package manifests, and backend bootstrap. CHANGELOG records the plugin loader improvement. README code statistics refreshed.

Plugin System Enhancements

Layer / File(s) Summary
Plugin route collision handling
backend/app/App.php
Route loader pre-collects addon identifiers and skips loading plugin route files whose basenames collide with other addons, emitting a warning instead of requiring the file.
Plugin event class discovery fallback
backend/app/Plugins/PluginProcessor.php
When the expected event class doesn't exist, PluginProcessor scans the addon root for exactly one AppPlugin implementation and uses that as the fallback event processor target. Logs a warning if multiple candidates exist.
OAuth2 panel URL normalization
backend/app/Controllers/Admin/CloudManagementController.php
getOAuth2Link() now trims APP_URL and treats empty strings as missing, applying cascading fallbacks: request-derived URL, then hardcoded default to https://featherpanel.mythical.systems.
Queued plugin dependency resolution
backend/app/Controllers/Admin/CloudPluginsController.php
Plugin installation now supports queued dependencies: install() validates the request body, tracks an install stack for cycle detection, normalizes queued_identifiers, and loops repeatedly evaluating dependency checks from the package's conf.yml. For each missing dependency found in the queue, it recursively invokes install() with carry-forward stack/user context. Fails with missing-dependency details if resolution exhausts attempts or finds no installable dependency. checkRequirements() honors a pending_plugins query to mark queued dependencies as met. New private helpers normalize identifiers, parse pending queries, and download/extract conf.yml for dependency evaluation.

Marketplace & Analytics UI Modernization

Layer / File(s) Summary
Spells page infinite load-more refactor
frontendv2/src/app/(app)/admin/feathercloud/spells/page.tsx, frontendv2/public/locales/en.json
Online spells fetching refactored to support replace vs append modes with deduplication by identifier. State extended with loadingMore flag separate from initial-load loading. Replaced pagination-based rendering with "Load more" button and count header. Search and error "try again" wired to replace-mode fetch. Localization adds spells search UI labels and load-more text.
Plugins page preview mode and owned products
frontendv2/src/app/(app)/admin/feathercloud/plugins/page.tsx, frontendv2/public/locales/en.json
Plugins page gains UI preview mode gated by secret tokens in search input: mocks catalog, requirements, and install flows with toast feedback instead of real API calls. Fetches owned FeatherCloud product identifiers (paginated) and gates premium item selection to owned products (with preview exceptions). Pagination type extended with has_next/has_prev. Online-addon fetching refactored to replace vs append modes with deduplication. State tracks loadingMore, requirements dialog, preview mode, sidebar/portal refs, and owned product ids. Install requests include queued_identifiers outside preview. Selection logic rejects premium queue items when premium is not owned. Requirements endpoint receives pending_plugins query. Package details sheet footer computes button visibility/disabled states by premium/store/cloud/ownership rules. Fixed-dock bottom queue portal renders when queued items selected. Requirements dialog styling updated to new theme classes for compatibility, dependency states, and warning boxes. Search controls disable filters during preview, add secret hint text, and trigger unified search/preview handler on Enter. Online list UI replaces pagination controls with "Load more" button based on pagination flags. Localization adds plugin search labels, premium badge states, "buy on store" text, online list UI, load-more buttons, premium ownership warnings, and UI preview mode banner/hints.
Analytics recent activity status normalization
frontendv2/src/app/(app)/admin/analytics/system/page.tsx
SystemAnalyticsPage maps pending status to queued translation key for display while preserving original status for badge color and fallback lookup.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant