Commit Graph

6240 Commits

Author SHA1 Message Date
Andrew Brown
9b145e5f2b remove ujs handling of pinning images so our custom click handling can handle it (doubled up, oops) 2025-10-01 22:21:49 -07:00
Andrew Brown
d1225c30c5 Fix migration error: Use .all.group_by instead of .group_by on model class
The AddPositionToImageUploads migration was calling group_by directly on the ImageUpload class instead of on a collection. This fixes the NoMethodError by properly calling ImageUpload.all.group_by.

Also updates Gemfile.lock with arm64-darwin platform support after bundle install.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 16:28:24 -07:00
Andrew Brown
3607e1f370 be extra safe with the filters 2025-07-19 17:48:29 -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
11136b9115 Revert "Start free Basil month"
This reverts commit b0a2e1e2e9.
2025-06-30 23:10:14 -07:00
Andrew Brown
50035d6945 polish tag browser header on small screens 2025-06-30 21:01:20 -07:00
Andrew Brown
37e5647a67 metadata on artfight2025 directory 2025-06-30 20:44:57 -07:00
Andrew Brown
1956c7aad8 Add comprehensive tests for FoldersController
This commit adds test coverage for the FoldersController, including tests for:
- Authentication requirements
- Creating folders and subfolders
- Updating folders
- Viewing folders
- Filtering by favorites and tags
- Deleting folders
- Security (preventing access to other users' folders)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 12:18:28 -07:00
Andrew Brown
4f1abc82cd release polish 2025-06-30 01:30:13 -07:00
Andrew Brown
f3e4fab02e
Merge pull request #1391 from indentlabs/new-gallery
July release
2025-06-29 23:28:42 -07:00
Andrew Brown
c42a55c9cd don't sort pinned items first in lists 2025-06-29 23:26:38 -07:00
Andrew Brown
60c355a6f0 verbiage 2025-06-27 16:46:23 -07:00
Andrew Brown
34677ee558 check in generated tests 2025-06-27 16:28:31 -07:00
Andrew Brown
572960255c unify logic for content#show / content#edit / content#gallery image lists 2025-06-27 15:46:21 -07:00
Andrew Brown
fe63a25781 combine images/commissions (thanks claude) 2025-06-27 13:31:18 -07:00
Andrew Brown
848dd02b2e switch class name to avoid materializecss clash 2025-06-27 12:14:48 -07:00
Andrew Brown
f72a1c894c fix from last night 2025-06-27 11:03:29 -07:00
Andrew Brown
43141cd582 silly claude 2025-06-26 23:52:16 -07:00
Andrew Brown
31a1e1dd09 silly claude 2025-06-26 23:41:20 -07:00
Andrew Brown
307bb4137d galleries cleanup & image reordering 2025-06-26 22:48:49 -07:00
Andrew Brown
0f57473bd9 new gallery ui 2025-06-25 18:49:03 -07:00
Andrew Brown
ca550d569b new full gallery page + polishing up artfight integration 2025-06-24 23:01:44 -07:00
Andrew Brown
f12009f981 verbiage 2025-06-24 00:20:33 -07:00
Andrew Brown
22d58b89ec Fix 'showHowToJoinModal is not defined' error
- Switched to Materialize's built-in modal trigger mechanism
- Added proper modal-trigger class to help button
- Replaced inline onclick handler with data-target attribute
- Properly initialized all modals using document.querySelectorAll
- Added event listener for direct programmatic control
- Used getInstance pattern for reliable modal manipulation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 00:17:33 -07:00
Andrew Brown
46f420a5b5 Fix non-functioning help button for ArtFight2025 page
- Replaced link with proper clickable button element
- Added inline onclick handler for immediate response
- Pre-defined modal structure in HTML instead of generating it dynamically
- Simplified JavaScript modal initialization for reliability
- Fixed event handling to ensure proper click response

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 00:14:41 -07:00
Andrew Brown
ca99db55ed Add left alignment for cards and how-to-join info for ArtFight2025 page
- Fixed card alignment on incomplete rows to align left instead of right
- Added help button in header area with question mark icon
- Implemented modal with step-by-step instructions for joining the showcase
- Created styles for the how-to-join modal with proper highlighting
- Added JavaScript to dynamically create and show the modal
- Made help button stand out with pulse effect for visibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 00:05:09 -07:00
Andrew Brown
6facc8fcea Revert to standard Materialize grid for better card density
- Switched from CSS Grid to standard Materialize column grid
- Fixed card width issues so cards properly fill available space
- Ensured cards maintain consistent heights within rows
- Added proper margins for better spacing between card rows
- Set consistent card image heights for better visual alignment
- Used flexbox approach that works better with Materialize CSS

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:58:31 -07:00
Andrew Brown
60756dd557 Improve card grid layout with CSS Grid for consistent heights
- Replaced flexbox approach with CSS Grid for better card consistency
- Removed force-stretched content elements while maintaining grid structure
- Implemented grid-template-rows for proper content alignment
- Added responsive breakpoints to handle different screen sizes
- Removed unnecessary flex constraints from card elements
- Preserved natural content flow while achieving consistent card heights

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:54:09 -07:00
Andrew Brown
b40323282c Fix card height consistency in ArtFight2025 browse grid
- Set fixed card heights using flexbox for consistent grid layout
- Added flex properties to ensure proper spacing of card elements
- Made card heights responsive on smaller screens
- Added special media queries for tablet-sized screens
- Improved overall grid layout with flex display properties
- Enhanced mobile responsiveness for cards

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:51:10 -07:00
Andrew Brown
59938d2a97 Enhance ArtFight2025 page with modern UI improvements
- Complete redesign of the tag browsing experience
- Added interactive content filtering system by category
- Enhanced header with improved branding and statistics
- Modernized card design with improved visual hierarchy
- Redesigned tags to use pill format for better readability
- Added detailed creator attribution on all cards
- Improved card information architecture with clearer sections
- Enhanced card reveal with more structured information
- Added CSS variables for consistent color theming
- Implemented responsive design improvements for mobile
- Added JavaScript for interactive filtering functionality

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:41:02 -07:00
Andrew Brown
bab2f7da06 manual polish 2025-06-23 23:36:12 -07:00
Andrew Brown
b664bc2550 Simplify privacy text on ArtFight2025 browse page
- Replaced formal notice panel with subtle grey text
- Positioned as a simple text line at the top right
- Added small lock_open icon for visual indicator
- Kept the core message about private-by-default content
- More elegant and less obtrusive approach

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:33:25 -07:00
Andrew Brown
1f7ed88ef9 Add privacy notice to ArtFight2025 browse page
- Added subtle blue info panel at top of page
- Clarifies that all Notebook.ai content is private by default
- Reminds users that displayed content was explicitly made public by creators
- Designed to be informative but not take up excessive screen space

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:31:51 -07:00
Andrew Brown
574cfcd6ff Add site-wide ArtFight2025 tag browsing page
- Created new /browse/tag/ArtFight2025 endpoint
- Added browse controller for site-wide content display
- Fixed tag slug case-sensitivity for reliable content retrieval
- Implemented a design that highlights the ArtFight2025 tag
- Show all content tags on each card for context
- Prioritize character display at the top of search results

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 23:28:50 -07:00
Andrew Brown
78b86cfaae add ArtFight2025 tag suggestion 2025-06-23 22:47:57 -07:00
Andrew Brown
83197ced56 add new tags page to profiles 2025-06-23 21:51:26 -07:00
Andrew Brown
0cc79606ee
Merge pull request #1273 from indentlabs/new-issue-templates
Update issue templates
2025-06-02 22:09:17 -07:00
Andrew Brown
5ebcc30bcf
Merge branch 'master' into new-issue-templates 2025-06-02 22:05:48 -07:00