Skip to content

Release v1.2.0: Process Mode Enhancements & Smart Hub Improvements#5

Merged
IanLiYi1996 merged 20 commits into
mainfrom
dev
Feb 5, 2026
Merged

Release v1.2.0: Process Mode Enhancements & Smart Hub Improvements#5
IanLiYi1996 merged 20 commits into
mainfrom
dev

Conversation

@IanLiYi1996
Copy link
Copy Markdown
Owner

Summary

This release includes significant improvements to the Process mode, dual storage backup, and various bug fixes.

New Features

  • Smart Document Hub - Unified document processing system with multiple modes
  • Dual Storage Backup - Images stored in both S3 and UploadThing for redundancy
  • Slide Gallery View - View all generated slides in a grid with lightbox
  • Customizable Generation Parameters - Configure aspect ratio and image size in Process mode
  • Auto-detect Aspect Ratio - Automatically match original image dimensions
  • Export Without Processing - Export original images directly without AI processing
  • Auto-generated Titles - AI generates presentation titles with inline editing
  • Custom Style Templates - Add custom style prompts for generation

Improvements

  • Process Mode UI - Completely redesigned with gallery/single view toggle
  • File Passing - Uploaded files automatically passed to Process mode session
  • Annotation Canvas - Maintains correct aspect ratio, exports at original resolution
  • Bedrock Claude Sonnet 4.5 - Added for image analysis and content generation

Bug Fixes

  • Fix annotation canvas aspect ratio distortion
  • Fix annotated images exporting at original resolution
  • Fix PDF.js SSR DOMMatrix error with dynamic import
  • Fix React key warning in RecentHubSessions
  • Fix green overlay covering entire page (missing relative positioning)
  • Fix YunwuService to include source image in modification requests
  • Fix internal HTTP fetch error by calling service directly

Infrastructure

  • Migrate from PostgreSQL (Aurora) to S3 storage
  • Remove DATABASE_URL dependency
  • Add GitHub Actions workflow for code quality checks
  • Remove Prezi feature and fix Cognito SSO authentication

Test Plan

  • Test Process mode with image upload
  • Test annotation and export at original resolution
  • Test generation parameter customization
  • Test dual storage backup
  • Test slide gallery view

🤖 Generated with Claude Code

ianleely and others added 20 commits February 4, 2026 09:49
## New Features
- Unified `/create` entry point with three processing modes:
  - Generate: Create presentations from text input
  - Process: Edit/modify existing documents/images
  - Extract: Extract content from documents

- Smart mode detection based on input type (text/PDF/image)
- Image provider switching (Yunwu / Z-Image-Turbo)
- Tavily web search integration for outline generation
- Image annotation tools (circle, rectangle, arrow, pen)
- Comprehensive export options (PDF, PPTX, PNG, ZIP, Markdown)

## Technical Changes
- New unified session management via S3 (hub-session-service)
- Zustand state management (smart-hub-state)
- Bedrock Claude as default for outline generation
- Configurable presentation settings (style, aspect ratio, resolution)

## Migration
- Merged `/presentation` and `/document-processor` into `/create`
- Removed legacy presentation and document-processor components
- Updated navigation in HomePage and GlobalSidebar

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Workflow Jobs

1. **Lint & Type Check**
   - TypeScript type checking (pnpm type)
   - Biome linting (pnpm lint)

2. **Build** (depends on lint)
   - Next.js production build verification

3. **CDK Synth** (depends on lint)
   - AWS CDK template synthesis verification

## Triggers
- Push to main/dev branches
- Pull requests to main

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Bug Fixes

1. **Input text not passed to generate page**
   - SmartHubLanding now passes inputText when creating session
   - session/route.ts accepts and forwards inputText
   - hub-session-service stores inputText in session

2. **Config settings not persisting**
   - generate/page.tsx now saves config to backend via PATCH
   - Settings changes are immediately persisted to session

3. **Add theme selection**
   - Added PresentationTheme type with 6 theme options
   - GenerateConfigDialog includes theme selector with color preview
   - Slide generation prompts include theme color instructions
   - Modification prompts maintain theme consistency

## Files Changed
- SmartHubLanding.tsx: Pass inputText on session creation
- session/route.ts: Accept inputText parameter
- hub-session-service.ts: Store inputText and theme in session
- generate/page.tsx: Persist config changes to backend
- GenerateConfigDialog.tsx: Add theme selector UI
- smart-hub.ts: Add PresentationTheme type
- slide/route.ts: Include theme in generation prompts
- modify/route.ts: Include theme in modification prompts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Changes

1. **Style Template Presets** - Added 7 preset style templates:
   - ✏️ Hand-Drawn Sketchbook - Warm, creative illustration style
   - 📐 Modern Blueprint - Technical architectural style
   - ▫️ Minimal Modern - Clean, bold typography
   - 💼 Corporate Professional - Traditional business style
   - 🎨 Vibrant Creative - Colorful, energetic design
   - 🌙 Tech Dark Mode - Modern dark theme with neon accents
   - ✨ Custom Style - Write your own description

2. **Style Prompt Editor** - Users can:
   - Select a preset to fill the prompt
   - Customize the prompt after selection
   - Write their own style from scratch

3. **Simplified Config Dialog** - Replaced style + theme with
   single customStylePrompt approach

4. **Updated slide generation** - customStylePrompt overrides
   all default styling when provided

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Outline Format Changes

1. **Restored detailed slide structure** - Each slide now includes:
   - NARRATIVE GOAL (叙事目标) - Emotional/strategic purpose
   - KEY CONTENT (关键内容) - Main text elements
   - VISUAL (视觉画面) - Visual description for AI image generation
   - LAYOUT (布局结构) - Spatial arrangement guidance

2. **Updated all outline generators**:
   - OUTLINE_GENERATION_PROMPT in outline/route.ts
   - generateWithLLMAndSearch system prompt
   - Bedrock buildContentGenerationSystemPrompt

## Outline Editor Enhancements

3. **Add/Delete/Move controls**:
   - "Add Slide" button to add new slides
   - Move up/down buttons (on hover)
   - Delete button for each slide
   - Slide count display

4. **Improved editor UX**:
   - Larger textarea (min-h-[120px])
   - Monospace font for better formatting
   - Hover effects for action buttons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Changes

1. **Removed DATABASE_URL** - Project migrated from PostgreSQL to S3
   - Removed from env.js validation schema
   - Removed from .env.example

2. **Added UPLOADS_BUCKET** - S3 storage configuration
   - Added to env.js with optional validation
   - Added to .env.example with documentation

3. **Made many env vars optional** - For flexible local development
   - LLM_API_KEY, YUNWU_API_KEY, DASHSCOPE_API_KEY
   - TAVILY_API_KEY, UNSPLASH_ACCESS_KEY

4. **Cleaned up .env.example** - Simplified and reorganized
   - Removed deprecated DATABASE_URL section
   - Added S3 Storage section
   - Better documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add dual storage service for image redundancy (UploadThing + S3)
- Images now upload to both UploadThing (primary) and S3 (backup)
- Add ImageUrls type to track both primary and backup URLs
- Add S3 image upload capability (uploadImageToS3)
- Update YunwuService and ZImageTurboService to use dual storage
- Add SlideGallery component for viewing all generated slides
- Add gallery/single view toggle in generate page
- Gallery view shows thumbnails with fullscreen lightbox
- Support keyboard navigation and slide download in lightbox

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Gallery improvements:
- Add gradient backgrounds and glassmorphism effects
- Better hover animations with scale and shadow
- Progress indicator showing completion percentage
- Image loading states with skeleton
- Auto-play slideshow feature with Space key toggle
- Keyboard navigation hints in lightbox
- Current slide indicator badge
- Edit count badge with icon

Fixes:
- Constrain thumbnail sizes with proper aspect ratio
- Add max-height constraint on single slide view (60vh)
- Fix lightbox z-index to prevent content overlap
- Absolute positioning for thumbnail images

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use aspect-video class instead of inline style for proper aspect ratio
- Simplify image container with direct img element
- Reduce lightbox size to 95vw/95vh for better visibility
- Simplify hover overlay and badges
- Compact header with inline progress bar
- Clean up lightbox bottom bar with smaller thumbnails
- Remove unused icon imports (Sparkles, Edit3)
- Add max-height constraint to single slide view

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update initializePagesFromOutline to also update main session title
- Add inline title editing in generate page header
- Click title to edit, press Enter to save, Escape to cancel
- Show pencil icon on hover to indicate editable
- Title is now generated by AI based on content

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Pass uploaded page images to Process session on creation
- Rewrite Process page with gallery/single view toggle
- Add thumbnail strip for easy page navigation
- Add progress bar with completion percentage
- Improve side-by-side comparison layout
- Add view mode toggle buttons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Store original image dimensions when loading
- Scale annotations to original resolution when exporting
- Display preview at manageable size but export at full quality
- Show original resolution info in annotation canvas

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed from static import to dynamic import for pdfjs-dist
- Initialize PDF.js only when needed and only in browser environment
- Prevents DOMMatrix is not defined error during server-side rendering

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed key from session.id to session.sessionId
- sessionId is the guaranteed unique identifier for sessions
- Fixes React warning about duplicate/missing keys

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Calculate canvas size based on original image aspect ratio
- Keep canvas within max bounds (800x600) while preserving ratio
- No more image distortion when annotating

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Always show Export button when pages exist in Process mode
- Export original images if no processed images available
- Update export dialog description to show available vs processed pages
- ZIP export now includes originals when no processed version exists

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add aspect ratio and image size settings to Process page
- Auto-detect original image aspect ratio as default
- Show settings panel with collapsible UI
- Pass generation config through API chain to yunwu service
- Update document processor to use YunwuService directly
- Show warning when output ratio differs from original

Supported aspect ratios: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
Supported sizes: 1K, 2K, 4K

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove internal fetch to /api/document-processor/process
- Call YunwuService directly from process route
- Fixes ECONNREFUSED error when making HTTP request to self
- Also save imageUrls (dual storage) to session

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update YunwuService to include conversation history in API request
- This allows the API to see the source image when processing
- Improve error handling to show specific error messages
- Map conversation roles correctly (assistant -> model for Gemini)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Without relative, the absolute inset-0 green overlay
  positioned relative to the page instead of the button
- This caused the entire page to turn green and be unclickable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@IanLiYi1996 IanLiYi1996 merged commit a5e56b2 into main Feb 5, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant