create-addfox-app 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +2 -1
  2. package/dist/cli/index.d.ts +2 -0
  3. package/dist/cli.js +15 -9
  4. package/dist/config/dependencyRanges.d.ts +19 -0
  5. package/dist/config/generate.d.ts +10 -0
  6. package/dist/config/merge.d.ts +10 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.js +1 -0
  9. package/dist/lib/colors.d.ts +23 -0
  10. package/dist/lib/jsonFile.d.ts +6 -0
  11. package/dist/lib/minimist.d.ts +9 -0
  12. package/dist/prompts/logo.d.ts +10 -0
  13. package/dist/prompts/packageManager.d.ts +6 -0
  14. package/dist/prompts/skills.d.ts +15 -0
  15. package/dist/scaffold/entries.d.ts +14 -0
  16. package/dist/scaffold/style.d.ts +5 -0
  17. package/dist/scaffold/test.d.ts +12 -0
  18. package/dist/template/bundledCopy.d.ts +13 -0
  19. package/dist/template/catalog.d.ts +17 -0
  20. package/dist/template/filterEntries.d.ts +7 -0
  21. package/dist/template/spinner.d.ts +12 -0
  22. package/package.json +8 -2
  23. package/templates/template-preact-js/package.json +2 -2
  24. package/templates/template-preact-ts/package.json +2 -2
  25. package/templates/template-react-js/package.json +2 -2
  26. package/templates/template-react-ts/package.json +2 -2
  27. package/templates/template-solid-js/package.json +2 -2
  28. package/templates/template-solid-ts/package.json +2 -2
  29. package/templates/template-svelte-js/package.json +2 -2
  30. package/templates/template-svelte-ts/package.json +2 -2
  31. package/templates/template-vanilla-js/package.json +1 -1
  32. package/templates/template-vanilla-ts/package.json +1 -1
  33. package/templates/template-vue-js/package.json +2 -2
  34. package/templates/template-vue-ts/package.json +2 -2
package/README.md CHANGED
@@ -10,7 +10,8 @@
10
10
 
11
11
  Interactive scaffolder: generates a addfox-based extension project from options (template, package manager, entries, skills).
12
12
 
13
- - Commands: `create-addfox-app` or `pnpm create addfox-app` (and npm/yarn/bun equivalents)
13
+ - Commands: `addfox create` or `npx addfox@latest create` (subcommand mode)
14
+ - Legacy: `create-addfox-app` or `pnpm create addfox-app` (and npm/yarn/bun equivalents)
14
15
  - Flow: (1) select framework (vanilla / vue / react / preact / svelte / solid), (2) language (TypeScript / JavaScript), (3) package manager (pnpm / npm / yarn / bun), (4) entries to include (multi-select), (5) whether to install addfox skills (yes/no). Output to cwd or a given directory. Generated project uses **addfox.config.ts** or **addfox.config.js** with minimal manifest (entry discovery; no built-in entry paths in manifest).
15
16
 
16
17
  ## Templates
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export declare function runCreateApp(rawArgv?: string[]): Promise<void>;
package/dist/cli.js CHANGED
@@ -826,6 +826,7 @@ function printHelp() {
826
826
  Create a new addfox extension project
827
827
 
828
828
  Usage:
829
+ addfox create [project-name] [options]
829
830
  create-addfox-app [project-name] [options]
830
831
 
831
832
  Options:
@@ -987,19 +988,20 @@ function updatePackageName(destDir, projectName) {
987
988
  pkg.name = projectName.replace(/\s+/g, "-").toLowerCase();
988
989
  writeJsonFile(pkgPath, pkg);
989
990
  }
990
- async function main() {
991
- const argv = parseArgv(process.argv.slice(2));
991
+ async function runCreateApp(rawArgv = process.argv.slice(2)) {
992
+ const argv = parseArgv(rawArgv);
992
993
  if (argv.help || argv.h) return void printHelp();
993
994
  if (argv.version || argv.v) return void console.log(getVersion());
994
- const targetDir = argv._[0] ?? "my-extension";
995
+ const targetDir = String(argv._[0] ?? "my-extension");
995
996
  const cliFramework = argv.framework;
996
997
  const cliLanguage = argv.language;
998
+ console.log(dim(` create-addfox-app v${getVersion()}`));
997
999
  printAddfoxLogo();
998
1000
  console.log(blue("\n Create Addfox App\n"));
999
1001
  const root = external_node_path_resolve(process.cwd(), targetDir);
1000
1002
  if (existsSync(root)) {
1001
1003
  const confirmed = await confirmOverwrite(targetDir);
1002
- if (!confirmed) process.exit(0);
1004
+ if (!confirmed) return;
1003
1005
  rmSync(root, {
1004
1006
  recursive: true,
1005
1007
  force: true
@@ -1014,9 +1016,9 @@ async function main() {
1014
1016
  "__all__"
1015
1017
  ]
1016
1018
  } : await promptOptions();
1017
- if (!options) process.exit(0);
1019
+ if (!options) return;
1018
1020
  const testSelection = cliFramework && cliLanguage ? resolveTestSelectionFromArgv(argv) : await promptTestAndReport();
1019
- if (!testSelection) process.exit(0);
1021
+ if (!testSelection) return;
1020
1022
  const pm = options.packageManager;
1021
1023
  const templateName = getTemplateName(options.framework, options.language);
1022
1024
  const templateReady = hasLocalTemplate(templateName);
@@ -1032,8 +1034,7 @@ async function main() {
1032
1034
  minVisibleMs: TEMPLATE_SPINNER_MIN_MS
1033
1035
  } : void 0);
1034
1036
  } catch (err) {
1035
- console.error(red(`\n Failed to copy template: ${err.message}\n`));
1036
- process.exit(1);
1037
+ throw new Error(`Failed to copy template: ${err.message}`);
1037
1038
  }
1038
1039
  const useAllEntries = options.entries.includes("__all__");
1039
1040
  const existingDirs = getExistingAppEntryDirs(root);
@@ -1090,7 +1091,12 @@ async function main() {
1090
1091
  console.log(` ${installCmd}`);
1091
1092
  console.log(` ${devCmd}\n`);
1092
1093
  }
1093
- main().catch((e)=>{
1094
+ async function main() {
1095
+ await runCreateApp();
1096
+ }
1097
+ const isCli = import.meta.url.startsWith("file://") && process.argv[1] === fileURLToPath(import.meta.url);
1098
+ if (isCli) main().catch((e)=>{
1094
1099
  console.error(e);
1095
1100
  process.exit(1);
1096
1101
  });
1102
+ export { runCreateApp };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Published dependency ranges (caret baseline) for scaffold `package.json` under `create-addfox-app/templates/`.
3
+ * Bump when releasing new versions of `addfox`, `@addfox/utils`, or `@rsbuild/plugin-vue` in templates.
4
+ *
5
+ * Templates put `addfox` and `@rsbuild/plugin-*` in **devDependencies** (build-time only).
6
+ * `@addfox/utils` is in **dependencies** so extension runtime code can import it.
7
+ * Do **not** list `@rsbuild/core` in templates: it is pulled in by `addfox` → `@addfox/cli` / `@addfox/core`
8
+ * and satisfies peers for Rsbuild plugins.
9
+ *
10
+ * `ADDFOX_0_1_SCAFFOLD_RANGE` is a semver range for tooling/docs that must accept 0.1.x prereleases.
11
+ */
12
+ export declare const ADDFOX_CLI_PACKAGE_VERSION: "^0.2.0";
13
+ export declare const ADDFOX_UTILS_PACKAGE_VERSION: "^0.2.0";
14
+ /** `@rsbuild/plugin-vue` range in `template-vue-ts` / `template-vue-js` (aligned across JS/TS). */
15
+ export declare const RSBUILD_PLUGIN_VUE_PACKAGE_VERSION: "^1.2.8";
16
+ /**
17
+ * `^0.2.0` matches stable releases in the 0.2.x line.
18
+ */
19
+ export declare const ADDFOX_0_1_SCAFFOLD_RANGE: ">=0.2.0-0 <0.3.0";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Full `addfox.config` codegen when the template has no usable file (fallback only).
3
+ * Normal scaffold: the template’s addfox.config is kept and merged (see `./merge.ts`).
4
+ */
5
+ import type { Framework, Language, StyleEngine } from "../template/catalog.ts";
6
+ export declare function getStylePlugin(engine: StyleEngine | undefined): {
7
+ importLine: string;
8
+ call: string;
9
+ } | null;
10
+ export declare function generateAddfoxConfig(framework: Framework, _language: Language, styleEngine?: StyleEngine): string;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Merges scaffold-time changes into an existing addfox.config from the template
3
+ * (preserves manifest and framework plugins; only injects Less/Sass Rsbuild plugins when selected).
4
+ */
5
+ import type { StyleEngine } from "../template/catalog.ts";
6
+ /**
7
+ * After copying a template, merge only Less/Sass Rsbuild plugins into the existing config.
8
+ * Tailwind/UnoCSS need no changes here (postcss + applyStyleEngine). Manifest stays as in template.
9
+ */
10
+ export declare function mergeScaffoldIntoAddfoxConfig(source: string, styleEngine: StyleEngine): string;
@@ -0,0 +1 @@
1
+ export { runCreateApp } from "./cli/index.ts";
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export { runCreateApp } from "./cli.js";
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Lightweight ANSI color helpers.
3
+ * Replaces the `kolorist` npm package to reduce supply-chain risk.
4
+ */
5
+ export declare const black: (s: string) => string;
6
+ export declare const red: (s: string) => string;
7
+ export declare const green: (s: string) => string;
8
+ export declare const yellow: (s: string) => string;
9
+ export declare const blue: (s: string) => string;
10
+ export declare const magenta: (s: string) => string;
11
+ export declare const cyan: (s: string) => string;
12
+ export declare const white: (s: string) => string;
13
+ export declare const gray: (s: string) => string;
14
+ export declare const lightRed: (s: string) => string;
15
+ export declare const lightGreen: (s: string) => string;
16
+ export declare const lightYellow: (s: string) => string;
17
+ export declare const lightBlue: (s: string) => string;
18
+ export declare const lightMagenta: (s: string) => string;
19
+ export declare const lightCyan: (s: string) => string;
20
+ export declare const lightGray: (s: string) => string;
21
+ export declare const dim: (s: string) => string;
22
+ /** True-color (24-bit) helper. */
23
+ export declare function trueColor(r: number, g: number, b: number): (s: string) => string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Read/write JSON files; strips UTF-8 BOM on read so JSON.parse never fails.
3
+ */
4
+ export declare function stripUtf8Bom(text: string): string;
5
+ export declare function readJsonFile<T = unknown>(path: string): T;
6
+ export declare function writeJsonFile(path: string, data: unknown): void;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Minimal argv parser.
3
+ * Replaces the `minimist` npm package to reduce supply-chain risk.
4
+ */
5
+ export interface ParsedArgv {
6
+ _: (string | number)[];
7
+ [key: string]: string | number | boolean | (string | number)[] | undefined;
8
+ }
9
+ export declare function parseArgv(argv: string[]): ParsedArgv;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI banner: FIGlet-style block letters (same family as Vercel skills CLI).
3
+ *
4
+ * Uses **256-color** ANSI (`\x1b[38;5;Nm`) for the orange→pink gradient, not 24-bit
5
+ * truecolor (`38;2;r;g;b`). Apple Terminal + zsh often mishandle or strip truecolor;
6
+ * Vercel `skills` uses per-line 256-color grays for the same reason.
7
+ *
8
+ * @see https://github.com/vercel-labs/skills/blob/main/src/cli.ts (showLogo / GRAYS)
9
+ */
10
+ export declare function printAddfoxLogo(): void;
@@ -0,0 +1,6 @@
1
+ import type { PackageManager } from "@addfox/pkg-manager";
2
+ export declare const PACKAGE_MANAGER_ORDER: PackageManager[];
3
+ export declare const PACKAGE_MANAGER_CHOICES: {
4
+ title: string;
5
+ value: PackageManager;
6
+ }[];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Skills step: fetch addfox/skills list and run skills add via package manager.
3
+ */
4
+ export interface SkillItem {
5
+ name: string;
6
+ value: string;
7
+ }
8
+ /** Fetch list of skill names (directories with SKILL.md) from addfox/skills. */
9
+ export declare function fetchSkillsList(): Promise<SkillItem[]>;
10
+ export declare function getSkillsChoices(skills: SkillItem[]): {
11
+ title: string;
12
+ value: string;
13
+ }[];
14
+ /** Build the skills add command args: repo or repo/skill1 repo/skill2 ... */
15
+ export declare function getSkillsAddArgs(selected: string[]): string[];
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Extension entry types supported by create-addfox-app.
3
+ * Matches addfox MANIFEST_ENTRY_KEYS; app/ subdir names align with these.
4
+ */
5
+ export declare const ENTRY_NAMES: readonly ["popup", "options", "background", "content", "devtools", "sidepanel", "sandbox", "newtab", "bookmarks", "history", "offscreen"];
6
+ export type EntryName = (typeof ENTRY_NAMES)[number];
7
+ /** app/ directory name for each entry (same as entry name) */
8
+ export declare const ENTRY_APP_DIRS: readonly EntryName[];
9
+ export declare const ENTRY_CHOICES: {
10
+ title: string;
11
+ value: string;
12
+ }[];
13
+ /** Entries that require extra permissions when added to manifest */
14
+ export declare const ENTRY_EXTRA_PERMISSIONS: Record<string, string[]>;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Apply selected style engine after template copy: deps, config files, and entry imports.
3
+ */
4
+ import type { Framework, Language, StyleEngine } from "../template/catalog.ts";
5
+ export declare function applyStyleEngine(root: string, _framework: Framework, language: Language, engine: StyleEngine): void;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Optional rstest + Rsdoctor setup for scaffolded projects.
3
+ * Versions align with @rstest/core usage in this monorepo.
4
+ */
5
+ import type { Language } from "../template/catalog.ts";
6
+ export type TestKind = "unit" | "e2e";
7
+ export interface TestSetupSelection {
8
+ testKinds: TestKind[];
9
+ installRsdoctor: boolean;
10
+ }
11
+ export declare function generateRstestConfig(language: Language, testKinds: TestKind[]): string;
12
+ export declare function applyTestAndReportSetup(root: string, language: Language, selection: TestSetupSelection): void;
@@ -0,0 +1,13 @@
1
+ /** True if the bundled `templates/<name>` directory exists in this package. */
2
+ export declare function hasLocalTemplate(templateName: string): boolean;
3
+ /**
4
+ * Skip dependency trees and VCS **inside the template folder** when copying.
5
+ * Must use paths relative to `templateRoot`: the install path often contains
6
+ * `.pnpm` / `node_modules` (e.g. pnpm store), which must not cause every file to be skipped.
7
+ */
8
+ export declare function shouldCopyLocalTemplatePath(src: string, templateRoot: string): boolean;
9
+ /**
10
+ * Copy bundled template from node_modules/create-addfox-app/templates into destDir.
11
+ * @throws If the template folder is missing (broken install or forgot to run build).
12
+ */
13
+ export declare function copyBundledTemplate(templateName: string, destDir: string): Promise<void>;
@@ -0,0 +1,17 @@
1
+ export type Framework = "vanilla" | "vue" | "react" | "preact" | "svelte" | "solid";
2
+ export type Language = "js" | "ts";
3
+ /** Style / CSS tooling (after framework). `none` = no extra style stack. */
4
+ export type StyleEngine = "none" | "tailwindcss" | "unocss" | "less" | "sass";
5
+ export declare const STYLE_ENGINES: {
6
+ title: string;
7
+ value: StyleEngine;
8
+ }[];
9
+ export declare const FRAMEWORKS: {
10
+ title: string;
11
+ value: Framework;
12
+ }[];
13
+ export declare const LANGUAGES: {
14
+ title: string;
15
+ value: Language;
16
+ }[];
17
+ export declare function getTemplateName(framework: Framework, language: Language): string;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Removes app/ entry dirs that are not in the selected entries list.
3
+ * Call after copying template when user did not select "all" entries.
4
+ */
5
+ export declare function filterAppEntries(destDir: string, selectedEntries: string[]): void;
6
+ /** Returns entry dir names that exist under app/ in the template. */
7
+ export declare function getExistingAppEntryDirs(destDir: string): string[];
@@ -0,0 +1,12 @@
1
+ export type TemplateSpinnerOptions = {
2
+ /**
3
+ * Keep the spinner visible at least this long after `fn` starts.
4
+ * Use for fast local copies so the animation is noticeable (sync work used to block the spinner).
5
+ */
6
+ minVisibleMs?: number;
7
+ };
8
+ /**
9
+ * Runs `fn` while showing a Braille-dot spinner + label on one terminal line.
10
+ * No-op animation when stdout is not a TTY (e.g. CI).
11
+ */
12
+ export declare function runWithTemplateSpinner<T>(label: string, fn: () => Promise<T>, options?: TemplateSpinnerOptions): Promise<T>;
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "create-addfox-app",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Interactive scaffolder for addfox extension projects",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
+ "main": "./dist/index.js",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./cli": "./dist/cli.js"
11
+ },
7
12
  "bin": {
8
13
  "create-addfox-app": "./dist/cli.js"
9
14
  },
@@ -14,7 +19,7 @@
14
19
  ],
15
20
  "dependencies": {
16
21
  "prompts": "^2.4.2",
17
- "@addfox/pkg-manager": "0.2.0"
22
+ "@addfox/pkg-manager": "0.2.2"
18
23
  },
19
24
  "engines": {
20
25
  "node": ">=18.0.0"
@@ -24,6 +29,7 @@
24
29
  "@rstest/core": "^0.9.9",
25
30
  "@rstest/coverage-istanbul": "^0.3.2",
26
31
  "@types/node": "^20.0.0",
32
+ "@types/prompts": "^2.4.9",
27
33
  "typescript": "^5.0.0"
28
34
  },
29
35
  "scripts": {
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "preact": "^10.29.0"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-preact": "1.7.2"
17
17
  }
18
18
  }
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "preact": "^10.29.0"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-preact": "1.7.2",
17
17
  "typescript": "^5.9.3",
18
18
  "@types/chrome": "^0.1.38"
@@ -8,12 +8,12 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "react": "^19.2.4",
13
13
  "react-dom": "^19.2.4"
14
14
  },
15
15
  "devDependencies": {
16
- "addfox": "0.1.1",
16
+ "addfox": "^0.2.0",
17
17
  "@rsbuild/plugin-react": "2.0.0"
18
18
  }
19
19
  }
@@ -8,12 +8,12 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "react": "^19.2.4",
13
13
  "react-dom": "^19.2.4"
14
14
  },
15
15
  "devDependencies": {
16
- "addfox": "0.1.1",
16
+ "addfox": "^0.2.0",
17
17
  "@rsbuild/plugin-react": "2.0.0",
18
18
  "typescript": "^5.9.3",
19
19
  "@types/chrome": "^0.1.38",
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "solid-js": "^1.9.11"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-babel": "^1.2.0",
17
17
  "@rsbuild/plugin-solid": "1.2.0"
18
18
  }
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "solid-js": "^1.9.11"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-babel": "^1.2.0",
17
17
  "@rsbuild/plugin-solid": "1.2.0",
18
18
  "typescript": "^5.9.3",
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "svelte": "^5.54.1"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-svelte": "1.1.1"
17
17
  }
18
18
  }
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "svelte": "^5.54.1"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-svelte": "1.1.1",
17
17
  "typescript": "^5.9.3",
18
18
  "@types/chrome": "^0.1.38"
@@ -8,6 +8,6 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "devDependencies": {
11
- "addfox": "0.1.1"
11
+ "addfox": "^0.2.0"
12
12
  }
13
13
  }
@@ -8,7 +8,7 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "devDependencies": {
11
- "addfox": "0.1.1",
11
+ "addfox": "^0.2.0",
12
12
  "typescript": "^5.9.3"
13
13
  }
14
14
  }
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "vue": "^3.5.30"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-vue": "^1.2.8"
17
17
  }
18
18
  }
@@ -8,11 +8,11 @@
8
8
  "build": "addfox build"
9
9
  },
10
10
  "dependencies": {
11
- "@addfox/utils": "0.1.1",
11
+ "@addfox/utils": "^0.2.0",
12
12
  "vue": "^3.5.30"
13
13
  },
14
14
  "devDependencies": {
15
- "addfox": "0.1.1",
15
+ "addfox": "^0.2.0",
16
16
  "@rsbuild/plugin-vue": "^1.2.8",
17
17
  "typescript": "^5.9.3",
18
18
  "@types/chrome": "^0.1.38"