Routes Gemini API calls through RunPod serverless endpoint in the US
to avoid geo-blocking issues when server is in Germany.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove RunPod proxy dependency for image generation
- Call Gemini API directly with gemini-2.0-flash-exp-image-generation
- Keep enhanced prompt with text rendering instructions
- Use IMAGE-only response modality for better results
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Auto-save topic, style, and tone as user types
- Show "Saved Draft Found" banner on page load with restore option
- Clear draft automatically when zine creation completes
- Allows users to resume if they back out of the creation process
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The mask was generated at a fixed 768x1024 size but the actual page
image could be different dimensions, causing Fal.ai to return a 400
error. Now using sharp to resize the mask to match the image before
sending to the API.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enter key confirms selection when valid area is drawn
- Escape key cancels and closes the selector
- Updated button text to "Edit This Area ↵" for clarity
- Added help text showing keyboard shortcuts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TextSelectionCanvas component for drawing rectangle selections
- Add inpaint-text API endpoint using Fal.ai FLUX Pro Fill
- Integrate "Edit Text Region" UI in the refine step
- Users can now select text areas and replace them without regenerating the full page
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The queue polling was timing out. Switch to fal.run synchronous
endpoint which waits for the result directly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Required for Fal.ai FLUX img2img in zine regeneration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Refine/Revise/Regenerate mode selection in zine creator
- Refine (0.25 strength): keeps most of image, minor tweaks
- Revise (0.5 strength): keeps composition, changes elements
- Regenerate: creates completely new image (existing behavior)
- Use Fal.ai FLUX dev model for img2img processing
- Better UX for iterative refinement without losing good work
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
On zine.mycofi.earth, URLs should be /create not /zine/create.
Added useZinePath hook to adjust paths based on hostname.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Direct Gemini API calls are geo-blocked in Germany. Must use
RunPod US proxy endpoint to bypass the restriction.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace deprecated Imagen 3 and RunPod proxy with direct Gemini
2.0 Flash Image Generation API call. Removes unused model functions
and simplifies the image generation flow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Try Imagen 3 first (best quality, $0.03/image)
- Fall back to Gemini via RunPod if Imagen fails
- Uses 3:4 aspect ratio for portrait zine pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use dedicated image generation model for better quality
- Add enhanced prompt instructions for better text rendering
- Use IMAGE-only responseModality for cleaner output
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The route was calling Gemini directly instead of using the US proxy.
Now uses the same RunPod endpoint as mycro-zine to bypass geo-blocks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Route Gemini image generation through RunPod US-based serverless
endpoint to bypass geo-restrictions in Germany. Uses same approach
as zine.jeffemmett.com (mycro-zine).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Gemini image generation is geo-blocked in Germany (server location).
Use RunPod's Automatic1111 endpoint instead for zine page images.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Handle trailing commas, control characters, and malformed responses.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Switches from direct Listmonk API to newsletter-api endpoint
which handles subscription + sends welcome email immediately.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Switch from text fallback to actual image generation using
gemini-2.0-flash-exp-image-generation model with responseModalities.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create /app/data/zines directory in Dockerfile with nextjs user ownership
to fix EACCES permission denied error. Add persistent volume mount in
docker-compose.yml to preserve zine data across container restarts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add og-image.jpg (1200x630) for link previews
- Add metadataBase, openGraph, and twitter metadata to layout.tsx
- Improves SEO and social media link appearance
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated all branding references from MycoZine to MycroZine for
consistency with the mycro-zine project naming convention.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Routes zine.mycofi.earth root to /zine content so it works
like zine.jeffemmett.com - showing the zine generator directly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Configure service with Traefik labels for mycofi.earth
- Join traefik-public network for service discovery
- Remove direct port exposure (routing through Traefik now)
- Remove deprecated docker-compose version field
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add output: 'export' to next.config.mjs and set build command to npm run build with output directory out.
#VERCEL_SKIP
Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
Replace transparent footer with solid white and change badge background for better opacity.
Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
Create stylish placeholder page for MycoFi shop with branding and email form.
Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>