appshot-cli 0.4.0 → 0.5.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 CHANGED
@@ -627,6 +627,62 @@ appshot clean --all --yes
627
627
  appshot clean --history
628
628
  ```
629
629
 
630
+ ### `appshot doctor`
631
+
632
+ Run comprehensive system diagnostics to verify appshot installation and dependencies.
633
+
634
+ ```bash
635
+ appshot doctor [options]
636
+ ```
637
+
638
+ **Options:**
639
+ - `--json` - Output results as JSON for CI/automation
640
+ - `--verbose` - Show detailed diagnostic information
641
+ - `--category <categories>` - Run specific checks (comma-separated: system,dependencies,fonts,filesystem,frames)
642
+
643
+ **Checks:**
644
+ - **System Requirements** - Node.js version (≥18), npm availability, platform detection
645
+ - **Dependencies** - Sharp module installation, native bindings, image processing test, OpenAI API key
646
+ - **Font System** - Font detection commands, system font loading, common font availability
647
+ - **File System** - Write permissions (current/temp directories), .appshot directory, configuration validity
648
+ - **Frame Assets** - Frame directory presence, Frames.json validation, device frame counts, missing files
649
+
650
+ **Examples:**
651
+ ```bash
652
+ # Run all diagnostics
653
+ appshot doctor
654
+
655
+ # Check specific categories
656
+ appshot doctor --category system,dependencies
657
+
658
+ # JSON output for CI
659
+ appshot doctor --json
660
+
661
+ # Verbose mode for debugging
662
+ appshot doctor --verbose
663
+ ```
664
+
665
+ **Output Example:**
666
+ ```
667
+ 🏥 Appshot Doctor - System Diagnostics
668
+
669
+ System Requirements:
670
+ ✓ Node.js v20.5.0 (minimum: v18.0.0)
671
+ ✓ npm v9.8.0
672
+ ✓ darwin (macOS)
673
+
674
+ Dependencies:
675
+ ✓ Sharp v0.33.5 installed
676
+ ✓ libvips v8.15.3 loaded
677
+ ✓ Sharp image processing test passed
678
+ ⚠ OpenAI API key not found (translation features disabled)
679
+
680
+ Summary: 20 passed, 1 warning, 0 errors
681
+
682
+ Suggestions:
683
+ • Set OPENAI_API_KEY environment variable to enable translation features
684
+ ```
685
+
630
686
  ### `appshot fonts`
631
687
 
632
688
  Browse, validate, and set fonts for captions.
@@ -798,21 +854,50 @@ appshot presets --generate iphone-6-9,ipad-13
798
854
 
799
855
  ### `appshot specs`
800
856
 
801
- Display device specifications.
857
+ Display complete Apple App Store screenshot specifications.
802
858
 
803
859
  ```bash
804
860
  appshot specs [options]
805
861
  ```
806
862
 
807
863
  **Options:**
808
- - `--device <name>` - Filter by device
809
- - `--json` - Output as JSON
864
+ - `--device <name>` - Filter by device type (iphone|ipad|mac|watch|appletv|visionpro)
865
+ - `--json` - Output as JSON (exact Apple specifications for diffing)
866
+ - `--required` - Show only required presets
810
867
 
811
868
  **Shows:**
812
- - Supported resolutions
813
- - Frame availability
814
- - Orientation support
815
- - App Store requirements
869
+ - Complete Apple specifications with exact resolutions
870
+ - Display sizes and device compatibility lists
871
+ - Required vs optional indicators
872
+ - Fallback notes and requirements
873
+
874
+ **JSON Output for Change Tracking:**
875
+ The `--json` flag outputs the complete Apple App Store specifications data, perfect for tracking changes over time:
876
+
877
+ ```bash
878
+ # Save current specifications
879
+ appshot specs --json > apple-specs-2024-08.json
880
+
881
+ # After Apple updates (typically September)
882
+ appshot specs --json > apple-specs-2024-09.json
883
+
884
+ # See what changed
885
+ diff apple-specs-2024-08.json apple-specs-2024-09.json
886
+ ```
887
+
888
+ **Data Source:**
889
+ The specifications mirror [Apple's official screenshot requirements](https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications)
890
+ and are maintained in sync with Apple's updates. The JSON output preserves all metadata including:
891
+ - Exact resolutions (e.g., `1290x2796` for iPhone 6.9")
892
+ - Device groupings (which devices share requirements)
893
+ - Requirement status (mandatory vs optional)
894
+ - Fallback rules and special notes
895
+
896
+ This is particularly useful for:
897
+ - Tracking when Apple adds new device requirements
898
+ - Validating screenshot compliance before submission
899
+ - Automating screenshot generation pipelines
900
+ - Planning resource allocation for new devices
816
901
 
817
902
  ### `appshot style`
818
903
 
package/dist/cli.js CHANGED
@@ -6,6 +6,7 @@ import localizeCmd from './commands/localize.js';
6
6
  import buildCmd from './commands/build.js';
7
7
  import specsCmd from './commands/specs.js';
8
8
  import checkCmd from './commands/check.js';
9
+ import doctorCmd from './commands/doctor.js';
9
10
  import presetsCmd from './commands/presets.js';
10
11
  import validateCmd from './commands/validate.js';
11
12
  import styleCmd from './commands/style.js';
@@ -17,7 +18,7 @@ const program = new Command();
17
18
  program
18
19
  .name('appshot')
19
20
  .description('Generate App Store–ready screenshots with frames, gradients, and captions.')
20
- .version('0.4.0');
21
+ .version('0.5.0');
21
22
  program.addCommand(initCmd());
22
23
  program.addCommand(captionCmd());
23
24
  program.addCommand(styleCmd());
@@ -27,6 +28,7 @@ program.addCommand(localizeCmd());
27
28
  program.addCommand(buildCmd());
28
29
  program.addCommand(specsCmd());
29
30
  program.addCommand(checkCmd());
31
+ program.addCommand(doctorCmd());
30
32
  program.addCommand(presetsCmd());
31
33
  program.addCommand(validateCmd());
32
34
  program.addCommand(migrateCmd());
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,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,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,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,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
+ {"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,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,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,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,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,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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export default function doctorCmd(): Command;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,CAAC,OAAO,UAAU,SAAS,YAwEhC"}
@@ -0,0 +1,67 @@
1
+ import { Command } from 'commander';
2
+ import pc from 'picocolors';
3
+ import { DoctorService } from '../services/doctor.js';
4
+ export default function doctorCmd() {
5
+ return new Command('doctor')
6
+ .description('Run diagnostics to check system requirements and dependencies')
7
+ .option('--json', 'output results as JSON')
8
+ .option('--verbose', 'show detailed diagnostic information')
9
+ .option('--category <categories>', 'run specific checks (comma-separated: system,dependencies,fonts,filesystem,frames)')
10
+ .action(async (opts) => {
11
+ try {
12
+ const doctor = new DoctorService();
13
+ const categories = opts.category?.split(',').map((c) => c.trim());
14
+ if (!opts.json) {
15
+ console.log(pc.bold('\n🏥 Appshot Doctor - System Diagnostics\n'));
16
+ }
17
+ const report = await doctor.runAllChecks(categories);
18
+ if (opts.json) {
19
+ console.log(JSON.stringify(report, null, 2));
20
+ return;
21
+ }
22
+ // Format and display results
23
+ const categoryNames = {
24
+ system: 'System Requirements',
25
+ dependencies: 'Dependencies',
26
+ fonts: 'Font System',
27
+ filesystem: 'File System',
28
+ frames: 'Frame Assets'
29
+ };
30
+ for (const [category, checks] of Object.entries(report.checks)) {
31
+ console.log(pc.cyan(`${categoryNames[category] || category}:`));
32
+ for (const check of checks) {
33
+ const icon = check.status === 'pass' ? pc.green('✓')
34
+ : check.status === 'warning' ? pc.yellow('⚠')
35
+ : pc.red('✗');
36
+ console.log(` ${icon} ${check.message}`);
37
+ if (opts.verbose && check.details) {
38
+ console.log(pc.dim(` Details: ${check.details}`));
39
+ }
40
+ }
41
+ console.log();
42
+ }
43
+ // Display summary
44
+ const { passed, warnings, errors } = report.summary;
45
+ console.log(pc.bold('Summary: ') +
46
+ pc.green(`${passed} passed`) + ', ' +
47
+ pc.yellow(`${warnings} warning${warnings !== 1 ? 's' : ''}`) + ', ' +
48
+ pc.red(`${errors} error${errors !== 1 ? 's' : ''}`));
49
+ // Display suggestions if any
50
+ if (report.suggestions.length > 0) {
51
+ console.log('\n' + pc.cyan('Suggestions:'));
52
+ for (const suggestion of report.suggestions) {
53
+ console.log(` • ${suggestion}`);
54
+ }
55
+ }
56
+ // Exit with error code if there are errors
57
+ if (errors > 0) {
58
+ process.exit(1);
59
+ }
60
+ }
61
+ catch (error) {
62
+ console.error(pc.red('Error:'), error instanceof Error ? error.message : String(error));
63
+ process.exit(1);
64
+ }
65
+ });
66
+ }
67
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/commands/specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAuC/B"}
1
+ {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/commands/specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAwF/B"}
@@ -1,64 +1,79 @@
1
1
  import { Command } from 'commander';
2
2
  import pc from 'picocolors';
3
- const deviceSpecs = {
4
- iphone: {
5
- '15-pro-max': { resolution: '1290x2796', displayName: 'iPhone 15 Pro Max' },
6
- '15-pro': { resolution: '1179x2556', displayName: 'iPhone 15 Pro' },
7
- '15': { resolution: '1179x2556', displayName: 'iPhone 15' },
8
- '14-pro-max': { resolution: '1290x2796', displayName: 'iPhone 14 Pro Max' },
9
- '14-pro': { resolution: '1179x2556', displayName: 'iPhone 14 Pro' },
10
- 'se-3rd': { resolution: '750x1334', displayName: 'iPhone SE (3rd gen)' }
11
- },
12
- ipad: {
13
- 'pro-12.9': { resolution: '2048x2732', displayName: 'iPad Pro 12.9"' },
14
- 'pro-11': { resolution: '1668x2388', displayName: 'iPad Pro 11"' },
15
- 'air-5th': { resolution: '1640x2360', displayName: 'iPad Air (5th gen)' },
16
- 'mini-6th': { resolution: '1488x2266', displayName: 'iPad mini (6th gen)' },
17
- '10th': { resolution: '1640x2360', displayName: 'iPad (10th gen)' }
18
- },
19
- mac: {
20
- 'macbook-pro-16': { resolution: '3456x2234', displayName: 'MacBook Pro 16"' },
21
- 'macbook-pro-14': { resolution: '3024x1964', displayName: 'MacBook Pro 14"' },
22
- 'macbook-air-15': { resolution: '2880x1864', displayName: 'MacBook Air 15"' },
23
- 'macbook-air-13': { resolution: '2560x1664', displayName: 'MacBook Air 13"' },
24
- 'imac-24': { resolution: '4480x2520', displayName: 'iMac 24"' }
25
- },
26
- watch: {
27
- 'ultra-2': { resolution: '410x502', displayName: 'Apple Watch Ultra 2' },
28
- 'series-9-45mm': { resolution: '396x484', displayName: 'Apple Watch Series 9 (45mm)' },
29
- 'series-9-41mm': { resolution: '352x430', displayName: 'Apple Watch Series 9 (41mm)' },
30
- 'se-44mm': { resolution: '368x448', displayName: 'Apple Watch SE (44mm)' },
31
- 'se-40mm': { resolution: '324x394', displayName: 'Apple Watch SE (40mm)' }
32
- }
33
- };
3
+ import { ALL_PRESETS, SPECS_LAST_UPDATED } from '../core/app-store-specs.js';
34
4
  export default function specsCmd() {
35
5
  return new Command('specs')
36
- .description('Show device specifications and resolutions')
37
- .option('--device <name>', 'filter by device type (iphone|ipad|mac|watch)')
6
+ .description('Show device specifications and resolutions from Apple App Store requirements')
7
+ .option('--device <name>', 'filter by device type (iphone|ipad|mac|watch|appletv|visionpro)')
38
8
  .option('--json', 'output as JSON')
9
+ .option('--required', 'show only required presets')
39
10
  .action((opts) => {
40
11
  try {
41
12
  if (opts.json) {
42
- const output = opts.device ? { [opts.device]: deviceSpecs[opts.device] } : deviceSpecs;
13
+ // For JSON output, return the exact Apple specifications
14
+ let output = {
15
+ lastUpdated: SPECS_LAST_UPDATED
16
+ };
17
+ if (opts.device) {
18
+ const deviceType = opts.device.toLowerCase();
19
+ if (deviceType in ALL_PRESETS) {
20
+ const presets = ALL_PRESETS[deviceType];
21
+ output[deviceType] = opts.required ? presets.filter(p => p.required) : presets;
22
+ }
23
+ else {
24
+ console.error(pc.red(`Unknown device type: ${opts.device}`));
25
+ process.exit(1);
26
+ }
27
+ }
28
+ else {
29
+ // Include all device types
30
+ for (const [key, presets] of Object.entries(ALL_PRESETS)) {
31
+ output[key] = opts.required ? presets.filter(p => p.required) : presets;
32
+ }
33
+ }
43
34
  console.log(JSON.stringify(output, null, 2));
44
35
  return;
45
36
  }
46
- console.log(pc.bold('\nDevice Specifications\n'));
47
- const devices = opts.device
48
- ? [opts.device]
49
- : Object.keys(deviceSpecs);
50
- for (const device of devices) {
51
- if (!deviceSpecs[device]) {
52
- console.log(pc.red(`Unknown device: ${device}`));
37
+ // Non-JSON formatted output
38
+ console.log(pc.bold('\nApple App Store Screenshot Specifications\n'));
39
+ console.log(pc.dim('Source: https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications'));
40
+ console.log(pc.dim(`Last Updated: ${SPECS_LAST_UPDATED}\n`));
41
+ const deviceTypes = opts.device
42
+ ? [opts.device.toLowerCase()]
43
+ : Object.keys(ALL_PRESETS);
44
+ for (const deviceType of deviceTypes) {
45
+ if (!ALL_PRESETS[deviceType]) {
46
+ console.log(pc.red(`Unknown device type: ${deviceType}`));
53
47
  continue;
54
48
  }
55
- console.log(pc.cyan(device.toUpperCase()));
56
- for (const [_model, spec] of Object.entries(deviceSpecs[device])) {
57
- console.log(` ${spec.displayName.padEnd(30)} ${pc.dim(spec.resolution)}`);
49
+ const presets = opts.required
50
+ ? ALL_PRESETS[deviceType].filter(p => p.required)
51
+ : ALL_PRESETS[deviceType];
52
+ if (presets.length === 0)
53
+ continue;
54
+ console.log(pc.cyan(deviceType.toUpperCase()));
55
+ for (const preset of presets) {
56
+ const required = preset.required ? pc.green(' (REQUIRED)') : '';
57
+ console.log(` ${pc.bold(preset.name)}${required}`);
58
+ console.log(` Display: ${preset.displaySize}`);
59
+ if (preset.resolutions.portrait) {
60
+ console.log(` Portrait: ${pc.dim(preset.resolutions.portrait)}`);
61
+ }
62
+ if (preset.resolutions.landscape) {
63
+ console.log(` Landscape: ${pc.dim(preset.resolutions.landscape)}`);
64
+ }
65
+ if (preset.devices && preset.devices.length > 0) {
66
+ const deviceList = preset.devices.slice(0, 3).join(', ');
67
+ const more = preset.devices.length > 3 ? ` +${preset.devices.length - 3} more` : '';
68
+ console.log(` Devices: ${pc.dim(deviceList + more)}`);
69
+ }
70
+ if (preset.notes) {
71
+ console.log(` Note: ${pc.yellow(preset.notes)}`);
72
+ }
73
+ console.log();
58
74
  }
59
- console.log();
60
75
  }
61
- console.log(pc.dim('Use these resolutions in your appshot.json configuration'));
76
+ console.log(pc.dim('Use --json to get complete data for diffing and automation'));
62
77
  }
63
78
  catch (error) {
64
79
  console.error(pc.red('Error:'), error instanceof Error ? error.message : String(error));
@@ -1 +1 @@
1
- {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/commands/specs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/commands/specs.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * Official App Store Screenshot Specifications
3
3
  * Source: https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications
4
+ * Last Updated: 2024-12-01
4
5
  */
6
+ export declare const SPECS_LAST_UPDATED = "2024-12-01";
5
7
  export interface DevicePreset {
6
8
  id: string;
7
9
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"app-store-specs.d.ts","sourceRoot":"","sources":["../../src/core/app-store-specs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EA8IxC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAAY,EA4GtC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,YAAY,EA2CrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,EAqB1C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAAY,EAW5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAAY,EAuD7C,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;EASjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAMlE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAa7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAa3G"}
1
+ {"version":3,"file":"app-store-specs.d.ts","sourceRoot":"","sources":["../../src/core/app-store-specs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EA8IxC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAAY,EA4GtC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,YAAY,EA2CrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,EAqB1C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAAY,EAW5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAAY,EAuD7C,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;EASjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAMlE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAa7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAa3G"}
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * Official App Store Screenshot Specifications
3
3
  * Source: https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications
4
+ * Last Updated: 2024-12-01
4
5
  */
6
+ export const SPECS_LAST_UPDATED = '2024-12-01';
5
7
  export const IPHONE_PRESETS = [
6
8
  {
7
9
  id: 'iphone-6-9',
@@ -1 +1 @@
1
- {"version":3,"file":"app-store-specs.js","sourceRoot":"","sources":["../../src/core/app-store-specs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-store-specs.js","sourceRoot":"","sources":["../../src/core/app-store-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export type CheckSeverity = 'pass' | 'warning' | 'error';
2
+ export interface CheckResult {
3
+ name: string;
4
+ category: string;
5
+ status: CheckSeverity;
6
+ message: string;
7
+ details?: string;
8
+ suggestion?: string;
9
+ }
10
+ export interface DoctorReport {
11
+ timestamp: string;
12
+ version: string;
13
+ platform: string;
14
+ checks: Record<string, CheckResult[]>;
15
+ summary: {
16
+ passed: number;
17
+ warnings: number;
18
+ errors: number;
19
+ };
20
+ suggestions: string[];
21
+ }
22
+ export declare class DoctorService {
23
+ private results;
24
+ private suggestions;
25
+ runAllChecks(categories?: string[]): Promise<DoctorReport>;
26
+ private addResult;
27
+ private checkSystemRequirements;
28
+ private checkDependencies;
29
+ private checkFontSystem;
30
+ private checkFileSystem;
31
+ private checkFrameAssets;
32
+ private getPlatformName;
33
+ private generateReport;
34
+ }
35
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAgB;IAE7B,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BhE,OAAO,CAAC,SAAS;YAOH,uBAAuB;YA0CvB,iBAAiB;YAwEjB,eAAe;YAiFf,eAAe;YAqFf,gBAAgB;IAiG9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;CAyBvB"}
@@ -0,0 +1,439 @@
1
+ import { exec } from 'child_process';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import { promisify } from 'util';
5
+ import { platform } from 'os';
6
+ import sharp from 'sharp';
7
+ import { FontService } from './fonts.js';
8
+ import { loadConfig } from '../core/files.js';
9
+ import { frameRegistry } from '../core/devices.js';
10
+ const execAsync = promisify(exec);
11
+ export class DoctorService {
12
+ results = [];
13
+ suggestions = [];
14
+ async runAllChecks(categories) {
15
+ this.results = [];
16
+ this.suggestions = [];
17
+ const availableCategories = ['system', 'dependencies', 'fonts', 'filesystem', 'frames'];
18
+ const categoriesToRun = categories?.length
19
+ ? categories.filter(c => availableCategories.includes(c))
20
+ : availableCategories;
21
+ if (categoriesToRun.includes('system')) {
22
+ await this.checkSystemRequirements();
23
+ }
24
+ if (categoriesToRun.includes('dependencies')) {
25
+ await this.checkDependencies();
26
+ }
27
+ if (categoriesToRun.includes('fonts')) {
28
+ await this.checkFontSystem();
29
+ }
30
+ if (categoriesToRun.includes('filesystem')) {
31
+ await this.checkFileSystem();
32
+ }
33
+ if (categoriesToRun.includes('frames')) {
34
+ await this.checkFrameAssets();
35
+ }
36
+ return this.generateReport();
37
+ }
38
+ addResult(result) {
39
+ this.results.push(result);
40
+ if (result.suggestion && result.status !== 'pass') {
41
+ this.suggestions.push(result.suggestion);
42
+ }
43
+ }
44
+ async checkSystemRequirements() {
45
+ // Check Node.js version
46
+ const nodeVersion = process.version;
47
+ const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0]);
48
+ this.addResult({
49
+ name: 'Node.js Version',
50
+ category: 'system',
51
+ status: majorVersion >= 18 ? 'pass' : 'error',
52
+ message: `Node.js ${nodeVersion} (minimum: v18.0.0)`,
53
+ suggestion: majorVersion < 18 ? 'Update Node.js to version 18 or higher' : undefined
54
+ });
55
+ // Check npm availability
56
+ try {
57
+ const { stdout } = await execAsync('npm --version');
58
+ this.addResult({
59
+ name: 'npm',
60
+ category: 'system',
61
+ status: 'pass',
62
+ message: `npm v${stdout.trim()}`
63
+ });
64
+ }
65
+ catch {
66
+ this.addResult({
67
+ name: 'npm',
68
+ category: 'system',
69
+ status: 'warning',
70
+ message: 'npm not found',
71
+ suggestion: 'Install npm or ensure it\'s in your PATH'
72
+ });
73
+ }
74
+ // Platform detection
75
+ const os = platform();
76
+ this.addResult({
77
+ name: 'Platform',
78
+ category: 'system',
79
+ status: 'pass',
80
+ message: `${os} (${this.getPlatformName(os)})`
81
+ });
82
+ }
83
+ async checkDependencies() {
84
+ // Check Sharp installation
85
+ try {
86
+ const sharpVersion = sharp.versions;
87
+ this.addResult({
88
+ name: 'Sharp Module',
89
+ category: 'dependencies',
90
+ status: 'pass',
91
+ message: `Sharp v${sharpVersion.sharp} installed`
92
+ });
93
+ // Check Sharp native bindings
94
+ if (sharpVersion.vips) {
95
+ this.addResult({
96
+ name: 'Sharp Native Bindings',
97
+ category: 'dependencies',
98
+ status: 'pass',
99
+ message: `libvips v${sharpVersion.vips} loaded`
100
+ });
101
+ }
102
+ // Test Sharp functionality
103
+ try {
104
+ await sharp({
105
+ create: {
106
+ width: 100,
107
+ height: 100,
108
+ channels: 4,
109
+ background: { r: 255, g: 0, b: 0, alpha: 1 }
110
+ }
111
+ })
112
+ .png()
113
+ .toBuffer();
114
+ this.addResult({
115
+ name: 'Image Processing',
116
+ category: 'dependencies',
117
+ status: 'pass',
118
+ message: 'Sharp image processing test passed'
119
+ });
120
+ }
121
+ catch (error) {
122
+ this.addResult({
123
+ name: 'Image Processing',
124
+ category: 'dependencies',
125
+ status: 'error',
126
+ message: 'Sharp image processing test failed',
127
+ details: error instanceof Error ? error.message : String(error),
128
+ suggestion: 'Try reinstalling sharp: npm install sharp --force'
129
+ });
130
+ }
131
+ }
132
+ catch (error) {
133
+ this.addResult({
134
+ name: 'Sharp Module',
135
+ category: 'dependencies',
136
+ status: 'error',
137
+ message: 'Sharp not installed or not functional',
138
+ details: error instanceof Error ? error.message : String(error),
139
+ suggestion: 'Install sharp: npm install sharp'
140
+ });
141
+ }
142
+ // Check OpenAI API key
143
+ const hasApiKey = !!process.env.OPENAI_API_KEY;
144
+ this.addResult({
145
+ name: 'OpenAI API Key',
146
+ category: 'dependencies',
147
+ status: hasApiKey ? 'pass' : 'warning',
148
+ message: hasApiKey ? 'OpenAI API key found' : 'OpenAI API key not found (translation features disabled)',
149
+ suggestion: hasApiKey ? undefined : 'Set OPENAI_API_KEY environment variable to enable translation features'
150
+ });
151
+ }
152
+ async checkFontSystem() {
153
+ const fontService = FontService.getInstance();
154
+ const os = platform();
155
+ // Check font detection command availability
156
+ let fontCommandAvailable = false;
157
+ let fontCommand = '';
158
+ if (os === 'darwin') {
159
+ fontCommand = 'system_profiler';
160
+ try {
161
+ await execAsync('which system_profiler');
162
+ fontCommandAvailable = true;
163
+ }
164
+ catch {
165
+ fontCommandAvailable = false;
166
+ }
167
+ }
168
+ else if (os === 'win32') {
169
+ fontCommand = 'PowerShell';
170
+ fontCommandAvailable = true; // PowerShell is always available on Windows
171
+ }
172
+ else {
173
+ fontCommand = 'fc-list';
174
+ try {
175
+ await execAsync('which fc-list');
176
+ fontCommandAvailable = true;
177
+ }
178
+ catch {
179
+ fontCommandAvailable = false;
180
+ }
181
+ }
182
+ this.addResult({
183
+ name: 'Font Detection',
184
+ category: 'fonts',
185
+ status: fontCommandAvailable ? 'pass' : 'warning',
186
+ message: fontCommandAvailable
187
+ ? `Font detection available (${fontCommand})`
188
+ : `Font detection command not found (${fontCommand})`,
189
+ suggestion: !fontCommandAvailable && os === 'linux'
190
+ ? 'Install fontconfig: apt-get install fontconfig or yum install fontconfig'
191
+ : undefined
192
+ });
193
+ // Try to load system fonts
194
+ try {
195
+ const fonts = await fontService.getSystemFonts();
196
+ this.addResult({
197
+ name: 'System Fonts',
198
+ category: 'fonts',
199
+ status: fonts.length > 0 ? 'pass' : 'warning',
200
+ message: fonts.length > 0
201
+ ? `System fonts loaded (${fonts.length} fonts)`
202
+ : 'No system fonts detected',
203
+ suggestion: fonts.length === 0
204
+ ? 'Font detection may not be working properly on your system'
205
+ : undefined
206
+ });
207
+ // Check for common fonts
208
+ const commonFonts = ['Arial', 'Helvetica', 'Times New Roman'];
209
+ for (const fontName of commonFonts) {
210
+ const isInstalled = await fontService.isFontInstalled(fontName);
211
+ if (isInstalled) {
212
+ this.addResult({
213
+ name: `${fontName} Font`,
214
+ category: 'fonts',
215
+ status: 'pass',
216
+ message: `${fontName} font available`
217
+ });
218
+ break; // Just need one common font to pass
219
+ }
220
+ }
221
+ }
222
+ catch (error) {
223
+ this.addResult({
224
+ name: 'System Fonts',
225
+ category: 'fonts',
226
+ status: 'warning',
227
+ message: 'Could not load system fonts',
228
+ details: error instanceof Error ? error.message : String(error)
229
+ });
230
+ }
231
+ }
232
+ async checkFileSystem() {
233
+ // Check write permissions in current directory
234
+ const testFile = path.join(process.cwd(), '.appshot-doctor-test');
235
+ try {
236
+ await fs.writeFile(testFile, 'test', 'utf8');
237
+ await fs.unlink(testFile);
238
+ this.addResult({
239
+ name: 'Current Directory',
240
+ category: 'filesystem',
241
+ status: 'pass',
242
+ message: 'Write permissions in current directory'
243
+ });
244
+ }
245
+ catch (error) {
246
+ this.addResult({
247
+ name: 'Current Directory',
248
+ category: 'filesystem',
249
+ status: 'error',
250
+ message: 'No write permissions in current directory',
251
+ details: error instanceof Error ? error.message : String(error),
252
+ suggestion: 'Check directory permissions'
253
+ });
254
+ }
255
+ // Check write permissions in temp directory
256
+ const tempDir = process.platform === 'win32' ? process.env.TEMP || 'C:\\Temp' : '/tmp';
257
+ const tempFile = path.join(tempDir, '.appshot-doctor-test');
258
+ try {
259
+ await fs.writeFile(tempFile, 'test', 'utf8');
260
+ await fs.unlink(tempFile);
261
+ this.addResult({
262
+ name: 'Temp Directory',
263
+ category: 'filesystem',
264
+ status: 'pass',
265
+ message: 'Write permissions in temp directory'
266
+ });
267
+ }
268
+ catch (error) {
269
+ this.addResult({
270
+ name: 'Temp Directory',
271
+ category: 'filesystem',
272
+ status: 'warning',
273
+ message: 'No write permissions in temp directory',
274
+ details: error instanceof Error ? error.message : String(error)
275
+ });
276
+ }
277
+ // Check .appshot directory
278
+ const appshotDir = path.join(process.cwd(), '.appshot');
279
+ try {
280
+ await fs.stat(appshotDir);
281
+ this.addResult({
282
+ name: '.appshot Directory',
283
+ category: 'filesystem',
284
+ status: 'pass',
285
+ message: '.appshot directory exists'
286
+ });
287
+ // Check configuration file
288
+ try {
289
+ await loadConfig();
290
+ this.addResult({
291
+ name: 'Configuration File',
292
+ category: 'filesystem',
293
+ status: 'pass',
294
+ message: 'Configuration file valid'
295
+ });
296
+ }
297
+ catch {
298
+ this.addResult({
299
+ name: 'Configuration File',
300
+ category: 'filesystem',
301
+ status: 'warning',
302
+ message: 'Configuration file missing or invalid',
303
+ suggestion: 'Run "appshot init" to create configuration'
304
+ });
305
+ }
306
+ }
307
+ catch {
308
+ this.addResult({
309
+ name: '.appshot Directory',
310
+ category: 'filesystem',
311
+ status: 'warning',
312
+ message: '.appshot directory not found',
313
+ suggestion: 'Run "appshot init" to initialize project'
314
+ });
315
+ }
316
+ }
317
+ async checkFrameAssets() {
318
+ const framesDir = path.join(process.cwd(), 'frames');
319
+ try {
320
+ const files = await fs.readdir(framesDir);
321
+ const frameFiles = files.filter(f => f.endsWith('.png'));
322
+ this.addResult({
323
+ name: 'Frames Directory',
324
+ category: 'frames',
325
+ status: 'pass',
326
+ message: `Frames directory found (${frameFiles.length} files)`
327
+ });
328
+ // Check Frames.json
329
+ const framesJsonPath = path.join(framesDir, 'Frames.json');
330
+ try {
331
+ const framesJson = await fs.readFile(framesJsonPath, 'utf8');
332
+ JSON.parse(framesJson);
333
+ this.addResult({
334
+ name: 'Frames.json',
335
+ category: 'frames',
336
+ status: 'pass',
337
+ message: 'Frames.json valid'
338
+ });
339
+ // Count frames by device type
340
+ const deviceCounts = {
341
+ iphone: 0,
342
+ ipad: 0,
343
+ mac: 0,
344
+ watch: 0
345
+ };
346
+ for (const frame of frameRegistry) {
347
+ deviceCounts[frame.deviceType]++;
348
+ }
349
+ for (const [device, count] of Object.entries(deviceCounts)) {
350
+ if (count > 0) {
351
+ this.addResult({
352
+ name: `${device.charAt(0).toUpperCase() + device.slice(1)} Frames`,
353
+ category: 'frames',
354
+ status: 'pass',
355
+ message: `${device === 'mac' ? 'Mac' : device.charAt(0).toUpperCase() + device.slice(1)} frames: ${count}`
356
+ });
357
+ }
358
+ }
359
+ // Check if all frame files referenced in registry exist
360
+ let missingFrames = 0;
361
+ for (const frame of frameRegistry) {
362
+ const framePath = path.join(framesDir, `${frame.originalName || frame.displayName}.png`);
363
+ try {
364
+ await fs.access(framePath);
365
+ }
366
+ catch {
367
+ missingFrames++;
368
+ }
369
+ }
370
+ if (missingFrames === 0) {
371
+ this.addResult({
372
+ name: 'Frame Files',
373
+ category: 'frames',
374
+ status: 'pass',
375
+ message: 'All frame files present'
376
+ });
377
+ }
378
+ else {
379
+ this.addResult({
380
+ name: 'Frame Files',
381
+ category: 'frames',
382
+ status: 'warning',
383
+ message: `${missingFrames} frame files missing`,
384
+ suggestion: 'Some device frames may not be available'
385
+ });
386
+ }
387
+ }
388
+ catch (error) {
389
+ this.addResult({
390
+ name: 'Frames.json',
391
+ category: 'frames',
392
+ status: 'warning',
393
+ message: 'Frames.json missing or invalid',
394
+ details: error instanceof Error ? error.message : String(error)
395
+ });
396
+ }
397
+ }
398
+ catch {
399
+ this.addResult({
400
+ name: 'Frames Directory',
401
+ category: 'frames',
402
+ status: 'warning',
403
+ message: 'Frames directory not found',
404
+ suggestion: 'Device frames may not be available for the build command'
405
+ });
406
+ }
407
+ }
408
+ getPlatformName(os) {
409
+ switch (os) {
410
+ case 'darwin': return 'macOS';
411
+ case 'win32': return 'Windows';
412
+ case 'linux': return 'Linux';
413
+ default: return os;
414
+ }
415
+ }
416
+ generateReport() {
417
+ const categorizedChecks = {};
418
+ for (const result of this.results) {
419
+ if (!categorizedChecks[result.category]) {
420
+ categorizedChecks[result.category] = [];
421
+ }
422
+ categorizedChecks[result.category].push(result);
423
+ }
424
+ const summary = {
425
+ passed: this.results.filter(r => r.status === 'pass').length,
426
+ warnings: this.results.filter(r => r.status === 'warning').length,
427
+ errors: this.results.filter(r => r.status === 'error').length
428
+ };
429
+ return {
430
+ timestamp: new Date().toISOString(),
431
+ version: '0.5.0',
432
+ platform: platform(),
433
+ checks: categorizedChecks,
434
+ summary,
435
+ suggestions: [...new Set(this.suggestions)] // Remove duplicates
436
+ };
437
+ }
438
+ }
439
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type ExecAsync = (cmd: string) => Promise<{
2
+ stdout: string;
3
+ stderr: string;
4
+ }>;
5
+ //# sourceMappingURL=exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/types/exec.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/types/exec.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appshot-cli",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Generate App Store–ready screenshots with frames, gradients, and captions.",
5
5
  "bin": {
6
6
  "appshot": "bin/appshot.js"