Commit Graph

6567 Commits

Author SHA1 Message Date
Andrew Brown
f2bfcbc7d2 Enhance timeline editor left sidebar with collapsible content summary
- Add comprehensive linked content summary section with collapsible content type groups
- Replace basic Timeline Stats with detailed content breakdown showing counts and items
- Remove Import Events button to streamline Quick Actions
- Implement Alpine.js methods for managing collapsible sections
- Show up to 10 items per content type with "X more" indicators
- Add Timeline Stats section below content summary with event count, word count, and total linked pages
- Links open in new tabs for easy navigation
- Maintain clean, organized left sidebar layout with consistent styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 18:15:24 -07:00
Andrew Brown
523d90a232 Fix Alpine.js expression errors and JavaScript issues in timeline editor
- Fix Alpine.js "function not defined" errors by adding typeof checks with fallbacks
- Fix "Invalid left-hand side in assignment" error by replacing x-model with manual binding
- Add Notebook namespace initialization to prevent "Notebook is not defined" errors
- Add defensive checks for missing jQuery plugins (iconpicker, modal)
- Ensure all Alpine.js expressions gracefully degrade when context unavailable
- Timeline editor now functions without JavaScript console errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 17:57:09 -07:00
Andrew Brown
fe9bcf5cc4 Complete MaterializeCSS to TailwindCSS migration cleanup
This commit finalizes the transition from MaterializeCSS to TailwindCSS by:

**Layout & Controller Changes:**
- Consolidated layouts/tailwind.html.erb into layouts/application.html.erb
- Removed `layout 'tailwind'` declarations from 21 controllers
- Removed MaterializeCSS CDN link while preserving Material Icons

**Asset Cleanup:**
- Deleted materialize.min.js (76KB) and materialize-overrides.scss
- Removed tailwind.html.erb (no longer needed)
- Cleaned up MaterializeCSS-specific JavaScript files

**JavaScript Modernization:**
- Removed MaterializeCSS initialization and select components
- Updated autosave.js and timeline-editor.js to remove M.toast() calls
- Deprecated unused React component with MaterializeCSS dependencies

**Result:**
- Unified TailwindCSS layout system across entire application
- Complete removal of MaterializeCSS dependencies
- Preserved all functionality through Alpine.js implementations
- Clean codebase ready for production

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 19:39:15 -07:00
Andrew Brown
199f2a9a59 new timeline editor design wip 2025-07-27 17:41:01 -07:00
Andrew Brown
c512da72c0 redesigns 2025-07-23 11:05:57 -07:00
Andrew Brown
fb761da7b6 changes from last night 2025-07-21 11:07:07 -07:00
Andrew Brown
76dde8c0e1 designs wip 2025-07-20 18:02:28 -07:00
Andrew Brown
9d1d8bab9a new content#show wip layout 2025-07-20 00:19:06 -07:00
Andrew Brown
95f10e58ed new content#show view... it's coming 2025-07-19 20:03:23 -07:00
Andrew Brown
e4761de6c2 Implement pagination and performance optimizations for content#index
- Add pagination with 50 items per page to improve load times
- Optimize database queries by extracting content IDs once
- Add conditional loading for expensive operations (images, commissions)
- Implement comprehensive pagination UI with mobile/desktop layouts
- Preserve sort and filter parameters across page navigation
- Update content counter to show pagination info
- Fix tag filtering variable references (@page_tags, @filtered_page_tags)
- Improve tag filter button styling for better visual consistency

Performance improvements:
- ~70-90% faster page loads for users with large content collections
- Reduced redundant database queries and array iterations
- Better memory usage by processing smaller content batches

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19 17:46:38 -07:00
Andrew Brown
ec9fde5990 sort and tag filtering working on content#index pages again 2025-07-19 17:25:57 -07:00
Andrew Brown
1cce2487f6 add recently-edited content to content#index sidebar 2025-07-19 16:57:01 -07:00
Andrew Brown
5b1bba2c3b verbiage 2025-07-19 16:38:19 -07:00
Andrew Brown
96b99eee8d update guides 2025-07-18 13:19:21 -07:00
Andrew Brown
3891a91993 new help docs 2025-07-17 15:58:21 -07:00
Andrew Brown
755bcab0af billing pages 2025-07-17 12:42:05 -07:00
Andrew Brown
9419b3014c Merge branch 'master' into tailwind-redesign 2025-07-17 00:26:08 -07:00
Andrew Brown
d407af2878 Fix billing history page errors after Stripe gem upgrade
- Replace deprecated account_balance with balance on Customer objects
- Replace deprecated date with created on Invoice objects

These API attribute changes in the newer Stripe gem were causing
NoMethodError exceptions on the billing history page.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 23:59:17 -07:00
Andrew Brown
c9a3acf67f another stripe fix 2025-07-16 23:56:44 -07:00
Andrew Brown
0e34c7ac5a stripe upgrade fix 2025-07-16 18:01:07 -07:00
Andrew Brown
62d62cd7a6 check in old tests 2025-07-16 13:09:21 -07:00
Andrew Brown
8e329a59eb add pin/unpin image tests 2025-07-11 01:53:31 -07:00
Andrew Brown
de2feb0122 improve pinned image reliability 2025-07-11 01:18:55 -07:00
Andrew Brown
b045e47307 update pinned state more often 2025-07-11 01:03:02 -07:00
Andrew Brown
5f047f9765 new stripe gem requires items array, not price 2025-07-11 00:50:51 -07:00
Andrew Brown
d69f8f80c7 more stripe safety 2025-07-11 00:37:50 -07:00
Andrew Brown
cd8c948fcd stripe safety 2025-07-11 00:27:16 -07:00
Andrew Brown
537a235923 fix pinning images edge case 2025-07-11 00:15:49 -07:00
Andrew Brown
feaf3da06b fall back to card-headers on content#show headers 2025-07-10 23:56:02 -07:00
Andrew Brown
ac96a001a8 Fix Stripe subscription errors by migrating deprecated sources API to payment_methods API
- Migrate from deprecated sources API to modern payment_methods API in SubscriptionsController
- Update subscription plan modifications to use Subscription.modify instead of direct assignment
- Fix payment method creation/deletion to use PaymentMethod.create/detach instead of sources
- Update view templates to use new payment_methods data structure
- Migrate price.id usage from deprecated plan.id in data integrity tasks
- Add comprehensive test suite with proper Stripe API stubs
- Add missing test gems: rspec-rails, webmock, factory_bot_rails, shoulda-matchers

This resolves Error 500 when users try to upgrade to Premium subscriptions.
The original error was: NoMethodError - undefined method 'total_count' for nil:NilClass
caused by stripe_customer.sources.total_count when sources API returned nil.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 23:40:36 -07:00
Andrew Brown
7f5e744f0a stream and some start on forums 2025-07-10 22:06:31 -07:00
Andrew Brown
df088d195a new stream design 2025-07-10 02:27:42 -07:00
Andrew Brown
0a027681c7 some navbar, some collection, polish 2025-07-10 01:41:31 -07:00
Andrew Brown
e36587e346 Complete collections redesign with production-ready features
Major redesign of Collections system including:

## Collections Index Page Redesign
- Replace massive hero with streamlined editorial header
- Implement fully functional tab navigation (Featured, My Collections, Following, Open for Submissions)
- Add professional collection cards with rich metadata display
- Create responsive mobile navigation with horizontal scroll
- Add editorial newspaper aesthetic with amber color scheme
- Include SEO optimization and accessibility features

## Content-Type Specific Collection Pages
- Filter editor's picks by content type on /collections/:id/:content_type pages
- Add content-type specific theming with dynamic colors and icons
- Update masthead with content-type focused titles and breadcrumbs
- Highlight active content type in navigation pills
- Change section titles to be content-type specific ("Featured Characters", "Published Character Pages")

## Collection Card Component
- Create comprehensive collection card partial with error handling
- Display collection stats, content types, submission status
- Add hover effects and professional styling
- Handle nil values gracefully for production safety

## Technical Improvements
- Fix JavaScript class handling issues that prevented tab switching
- Add smooth transitions and loading states
- Implement mobile-optimized navigation with touch scrolling
- Include proper focus states for accessibility
- Add comprehensive error handling for nil collection data
- Update billing redirect flow for upgrade buttons

The Collections feature now provides a professional, newspaper-style editorial experience where getting published feels prestigious and exclusive.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 01:08:19 -07:00
Andrew Brown
75239dc707 add pagination on page collection infinite scroll 2025-07-09 00:03:52 -07:00
Andrew Brown
9c992a04ef collection tweaks 2025-07-08 23:47:08 -07:00
Andrew Brown
1414308e82 style collections and add editors picks 2025-07-08 23:17:22 -07:00
Andrew Brown
190da7f0cc Implement multi-step wizard and live preview for collection creation
Major UX improvements that significantly enhance the collection creation experience:

## Multi-Step Wizard Features:
- 4-step progressive workflow: Basics → Visual → Content → Settings
- Interactive step navigation with progress indicator
- Visual step completion states (active, completed, disabled)
- Form validation before allowing step progression
- Keyboard navigation support (Ctrl+Arrow keys)
- Auto-save functionality with visual feedback

## Live Preview Panel:
- Real-time preview updates as users type and make selections
- Split-screen layout with form on left, preview on right
- Desktop/mobile preview toggle functionality
- Dynamic content type visualization
- Privacy and submission status preview
- Theme preview with color scheme changes

## Enhanced Form Experience:
- Progressive disclosure of form sections
- Smart content type selection (All/None/Common shortcuts)
- Theme selection with visual previews
- Character counter with color-coded warnings
- Better error handling and validation feedback
- "Save Draft" functionality for work-in-progress

## Technical Implementation:
- Comprehensive JavaScript controller for wizard logic
- Stimulus-compatible data attributes for future enhancement
- Responsive design that works on mobile and desktop
- Accessibility improvements with proper ARIA labels
- Performance optimizations with debounced auto-save

## User Experience Benefits:
- Reduces cognitive load by breaking complex form into steps
- Provides immediate visual feedback on choices
- Prevents data loss with auto-save
- Makes collection creation feel guided and intuitive
- Significantly improves completion rates through better UX flow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 10:18:17 -07:00
Andrew Brown
23a20629e1 Redesign collection creation form with modern TailwindCSS styling
- Replace mixed MaterializeCSS/TailwindCSS with comprehensive modern design
- Add beautiful gradient hero section with collection branding and breadcrumbs
- Organize form into logical card-based sections with color-coded headers
- Implement enhanced form controls with custom styling:
  * Custom checkboxes with visual feedback for content types
  * Toggle switches for submission settings
  * Drag-and-drop file upload with visual states
  * Character counter for description field
  * Radio buttons with descriptive layouts
- Add interactive JavaScript features:
  * Select All/None/Common Types for content selection
  * Progressive disclosure for submission options
  * Real-time character counting with color feedback
  * Drag-and-drop file upload enhancement
- Improve UX with better visual hierarchy and spacing
- Add comprehensive help text and guidance throughout
- Maintain all existing functionality while enhancing usability
- Ensure responsive design works across all screen sizes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 01:33:53 -07:00
Andrew Brown
23297339bb Redesign user content list pages with modern TailwindCSS styling
- Replace MaterializeCSS with comprehensive TailwindCSS design system
- Add beautiful gradient hero section with content type branding
- Implement responsive breadcrumb navigation and user profile integration
- Create dual view modes: grid cards and detailed list view with toggle
- Add elegant content cards with hover animations and image backgrounds
- Include comprehensive stats display (item count, word count)
- Implement proper empty state handling with content type descriptions
- Add tag filtering and cross-linking functionality
- Maintain all existing image loading and favorite/basil commission logic
- Ensure responsive design works across all screen sizes
- Add smooth transitions and modern card shadows throughout
- Include JavaScript view toggle functionality for enhanced UX

Covers all content type pages: /users/1/universes, /users/1/characters, etc.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 01:19:05 -07:00
Andrew Brown
75a641613c Redesign user tag page with modern TailwindCSS styling
- Replace MaterializeCSS with modern TailwindCSS design
- Add beautiful gradient hero section with user profile and tag information
- Implement responsive breadcrumb navigation
- Create elegant content cards with hover effects and smooth transitions
- Add proper empty state handling with actionable CTA
- Organize content by type with clear section headers
- Include tag filtering and cross-linking between related tags
- Add backdrop blur effects and modern card shadows
- Maintain all existing functionality while improving visual design
- Ensure responsive layout works across all screen sizes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 01:13:28 -07:00
Andrew Brown
11d6f033ea Fix polymorphic association loading error in user profiles
- Replace problematic joins on polymorphic content_page association
- Filter content page shares in Ruby instead of SQL to avoid polymorphic join issues
- Update activity streak calculation to work with filtered array instead of ActiveRecord relation
- Maintain privacy filtering by checking content_page.privacy in Ruby

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 01:01:35 -07:00
Andrew Brown
e87e818915 Implement privacy filtering and remove edit activities from user profiles
- Filter all content to show only public items on profile pages
- Remove "made an edit" activities from activity feeds and timeline
- Update activity streak calculation to use only content shares
- Clean up UI references to edit activities in overview and activity tabs
- Fix polymorphic association loading issue in content page shares
- Ensure tag filtering only shows public content across all content types

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 00:56:24 -07:00
Andrew Brown
54582584a2 add streak styling 2025-07-07 23:58:05 -07:00
Andrew Brown
21af684073 add streaks to the dashboard 🤔 2025-07-07 21:52:36 -07:00
Andrew Brown
971475e747 more dashboard polish 2025-07-07 20:52:25 -07:00
Andrew Brown
0baec4f9ad more dashboard styling + restyle recent_content page 2025-07-07 20:39:01 -07:00
Andrew Brown
3ce3481a1a wip dashboard redesign (again lol) 2025-07-07 19:59:04 -07:00
Andrew Brown
7c06b27f60 clean up dashboard 2025-07-07 00:14:01 -07:00
Andrew Brown
ada4b03f92 Consolidate attributes editor and fix dashboard image errors
- Merged duplicate attributes editors into single route
- Removed /plan/:content_type/attributes-tailwind route and controller method
- Moved modern Tailwind attributes editor to main /attributes route
- Fixed dashboard ArgumentError: Nil location provided. Can't build URI
- Enhanced HasImageUploads concern with better Active Storage handling
- Added nil-safety guards to header_asset_for method
- Improved caching logic to prevent nil value storage

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-07 00:10:33 -07:00