f6772f673b
login update
2026-03-05 11:24:37 +01:00
5a33ca55a1
fixes
2026-03-03 21:00:18 +01:00
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
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
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
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
e3ca845a6d
Studio: make grid checkbox rectangular and commit table changes
2026-03-01 08:43:48 +01:00
211dc58884
Studio: use site CTA for Upload button (bg-sky-600) instead of accent
2026-03-01 08:30:06 +01:00
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
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
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
568b3f3abb
feat: merge Like+Favourite into single heart button, add Report modal with required reason & proof, fix favourite 422 (user_favorites -> artwork_favourites)
2026-02-28 15:15:37 +01:00
eee7df1f8c
feat: artwork page carousels, recommendations, avatars & fixes
...
- Infinite loop carousels for Similar Artworks & Trending rails
- Mouse wheel horizontal scrolling on both carousels
- Author avatar shown on hover in RailCard (similar + trending)
- Removed "View" badge from RailCard hover overlay
- Added `id` to Meilisearch filterable attributes
- Auto-prepend Scout prefix in meilisearch:configure-index command
- Added author name + avatar to Similar Artworks API response
- Added avatar_url to ArtworkListResource author object
- Added direct /art/{id}/{slug} URL to ArtworkListResource
- Fixed race condition: Similar Artworks no longer briefly shows trending items
- Fixed user_profiles eager load (user_id primary key, not id)
- Bumped /api/art/{id}/similar rate limit to 300/min
- Removed decorative heart icons from tag pills
- Moved ReactionBar under artwork description
2026-02-28 14:05:39 +01:00
80100c7651
fix: prevent toolbar search flicker on outside page click
2026-02-28 08:14:12 +01:00
8b00084f09
fix: separate pill clicks from carousel drag with bottom drag zone
2026-02-28 08:10:10 +01:00
6536d4ae78
feat: add reusable gallery carousel and ranking feed infrastructure
2026-02-28 07:56:25 +01:00
67ef79766c
fix(gallery): fill tall portrait cards to full block width with object-cover crop
...
- ArtworkCard: add w-full to nova-card-media, use absolute inset-0 on img so
object-cover fills the max-height capped box instead of collapsing the width
- MasonryGallery.css: add width:100% to media container, position img
absolutely so top/bottom is cropped rather than leaving dark gaps
- Add React MasonryGallery + ArtworkCard components and entry point
- Add recommendation system: UserRecoProfile model/DTO/migration,
SuggestedCreatorsController, SuggestedTagsController, Recommendation
services, config/recommendations.php
- SimilarArtworksController, DiscoverController, HomepageService updates
- Update routes (api + web) and discover/for-you views
- Refresh favicon assets, update vite.config.js
2026-02-27 13:34:08 +01:00
09eadf9003
feat(artwork): sidebar layout, icon actions, original download URL fix
...
- ArtworkDownloadController: fix resolveDownloadUrl() to use correct CDN
path: original/{h1}/{h2}/{hash}.{file_ext} (was wrong originals/h1/h2/h3/orig.webp)
Wrap incrementDownloads() in try/catch so Redis failure can't break the response
- ArtworkPage: move ArtworkAuthor from left column to right sidebar
Sidebar now stacks: Author → Actions → Awards (sticky top-24)
Mobile block follows same order above main content
- ArtworkActions: replace four stacked text buttons with a compact 4-col icon grid
Like (heart, rose when active), Save (star, amber when active),
Share (network icon), Report (flag icon, red on hover)
Download remains full-width orange CTA
- ArtworkAuthor: add icons to Profile (person) and Follow buttons
Follow shows circle-check icon; Following state shows user-plus icon
2026-02-27 11:31:32 +01:00
4f9b43bbba
feat(homepage): Nova homepage layout — guest/auth split, mascot category tiles, 5-col artwork grids
...
- HomeController: is_logged_in now lives inside props JSON (not separate view var)
- HomepageService: allForUser() adds user_data, fresh, suggested_creators; auth
payload includes is_logged_in:true; guest payload merged with is_logged_in:false
- getTrending/getFreshUploads/getFollowingFeed: limit 12→10 (2 clean rows of 5)
- New getUserData() — unread messages + notifications counts via DB
- New getSuggestedCreators() — top followed-count creators not yet followed, cached 5 min
React — new components:
- HomeWelcomeRow: greeting bar with avatar, unread message/notification badges, upload CTA
- HomeFromFollowing: art grid from followed creators with empty-state
- HomeTrendingForYou: personalized grid adapts heading/link to user's top tag
- HomeBecauseYouLike: secondary personalized section keyed on top tag
- HomeSuggestedCreators: 4-col creator cards with avatar, stats, View Profile link
- HomeCTA: gradient upload banner; guest sees Create Account second CTA
- HomeCategories: 5-tile static category grid with mascot images
React — updated:
- HomePage: split into GuestHomePage + AuthHomePage; routes on is_logged_in prop
- HomeHero: isLoggedIn prop; upload href gates on auth; CTA → /discover/trending
- HomeTrending: see-all → /discover/trending; grid 4→5 cols; slice to multiple of 5
- HomeFresh: see-all → /discover/fresh; grid 4→5 cols; slice to multiple of 5
- HomeFromFollowing/TrendingForYou/BecauseYouLike: 5-col grid, slice to multiple of 5
- HomeCategories: mascots per category (wallpapers/photography/skins/other), smaller tiles
2026-02-27 10:48:35 +01:00
f0cca76eb3
storing analytics data
2026-02-27 09:46:51 +01:00
15b7b77d20
messages implemented
2026-02-26 21:12:32 +01:00
d0aefc5ddc
feat: Nova homepage, profile redesign, and legacy view system overhaul
...
Homepage
- Add HomepageService with hero, trending (award-weighted), fresh uploads,
popular tags, creator spotlight (weekly uploads ranking), and news sections
- Add React components: HomePage, HomeHero, HomeTrending, HomeFresh,
HomeTags, HomeCreators, HomeNews (lazy-loaded below the fold)
- Wire home.blade.php with JSON props, SEO meta, JSON-LD, and hero preload
- Add HomePage.jsx to vite.config.js inputs
Profile page
- Hero banner with random user artwork as background + dark gradient overlay
- Favourites section uses real Artwork models + <x-artwork-card> for CDN URLs
- Newest artworks grid: gallery-grid → grid grid-cols-2 gap-4
Edit Profile page (user.blade.php)
- Add hero banner (featured wallpaper/photography via artwork_features,
content_type_id IN [2,3]) sourced in UserController
- Remove bg-deep from outer wrapper; card backgrounds: bg-panel → bg-nova-800
- Remove stray AI-generated tag fragment from template
Author profile links
- Fix all /@username routes in: HomepageService, MonthlyCommentatorsController,
LatestCommentsController, MyBuddiesController and corresponding blade views
Legacy view namespace
- Register View::addNamespace('legacy', resource_path('views/_legacy'))
in AppServiceProvider::boot()
- Convert all view('legacy.x') and @include('legacy.x') calls to legacy::x
- Migrate legacy views to resources/views/_legacy/ with namespace support
2026-02-26 10:25:35 +01:00
d3fd32b004
fixes gallery
2026-02-26 07:27:20 +01:00
0032aec02f
feat: increase gallery grid from 4 to 5 columns per row on desktopfeat: increase gallery grid from 4 to 5 columns per row on desktop
2026-02-25 19:11:23 +01:00
5c97488e80
fixed gallery
2026-02-22 17:09:34 +01:00
48e2055b6a
gallery fix
2026-02-21 21:39:23 +01:00
e4e0bdf8f1
fixes
2026-02-21 19:26:48 +01:00
7648e7d426
Merge branch 'feature/RegistrationAntispamMail' into develop
2026-02-21 12:17:27 +01:00
e70a876ef2
Merge branch 'feat/registration-antispam-complete' into feature/RegistrationAntispamMail
2026-02-21 12:14:46 +01:00
df67252078
fix
2026-02-21 12:14:22 +01:00
b239af9619
feat(auth): complete registration anti-spam and quota hardening
2026-02-21 12:13:01 +01:00
4fb95c872b
feat(auth): registration and login
2026-02-21 08:29:53 +01:00
795c7a835f
Auth: convert auth views and verification email to Nova layout
2026-02-21 07:37:08 +01:00
93b009d42a
Merge branch 'feature/forum-migration-v1' into develop
2026-02-19 08:36:46 +01:00
c30fa5a392
prepared and gallery fixes
2026-02-19 08:36:32 +01:00
8935065af1
feat(forum): add forum schema
2026-02-17 17:19:01 +01:00
41287914aa
Upload beautify
2026-02-17 17:14:43 +01:00
b053c0cc48
fixed gallery from legacy into one
2026-02-15 17:46:08 +01:00
7dbfdab40e
gallery
2026-02-15 16:49:15 +01:00
7734e53d87
fixed browse and tailwindcss style
2026-02-15 11:01:19 +01:00
d114472823
removed files
2026-02-15 09:47:24 +01:00
b2c9efe587
Merge branch 'feature/NovaDesignImplement' into develop
2026-02-15 09:25:23 +01:00
9dbe848412
Restore toolbar background to bg-nebula; add toolbar backdrop blur
2026-02-15 09:24:43 +01:00
79192345e3
Upload beautify
2026-02-14 15:14:12 +01:00
e129618910
toolbar fixed
2026-02-08 17:10:22 +01:00
f04854bb8d
fixed toolbar menu
2026-02-08 16:43:29 +01:00
3f7c22373e
fix
2026-02-08 10:43:28 +01:00
693b534514
fix
2026-02-08 10:43:01 +01:00
1a39ff3b09
fix
2026-02-08 10:42:51 +01:00
e055af9248
current state
2026-02-08 10:42:01 +01:00