appshot-cli 0.9.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +198 -103
  2. package/dist/cli.js +6 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/build.d.ts.map +1 -1
  5. package/dist/commands/build.js +9 -0
  6. package/dist/commands/build.js.map +1 -1
  7. package/dist/commands/frame.d.ts.map +1 -1
  8. package/dist/commands/frame.js +11 -2
  9. package/dist/commands/frame.js.map +1 -1
  10. package/dist/commands/mcp.d.ts +3 -0
  11. package/dist/commands/mcp.d.ts.map +1 -0
  12. package/dist/commands/mcp.js +19 -0
  13. package/dist/commands/mcp.js.map +1 -0
  14. package/dist/commands/skill.d.ts +3 -0
  15. package/dist/commands/skill.d.ts.map +1 -0
  16. package/dist/commands/skill.js +119 -0
  17. package/dist/commands/skill.js.map +1 -0
  18. package/dist/core/compose.d.ts +1 -0
  19. package/dist/core/compose.d.ts.map +1 -1
  20. package/dist/core/compose.js +14 -2
  21. package/dist/core/compose.js.map +1 -1
  22. package/dist/mcp/cli-options.d.ts +112 -0
  23. package/dist/mcp/cli-options.d.ts.map +1 -0
  24. package/dist/mcp/cli-options.js +158 -0
  25. package/dist/mcp/cli-options.js.map +1 -0
  26. package/dist/mcp/server.d.ts +2 -0
  27. package/dist/mcp/server.d.ts.map +1 -0
  28. package/dist/mcp/server.js +1149 -0
  29. package/dist/mcp/server.js.map +1 -0
  30. package/dist/services/doctor.d.ts.map +1 -1
  31. package/dist/services/doctor.js +2 -1
  32. package/dist/services/doctor.js.map +1 -1
  33. package/dist/utils/filename-caption.d.ts +9 -0
  34. package/dist/utils/filename-caption.d.ts.map +1 -0
  35. package/dist/utils/filename-caption.js +19 -0
  36. package/dist/utils/filename-caption.js.map +1 -0
  37. package/dist/version.d.ts +2 -0
  38. package/dist/version.d.ts.map +1 -0
  39. package/dist/version.js +5 -0
  40. package/dist/version.js.map +1 -0
  41. package/package.json +7 -4
  42. package/skill/SKILL.md +225 -0
  43. package/skill/references/fonts.md +55 -0
  44. package/skill/references/gradients.md +69 -0
  45. package/skill/references/templates.md +170 -0
  46. package/skill/references/troubleshooting.md +228 -0
package/README.md CHANGED
@@ -10,44 +10,18 @@
10
10
  [![Node.js Version](https://img.shields.io/node/v/appshot-cli.svg)](https://nodejs.org)
11
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
12
 
13
- 🆕 **Version 0.9.2** - **Simplified Layout Planner & Safe Caption Insets**
14
- - **One Layout Engine**: Every caption/device combo now runs through a single planner, so presets only style things—you never fight per-template math again.
15
- - **Safety Insets**: Automatic 40 px top/bottom protection plus default 48 px (above) / 36 px (below) gaps keep text clear of Apple’s quirky screenshot cropping.
16
- - **Template Consistency**: All built-in templates inherit the same spacing and only override fonts/colors; watch captions still cap at 36 px automatically.
17
- - **Caption-Only Presets**: Presets now render typography without auto-added boxes or borders so screenshots feel native to App Store Connect; add backgrounds manually if you really need them.
18
- - **Verbose Debugging**: `appshot build --dry-run --verbose` now prints `Insets` / `Caption gap` lines so you can reason about spacing without opening the PSD.
19
-
20
- **Version 0.9.1** - **Fastlane Export Integration & Screenshot Ordering**
21
- - **Export Command**: New `appshot export` command for seamless Fastlane integration
22
- - **Screenshot Ordering**: New `appshot order` command to control App Store screenshot sequence
23
- - **Order Flag**: Export with `--order` to add numeric prefixes (01_, 02_, etc.)
24
- - **Smart Ordering**: Handles existing prefixes, prevents double-prefixing
25
- - **Auto-Detection**: Automatically detects languages from your screenshots
26
- - **Language Mapping**: Smart mapping to Fastlane-compatible language codes (en → en-US, etc.)
27
- - **Device Filtering**: Export specific devices with `--devices iphone,ipad`
28
- - **Validation**: Pre-export validation with warnings and clear error messages
29
- - **Configuration Generation**: Auto-generate Deliverfile and Fastfile with `--generate-config`
30
- - **Flexible Output**: Choose between symlinks (default) or file copying with `--copy`
31
- - **iPad Pro Support**: Automatic IPAD_PRO_3GEN_129_ prefix for proper Fastlane recognition
32
- - **Dry Run Mode**: Preview export operations with `--dry-run`
33
-
34
- **Version 0.9.0** - **Professional Template System & Enhanced Positioning**
35
- - **Quick Start**: New `appshot quickstart` command for instant setup with templates
36
- - **Templates**: 8 professional templates (modern, minimal, bold, elegant, showcase, playful, corporate, nerdy)
37
- - **One Command Setup**: Apply complete visual styles with `appshot template <name>`
38
- - **Smart Defaults**: Each template includes optimized settings for all devices
39
- - **Caption Integration**: Templates can include captions directly with `--caption`
40
- - **Vertical Alignment**: Pin caption text to top or center within the caption box
41
- - **Side Margins**: Control caption box width with `sideMargin` (unified wrapping calculation)
42
- - **Outer Margins**: Add spacing with `marginTop`/`marginBottom` for better visual balance
43
- - **Apple Watch Fix**: Resolved positioning bug allowing proper framePosition control
44
- - **Exact Width Parity**: Caption wrapping now identical between preview and final render
45
- - **Template Samples Overhaul**: Local-only gallery with consolidated generator. Run `npm run samples` to regenerate all 8 presets across iPhone, iPad, Watch, and Mac. Gallery assets now live under `template-samples/gallery/` and the samples page matches the appshot.sh look (including ASCII header).
46
-
47
- > Note on layout changes (0.9.0): This release refines caption placement rules.
48
- > - Overlay captions are anchored by the bottom of the entire caption box (padding/border included), and `0` values are respected.
49
- > - Above/Below captions enforce a minimum optical clearance from the device and stay fully on‑canvas. In pathological cases where device + caption don’t fit, the engine adapts placement so order is preserved.
50
- > - Visual results may differ compared to 0.8.x when captions were near device edges. Adjust `marginTop` (below) / `marginBottom` (above) or `frameScale`/`framePosition` for fine‑tuning.
13
+ 🆕 **Version 1.0.0** - **MCP Server & Agent-First Architecture**
14
+ - **MCP Server**: Full Model Context Protocol support for AI agents (Claude Desktop, Claude Code, etc.)
15
+ - **17 MCP Tools**: Complete coverage - init, build, captions, gradients, backgrounds, fonts, config, validate, specs, doctor, presets, localize, languages, frame, export, clean, projectInfo
16
+ - **Claude Code Skill**: Install with `appshot skill` - includes templates, troubleshooting guides
17
+ - **Auto-Caption**: Generate captions from filenames with `--auto-caption` or MCP `action: "auto"`
18
+ - **Direct Tool Access**: Agents can manage entire screenshot workflows without shell access
19
+
20
+ **Version 0.9.x** - **Layout Engine, Templates & Fastlane**
21
+ - **Fastlane Export**: Seamless integration with `appshot export` and screenshot ordering
22
+ - **8 Professional Templates**: modern, minimal, bold, elegant, showcase, playful, corporate, nerdy
23
+ - **Unified Layout Engine**: Single planner for all caption/device combinations
24
+ - **Safety Insets**: Automatic 40px protection for App Store cropping
51
25
 
52
26
  ## 📖 Table of Contents
53
27
 
@@ -57,7 +31,7 @@
57
31
  - [Prerequisites](#prerequisites)
58
32
  - [Installation](#installation)
59
33
  - [Your First Screenshot](#your-first-screenshot)
60
- - [Claude Code Integration](#-claude-code-integration)
34
+ - [MCP Server & Agent Integration](#-mcp-server--agent-integration)
61
35
  - [Core Concepts](#-core-concepts)
62
36
  - [Visual Customization](#-visual-customization)
63
37
  - [Gradient System](#gradient-system)
@@ -223,81 +197,136 @@ final/
223
197
  └── dashboard.png # 2048×2732 iPad Pro screenshot
224
198
  ```
225
199
 
226
- ## 🤖 Claude Code Integration
200
+ ## 🤖 MCP Server & Agent Integration
227
201
 
228
- Appshot includes comprehensive [Claude Code](https://claude.ai/code) slash commands for AI-assisted screenshot generation. See the [complete commands documentation](./commands/README.md) for detailed examples and workflows.
202
+ Appshot provides a full Model Context Protocol (MCP) server, enabling AI agents like Claude Desktop and Claude Code to manage screenshot workflows directly through tool calls.
229
203
 
230
- ### Available Commands
204
+ ### Installation
231
205
 
232
- Appshot provides specialized commands for different tasks:
206
+ **Claude Code** (recommended):
207
+ ```bash
208
+ # Add the MCP server
209
+ claude mcp add appshot-mcp appshot mcp
233
210
 
234
- - `/appshot-init` - Initialize and configure new projects
235
- - `/appshot-preset` - One-line preset commands for instant screenshots
236
- - `/appshot-style` - Apply gradients, fonts, and visual styling
237
- - `/appshot-caption` - Manage captions and translations
238
- - `/appshot-build` - Build screenshots with troubleshooting
239
- - `/appshot-config` - Complete configuration reference
240
- - `/appshot-quick` - Quick reference for common tasks
211
+ # Verify it's connected
212
+ claude mcp list
213
+ ```
241
214
 
242
- ### Quick Installation
215
+ **Claude Desktop** (macOS):
243
216
 
244
- ```bash
245
- # If you have AppShot source code
246
- cd appshot
247
- ./commands/install.sh
217
+ Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
218
+ ```json
219
+ {
220
+ "mcpServers": {
221
+ "appshot": {
222
+ "command": "appshot",
223
+ "args": ["mcp"]
224
+ }
225
+ }
226
+ }
227
+ ```
248
228
 
249
- # If installed via npm
250
- cd node_modules/appshot-cli
251
- ./commands/install.sh
229
+ > **Note:** Claude Desktop MCP support is experimental and may have issues. Claude Code is the recommended integration.
252
230
 
253
- # Manual installation
254
- mkdir -p ~/.claude/commands
255
- ln -sf "$(pwd)/commands"/*.md ~/.claude/commands/
256
- ```
231
+ ### Available MCP Tools
232
+
233
+ | Tool | Description |
234
+ |------|-------------|
235
+ | `appshot.projectInfo` | Get project metadata (devices, languages, config) |
236
+ | `appshot.init` | Initialize new project structure |
237
+ | `appshot.build` | Generate final screenshots |
238
+ | `appshot.frame` | Apply device frames only (transparent background) |
239
+ | `appshot.captions` | Read/write caption text, auto-generate from filenames |
240
+ | `appshot.gradients` | List/apply gradient presets |
241
+ | `appshot.backgrounds` | Configure background images |
242
+ | `appshot.fonts` | List/validate available fonts |
243
+ | `appshot.config` | Modify device-specific settings |
244
+ | `appshot.validate` | Check App Store compliance |
245
+ | `appshot.specs` | View App Store specifications |
246
+ | `appshot.doctor` | Run system diagnostics |
247
+ | `appshot.presets` | Manage App Store presets |
248
+ | `appshot.localize` | AI-powered caption translation |
249
+ | `appshot.languages` | Discover available translations |
250
+ | `appshot.export` | Export for Fastlane |
251
+ | `appshot.clean` | Remove generated files |
257
252
 
258
- ### How It Works
253
+ ### Example: Agent Workflow
259
254
 
260
- When you use a command like `/appshot-style ocean iphone` in Claude Code:
255
+ ```
256
+ Agent: I'll set up your App Store screenshots.
261
257
 
262
- 1. Claude receives complete documentation for that specific task
263
- 2. All necessary configurations and examples are provided inline
264
- 3. No need to search documentation or run help commands
265
- 4. Claude can immediately execute the appropriate AppShot CLI commands
258
+ 1. appshot.init with force: true
259
+ 2. appshot.gradients with action: "apply", preset: "ocean"
260
+ 3. appshot.captions with device: "iphone", action: "set",
261
+ filename: "home.png", caption: "Welcome Home"
262
+ 4. appshot.build with devices: ["iphone"]
263
+ 5. appshot.validate
266
264
 
267
- ### Example Conversation
265
+ Screenshots ready in final/iphone/en/
266
+ ```
268
267
 
268
+ **Auto-Caption Workflow** (generate captions from filenames):
269
269
  ```
270
- User: I need to add Apple Watch support to my existing iPhone project
270
+ 1. appshot.init with force: true
271
+ 2. appshot.template with template: "modern"
272
+ 3. appshot.captions with device: "iphone", action: "auto"
273
+ 4. appshot.build with devices: ["iphone"]
271
274
 
272
- Claude: I'll help you add Apple Watch to your project. Let me use /appshot-config
273
- to show you the exact configuration needed.
275
+ Captions auto-generated: "home-screen.png" "Home Screen"
276
+ ```
274
277
 
275
- Add this to your .appshot/config.json under "devices":
278
+ ### Claude Code Skill
276
279
 
277
- "watch": {
278
- "input": "./screenshots/watch",
279
- "resolution": "410x502",
280
- "autoFrame": true
281
- }
280
+ For Claude Code users, install the appshot skill for guided workflows:
282
281
 
283
- Note: Apple Watch has special caption handling - uses 2-line wrapping
284
- and smaller font size (36px max) for the smaller screen.
282
+ ```bash
283
+ # Install skill to ~/.claude/skills/appshot/
284
+ appshot skill
285
+
286
+ # Update existing installation
287
+ appshot skill --force
288
+
289
+ # Uninstall
290
+ appshot skill --uninstall
285
291
  ```
286
292
 
287
- ### Features for AI Agents
293
+ The skill provides:
294
+ - Project workflow guidance (init → captions → styling → build)
295
+ - Template recommendations by app type (dev tools → nerdy, business → corporate)
296
+ - Troubleshooting guide for common errors
297
+ - Reference files for all 24 gradients, 10 fonts, and 8 templates
298
+
299
+ ### Agent-Friendly Features
300
+
301
+ - **Structured Output**: All tools return JSON for easy parsing
302
+ - **No Interactive Prompts**: Full automation without user input
303
+ - **Predictable Commands**: Consistent tool interfaces
304
+ - **Complete Coverage**: Every CLI feature available as MCP tool
305
+
306
+ ### Claude Desktop: Not Yet Supported
307
+
308
+ > ⚠️ **Note**: Claude Desktop MCP integration is not currently working reliably. We recommend using **Claude Code** for the best experience with appshot's MCP tools.
309
+
310
+ **Known Issues with Claude Desktop:**
288
311
 
289
- - **Self-Contained**: Each command includes all necessary information
290
- - **No Lookups Required**: Commands work without external documentation
291
- - **Agent-Friendly**: Non-interactive commands for full automation
292
- - **Complete Examples**: Real-world configurations and workflows
293
- - **Troubleshooting**: Built-in solutions for common issues
312
+ 1. **Working Directory**: Claude Desktop runs MCP servers from the user's home directory, causing path resolution issues.
294
313
 
295
- ### Learn More
314
+ 2. **Tool Availability**: MCP tools may not appear or function correctly in Claude Desktop's interface.
296
315
 
297
- For complete documentation, examples, and advanced workflows, see:
298
- - 📚 [Commands Documentation](./commands/README.md) - Full guide with examples
299
- - 📁 [Commands Directory](./commands/) - Individual command files
300
- - 🛠️ [Installation Script](./commands/install.sh) - Automated setup
316
+ 3. **Server Lifecycle**: The MCP server connection is unstable and may require frequent restarts.
317
+
318
+ **Recommended Alternative:**
319
+
320
+ Use **Claude Code** with the appshot skill for reliable agent integration:
321
+
322
+ ```bash
323
+ # Install the skill
324
+ appshot skill
325
+
326
+ # Claude Code will now have access to appshot documentation and workflows
327
+ ```
328
+
329
+ We're working with Anthropic to resolve Claude Desktop compatibility issues.
301
330
 
302
331
  ## 📘 Core Concepts
303
332
 
@@ -1663,6 +1692,7 @@ appshot build [options]
1663
1692
  - `--no-frame` - Skip device frames
1664
1693
  - `--no-gradient` - Skip gradient backgrounds
1665
1694
  - `--no-caption` - Skip captions
1695
+ - `--auto-caption` - Generate captions from filenames when none exist
1666
1696
 
1667
1697
  **Language Detection:**
1668
1698
  When `--langs` is not specified, appshot automatically determines languages in this order:
@@ -1690,6 +1720,9 @@ appshot build --dry-run
1690
1720
 
1691
1721
  # Verbose mode for debugging
1692
1722
  appshot build --verbose --devices iphone
1723
+
1724
+ # Auto-generate captions from filenames
1725
+ appshot build --auto-caption --devices iphone
1693
1726
  ```
1694
1727
 
1695
1728
  **Exit Codes:**
@@ -1904,6 +1937,7 @@ appshot frame <input> [options]
1904
1937
  - `--suffix <text>` - Filename suffix when not overwriting (default: "-framed")
1905
1938
  - `--overwrite` - Overwrite original file name
1906
1939
  - `--dry-run` - Preview files without processing
1940
+ - `--frame-tone <tone>` - Frame color treatment (`original` | `neutral`)
1907
1941
  - `--verbose` - Show detailed information
1908
1942
 
1909
1943
  **Features:**
@@ -1932,8 +1966,71 @@ appshot frame ./screenshots --dry-run --verbose
1932
1966
 
1933
1967
  # JPEG output (white background)
1934
1968
  appshot frame screenshot.png --format jpeg
1969
+
1970
+ # Generate neutral (desaturated) device frames
1971
+ appshot frame screenshot.png --frame-tone neutral
1972
+ ```
1973
+
1974
+ ### `appshot mcp`
1975
+
1976
+ Start the Model Context Protocol (MCP) server for AI agent integration. Enables Claude Desktop, Claude Code, and other MCP-compatible agents to control appshot directly.
1977
+
1978
+ ```bash
1979
+ appshot mcp [options]
1980
+ ```
1981
+
1982
+ **Options:**
1983
+ - `--stdio` - Use stdio transport (default)
1984
+
1985
+ **Usage:**
1986
+ Register in Claude Desktop's config to enable AI-powered screenshot workflows. See [MCP Server & Agent Integration](#-mcp-server--agent-integration) for setup details.
1987
+
1988
+ ```bash
1989
+ appshot mcp
1990
+ ```
1991
+
1992
+ **Tools exposed:**
1993
+
1994
+ - `appshot.projectInfo` – Returns `appshot.json` metadata (devices, languages, templates).
1995
+ - `appshot.doctor` – Runs diagnostics and returns console output.
1996
+ - `appshot.build` – Wraps `appshot build` with options for devices, languages, and rendering flags.
1997
+ - `appshot.frame` – Batch frames screenshots (including `--frame-tone neutral` support).
1998
+ - `appshot.export` – Runs the Fastlane export pipeline.
1999
+
2000
+ The server uses the stdio transport, so you can register it in Anthropic Desktop by pointing at `appshot mcp` (working directory = your Appshot project). The same entry point works for any MCP-compatible agent or automation.
2001
+
2002
+ ### `appshot skill`
2003
+
2004
+ Install the appshot skill for Claude Code. The skill provides workflow guidance, template recommendations, and troubleshooting help.
2005
+
2006
+ ```bash
2007
+ appshot skill [options]
2008
+ ```
2009
+
2010
+ **Options:**
2011
+ - `--force` - Overwrite existing installation
2012
+ - `--uninstall` - Remove the skill
2013
+ - `--path <dir>` - Custom installation path
2014
+
2015
+ **Examples:**
2016
+ ```bash
2017
+ # Install skill to ~/.claude/skills/appshot/
2018
+ appshot skill
2019
+
2020
+ # Update existing installation
2021
+ appshot skill --force
2022
+
2023
+ # Uninstall
2024
+ appshot skill --uninstall
1935
2025
  ```
1936
2026
 
2027
+ **Skill contents:**
2028
+ - `SKILL.md` - Main documentation with workflows and scenarios
2029
+ - `references/templates.md` - All 8 templates with recommendations by app type
2030
+ - `references/gradients.md` - All 24 gradient presets with colors
2031
+ - `references/fonts.md` - All 10 embedded font families
2032
+ - `references/troubleshooting.md` - Common errors and solutions
2033
+
1937
2034
  ### `appshot device` (macOS only)
1938
2035
 
1939
2036
  Capture screenshots from iOS simulators.
@@ -2945,24 +3042,22 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
2945
3042
  - [x] AI-Powered Translations (GPT-4o, GPT-5, o1, o3)
2946
3043
  - [x] Comprehensive Font System (v0.4.0)
2947
3044
  - [x] Frame-Only Mode (v0.8.0)
3045
+ - [x] MCP Server with 17 tools (v1.0.0)
3046
+ - [x] Claude Code Skill (v1.0.0)
3047
+ - [x] Fastlane Export Integration (v0.9.1)
3048
+ - [x] Professional Template System (v0.9.0)
3049
+ - [x] Auto-Caption from Filenames (v0.9.2)
2948
3050
 
2949
3051
  ### In Progress 🚧
2950
- - [ ] MCP Integration Guide
2951
- - [ ] Agent API Mode
3052
+ - [ ] Claude Desktop MCP compatibility
3053
+ - [ ] Android Device Support (Google Play Store)
2952
3054
 
2953
3055
  ### Planned 📋
2954
- - [ ] Fastlane Integration Plugin
2955
3056
  - [ ] GitHub Actions Marketplace Action
2956
3057
  - [ ] CI/CD Templates (Jenkins, GitLab CI, CircleCI)
2957
- - [ ] Image Backgrounds (as alternative to gradients)
2958
- - [ ] Screenshot Templates System
2959
- - [ ] Android Device Support (Google Play Store)
2960
- - [ ] Batch Config Files
2961
- - [ ] Screenshot Validation API
2962
- - [ ] Auto-Caption Generation (AI-powered)
2963
- - [ ] Smart Frame Detection (ML-based)
2964
- - [ ] Pipeline Mode
3058
+ - [ ] AI-Powered Caption Enhancement
2965
3059
  - [ ] WebP/AVIF Support
3060
+ - [ ] Screenshot A/B Testing Framework
2966
3061
  - [ ] Differential Builds
2967
3062
  - [ ] Screenshot A/B Testing Framework
2968
3063
 
@@ -2986,7 +3081,7 @@ For security vulnerabilities, please see [SECURITY.md](SECURITY.md).
2986
3081
  ### NPM Package
2987
3082
 
2988
3083
  - 📦 [appshot-cli on NPM](https://www.npmjs.com/package/appshot-cli)
2989
- - 🔄 Latest version: 0.9.0
3084
+ - 🔄 Latest version: 1.0.0
2990
3085
 
2991
3086
  ---
2992
3087
 
package/dist/cli.js CHANGED
@@ -26,6 +26,9 @@ import quickstartCmd from './commands/quickstart.js';
26
26
  import presetCmd from './commands/preset.js';
27
27
  import exportCmd from './commands/export.js';
28
28
  import orderCmd from './commands/order.js';
29
+ import mcpCmd from './commands/mcp.js';
30
+ import skillCmd from './commands/skill.js';
31
+ import { APP_VERSION } from './version.js';
29
32
  const program = new Command();
30
33
  const logo = String.raw ` _ _ _
31
34
  / \ _ __ _ __ ___| |__ ___ | |_
@@ -67,7 +70,7 @@ ${pc.bold('Common Workflows:')}
67
70
  $ appshot watch start --process # Auto-process new screenshots` : ''}
68
71
 
69
72
  ${pc.dim('Docs: https://github.com/chrisvanbuskirk/appshot')}`)
70
- .version('0.9.2')
73
+ .version(APP_VERSION)
71
74
  .addHelpText('after', `\n${pc.bold('Environment Variables:')}
72
75
  OPENAI_API_KEY API key for translation features
73
76
  APPSHOT_DISABLE_FONT_SCAN Skip system font detection (CI optimization)
@@ -92,6 +95,8 @@ program.addCommand(buildCmd());
92
95
  program.addCommand(frameCmd());
93
96
  program.addCommand(orderCmd());
94
97
  program.addCommand(exportCmd());
98
+ program.addCommand(mcpCmd());
99
+ program.addCommand(skillCmd());
95
100
  // Add device and watch commands only on macOS
96
101
  if (platform() === 'darwin') {
97
102
  program.addCommand(deviceCmd());
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,aAAa,MAAM,0BAA0B,CAAC;AACrD,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;6CAKsB,CAAC;AAE9C,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAI7B,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;;;;;;EAUpB,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;;;;;;EAMvB,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;;;;;;;gEAOkC,QAAQ,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC;;6EAEb,CAAC,CAAC,CAAC,EAAE;;EAEhF,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,EAAE,CAAC;KAC5D,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC;;;;EAI5D,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC;;;;;EAK/B,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;AAErE,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE/B,8CAA8C;AAC9C,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IAChC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEzC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAE9D,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YA8W/B"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAuX/B"}
@@ -7,6 +7,7 @@ import { loadConfig, loadCaptions } from '../core/files.js';
7
7
  import { autoSelectFrame, getImageDimensions, initializeFrameRegistry } from '../core/devices.js';
8
8
  import { composeAppStoreScreenshot } from '../core/compose.js';
9
9
  import { resolveLanguages, normalizeLanguageCode } from '../utils/language.js';
10
+ import { filenameToCaption } from '../utils/filename-caption.js';
10
11
  export default function buildCmd() {
11
12
  const cmd = new Command('build')
12
13
  .description('Generate final screenshots with frames, gradients, and captions')
@@ -25,6 +26,7 @@ export default function buildCmd() {
25
26
  .option('--auto-background', 'auto-detect background.png in device folders')
26
27
  .option('--dry-run', 'show what would be rendered without generating images')
27
28
  .option('--verbose', 'show detailed rendering information')
29
+ .option('--auto-caption', 'generate captions from filenames when none exist')
28
30
  .addHelpText('after', `
29
31
  ${pc.bold('Examples:')}
30
32
  ${pc.dim('# Build all devices')}
@@ -57,6 +59,9 @@ ${pc.bold('Examples:')}
57
59
  ${pc.dim('# Show detailed rendering info')}
58
60
  $ appshot build --verbose
59
61
 
62
+ ${pc.dim('# Auto-generate captions from filenames')}
63
+ $ appshot build --auto-caption
64
+
60
65
  ${pc.bold('Output:')}
61
66
  Screenshots are saved to: ${pc.cyan('final/[device]/[language]/')}
62
67
 
@@ -159,6 +164,10 @@ ${pc.bold('Language Detection:')}
159
164
  else if (captionData && typeof captionData === 'object') {
160
165
  captionText = captionData[lang] || '';
161
166
  }
167
+ // Fallback to auto-caption from filename
168
+ if (!captionText && opts.autoCaption) {
169
+ captionText = filenameToCaption(screenshot);
170
+ }
162
171
  // Get screenshot dimensions and orientation
163
172
  const { width: srcWidth, height: srcHeight, orientation } = await getImageDimensions(inputPath);
164
173
  // In dry-run mode, skip loading the screenshot buffer
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,CAAC,OAAO,UAAU,QAAQ;IAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,EAAE,uBAAuB,CAAC;SACtG,MAAM,CAAC,gBAAgB,EAAE,2DAA2D,CAAC;SACrF,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,cAAc,CAAC;SACrE,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC;SAC3E,MAAM,CAAC,WAAW,EAAE,iCAAiC,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,GAAG,CAAC;SAC9D,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC;SAC1C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC;SACvC,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,CAAC;SAC/D,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;SAC7D,MAAM,CAAC,yBAAyB,EAAE,uDAAuD,EAAE,OAAO,CAAC;SACnG,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;SAC3E,MAAM,CAAC,WAAW,EAAE,uDAAuD,CAAC;SAC5E,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,WAAW,CAAC,OAAO,EAAE;EACxB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;IAClB,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC;;;IAG7B,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC;;;IAGlC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC;;;IAGxC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC;;;IAGjC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC;;;IAG7B,EAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC;;;IAG7C,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC;;;IAGvC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC;;;IAGxD,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC;;;IAGvC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC;;;EAG1C,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;8BACU,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC;;EAEjE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;;;;;sBAKV,CAAC;SAClB,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;6CAKc,CAAC;YAEtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAClD,iCAAiC;gBACjC,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC;oBACjD,EAAE,CAAC,GAAG,CAAC,wIAAwI,CAAC;oBAChJ,EAAE,CAAC,GAAG,CAAC,yHAAyH,CAAC;oBACjI,EAAE,CAAC,GAAG,CAAC,yHAAyH,CAAC;oBACjI,IAAI,CACL,CAAC;YACJ,CAAC;YAED,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEnD,0DAA0D;YAC1D,MAAM,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAE3D,iCAAiC;YACjC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEnD,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,IAAI,WAAW,GAAG,CAAC,CAAC;YAEpB,sBAAsB;YACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,MAAM,kCAAkC,CAAC,CAAC;oBACjF,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEnD,kCAAkC;gBAClC,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,8BAA8B,QAAQ,EAAE,CAAC,CAAC;oBACtE,SAAS;gBACX,CAAC;gBAED,iCAAiC;gBACjC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE/C,gDAAgD;gBAChD,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;qBAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;qBAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;qBACtD,IAAI,EAAE,CAAC;gBAEV,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,2BAA2B,QAAQ,EAAE,CAAC,CAAC;oBACnE,SAAS;gBACX,CAAC;gBAED,wCAAwC;gBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;gBACxF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;gBAElD,oCAAoC;gBACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpH,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAE3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;gBAC1H,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpF,CAAC;gBAED,wBAAwB;gBACxB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,mCAAmC;oBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/C,CAAC;oBAED,iCAAiC;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;wBACzD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;wBACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;4BAC9C,IAAI,CAAC;gCACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gCAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gCAElD,+CAA+C;gCAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;gCACzC,IAAI,WAAW,GAAG,EAAE,CAAC;gCACrB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oCACpC,WAAW,GAAG,WAAW,CAAC;gCAC5B,CAAC;qCAAM,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oCAC1D,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gCACxC,CAAC;gCAED,4CAA4C;gCAC5C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;gCAEhG,sDAAsD;gCACtD,IAAI,gBAAoC,CAAC;gCACzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oCACjB,IAAI,CAAC;wCACH,+CAA+C;wCAC/C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCAE9C,oCAAoC;wCACpC,gBAAgB,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;6CACtC,GAAG,EAAE,CAAC,uBAAuB;6CAC7B,QAAQ,EAAE,CAAC;oCAChB,CAAC;oCAAC,OAAO,KAAK,EAAE,CAAC;wCACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wCACjJ,OAAO;oCACT,CAAC;gCACH,CAAC;gCAED,yCAAyC;gCACzC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gCAEnF,wDAAwD;gCACxD,IAAI,QAAgB,CAAC;gCACrB,IAAI,SAAiB,CAAC;gCAEtB,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;oCAC/B,sCAAsC;oCACtC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oCAC/C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gCAClD,CAAC;qCAAM,CAAC;oCACN,uCAAuC;oCACvC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oCAC/C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gCAClD,CAAC;gCAED,wCAAwC;gCACxC,MAAM,iBAAiB,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;gCAChF,IAAI,iBAAiB,KAAK,WAAW,EAAE,CAAC;oCACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,iBAAiB,KAAK,YAAY,CAAC,UAAU,uBAAuB,WAAW,mBAAmB,CAAC,CAAC,CAAC;gCAClK,CAAC;gCAED,+BAA+B;gCAC/B,IAAI,KAAK,GAAG,IAAI,CAAC;gCACjB,IAAI,aAAa,GAAG,IAAI,CAAC;gCACzB,IAAI,SAAS,GAAG,KAAK,CAAC;gCAEtB,qCAAqC;gCACrC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oCACzB,8EAA8E;oCAC9E,iCAAiC;oCACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3B,MAA6C,EAC7C,YAAY,CAAC,cAAc,EAC3B,IAAI,CAAC,MAAM,CAAC,oBAAoB;qCACjC,CAAC;oCAEF,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;oCACrB,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;oCAEhC,IAAI,aAAa,EAAE,CAAC;wCAClB,SAAS,GAAG,IAAI,CAAC;wCACjB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4CAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,WAAW,IAAI,WAAW,QAAQ,CAAC,CAAC,CAAC;wCACtH,CAAC;oCACH,CAAC;yCAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC;wCACnD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;oCACrF,CAAC;gCACH,CAAC;gCAED,qCAAqC;gCACrC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oCAChB,iBAAiB;oCACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;oCAE/D,yBAAyB;oCACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,QAAQ,IAAI,SAAS,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;oCAE7E,kBAAkB;oCAClB,IAAI,aAAa,EAAE,CAAC;wCAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,WAAW,KAAK,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;oCAC5H,CAAC;yCAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;wCAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;oCAC5D,CAAC;oCAED,oBAAoB;oCACpB,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;wCAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;wCAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,MAAM,WAAW,KAAK,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wCAEjL,iBAAiB;wCACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;wCACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;oCAC/C,CAAC;oCAED,mBAAmB;oCACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,QAAQ,IAAI,SAAS,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC;oCAE5E,cAAc,EAAE,CAAC;gCACnB,CAAC;qCAAM,CAAC;oCACN,mBAAmB;oCACnB,IAAI,KAAa,CAAC;oCAClB,IAAI,CAAC;wCACH,uBAAuB;wCACvB,IAAI,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC;wCAEzC,qCAAqC;wCACrC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;4CACpB,gBAAgB,GAAG;gDACjB,IAAI,EAAE,OAAO;gDACb,KAAK,EAAE,IAAI,CAAC,UAAU;gDACtB,GAAG,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;gDAClC,cAAc,EAAE,IAAI;6CACrB,CAAC;wCACJ,CAAC;6CAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4CAC/B,gBAAgB,GAAG;gDACjB,IAAI,EAAE,MAAM;gDACZ,GAAG,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;gDAClC,cAAc,EAAE,IAAI;6CACrB,CAAC;wCACJ,CAAC;6CAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4CAC7B,gBAAgB,GAAG,SAAS,CAAC;wCAC/B,CAAC;wCAED,KAAK,GAAG,MAAM,yBAAyB,CAAC;4CACtC,UAAU,EAAE,gBAAiB;4CAC7B,KAAK,EAAE,KAAK;4CACZ,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;gDAC7B,UAAU,EAAE,aAAa,CAAC,UAAU;gDACpC,WAAW,EAAE,aAAa,CAAC,WAAW;gDACtC,UAAU,EAAE,aAAa,CAAC,UAAU;gDACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;gDAChC,UAAU,EAAE,aAAa,CAAC,UAAU;gDACpC,WAAW,EAAE,aAAa,CAAC,WAAW;gDACtC,IAAI,EAAE,aAAa,CAAC,IAAI;6CACzB,CAAC,CAAC,CAAC,SAAS;4CACb,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;4CACzD,aAAa,EAAE,MAAM,CAAC,OAAO;4CAC7B,cAAc,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;4CACrE,gBAAgB,EAAE,gBAAgB;4CAClC,YAAY,EAAE,YAAY;4CAC1B,WAAW,EAAE,QAAQ;4CACrB,YAAY,EAAE,SAAS;4CACvB,OAAO,EAAE,IAAI,CAAC,OAAO;yCACtB,CAAC,CAAC;oCACL,CAAC;oCAAC,OAAO,KAAK,EAAE,CAAC;wCACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wCACjH,OAAO;oCACT,CAAC;oCAED,mBAAmB;oCACnB,MAAM,KAAK,CAAC,KAAK,CAAC;yCACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE;wCACjD,GAAG,EAAE,QAAQ;wCACb,kBAAkB,EAAE,IAAI;qCACzB,CAAC;yCACD,GAAG,EAAE,CAAE,uBAAuB;yCAC9B,MAAM,CAAC,UAAU,CAAC,CAAC;oCAEtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpD,EAAE,CAAC,GAAG,CAAC,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oCAC/F,cAAc,EAAE,CAAC;gCACnB,CAAC;4BACH,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCACvG,WAAW,EAAE,CAAC;4BAChB,CAAC;wBACH,CAAC,CAAC,CAAC;wBAEH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,UAAU;YACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,cAAc,iCAAiC,CAAC,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,cAAc,wBAAwB,CAAC,CAAC,CAAC;gBACnE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,WAAW,SAAS,CAAC,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/commands/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgKpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YA+H/B"}
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/commands/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoKpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAwI/B"}
@@ -86,7 +86,8 @@ async function processSingleFile(inputPath, framesDir, options) {
86
86
  },
87
87
  outputFormat: options.format || 'png',
88
88
  jpegQuality: 92,
89
- verbose: options.verbose
89
+ verbose: options.verbose,
90
+ frameTone: options.frameTone
90
91
  });
91
92
  }
92
93
  catch (err) {
@@ -137,6 +138,7 @@ export default function frameCmd() {
137
138
  .option('--suffix <text>', 'filename suffix when not overwriting', '-framed')
138
139
  .option('--overwrite', 'overwrite original file name')
139
140
  .option('--dry-run', 'preview files without processing')
141
+ .option('--frame-tone <tone>', 'frame color treatment (original|neutral)', 'original')
140
142
  .option('--verbose', 'show detailed information')
141
143
  .addHelpText('after', `
142
144
  ${pc.bold('Examples:')}
@@ -155,6 +157,12 @@ ${pc.bold('Examples:')}
155
157
  ${pc.dim('# Dry run with verbose logs')}
156
158
  $ appshot frame ./screenshots --dry-run --verbose`)
157
159
  .action(async (input, opts) => {
160
+ const frameToneInput = typeof opts.frameTone === 'string' ? opts.frameTone.toLowerCase() : 'original';
161
+ const validFrameTones = ['original', 'neutral'];
162
+ if (!validFrameTones.includes(frameToneInput)) {
163
+ console.error(pc.red('Invalid --frame-tone value. Use one of:'), validFrameTones.join(', '));
164
+ process.exit(1);
165
+ }
158
166
  const options = {
159
167
  output: opts.output,
160
168
  device: opts.device,
@@ -163,7 +171,8 @@ ${pc.bold('Examples:')}
163
171
  suffix: opts.suffix,
164
172
  overwrite: Boolean(opts.overwrite),
165
173
  verbose: Boolean(opts.verbose),
166
- dryRun: Boolean(opts.dryRun)
174
+ dryRun: Boolean(opts.dryRun),
175
+ frameTone: frameToneInput
167
176
  };
168
177
  // Validate device option if provided
169
178
  if (options.device && !['iphone', 'ipad', 'mac', 'watch'].includes(options.device)) {