mb-run 1.0.3 → 1.0.4

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 (121) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +7 -1
  3. package/dist/eslint.js +1 -1
  4. package/dist/oxfmt.js +1 -1
  5. package/dist/oxlint.js +1 -1
  6. package/dist/prettier.js +1 -1
  7. package/dist/test.js +2 -2
  8. package/dist/upgrade.js +30 -3
  9. package/npm-shrinkwrap.json +2 -2
  10. package/package.json +2 -2
  11. package/{vendor → template}/.agents/rules/testing.instructions.md +1 -1
  12. package/{vendor → template}/.agents-plugin/rules/testing.instructions.md +1 -1
  13. package/{vendor → template}/.devcontainer-plugin/README.md +1 -1
  14. package/{vendor → template}/.github/workflows/build.yml +1 -1
  15. package/{vendor → template}/.github/workflows/codecov.yml +1 -1
  16. package/{vendor → template}/.github/workflows/publish.yml +2 -2
  17. package/{vendor → template}/.github-plugin/workflows/build.yml +1 -1
  18. package/{vendor → template}/.github-plugin/workflows/codecov.yml +1 -1
  19. package/{vendor → template}/.github-plugin/workflows/publish.yml +2 -2
  20. package/{vendor → template}/.gitignore.txt +1 -5
  21. package/{vendor → template}/.oxfmtrc.root.json +5 -10
  22. package/{vendor → template}/.oxlintrc.root.json +5 -10
  23. package/{vendor → template}/.prettierignore +1 -1
  24. package/{vendor → template}/.vscode/settings.json +2 -1
  25. package/{vendor → template}/bunfig.toml +2 -2
  26. package/{vendor → template}/eslint.config.js +1 -1
  27. package/{vendor → template}/jest.config.js +2 -2
  28. package/{vendor/vite.config.ts → template/vitest.config.ts} +8 -4
  29. /package/{vendor → template}/.agents/README.md +0 -0
  30. /package/{vendor → template}/.agents/skills/verify-agent-context/SKILL.md +0 -0
  31. /package/{vendor → template}/.agents-plugin/README.md +0 -0
  32. /package/{vendor → template}/.agents-plugin/rules/chip-tests.instructions.md +0 -0
  33. /package/{vendor → template}/.agents-plugin/rules/matterbridge.instructions.md +0 -0
  34. /package/{vendor → template}/.agents-plugin/rules/plugin-frontend.instructions.md +0 -0
  35. /package/{vendor → template}/.agents-plugin/skills/verify-agent-context/SKILL.md +0 -0
  36. /package/{vendor → template}/.antigravity/settings.json +0 -0
  37. /package/{vendor → template}/.claude/rules/testing/testing.instructions.md +0 -0
  38. /package/{vendor → template}/.claude/settings.json +0 -0
  39. /package/{vendor → template}/.claude/skills/verify-agent-context/SKILL.md +0 -0
  40. /package/{vendor → template}/.claude-plugin/rules/chip-tests/chip-tests.instructions.md +0 -0
  41. /package/{vendor → template}/.claude-plugin/rules/matterbridge/matterbridge.instructions.md +0 -0
  42. /package/{vendor → template}/.claude-plugin/rules/plugin-frontend/plugin-frontend.instructions.md +0 -0
  43. /package/{vendor → template}/.claude-plugin/rules/testing/testing.instructions.md +0 -0
  44. /package/{vendor → template}/.claude-plugin/settings.json +0 -0
  45. /package/{vendor → template}/.claude-plugin/skills/verify-agent-context/SKILL.md +0 -0
  46. /package/{vendor → template}/.codex/config.toml +0 -0
  47. /package/{vendor → template}/.codex/rules/default.rules +0 -0
  48. /package/{vendor → template}/.devcontainer/README.md +0 -0
  49. /package/{vendor → template}/.devcontainer/bun/devcontainer.json +0 -0
  50. /package/{vendor → template}/.devcontainer/node/devcontainer.json +0 -0
  51. /package/{vendor → template}/.devcontainer-plugin/bun/devcontainer.json +0 -0
  52. /package/{vendor → template}/.devcontainer-plugin/node/devcontainer.json +0 -0
  53. /package/{vendor → template}/.gitattributes +0 -0
  54. /package/{vendor → template}/.github/FUNDING.yml +0 -0
  55. /package/{vendor → template}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  56. /package/{vendor → template}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  57. /package/{vendor → template}/.github/commit-message-instructions.md +0 -0
  58. /package/{vendor → template}/.github/copilot-instructions.md +0 -0
  59. /package/{vendor → template}/.github/instructions/testing/testing.instructions.md +0 -0
  60. /package/{vendor → template}/.github/skills/verify-agent-context/SKILL.md +0 -0
  61. /package/{vendor → template}/.github/workflows/codeql.yml +0 -0
  62. /package/{vendor → template}/.github-plugin/FUNDING.yml +0 -0
  63. /package/{vendor → template}/.github-plugin/ISSUE_TEMPLATE/bug_report.md +0 -0
  64. /package/{vendor → template}/.github-plugin/ISSUE_TEMPLATE/feature_request.md +0 -0
  65. /package/{vendor → template}/.github-plugin/commit-message-instructions.md +0 -0
  66. /package/{vendor → template}/.github-plugin/copilot-instructions.md +0 -0
  67. /package/{vendor → template}/.github-plugin/instructions/chip-tests/chip-tests.instructions.md +0 -0
  68. /package/{vendor → template}/.github-plugin/instructions/matterbridge/matterbridge.instructions.md +0 -0
  69. /package/{vendor → template}/.github-plugin/instructions/plugin-frontend/plugin-frontend.instructions.md +0 -0
  70. /package/{vendor → template}/.github-plugin/instructions/testing/testing.instructions.md +0 -0
  71. /package/{vendor → template}/.github-plugin/skills/verify-agent-context/SKILL.md +0 -0
  72. /package/{vendor → template}/.github-plugin/workflows/chip-tests.yml +0 -0
  73. /package/{vendor → template}/.github-plugin/workflows/codeql.yml +0 -0
  74. /package/{vendor → template}/.vscode/extensions.json +0 -0
  75. /package/{vendor → template}/.vscode/tasks.json +0 -0
  76. /package/{vendor → template}/AGENTS.md +0 -0
  77. /package/{vendor → template}/AGENTS.plugin.md +0 -0
  78. /package/{vendor → template}/Branch protection.json +0 -0
  79. /package/{vendor → template}/CHANGELOG.md +0 -0
  80. /package/{vendor → template}/CLAUDE.md +0 -0
  81. /package/{vendor → template}/CODEOWNERS +0 -0
  82. /package/{vendor → template}/CODE_OF_CONDUCT.md +0 -0
  83. /package/{vendor → template}/CONTRIBUTING.md +0 -0
  84. /package/{vendor → template}/GEMINI.md +0 -0
  85. /package/{vendor → template}/LICENSE +0 -0
  86. /package/{vendor → template}/README.md +0 -0
  87. /package/{vendor → template}/STYLEGUIDE.md +0 -0
  88. /package/{vendor → template}/frontend/src/.oxfmtrc.json +0 -0
  89. /package/{vendor → template}/frontend/src/.oxlintrc.json +0 -0
  90. /package/{vendor → template}/frontend/src/index.html +0 -0
  91. /package/{vendor → template}/frontend/src/package.json +0 -0
  92. /package/{vendor → template}/frontend/src/src/App.tsx +0 -0
  93. /package/{vendor → template}/frontend/src/src/assets/matterbridge.svg +0 -0
  94. /package/{vendor → template}/frontend/src/src/main.tsx +0 -0
  95. /package/{vendor → template}/frontend/src/src/theme.ts +0 -0
  96. /package/{vendor → template}/frontend/src/tsconfig.json +0 -0
  97. /package/{vendor → template}/frontend/src/vite.config.ts +0 -0
  98. /package/{vendor → template}/matterbridge.svg +0 -0
  99. /package/{vendor → template}/prettier.config.js +0 -0
  100. /package/{vendor → template}/scripts/bun-bundle.mjs +0 -0
  101. /package/{vendor → template}/scripts/clean.mjs +0 -0
  102. /package/{vendor → template}/scripts/create-release.mjs +0 -0
  103. /package/{vendor → template}/scripts/deep-clean.mjs +0 -0
  104. /package/{vendor → template}/scripts/downloads.mjs +0 -0
  105. /package/{vendor → template}/scripts/esbuild.mjs +0 -0
  106. /package/{vendor → template}/scripts/git-status.mjs +0 -0
  107. /package/{vendor → template}/scripts/git-sync-dev.mjs +0 -0
  108. /package/{vendor → template}/scripts/prepublish-clean.mjs +0 -0
  109. /package/{vendor → template}/scripts/prune-releases.mjs +0 -0
  110. /package/{vendor → template}/scripts/prune-tags.mjs +0 -0
  111. /package/{vendor → template}/scripts/remove-workflows.mjs +0 -0
  112. /package/{vendor → template}/scripts/run-chip-tests.mjs +0 -0
  113. /package/{vendor → template}/scripts/version.mjs +0 -0
  114. /package/{vendor → template}/tsconfig.base.json +0 -0
  115. /package/{vendor → template}/tsconfig.build.json +0 -0
  116. /package/{vendor → template}/tsconfig.build.production.json +0 -0
  117. /package/{vendor → template}/tsconfig.build.production.library.json +0 -0
  118. /package/{vendor → template}/tsconfig.build.production.monorepo.json +0 -0
  119. /package/{vendor → template}/tsconfig.jest.json +0 -0
  120. /package/{vendor → template}/tsconfig.json +0 -0
  121. /package/{vendor → template}/tsconfig.vitest.json +0 -0
package/CHANGELOG.md CHANGED
@@ -23,6 +23,20 @@ If you like this project and find it useful, please consider giving it a star on
23
23
 
24
24
  <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="120"></a>
25
25
 
26
+ ## [1.0.4] - 2026-10-03
27
+
28
+ ### Changed
29
+
30
+ - [upgrade]: Replace the legacy `vite.config.ts` with `vitest.config.ts` and update test-runner detection.
31
+ - [template]: Rename the bundled vendor directory to template and update runtime paths, package files and exclusions.
32
+ - [upgrade]: Merge local `.oxfmtignore` and `.oxlintignore` patterns into the generated configurations.
33
+
34
+ ### Fixed
35
+
36
+ - [devcontainer]: Remove the `apps/frontend/node_modules` volume from the plugin `devcontainer.json` files (node and bun) when the plugin has no `apps/frontend/package.json`, so Docker no longer creates an empty `apps/frontend` in the workspace.
37
+
38
+ <a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/assets/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
39
+
26
40
  ## [1.0.3] - 2026-10-02
27
41
 
28
42
  ### Added
package/README.md CHANGED
@@ -75,7 +75,7 @@ Multiple flags can be combined. They are always executed in this fixed order reg
75
75
  | `--build --production` | Compiles for production. Prefers `tsconfig.build.production.json`, falls back to `tsconfig.build.json`, then `tsconfig.json`. |
76
76
  | `--typecheck` | Type-checks with `tsc` using the root `tsconfig.json` and `--noEmit`. |
77
77
  | `--watch` | Runs `tsc` in watch mode using the build tsconfig. |
78
- | `--test [verbose\|watch\|coverage...]` | Runs each eligible test runner: Jest requires `jest.config.js` and its local binary; Vitest requires `vite.config.ts` and its local binary. When both qualify, Jest runs first, then Vitest. The optional keywords enable verbose output, watch mode, and coverage. Jest receives `NODE_OPTIONS="--experimental-vm-modules --no-warnings"` automatically. |
78
+ | `--test [verbose\|watch\|coverage...]` | Runs each eligible test runner: Jest requires `jest.config.js` and its local binary; Vitest requires `vitest.config.ts` and its local binary. When both qualify, Jest runs first, then Vitest. The optional keywords enable verbose output, watch mode, and coverage. Jest receives `NODE_OPTIONS="--experimental-vm-modules --no-warnings"` automatically. |
79
79
  | `--format` | Formats with `oxfmt`, falling back to `prettier`. |
80
80
  | `--format --check` | Checks formatting instead of writing changes (combine `--format` with `--check`). |
81
81
  | `--lint` | Lints with `oxlint`, falling back to `eslint`. |
@@ -90,6 +90,12 @@ Multiple flags can be combined. They are always executed in this fixed order reg
90
90
  | `--version`, `-v` | Prints the mb-run version and exits without changing any file. Use `--set-version` to update the package version. |
91
91
  | `--help`, `-h` | Prints usage text. |
92
92
 
93
+ Bundled scaffolding and fallback lint/format configurations are shipped in the `template/` directory.
94
+
95
+ `--upgrade vitest` copies `vitest.config.ts` and removes the legacy `vite.config.ts`.
96
+
97
+ `--upgrade` inserts the contents of local `.oxfmtignore` and `.oxlintignore` files verbatim after the final shared ignore pattern in the corresponding configuration. These files should contain JSON array entries.
98
+
93
99
  ## Version tags
94
100
 
95
101
  The `--set-version` flag accepts the following prerelease tags:
package/dist/eslint.js CHANGED
@@ -10,7 +10,7 @@ export async function runEsLint(opts) {
10
10
  }
11
11
  else {
12
12
  const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
13
- configPath = path.join(selfDir, '..', 'vendor', 'eslint.config.js');
13
+ configPath = path.join(selfDir, '..', 'template', 'eslint.config.js');
14
14
  }
15
15
  await runBin('eslint', ['--config', configPath, '--cache', '--cache-location', '.cache/.eslintcache', ...(opts.fix ? ['--fix'] : []), '--max-warnings=0', '.'], {
16
16
  rootDir: opts.rootDir,
package/dist/oxfmt.js CHANGED
@@ -10,7 +10,7 @@ export async function runOxFormat(opts) {
10
10
  }
11
11
  else {
12
12
  const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
13
- configPath = path.join(selfDir, '..', 'vendor', '.oxfmtrc.root.json');
13
+ configPath = path.join(selfDir, '..', 'template', '.oxfmtrc.root.json');
14
14
  }
15
15
  await runBin('oxfmt', ['-c', configPath, opts.check ? '--check' : '--write'], {
16
16
  rootDir: opts.rootDir,
package/dist/oxlint.js CHANGED
@@ -10,7 +10,7 @@ export async function runOxLint(opts) {
10
10
  }
11
11
  else {
12
12
  const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
13
- configPath = path.join(selfDir, '..', 'vendor', '.oxlintrc.root.json');
13
+ configPath = path.join(selfDir, '..', 'template', '.oxlintrc.root.json');
14
14
  }
15
15
  await runBin('oxlint', ['-c', configPath, ...(opts.fix ? ['--fix'] : [])], {
16
16
  rootDir: opts.rootDir,
package/dist/prettier.js CHANGED
@@ -10,7 +10,7 @@ export async function runPrettier(opts) {
10
10
  }
11
11
  else {
12
12
  const selfDir = path.dirname(url.fileURLToPath(import.meta.url));
13
- configPath = path.join(selfDir, '..', 'vendor', 'prettier.config.js');
13
+ configPath = path.join(selfDir, '..', 'template', 'prettier.config.js');
14
14
  }
15
15
  await runBin('prettier', ['--config', configPath, '--log-level=silent', '--cache', '--cache-location', '.cache/.prettiercache', opts.check ? '--check' : '--write', '.'], {
16
16
  rootDir: opts.rootDir,
package/dist/test.js CHANGED
@@ -7,14 +7,14 @@ import { runVitest } from './vitest.js';
7
7
  export async function runTests(opts) {
8
8
  const [hasJestConfig, hasVitestConfig, hasJestBin, hasVitestBin] = await Promise.all([
9
9
  fileExists(path.join(opts.rootDir, 'jest.config.js')),
10
- fileExists(path.join(opts.rootDir, 'vite.config.ts')),
10
+ fileExists(path.join(opts.rootDir, 'vitest.config.ts')),
11
11
  binExists('jest', opts),
12
12
  binExists('vitest', opts),
13
13
  ]);
14
14
  const shouldRunJest = hasJestConfig && hasJestBin;
15
15
  const shouldRunVitest = hasVitestConfig && hasVitestBin;
16
16
  if (!shouldRunJest && !shouldRunVitest) {
17
- throw new ExitError(1, 'No test runner found: install Jest with jest.config.js or Vitest with vite.config.ts.');
17
+ throw new ExitError(1, 'No test runner found: install Jest with jest.config.js or Vitest with vitest.config.ts.');
18
18
  }
19
19
  if (shouldRunJest)
20
20
  await runJest(opts);
package/dist/upgrade.js CHANGED
@@ -9,7 +9,7 @@ import { fileExists } from './clean.js';
9
9
  import { getErrorMessage } from './error.js';
10
10
  import { isLibrary, isMonorepo, isPlugin, parsePackageJson } from './helpers.js';
11
11
  const configDirname = path.dirname(url.fileURLToPath(import.meta.url));
12
- const srcDir = path.join(configDirname, '..', 'vendor');
12
+ const srcDir = path.join(configDirname, '..', 'template');
13
13
  const commandFailures = [];
14
14
  let dstDir;
15
15
  export async function runUpgrade(opts) {
@@ -151,8 +151,13 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
151
151
  }
152
152
  if (!isWorkspace && automator?.skipDevContainer !== true) {
153
153
  removeDirSafe(path.join(dstDir, '.devcontainer'));
154
- if (isPlugin)
154
+ if (isPlugin) {
155
155
  copyRecursive('.devcontainer-plugin', '.devcontainer');
156
+ if (!existsSync(path.join(dstDir, 'apps', 'frontend', 'package.json'))) {
157
+ for (const runtime of ['node', 'bun'])
158
+ removeFrontendMount(path.join('.devcontainer', runtime, 'devcontainer.json'));
159
+ }
160
+ }
156
161
  else
157
162
  copyRecursive('.devcontainer', '.devcontainer');
158
163
  }
@@ -209,6 +214,13 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
209
214
  appendFileToFileIfExists('.gitlocalignore', '.gitignore');
210
215
  copyRecursive('.oxlintrc.root.json', '.oxlintrc.json');
211
216
  copyRecursive('.oxfmtrc.root.json', '.oxfmtrc.json');
217
+ for (const tool of ['oxlint', 'oxfmt']) {
218
+ const ignorePath = resolveDstPath(`.${tool}ignore`);
219
+ if (!existsSync(ignorePath))
220
+ continue;
221
+ const replacement = `"**/bun.lock",\n${readFileSync(ignorePath, 'utf8')}`;
222
+ fileReplace(`.${tool}rc.json`, '"**/bun.lock"', replacement.replaceAll('$', '$$$$'));
223
+ }
212
224
  unlinkSafe('.prettierignore');
213
225
  unlinkSafe('eslint.config.js');
214
226
  unlinkSafe('prettier.config.js');
@@ -224,7 +236,8 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
224
236
  unlinkSafe('jest.config.js');
225
237
  }
226
238
  if (opts.enableVitest) {
227
- copyRecursive('vite.config.ts', 'vite.config.ts');
239
+ copyRecursive('vitest.config.ts', 'vitest.config.ts');
240
+ unlinkSafe('vite.config.ts');
228
241
  mkDirSafe(path.join(dstDir, 'vitest'));
229
242
  }
230
243
  else {
@@ -233,6 +246,8 @@ export async function runPackageJsonUpgrade(opts, pkgPath, pkgJson, isMonorepo =
233
246
  unlinkSafe('tsconfig.vitest.json');
234
247
  if (!isMonorepo)
235
248
  unlinkSafe('vite.config.ts');
249
+ if (!isMonorepo)
250
+ unlinkSafe('vitest.config.ts');
236
251
  }
237
252
  if (opts.enableBuntest) {
238
253
  copyRecursive('bunfig.toml', 'bunfig.toml');
@@ -665,6 +680,18 @@ export function unlinkSafe(filePath) {
665
680
  log(`${green('Deleted:')} ${path.relative(process.cwd(), resolvedPath)}`);
666
681
  return true;
667
682
  }
683
+ export function removeFrontendMount(filePath) {
684
+ const resolvedPath = resolveDstPath(filePath);
685
+ if (!existsSync(resolvedPath))
686
+ return false;
687
+ const lines = readFileSync(resolvedPath, 'utf8').split('\n');
688
+ const kept = lines.filter((line) => !(line.trimStart().startsWith('"source=') && line.includes('/apps/frontend/node_modules,')));
689
+ if (kept.length === lines.length)
690
+ return false;
691
+ writeFileSync(resolvedPath, kept.join('\n'));
692
+ log(`${green('Removed:')} the apps/frontend/node_modules volume from ${path.relative(process.cwd(), resolvedPath)}`);
693
+ return true;
694
+ }
668
695
  export function removeDirSafe(dirPath) {
669
696
  const resolvedPath = resolveDstPath(dirPath);
670
697
  if (!existsSync(resolvedPath))
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "mb-run",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "mb-run",
9
- "version": "1.0.3",
9
+ "version": "1.0.4",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "cross-spawn": "7.0.6",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mb-run",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Matterbridge command line executor",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "Apache-2.0",
@@ -61,7 +61,7 @@
61
61
  "files": [
62
62
  "bin",
63
63
  "dist",
64
- "vendor",
64
+ "template",
65
65
  "npm-shrinkwrap.json",
66
66
  "CHANGELOG.md"
67
67
  ],
@@ -7,7 +7,7 @@ description: 'Testing standards for unit tests in the project v.1.0.5'
7
7
  ## 1. Test Framework
8
8
 
9
9
  - Jest is available in the repository when the file `jest.config.js` exists.
10
- - Vitest is available in the repository when the file `vite.config.ts` exists.
10
+ - Vitest is available in the repository when the file `vitest.config.ts` exists.
11
11
  - Bun test is available in the repository when the file `bunfig.toml` exists.
12
12
  - Jest tests live in `test` folders. Follow the existing convention in the repository for test file placement.
13
13
  - Vitest tests live in `vitest` folders. Follow the existing convention in the repository for test file placement.
@@ -7,7 +7,7 @@ description: 'Testing standards for unit tests in the project v.1.0.5'
7
7
  ## 1. Test Framework
8
8
 
9
9
  - Jest is available in the repository when the file `jest.config.js` exists.
10
- - Vitest is available in the repository when the file `vite.config.ts` exists.
10
+ - Vitest is available in the repository when the file `vitest.config.ts` exists.
11
11
  - Bun test is available in the repository when the file `bunfig.toml` exists.
12
12
  - Jest tests live in `test` folders. Follow the existing convention in the repository for test file placement.
13
13
  - Vitest tests live in `vitest` folders. Follow the existing convention in the repository for test file placement.
@@ -17,7 +17,7 @@ Node and Bun configurations for Matterbridge plugins, aligned with Matterbridge
17
17
  - Creation prepares ownership and installs/builds Matterbridge from the dev branch into the shared runtime-specific /workspaces/matterbridge volume, then links it globally.
18
18
  - Creation also installs plugin dependencies, links Matterbridge, builds the plugin and its optional apps/frontend, registers the plugin with Matterbridge, and checks for outdated packages.
19
19
  - Each start installs plugin dependencies, links Matterbridge, and builds the plugin and its optional apps/frontend.
20
- - Frontend dependencies and Matterbridge runtime state also use named volumes. Port 8283 exposes the Matterbridge frontend over IPv4 and IPv6.
20
+ - Matterbridge runtime state also uses named volumes, and so do the frontend dependencies when the plugin has an apps/frontend (mb-run adds the apps/frontend/node_modules volume only then, so no empty apps/frontend is created otherwise). Port 8283 exposes the Matterbridge frontend over IPv4 and IPv6.
21
21
 
22
22
  ## Docker VMM host setup
23
23
 
@@ -56,7 +56,7 @@ jobs:
56
56
  shell: bash
57
57
  run: |
58
58
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
59
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
59
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
60
60
 
61
61
  - name: Run Jest tests
62
62
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -46,7 +46,7 @@ jobs:
46
46
  shell: bash
47
47
  run: |
48
48
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
49
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
49
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
50
50
 
51
51
  - name: Run Jest tests
52
52
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -60,7 +60,7 @@ jobs:
60
60
  shell: bash
61
61
  run: |
62
62
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
63
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
63
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
64
64
 
65
65
  - name: Run Jest tests
66
66
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -147,7 +147,7 @@ jobs:
147
147
  shell: bash
148
148
  run: |
149
149
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
150
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
150
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
151
151
 
152
152
  - name: Run Jest tests
153
153
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -112,7 +112,7 @@ jobs:
112
112
  shell: bash
113
113
  run: |
114
114
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
115
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
115
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
116
116
 
117
117
  - name: Run Jest tests
118
118
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -99,7 +99,7 @@ jobs:
99
99
  shell: bash
100
100
  run: |
101
101
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
102
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
102
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
103
103
 
104
104
  - name: Run Jest tests
105
105
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -112,7 +112,7 @@ jobs:
112
112
  shell: bash
113
113
  run: |
114
114
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
115
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
115
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
116
116
 
117
117
  - name: Run Jest tests
118
118
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -263,7 +263,7 @@ jobs:
263
263
  shell: bash
264
264
  run: |
265
265
  echo "has_jest=$(test -f jest.config.js && echo true || echo false)" >> $GITHUB_OUTPUT
266
- echo "has_vitest=$(test -f vite.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
266
+ echo "has_vitest=$(test -f vitest.config.ts && echo true || echo false)" >> $GITHUB_OUTPUT
267
267
 
268
268
  - name: Run Jest tests
269
269
  if: steps.check_configs.outputs.has_jest == 'true'
@@ -1,14 +1,10 @@
1
- # .gitignore 1.0.4
1
+ # .gitignore 1.0.5
2
2
 
3
3
  # This file specifies intentionally untracked directories and files that Git should ignore.
4
4
 
5
5
  # Specific directories that should be ignored
6
6
  .cache/
7
- .cottontail-tmp/
8
- .hutch/
9
- artifacts/
10
7
  build/
11
- chip/
12
8
  coverage/
13
9
  dist/
14
10
  node_modules/
@@ -1,28 +1,23 @@
1
- // .oxfmtrc.json 1.0.8
1
+ // .oxfmtrc.json 1.1.0
2
2
 
3
3
  // This Oxfmt configuration (shared between all matterbridge packages) is designed for a TypeScript project using ESM modules.
4
+ // Oxfmt respect .gitignore.
5
+ // Package specific directories and files that should be ignored are merged from the .oxfmtignore files in each package.
4
6
  {
5
7
  "$schema": "./node_modules/oxfmt/configuration_schema.json",
6
8
  "ignorePatterns": [
7
9
  "**/.cache/**",
8
- "**/.cottontail-tmp/**",
9
10
  "**/.git/**",
10
- "**/.hutch/**",
11
11
  "apps/**",
12
- "**/artifacts/**",
13
12
  "**/build/**",
14
- "**/chip/**",
15
13
  "**/coverage/**",
16
- "docs/**",
17
14
  "**/dist/**",
18
- "**/temp/**",
19
- "**/tmp/**",
20
15
  "**/node_modules/**",
21
16
  "**/out/**",
22
17
  "**/screenshots/**",
23
- "**/xmls/**",
24
18
  "**/scripts/**",
25
- "vendor/**",
19
+ "**/temp/**",
20
+ "**/tmp/**",
26
21
  "**/package-lock.json",
27
22
  "**/bun.lock"
28
23
  ],
@@ -1,28 +1,23 @@
1
- // .oxlintrc.json 1.0.20
1
+ // .oxlintrc.json 1.1.0
2
2
 
3
3
  // This Oxlint configuration (shared between all matterbridge packages) is designed for a TypeScript project using ESM modules.
4
+ // Oxlint respect .gitignore.
5
+ // Package specific directories and files that should be ignored are merged from the .oxlintignore files in each package.
4
6
  {
5
7
  "$schema": "./node_modules/oxlint/configuration_schema.json",
6
8
  "ignorePatterns": [
7
9
  "**/.cache/**",
8
- "**/.cottontail-tmp/**",
9
10
  "**/.git/**",
10
- "**/.hutch/**",
11
11
  "apps/**",
12
- "**/artifacts/**",
13
12
  "**/build/**",
14
- "**/chip/**",
15
13
  "**/coverage/**",
16
- "docs/**",
17
14
  "**/dist/**",
18
- "**/temp/**",
19
- "**/tmp/**",
20
15
  "**/node_modules/**",
21
16
  "**/out/**",
22
17
  "**/screenshots/**",
23
- "**/xmls/**",
24
18
  "**/scripts/**",
25
- "vendor/**",
19
+ "**/temp/**",
20
+ "**/tmp/**",
26
21
  "**/package-lock.json",
27
22
  "**/bun.lock"
28
23
  ],
@@ -13,7 +13,7 @@ temp/
13
13
  jest/
14
14
  node_modules/
15
15
  screenshots/
16
- vendor/
16
+ template/
17
17
 
18
18
  # Ignore specific files
19
19
  package-lock.json
@@ -1,4 +1,4 @@
1
- // VS Code settings v.1.0.14
1
+ // VS Code settings v.1.0.15
2
2
  {
3
3
  "eslint.enable": false,
4
4
  "prettier.enable": false,
@@ -20,6 +20,7 @@
20
20
  "source.format.oxc": "always",
21
21
  "source.fixAll.oxc": "always"
22
22
  },
23
+ "vitest.configSearchPatternExclude": "{**/node_modules/**,**/template/**}",
23
24
  "diffEditor.ignoreTrimWhitespace": false,
24
25
  "files.eol": "\n",
25
26
  "files.insertFinalNewline": true,
@@ -18,7 +18,7 @@ pathIgnorePatterns = [
18
18
  '**/src/',
19
19
  '**/temp/',
20
20
  '**/test/',
21
- '**/vendor/',
21
+ '**/template/',
22
22
  '**/vitest/',
23
23
  ]
24
24
 
@@ -34,7 +34,7 @@ coveragePathIgnorePatterns = [
34
34
  '**/scripts/',
35
35
  '**/src/mock/',
36
36
  '**/temp/',
37
- '**/vendor/',
37
+ '**/template/',
38
38
  '**/vitest/**',
39
39
  '**/src/**/*.d.ts',
40
40
  '**/src/**/*.{spec,test}.{ts,mts,cts}',
@@ -27,7 +27,7 @@ const configDirname = path.dirname(url.fileURLToPath(import.meta.url));
27
27
  export default defineConfig([
28
28
  {
29
29
  name: 'Global Ignores',
30
- ignores: ['**/.cache', '**/apps', '**/build', '**/chip', '**/coverage', '**/dist', '**/jest', '**/mock', '**/node_modules', '**/screenshots', '**/temp', '**/vendor'],
30
+ ignores: ['**/.cache', '**/apps', '**/build', '**/chip', '**/coverage', '**/dist', '**/jest', '**/mock', '**/node_modules', '**/screenshots', '**/temp', '**/template'],
31
31
  },
32
32
  {
33
33
  name: 'JavaScript & TypeScript Source Files',
@@ -40,7 +40,7 @@ const jestConfig = {
40
40
  '/scripts/',
41
41
  '/src/mock/',
42
42
  '/temp/',
43
- '/vendor/',
43
+ '/template/',
44
44
  '/vitest/',
45
45
  ],
46
46
  collectCoverageFrom: ['**/src/**/*.{ts,mts,cts}'],
@@ -59,7 +59,7 @@ const jestConfig = {
59
59
  '/scripts/',
60
60
  '/src/mock/',
61
61
  '/temp/',
62
- '/vendor/',
62
+ '/template/',
63
63
  '/vitest/',
64
64
  '/src/.*\\.d\\.ts$',
65
65
  ],
@@ -1,4 +1,4 @@
1
- // vite.config.ts 2.0.6
1
+ // vitest.config.ts 2.0.8
2
2
 
3
3
  // This Vitest configuration is designed for a TypeScript project.
4
4
 
@@ -17,11 +17,13 @@ export default defineConfig({
17
17
  '**/coverage/',
18
18
  '**/dist/',
19
19
  '**/node_modules/',
20
+ '**/out/',
20
21
  '**/screenshots/',
21
22
  '**/scripts/',
22
23
  '**/src/mock/',
23
24
  '**/temp/',
24
- '**/vendor/',
25
+ '**/tmp/',
26
+ '**/template/',
25
27
  ],
26
28
  globals: true,
27
29
  clearMocks: false,
@@ -41,13 +43,15 @@ export default defineConfig({
41
43
  '**/coverage/',
42
44
  '**/dist/',
43
45
  '**/node_modules/',
46
+ '**/out/',
44
47
  '**/screenshots/',
45
48
  '**/scripts/',
46
49
  '**/src/mock/',
50
+ '**/src/**/*.d.ts',
47
51
  '**/temp/',
48
- '**/vendor/',
52
+ '**/tmp/',
53
+ '**/template/',
49
54
  '**/vitest/**',
50
- '**/src/**/*.d.ts',
51
55
  ],
52
56
  },
53
57
  },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes