klevze
586c44ba74
Add comment spam classification and captcha checks.
...
Score artwork comments with local signatures plus Together AI, and optionally require Turnstile before posting.
2026-09-20 14:48:50 +02:00
klevze
37bacc1334
Defer Carbon package discovery until it is needed.
...
Keep Laravel from auto-discovering nesbot/carbon so the app can boot the lazy Carbon provider instead.
2026-09-20 14:48:37 +02:00
klevze
5db36cb29f
Align group profile summary contract
2026-08-30 08:48:03 +02:00
klevze
7805baa17d
Collapse profile group contribution queries
2026-08-30 07:58:38 +02:00
klevze
dba1f73e01
Defer profile favourites until needed
2026-08-30 07:30:15 +02:00
klevze
187292a374
Make XP progress formatting hydration-safe
2026-08-29 21:28:26 +02:00
klevze
99d94c9333
Make profile SSR formatting deterministic
2026-08-29 20:24:38 +02:00
klevze
872f420190
Defer profile featured artworks
2026-08-29 16:33:36 +02:00
klevze
ff80f5bf97
Rollback comments observer margin
2026-08-29 14:12:51 +02:00
klevze
29e6dee609
Reduce deferred comments observer margin
2026-08-29 13:53:00 +02:00
klevze
2f8f7472ca
tests cleanup
2026-08-29 13:49:13 +02:00
klevze
771f9f4350
Document M1-M18 production optimization status.
...
Record what landed, what is in flight, and what remains so later deploys can pick up the plan without archaeology.
2026-08-29 12:25:50 +02:00
klevze
4c409ceb81
Rebuild Inertia SSR artifacts after deferred artwork UI.
...
Keep bootstrap/ssr in sync with the client Vite build shipped in this stack.
2026-08-29 12:25:50 +02:00
klevze
ab8fa6d845
Fix Windows/WSL production deploy hang and permissions.
...
Skip slow Git worktree walks on /mnt, run Vite on Windows npm, reuse Windows SSH keys, and stop rewriting the klevze-owned public app symlink that skinbase cannot replace.
2026-08-29 12:25:50 +02:00
klevze
bf9ca12469
Add a public profile followers tab.
...
Expose follower lists on public profiles with a dedicated tab and API path instead of only showing counts.
2026-08-29 12:25:49 +02:00
klevze
1d350c9bca
Defer similar-AI recommendations until the rail is near view.
...
ArtworkPage already imports this hook; ship the implementation so similar-AI work stays off the initial render.
2026-08-29 12:25:49 +02:00
klevze
437d943827
Prefetch artwork prev/next navigation off the critical path.
...
Move neighbor lookup into a dedicated service and let the viewer load adjacent artworks after first paint instead of blocking the detail request.
2026-08-29 12:25:49 +02:00
klevze
bf902f509a
Batch-load comment reaction counts on artwork comments.
...
Avoid per-comment reaction queries on the deferred comments API by aggregating counts in one service call.
2026-08-29 12:25:37 +02:00
klevze
bfcbfec357
Cache Schema::hasTable lookups on artwork JSON.
...
Artwork detail was paying repeated information_schema hits per request. Keep public detail edge-case behavior covered by regression tests.
2026-08-29 12:25:37 +02:00
klevze
b9beb8f5c5
Speed legacy photo serving and skip tracking on download routes.
...
Tighten thumbnail/legacy photo handling and exclude download/photo traffic from session visitor tracking so those hot paths stay cheap.
2026-08-29 12:25:37 +02:00
klevze
e9cf754b37
Enable nginx X-Accel for original artwork downloads.
...
Hand originals to nginx after auth so PHP is not in the byte path. Keep DOWNLOAD_ACCEL_ENABLED off until the internal location is verified.
2026-08-29 12:25:37 +02:00
klevze
fb560fb7dd
Add HTTP performance log analyzer (M12.6).
...
Parse rotated nginx JSON access logs into host/route timings so production hotspots can be measured without ad-hoc one-off scripts.
2026-08-29 12:25:27 +02:00
klevze
4ab315e9d7
Defer artwork comments from initial render
2026-08-29 12:07:08 +02:00
klevze
8a80aae21e
Ship production optimization M1-M12.5A: queues, metrics, HTTP observability, and vector search reliability.
...
Keep similar-ai from tripping the global circuit on a lone URL 502, clamp Qdrant search to 100, and add Server-Timing plus slow-request logging. Studio shared props, Academy S3 exists caching, heat chunking, and Redis/scheduler hygiene stay in this rollout.
2026-08-25 07:58:47 +02:00
klevze
f52879edbb
Current state with latest updates
2026-08-23 13:28:34 +02:00
klevze
5af95f6533
Optimize academy
2026-06-09 13:16:01 +02:00
klevze
f89ee937c0
fixed sanitazer and academy
2026-06-05 16:53:20 +02:00
klevze
15870ddb1f
Allow heading tags (h1-h6) in ContentSanitizer so news editor headings render
2026-06-04 07:52:57 +02:00
klevze
0b33a1b074
Implement academy analytics, billing, and web stories updates
2026-05-26 07:27:29 +02:00
klevze
456c3d6bb0
Fix: remove Academy families from sitemaps; show total prompts in Academy prompt library; fix void closure in AcademyAdminController
2026-05-11 21:56:38 +02:00
klevze
ff96ef796e
chore: commit remaining workspace changes
2026-05-08 21:51:29 +02:00
klevze
8d108b8a76
Homepage: add stable intro copy; mark footer utility links data-nosnippet; add render test
2026-05-08 21:51:28 +02:00
klevze
6b83d76cd1
SEO: gallery VisualArtwork contentUrl -> single best URL; update gallery unit test
2026-05-08 21:51:28 +02:00
klevze
0c5dde9b22
Featured artworks thumbnails
2026-05-06 19:11:31 +02:00
klevze
82f2b1f660
Add tests for featured thumbnail generation; apply Pint formatting and related edits
2026-05-06 18:55:40 +02:00
klevze
7a8bc8e22a
Wire homepage hero to featured thumbnail family; add featured-picture component
2026-05-06 18:55:20 +02:00
klevze
8fa3adf4df
Add job and artisan command for generating featured thumbnails
2026-05-06 18:55:08 +02:00
klevze
bd8a5c14a0
Add FeaturedArtworkThumbnailGenerator and FeaturedArtworkSelector
2026-05-06 18:54:57 +02:00
klevze
2c2c0f6722
Add Artwork model convenience methods for featured thumbnails
2026-05-06 18:54:31 +02:00
klevze
ee24111d59
Add featured thumbnail config and ArtworkFeaturedImagePath helper
2026-05-06 18:54:18 +02:00
klevze
a3cfc6c17f
feat(academy): prepare AI Academy v1 for production enablement
2026-05-03 19:59:27 +02:00
klevze
90e93f0d42
Fixes
2026-05-03 09:21:13 +02:00
klevze
44354e5bea
News: normalize category select values; fix Studio news editor category persistence; add CSV→SQL generator and news_dates.sql
2026-05-03 09:12:38 +02:00
klevze
a9dfa6ea11
Refine SEO, uploads, and deploy handling
2026-05-02 10:48:08 +02:00
klevze
b6be6ed2ac
chore: commit regenerated ssr assets
2026-05-02 09:37:28 +02:00
klevze
caf1464aa5
chore: commit current workspace changes
2026-05-02 09:37:14 +02:00
klevze
79235133f0
Remove obsolete project SQL dump
2026-05-01 11:47:10 +02:00
klevze
396712bb3d
Sync deploy mirror and upstream error page
2026-05-01 11:46:56 +02:00
klevze
18cea8b0f0
Wire admin studio SSR and search infrastructure
2026-05-01 11:46:06 +02:00
klevze
257b0dbef6
Build world campaigns rewards and recaps
2026-05-01 11:44:41 +02:00
klevze
28e7e46e13
Add news article comments and reactions
2026-05-01 11:43:49 +02:00
klevze
874f8feb9c
Add homepage announcement module
2026-05-01 11:43:08 +02:00
klevze
961d21e91e
Optimize anonymous public sessions
2026-05-01 11:42:10 +02:00
klevze
35011001ba
Replace native selects with NovaSelect
2026-05-01 07:45:37 +02:00
klevze
67be537c86
new test files
2026-04-25 08:36:03 +02:00
klevze
19d5a9ed3e
removed files
2026-04-25 08:35:52 +02:00
klevze
c8c7a4d100
cleanup project
...
Removed unused files
2026-04-25 08:25:04 +02:00
klevze
157c6d49e8
Sanitize browse categories HTML output
2026-04-25 08:12:46 +02:00
klevze
a0b903f09d
UI: use free FontAwesome globe icon for Worlds menu item
2026-04-18 17:13:28 +02:00
klevze
87d60af5a9
Save workspace changes
2026-04-18 17:02:56 +02:00
klevze
f02ea9a711
Add CLI audit command docs
2026-04-17 07:56:10 +02:00
klevze
cdd42a0186
Improve creator studio browsing and versioning
2026-04-16 15:01:15 +02:00
klevze
56eaa3bcbf
Improve studio artwork media revisions
2026-04-16 14:44:41 +02:00
klevze
d5cff21ea2
feat: ship creator journey v2 and profile updates
2026-04-12 21:42:07 +02:00
klevze
a2457f4e49
minor fixes
2026-04-09 08:50:36 +02:00
klevze
23d363a50c
Add Meilisearch deploy support and studio grid tweak
2026-04-06 09:33:28 +02:00
klevze
08ad757bcb
Commit workspace changes
2026-04-05 19:42:33 +02:00
klevze
148a3bbe43
Fix artwork user reference import
2026-04-05 19:35:44 +02:00
klevze
0b216b7ecd
Implement creator studio and upload updates
2026-04-04 10:12:02 +02:00
klevze
1da7d3bf88
Profile: store covers in object storage (WebP); add covers config; remember artworks categories content-type preference
2026-03-29 09:22:36 +02:00
klevze
cab4fbd83e
optimizations
2026-03-28 19:15:39 +01:00
klevze
0b25d9570a
added flags icons
2026-03-28 19:15:21 +01:00
klevze
73260e7eae
updated gitignore and .env.example
2026-03-28 09:20:02 +01:00
klevze
2608be7420
Repair: copy legacy joinDate into new user's created_at when creating users from legacy wallz
2026-03-22 09:13:39 +01:00
klevze
e8b5edf5d2
feat: add Reverb realtime messaging
2026-03-21 12:51:59 +01:00
klevze
60f78e8235
Add Laravel broadcasting setup
...
Register channel routes and add the default broadcasting configuration generated for Laravel broadcasting support.
2026-03-21 11:08:18 +01:00
klevze
979e011257
Refactor dashboard and upload flows
...
Remove dead admin UI code, redesign dashboard followers/following and upload experiences, and add schema audit tooling with repair migrations for forum and upload drift.
2026-03-21 11:02:22 +01:00
klevze
29c3ff8572
update
2026-03-20 21:17:26 +01:00
klevze
1a62fcb81d
categories v1 finished
2026-03-17 20:13:33 +01:00
klevze
7da0fd39f7
updated gallery
2026-03-17 18:34:26 +01:00
klevze
7b37259a2c
feat: redesign private messaging inbox
2026-03-17 18:34:00 +01:00
klevze
2119741ba7
feat: add community activity feed and mentions
2026-03-17 18:26:57 +01:00
klevze
2728644477
feat: add tag discovery analytics and reporting
2026-03-17 18:23:38 +01:00
klevze
b3fc889452
feat: add captcha-backed forum security hardening
2026-03-17 16:06:28 +01:00
klevze
980a15f66e
refactor: unify artwork card rendering
2026-03-17 14:49:20 +01:00
klevze
78151aabfe
Remove legacy frontend assets and update gallery routes
2026-03-14 15:06:28 +01:00
klevze
4f576ceb04
more fixes
2026-03-12 07:22:38 +01:00
klevze
547215cbe8
remove unused assets
2026-03-09 19:17:58 +01:00
klevze
23b813bbff
gitignore remove cpad
2026-03-09 18:09:57 +01:00
klevze
f6772f673b
login update
2026-03-05 11:24:37 +01:00
klevze
5a33ca55a1
fixes
2026-03-03 21:00:18 +01:00
klevze
b9c2d8597d
feat: Inertia profile settings page, Studio edit redesign, EGS, Nova UI components\n\n- Redesign /dashboard/profile as Inertia React page (Settings/ProfileEdit)\n with SettingsLayout sidebar, Nova UI components (TextInput, Textarea,\n Toggle, Select, RadioGroup, Modal, Button), avatar drag-and-drop,\n password change, and account deletion sections\n- Redesign Studio artwork edit page with two-column layout, Nova components,\n integrated TagPicker, and version history modal\n- Add shared MarkdownEditor component\n- Add Early-Stage Growth System (EGS): SpotlightEngine, FeedBlender,\n GridFiller, AdaptiveTimeWindow, ActivityLayer, admin panel\n- Fix upload category/tag persistence (V1+V2 paths)\n- Fix tag source enum, category tree display, binding resolution\n- Add settings.jsx Vite entry, settings.blade.php wrapper\n- Update ProfileController with JSON response support for API calls\n- Various route fixes (profile.edit, toolbar settings link)"
2026-03-03 20:57:43 +01:00
klevze
dc51d65440
feat: forum rich-text editor, emoji picker, mentions, discover nav, feed, uploads, profile
...
Forum:
- TipTap WYSIWYG editor with full toolbar
- @emoji-mart/react emoji picker (consistent with tweets)
- @mention autocomplete with user search API
- Fix PHP 8.4 parse errors in Blade templates
- Fix thread data display (paginator items)
- Align forum page widths to max-w-5xl
Discover:
- Extract shared _nav.blade.php partial
- Add missing nav links to for-you page
- Add Following link for authenticated users
Feed/Posts:
- Post model, controllers, policies, migrations
- Feed page components (PostComposer, FeedCard, etc)
- Post reactions, comments, saves, reports, sharing
- Scheduled publishing support
- Link preview controller
Profile:
- Profile page components (ProfileHero, ProfileTabs)
- Profile API controller
Uploads:
- Upload wizard enhancements
- Scheduled publish picker
- Studio status bar and readiness checklist
2026-03-03 09:48:31 +01:00
klevze
1266f81d35
feat: upload wizard refactor + vision AI tags + artwork versioning
...
Upload wizard:
- Refactored UploadWizard into modular steps (Step1FileUpload, Step2Details, Step3Publish)
- Extracted reusable hooks: useUploadMachine, useFileValidation, useVisionTags
- Extracted reusable components: CategorySelector, ContentTypeSelector
- Added TagPicker component (studio-style list picker with AI badge + new-tag insertion)
- Fixed TagInput auto-open bug (hasFocusedRef guard)
- Replaced TagInput with TagPicker in UploadSidebar
Vision AI tag suggestions:
- Add UploadVisionSuggestController: sync POST /api/uploads/{id}/vision-suggest
- Calls vision.klevze.net/analyze/all on upload completion (before step 2 opens)
- Two-phase useVisionTags: immediate gateway call + background DB polling
- Trigger fires on uploadReady (not step change) so tags arrive before user sees step 2
- Added vision.gateway config block with VISION_GATEWAY_URL env
Artwork versioning system:
- ArtworkVersion / ArtworkVersionEvent models
- ArtworkVersioningService: createNewVersion, restoreVersion, rate limiting, ranking decay
- Migrations: artwork_versions, artwork_version_events, versioning columns on artworks
- Studio API routes: GET versions, POST restore/{version_id}
- Feature tests: ArtworkVersioningTest (13 cases)
2026-03-01 14:56:46 +01:00
klevze
a875203482
feat: Nova UI component library + Studio dropdown/picker polish
...
- Add Nova UI library: Button, TextInput, Textarea, FormField, Select,
NovaSelect, Checkbox, Radio/RadioGroup, Toggle, DatePicker,
DateRangePicker, Modal + barrel index.js
- Replace all native <select> in Studio with NovaSelect (StudioFilters,
StudioToolbar, BulkActionsBar) including frosted-glass portal and
category group headers
- Replace native checkboxes in StudioGridCard, StudioTable, UploadSidebar,
UploadWizard, Upload/Index with custom Checkbox component
- Add nova-scrollbar CSS utility (thin 4px, semi-transparent)
- Fix portal position drift: use viewport-relative coords (no scrollY offset)
for NovaSelect, DatePicker and DateRangePicker
- Close portals on external scroll instead of remeasuring
- Improve hover highlight visibility in NovaSelect (bg-white/[0.13])
- Move search icon to right side in NovaSelect dropdown
- Reduce Studio layout top spacing (py-6 -> pt-4 pb-8)
- Add StudioCheckbox and SquareCheckbox backward-compat shims
- Add sync.sh rsync deploy script
2026-03-01 10:41:43 +01:00
klevze
e3ca845a6d
Studio: make grid checkbox rectangular and commit table changes
2026-03-01 08:43:48 +01:00
klevze
211dc58884
Studio: use site CTA for Upload button (bg-sky-600) instead of accent
2026-03-01 08:30:06 +01:00
klevze
916bb29a53
feat(trending): switch trending endpoints to Ranking V2 ranking_score\n\n- discoverTrending() now sorts by ranking_score:desc + engagement_velocity:desc\n- HomepageService::getTrending() now sorts by ranking_score:desc + velocity\n- DB fallback joins artwork_stats for ranking_score sort\n- Both trending endpoints filter to last 30 days (spec §6)\n- Add created_at to Meilisearch filterableAttributes for date filtering\n- Synced index settings"
2026-02-28 16:47:08 +01:00
klevze
de3ec22ee5
feat: Ranking Engine V2 — intelligent scoring with shares, authority, decay & velocity\n\n- Add ArtworkRankingService with V2 formula:\n ranking_score = (base × authority × decay) + velocity_boost\n Base: views×0.2 + downloads×1.5 + favourites×2.5 + comments×3.0 + shares×4.0\n Authority: 1 + (log10(1+followers) + fav_received/1000) × 0.05\n Decay: 1 / (1 + hours/48)\n Velocity: 24h signals × velocity_weights × 0.5\n\n- Add nova:recalculate-rankings command (--chunk, --sync-rank-scores, --skip-index)\n- Add migration: ranking_score, engagement_velocity, shares/comments counts to artwork_stats\n- Upgrade RankingService.computeScores() with shares + comments + velocity\n- Update Meilisearch sortableAttributes: ranking_score, shares_count, engagement_velocity, comments_count\n- Update toSearchableArray() to expose V2 fields\n- Schedule every 30 min with overlap protection\n- Verified: 49733 artworks scored successfully"
2026-02-28 16:41:15 +01:00
klevze
90f244f264
feat: artwork share system with modal, native Web Share API, and tracking
...
- Add ArtworkShareModal with glassmorphism UI (Facebook, X, Pinterest, Email, Copy Link, Embed Code)
- Add ArtworkShareButton with lazy-loaded modal and native share fallback
- Add useWebShare hook abstracting navigator.share with AbortError handling
- Add ShareToast auto-dismissing notification component
- Add share() endpoint to ArtworkInteractionController (POST /api/artworks/{id}/share)
- Add artwork_shares migration for Phase 2 share tracking
- Refactor ArtworkActionBar to use new ArtworkShareButton component
2026-02-28 15:29:45 +01:00