Commit Graph

1401 Commits

Author SHA1 Message Date
Andrew Brown
f6b7236a92 Add icon rotation animation to dashboard button and fix redirect issue
- Added custom CSS animation for casino icon that rotates 90 degrees on hover
- Fixed ContentController#new to redirect to edit page instead of show page with editing parameter
- Added transform utilities to Tailwind safelist to prevent purging
- Changed redirect from polymorphic_path(@content, editing: true) to edit_polymorphic_path(@content)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 19:26:45 -07:00
Andrew Brown
f1a2d92f34 wip stuff from the before times 2025-09-01 18:42:26 -07:00
Andrew Brown
7dbc2fa00b documents#index redesign 2025-08-19 22:24:53 -07:00
Andrew Brown
2598b5c638 wip timeline design 2025-08-19 19:10:38 -07:00
Andrew Brown
44c60b1d94 Add drag & drop reordering for timeline events
- Add drag handles to timeline event cards with hover animations
- Implement jQuery UI Sortable for intuitive drag & drop reordering
- Create internal /sort/timeline_events API endpoint using acts_as_list
- Fix jQuery UI off-by-one position reporting with universal -1 adjustment
- Add comprehensive drag feedback with placeholders and visual states
- Preserve existing dropdown move options for accessibility
- Include mobile-responsive touch-friendly drag areas

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-02 00:37:51 -07:00
Andrew Brown
3d6ce69488 Fix tag disappearing issue during timeline filtering and optimize performance
- Initialize eventTags object from server-rendered DOM data on page load
- Add fallback in getEventTags() to scrape tags from DOM when cache is undefined
- Optimize updateMainPanelTags with DOM query caching and content change detection
- Remove redundant tag update calls during filtering to improve performance
- Add proper cache invalidation when tags are added/removed
- Only update highlight styling when actually needed during filter mode changes

This resolves the issue where tags would disappear when filtering timeline events
by ensuring the JavaScript tag data is always synchronized with the server-rendered content.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 22:23:45 -07:00
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
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
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
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
de2feb0122 improve pinned image reliability 2025-07-11 01:18:55 -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
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
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
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
21af684073 add streaks to the dashboard 🤔 2025-07-07 21:52:36 -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
Andrew Brown
a381a4a3f3 universe docs/help 2025-07-06 23:34:13 -07:00
Andrew Brown
c3bb6f453b Implement dynamic navbar autocomplete search functionality
- Add real-time autocomplete endpoint with fast name-only queries
- Replace static search form with interactive Alpine.js component
- Include 300ms debounced search with keyboard navigation support
- Add instructional help dropdown when search input is focused but empty
- Implement proper content type icons with hex colors instead of CSS classes
- Add database indexes for optimized name searches across all content types
- Support arrow key navigation, Enter to select/search, Escape to close
- Maintain full search functionality as fallback for comprehensive results

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 22:49:33 -07:00
Andrew Brown
96500df2ec polish search 2025-07-06 19:38:37 -07:00
Andrew Brown
d1fc5cb459 implement database-agnostic multi-word search functionality
- Replace PostgreSQL ILIKE with cross-database LOWER/LIKE queries
- Add multi-word search support with AND logic (e.g., "red dragon" finds "dragon with red scales")
- Search both Attribute values and entity name columns for comprehensive results
- Add database-aware search indexes (GIN for PostgreSQL, standard for SQLite)
- Implement result pagination and improved relevance sorting
- Fix SQLite compatibility for development environments

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 19:10:21 -07:00
Andrew Brown
419285c08a add documentation about templates 2025-07-05 18:28:21 -07:00
Andrew Brown
e0a511b50f fix field deletion & tone down header styling 2025-07-05 17:38:20 -07:00
Andrew Brown
e1c397d8f8 add more export formats and fill out import template section 2025-07-04 23:39:01 -07:00
Andrew Brown
f9f19386de more template editor tweaks 2025-07-03 23:10:38 -07:00
Andrew Brown
f2811388d7 template editor tweaks from claudy 2025-07-03 16:55:33 -07:00
Andrew Brown
df56671ed3 new template editor 2025-07-02 22:35:56 -07:00
Andrew Brown
fd7c5b7b6b move universe selector into sidebar 2025-07-02 00:12:16 -07:00
Andrew Brown
ca3db787f3 Fix route helper reference in document analyses controller 2025-07-01 01:12:31 -07:00
Andrew Brown
95ad08a039 Add document analysis landing page and dashboard hub
- Created a landing page for logged-out users showcasing document analysis features
- Built a functional dashboard hub for logged-in users with analysis tools and insights
- Added new routes and controller actions to handle both views
- Updated sidebar link to point to the new analysis hub
- Added analysis count badge to sidebar navigation

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

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