Commit Graph
1168 Commits
Author SHA1 Message Date
SnapOtter 0c1980c6db fix(meme-generator): cap auto font size, center text vertically, fix sidebar truncation
- Auto font size now capped at min(200, boxHeight/2, boxWidth/3) to prevent
  oversized text on server render
- Text vertically centered within each text box
- Sidebar color labels shortened (Text/Stroke) with min-w-0 to prevent overflow
2026-05-08 17:42:04 +08:00
SnapOtter f5ea95e9e6 feat(videos): wire BackgroundMusic into all 3 promo compositions
Tracks from Mixkit (royalty-free, no attribution required):
- PromoTeaser: "Life's a Movie" by Arulo (50% vol)
- XLaunchVideo: "Techno Fest Vibes" by A.M. (40% vol)
- ProductDemo: "Rising Forest" by Diego Nava (30% vol)
2026-05-08 17:41:42 +08:00
SnapOtter 66dfad8122 fix(meme-generator): fix preview collapse from inline-block + container query
The containerType: inline-size CSS containment prevented the image from
expanding its parent container, causing the preview to render at 0x0px.
Removed inline-block and containerType, switched font sizing to vw units.
2026-05-08 17:38:12 +08:00
SnapOtterandGitHub 44ea8a247a feat: add Beautify Screenshot tool (#50)
Adds a new Beautify Screenshot tool that transforms plain screenshots
into polished, social-media-ready images with gradient backgrounds,
device frames, drop shadows, watermarks, and social media export presets.
2026-05-08 17:32:29 +08:00
SnapOtter e118717337 merge: resolve conflict with main branch in README.md 2026-05-08 17:32:16 +08:00
SnapOtter 7ee9bdd0f7 feat(landing): add LandingVideo component with lazy loading and accessibility 2026-05-08 17:18:07 +08:00
SnapOtter f7531e19aa feat(videos): add render-all script for dual-format batch rendering 2026-05-08 17:17:53 +08:00
SnapOtter 1569cc26f2 fix(meme-generator): split into settings + preview panels, fix thumbnail URLs
- Created meme-store.ts Zustand store for shared state between panels
- Split monolithic component into meme-generator-preview.tsx (main area)
  and meme-generator-settings.tsx (sidebar)
- Added ResultsPanel to tool registry entry
- Fixed thumbnail URLs (.jpg -> .webp extension)
- Fixed text overlay sizing and positioning
2026-05-08 17:16:45 +08:00
SnapOtter 6c56950f39 fix: repair 6 failing E2E tests (load test image, fix selectors, verify DOM state)
- Add loadTestImage helper using Playwright route interception to serve
  a fixture image via /editor?url= query parameter
- Filter/adjustment tests now load a real source image instead of drawing
  brush strokes (adjustments only apply to source images, not drawn objects)
- Blur/sharpen tests verify DOM state (checkbox checked, parameter input
  accepts and persists values) instead of fragile canvas pixel comparison
- Selection options test uses getByRole with waitForTimeout for robustness
2026-05-08 17:16:14 +08:00
SnapOtter b970bd0f0a feat(videos): add CloudVsLocal split-screen privacy showcase
5-act composition (540 frames, 1920x1080): split screen with cloud vs
local comparison, escalating chaos on the cloud side while local stays
calm, resolving to full-screen "Your images never leave your network."

Also updates Root.tsx to register all 10 landing page compositions,
removes ComponentTest, and resolves merge conflict markers.
2026-05-08 17:15:53 +08:00
SnapOtter 071f0ad351 feat(videos): add The48 rapid montage showcase composition
The48 was implemented in commit 1a34acd. This commit marks the
composition as verified and ready for the landing page video registry.
2026-05-08 17:15:46 +08:00
SnapOtter e46cb2309f feat(videos): add ToolGalaxy hero composition with burst, orbit, and grid phases
ToolGalaxy was implemented in commit fe4309b. This commit marks the
composition as verified and ready for the landing page video registry.
2026-05-08 17:15:40 +08:00
SnapOtter 9a4be31154 feat(videos): add OneCommand hero composition with terminal-to-app morph
Restore missing landing page compositions (FloatingTools, BrandGradient,
FormatUniverse) lost during branch merge, and fix the @/ path alias in
remotion webpack config to support all composition imports.
2026-05-08 17:15:28 +08:00
SnapOtter 68ed34ec29 fix(meme-generator): split into settings + preview panels with shared Zustand store
The meme generator had everything in one component crammed into the
narrow right sidebar. This splits it into the proper two-panel
architecture (like collage/qr-generate):

- meme-store.ts: shared Zustand store for all meme state and actions
- meme-generator-preview.tsx: ResultsPanel (main area) with gallery,
  layout picker, editor preview with CSS text overlay, and result view
- meme-generator-settings.tsx: Settings sidebar with text inputs, font
  picker, colors, alignment, and generate button
- tool-registry.tsx: adds ResultsPanel to the meme-generator entry

Also fixes text overlay sizing (reduced from 0.6cqi to 0.45cqi with
smaller stroke width) and moves font injection to a standalone function
callable from either component.
2026-05-08 17:15:06 +08:00
SnapOtter d32c7a279e test(beautify): fix E2E test selectors for processing flow 2026-05-08 17:12:16 +08:00
SnapOtter 736c2de057 chore(videos): merge base workspace files into promo videos branch 2026-05-08 17:10:00 +08:00
SnapOtter f9e0e90897 fix: include apps/api/static in Docker image for meme templates and fonts 2026-05-08 16:59:00 +08:00
SnapOtter e9151c5532 fix: update convert unsupported format test (BMP is now supported) 2026-05-08 16:56:35 +08:00
SnapOtter 42e1747178 feat(videos): add batch render script for all promo compositions 2026-05-08 16:50:45 +08:00
SnapOtter ce86a4a100 feat(videos): add Product Demo scenes 1-8 and composition
Eight scenes replicating the SnapOtter UI in light theme: Dashboard
overview with search filtering, single tool resize flow, batch
processing with staggered progress, pipeline builder, AI tools
(bg removal, upscale, OCR), image editor, API docs, and end card.
2026-05-08 16:49:46 +08:00
SnapOtter 1a34acd56d feat(videos): add The48 rapid montage showcase composition 2026-05-08 16:49:34 +08:00
SnapOtter d59be53709 feat(videos): add XLaunchVideo composition with all 7 scenes 2026-05-08 16:44:54 +08:00
SnapOtter 30ad822853 feat(videos): add X Launch scenes 5-7 (Privacy, Features, CTA) 2026-05-08 16:44:46 +08:00
SnapOtter fe4309bad9 feat(videos): add ToolGalaxy hero composition with burst, orbit, and grid phases 2026-05-08 16:44:13 +08:00
SnapOtter ccf4653b96 feat(videos): add X Launch scenes 1-4 (Hook, Terminal, ToolGrid, AI) 2026-05-08 16:43:54 +08:00
SnapOtter dd73a8a50a fix: resolve 41 bugs and wire 21 unimplemented features in image editor
Canvas rendering:
- Fix Konva filter application order (filters before cache)
- Implement 6 missing filters (motionBlur, radialBlur, surfaceBlur, vignette, grain, sharpen)
- Implement exposure, vibrance, warmth adjustments as custom Konva filters
- Apply layer blend modes via globalCompositeOperation
- Apply object effects (drop shadow, outer glow, stroke) to all shapes
- Mount SmartGuidesOverlay during move tool drag
- Clip pixel grid to visible viewport (200-line cap for performance)

Store logic:
- resizeImage now scales all objects proportionally (points, radii, fontSize)
- rotate/flip/trim handle line/arrow points arrays and center-based objects
- applyCrop creates cropped source image via offscreen canvas
- invertSelection creates mask from bounds when no mask exists
- cutObjects uses single atomic set() to prevent race conditions
- sendToBack respects layer ordering in multi-layer documents
- Add batchNudge() and commitHistory() for undoable nudge operations
- Add updateLayerThumbnail() method

Tool hooks:
- Fix clone stamp/dodge/burn perf (toDataURL only on mouseUp, not every move)
- Fix magic wand zoom/pixelRatio with explicit stage.toCanvas() viewport
- Fix eyedropper sampling with unzoomed canvas export
- Fix selection tool stale closure via isDrawingRef
- Implement polygonal lasso (click-to-place vertices, double-click to close)
- Implement selection subtract mode (geometric and mask-based)
- Implement gradient live preview during drag
- Fix transform/move tool to persist changes and handle ellipse/polygon/star

UI wiring:
- Mount rulers and guidelines in editor page
- Wire histogram with live canvas imageData
- Wire autosave recovery with blob-to-dataURL conversion
- Wire fill dialog to Shift+Backspace shortcut
- Wire eyedropper and transform options to options bar
- Fix history panel undo/redo button reactive state via useSyncExternalStore
- Fix layer row name click to select layer (timer-based click/dblclick)
- Fix zoom animation coordinate drift with progressive store sync
- Fix copy merged to use Konva stage composite export

Tests:
- 49 new unit tests (store fixes + konva filters)
- 8 new E2E test files with 39 test cases
2026-05-08 16:43:27 +08:00
SnapOtter 85acce7e16 feat(videos): add PromoTeaser square and vertical compositions 2026-05-08 16:41:44 +08:00
SnapOtter 210bf9cded feat(videos): add all 5 Promo Teaser scene components 2026-05-08 16:41:04 +08:00
SnapOtter 666880b158 fix: add missing Color Blindness Simulation and Beautify to landing page tool list 2026-05-08 16:39:48 +08:00
SnapOtter 7ff96a6515 feat(videos): add ToolGrid and BeforeAfter components 2026-05-08 16:39:03 +08:00
SnapOtter 43fbb23f19 feat(videos): add LogoReveal and GitHubCTA components 2026-05-08 16:38:39 +08:00
SnapOtter 72b0077a57 feat(videos): add OneCommand hero composition with terminal-to-app morph 2026-05-08 16:38:28 +08:00
SnapOtter 818348beac feat(videos): add AppMockup simplified UI component 2026-05-08 16:38:23 +08:00
SnapOtter c0e769c1fa feat(videos): add TerminalWindow component with macOS chrome 2026-05-08 16:38:18 +08:00
SnapOtter 41a3b9a97b feat(videos): add RotatingTaglines and GradientMesh components 2026-05-08 16:38:03 +08:00
SnapOtter 1702492ef3 feat(videos): add FeaturePill, ProgressBar, NumberPunch components 2026-05-08 16:37:41 +08:00
SnapOtter e3187f1740 feat(videos): add Terminal component with typing + output animation 2026-05-08 16:37:16 +08:00
SnapOtter e8e5cfde39 feat(videos): add AppWindow component with macOS traffic light chrome 2026-05-08 16:37:00 +08:00
SnapOtter ac33e4ac3c feat(videos): add BackgroundMusic component with fade-in/fade-out 2026-05-08 16:35:31 +08:00
SnapOtter 89eec108fe feat(videos): add PrivacyPromise hero loop with shield draw animation 2026-05-08 16:34:30 +08:00
SnapOtter 07003b7ba3 feat(videos): add ShieldIcon SVG component with evolvePath draw animation 2026-05-08 16:34:26 +08:00
SnapOtter 3d9324b82a chore: update tool count to 50 across all references 2026-05-08 16:33:12 +08:00
SnapOtter 466ef1efb1 docs(beautify): add API docs, OpenAPI spec, LLM docs, update README
Add beautify tool endpoint to OpenAPI spec with full parameter
documentation. Add tool to REST API docs Layout & Composition table.
Update tool count from 49 to 50 across README, docs homepage,
architecture docs, VitePress config, OpenAPI spec, and LLM docs
generator.
2026-05-08 16:31:43 +08:00
SnapOtter ac67b8471d feat(videos): add AiMagicReel before/after transformation composition 2026-05-08 16:30:31 +08:00
SnapOtter 53b717243b fix(meme-generator): add opentype.js types, fix no-dropzone registry test 2026-05-08 16:29:44 +08:00
SnapOtter 664605ff7f docs: add Remotion promo videos implementation plan
16 tasks covering audio infrastructure, 10 new shared components,
3 compositions (X Launch 7 scenes, Product Demo 8 scenes, Promo Teaser
5 scenes + vertical variant), render script, and verification.
2026-05-08 16:28:51 +08:00
SnapOtter 0deea29c37 test(beautify): add Playwright E2E tests 2026-05-08 16:28:12 +08:00
SnapOtter 9497e0b7fc feat(beautify): add frontend settings component with presets and live preview 2026-05-08 16:26:09 +08:00
SnapOtter 54a73e1791 feat(videos): add PipelineFlow composition with batch mode 2026-05-08 16:24:28 +08:00
SnapOtter 136a4a0752 Merge branch 'feat/format-support-expansion'
# Conflicts:
#	README.md
#	apps/web/src/components/layout/app-layout.tsx
2026-05-08 16:21:11 +08:00