@stacksjs/buddy 0.70.246 → 0.70.248

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.
@@ -89,6 +89,19 @@ export function extension(buddy) {
89
89
  if (result.publish)
90
90
  log.success(`Submitted Chrome Web Store item ${result.publish.itemId}: ${result.publish.state}`);
91
91
  });
92
+ buddy.command("extension:firefox:previews", "Sync the Firefox listing screenshots declared in config/extension.ts").option("--api-key <issuer>", "AMO JWT issuer").option("--api-secret <secret>", "AMO JWT secret").option("--dry-run", "Report what would change without touching the listing").action(async (options) => {
93
+ const { syncFirefoxPreviews } = await import("@stacksjs/browser-extension"), { config } = await load(), result = await syncFirefoxPreviews(config, {
94
+ issuer: options.apiKey,
95
+ secret: options.apiSecret,
96
+ dryRun: options.dryRun
97
+ });
98
+ if (result.unchanged)
99
+ log.info("Firefox listing screenshots already match config/extension.ts");
100
+ else if (options.dryRun)
101
+ log.info(`Would replace ${result.removed.length} Firefox listing screenshot(s)`);
102
+ else
103
+ log.success(`Synced ${result.uploaded.length} Firefox listing screenshot(s), removed ${result.removed.length}`);
104
+ });
92
105
  buddy.command("extension:firefox:publish", "Build and submit the Firefox extension through Mozilla Add-ons").option("--version <version>", "Override the extension version (defaults to package.json)").option("--api-key <issuer>", "AMO JWT issuer").option("--api-secret <secret>", "AMO JWT secret").option("--source-code <path>", "Human-readable source archive for AMO review").option("--approval-timeout <milliseconds>", "How long to wait for human approval (default 0)").action(async (options) => {
93
106
  const { publishFirefoxExtension } = await import("@stacksjs/browser-extension"), { config, version } = await load(), result = await publishFirefoxExtension(config, {
94
107
  version: options.version ?? version,
@@ -98,6 +111,16 @@ export function extension(buddy) {
98
111
  approvalTimeout: options.approvalTimeout === void 0 ? void 0 : Number(options.approvalTimeout)
99
112
  });
100
113
  log.success(`Submitted Firefox extension (${result.channel}) \u2192 ${result.artifactsDir}`);
114
+ if (config.firefoxAddons?.screenshots?.length)
115
+ try {
116
+ const { syncFirefoxPreviews } = await import("@stacksjs/browser-extension"), previews = await syncFirefoxPreviews(config, { issuer: options.apiKey, secret: options.apiSecret });
117
+ if (previews.unchanged)
118
+ log.info("Firefox listing screenshots already match");
119
+ else
120
+ log.success(`Synced ${previews.uploaded.length} Firefox listing screenshot(s), removed ${previews.removed.length}`);
121
+ } catch (error) {
122
+ log.warn(`[extension:firefox:publish] listing screenshots left as they were: ${error.message}`);
123
+ }
101
124
  if (result.artifacts.length)
102
125
  log.info(`new artifacts: ${result.artifacts.join(", ")}`);
103
126
  });
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/buddy",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.70.246",
5
+ "version": "0.70.248",
6
6
  "description": "Meet Buddy. The Stacks runtime.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -88,53 +88,53 @@
88
88
  "prepublishOnly": "bun run build"
89
89
  },
90
90
  "dependencies": {
91
- "@stacksjs/actions": "^0.70.246",
92
- "@stacksjs/ai": "^0.70.246",
93
- "@stacksjs/alias": "^0.70.246",
94
- "@stacksjs/arrays": "^0.70.246",
95
- "@stacksjs/auth": "^0.70.246",
96
- "@stacksjs/build": "^0.70.246",
97
- "@stacksjs/cache": "^0.70.246",
98
- "@stacksjs/cli": "^0.70.246",
91
+ "@stacksjs/actions": "^0.70.248",
92
+ "@stacksjs/ai": "^0.70.248",
93
+ "@stacksjs/alias": "^0.70.248",
94
+ "@stacksjs/arrays": "^0.70.248",
95
+ "@stacksjs/auth": "^0.70.248",
96
+ "@stacksjs/build": "^0.70.248",
97
+ "@stacksjs/cache": "^0.70.248",
98
+ "@stacksjs/cli": "^0.70.248",
99
99
  "@stacksjs/clapp": "^0.2.12",
100
- "@stacksjs/cloud": "^0.70.246",
101
- "@stacksjs/collections": "^0.70.246",
102
- "@stacksjs/config": "^0.70.246",
103
- "@stacksjs/database": "^0.70.246",
104
- "@stacksjs/desktop-build": "^0.70.246",
105
- "@stacksjs/dns": "^0.70.246",
106
- "@stacksjs/email": "^0.70.246",
107
- "@stacksjs/enums": "^0.70.246",
108
- "@stacksjs/error-handling": "^0.70.246",
109
- "@stacksjs/events": "^0.70.246",
110
- "@stacksjs/git": "^0.70.246",
100
+ "@stacksjs/cloud": "^0.70.248",
101
+ "@stacksjs/collections": "^0.70.248",
102
+ "@stacksjs/config": "^0.70.248",
103
+ "@stacksjs/database": "^0.70.248",
104
+ "@stacksjs/desktop-build": "^0.70.248",
105
+ "@stacksjs/dns": "^0.70.248",
106
+ "@stacksjs/email": "^0.70.248",
107
+ "@stacksjs/enums": "^0.70.248",
108
+ "@stacksjs/error-handling": "^0.70.248",
109
+ "@stacksjs/events": "^0.70.248",
110
+ "@stacksjs/git": "^0.70.248",
111
111
  "@stacksjs/gitit": "^0.2.5",
112
- "@stacksjs/health": "^0.70.246",
112
+ "@stacksjs/health": "^0.70.248",
113
113
  "@stacksjs/dnsx": "^0.2.3",
114
114
  "@stacksjs/httx": "^0.1.10",
115
- "@stacksjs/image": "^0.70.246",
116
- "@stacksjs/lint": "^0.70.246",
117
- "@stacksjs/logging": "^0.70.246",
118
- "@stacksjs/notifications": "^0.70.246",
119
- "@stacksjs/objects": "^0.70.246",
120
- "@stacksjs/orm": "^0.70.246",
121
- "@stacksjs/path": "^0.70.246",
122
- "@stacksjs/skills": "^0.70.246",
123
- "@stacksjs/payments": "^0.70.246",
124
- "@stacksjs/realtime": "^0.70.246",
125
- "@stacksjs/router": "^0.70.246",
115
+ "@stacksjs/image": "^0.70.248",
116
+ "@stacksjs/lint": "^0.70.248",
117
+ "@stacksjs/logging": "^0.70.248",
118
+ "@stacksjs/notifications": "^0.70.248",
119
+ "@stacksjs/objects": "^0.70.248",
120
+ "@stacksjs/orm": "^0.70.248",
121
+ "@stacksjs/path": "^0.70.248",
122
+ "@stacksjs/skills": "^0.70.248",
123
+ "@stacksjs/payments": "^0.70.248",
124
+ "@stacksjs/realtime": "^0.70.248",
125
+ "@stacksjs/router": "^0.70.248",
126
126
  "@stacksjs/rpx": "^0.11.42",
127
- "@stacksjs/search-engine": "^0.70.246",
128
- "@stacksjs/security": "^0.70.246",
129
- "@stacksjs/server": "^0.70.246",
130
- "@stacksjs/storage": "^0.70.246",
131
- "@stacksjs/strings": "^0.70.246",
132
- "@stacksjs/testing": "^0.70.246",
133
- "@stacksjs/tunnel": "^0.70.246",
134
- "@stacksjs/types": "^0.70.246",
135
- "@stacksjs/ui": "^0.70.246",
136
- "@stacksjs/utils": "^0.70.246",
137
- "@stacksjs/validation": "^0.70.246",
127
+ "@stacksjs/search-engine": "^0.70.248",
128
+ "@stacksjs/security": "^0.70.248",
129
+ "@stacksjs/server": "^0.70.248",
130
+ "@stacksjs/storage": "^0.70.248",
131
+ "@stacksjs/strings": "^0.70.248",
132
+ "@stacksjs/testing": "^0.70.248",
133
+ "@stacksjs/tunnel": "^0.70.248",
134
+ "@stacksjs/types": "^0.70.248",
135
+ "@stacksjs/ui": "^0.70.248",
136
+ "@stacksjs/utils": "^0.70.248",
137
+ "@stacksjs/validation": "^0.70.248",
138
138
  "@stacksjs/ts-cloud": "^0.7.92",
139
139
  "ajv": "^8.20.0",
140
140
  "ajv-formats": "^3.0.1",