themebooth 0.2.0 → 0.3.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/CHANGELOG.md ADDED
@@ -0,0 +1,57 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
+ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.3.0] - 2026-05-09
9
+
10
+ ### Added
11
+ - Comprehensive validation CLI command with detailed error reporting
12
+ - Color utility module for advanced color manipulation and validation
13
+ - Theme overlay system for composing multiple theme layers
14
+ - Schema definitions extracted into dedicated module
15
+ - New editor exporters: Atom, Brackets, Sublime Text, and Vim
16
+ - Exporter utilities for shared functionality across editor formats
17
+ - Extensive test plan and CLI help documentation
18
+ - Troubleshooting guide with common issues and solutions
19
+
20
+ ### Changed
21
+ - Refactored preview renderer with expanded browser UI (>2200 lines)
22
+ - Enhanced exporter interfaces for VS Code and Zed with improved format handling
23
+ - Updated manifest template with computed field support
24
+ - Improved preset templates (dark, light, high-contrast) with better color definitions
25
+ - Refined variables.ts with cleaner type definitions
26
+ - Enhanced validation utilities with extended error context
27
+
28
+ ### Fixed
29
+ - Computed field initialization in manifest generation
30
+ - ColorOrVariableRegex import source consistency
31
+
32
+ ## [0.2.1] - 2026-05-09
33
+
34
+ ### Added
35
+ - Phase 3: Theme inheritance, computed colors, and preset wizard
36
+ - ASCII mascot and colorized output for CLI init command
37
+ - Complete testing and documentation workflows
38
+ - Comprehensive error handling and validation system
39
+
40
+ ## [0.2.0] - 2026-05-09
41
+
42
+ ### Added
43
+ - Core schema validation with Zod
44
+ - Preview command with browser live-reload
45
+ - Package and publish commands
46
+ - VS Code and Zed exporter implementations
47
+ - Dark, light, and high-contrast preset templates
48
+ - Browser-based validation error visualization
49
+
50
+ ## [0.1.0] - 2026-05-08
51
+
52
+ ### Added
53
+ - Initial release
54
+ - Basic CLI with init command
55
+ - Theme manifest schema
56
+ - Variable substitution system
57
+ - IntelliJ and Sublime basis implementation
package/README.md CHANGED
@@ -168,6 +168,7 @@ Changes to `manifest.json` reload automatically.
168
168
  | `themebooth init [name]` | Create new theme project |
169
169
  | `themebooth init [name] --preset [dark\|light\|high-contrast]` | Create with starter preset |
170
170
  | `themebooth preview` | Live preview with hot-reload |
171
+ | `themebooth validate` | Validate manifest.json |
171
172
  | `themebooth preset add` | Interactive wizard to create theme variants |
172
173
  | `themebooth package` | Package for all platforms |
173
174
  | `themebooth publish <platform>` | Publish to marketplace |
@@ -2,16 +2,20 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const commander_1 = require("commander");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
5
7
  const init_1 = require("../cli/init");
6
8
  const preview_1 = require("../cli/preview");
7
9
  const package_1 = require("../cli/package");
8
10
  const publish_1 = require("../cli/publish");
9
11
  const preset_1 = require("../cli/preset");
12
+ const validate_1 = require("../cli/validate");
13
+ const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, "../../package.json"), "utf-8"));
10
14
  const program = new commander_1.Command();
11
15
  program
12
16
  .name("themebooth")
13
17
  .description("Create syntax themes once, publish to VS Code, Notepad++, and Zed")
14
- .version("0.1.0");
18
+ .version(packageJson.version, "-v, --version");
15
19
  program
16
20
  .command("init [name]")
17
21
  .description("Initialize a new theme project")
@@ -54,6 +58,32 @@ Examples:
54
58
  process.exit(1);
55
59
  }
56
60
  });
61
+ program
62
+ .command("validate [path]")
63
+ .description("Validate manifest.json for errors and compatibility")
64
+ .option("--fix", "Auto-convert colors to hex format")
65
+ .option("--ci", "Machine-readable JSON output for CI/CD")
66
+ .addHelpText("after", `
67
+ Comprehensive validation: schema, variables, colors, tokens, presets, extends.
68
+ Catches errors at edit time before packaging.
69
+
70
+ Examples:
71
+ $ themebooth validate
72
+ $ themebooth validate ./custom.json
73
+ $ themebooth validate --fix
74
+ $ themebooth validate --ci | jq .valid
75
+ `)
76
+ .action(async (path, options) => {
77
+ try {
78
+ await (0, validate_1.validateCommand)(path, {
79
+ fix: options.fix || false,
80
+ ci: options.ci || false,
81
+ });
82
+ }
83
+ catch (error) {
84
+ process.exit(1);
85
+ }
86
+ });
57
87
  program
58
88
  .command("package")
59
89
  .description("Package theme for all platforms (VS Code, Notepad++, Zed)")
@@ -1 +1 @@
1
- {"version":3,"file":"themebooth.js","sourceRoot":"","sources":["../../src/bin/themebooth.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,sCAA0C;AAC1C,4CAAgD;AAChD,4CAAgD;AAChD,4CAAgD;AAChD,0CAAiD;AAGjD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,mEAAmE,CAAC;KAChF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,uBAAuB,EAAE,2CAA2C,EAAE,MAAM,CAAC;KACpF,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;GAUrB,CAAC;KACD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,IAAA,kBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,WAAW,CAAC,OAAO,EAAE;;;;;;;GAOrB,CAAC;KACD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,wBAAc,GAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2DAA2D,CAAC;KACxE,WAAW,CAAC,OAAO,EAAE;;;;;;;GAOrB,CAAC;KACD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,wBAAc,GAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,uDAAuD,CAAC;KACpE,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;GAYrB,CAAC;KACD,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACzB,IAAI,CAAC;QACH,MAAM,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,SAAS;KACN,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,mDAAmD,CAAC;KAChE,WAAW,CAAC,OAAO,EAAE;;;;;;GAMrB,CAAC;KACD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,yBAAgB,GAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"themebooth.js","sourceRoot":"","sources":["../../src/bin/themebooth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface ValidateOptions {
2
+ fix?: boolean;
3
+ ci?: boolean;
4
+ }
5
+ export declare function validateCommand(manifestPath?: string, options?: ValidateOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAoCD,wBAAsB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JzG"}