appshot-cli 0.8.7 → 0.9.1
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.
- package/README.md +784 -15
- package/dist/cli.js +24 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +16 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +382 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/order.d.ts +3 -0
- package/dist/commands/order.d.ts.map +1 -0
- package/dist/commands/order.js +321 -0
- package/dist/commands/order.js.map +1 -0
- package/dist/commands/preset.d.ts +5 -0
- package/dist/commands/preset.d.ts.map +1 -0
- package/dist/commands/preset.js +191 -0
- package/dist/commands/preset.js.map +1 -0
- package/dist/commands/quickstart.d.ts +3 -0
- package/dist/commands/quickstart.d.ts.map +1 -0
- package/dist/commands/quickstart.js +326 -0
- package/dist/commands/quickstart.js.map +1 -0
- package/dist/commands/style.d.ts.map +1 -1
- package/dist/commands/style.js +98 -0
- package/dist/commands/style.js.map +1 -1
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +399 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/core/compose.d.ts +16 -0
- package/dist/core/compose.d.ts.map +1 -1
- package/dist/core/compose.js +342 -83
- package/dist/core/compose.js.map +1 -1
- package/dist/services/doctor.js +1 -1
- package/dist/services/export-validator.d.ts +23 -0
- package/dist/services/export-validator.d.ts.map +1 -0
- package/dist/services/export-validator.js +209 -0
- package/dist/services/export-validator.js.map +1 -0
- package/dist/services/fastlane-config-generator.d.ts +17 -0
- package/dist/services/fastlane-config-generator.d.ts.map +1 -0
- package/dist/services/fastlane-config-generator.js +343 -0
- package/dist/services/fastlane-config-generator.js.map +1 -0
- package/dist/services/fastlane-language-mapper.d.ts +33 -0
- package/dist/services/fastlane-language-mapper.d.ts.map +1 -0
- package/dist/services/fastlane-language-mapper.js +167 -0
- package/dist/services/fastlane-language-mapper.js.map +1 -0
- package/dist/services/screenshot-order.d.ts +41 -0
- package/dist/services/screenshot-order.d.ts.map +1 -0
- package/dist/services/screenshot-order.js +211 -0
- package/dist/services/screenshot-order.js.map +1 -0
- package/dist/services/screenshot-organizer.d.ts +44 -0
- package/dist/services/screenshot-organizer.d.ts.map +1 -0
- package/dist/services/screenshot-organizer.js +234 -0
- package/dist/services/screenshot-organizer.js.map +1 -0
- package/dist/templates/registry.d.ts +73 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +724 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/validation.d.ts +36 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +143 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -2,19 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
> **AI-First CLI for App Store Screenshots** - Generate beautiful, localized screenshots with device frames, gradients, and captions.
|
|
4
4
|
|
|
5
|
+
🌐 https://appshot.sh
|
|
6
|
+
|
|
5
7
|
[](https://github.com/chrisvanbuskirk/appshot/actions/workflows/ci.yml)
|
|
6
8
|
[](https://www.npmjs.com/package/appshot-cli)
|
|
7
9
|
[](https://www.npmjs.com/package/appshot-cli)
|
|
8
10
|
[](https://nodejs.org)
|
|
9
11
|
[](https://opensource.org/licenses/MIT)
|
|
10
12
|
|
|
11
|
-
🆕 **Version 0.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
🆕 **Version 0.9.1** - **Fastlane Export Integration & Screenshot Ordering**
|
|
14
|
+
- **Export Command**: New `appshot export` command for seamless Fastlane integration
|
|
15
|
+
- **Screenshot Ordering**: New `appshot order` command to control App Store screenshot sequence
|
|
16
|
+
- **Order Flag**: Export with `--order` to add numeric prefixes (01_, 02_, etc.)
|
|
17
|
+
- **Smart Ordering**: Handles existing prefixes, prevents double-prefixing
|
|
18
|
+
- **Auto-Detection**: Automatically detects languages from your screenshots
|
|
19
|
+
- **Language Mapping**: Smart mapping to Fastlane-compatible language codes (en → en-US, etc.)
|
|
20
|
+
- **Device Filtering**: Export specific devices with `--devices iphone,ipad`
|
|
21
|
+
- **Validation**: Pre-export validation with warnings and clear error messages
|
|
22
|
+
- **Configuration Generation**: Auto-generate Deliverfile and Fastfile with `--generate-config`
|
|
23
|
+
- **Flexible Output**: Choose between symlinks (default) or file copying with `--copy`
|
|
24
|
+
- **iPad Pro Support**: Automatic IPAD_PRO_3GEN_129_ prefix for proper Fastlane recognition
|
|
25
|
+
- **Dry Run Mode**: Preview export operations with `--dry-run`
|
|
26
|
+
|
|
27
|
+
**Version 0.9.0** - **Professional Template System & Enhanced Positioning**
|
|
28
|
+
- **Quick Start**: New `appshot quickstart` command for instant setup with templates
|
|
29
|
+
- **Templates**: 8 professional templates (modern, minimal, bold, elegant, showcase, playful, corporate, nerdy)
|
|
30
|
+
- **One Command Setup**: Apply complete visual styles with `appshot template <name>`
|
|
31
|
+
- **Smart Defaults**: Each template includes optimized settings for all devices
|
|
32
|
+
- **Caption Integration**: Templates can include captions directly with `--caption`
|
|
33
|
+
- **Vertical Alignment**: Pin caption text to top or center within the caption box
|
|
34
|
+
- **Side Margins**: Control caption box width with `sideMargin` (unified wrapping calculation)
|
|
35
|
+
- **Outer Margins**: Add spacing with `marginTop`/`marginBottom` for better visual balance
|
|
36
|
+
- **Apple Watch Fix**: Resolved positioning bug allowing proper framePosition control
|
|
37
|
+
- **Exact Width Parity**: Caption wrapping now identical between preview and final render
|
|
38
|
+
- **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).
|
|
39
|
+
|
|
40
|
+
> Note on layout changes (0.9.0): This release refines caption placement rules.
|
|
41
|
+
> - Overlay captions are anchored by the bottom of the entire caption box (padding/border included), and `0` values are respected.
|
|
42
|
+
> - 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.
|
|
43
|
+
> - 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.
|
|
18
44
|
|
|
19
45
|
## 📖 Table of Contents
|
|
20
46
|
|
|
@@ -24,14 +50,17 @@
|
|
|
24
50
|
- [Prerequisites](#prerequisites)
|
|
25
51
|
- [Installation](#installation)
|
|
26
52
|
- [Your First Screenshot](#your-first-screenshot)
|
|
53
|
+
- [Claude Code Integration](#-claude-code-integration)
|
|
27
54
|
- [Core Concepts](#-core-concepts)
|
|
28
55
|
- [Visual Customization](#-visual-customization)
|
|
29
56
|
- [Gradient System](#gradient-system)
|
|
30
57
|
- [Font System](#font-system)
|
|
31
58
|
- [Device Frames](#device-frames)
|
|
32
59
|
- [Caption System](#caption-system)
|
|
60
|
+
- [Style System Guide](#style-system-guide)
|
|
33
61
|
- [Localization & Translation](#-localization--translation)
|
|
34
62
|
- [Device Support](#-device-support)
|
|
63
|
+
- [Fastlane Integration](#-fastlane-integration)
|
|
35
64
|
- [Command Reference](#-command-reference)
|
|
36
65
|
- [Configuration Reference](#️-configuration-reference)
|
|
37
66
|
- [Agent & Automation Guide](#-agent--automation-guide)
|
|
@@ -45,6 +74,8 @@
|
|
|
45
74
|
|
|
46
75
|
Appshot is the only **agent-first CLI tool** designed for automated App Store screenshot generation. Built for LLM agents, CI/CD pipelines, and developers who value automation over GUIs.
|
|
47
76
|
|
|
77
|
+
**NEW in v0.9.0**: One-line preset commands! Generate professional screenshots instantly with `appshot preset bold --caption "Amazing App" --devices iphone,watch`
|
|
78
|
+
|
|
48
79
|
### Key Differentiators
|
|
49
80
|
|
|
50
81
|
- 🤖 **Agent-First Design** - JSON outputs, predictable commands, no interactive prompts in automation mode
|
|
@@ -97,9 +128,28 @@ appshot --version
|
|
|
97
128
|
|
|
98
129
|
> **Note**: The package is called `appshot-cli` on NPM, but the command is `appshot`
|
|
99
130
|
|
|
100
|
-
### Your First Screenshot
|
|
131
|
+
### Your First Screenshot - Two Ways
|
|
132
|
+
|
|
133
|
+
#### Option 1: Quick Start with Templates (NEW! 🎨)
|
|
101
134
|
|
|
102
|
-
|
|
135
|
+
The fastest way to get professional screenshots:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# One command interactive setup
|
|
139
|
+
appshot quickstart
|
|
140
|
+
|
|
141
|
+
# Or apply a specific template
|
|
142
|
+
appshot template modern --caption "Your Amazing App"
|
|
143
|
+
|
|
144
|
+
# Build your screenshots
|
|
145
|
+
appshot build
|
|
146
|
+
|
|
147
|
+
# ✨ Professional screenshots ready in seconds!
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
#### Option 2: Traditional Step-by-Step
|
|
151
|
+
|
|
152
|
+
Full control over every aspect:
|
|
103
153
|
|
|
104
154
|
```bash
|
|
105
155
|
# 1. Initialize your project
|
|
@@ -166,6 +216,82 @@ final/
|
|
|
166
216
|
└── dashboard.png # 2048×2732 iPad Pro screenshot
|
|
167
217
|
```
|
|
168
218
|
|
|
219
|
+
## 🤖 Claude Code Integration
|
|
220
|
+
|
|
221
|
+
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.
|
|
222
|
+
|
|
223
|
+
### Available Commands
|
|
224
|
+
|
|
225
|
+
Appshot provides specialized commands for different tasks:
|
|
226
|
+
|
|
227
|
+
- `/appshot-init` - Initialize and configure new projects
|
|
228
|
+
- `/appshot-preset` - One-line preset commands for instant screenshots
|
|
229
|
+
- `/appshot-style` - Apply gradients, fonts, and visual styling
|
|
230
|
+
- `/appshot-caption` - Manage captions and translations
|
|
231
|
+
- `/appshot-build` - Build screenshots with troubleshooting
|
|
232
|
+
- `/appshot-config` - Complete configuration reference
|
|
233
|
+
- `/appshot-quick` - Quick reference for common tasks
|
|
234
|
+
|
|
235
|
+
### Quick Installation
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# If you have AppShot source code
|
|
239
|
+
cd appshot
|
|
240
|
+
./commands/install.sh
|
|
241
|
+
|
|
242
|
+
# If installed via npm
|
|
243
|
+
cd node_modules/appshot-cli
|
|
244
|
+
./commands/install.sh
|
|
245
|
+
|
|
246
|
+
# Manual installation
|
|
247
|
+
mkdir -p ~/.claude/commands
|
|
248
|
+
ln -sf "$(pwd)/commands"/*.md ~/.claude/commands/
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### How It Works
|
|
252
|
+
|
|
253
|
+
When you use a command like `/appshot-style ocean iphone` in Claude Code:
|
|
254
|
+
|
|
255
|
+
1. Claude receives complete documentation for that specific task
|
|
256
|
+
2. All necessary configurations and examples are provided inline
|
|
257
|
+
3. No need to search documentation or run help commands
|
|
258
|
+
4. Claude can immediately execute the appropriate AppShot CLI commands
|
|
259
|
+
|
|
260
|
+
### Example Conversation
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
User: I need to add Apple Watch support to my existing iPhone project
|
|
264
|
+
|
|
265
|
+
Claude: I'll help you add Apple Watch to your project. Let me use /appshot-config
|
|
266
|
+
to show you the exact configuration needed.
|
|
267
|
+
|
|
268
|
+
Add this to your .appshot/config.json under "devices":
|
|
269
|
+
|
|
270
|
+
"watch": {
|
|
271
|
+
"input": "./screenshots/watch",
|
|
272
|
+
"resolution": "410x502",
|
|
273
|
+
"autoFrame": true
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
Note: Apple Watch has special caption handling - uses 2-line wrapping
|
|
277
|
+
and smaller font size (36px max) for the smaller screen.
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Features for AI Agents
|
|
281
|
+
|
|
282
|
+
- **Self-Contained**: Each command includes all necessary information
|
|
283
|
+
- **No Lookups Required**: Commands work without external documentation
|
|
284
|
+
- **Agent-Friendly**: Non-interactive commands for full automation
|
|
285
|
+
- **Complete Examples**: Real-world configurations and workflows
|
|
286
|
+
- **Troubleshooting**: Built-in solutions for common issues
|
|
287
|
+
|
|
288
|
+
### Learn More
|
|
289
|
+
|
|
290
|
+
For complete documentation, examples, and advanced workflows, see:
|
|
291
|
+
- 📚 [Commands Documentation](./commands/README.md) - Full guide with examples
|
|
292
|
+
- 📁 [Commands Directory](./commands/) - Individual command files
|
|
293
|
+
- 🛠️ [Installation Script](./commands/install.sh) - Automated setup
|
|
294
|
+
|
|
169
295
|
## 📘 Core Concepts
|
|
170
296
|
|
|
171
297
|
### Project Structure
|
|
@@ -246,6 +372,132 @@ All settings are stored in `.appshot/config.json`:
|
|
|
246
372
|
|
|
247
373
|
## 🎨 Visual Customization
|
|
248
374
|
|
|
375
|
+
### Template System (NEW! 🚀)
|
|
376
|
+
|
|
377
|
+
Appshot now includes professional screenshot templates that configure everything with a single command. Each template includes carefully designed backgrounds, device positioning, caption styling, and device-specific optimizations.
|
|
378
|
+
|
|
379
|
+
#### Quick Start with Templates
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
# Interactive template selection
|
|
383
|
+
appshot quickstart
|
|
384
|
+
|
|
385
|
+
# Apply a specific template
|
|
386
|
+
appshot template modern
|
|
387
|
+
|
|
388
|
+
# Apply template with caption
|
|
389
|
+
appshot template minimal --caption "Beautiful & Simple"
|
|
390
|
+
|
|
391
|
+
# Preview template settings
|
|
392
|
+
appshot template --preview bold
|
|
393
|
+
|
|
394
|
+
# List all templates
|
|
395
|
+
appshot template --list
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
#### Available Templates
|
|
399
|
+
|
|
400
|
+
📸 **[View Template Gallery](./template-samples/index.html)** - See visual examples of all templates
|
|
401
|
+
|
|
402
|
+
| Template | Description | Best For |
|
|
403
|
+
|----------|-------------|----------|
|
|
404
|
+
| **modern** | Vibrant gradient with floating device and clean captions | Most apps, eye-catching |
|
|
405
|
+
| **minimal** | Soft pastel background with elegant typography | Clean, simple apps |
|
|
406
|
+
| **bold** | Dark dramatic gradient with overlay captions | Gaming, entertainment |
|
|
407
|
+
| **elegant** | Sophisticated monochrome design | Professional, business |
|
|
408
|
+
| **showcase** | Auto-detects custom backgrounds, partial frames | Apps with branded assets |
|
|
409
|
+
| **playful** | Bright, fun gradients | Games, kids apps |
|
|
410
|
+
| **corporate** | Clean, professional look | Business, productivity |
|
|
411
|
+
| **nerdy** | JetBrains Mono typography with OSS grid background | Developer tools |
|
|
412
|
+
|
|
413
|
+

|
|
414
|
+
|
|
415
|
+
##### Rebuild the Gallery Locally
|
|
416
|
+
|
|
417
|
+
```bash
|
|
418
|
+
# From repo root
|
|
419
|
+
npm run samples
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
This generates:
|
|
423
|
+
- Device samples: `template-samples/{iphone|ipad|watch|mac}/<template>-<device>.png`
|
|
424
|
+
- Gallery cards: `template-samples/gallery/*-sample.png`
|
|
425
|
+
- Combined image: `template-samples/gallery/template-gallery.png`
|
|
426
|
+
|
|
427
|
+
#### Template Features
|
|
428
|
+
|
|
429
|
+
Each template automatically configures:
|
|
430
|
+
- **Background**: Gradient colors and direction or image settings
|
|
431
|
+
- **Device Scale**: Optimal size for visual balance (70-110%)
|
|
432
|
+
- **Device Position**: Top, center, bottom, or custom percentage
|
|
433
|
+
- **Caption Style**: Font, size, color, and position
|
|
434
|
+
- **Caption Background**: Optional semi-transparent background with padding
|
|
435
|
+
- **Caption Border**: Optional border with customizable radius
|
|
436
|
+
- **Partial Frames**: Modern look with cut-off device bottoms
|
|
437
|
+
- **Device Overrides**: Optimized settings for watch, iPad, etc.
|
|
438
|
+
|
|
439
|
+
#### Template Examples
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
# Modern Template - Perfect for most apps
|
|
443
|
+
appshot template modern
|
|
444
|
+
# → Vibrant diagonal gradient (#667eea → #764ba2 → #f093fb)
|
|
445
|
+
# → 85% device scale, centered
|
|
446
|
+
# → White captions with dark semi-transparent background
|
|
447
|
+
|
|
448
|
+
# Minimal Template - Clean and simple
|
|
449
|
+
appshot template minimal
|
|
450
|
+
# → Soft pastel gradient (#ffecd2 → #fcb69f)
|
|
451
|
+
# → 75% device scale, lower position
|
|
452
|
+
# → Dark text on light background
|
|
453
|
+
|
|
454
|
+
# Bold Template - Make a statement
|
|
455
|
+
appshot template bold
|
|
456
|
+
# → Dark gradient (#0f0c29 → #302b63 → #24243e)
|
|
457
|
+
# → 110% device scale with partial frame
|
|
458
|
+
# → Large overlay captions with border
|
|
459
|
+
|
|
460
|
+
# Showcase Template - Feature your backgrounds
|
|
461
|
+
appshot template showcase
|
|
462
|
+
# → Auto-detects background.png in device folders
|
|
463
|
+
# → 90% scale with 25% partial frame
|
|
464
|
+
# → Glass-morphism caption effect
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
#### Customizing Templates
|
|
468
|
+
|
|
469
|
+
Templates provide a starting point that you can further customize:
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
# 1. Apply a template
|
|
473
|
+
appshot template modern
|
|
474
|
+
|
|
475
|
+
# 2. Fine-tune specific settings
|
|
476
|
+
appshot style --device iphone # Adjust positioning
|
|
477
|
+
appshot fonts --set "Poppins Bold" # Change font
|
|
478
|
+
appshot caption --device iphone # Update captions
|
|
479
|
+
|
|
480
|
+
# 3. Build with your customizations
|
|
481
|
+
appshot build
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### Creating Consistent Screenshots
|
|
485
|
+
|
|
486
|
+
Templates ensure consistency across all your screenshots:
|
|
487
|
+
|
|
488
|
+
```json
|
|
489
|
+
// After applying a template, all devices share:
|
|
490
|
+
{
|
|
491
|
+
"background": { /* Same gradient/image */ },
|
|
492
|
+
"caption": { /* Same font and styling */ },
|
|
493
|
+
"devices": {
|
|
494
|
+
"iphone": { /* Optimized for iPhone */ },
|
|
495
|
+
"ipad": { /* Optimized for iPad */ },
|
|
496
|
+
"watch": { /* Special watch handling */ }
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
```
|
|
500
|
+
|
|
249
501
|
### Gradient System
|
|
250
502
|
|
|
251
503
|
Appshot includes 24+ professional gradient presets organized by category:
|
|
@@ -289,7 +541,7 @@ appshot gradients --sample
|
|
|
289
541
|
}
|
|
290
542
|
```
|
|
291
543
|
|
|
292
|
-
### Background System
|
|
544
|
+
### Background System
|
|
293
545
|
|
|
294
546
|
Replace gradients with custom static background images for a unique, branded look. Appshot supports automatic detection, multiple formats, and intelligent scaling.
|
|
295
547
|
|
|
@@ -592,6 +844,79 @@ Create modern App Store screenshots with cut-off device frames:
|
|
|
592
844
|
}
|
|
593
845
|
```
|
|
594
846
|
|
|
847
|
+
#### Frame Positioning System
|
|
848
|
+
|
|
849
|
+
**Important**: The `framePosition` value (0-100) behaves differently depending on your caption positioning mode.
|
|
850
|
+
|
|
851
|
+
##### Relative vs Absolute Positioning
|
|
852
|
+
|
|
853
|
+
When using `captionPosition: "above"` or `"below"`:
|
|
854
|
+
- **Frame positioning is RELATIVE to the remaining space** after accounting for the caption
|
|
855
|
+
- `framePosition: 0` = Top of available space (immediately after/before caption)
|
|
856
|
+
- `framePosition: 50` = Center of remaining space
|
|
857
|
+
- `framePosition: 100` = Bottom of available space
|
|
858
|
+
|
|
859
|
+
When using `captionPosition: "overlay"`:
|
|
860
|
+
- **Frame positioning is ABSOLUTE to the entire canvas**
|
|
861
|
+
- `framePosition: 0` = Top of canvas (pixel 0)
|
|
862
|
+
- `framePosition: 50` = Center of entire canvas
|
|
863
|
+
- `framePosition: 100` = Bottom of canvas
|
|
864
|
+
|
|
865
|
+
##### Visual Examples
|
|
866
|
+
|
|
867
|
+
```json
|
|
868
|
+
// Example 1: Caption above with framePosition: 0
|
|
869
|
+
{
|
|
870
|
+
"devices": {
|
|
871
|
+
"iphone": {
|
|
872
|
+
"captionPosition": "above",
|
|
873
|
+
"framePosition": 0 // Device starts right after caption
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
// Result: [Caption] then [Device at top of remaining space]
|
|
878
|
+
|
|
879
|
+
// Example 2: Caption overlay with framePosition: 0
|
|
880
|
+
{
|
|
881
|
+
"devices": {
|
|
882
|
+
"iphone": {
|
|
883
|
+
"captionPosition": "overlay",
|
|
884
|
+
"framePosition": 0 // Device at absolute top
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
// Result: [Device at canvas top] with [Caption overlaid at bottom]
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
##### The Math Behind Positioning
|
|
892
|
+
|
|
893
|
+
For **"above" mode**, the device position is calculated as:
|
|
894
|
+
```
|
|
895
|
+
deviceTop = topMargin + captionHeight + (availableSpace * framePosition/100)
|
|
896
|
+
where availableSpace = canvasHeight - topMargin - captionHeight - bottomMargin - deviceHeight
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
For **"overlay" mode**, the device position is calculated as:
|
|
900
|
+
```
|
|
901
|
+
deviceTop = availableSpace * (framePosition/100)
|
|
902
|
+
where availableSpace = canvasHeight - bottomMargin - deviceHeight
|
|
903
|
+
```
|
|
904
|
+
|
|
905
|
+
##### Practical Implications
|
|
906
|
+
|
|
907
|
+
1. **Same framePosition, Different Results**: A `framePosition: 0` will place the device at different absolute positions:
|
|
908
|
+
- With `above` caption: Device starts after the caption (e.g., at pixel 198)
|
|
909
|
+
- With `overlay` caption: Device starts at the top (pixel 0)
|
|
910
|
+
|
|
911
|
+
2. **Caption Height Affects Layout**: In `above`/`below` modes, varying caption lengths change the available space, affecting all frame positions. Use `overlay` mode for consistent device positioning across screenshots with different caption lengths.
|
|
912
|
+
|
|
913
|
+
3. **Best Practices**:
|
|
914
|
+
- Use `above`/`below` for guaranteed caption-device separation
|
|
915
|
+
- Use `overlay` for consistent device positioning across all screenshots
|
|
916
|
+
- Set fixed caption heights (`minHeight`/`maxHeight`) for uniform layouts
|
|
917
|
+
|
|
918
|
+
📚 **[Visual Preset Showcase](./positioning-guide/preset-showcase.html)** - Interactive visual guide showing all available preset templates and their styles
|
|
919
|
+
|
|
595
920
|
### Caption System
|
|
596
921
|
|
|
597
922
|
#### Dynamic Caption Box
|
|
@@ -634,7 +959,7 @@ appshot style --device iphone
|
|
|
634
959
|
}
|
|
635
960
|
```
|
|
636
961
|
|
|
637
|
-
#### Caption Styling (
|
|
962
|
+
#### Caption Styling (Enhanced in v0.8.7)
|
|
638
963
|
|
|
639
964
|
Create professional captions with customizable backgrounds and borders:
|
|
640
965
|
|
|
@@ -650,7 +975,7 @@ Create professional captions with customizable backgrounds and borders:
|
|
|
650
975
|
"border": {
|
|
651
976
|
"color": "#FFFFFF", // Border color (hex)
|
|
652
977
|
"width": 2, // Border thickness (1-10)
|
|
653
|
-
"radius": 12 // Rounded corners (0-30)
|
|
978
|
+
"radius": 12 // Rounded corners (0-30); used for background too
|
|
654
979
|
}
|
|
655
980
|
}
|
|
656
981
|
}
|
|
@@ -661,6 +986,8 @@ Create professional captions with customizable backgrounds and borders:
|
|
|
661
986
|
- **Flexible positioning** - Works with above, below, and overlay positions
|
|
662
987
|
- **Device-specific overrides** - Customize styling per device type
|
|
663
988
|
- **Professional appearance** - Rounded corners and padding for polished look
|
|
989
|
+
- **Vertical anchoring (NEW)** - Align caption text to top or center of the box
|
|
990
|
+
- **Unified side margins (NEW)** - Control caption box width with `caption.background.sideMargin`
|
|
664
991
|
|
|
665
992
|
**Interactive Configuration:**
|
|
666
993
|
```bash
|
|
@@ -669,6 +996,8 @@ appshot style --device iphone
|
|
|
669
996
|
# → Choose caption position (above/below/overlay)
|
|
670
997
|
# → Configure background color and opacity
|
|
671
998
|
# → Set border color, width, and radius
|
|
999
|
+
# → Set vertical alignment (top/center)
|
|
1000
|
+
# → Set side margin, min/max height, max lines
|
|
672
1001
|
```
|
|
673
1002
|
|
|
674
1003
|
**Examples:**
|
|
@@ -698,12 +1027,44 @@ appshot style --device iphone
|
|
|
698
1027
|
"background": {
|
|
699
1028
|
"color": "#FF5733",
|
|
700
1029
|
"opacity": 0.6,
|
|
701
|
-
"padding": 25
|
|
1030
|
+
"padding": 25,
|
|
1031
|
+
"sideMargin": 24
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
```
|
|
1036
|
+
|
|
1037
|
+
#### Fixed vs Adaptive Caption Height
|
|
1038
|
+
|
|
1039
|
+
```json
|
|
1040
|
+
{
|
|
1041
|
+
"caption": {
|
|
1042
|
+
"position": "above",
|
|
1043
|
+
"box": {
|
|
1044
|
+
"autoSize": false, // Fixed height banner
|
|
1045
|
+
"minHeight": 320,
|
|
1046
|
+
"maxHeight": 320,
|
|
1047
|
+
"verticalAlign": "top" // Pin text to top of banner
|
|
702
1048
|
}
|
|
703
1049
|
}
|
|
704
1050
|
}
|
|
705
1051
|
```
|
|
706
1052
|
|
|
1053
|
+
- Set `autoSize: true` plus `minHeight`/`maxHeight` clamps for adaptive banners.
|
|
1054
|
+
- Use `verticalAlign: 'top'` to avoid recenters when height changes.
|
|
1055
|
+
|
|
1056
|
+
### Preset Templates Guide
|
|
1057
|
+
|
|
1058
|
+
An interactive showcase of all available preset templates is available at `positioning-guide/preset-showcase.html`.
|
|
1059
|
+
|
|
1060
|
+
- Visual preview of all 7 professional templates (modern, minimal, bold, elegant, showcase, playful, corporate)
|
|
1061
|
+
- Side-by-side comparison across iPhone, iPad, Mac, and Watch devices
|
|
1062
|
+
- Shows gradient backgrounds, device positioning, and caption styles
|
|
1063
|
+
- Helps you choose the perfect template for your app's style
|
|
1064
|
+
- One-line command examples for each preset
|
|
1065
|
+
|
|
1066
|
+
Open the file in a browser to explore all available templates before applying them via `appshot preset` or `appshot template`.
|
|
1067
|
+
|
|
707
1068
|
#### Caption Autocomplete
|
|
708
1069
|
|
|
709
1070
|
The caption command includes intelligent autocomplete:
|
|
@@ -857,8 +1218,416 @@ appshot validate --strict
|
|
|
857
1218
|
appshot validate --fix
|
|
858
1219
|
```
|
|
859
1220
|
|
|
1221
|
+
## 🚀 Fastlane Integration
|
|
1222
|
+
|
|
1223
|
+
Appshot seamlessly integrates with [Fastlane](https://docs.fastlane.tools/) for uploading screenshots to App Store Connect. The `export` command reorganizes your Appshot-generated screenshots into Fastlane's expected directory structure.
|
|
1224
|
+
|
|
1225
|
+
### Overview
|
|
1226
|
+
|
|
1227
|
+
Appshot and Fastlane work together but remain separate tools:
|
|
1228
|
+
- **Appshot**: Generates beautiful screenshots with frames, gradients, and captions
|
|
1229
|
+
- **Fastlane**: Uploads screenshots to App Store Connect
|
|
1230
|
+
|
|
1231
|
+
### Quick Start
|
|
1232
|
+
|
|
1233
|
+
```bash
|
|
1234
|
+
# 1. Generate screenshots with Appshot
|
|
1235
|
+
appshot build --preset iphone-6-9,ipad-13
|
|
1236
|
+
|
|
1237
|
+
# 2. Export for Fastlane (auto-detects languages)
|
|
1238
|
+
appshot export
|
|
1239
|
+
|
|
1240
|
+
# 3. Upload with Fastlane
|
|
1241
|
+
cd fastlane && fastlane deliver
|
|
1242
|
+
```
|
|
1243
|
+
|
|
1244
|
+
### Export Command
|
|
1245
|
+
|
|
1246
|
+
The `appshot export` command bridges Appshot and Fastlane:
|
|
1247
|
+
|
|
1248
|
+
```bash
|
|
1249
|
+
# Basic export (auto-detects languages, creates symlinks)
|
|
1250
|
+
appshot export
|
|
1251
|
+
|
|
1252
|
+
# Export specific devices only
|
|
1253
|
+
appshot export --devices iphone,ipad
|
|
1254
|
+
|
|
1255
|
+
# Copy files instead of symlinks (for CI/CD)
|
|
1256
|
+
appshot export --copy --clean
|
|
1257
|
+
|
|
1258
|
+
# Generate Fastlane configuration
|
|
1259
|
+
appshot export --generate-config
|
|
1260
|
+
|
|
1261
|
+
# Preview without creating files
|
|
1262
|
+
appshot export --dry-run
|
|
1263
|
+
|
|
1264
|
+
# Custom paths
|
|
1265
|
+
appshot export --source ./my-screenshots --output ./upload
|
|
1266
|
+
```
|
|
1267
|
+
|
|
1268
|
+
### Language Mapping
|
|
1269
|
+
|
|
1270
|
+
Appshot automatically maps language codes to Fastlane format:
|
|
1271
|
+
- `en` → `en-US`
|
|
1272
|
+
- `es` → `es-ES`
|
|
1273
|
+
- `fr` → `fr-FR`
|
|
1274
|
+
- `de` → `de-DE`
|
|
1275
|
+
- `zh` → `zh-Hans`
|
|
1276
|
+
- `pt` → `pt-PT`
|
|
1277
|
+
- [and 20+ more mappings]
|
|
1278
|
+
|
|
1279
|
+
Custom mappings via `.appshot/export-config.json`:
|
|
1280
|
+
```json
|
|
1281
|
+
{
|
|
1282
|
+
"languageMappings": {
|
|
1283
|
+
"en": "en-GB",
|
|
1284
|
+
"custom": "x-special"
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
```
|
|
1288
|
+
|
|
1289
|
+
### Directory Structure
|
|
1290
|
+
|
|
1291
|
+
**Appshot Output** (source):
|
|
1292
|
+
```
|
|
1293
|
+
final/
|
|
1294
|
+
├── iphone/
|
|
1295
|
+
│ ├── en/
|
|
1296
|
+
│ │ ├── home.png
|
|
1297
|
+
│ │ └── features.png
|
|
1298
|
+
│ └── es/
|
|
1299
|
+
│ └── home.png
|
|
1300
|
+
└── ipad/
|
|
1301
|
+
└── en/
|
|
1302
|
+
└── home.png
|
|
1303
|
+
```
|
|
1304
|
+
|
|
1305
|
+
**Fastlane Structure** (after export):
|
|
1306
|
+
```
|
|
1307
|
+
fastlane/screenshots/
|
|
1308
|
+
├── en-US/
|
|
1309
|
+
│ ├── iphone/
|
|
1310
|
+
│ │ ├── home.png
|
|
1311
|
+
│ │ └── features.png
|
|
1312
|
+
│ └── ipad/
|
|
1313
|
+
│ └── IPAD_PRO_3GEN_129_home.png # Auto-renamed
|
|
1314
|
+
└── es-ES/
|
|
1315
|
+
└── iphone/
|
|
1316
|
+
└── home.png
|
|
1317
|
+
```
|
|
1318
|
+
|
|
1319
|
+
### Special Handling
|
|
1320
|
+
|
|
1321
|
+
#### iPad Pro Naming
|
|
1322
|
+
iPad Pro 12.9" (3rd gen) screenshots are automatically renamed with the `IPAD_PRO_3GEN_129_` prefix for proper Fastlane recognition.
|
|
1323
|
+
|
|
1324
|
+
#### Symlinks vs Copying
|
|
1325
|
+
- **Default**: Creates symlinks (saves disk space, instant)
|
|
1326
|
+
- **CI/CD**: Use `--copy` for portable archives
|
|
1327
|
+
- **Clean**: Use `--clean` to remove old exports before creating new ones
|
|
1328
|
+
|
|
1329
|
+
### Screenshot Ordering (NEW! v0.9.1)
|
|
1330
|
+
|
|
1331
|
+
> **📌 Important Discovery**: Fastlane uploads screenshots in alphabetical order by filename. Without explicit ordering, your carefully arranged screenshots may appear in the wrong sequence on the App Store!
|
|
1332
|
+
|
|
1333
|
+
#### The Order Problem
|
|
1334
|
+
When exporting screenshots for Fastlane, the alphabetical ordering can disrupt your intended flow:
|
|
1335
|
+
- ❌ Without ordering: `bluesky.png`, `cast.png`, `home.png`, `media.png`, `updates.png`
|
|
1336
|
+
- ✅ With ordering: `01_home.png`, `02_updates.png`, `03_cast.png`, `04_media.png`, `05_bluesky.png`
|
|
1337
|
+
|
|
1338
|
+
#### Managing Screenshot Order
|
|
1339
|
+
|
|
1340
|
+
```bash
|
|
1341
|
+
# Set order interactively for each device
|
|
1342
|
+
appshot order --device iphone
|
|
1343
|
+
appshot order --device ipad
|
|
1344
|
+
appshot order --device watch
|
|
1345
|
+
|
|
1346
|
+
# Export with numeric prefixes
|
|
1347
|
+
appshot export --order --copy --clean
|
|
1348
|
+
|
|
1349
|
+
# View current order
|
|
1350
|
+
appshot order --show
|
|
1351
|
+
```
|
|
1352
|
+
|
|
1353
|
+
The order configuration is saved in `.appshot/screenshot-order.json` and intelligently handles:
|
|
1354
|
+
- Files with existing numeric prefixes (prevents double-prefixing like `01_01_home.png`)
|
|
1355
|
+
- Mixed naming conventions in your source files
|
|
1356
|
+
- New screenshots added after initial ordering
|
|
1357
|
+
|
|
1358
|
+
#### Quick Order Setup
|
|
1359
|
+
|
|
1360
|
+
Create a standard order configuration:
|
|
1361
|
+
```bash
|
|
1362
|
+
cat > .appshot/screenshot-order.json << 'EOF'
|
|
1363
|
+
{
|
|
1364
|
+
"version": "1.0",
|
|
1365
|
+
"orders": {
|
|
1366
|
+
"iphone": ["home.png", "features.png", "search.png", "profile.png", "settings.png"],
|
|
1367
|
+
"ipad": ["home.png", "features.png", "search.png", "profile.png", "settings.png"],
|
|
1368
|
+
"watch": ["home.png", "features.png", "profile.png"]
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
EOF
|
|
1372
|
+
```
|
|
1373
|
+
|
|
1374
|
+
### Fastlane Gotchas & Solutions
|
|
1375
|
+
|
|
1376
|
+
> **🔍 Key Discoveries from Real-World Integration**
|
|
1377
|
+
|
|
1378
|
+
#### 1. Nested Directory Limitations
|
|
1379
|
+
**Problem**: Fastlane's `deliver` command struggles with nested device directories inside language folders.
|
|
1380
|
+
|
|
1381
|
+
**Solution**: Appshot v0.9.1+ automatically flattens the structure during export:
|
|
1382
|
+
```bash
|
|
1383
|
+
# Appshot structure (nested):
|
|
1384
|
+
final/iphone/en/home.png →
|
|
1385
|
+
|
|
1386
|
+
# Fastlane structure (flattened):
|
|
1387
|
+
fastlane/screenshots/en-US/iphone/home.png
|
|
1388
|
+
```
|
|
1389
|
+
|
|
1390
|
+
#### 2. Device-Specific Prefixes
|
|
1391
|
+
**Discovery**: Some devices require specific filename prefixes for Fastlane to recognize them correctly.
|
|
1392
|
+
|
|
1393
|
+
**Handled Automatically**:
|
|
1394
|
+
- iPad Pro 12.9" (3rd gen) → `IPAD_PRO_3GEN_129_` prefix
|
|
1395
|
+
- iPad Pro 11" → `IPAD_PRO_11_` prefix
|
|
1396
|
+
|
|
1397
|
+
#### 3. Upload Staging Approach
|
|
1398
|
+
For complex projects with many screenshots, use the staging approach in your Fastfile:
|
|
1399
|
+
|
|
1400
|
+
```ruby
|
|
1401
|
+
lane :upload_screenshots_staged do
|
|
1402
|
+
# Flattens nested structures for Fastlane compatibility
|
|
1403
|
+
# Handles device prefixes automatically
|
|
1404
|
+
# See full implementation in Fastlane export --generate-config
|
|
1405
|
+
end
|
|
1406
|
+
```
|
|
1407
|
+
|
|
1408
|
+
#### 4. API Key Configuration
|
|
1409
|
+
**Important**: Never commit your `api_key.json` to version control!
|
|
1410
|
+
|
|
1411
|
+
```bash
|
|
1412
|
+
# Use the template
|
|
1413
|
+
cp fastlane/api_key.json.template fastlane/api_key.json
|
|
1414
|
+
# Edit with your credentials
|
|
1415
|
+
# Add to .gitignore (done automatically by export --generate-config)
|
|
1416
|
+
```
|
|
1417
|
+
|
|
1418
|
+
### Complete Workflow Example
|
|
1419
|
+
|
|
1420
|
+
```bash
|
|
1421
|
+
# 1. Initialize Appshot project
|
|
1422
|
+
appshot init
|
|
1423
|
+
|
|
1424
|
+
# 2. Add your raw screenshots
|
|
1425
|
+
# Place them in screenshots/iphone/home.png, etc.
|
|
1426
|
+
|
|
1427
|
+
# 3. Generate styled screenshots
|
|
1428
|
+
appshot build --preset iphone-6-9,ipad-13 --langs en,es,fr
|
|
1429
|
+
|
|
1430
|
+
# 4. Export for Fastlane with config generation
|
|
1431
|
+
appshot export --generate-config
|
|
1432
|
+
|
|
1433
|
+
# 5. Configure Fastlane (one-time setup)
|
|
1434
|
+
cd fastlane
|
|
1435
|
+
# Edit Deliverfile with your App Store Connect credentials
|
|
1436
|
+
# app_identifier "com.example.myapp"
|
|
1437
|
+
# username "your@email.com"
|
|
1438
|
+
|
|
1439
|
+
# 6. Upload to App Store Connect
|
|
1440
|
+
fastlane deliver --skip_metadata --skip_app_version_update
|
|
1441
|
+
|
|
1442
|
+
# 7. For updates, just rebuild and re-export
|
|
1443
|
+
appshot build --preset iphone-6-9,ipad-13
|
|
1444
|
+
appshot export --clean
|
|
1445
|
+
cd fastlane && fastlane deliver
|
|
1446
|
+
```
|
|
1447
|
+
|
|
1448
|
+
### CI/CD Integration
|
|
1449
|
+
|
|
1450
|
+
```yaml
|
|
1451
|
+
# GitHub Actions Example
|
|
1452
|
+
- name: Generate Screenshots
|
|
1453
|
+
run: |
|
|
1454
|
+
npm install -g appshot-cli
|
|
1455
|
+
appshot build --preset iphone-6-9,ipad-13
|
|
1456
|
+
|
|
1457
|
+
- name: Export for Fastlane
|
|
1458
|
+
run: appshot export --copy --clean
|
|
1459
|
+
|
|
1460
|
+
- name: Upload to App Store
|
|
1461
|
+
env:
|
|
1462
|
+
APP_STORE_CONNECT_API_KEY: ${{ secrets.ASC_API_KEY }}
|
|
1463
|
+
run: |
|
|
1464
|
+
cd fastlane
|
|
1465
|
+
fastlane deliver --api_key_path api_key.json
|
|
1466
|
+
```
|
|
1467
|
+
|
|
1468
|
+
### Validation
|
|
1469
|
+
|
|
1470
|
+
The export command includes comprehensive validation:
|
|
1471
|
+
- Checks for valid output directory permissions
|
|
1472
|
+
- Validates language codes against Fastlane's supported set
|
|
1473
|
+
- Warns about missing screenshots for requested devices
|
|
1474
|
+
- Suggests App Store required presets if missing
|
|
1475
|
+
|
|
1476
|
+
```bash
|
|
1477
|
+
# Preview and validate
|
|
1478
|
+
appshot export --dry-run --verbose
|
|
1479
|
+
|
|
1480
|
+
# Check what would be exported
|
|
1481
|
+
appshot export --dry-run --json | jq
|
|
1482
|
+
```
|
|
1483
|
+
|
|
1484
|
+
### Generated Fastlane Files
|
|
1485
|
+
|
|
1486
|
+
With `--generate-config`, Appshot creates:
|
|
1487
|
+
- **Deliverfile**: Screenshot configuration
|
|
1488
|
+
- **Fastfile**: Upload lanes
|
|
1489
|
+
- **README.md**: Instructions
|
|
1490
|
+
- **.gitignore**: Excludes screenshots
|
|
1491
|
+
|
|
1492
|
+
Example generated Deliverfile:
|
|
1493
|
+
```ruby
|
|
1494
|
+
# Generated by Appshot
|
|
1495
|
+
screenshots_path "./screenshots"
|
|
1496
|
+
languages ["en-US", "es-ES", "fr-FR"]
|
|
1497
|
+
skip_binary_upload true
|
|
1498
|
+
skip_metadata true
|
|
1499
|
+
overwrite_screenshots true
|
|
1500
|
+
```
|
|
1501
|
+
|
|
1502
|
+
### Tips
|
|
1503
|
+
|
|
1504
|
+
1. **Language Detection**: Let Appshot auto-detect languages from your screenshots
|
|
1505
|
+
2. **Device Filtering**: Export only what you need with `--devices`
|
|
1506
|
+
3. **Dry Run First**: Always preview with `--dry-run` before actual export
|
|
1507
|
+
4. **Validation**: Run `appshot validate` before export to ensure compliance
|
|
1508
|
+
5. **Incremental Updates**: Use `--clean` to ensure fresh exports
|
|
1509
|
+
|
|
860
1510
|
## 📝 Command Reference
|
|
861
1511
|
|
|
1512
|
+
### `appshot quickstart` (NEW!)
|
|
1513
|
+
|
|
1514
|
+
Get started with App Store screenshots in seconds with interactive setup.
|
|
1515
|
+
|
|
1516
|
+
```bash
|
|
1517
|
+
appshot quickstart [options]
|
|
1518
|
+
```
|
|
1519
|
+
|
|
1520
|
+
**Options:**
|
|
1521
|
+
- `--template <id>` - Template to use (default: modern)
|
|
1522
|
+
- `--caption <text>` - Main caption for screenshots
|
|
1523
|
+
- `--no-interactive` - Skip interactive prompts
|
|
1524
|
+
- `--force` - Overwrite existing configuration
|
|
1525
|
+
|
|
1526
|
+
**What it does:**
|
|
1527
|
+
1. Creates project structure
|
|
1528
|
+
2. Applies professional template
|
|
1529
|
+
3. Sets up example captions
|
|
1530
|
+
4. Shows next steps
|
|
1531
|
+
|
|
1532
|
+
**Examples:**
|
|
1533
|
+
```bash
|
|
1534
|
+
# Interactive setup
|
|
1535
|
+
appshot quickstart
|
|
1536
|
+
|
|
1537
|
+
# Quick setup with template
|
|
1538
|
+
appshot quickstart --template minimal --caption "My App"
|
|
1539
|
+
|
|
1540
|
+
# Non-interactive
|
|
1541
|
+
appshot quickstart --template bold --no-interactive
|
|
1542
|
+
```
|
|
1543
|
+
|
|
1544
|
+
### `appshot template` (NEW!)
|
|
1545
|
+
|
|
1546
|
+
Apply professional screenshot templates for instant visual styling.
|
|
1547
|
+
|
|
1548
|
+
```bash
|
|
1549
|
+
appshot template [template] [options]
|
|
1550
|
+
```
|
|
1551
|
+
|
|
1552
|
+
**Arguments:**
|
|
1553
|
+
- `[template]` - Template ID (modern, minimal, bold, elegant, showcase, playful, corporate)
|
|
1554
|
+
|
|
1555
|
+
**Options:**
|
|
1556
|
+
- `--list` - List all available templates
|
|
1557
|
+
- `--preview <id>` - Preview template configuration
|
|
1558
|
+
- `--caption <text>` - Add caption to all screenshots
|
|
1559
|
+
- `--device <name>` - Apply to specific device only
|
|
1560
|
+
- `--no-backup` - Skip config backup
|
|
1561
|
+
- `--dry-run` - Preview without applying
|
|
1562
|
+
|
|
1563
|
+
**Examples:**
|
|
1564
|
+
```bash
|
|
1565
|
+
# List templates
|
|
1566
|
+
appshot template --list
|
|
1567
|
+
|
|
1568
|
+
# Apply template
|
|
1569
|
+
appshot template modern
|
|
1570
|
+
|
|
1571
|
+
# With caption
|
|
1572
|
+
appshot template minimal --caption "Beautiful App"
|
|
1573
|
+
|
|
1574
|
+
# Preview settings
|
|
1575
|
+
appshot template --preview bold
|
|
1576
|
+
|
|
1577
|
+
# Device-specific
|
|
1578
|
+
appshot template elegant --device iphone
|
|
1579
|
+
```
|
|
1580
|
+
|
|
1581
|
+
### `appshot preset` (NEW!)
|
|
1582
|
+
|
|
1583
|
+
Ultra-simple one-line commands to generate App Store screenshots with professional templates.
|
|
1584
|
+
|
|
1585
|
+
```bash
|
|
1586
|
+
appshot preset <preset-name> [options]
|
|
1587
|
+
```
|
|
1588
|
+
|
|
1589
|
+
**Arguments:**
|
|
1590
|
+
- `<preset-name>` - Template to use (modern, bold, minimal, elegant, showcase, playful, corporate)
|
|
1591
|
+
|
|
1592
|
+
**Options:**
|
|
1593
|
+
- `-c, --caption <text>` - Add caption to all screenshots
|
|
1594
|
+
- `-d, --devices <list>` - Comma-separated device list
|
|
1595
|
+
- `-l, --langs <list>` - Comma-separated language codes
|
|
1596
|
+
- `-o, --output <path>` - Output directory (default: ./final)
|
|
1597
|
+
- `--dry-run` - Preview without building
|
|
1598
|
+
- `-v, --verbose` - Show detailed output
|
|
1599
|
+
|
|
1600
|
+
**Examples:**
|
|
1601
|
+
```bash
|
|
1602
|
+
# Quick professional screenshots
|
|
1603
|
+
appshot preset modern --caption "Amazing Features"
|
|
1604
|
+
|
|
1605
|
+
# Multiple devices
|
|
1606
|
+
appshot preset bold --devices iphone,ipad,watch
|
|
1607
|
+
|
|
1608
|
+
# Multiple languages
|
|
1609
|
+
appshot preset minimal --langs en,es,fr,de
|
|
1610
|
+
|
|
1611
|
+
# Custom output
|
|
1612
|
+
appshot preset elegant --output ./marketing/screenshots
|
|
1613
|
+
|
|
1614
|
+
# Preview mode
|
|
1615
|
+
appshot preset corporate --dry-run
|
|
1616
|
+
|
|
1617
|
+
# Full example
|
|
1618
|
+
appshot preset showcase \
|
|
1619
|
+
--caption "Summer Sale!" \
|
|
1620
|
+
--devices iphone,ipad \
|
|
1621
|
+
--langs en,es,fr \
|
|
1622
|
+
--output ./app-store-assets
|
|
1623
|
+
```
|
|
1624
|
+
|
|
1625
|
+
**What it does:**
|
|
1626
|
+
1. Applies professional template (gradient, positioning, styling)
|
|
1627
|
+
2. Adds caption to first screenshot if provided
|
|
1628
|
+
3. Builds screenshots for specified devices and languages
|
|
1629
|
+
4. All in one command - perfect for CI/CD!
|
|
1630
|
+
|
|
862
1631
|
### `appshot build`
|
|
863
1632
|
|
|
864
1633
|
Generate final screenshots with frames, gradients, and captions.
|
|
@@ -2202,10 +2971,10 @@ For security vulnerabilities, please see [SECURITY.md](SECURITY.md).
|
|
|
2202
2971
|
### NPM Package
|
|
2203
2972
|
|
|
2204
2973
|
- 📦 [appshot-cli on NPM](https://www.npmjs.com/package/appshot-cli)
|
|
2205
|
-
- 🔄 Latest version: 0.
|
|
2974
|
+
- 🔄 Latest version: 0.9.0
|
|
2206
2975
|
|
|
2207
2976
|
---
|
|
2208
2977
|
|
|
2209
2978
|
<div align="center">
|
|
2210
2979
|
Built with ❤️ for developers and AI agents who automate everything.
|
|
2211
|
-
</div>
|
|
2980
|
+
</div>
|