@gxp-dev/tools 2.0.63 → 2.0.65
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 +32 -31
- package/bin/gx-devtools.js +74 -54
- package/bin/lib/cli.js +23 -21
- package/bin/lib/commands/add-dependency.js +366 -325
- package/bin/lib/commands/assets.js +137 -139
- package/bin/lib/commands/build.js +169 -174
- package/bin/lib/commands/datastore.js +181 -183
- package/bin/lib/commands/dev.js +127 -131
- package/bin/lib/commands/extensions.js +147 -149
- package/bin/lib/commands/extract-config.js +73 -67
- package/bin/lib/commands/index.js +12 -12
- package/bin/lib/commands/init.js +342 -240
- package/bin/lib/commands/publish.js +69 -75
- package/bin/lib/commands/socket.js +69 -69
- package/bin/lib/commands/ssl.js +14 -14
- package/bin/lib/constants.js +10 -24
- package/bin/lib/tui/App.tsx +761 -705
- package/bin/lib/tui/components/AIPanel.tsx +191 -171
- package/bin/lib/tui/components/CommandInput.tsx +394 -343
- package/bin/lib/tui/components/GeminiPanel.tsx +175 -151
- package/bin/lib/tui/components/Header.tsx +23 -21
- package/bin/lib/tui/components/LogPanel.tsx +244 -220
- package/bin/lib/tui/components/TabBar.tsx +50 -48
- package/bin/lib/tui/components/WelcomeScreen.tsx +126 -71
- package/bin/lib/tui/index.tsx +37 -39
- package/bin/lib/tui/services/AIService.ts +518 -462
- package/bin/lib/tui/services/ExtensionService.ts +140 -129
- package/bin/lib/tui/services/GeminiService.ts +367 -337
- package/bin/lib/tui/services/ServiceManager.ts +344 -322
- package/bin/lib/tui/services/SocketService.ts +168 -168
- package/bin/lib/tui/services/ViteService.ts +88 -88
- package/bin/lib/tui/services/index.ts +47 -22
- package/bin/lib/utils/ai-scaffold.js +291 -280
- package/bin/lib/utils/extract-config.js +157 -140
- package/bin/lib/utils/files.js +82 -86
- package/bin/lib/utils/index.js +7 -7
- package/bin/lib/utils/paths.js +34 -34
- package/bin/lib/utils/prompts.js +194 -169
- package/bin/lib/utils/ssl.js +79 -81
- package/browser-extensions/README.md +0 -1
- package/browser-extensions/chrome/background.js +244 -237
- package/browser-extensions/chrome/content.js +32 -29
- package/browser-extensions/chrome/devtools.html +7 -7
- package/browser-extensions/chrome/devtools.js +19 -19
- package/browser-extensions/chrome/inspector.js +802 -767
- package/browser-extensions/chrome/manifest.json +71 -63
- package/browser-extensions/chrome/panel.html +674 -636
- package/browser-extensions/chrome/panel.js +722 -712
- package/browser-extensions/chrome/popup.html +586 -543
- package/browser-extensions/chrome/popup.js +282 -244
- package/browser-extensions/chrome/rules.json +1 -1
- package/browser-extensions/chrome/test-chrome.html +216 -136
- package/browser-extensions/chrome/test-mixed-content.html +284 -189
- package/browser-extensions/chrome/test-uri-pattern.html +221 -198
- package/browser-extensions/firefox/README.md +9 -6
- package/browser-extensions/firefox/background.js +221 -218
- package/browser-extensions/firefox/content.js +55 -52
- package/browser-extensions/firefox/debug-errors.html +386 -228
- package/browser-extensions/firefox/debug-https.html +153 -105
- package/browser-extensions/firefox/devtools.html +7 -7
- package/browser-extensions/firefox/devtools.js +23 -20
- package/browser-extensions/firefox/inspector.js +802 -767
- package/browser-extensions/firefox/manifest.json +68 -68
- package/browser-extensions/firefox/panel.html +674 -636
- package/browser-extensions/firefox/panel.js +722 -712
- package/browser-extensions/firefox/popup.html +572 -535
- package/browser-extensions/firefox/popup.js +281 -236
- package/browser-extensions/firefox/test-gramercy.html +170 -125
- package/browser-extensions/firefox/test-imports.html +59 -55
- package/browser-extensions/firefox/test-masking.html +231 -140
- package/browser-extensions/firefox/test-uri-pattern.html +221 -198
- package/dist/tui/App.d.ts +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +154 -150
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/AIPanel.d.ts.map +1 -1
- package/dist/tui/components/AIPanel.js +42 -35
- package/dist/tui/components/AIPanel.js.map +1 -1
- package/dist/tui/components/CommandInput.d.ts +1 -1
- package/dist/tui/components/CommandInput.d.ts.map +1 -1
- package/dist/tui/components/CommandInput.js +92 -62
- package/dist/tui/components/CommandInput.js.map +1 -1
- package/dist/tui/components/GeminiPanel.d.ts.map +1 -1
- package/dist/tui/components/GeminiPanel.js +37 -30
- package/dist/tui/components/GeminiPanel.js.map +1 -1
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +1 -1
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/LogPanel.d.ts +1 -1
- package/dist/tui/components/LogPanel.d.ts.map +1 -1
- package/dist/tui/components/LogPanel.js +26 -24
- package/dist/tui/components/LogPanel.js.map +1 -1
- package/dist/tui/components/TabBar.d.ts +2 -2
- package/dist/tui/components/TabBar.d.ts.map +1 -1
- package/dist/tui/components/TabBar.js +11 -11
- package/dist/tui/components/TabBar.js.map +1 -1
- package/dist/tui/components/WelcomeScreen.d.ts.map +1 -1
- package/dist/tui/components/WelcomeScreen.js +6 -6
- package/dist/tui/components/WelcomeScreen.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +8 -8
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/services/AIService.d.ts +2 -2
- package/dist/tui/services/AIService.d.ts.map +1 -1
- package/dist/tui/services/AIService.js +165 -125
- package/dist/tui/services/AIService.js.map +1 -1
- package/dist/tui/services/ExtensionService.d.ts +1 -1
- package/dist/tui/services/ExtensionService.d.ts.map +1 -1
- package/dist/tui/services/ExtensionService.js +33 -26
- package/dist/tui/services/ExtensionService.js.map +1 -1
- package/dist/tui/services/GeminiService.d.ts +1 -1
- package/dist/tui/services/GeminiService.d.ts.map +1 -1
- package/dist/tui/services/GeminiService.js +87 -76
- package/dist/tui/services/GeminiService.js.map +1 -1
- package/dist/tui/services/ServiceManager.d.ts +3 -3
- package/dist/tui/services/ServiceManager.d.ts.map +1 -1
- package/dist/tui/services/ServiceManager.js +72 -58
- package/dist/tui/services/ServiceManager.js.map +1 -1
- package/dist/tui/services/SocketService.d.ts.map +1 -1
- package/dist/tui/services/SocketService.js +32 -32
- package/dist/tui/services/SocketService.js.map +1 -1
- package/dist/tui/services/ViteService.d.ts.map +1 -1
- package/dist/tui/services/ViteService.js +26 -28
- package/dist/tui/services/ViteService.js.map +1 -1
- package/dist/tui/services/index.d.ts +6 -6
- package/dist/tui/services/index.d.ts.map +1 -1
- package/dist/tui/services/index.js +6 -6
- package/dist/tui/services/index.js.map +1 -1
- package/mcp/gxp-api-server.js +83 -81
- package/package.json +109 -93
- package/runtime/PortalContainer.vue +258 -234
- package/runtime/dev-tools/DevToolsModal.vue +153 -155
- package/runtime/dev-tools/LayoutSwitcher.vue +144 -140
- package/runtime/dev-tools/MockDataEditor.vue +456 -433
- package/runtime/dev-tools/SocketSimulator.vue +379 -371
- package/runtime/dev-tools/StoreInspector.vue +517 -455
- package/runtime/dev-tools/index.js +5 -5
- package/runtime/fallback-layouts/PrivateLayout.vue +2 -2
- package/runtime/fallback-layouts/PublicLayout.vue +2 -2
- package/runtime/fallback-layouts/SystemLayout.vue +2 -2
- package/runtime/gxpStringsPlugin.js +159 -134
- package/runtime/index.html +17 -19
- package/runtime/main.js +24 -22
- package/runtime/mock-api/auth-middleware.js +15 -15
- package/runtime/mock-api/image-generator.js +46 -46
- package/runtime/mock-api/index.js +55 -55
- package/runtime/mock-api/response-generator.js +116 -105
- package/runtime/mock-api/route-generator.js +107 -84
- package/runtime/mock-api/socket-triggers.js +94 -93
- package/runtime/mock-api/spec-loader.js +79 -80
- package/runtime/package.json +3 -0
- package/runtime/server.js +68 -68
- package/runtime/stores/gxpPortalConfigStore.js +204 -186
- package/runtime/stores/index.js +2 -2
- package/runtime/vite-inspector-plugin.js +858 -707
- package/runtime/vite-source-tracker-plugin.js +132 -113
- package/runtime/vite.config.js +191 -139
- package/scripts/launch-chrome.js +41 -41
- package/scripts/pack-chrome.js +38 -39
- package/socket-events/AiSessionMessageCreated.json +17 -17
- package/socket-events/SocialStreamPostCreated.json +23 -23
- package/socket-events/SocialStreamPostVariantCompleted.json +22 -22
- package/template/.claude/agents/gxp-developer.md +100 -99
- package/template/.claude/settings.json +7 -7
- package/template/AGENTS.md +30 -23
- package/template/GEMINI.md +20 -20
- package/template/README.md +70 -53
- package/template/app-manifest.json +2 -4
- package/template/configuration.json +10 -10
- package/template/default-styling.css +1 -1
- package/template/index.html +18 -20
- package/template/main.js +24 -22
- package/template/src/DemoPage.vue +415 -362
- package/template/src/Plugin.vue +76 -85
- package/template/src/stores/index.js +3 -3
- package/template/src/stores/test-data.json +164 -172
- package/template/theme-layouts/AdditionalStyling.css +50 -50
- package/template/theme-layouts/PrivateLayout.vue +8 -12
- package/template/theme-layouts/PublicLayout.vue +8 -12
- package/template/theme-layouts/SystemLayout.vue +8 -12
- package/template/vite.extend.js +45 -0
- package/template/vite.config.js +0 -409
|
@@ -4,211 +4,209 @@
|
|
|
4
4
|
* Manages browser extensions for Firefox and Chrome.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
const path = require("path")
|
|
8
|
-
const fs = require("fs")
|
|
9
|
-
const shell = require("shelljs")
|
|
10
|
-
const { findProjectRoot, resolveGxPaths } = require("../utils")
|
|
7
|
+
const path = require("path")
|
|
8
|
+
const fs = require("fs")
|
|
9
|
+
const shell = require("shelljs")
|
|
10
|
+
const { findProjectRoot, resolveGxPaths } = require("../utils")
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Launch Firefox with extension command
|
|
14
14
|
*/
|
|
15
15
|
function extensionFirefoxCommand() {
|
|
16
|
-
const projectPath = findProjectRoot()
|
|
17
|
-
let extensionPath = path.join(projectPath, "browser-extensions", "firefox")
|
|
16
|
+
const projectPath = findProjectRoot()
|
|
17
|
+
let extensionPath = path.join(projectPath, "browser-extensions", "firefox")
|
|
18
18
|
|
|
19
19
|
// If local extension doesn't exist, try to use the toolkit's own extensions
|
|
20
20
|
if (!fs.existsSync(extensionPath)) {
|
|
21
|
-
const paths = resolveGxPaths()
|
|
21
|
+
const paths = resolveGxPaths()
|
|
22
22
|
const toolkitExtensionPath = path.join(
|
|
23
23
|
paths.packageRoot,
|
|
24
24
|
"browser-extensions",
|
|
25
|
-
"firefox"
|
|
26
|
-
)
|
|
25
|
+
"firefox",
|
|
26
|
+
)
|
|
27
27
|
|
|
28
28
|
if (fs.existsSync(toolkitExtensionPath)) {
|
|
29
|
-
console.log("🔍 Using GxToolkit's built-in Firefox extension")
|
|
30
|
-
extensionPath = toolkitExtensionPath
|
|
29
|
+
console.log("🔍 Using GxToolkit's built-in Firefox extension")
|
|
30
|
+
extensionPath = toolkitExtensionPath
|
|
31
31
|
} else {
|
|
32
|
-
console.error("❌ Firefox extension directory not found")
|
|
32
|
+
console.error("❌ Firefox extension directory not found")
|
|
33
33
|
console.log(
|
|
34
34
|
"📁 Looking for extensions in:",
|
|
35
|
-
path.join(projectPath, "browser-extensions", "firefox")
|
|
36
|
-
)
|
|
35
|
+
path.join(projectPath, "browser-extensions", "firefox"),
|
|
36
|
+
)
|
|
37
37
|
console.log(
|
|
38
|
-
"💡 Run 'gxdev init' to create a project with browser extensions"
|
|
39
|
-
)
|
|
40
|
-
process.exit(1)
|
|
38
|
+
"💡 Run 'gxdev init' to create a project with browser extensions",
|
|
39
|
+
)
|
|
40
|
+
process.exit(1)
|
|
41
41
|
}
|
|
42
42
|
} else {
|
|
43
|
-
console.log("🔍 Using project's Firefox extension")
|
|
43
|
+
console.log("🔍 Using project's Firefox extension")
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
console.log("🦊 Launching Firefox with extension...")
|
|
47
|
-
console.log("📁 Extension path:", extensionPath)
|
|
48
|
-
shell.exec(`npx web-ext run --source-dir "${extensionPath}"`)
|
|
46
|
+
console.log("🦊 Launching Firefox with extension...")
|
|
47
|
+
console.log("📁 Extension path:", extensionPath)
|
|
48
|
+
shell.exec(`npx web-ext run --source-dir "${extensionPath}"`)
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
52
|
* Launch Chrome with extension command
|
|
53
53
|
*/
|
|
54
54
|
function extensionChromeCommand() {
|
|
55
|
-
const projectPath = findProjectRoot()
|
|
56
|
-
let extensionPath = path.join(projectPath, "browser-extensions", "chrome")
|
|
57
|
-
let scriptPath = path.join(projectPath, "scripts", "launch-chrome.js")
|
|
55
|
+
const projectPath = findProjectRoot()
|
|
56
|
+
let extensionPath = path.join(projectPath, "browser-extensions", "chrome")
|
|
57
|
+
let scriptPath = path.join(projectPath, "scripts", "launch-chrome.js")
|
|
58
58
|
|
|
59
59
|
// Check if we have a local extension first
|
|
60
60
|
if (!fs.existsSync(extensionPath)) {
|
|
61
|
-
const paths = resolveGxPaths()
|
|
61
|
+
const paths = resolveGxPaths()
|
|
62
62
|
const toolkitExtensionPath = path.join(
|
|
63
63
|
paths.packageRoot,
|
|
64
64
|
"browser-extensions",
|
|
65
|
-
"chrome"
|
|
66
|
-
)
|
|
65
|
+
"chrome",
|
|
66
|
+
)
|
|
67
67
|
|
|
68
68
|
if (fs.existsSync(toolkitExtensionPath)) {
|
|
69
|
-
console.log("🔍 Using GxToolkit's built-in Chrome extension")
|
|
70
|
-
extensionPath = toolkitExtensionPath
|
|
69
|
+
console.log("🔍 Using GxToolkit's built-in Chrome extension")
|
|
70
|
+
extensionPath = toolkitExtensionPath
|
|
71
71
|
// Use the toolkit's script instead
|
|
72
|
-
scriptPath = path.join(paths.packageRoot, "scripts", "launch-chrome.js")
|
|
72
|
+
scriptPath = path.join(paths.packageRoot, "scripts", "launch-chrome.js")
|
|
73
73
|
} else {
|
|
74
|
-
console.error("❌ Chrome extension directory not found")
|
|
74
|
+
console.error("❌ Chrome extension directory not found")
|
|
75
75
|
console.log(
|
|
76
76
|
"📁 Looking for extensions in:",
|
|
77
|
-
path.join(projectPath, "browser-extensions", "chrome")
|
|
78
|
-
)
|
|
77
|
+
path.join(projectPath, "browser-extensions", "chrome"),
|
|
78
|
+
)
|
|
79
79
|
console.log(
|
|
80
|
-
"💡 Run 'gxdev init' to create a project with browser extensions"
|
|
81
|
-
)
|
|
82
|
-
process.exit(1)
|
|
80
|
+
"💡 Run 'gxdev init' to create a project with browser extensions",
|
|
81
|
+
)
|
|
82
|
+
process.exit(1)
|
|
83
83
|
}
|
|
84
84
|
} else {
|
|
85
|
-
console.log("🔍 Using project's Chrome extension")
|
|
85
|
+
console.log("🔍 Using project's Chrome extension")
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
// Verify script exists
|
|
89
89
|
if (!fs.existsSync(scriptPath)) {
|
|
90
90
|
console.error(
|
|
91
|
-
"❌ Chrome launcher script not found. Run 'gxdev init' to create it."
|
|
92
|
-
)
|
|
93
|
-
process.exit(1)
|
|
91
|
+
"❌ Chrome launcher script not found. Run 'gxdev init' to create it.",
|
|
92
|
+
)
|
|
93
|
+
process.exit(1)
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
console.log("🚀 Launching Chrome with extension...")
|
|
97
|
-
console.log("📁 Extension path:", extensionPath)
|
|
96
|
+
console.log("🚀 Launching Chrome with extension...")
|
|
97
|
+
console.log("📁 Extension path:", extensionPath)
|
|
98
98
|
|
|
99
99
|
// Set the extension path as an environment variable for the script
|
|
100
|
-
process.env.CHROME_EXTENSION_PATH = extensionPath
|
|
101
|
-
shell.exec(`node "${scriptPath}"`)
|
|
100
|
+
process.env.CHROME_EXTENSION_PATH = extensionPath
|
|
101
|
+
shell.exec(`node "${scriptPath}"`)
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
/**
|
|
105
105
|
* Install extension permanently in local browser
|
|
106
106
|
*/
|
|
107
107
|
function extensionInstallCommand(argv) {
|
|
108
|
-
const browser = argv.browser
|
|
109
|
-
const paths = resolveGxPaths()
|
|
108
|
+
const browser = argv.browser
|
|
109
|
+
const paths = resolveGxPaths()
|
|
110
110
|
|
|
111
111
|
if (!browser || !["chrome", "firefox"].includes(browser)) {
|
|
112
|
-
console.log("Usage: gxdev ext:install <chrome|firefox>")
|
|
113
|
-
console.log("")
|
|
114
|
-
console.log("This command helps you permanently install the extension")
|
|
115
|
-
console.log("in your local browser for development.")
|
|
116
|
-
process.exit(1)
|
|
112
|
+
console.log("Usage: gxdev ext:install <chrome|firefox>")
|
|
113
|
+
console.log("")
|
|
114
|
+
console.log("This command helps you permanently install the extension")
|
|
115
|
+
console.log("in your local browser for development.")
|
|
116
|
+
process.exit(1)
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
const extensionPath = path.join(
|
|
120
120
|
paths.packageRoot,
|
|
121
121
|
"browser-extensions",
|
|
122
|
-
browser
|
|
123
|
-
)
|
|
122
|
+
browser,
|
|
123
|
+
)
|
|
124
124
|
|
|
125
125
|
if (!fs.existsSync(extensionPath)) {
|
|
126
126
|
console.error(
|
|
127
127
|
`❌ ${browser} extension directory not found at:`,
|
|
128
|
-
extensionPath
|
|
129
|
-
)
|
|
130
|
-
process.exit(1)
|
|
128
|
+
extensionPath,
|
|
129
|
+
)
|
|
130
|
+
process.exit(1)
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
console.log("")
|
|
134
|
-
console.log(`📦 Extension path: ${extensionPath}`)
|
|
135
|
-
console.log("")
|
|
133
|
+
console.log("")
|
|
134
|
+
console.log(`📦 Extension path: ${extensionPath}`)
|
|
135
|
+
console.log("")
|
|
136
136
|
|
|
137
137
|
if (browser === "chrome") {
|
|
138
|
-
console.log("🚀 Chrome Permanent Installation Instructions:")
|
|
139
|
-
console.log("─".repeat(50))
|
|
140
|
-
console.log("")
|
|
141
|
-
console.log("1. Open Chrome and navigate to:")
|
|
142
|
-
console.log(" chrome://extensions/")
|
|
143
|
-
console.log("")
|
|
144
|
-
console.log('2. Enable "Developer mode" (toggle in top right corner)')
|
|
145
|
-
console.log("")
|
|
146
|
-
console.log('3. Click "Load unpacked" button')
|
|
147
|
-
console.log("")
|
|
148
|
-
console.log("4. Select this directory:")
|
|
149
|
-
console.log(` ${extensionPath}`)
|
|
150
|
-
console.log("")
|
|
151
|
-
console.log("─".repeat(50))
|
|
152
|
-
console.log("✅ The extension will persist across browser restarts.")
|
|
153
|
-
console.log("🔄 After code changes, click the refresh icon on the")
|
|
154
|
-
console.log(" extension card in chrome://extensions/ to reload.")
|
|
155
|
-
console.log("")
|
|
138
|
+
console.log("🚀 Chrome Permanent Installation Instructions:")
|
|
139
|
+
console.log("─".repeat(50))
|
|
140
|
+
console.log("")
|
|
141
|
+
console.log("1. Open Chrome and navigate to:")
|
|
142
|
+
console.log(" chrome://extensions/")
|
|
143
|
+
console.log("")
|
|
144
|
+
console.log('2. Enable "Developer mode" (toggle in top right corner)')
|
|
145
|
+
console.log("")
|
|
146
|
+
console.log('3. Click "Load unpacked" button')
|
|
147
|
+
console.log("")
|
|
148
|
+
console.log("4. Select this directory:")
|
|
149
|
+
console.log(` ${extensionPath}`)
|
|
150
|
+
console.log("")
|
|
151
|
+
console.log("─".repeat(50))
|
|
152
|
+
console.log("✅ The extension will persist across browser restarts.")
|
|
153
|
+
console.log("🔄 After code changes, click the refresh icon on the")
|
|
154
|
+
console.log(" extension card in chrome://extensions/ to reload.")
|
|
155
|
+
console.log("")
|
|
156
156
|
|
|
157
157
|
// Try to open Chrome to the extensions page
|
|
158
158
|
const openCommand =
|
|
159
159
|
process.platform === "darwin"
|
|
160
160
|
? 'open -a "Google Chrome" "chrome://extensions/"'
|
|
161
161
|
: process.platform === "win32"
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
? 'start chrome "chrome://extensions/"'
|
|
163
|
+
: 'google-chrome "chrome://extensions/"'
|
|
164
164
|
|
|
165
|
-
console.log("🌐 Attempting to open Chrome extensions page...")
|
|
166
|
-
shell.exec(openCommand, { silent: true })
|
|
165
|
+
console.log("🌐 Attempting to open Chrome extensions page...")
|
|
166
|
+
shell.exec(openCommand, { silent: true })
|
|
167
167
|
} else if (browser === "firefox") {
|
|
168
|
-
console.log("🦊 Firefox Installation Instructions:")
|
|
169
|
-
console.log("─".repeat(50))
|
|
170
|
-
console.log("")
|
|
171
|
-
console.log("Option 1: Temporary Add-on (easiest, but doesn't persist)")
|
|
172
|
-
console.log("─".repeat(50))
|
|
173
|
-
console.log("1. Open Firefox and navigate to:")
|
|
174
|
-
console.log(" about:debugging#/runtime/this-firefox")
|
|
175
|
-
console.log("")
|
|
176
|
-
console.log('2. Click "Load Temporary Add-on..."')
|
|
177
|
-
console.log("")
|
|
178
|
-
console.log("3. Select any file in this directory:")
|
|
179
|
-
console.log(` ${extensionPath}`)
|
|
180
|
-
console.log("")
|
|
181
|
-
console.log("⚠️ Note: Temporary add-ons are removed when Firefox closes.")
|
|
182
|
-
console.log("")
|
|
183
|
-
console.log("─".repeat(50))
|
|
184
|
-
console.log(
|
|
185
|
-
|
|
186
|
-
)
|
|
187
|
-
console.log("
|
|
188
|
-
console.log("
|
|
189
|
-
console.log("")
|
|
190
|
-
console.log("
|
|
191
|
-
console.log("
|
|
192
|
-
console.log("")
|
|
193
|
-
console.log("
|
|
194
|
-
console.log("")
|
|
195
|
-
console.log("
|
|
196
|
-
console.log(
|
|
197
|
-
console.log(
|
|
198
|
-
console.log("
|
|
199
|
-
console.log(` ${extensionPath}`);
|
|
200
|
-
console.log("");
|
|
168
|
+
console.log("🦊 Firefox Installation Instructions:")
|
|
169
|
+
console.log("─".repeat(50))
|
|
170
|
+
console.log("")
|
|
171
|
+
console.log("Option 1: Temporary Add-on (easiest, but doesn't persist)")
|
|
172
|
+
console.log("─".repeat(50))
|
|
173
|
+
console.log("1. Open Firefox and navigate to:")
|
|
174
|
+
console.log(" about:debugging#/runtime/this-firefox")
|
|
175
|
+
console.log("")
|
|
176
|
+
console.log('2. Click "Load Temporary Add-on..."')
|
|
177
|
+
console.log("")
|
|
178
|
+
console.log("3. Select any file in this directory:")
|
|
179
|
+
console.log(` ${extensionPath}`)
|
|
180
|
+
console.log("")
|
|
181
|
+
console.log("⚠️ Note: Temporary add-ons are removed when Firefox closes.")
|
|
182
|
+
console.log("")
|
|
183
|
+
console.log("─".repeat(50))
|
|
184
|
+
console.log("Option 2: Persistent Installation (Firefox Developer/Nightly)")
|
|
185
|
+
console.log("─".repeat(50))
|
|
186
|
+
console.log("1. Use Firefox Developer Edition or Firefox Nightly")
|
|
187
|
+
console.log("")
|
|
188
|
+
console.log("2. Go to about:config and set:")
|
|
189
|
+
console.log(" xpinstall.signatures.required = false")
|
|
190
|
+
console.log("")
|
|
191
|
+
console.log("3. Then go to about:addons")
|
|
192
|
+
console.log("")
|
|
193
|
+
console.log("4. Click the gear icon and select:")
|
|
194
|
+
console.log(' "Install Add-on From File..."')
|
|
195
|
+
console.log("")
|
|
196
|
+
console.log("5. Select the manifest.json in:")
|
|
197
|
+
console.log(` ${extensionPath}`)
|
|
198
|
+
console.log("")
|
|
201
199
|
|
|
202
200
|
// Try to open Firefox to the debugging page
|
|
203
201
|
const openCommand =
|
|
204
202
|
process.platform === "darwin"
|
|
205
203
|
? 'open -a "Firefox" "about:debugging#/runtime/this-firefox"'
|
|
206
204
|
: process.platform === "win32"
|
|
207
|
-
|
|
208
|
-
|
|
205
|
+
? 'start firefox "about:debugging#/runtime/this-firefox"'
|
|
206
|
+
: 'firefox "about:debugging#/runtime/this-firefox"'
|
|
209
207
|
|
|
210
|
-
console.log("🌐 Attempting to open Firefox debugging page...")
|
|
211
|
-
shell.exec(openCommand, { silent: true })
|
|
208
|
+
console.log("🌐 Attempting to open Firefox debugging page...")
|
|
209
|
+
shell.exec(openCommand, { silent: true })
|
|
212
210
|
}
|
|
213
211
|
}
|
|
214
212
|
|
|
@@ -216,77 +214,77 @@ function extensionInstallCommand(argv) {
|
|
|
216
214
|
* Build extensions command
|
|
217
215
|
*/
|
|
218
216
|
function extensionBuildCommand() {
|
|
219
|
-
const projectPath = findProjectRoot()
|
|
220
|
-
const paths = resolveGxPaths()
|
|
217
|
+
const projectPath = findProjectRoot()
|
|
218
|
+
const paths = resolveGxPaths()
|
|
221
219
|
|
|
222
|
-
console.log("📦 Building browser extensions...")
|
|
220
|
+
console.log("📦 Building browser extensions...")
|
|
223
221
|
|
|
224
222
|
// Build Firefox extension
|
|
225
|
-
let firefoxPath = path.join(projectPath, "browser-extensions", "firefox")
|
|
226
|
-
let useProjectExtensions = true
|
|
223
|
+
let firefoxPath = path.join(projectPath, "browser-extensions", "firefox")
|
|
224
|
+
let useProjectExtensions = true
|
|
227
225
|
|
|
228
226
|
if (!fs.existsSync(firefoxPath)) {
|
|
229
227
|
// Try toolkit's extensions
|
|
230
228
|
const toolkitFirefoxPath = path.join(
|
|
231
229
|
paths.packageRoot,
|
|
232
230
|
"browser-extensions",
|
|
233
|
-
"firefox"
|
|
234
|
-
)
|
|
231
|
+
"firefox",
|
|
232
|
+
)
|
|
235
233
|
if (fs.existsSync(toolkitFirefoxPath)) {
|
|
236
|
-
firefoxPath = toolkitFirefoxPath
|
|
237
|
-
useProjectExtensions = false
|
|
238
|
-
console.log("🔍 Using GxToolkit's built-in Firefox extension")
|
|
234
|
+
firefoxPath = toolkitFirefoxPath
|
|
235
|
+
useProjectExtensions = false
|
|
236
|
+
console.log("🔍 Using GxToolkit's built-in Firefox extension")
|
|
239
237
|
}
|
|
240
238
|
}
|
|
241
239
|
|
|
242
240
|
if (fs.existsSync(firefoxPath)) {
|
|
243
|
-
console.log("🦊 Building Firefox extension...")
|
|
241
|
+
console.log("🦊 Building Firefox extension...")
|
|
244
242
|
const outputDir = useProjectExtensions
|
|
245
243
|
? "dist/firefox"
|
|
246
|
-
: path.join(projectPath, "dist/firefox")
|
|
244
|
+
: path.join(projectPath, "dist/firefox")
|
|
247
245
|
shell.exec(
|
|
248
|
-
`npx web-ext build --source-dir "${firefoxPath}" --artifacts-dir "${outputDir}"
|
|
249
|
-
)
|
|
246
|
+
`npx web-ext build --source-dir "${firefoxPath}" --artifacts-dir "${outputDir}"`,
|
|
247
|
+
)
|
|
250
248
|
} else {
|
|
251
|
-
console.log("⚠️ No Firefox extension found to build")
|
|
249
|
+
console.log("⚠️ No Firefox extension found to build")
|
|
252
250
|
}
|
|
253
251
|
|
|
254
252
|
// Build Chrome extension
|
|
255
|
-
let chromeScriptPath = path.join(projectPath, "scripts", "pack-chrome.js")
|
|
253
|
+
let chromeScriptPath = path.join(projectPath, "scripts", "pack-chrome.js")
|
|
256
254
|
let chromeExtensionPath = path.join(
|
|
257
255
|
projectPath,
|
|
258
256
|
"browser-extensions",
|
|
259
|
-
"chrome"
|
|
260
|
-
)
|
|
257
|
+
"chrome",
|
|
258
|
+
)
|
|
261
259
|
|
|
262
260
|
if (!fs.existsSync(chromeScriptPath) || !fs.existsSync(chromeExtensionPath)) {
|
|
263
261
|
// Try toolkit's scripts and extensions
|
|
264
262
|
const toolkitScriptPath = path.join(
|
|
265
263
|
paths.packageRoot,
|
|
266
264
|
"scripts",
|
|
267
|
-
"pack-chrome.js"
|
|
268
|
-
)
|
|
265
|
+
"pack-chrome.js",
|
|
266
|
+
)
|
|
269
267
|
const toolkitChromePath = path.join(
|
|
270
268
|
paths.packageRoot,
|
|
271
269
|
"browser-extensions",
|
|
272
|
-
"chrome"
|
|
273
|
-
)
|
|
270
|
+
"chrome",
|
|
271
|
+
)
|
|
274
272
|
|
|
275
273
|
if (fs.existsSync(toolkitScriptPath) && fs.existsSync(toolkitChromePath)) {
|
|
276
|
-
chromeScriptPath = toolkitScriptPath
|
|
277
|
-
chromeExtensionPath = toolkitChromePath
|
|
278
|
-
console.log("🔍 Using GxToolkit's built-in Chrome extension")
|
|
274
|
+
chromeScriptPath = toolkitScriptPath
|
|
275
|
+
chromeExtensionPath = toolkitChromePath
|
|
276
|
+
console.log("🔍 Using GxToolkit's built-in Chrome extension")
|
|
279
277
|
}
|
|
280
278
|
}
|
|
281
279
|
|
|
282
280
|
if (fs.existsSync(chromeScriptPath)) {
|
|
283
|
-
console.log("🚀 Building Chrome extension...")
|
|
281
|
+
console.log("🚀 Building Chrome extension...")
|
|
284
282
|
// Set environment variable for the script to know where the extension is
|
|
285
|
-
process.env.CHROME_EXTENSION_PATH = chromeExtensionPath
|
|
286
|
-
process.env.CHROME_BUILD_OUTPUT = path.join(projectPath, "dist/chrome")
|
|
287
|
-
shell.exec(`node "${chromeScriptPath}"`)
|
|
283
|
+
process.env.CHROME_EXTENSION_PATH = chromeExtensionPath
|
|
284
|
+
process.env.CHROME_BUILD_OUTPUT = path.join(projectPath, "dist/chrome")
|
|
285
|
+
shell.exec(`node "${chromeScriptPath}"`)
|
|
288
286
|
} else {
|
|
289
|
-
console.log("⚠️ No Chrome extension found to build")
|
|
287
|
+
console.log("⚠️ No Chrome extension found to build")
|
|
290
288
|
}
|
|
291
289
|
}
|
|
292
290
|
|
|
@@ -295,4 +293,4 @@ module.exports = {
|
|
|
295
293
|
extensionChromeCommand,
|
|
296
294
|
extensionBuildCommand,
|
|
297
295
|
extensionInstallCommand,
|
|
298
|
-
}
|
|
296
|
+
}
|