appshot-cli 0.1.0 → 0.2.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.
- package/README.md +377 -5
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +4 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/gradients.d.ts +3 -0
- package/dist/commands/gradients.d.ts.map +1 -0
- package/dist/commands/gradients.js +343 -0
- package/dist/commands/gradients.js.map +1 -0
- package/dist/commands/style.d.ts +3 -0
- package/dist/commands/style.d.ts.map +1 -0
- package/dist/commands/style.js +375 -0
- package/dist/commands/style.js.map +1 -0
- package/dist/core/compose.d.ts.map +1 -1
- package/dist/core/compose.js +128 -52
- package/dist/core/compose.js.map +1 -1
- package/dist/core/devices.d.ts.map +1 -1
- package/dist/core/devices.js +413 -31
- package/dist/core/devices.js.map +1 -1
- package/dist/core/gradient-presets.d.ts +25 -0
- package/dist/core/gradient-presets.d.ts.map +1 -0
- package/dist/core/gradient-presets.js +222 -0
- package/dist/core/gradient-presets.js.map +1 -0
- package/dist/core/text-utils.d.ts +39 -0
- package/dist/core/text-utils.d.ts.map +1 -0
- package/dist/core/text-utils.js +137 -0
- package/dist/core/text-utils.js.map +1 -0
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -38,9 +38,9 @@ appshot init
|
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
This creates:
|
|
41
|
-
-
|
|
41
|
+
- `.appshot/config.json` - Main configuration file
|
|
42
|
+
- `.appshot/captions/` - Device-specific caption files
|
|
42
43
|
- `screenshots/` - Directory structure for your screenshots
|
|
43
|
-
- Device-specific folders with `captions.json` files
|
|
44
44
|
|
|
45
45
|
### Add your screenshots
|
|
46
46
|
|
|
@@ -79,7 +79,7 @@ Output appears in the `final/` directory, ready for upload!
|
|
|
79
79
|
|
|
80
80
|
## Configuration
|
|
81
81
|
|
|
82
|
-
Edit
|
|
82
|
+
Edit `.appshot/config.json` to customize your screenshots:
|
|
83
83
|
|
|
84
84
|
```json
|
|
85
85
|
{
|
|
@@ -112,6 +112,65 @@ Edit `appshot.json` to customize your screenshots:
|
|
|
112
112
|
- **colors**: Array of hex color codes
|
|
113
113
|
- **direction**: `top-bottom`, `bottom-top`, `left-right`, `right-left`, `diagonal`
|
|
114
114
|
|
|
115
|
+
#### Using Gradient Presets
|
|
116
|
+
|
|
117
|
+
Instead of manually configuring gradients, you can use one of the 24+ built-in presets:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Browse available gradients
|
|
121
|
+
appshot gradients
|
|
122
|
+
|
|
123
|
+
# Apply a preset
|
|
124
|
+
appshot gradients --apply sunset
|
|
125
|
+
|
|
126
|
+
# Interactive selection with visual preview
|
|
127
|
+
appshot gradients select
|
|
128
|
+
|
|
129
|
+
# Generate preview image
|
|
130
|
+
appshot gradients --preview ocean
|
|
131
|
+
|
|
132
|
+
# Create samples of all gradients
|
|
133
|
+
appshot gradients --sample
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
##### Available Presets by Category
|
|
137
|
+
|
|
138
|
+
**Warm Gradients** 🔥
|
|
139
|
+
- **sunset** - Warm orange to pink (#FF5733 → #FFC300)
|
|
140
|
+
- **autumn** - Fall foliage colors (#D2691E → #FF4500)
|
|
141
|
+
- **golden** - Rich golden tones (#FFD700 → #FFA500)
|
|
142
|
+
- **coral** - Soft coral reef (#FF6B6B → #FFE66D)
|
|
143
|
+
|
|
144
|
+
**Cool Gradients** ❄️
|
|
145
|
+
- **ocean** - Deep blue waves (#0077BE → #33CCCC)
|
|
146
|
+
- **arctic** - Icy blue frost (#E0F7FA → #81D4FA)
|
|
147
|
+
- **mint** - Fresh mint green (#00C9A7 → #00F5FF)
|
|
148
|
+
- **twilight** - Evening sky (#667EEA → #764BA2)
|
|
149
|
+
|
|
150
|
+
**Vibrant Gradients** 🎨
|
|
151
|
+
- **neon** - Electric glow (#FF006E → #8338EC → #3A86FF)
|
|
152
|
+
- **tropical** - Paradise colors (#FE6B8B → #FF8E53)
|
|
153
|
+
- **rainbow** - Full spectrum (#FF0000 → #FF7F00 → #FFFF00 → #00FF00 → #0000FF → #8B00FF)
|
|
154
|
+
- **vivid** - Bold and bright (#F72585 → #7209B7 → #3A0CA3)
|
|
155
|
+
|
|
156
|
+
**Subtle Gradients** 🕊️
|
|
157
|
+
- **pastel** - Soft blend (#E8D8F5 → #D6E6FF)
|
|
158
|
+
- **lavender** - Gentle purple (#E6E6FA → #DDA0DD)
|
|
159
|
+
- **peach** - Soft peach tones (#FFDAB9 → #FFE4E1)
|
|
160
|
+
- **sky** - Clear day (#87CEEB → #E0F6FF)
|
|
161
|
+
|
|
162
|
+
**Monochrome Gradients** ⚫⚪
|
|
163
|
+
- **noir** - Deep black (#000000 → #434343)
|
|
164
|
+
- **silver** - Metallic shine (#C0C0C0 → #F5F5F5)
|
|
165
|
+
- **charcoal** - Dark grey (#36454F → #708090)
|
|
166
|
+
- **pearl** - Soft white (#F8F8FF → #FFFFFF)
|
|
167
|
+
|
|
168
|
+
**Brand-Inspired Gradients** 🏢
|
|
169
|
+
- **instagram** - Brand colors (#833AB4 → #FD1D1D → #FCB045)
|
|
170
|
+
- **spotify** - Green energy (#1DB954 → #191414)
|
|
171
|
+
- **twitter** - Blue bird (#1DA1F2 → #14171A)
|
|
172
|
+
- **slack** - Workspace hues (#4A154B → #36C5F0 → #2EB67D)
|
|
173
|
+
|
|
115
174
|
### Caption Options
|
|
116
175
|
|
|
117
176
|
- **font**: Font family name
|
|
@@ -121,6 +180,7 @@ Edit `appshot.json` to customize your screenshots:
|
|
|
121
180
|
- **paddingTop**: Space from top in pixels
|
|
122
181
|
- **paddingBottom**: Space from bottom in pixels
|
|
123
182
|
- **position**: `above` (above device frame) or `overlay` (on gradient)
|
|
183
|
+
- **box**: Caption box configuration (see Dynamic Caption Box section)
|
|
124
184
|
|
|
125
185
|
### Device Options
|
|
126
186
|
|
|
@@ -159,13 +219,110 @@ Keyboard shortcuts:
|
|
|
159
219
|
- **Enter** - Select current suggestion
|
|
160
220
|
- **Esc** - Dismiss suggestions
|
|
161
221
|
|
|
222
|
+
### `appshot gradients`
|
|
223
|
+
Browse, preview, and apply gradient presets for stunning backgrounds.
|
|
224
|
+
|
|
225
|
+
Options:
|
|
226
|
+
- `--list` - List all available gradient presets (default)
|
|
227
|
+
- `--category <name>` - Filter by category (warm, cool, vibrant, subtle, monochrome, brand)
|
|
228
|
+
- `--preview <id>` - Generate preview image for a specific gradient
|
|
229
|
+
- `--sample` - Generate sample images for all gradients with HTML preview
|
|
230
|
+
- `--apply <id>` - Apply gradient preset to current project
|
|
231
|
+
|
|
232
|
+
Subcommands:
|
|
233
|
+
- `select` - Interactive gradient selection with visual preview
|
|
234
|
+
|
|
235
|
+
Features:
|
|
236
|
+
- **24+ Beautiful Presets** - Curated collection of professional gradients
|
|
237
|
+
- **6 Categories** - Warm, Cool, Vibrant, Subtle, Monochrome, Brand-inspired
|
|
238
|
+
- **Visual Preview** - See color blocks in terminal with ANSI approximation
|
|
239
|
+
- **Sample Generation** - Create PNG samples of all gradients
|
|
240
|
+
- **HTML Preview Page** - Browse all gradients in your browser
|
|
241
|
+
- **Quick Apply** - Instantly update project configuration
|
|
242
|
+
- **Direction Support** - All gradient directions (top-bottom, diagonal, etc.)
|
|
243
|
+
|
|
244
|
+
Example usage:
|
|
245
|
+
```bash
|
|
246
|
+
# Browse all gradients with color previews
|
|
247
|
+
appshot gradients
|
|
248
|
+
|
|
249
|
+
# Filter by category
|
|
250
|
+
appshot gradients --category warm
|
|
251
|
+
|
|
252
|
+
# Preview a specific gradient (creates gradient-sunset.png)
|
|
253
|
+
appshot gradients --preview sunset
|
|
254
|
+
|
|
255
|
+
# Apply a gradient to your project
|
|
256
|
+
appshot gradients --apply ocean
|
|
257
|
+
|
|
258
|
+
# Interactive selection with arrow keys
|
|
259
|
+
appshot gradients select
|
|
260
|
+
|
|
261
|
+
# Generate samples for all gradients (creates gradient-samples/ directory)
|
|
262
|
+
appshot gradients --sample
|
|
263
|
+
# Then open gradient-samples/preview.html in your browser
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
#### How Gradient Presets Work
|
|
267
|
+
|
|
268
|
+
1. **Browsing** - The `gradients` command displays all presets with:
|
|
269
|
+
- Visual color blocks showing the gradient colors
|
|
270
|
+
- Name and description
|
|
271
|
+
- Category grouping
|
|
272
|
+
- Gradient ID for applying
|
|
273
|
+
|
|
274
|
+
2. **Previewing** - Generate a sample image to see exactly how a gradient looks:
|
|
275
|
+
```bash
|
|
276
|
+
appshot gradients --preview neon
|
|
277
|
+
# Creates: gradient-neon.png (400x800px)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
3. **Applying** - Updates your `.appshot/config.json` automatically:
|
|
281
|
+
```bash
|
|
282
|
+
appshot gradients --apply twilight
|
|
283
|
+
# Updates gradient.colors and gradient.direction in config
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
4. **Sample Generation** - Creates a gallery of all gradients:
|
|
287
|
+
```bash
|
|
288
|
+
appshot gradients --sample
|
|
289
|
+
# Creates: gradient-samples/
|
|
290
|
+
# ├── sunset.png
|
|
291
|
+
# ├── ocean.png
|
|
292
|
+
# ├── neon.png
|
|
293
|
+
# └── preview.html (view all in browser)
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
5. **Interactive Selection** - Visual menu for choosing gradients:
|
|
297
|
+
```bash
|
|
298
|
+
appshot gradients select
|
|
299
|
+
# Use arrow keys to navigate, Enter to apply, Esc to cancel
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### `appshot style`
|
|
303
|
+
Configure device positioning and caption styling interactively.
|
|
304
|
+
|
|
305
|
+
Options:
|
|
306
|
+
- `--device <name>` - Device name (iphone, ipad, mac, watch)
|
|
307
|
+
- `--reset` - Reset device styling to defaults (removes all custom settings)
|
|
308
|
+
|
|
309
|
+
Features:
|
|
310
|
+
- **Auto frame selection** - Enable/disable automatic frame selection based on screenshot dimensions
|
|
311
|
+
- **Preferred frame** - Choose specific device frame when auto selection is disabled
|
|
312
|
+
- **Partial frames** - Toggle on/off and adjust cut-off percentage (15%-50%)
|
|
313
|
+
- **Frame positioning** - Top, center, bottom, or custom positioning (0-100%)
|
|
314
|
+
- **Frame scaling** - Control device size (75%-130% or custom)
|
|
315
|
+
- **Caption customization** - Device-specific size, position, and box behavior
|
|
316
|
+
- **Caption box** - Auto-sizing, max lines, line height adjustments
|
|
317
|
+
- **Interactive prompts** - Step-by-step configuration with visual descriptions
|
|
318
|
+
|
|
162
319
|
### `appshot build`
|
|
163
320
|
Generate final screenshots with frames, gradients, and captions.
|
|
164
321
|
|
|
165
322
|
Options:
|
|
166
323
|
- `--devices <list>` - Comma-separated device list
|
|
167
324
|
- `--preset <ids>` - Use specific App Store presets (e.g., iphone-6-9,ipad-13)
|
|
168
|
-
- `--config <file>` - Use specific config file (default: appshot.json)
|
|
325
|
+
- `--config <file>` - Use specific config file (default: .appshot/config.json)
|
|
169
326
|
- `--langs <list>` - Comma-separated language codes
|
|
170
327
|
- `--preview` - Generate low-res previews
|
|
171
328
|
- `--concurrency <n>` - Parallel processing limit
|
|
@@ -333,7 +490,7 @@ Override automatic selection with `preferredFrame` in your device configuration.
|
|
|
333
490
|
|
|
334
491
|
### Partial Frames
|
|
335
492
|
|
|
336
|
-
Create dynamic App Store screenshots with partial device frames
|
|
493
|
+
Create dynamic App Store screenshots with partial device frames in `.appshot/config.json`:
|
|
337
494
|
|
|
338
495
|
```json
|
|
339
496
|
{
|
|
@@ -360,6 +517,221 @@ Place captions above the device frame (recommended) or as an overlay:
|
|
|
360
517
|
}
|
|
361
518
|
```
|
|
362
519
|
|
|
520
|
+
### Dynamic Caption Box System
|
|
521
|
+
|
|
522
|
+
Appshot features an intelligent caption system that automatically adapts to your content and device positioning:
|
|
523
|
+
|
|
524
|
+
#### How It Works
|
|
525
|
+
|
|
526
|
+
1. **Automatic Text Wrapping** - Long captions automatically wrap to multiple lines based on available width
|
|
527
|
+
2. **Dynamic Height Calculation** - Caption area expands or contracts based on:
|
|
528
|
+
- Text content length
|
|
529
|
+
- Device frame position
|
|
530
|
+
- Available space constraints
|
|
531
|
+
3. **Smart Positioning** - Caption space adjusts to device placement:
|
|
532
|
+
- Device at **top** → Minimal caption space (15% of screen)
|
|
533
|
+
- Device at **center** → Balanced caption space
|
|
534
|
+
- Device at **bottom** → Maximum caption space (up to 50% of screen)
|
|
535
|
+
|
|
536
|
+
#### Configuration
|
|
537
|
+
|
|
538
|
+
Global caption box settings in `.appshot/config.json`:
|
|
539
|
+
|
|
540
|
+
```json
|
|
541
|
+
{
|
|
542
|
+
"caption": {
|
|
543
|
+
"fontsize": 64,
|
|
544
|
+
"box": {
|
|
545
|
+
"autoSize": true, // Auto-size height based on content
|
|
546
|
+
"maxLines": 3, // Maximum lines before truncation
|
|
547
|
+
"lineHeight": 1.4, // Line spacing (1.2-1.8)
|
|
548
|
+
"minHeight": 100, // Minimum caption area height
|
|
549
|
+
"maxHeight": 500 // Maximum caption area height
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
Device-specific overrides:
|
|
556
|
+
|
|
557
|
+
```json
|
|
558
|
+
{
|
|
559
|
+
"devices": {
|
|
560
|
+
"iphone": {
|
|
561
|
+
"captionBox": {
|
|
562
|
+
"autoSize": true,
|
|
563
|
+
"maxLines": 4, // iPhone can show more lines
|
|
564
|
+
"lineHeight": 1.5 // More spacing for readability
|
|
565
|
+
}
|
|
566
|
+
},
|
|
567
|
+
"watch": {
|
|
568
|
+
"captionBox": {
|
|
569
|
+
"maxLines": 2, // Watch limited to 2 lines
|
|
570
|
+
"lineHeight": 1.3 // Tighter spacing
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
#### Examples
|
|
578
|
+
|
|
579
|
+
**Long Caption Handling:**
|
|
580
|
+
- Input: "This is a very long caption that needs multiple lines to display properly"
|
|
581
|
+
- Result: Automatically wrapped to 2-3 centered lines with proper spacing
|
|
582
|
+
|
|
583
|
+
**Device Position Impact:**
|
|
584
|
+
- `framePosition: "top"` → Caption gets ~400px height
|
|
585
|
+
- `framePosition: "center"` → Caption gets ~700px height
|
|
586
|
+
- `framePosition: "bottom"` → Caption gets ~1400px height
|
|
587
|
+
|
|
588
|
+
**Best Practices:**
|
|
589
|
+
- Keep captions concise (under 100 characters)
|
|
590
|
+
- Use 3-4 lines maximum for readability
|
|
591
|
+
- Test with `appshot build --preview` to quickly iterate
|
|
592
|
+
- Adjust `lineHeight` for visual balance (1.4 recommended)
|
|
593
|
+
|
|
594
|
+
### Device-Specific Styling
|
|
595
|
+
|
|
596
|
+
Use the `appshot style` command or configure directly in `.appshot/config.json`:
|
|
597
|
+
|
|
598
|
+
```json
|
|
599
|
+
{
|
|
600
|
+
"devices": {
|
|
601
|
+
"iphone": {
|
|
602
|
+
"partialFrame": true, // Enable partial frame
|
|
603
|
+
"frameOffset": 25, // Cut off bottom 25%
|
|
604
|
+
"framePosition": "center", // or "top", "bottom", 0-100
|
|
605
|
+
"frameScale": 0.9, // Size multiplier (0.5-2.0)
|
|
606
|
+
"captionSize": 72, // Override global caption size
|
|
607
|
+
"captionPosition": "above", // Override global position
|
|
608
|
+
"captionBox": { // Caption box configuration
|
|
609
|
+
"autoSize": true, // Auto-size based on content
|
|
610
|
+
"maxLines": 4, // Maximum lines before truncation
|
|
611
|
+
"lineHeight": 1.4 // Line spacing multiplier
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
"watch": {
|
|
615
|
+
"framePosition": "bottom", // Position at bottom
|
|
616
|
+
"frameScale": 1.3, // Make watch larger
|
|
617
|
+
"partialFrame": true, // Cut off band
|
|
618
|
+
"frameOffset": 30 // Cut 30% from bottom
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
### Achieving Consistent Device Positioning
|
|
625
|
+
|
|
626
|
+
⚠️ **Important**: Caption sizing can affect device frame positioning and size. Here's how to achieve perfectly consistent screenshots:
|
|
627
|
+
|
|
628
|
+
#### The Problem
|
|
629
|
+
|
|
630
|
+
By default, appshot uses dynamic caption sizing which causes:
|
|
631
|
+
- **Variable device sizes** - Longer captions = smaller devices
|
|
632
|
+
- **Variable device positions** - Caption height affects vertical placement
|
|
633
|
+
- **Inconsistent layouts** - Each screenshot looks different
|
|
634
|
+
|
|
635
|
+
#### The Solution: Fixed Layout Configuration
|
|
636
|
+
|
|
637
|
+
To ensure all screenshots have identical device size and position regardless of caption length:
|
|
638
|
+
|
|
639
|
+
```json
|
|
640
|
+
{
|
|
641
|
+
"devices": {
|
|
642
|
+
"iphone": {
|
|
643
|
+
"autoFrame": false, // Disable auto frame selection
|
|
644
|
+
"preferredFrame": "iphone-16-pro-max-portrait", // Use specific frame
|
|
645
|
+
"frameScale": 0.85, // Lock device at 85% size
|
|
646
|
+
"framePosition": 40, // Position at 40% from top
|
|
647
|
+
"captionBox": {
|
|
648
|
+
"autoSize": false, // CRITICAL: Disable auto-sizing
|
|
649
|
+
"minHeight": 320, // CRITICAL: Set fixed height
|
|
650
|
+
"maxHeight": 320 // CRITICAL: Same as minHeight
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
#### Key Settings Explained
|
|
658
|
+
|
|
659
|
+
1. **`autoFrame: false`** - Disables automatic frame selection
|
|
660
|
+
- Use with `preferredFrame` to specify exact device frame
|
|
661
|
+
- Ensures consistent frame across all screenshots
|
|
662
|
+
|
|
663
|
+
2. **`frameScale`** - Controls device size (0.5 to 2.0)
|
|
664
|
+
- Set explicitly to lock device size
|
|
665
|
+
- Without this, device scales based on available space
|
|
666
|
+
|
|
667
|
+
3. **`framePosition`** - Vertical positioning (0-100 or "top"/"center"/"bottom")
|
|
668
|
+
- Number = percentage from top of available space
|
|
669
|
+
- Keeps device at consistent height
|
|
670
|
+
|
|
671
|
+
4. **`captionBox.autoSize: false`** - Disables dynamic caption sizing
|
|
672
|
+
- MUST be false for consistent layouts
|
|
673
|
+
- Default is true (adapts to content)
|
|
674
|
+
|
|
675
|
+
5. **`minHeight` = `maxHeight`** - Forces exact caption height
|
|
676
|
+
- Both MUST be set to same value
|
|
677
|
+
- Creates fixed caption area regardless of text length
|
|
678
|
+
|
|
679
|
+
#### Complete Example for Consistent iPhone Screenshots
|
|
680
|
+
|
|
681
|
+
```json
|
|
682
|
+
{
|
|
683
|
+
"gradient": {
|
|
684
|
+
"colors": ["#FF5733", "#FFC300"],
|
|
685
|
+
"direction": "top-bottom"
|
|
686
|
+
},
|
|
687
|
+
"caption": {
|
|
688
|
+
"fontsize": 64,
|
|
689
|
+
"color": "#FFFFFF",
|
|
690
|
+
"align": "center",
|
|
691
|
+
"paddingTop": 100
|
|
692
|
+
},
|
|
693
|
+
"devices": {
|
|
694
|
+
"iphone": {
|
|
695
|
+
"input": "./screenshots/iphone",
|
|
696
|
+
"resolution": "1284x2778",
|
|
697
|
+
"autoFrame": false,
|
|
698
|
+
"preferredFrame": "iphone-16-pro-max-portrait",
|
|
699
|
+
"captionBox": {
|
|
700
|
+
"autoSize": false,
|
|
701
|
+
"minHeight": 320,
|
|
702
|
+
"maxHeight": 320,
|
|
703
|
+
"maxLines": 3
|
|
704
|
+
},
|
|
705
|
+
"frameScale": 0.85,
|
|
706
|
+
"framePosition": 40
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
With this configuration:
|
|
713
|
+
- ✅ All devices are exactly the same size
|
|
714
|
+
- ✅ All devices are at the same vertical position
|
|
715
|
+
- ✅ Caption area is always 320px tall
|
|
716
|
+
- ✅ Long captions truncate instead of expanding
|
|
717
|
+
- ✅ Professional, consistent App Store screenshots
|
|
718
|
+
|
|
719
|
+
#### Interactive Styling
|
|
720
|
+
|
|
721
|
+
Run `appshot style --device iphone` for step-by-step configuration:
|
|
722
|
+
1. **Partial Frame** - Choose whether to cut off device bottom
|
|
723
|
+
2. **Frame Offset** - Select how much to cut (15%, 25%, 35%, 50%, or custom)
|
|
724
|
+
3. **Frame Position** - Set vertical position (top, center, bottom, or 0-100%)
|
|
725
|
+
4. **Frame Scale** - Adjust device size
|
|
726
|
+
5. **Caption Settings** - Customize text size, position, and box behavior
|
|
727
|
+
|
|
728
|
+
#### Reset Styling
|
|
729
|
+
|
|
730
|
+
To reset a device to default settings:
|
|
731
|
+
```bash
|
|
732
|
+
appshot style --device iphone --reset
|
|
733
|
+
```
|
|
734
|
+
|
|
363
735
|
## Roadmap
|
|
364
736
|
|
|
365
737
|
- [x] Official App Store specifications support
|
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,8 @@ import specsCmd from './commands/specs.js';
|
|
|
8
8
|
import checkCmd from './commands/check.js';
|
|
9
9
|
import presetsCmd from './commands/presets.js';
|
|
10
10
|
import validateCmd from './commands/validate.js';
|
|
11
|
+
import styleCmd from './commands/style.js';
|
|
12
|
+
import gradientsCmd from './commands/gradients.js';
|
|
11
13
|
import { createCleanCommand } from './commands/clean.js';
|
|
12
14
|
const program = new Command();
|
|
13
15
|
program
|
|
@@ -16,6 +18,8 @@ program
|
|
|
16
18
|
.version('0.1.0');
|
|
17
19
|
program.addCommand(initCmd());
|
|
18
20
|
program.addCommand(captionCmd());
|
|
21
|
+
program.addCommand(styleCmd());
|
|
22
|
+
program.addCommand(gradientsCmd());
|
|
19
23
|
program.addCommand(localizeCmd());
|
|
20
24
|
program.addCommand(buildCmd());
|
|
21
25
|
program.addCommand(specsCmd());
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,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,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,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
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,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,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9B,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,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,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,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;AASpC,MAAM,CAAC,OAAO,UAAU,QAAQ,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAgO/B"}
|
package/dist/commands/build.js
CHANGED
|
@@ -123,7 +123,10 @@ export default function buildCmd() {
|
|
|
123
123
|
let frame = null;
|
|
124
124
|
let frameMetadata = null;
|
|
125
125
|
let frameUsed = false;
|
|
126
|
-
|
|
126
|
+
// Load frame if not disabled via CLI
|
|
127
|
+
if (opts.frame !== false) {
|
|
128
|
+
// If autoFrame is disabled but preferredFrame is set, use the preferred frame
|
|
129
|
+
// Otherwise, auto-select a frame
|
|
127
130
|
const result = await autoSelectFrame(inputPath, path.resolve(config.frames), device, deviceConfig.preferredFrame);
|
|
128
131
|
frame = result.frame;
|
|
129
132
|
frameMetadata = result.metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradients.d.ts","sourceRoot":"","sources":["../../src/commands/gradients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,MAAM,CAAC,OAAO,UAAU,YAAY,YAoNnC"}
|