Commit graph

15 commits

Author SHA1 Message Date
Snider
e498a1701e refactor: update namespaces and remove deprecated biolinks route; enhance API documentation attributes 2026-01-26 14:24:42 +00:00
Snider
02125e8234 feat(quota): implement workspace quota management with usage tracking and analytics 2026-01-26 14:24:35 +00:00
Snider
cc6cf23ff0 refactor: update references from 'biolink' to 'page' and improve seeder structure 2026-01-26 14:24:25 +00:00
Snider
b8531676e2 feat(search): implement global search component with keyboard navigation and recent searches 2026-01-26 14:24:15 +00:00
Snider
edb34e38d5 fix(privacy): hash IP addresses in referral tracking for GDPR compliance
- ReferralController now stores ip_hash (SHA-256) instead of raw IP in session
- Cookie excludes IP entirely (only stores provider/model/timestamp)
- PlantTreeForAgentReferral uses hashed IPs in tree metadata
- Updated test to verify hashed IP storage

Raw IPs should not be stored in cookies or persisted unnecessarily.
Session-only hashed IP is sufficient for fraud detection.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 00:39:07 +00:00
Snider
c8dfc2a8a9 refactor: remove deprecated code for v0.0.1 release
- Remove deprecated device chrome properties and methods from Editor
- Remove deprecated ConfigResolver::bootKeys() and lazy load instead
- Remove deprecated ConfigValue::find() method
- Remove deprecated StorageOffload::getHumanSizeAttribute() accessor
- Clean up API controllers (already using resolveWorkspace trait)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 23:36:01 +00:00
Snider
65dd9af950 refactor: consolidate migrations and clean up core packages
- Remove old incremental migrations (now consolidated into create_* files)
- Clean up cached view files
- Various fixes across core-api, core-mcp, core-php packages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 22:28:58 +00:00
Snider
1f1c8d0496 fix: add tier columns to users table, remove app-specific seeder
- Add tier and tier_expires_at columns to users table in create migration
- Remove SystemUserSeeder (moved to host.uk.com as it uses app-specific models)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 22:20:54 +00:00
Snider
febfeb5fdb Fix AdminMenuProvider interface compatibility
Add HasMenuPermissions trait to classes implementing AdminMenuProvider:
- Website\Hub\Boot
- Core\Mod\Hub\Boot

The trait provides default implementations for the new menuPermissions()
and canViewMenu() methods added to the AdminMenuProvider interface.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:39:28 +00:00
Snider
2d348f4c2d Update RELEASE-BLOCKERS.md: mark medium issues fixed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 20:03:13 +00:00
Snider
13670ebb34 Add dependency guards and PHPDoc documentation
Dependency guards for optional modules:
- Remove hard use statements for Core\Mod\*, Core\Plug\* classes
- Add class_exists() guards before using optional dependencies
- Change type hints to ?object with docblock annotations
- Add fallback behavior when optional modules not installed

Files with dependency guards added:
- Cdn/Console/CdnPurge.php (Workspace, Purge)
- Cdn/Console/PushAssetsToCdn.php (VBucket)
- Cdn/Boot.php (CdnManager, StorageManager)
- Cdn/Jobs/PushAssetToCdn.php (StorageManager)
- Front/Admin/AdminMenuRegistry.php (User, Workspace, EntitlementService)
- Front/Admin/Contracts/*.php (User, Workspace)
- Front/Admin/View/Components/Sidemenu.php (User, WorkspaceService)
- Front/Mcp/McpContext.php (AgentPlan)

Comprehensive PHPDoc documentation:
- ModuleScanner.php - Scanner mechanics and priority system
- ModuleRegistry.php - Registration flow and querying
- LazyModuleListener.php - Lazy loading mechanism
- LifecycleEventProvider.php - Lifecycle phases
- All Event classes - When fired, context, examples
- Service contracts - HealthCheckable, ServiceDefinition
- Admin contracts - AdminMenuProvider, DynamicMenuProvider

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 19:24:39 +00:00
Snider
c6993dbfca Prepare for open-source release
Remove internal branding:
- Replace "Snide" codename with "Core" in documentation
- Remove "host-uk/core" package name check in Boot.php
- Remove company references from CDN service comments
- Remove hardcoded fallback domains

Improve generated code clarity:
- Add [USER] prefix to TODO comments in MakePlugCommand templates
- Add header comments explaining generated files need implementation
- Convert dashboard TODOs to placeholder UI sections
- Remove internal roadmap TODOs from route files

Add EUPL-1.2 license headers:
- Added license header to 231 PHP files
- Skipped 208 Blade templates (HTML, not PHP)

Update release documentation:
- Mark critical and high issues as fixed in RELEASE-BLOCKERS.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 18:45:52 +00:00
Snider
606176585c Fix critical and high severity issues from code review
Security fixes:
- Fix XSS in JSON-LD output via JSON_HEX_TAG (Seo module)
- Fix SQL injection via LIKE wildcards (Config module)
- Fix regex injection in env updates (Console module)
- Fix weak token hashing with HMAC-SHA256 (CDN module)
- Mask database credentials in install output (Console module)

New features:
- Add MakeModCommand, MakePlugCommand, MakeWebsiteCommand scaffolds
- Add event prioritization via array syntax in $listens
- Add EventAuditLog for tracking handler execution and failures
- Add ServiceVersion with semver and deprecation support
- Add HealthCheckable interface with HealthCheckResult
- Add ServiceStatus enum for service health states
- Add DynamicMenuProvider for uncached menu items
- Add LangServiceProvider with auto-discovery and fallback chains

Improvements:
- Add retry logic with exponential backoff (CDN uploads)
- Add file size validation before uploads (100MB default)
- Add key rotation mechanism for LthnHash
- Add Unicode NFC normalization to Sanitiser
- Add configurable filter rules per field (Input)
- Add menu caching with configurable TTL (Admin)
- Add Redis fallback alerting via events (Storage)
- Add Predis support alongside phpredis (Storage)
- Add memory safety checks for image processing (Media)
- Add SchemaValidator for schema.org validation (SEO)
- Add translation key validation in dev environments

Bug fixes:
- Fix nested array filtering returning null (Sanitiser)
- Fix race condition in EmailShieldStat increment
- Fix stack overflow on deep JSON nesting (ConfigResolver)
- Fix missing table existence check (BlocklistService)
- Fix missing class_exists guards (Search, Media)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:20:14 +00:00
Snider
b26c430cd6 Add core components and initial setup for the PHP framework 2026-01-21 14:11:45 +00:00
Snider
713cbc601d Add Font Awesome Pro to admin layout
Load Font Awesome Pro CSS in admin layout using Cdn::versioned helper
for cache-busted asset loading.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 14:05:51 +00:00