[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-77366":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":32,"discoverSource":33},77366,"Maya","ronaldo-avalos\u002FMaya","ronaldo-avalos","🖥️ 📱 ▶️ Wrap your iPhone screen recordings in a beautiful device frame, add cinematic zoom moments, and export ready-to-share videos.","",null,"Swift",181,19,1,0,2,16,67,8,3.9,"MIT License",false,"main",true,[26,27,28],"iphone-screen-recordings","macos-app","screen-recordings","2026-06-12 02:03:42","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"docs\u002Ficon.png\" width=\"128\" height=\"128\" alt=\"Maya app icon\" \u002F>\n\n  # Maya\n\n  **Wrap your iPhone screen recordings in a beautiful device frame, add cinematic zoom moments, and export ready-to-share videos.**\n\n  A native macOS app for turning raw screen recordings into polished marketing clips, social-media posts, and in-app tutorial overlays.\n\n  ![Maya screenshot](docs\u002Fscreenshot.png)\n\u003C\u002Fdiv>\n\n---\n\n## ✨ Features\n\n### 🎬 Device framing\n- Drop an iPhone screen recording — Maya wraps it in a clean device mockup with the correct screen cutout and corner radius.\n- **Multiple devices**: iPhone 17 Pro, iPhone 16 Pro, iPhone 15 Pro, each with their official titanium color variants (Cosmic Orange, Deep Blue, Silver, Natural \u002F Black \u002F White \u002F Desert Titanium…). Switch model and color from the sidebar in one click.\n- **Generic** mode: a brand-agnostic frame with user-defined **bezel width** and **bezel color**.\n- **No frame** mode: ship the bare screen recording with rounded corners only.\n- A **corner radius slider** appears in Generic \u002F No-frame modes so you can dial from sharp to stadium.\n- The framed phone lives inside a configurable canvas — **1:1**, **9:16**, **4:5**, **4:3 landscape**, **16:9 widescreen** — so you can target Reels, Shorts, TikTok, YouTube, X, or in-app overlays from a single source.\n- Manually scale and reposition the phone on the canvas via slider + drag.\n- Optional **drop shadow** under the phone with controls for color, blur, X\u002FY offset, and opacity.\n\n### 🎨 Backgrounds\nA single picker, five modes:\n- **None** — Photoshop-style checkered preview, exports to `.mov` with **HEVC + alpha**.\n- **Solid** — brand-aligned palette + custom hex.\n- **Gradient** — eight curated brand presets, all derived from the app's official color (`#6466FA`).\n- **Image** — drop in any image, scale-to-fill.\n- **Video Blur** — Keynote-style blurred poster of your own video as the backdrop.\n\n### ⏱ Timeline & zoom animations\nLike shots.so for Mac:\n- Bottom track: live video thumbnails strip.\n- Top track: hover anywhere to drop a **zoom event** with a `+` affordance.\n- Each zoom event has a **start**, **duration**, **scale**, **focus** (Top \u002F Center \u002F Bottom), independent **zoom-in \u002F zoom-out timing**, and a chosen **animation curve**.\n- Drag the block to move it; drag the edges to resize. Everything snaps to **0.25 s** intervals and to the **playhead** when nearby.\n- Live tooltips show timestamps while dragging.\n- The playhead is scrubbable.\n- Selecting a zoom event opens an inline **right-side editor panel** so every slider tweak updates the canvas in real time — no modal, no lost context.\n\n### 🌀 Six animation curves\n| Curve | Feel |\n|---|---|\n| **Spring** | Soft overshoot, lively (default) |\n| **Bouncy** | More overshoot, playful |\n| **Smooth** | Classic ease in\u002Fout |\n| **Snappy** | Fast attack, slow settle |\n| **Gentle** | Soft and organic |\n| **Linear** | Constant rate, mechanical |\n\n### 🚀 One-click presets\nPre-baked combinations of scale + focus + duration + curve: *Subtle Pop, Quick Punch, Dramatic, Top Focus, Bottom Focus, Long Hold, Mechanical, Soft Reveal.*\n\n### 📤 Smart export\n- **With background** → 1080×1080 (or your aspect) `.mp4`, H.264. Drop straight into Reels \u002F TikTok \u002F Shorts.\n- **Transparent** (background set to *None*) → `.mov` with HEVC + alpha channel. Composite the framed phone over any UI inside another `AVPlayer` \u002F `AVKit` consumer — perfect for in-app tutorials, Final Cut, Motion.\n- All zoom animations bake into both exports.\n\n### ⌨️ Keyboard shortcuts\n| Key | Action |\n|---|---|\n| \u003Ckbd>Space\u003C\u002Fkbd> | Play \u002F pause |\n| \u003Ckbd>M\u003C\u002Fkbd> | Mute \u002F unmute |\n| \u003Ckbd>←\u003C\u002Fkbd> \u002F \u003Ckbd>→\u003C\u002Fkbd> | Scrub ±0.25 s |\n| \u003Ckbd>⇧\u003C\u002Fkbd>+\u003Ckbd>←\u003C\u002Fkbd> \u002F \u003Ckbd>⇧\u003C\u002Fkbd>+\u003Ckbd>→\u003C\u002Fkbd> | Scrub ±1 s |\n| \u003Ckbd>⌫\u003C\u002Fkbd> | Delete selected zoom event |\n| \u003Ckbd>⌘\u003C\u002Fkbd>+\u003Ckbd>D\u003C\u002Fkbd> | Duplicate selected zoom event |\n\n---\n\n## 🛠 Tech stack\n\n- **SwiftUI** + **AppKit** (custom `NSViewRepresentable` for `AVPlayerLayer`)\n- **AVFoundation**: `AVMutableComposition`, custom `AVVideoCompositing`, `AVAssetExportSession`, manual `AVAssetReader` \u002F `AVAssetWriter` pipeline for HEVC + alpha\n- **Core Image** + **Metal** for per-frame compositing\n- **VideoToolbox** for HEVC-with-alpha encoder properties\n- **Swift Concurrency** (`@Observable`, actors, async\u002Fawait) — export runs on a dedicated actor so the UI never blocks\n- **App Sandbox** with file hard-link\u002Fcopy adoption strategy (videos are brought into the sandbox container on load so AVFoundation reads work from any thread)\n\n### Requirements\n- macOS 26.3 (Tahoe) or later\n- Xcode 26.5 or later\n- An iPhone screen recording in `.mp4` \u002F `.mov` format\n\n### Build & run\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fronaldo-avalos\u002FMaya.git\ncd Maya\nopen Maya.xcodeproj\n# In Xcode: ⌘R\n```\n\n---\n\n## 🤝 Contributing — Maya is open source\n\nThis project is in active development and **contributions are very welcome**. Whether you're an iOS\u002FmacOS dev, a designer, or someone who just loves polished tools, there's a place for you.\n\n### High-impact contribution areas\n\n#### 📱 More device frames\nMaya currently ships **iPhone 17 Pro**, **16 Pro**, and **15 Pro** (each with multiple color variants), plus a configurable Generic frame and a No-frame mode. PRs that add more devices are very welcome:\n- iPhone 16 \u002F 16 Plus, iPhone 15 \u002F 15 Plus\n- iPhone SE\n- iPad mini \u002F iPad Pro\n- Older models (iPhone 14, 13, 12 family)\n- Android devices (Pixel, Galaxy)\n\nTo add a frame:\n1. Drop transparent-screen PNG(s) into `Maya\u002FAssets.xcassets\u002Fiphone frames\u002F` — one imageset per color variant.\n2. Register the model in `Maya\u002FModels\u002FDeviceFrame.swift` (`DeviceModel`) with the frame aspect, normalized screen rect, corner radius, and a `DeviceColor` per variant. Append it to `DeviceModel.all`.\n3. Submit a PR with a screenshot of the result. That's it.\n\n#### 🎯 Feature ideas (good first issues)\n- **Undo \u002F Redo** for canvas, animations, and background changes (`⌘Z` \u002F `⌘⇧Z`).\n- **Saved projects** — persist a `.mayaproj` document on disk so users can come back to a layout.\n- **Animation presets gallery** — visual previews of each preset playing on a sample phone in the editor sheet.\n- **Trim controls** on the video track (drag in\u002Fout points to crop the recording).\n- **Click-spot animations** — automatically zoom toward where the user tapped in the screen recording (parse the `.mp4` metadata if available, or expose a click-to-mark workflow).\n- **Caption \u002F annotation overlays** with their own timeline track.\n- **Watermark toggle** for users who want a \"Made with Maya\" footer.\n\n#### 🎨 Design \u002F UX polish\n- A more refined **empty state** for the canvas before any video is loaded.\n- A **welcome screen** with recent projects.\n- **Onboarding tooltips** for first-launch.\n- An **export progress sheet** with thumbnail preview of the result.\n- A **keyboard shortcuts cheat sheet** accessible from a menu item.\n- More **gradient and solid color presets** that work for non-indigo brands.\n\n#### 🐛 Engineering improvements\n- **More iPhone screen orientations** (currently the compositor assumes portrait recordings).\n- **HDR pass-through** for HDR screen recordings.\n- **Audio waveform** rendering on the timeline.\n- **Apple Silicon performance profiling** of the export pipeline.\n- **CI** with GitHub Actions (build + lint).\n- **Unit tests** for `AnimationSampler`, `DeviceFrame` coordinate math, and `BlurPosterCache`.\n\n### How to contribute\n\n1. **Fork** the repo and create a feature branch: `git checkout -b feature\u002Fiphone-16-pro`\n2. **Code** the change. Try to match the existing style — small files, no unnecessary comments, single-responsibility views.\n3. **Test** locally (⌘R). Take a screenshot or short GIF showing the change.\n4. **Open a PR** with a clear title, a short description, and the screenshot\u002FGIF.\n\nFor larger features, **open an issue first** so we can align on the approach before you spend hours on it.\n\n### Code map\n\n```\nMaya\u002F\n├── MayaApp.swift                 App entry\n├── ContentView.swift             Root → EditorView\n├── Models\u002F                       State + value types\n│   ├── Project                   Root @Observable state (video, canvas, devices, shadow, animations…)\n│   ├── DeviceFrame               DeviceModel + DeviceColor catalog (iPhone Pro family, Generic, None)\n│   ├── CanvasAspectRatio         1:1, 9:16, 4:5, 4:3, 16:9 — pixel sizes + chip metadata\n│   ├── PhoneShadow               Drop-shadow parameters (color, blur, offsets, opacity)\n│   ├── BackgroundOption          Solid \u002F gradient \u002F image \u002F video-blur \u002F transparent\n│   └── ZoomSegment               Per-segment zoom animation spec\n├── Services\u002F                     AVFoundation + Core Image plumbing\n│   ├── DeviceFrameCompositor     Custom AVVideoCompositing (per-frame compositing)\n│   ├── ExportService             Actor that runs both .mp4 and .mov exports\n│   ├── AnimationSampler          Envelope math for zoom segments\n│   ├── BlurPosterCache           One-shot blurred-frame cache\n│   └── VideoThumbnailGenerator   Async timeline thumbnails\n├── Views\u002F                        SwiftUI views\n│   ├── EditorView                Top-level layout (sidebar \u002F canvas \u002F timeline \u002F editor panel)\n│   ├── CanvasView                Configurable-ratio canvas with framed phone + background\n│   ├── FramedDeviceView          Composite of video + frame overlay + shadow\n│   ├── BackgroundPicker          Mode tabs + per-mode controls\n│   ├── SettingsSidebar           Left sidebar (recording, canvas, device, transform, background, shadow, export)\n│   ├── AnimationEditorSheet      Right panel for editing a selected zoom event (live preview)\n│   └── Timeline\u002F                 Ruler, video strip, animations track, draggable playhead\n└── Assets.xcassets\u002F              iPhone frame PNGs + app icon\n```\n\n---\n\n## 📄 License\n\nMIT — see [LICENSE](LICENSE).\n\nYou can fork, use Maya in personal or commercial projects, and ship derived work. Attribution is appreciated but not required.\n\n---\n\n## 🙏 Acknowledgements\n\n- The app's brand color `#6466FA` borrows from the Tailwind\u002FIndigo family.\n- iPhone 15 \u002F 16 \u002F 17 Pro frame PNGs generated by the project owner.\n- Built with ❤️ on macOS Tahoe.\n\nIf Maya helps you ship a video, tag [@ronaldo-avalos](https:\u002F\u002Fgithub.com\u002Fronaldo-avalos) — we'd love to see it.\n","Maya 是一款专为 macOS 设计的应用程序，旨在将 iPhone 屏幕录制视频包裹在精美的设备框架中，并添加电影级缩放效果，最终导出可直接分享的视频。其核心功能包括多种设备框架选择、自定义背景设置以及强大的时间线与缩放动画编辑工具。用户可以轻松调整设备型号、颜色乃至边框宽度等细节，同时支持 HEVC 编码带透明通道的输出，满足不同平台和用途的需求。此外，Maya 提供了六种动画曲线选项，使得创建流畅自然或充满活力的视觉效果变得简单直观。这款应用非常适合需要制作高质量屏幕演示视频的内容创作者、营销人员以及教育工作者使用。","2026-06-11 03:55:21","CREATED_QUERY"]