You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: portal collections with thumbnails, context-aware navigation, and asset browser (#282)
* feat: add grid/table view toggle for My Assets and Shared With Me pages
Add a persistent toggle between thumbnail grid and dense table view
for asset listing pages. The preference is stored in localStorage and
shared across both pages.
* feat: collections system with thumbnails, context-aware navigation, and asset browser
- Add portal collections: create, edit, view, delete, share, and public viewer
- Auto-generate collection thumbnails as mosaic of asset thumbnails
- Context-aware back navigation via URL paths (/collections/:id/assets/:assetId,
/shared/assets/:id) so the back arrow always goes to the correct parent
- Replace inline asset search with full browse modal (search, sort, thumbnails)
- Add asset preview modal for quick-viewing content without navigating away
- Show collection associations on asset list pages (grid and table views)
- Show aggregated asset tags on collection list instead of section count
- Skip create dialog for new collections, go straight to editor
- Add delete collection with confirmation in editor toolbar
- Add confirmation on asset removal from collection sections
- Preserve thumbnails across dev restarts (skip S3 re-upload if content exists)
- Add fresh audit events on each dev restart (50 unique events per start)
- Fix S3 key prefix for collection thumbnails (portal/ prefix)
- Add 3rd seed collection with sections and items
* fix: address PR review issues — N+1 query, targeted permission check, test coverage
- Replace per-asset Get() loop in fetchAssetMap with batch GetByIDs query
- Add GetUserCollectionPermission to ShareStore for targeted access checks
instead of loading all shares and filtering in Go
- Fix struct alignment in main.go Deps literal
- Fix pre-existing TestPublicViewContentViewerBundle failure
- Extract helpers to reduce cyclomatic complexity in List and handlers
- Add test coverage for collection_handler.go, collection_store.go, and
public.go collection additions (91.5% package coverage)
- Propagate new interface methods to all mock implementations
E'Comprehensive **quarterly business review** package prepared for the executive leadership team.\n\nThis collection brings together financial results, operational metrics, and strategic insights from Q3 2025. Each section focuses on a different aspect of business performance.\n\n> *"Data is the new oil, but only if you refine it."*\n\n### How to use this collection\n\n- Start with the **Financial Overview** for top-line results\n- Review **Operations & Inventory** for supply chain health\n- Finish with **Technical Architecture** for platform investment context',
E'A focused analysis of **regional sales performance** across all product categories and store locations.\n\nThis collection was assembled to support the upcoming regional managers meeting. It includes:\n\n1. Revenue dashboards with week-over-week trends\n2. Store-level comparisons and rankings\n3. Geographic heatmaps for visual pattern recognition\n\n---\n\n*Prepared by the Analytics team using the ACME Data Platform.*',
E'This is a demo collection. Bacon ipsum dolor amet ground round porchetta filet mignon turducken chicken hamburger tenderloin jowl jerky strip steak alcatra shoulder.\n\nA curated set of dashboards, reports, and analyses covering 2025 sales performance across all regions.',
E'Top-line **financial results** for Q3 2025.\n\nKey metrics to watch:\n- Revenue vs. plan\n- Margin trends\n- Year-over-year growth rates',
528
+
0, NOW() - interval '2 days'
529
+
),
530
+
(
531
+
'sec-002', 'coll-001',
532
+
'Operations & Inventory',
533
+
E'Supply chain health and inventory management metrics.\n\nThis section highlights stock levels, reorder alerts, and warehouse utilization across all categories.',
534
+
1, NOW() - interval '2 days'
535
+
),
536
+
(
537
+
'sec-003', 'coll-001',
538
+
'Technical Architecture',
539
+
E'Overview of the **data platform architecture** powering these analytics.\n\n```\nSources → Ingestion → Warehouse → Serving → Dashboards\n```\n\nIncluded for context on platform investment and capabilities.',
540
+
2, NOW() - interval '2 days'
541
+
),
542
+
-- Collection 2: Regional Sales Deep Dive
543
+
(
544
+
'sec-004', 'coll-002',
545
+
'Revenue Dashboards',
546
+
E'Interactive revenue views showing **weekly trends** and category breakdowns.\n\nUse these to identify:\n- Which categories are driving growth\n- Week-over-week momentum shifts\n- Seasonal patterns emerging in Q3',
547
+
0, NOW() - interval '1 day'
548
+
),
549
+
(
550
+
'sec-005', 'coll-002',
551
+
'Store Rankings & Comparisons',
552
+
E'Head-to-head store performance analysis covering:\n\n| Metric | Description |\n|--------|-------------|\n| Revenue | Total sales volume |\n| Traffic | Foot traffic counts |\n| Conversion | Visit-to-purchase rate |\n\nStores are ranked by composite score.',
553
+
1, NOW() - interval '1 day'
554
+
),
555
+
(
556
+
'sec-006', 'coll-002',
557
+
'Geographic Analysis',
558
+
E'Visual **geographic breakdown** of sales by region and product category.\n\nThe heatmap reveals concentration patterns that are not obvious from tabular data alone.',
559
+
2, NOW() - interval '1 day'
560
+
)
561
+
,
562
+
-- Collection 3: 2025 Sales Insights
563
+
(
564
+
'sec-007', 'coll-003',
565
+
'Sales Overview',
566
+
E'Top-level revenue and performance dashboards for 2025.',
567
+
0, NOW() - interval '1 day'
568
+
),
569
+
(
570
+
'sec-008', 'coll-003',
571
+
'Regional Breakdown',
572
+
E'Regional performance analysis with geographic visualizations.',
0 commit comments