Remove 'use client' directive from 10 documentation pages that don't
use client-side features. Pages are pure static content; the DocPage
wrapper component handles any client-side functionality.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update default aspect ratio references from 1:1 to 16:9 in:
- Generation guide
- Live Scopes API reference
- Live URLs guide
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update default aspect ratio for image generation to 16:9 widescreen
format, matching common display resolutions and user expectations.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added all documentation pages to sitemap.xml:
- Getting Started (/docs)
- Image Generation (/docs/generation)
- Working with Images (/docs/images)
- Live URLs (/docs/live-urls)
- Authentication (/docs/authentication)
- API Reference (/docs/api)
- API: Generations, Images, Flows, Live Scopes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Multiple disabled nav items share the same href '#', causing React
duplicate key warning. Changed key from item.href to item.label
which is guaranteed to be unique.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added optional disabled property to NavItem interface
- Disabled items show gray text and cursor-not-allowed
- Desktop: Tooltip on hover shows "Coming soon"
- Mobile: Inline "(Coming soon)" label after item text
- Uses aria-disabled for accessibility
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Created (landings) route group for home page with sticky header
- Created (apps) route group for docs/demo/admin with scrollable header
- Moved page components to respective route groups
- Updated root layout to be minimal (no header/footer)
- Each route group has its own layout with appropriate header style
- Updated Footer and layouts to use public folder logo path
This enables sticky header on landing pages while docs/demo pages
have a header that scrolls away with content.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Next.js usePathname() returns paths with trailing slashes during static
generation (e.g., /docs/) but navigation hrefs use paths without trailing
slashes (e.g., /docs). The strict equality comparison was always failing.
Added path normalization to strip trailing slashes before comparison.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Mark enhancementOptions.template as planned feature - currently
all prompts use default 'general' style regardless of parameter.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all API documentation to reflect new storage architecture:
- storageKey: {org}/{project}/img/{imageId} (UUID, no extension)
- storageUrl: https://cdn.banatie.app/{org}/{project}/img/{imageId}
- Add URL Architecture section to live-url.md
- Update all example responses with new format
- Document UUID vs alias URL routing differences
- Clarify that filename = image.id (UUID)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
VPS-specific Claude Code configuration file, not tracked in git.
Create this file manually on VPS for local context.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add test to validate storageKey format: {org}/{proj}/img/{uuid}
- Add test to validate storageUrl format matches CDN pattern
- Verify UUID in storage path matches image.id
- Update 06-edge-cases.rest to use new path format
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add mc anonymous set download for CDN public read access
- Create docs/url-fix-vps-site.md with VPS deployment instructions
- Create docs/url-fix-cloudflare-site.md with Cloudflare caching config
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove category from all storage methods
- Change filename to imageId (UUID) across all services
- Update StorageService interface: orgId→orgSlug, projectId→projectSlug
- Update MinioStorageService to use new path format
- Update all route handlers (cdn, images, upload, live, textToImage)
- Update GenerationService and ImageService for new storage keys
- CDN URL format: cdn.banatie.app/{org}/{proj}/img/{imageId}
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>