opencode-antigravity-config 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.
package/i18n.js CHANGED
@@ -55,6 +55,8 @@ const translations = {
55
55
  '🚀 Next Steps': { EN: '🚀 Next Steps', ID: '🚀 Langkah Berikut' },
56
56
  '📂 Config': { EN: '📂 Config', ID: '📂 Buka Config' },
57
57
  '🔑 Auth': { EN: '🔑 Auth', ID: '🔑 Login' },
58
+ '💻 CLI': { EN: '💻 CLI', ID: '💻 CLI' },
59
+ '🌐 Web': { EN: '🌐 Web', ID: '🌐 Web 8080' },
58
60
  'Close': { EN: 'Close', ID: 'Tutup' },
59
61
 
60
62
  // Modals & Dynamic
@@ -149,6 +151,8 @@ const tMap = [
149
151
  { selector: '#page5 .purple-label', key: '🚀 Next Steps' },
150
152
  { selector: '#btnOpenFolder', key: '📂 Config' },
151
153
  { selector: '#btnAuthLogin', key: '🔑 Auth' },
154
+ { selector: '#btnRunCLI', key: '💻 CLI' },
155
+ { selector: '#btnRunWeb', key: '🌐 Web' },
152
156
  { selector: '#btnFinish', key: 'Close' }
153
157
  ];
154
158
 
package/index.html CHANGED
@@ -1,77 +1,77 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Opencode Antigravity Config</title>
8
- <meta http-equiv="Content-Security-Policy"
9
- content="script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src 'self';">
10
- <link rel="stylesheet" href="node_modules/@fontsource/fira-code/400.css">
11
- <link rel="stylesheet" href="node_modules/@fontsource/fira-code/600.css">
12
- <link rel="stylesheet" href="styles.css">
13
- </head>
14
-
15
- <body>
16
- <div class="window-container">
17
- <div class="title-bar" id="titleBar">
18
- <div class="title-left">
19
- <img src="app.png" class="icon" alt="Ag Icon">
20
- <span class="title-text">Opencode Antigravity Config</span>
21
- <span class="version-text">v1.0.0</span>
22
- </div>
23
- <div class="window-controls">
24
- <button id="btnLang" class="control-btn lang-btn" title="Toggle Language">ID / EN</button>
25
- <div class="divider-v"></div>
26
- <button id="btnMinimize" class="control-btn minimize" title="Minimize">─</button>
27
- <button id="btnClose" class="control-btn close" title="Close">✕</button>
28
- </div>
29
- </div>
30
- <div class="step-indicator">
31
- <div class="step active" id="step0">
32
- <div class="dot"></div><span>Welcome</span>
33
- </div>
34
- <div class="step" id="step1">
35
- <div class="dot"></div><span>oMo Model</span>
36
- </div>
37
- <div class="step" id="step2">
38
- <div class="dot"></div><span>System</span>
39
- </div>
40
- <div class="step" id="step3">
41
- <div class="dot"></div><span>Config</span>
42
- </div>
43
- <div class="step" id="step4">
44
- <div class="dot"></div><span>Install</span>
45
- </div>
46
- <div class="step" id="step5">
47
- <div class="dot"></div><span>Done</span>
48
- </div>
49
- </div>
50
- <div class="content-area">
51
- <!-- PAGE 0: WELCOME -->
52
- <div id="page0" class="page active">
53
- <div class="center-content">
54
- <img src="app.png" class="hero-icon" alt="Ag Icon">
55
- <h1>Opencode Antigravity</h1>
56
- <h2 class="cyan-text">Config</h2>
57
- <p class="subtitle">Install konfigurasi lengkap Opencode Antigravity stack:</p>
58
- <span class="config-meta" id="configMetaText">Loading...</span>
59
- <div class="welcome-actions"><button class="btn primary" id="btnStart">Get Started →</button></div>
60
- <div class="welcome-secondary">
61
- <button class="btn secondary btn-sm" id="btnVersionCheck">🔄 Updates</button>
62
- <button class="btn secondary btn-sm btn-danger" id="btnUninstall">🗑 Uninstall</button>
63
- </div>
64
- </div>
65
- </div>
66
-
67
- <!-- PAGE 1: OMO CONFIG -->
68
- <div id="page1" class="page">
69
- <div class="page-header">
70
- <h2>oMo Agent Model</h2>
71
- <p>Konfigurasi model AI untuk setiap agent</p>
72
- </div>
73
- <div class="scroll-area" style="padding:15px 0;">
74
- <div id="agentModelPanel" class="agent-panel">
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Opencode Antigravity Config</title>
8
+ <meta http-equiv="Content-Security-Policy"
9
+ content="script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src 'self';">
10
+ <link rel="stylesheet" href="node_modules/@fontsource/fira-code/400.css">
11
+ <link rel="stylesheet" href="node_modules/@fontsource/fira-code/600.css">
12
+ <link rel="stylesheet" href="styles.css">
13
+ </head>
14
+
15
+ <body>
16
+ <div class="window-container">
17
+ <div class="title-bar" id="titleBar">
18
+ <div class="title-left">
19
+ <img src="app.png" class="icon" alt="Ag Icon">
20
+ <span class="title-text">Opencode Antigravity Config</span>
21
+ <span class="version-text">v1.0.0</span>
22
+ </div>
23
+ <div class="window-controls">
24
+ <button id="btnLang" class="control-btn lang-btn" title="Toggle Language">ID / EN</button>
25
+ <div class="divider-v"></div>
26
+ <button id="btnMinimize" class="control-btn minimize" title="Minimize">─</button>
27
+ <button id="btnClose" class="control-btn close" title="Close">✕</button>
28
+ </div>
29
+ </div>
30
+ <div class="step-indicator">
31
+ <div class="step active" id="step0">
32
+ <div class="dot"></div><span>Welcome</span>
33
+ </div>
34
+ <div class="step" id="step1">
35
+ <div class="dot"></div><span>oMo Model</span>
36
+ </div>
37
+ <div class="step" id="step2">
38
+ <div class="dot"></div><span>System</span>
39
+ </div>
40
+ <div class="step" id="step3">
41
+ <div class="dot"></div><span>Config</span>
42
+ </div>
43
+ <div class="step" id="step4">
44
+ <div class="dot"></div><span>Install</span>
45
+ </div>
46
+ <div class="step" id="step5">
47
+ <div class="dot"></div><span>Done</span>
48
+ </div>
49
+ </div>
50
+ <div class="content-area">
51
+ <!-- PAGE 0: WELCOME -->
52
+ <div id="page0" class="page active">
53
+ <div class="center-content">
54
+ <img src="app.png" class="hero-icon" alt="Ag Icon">
55
+ <h1>Opencode Antigravity</h1>
56
+ <h2 class="cyan-text">Config</h2>
57
+ <p class="subtitle">Install konfigurasi lengkap Opencode Antigravity stack:</p>
58
+ <span class="config-meta" id="configMetaText">Loading...</span>
59
+ <div class="welcome-actions"><button class="btn primary" id="btnStart">Get Started →</button></div>
60
+ <div class="welcome-secondary">
61
+ <button class="btn secondary btn-sm" id="btnVersionCheck">🔄 Updates</button>
62
+ <button class="btn secondary btn-sm btn-danger" id="btnUninstall">🗑 Uninstall</button>
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <!-- PAGE 1: OMO CONFIG -->
68
+ <div id="page1" class="page">
69
+ <div class="page-header">
70
+ <h2>oMo Agent Model</h2>
71
+ <p>Konfigurasi model AI untuk setiap agent</p>
72
+ </div>
73
+ <div class="scroll-area" style="padding:15px 0;">
74
+ <div id="agentModelPanel" class="agent-panel">
75
75
  <div class="agent-panel-header">
76
76
  <h3>🤖 oMo Agents — AI Model</h3>
77
77
  <div style="display:flex; gap:10px; align-items:center;">
@@ -85,340 +85,342 @@
85
85
  </select>
86
86
  <button type="button" id="btnAgentAdvanced" class="btn secondary btn-agent-toggle">⚙ Advanced</button>
87
87
  </div>
88
- </div>
89
-
90
- <!-- GROUP MODE (default) -->
91
- <div id="agentGroupMode">
92
- <div class="agent-group-row" style="border-left-color: #e74c3c;">
93
- <div class="agent-group-info">
94
- <span class="agent-group-name">🧠 Heavy</span>
95
- <span class="agent-group-members">Sisyphus, Prometheus, Metis, Oracle</span>
96
- </div>
97
- <select id="selGroupHeavy" class="agent-model-select">
98
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
88
+ </div>
89
+
90
+ <!-- GROUP MODE (default) -->
91
+ <div id="agentGroupMode">
92
+ <div class="agent-group-row" style="border-left-color: #e74c3c;">
93
+ <div class="agent-group-info">
94
+ <span class="agent-group-name">🧠 Heavy</span>
95
+ <span class="agent-group-members">Sisyphus, Prometheus, Metis, Oracle</span>
96
+ </div>
97
+ <select id="selGroupHeavy" class="agent-model-select">
98
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
99
99
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
100
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
101
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
102
- Think</option>
103
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
104
- </option>
105
- </select>
106
- </div>
107
- <div class="agent-group-row" style="border-left-color: #f39c12;">
108
- <div class="agent-group-info">
109
- <span class="agent-group-name">⚙️ Standard</span>
110
- <span class="agent-group-members">Hephaestus, Momus, Atlas</span>
111
- </div>
112
- <select id="selGroupStandard" class="agent-model-select">
113
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
100
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
101
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
102
+ Think</option>
103
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
104
+ </option>
105
+ </select>
106
+ </div>
107
+ <div class="agent-group-row" style="border-left-color: #f39c12;">
108
+ <div class="agent-group-info">
109
+ <span class="agent-group-name">⚙️ Standard</span>
110
+ <span class="agent-group-members">Hephaestus, Momus, Atlas</span>
111
+ </div>
112
+ <select id="selGroupStandard" class="agent-model-select">
113
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
114
114
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
115
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
116
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
117
- Think</option>
118
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
119
- </option>
120
- </select>
121
- </div>
122
- <div class="agent-group-row" style="border-left-color: #3498db;">
123
- <div class="agent-group-info">
124
- <span class="agent-group-name">⚡ Light</span>
125
- <span class="agent-group-members">Librarian, Explore, Multimodal-Looker</span>
126
- </div>
127
- <select id="selGroupLight" class="agent-model-select">
128
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
129
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
130
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
131
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
132
- Think</option>
133
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
134
- </option>
135
- </select>
136
- </div>
137
- </div>
138
-
139
- <!-- ADVANCED MODE (per-agent, hidden by default) -->
140
- <div id="agentAdvancedMode" style="display:none;">
141
- <div class="agent-adv-section" style="border-left-color:#e74c3c;">🧠 Heavy Group</div>
142
- <div class="agent-adv-row"><span class="agent-adv-name">Sisyphus
143
- <i>(Orchestrator)</i></span><select id="selAgent_sisyphus"
144
- class="agent-model-select agent-adv-select" data-group="heavy">
145
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
115
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
116
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
117
+ Think</option>
118
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
119
+ </option>
120
+ </select>
121
+ </div>
122
+ <div class="agent-group-row" style="border-left-color: #3498db;">
123
+ <div class="agent-group-info">
124
+ <span class="agent-group-name">⚡ Light</span>
125
+ <span class="agent-group-members">Librarian, Explore, Multimodal-Looker</span>
126
+ </div>
127
+ <select id="selGroupLight" class="agent-model-select">
128
+ <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
129
+ <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
130
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
131
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
132
+ Think</option>
133
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
134
+ </option>
135
+ </select>
136
+ </div>
137
+ </div>
138
+
139
+ <!-- ADVANCED MODE (per-agent, hidden by default) -->
140
+ <div id="agentAdvancedMode" style="display:none;">
141
+ <div class="agent-adv-section" style="border-left-color:#e74c3c;">🧠 Heavy Group</div>
142
+ <div class="agent-adv-row"><span class="agent-adv-name">Sisyphus
143
+ <i>(Orchestrator)</i></span><select id="selAgent_sisyphus"
144
+ class="agent-model-select agent-adv-select" data-group="heavy">
145
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
146
146
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
147
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
148
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
149
- Think</option>
150
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
151
- </option>
152
- </select></div>
153
- <div class="agent-adv-row"><span class="agent-adv-name">Prometheus
154
- <i>(Builder)</i></span><select id="selAgent_prometheus"
155
- class="agent-model-select agent-adv-select" data-group="heavy">
156
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
147
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
148
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
149
+ Think</option>
150
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
151
+ </option>
152
+ </select></div>
153
+ <div class="agent-adv-row"><span class="agent-adv-name">Prometheus
154
+ <i>(Builder)</i></span><select id="selAgent_prometheus"
155
+ class="agent-model-select agent-adv-select" data-group="heavy">
156
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
157
157
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
158
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
159
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
160
- Think</option>
161
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
162
- </option>
163
- </select></div>
164
- <div class="agent-adv-row"><span class="agent-adv-name">Metis <i>(Coder)</i></span><select
165
- id="selAgent_metis" class="agent-model-select agent-adv-select" data-group="heavy">
166
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
158
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
159
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
160
+ Think</option>
161
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
162
+ </option>
163
+ </select></div>
164
+ <div class="agent-adv-row"><span class="agent-adv-name">Metis <i>(Coder)</i></span><select
165
+ id="selAgent_metis" class="agent-model-select agent-adv-select" data-group="heavy">
166
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
167
167
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
168
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
169
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
170
- Think</option>
171
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
172
- </option>
173
- </select></div>
174
- <div class="agent-adv-row"><span class="agent-adv-name">Oracle
175
- <i>(Analyst)</i></span><select id="selAgent_oracle"
176
- class="agent-model-select agent-adv-select" data-group="heavy">
177
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
168
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
169
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
170
+ Think</option>
171
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
172
+ </option>
173
+ </select></div>
174
+ <div class="agent-adv-row"><span class="agent-adv-name">Oracle
175
+ <i>(Analyst)</i></span><select id="selAgent_oracle"
176
+ class="agent-model-select agent-adv-select" data-group="heavy">
177
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
178
178
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
179
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
180
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
181
- Think</option>
182
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
183
- </option>
184
- </select></div>
185
-
186
- <div class="agent-adv-section" style="border-left-color:#f39c12;">⚙️ Standard Group</div>
187
- <div class="agent-adv-row"><span class="agent-adv-name">Hephaestus
188
- <i>(Coder)</i></span><select id="selAgent_hephaestus"
189
- class="agent-model-select agent-adv-select" data-group="standard">
190
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
179
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
180
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
181
+ Think</option>
182
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
183
+ </option>
184
+ </select></div>
185
+
186
+ <div class="agent-adv-section" style="border-left-color:#f39c12;">⚙️ Standard Group</div>
187
+ <div class="agent-adv-row"><span class="agent-adv-name">Hephaestus
188
+ <i>(Coder)</i></span><select id="selAgent_hephaestus"
189
+ class="agent-model-select agent-adv-select" data-group="standard">
190
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
191
191
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
192
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
193
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
194
- Think</option>
195
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
196
- </option>
197
- </select></div>
198
- <div class="agent-adv-row"><span class="agent-adv-name">Momus
199
- <i>(Reviewer)</i></span><select id="selAgent_momus"
200
- class="agent-model-select agent-adv-select" data-group="standard">
201
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
192
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
193
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
194
+ Think</option>
195
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
196
+ </option>
197
+ </select></div>
198
+ <div class="agent-adv-row"><span class="agent-adv-name">Momus
199
+ <i>(Reviewer)</i></span><select id="selAgent_momus"
200
+ class="agent-model-select agent-adv-select" data-group="standard">
201
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
202
202
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
203
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
204
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
205
- Think</option>
206
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
207
- </option>
208
- </select></div>
209
- <div class="agent-adv-row"><span class="agent-adv-name">Atlas <i>(Worker)</i></span><select
210
- id="selAgent_atlas" class="agent-model-select agent-adv-select"
211
- data-group="standard">
212
- <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
203
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
204
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
205
+ Think</option>
206
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
207
+ </option>
208
+ </select></div>
209
+ <div class="agent-adv-row"><span class="agent-adv-name">Atlas <i>(Worker)</i></span><select
210
+ id="selAgent_atlas" class="agent-model-select agent-adv-select"
211
+ data-group="standard">
212
+ <option value="google/antigravity-gemini-3-1-pro" selected>Gemini 3.1 Pro</option>
213
213
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
214
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
215
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
216
- Think</option>
217
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
218
- </option>
219
- </select></div>
220
-
221
- <div class="agent-adv-section" style="border-left-color:#3498db;">⚡ Light Group</div>
222
- <div class="agent-adv-row"><span class="agent-adv-name">Librarian
223
- <i>(Research)</i></span><select id="selAgent_librarian"
224
- class="agent-model-select agent-adv-select" data-group="light">
225
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
226
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
227
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
228
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
229
- Think</option>
230
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
231
- </option>
232
- </select></div>
233
- <div class="agent-adv-row"><span class="agent-adv-name">Explore <i>(Scout)</i></span><select
234
- id="selAgent_explore" class="agent-model-select agent-adv-select"
235
- data-group="light">
236
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
237
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
238
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
239
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
240
- Think</option>
241
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
242
- </option>
243
- </select></div>
244
- <div class="agent-adv-row"><span class="agent-adv-name">Multimodal-Looker
245
- <i>(Vision)</i></span><select id="selAgent_multimodal_looker"
246
- class="agent-model-select agent-adv-select" data-group="light">
247
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
248
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
249
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
250
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
251
- Think</option>
252
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
253
- </option>
254
- </select></div>
255
- </div>
256
- </div>
257
- </div>
258
- <div class="page-footer">
259
- <button class="btn secondary" id="btnPrev1">← Back</button>
260
- <div style="flex:1"></div>
261
- <button class="btn primary" id="btnNext1">Continue →</button>
262
- </div>
263
- </div>
264
- <!-- PAGE 2: SYSTEM CHECK -->
265
- <div id="page2" class="page">
266
- <div class="page-header">
267
- <h2>System Check</h2>
268
- <p>Checking environment...</p>
269
- </div>
270
- <div class="scroll-area" id="prereqPanel"></div>
271
- <div class="page-footer">
272
- <button class="btn secondary" id="btnRecheck">🔄 Re-check</button>
273
- <div style="flex:1"></div>
274
- <button class="btn secondary" id="btnPrev2">← Back</button>
275
- <button class="btn primary disabled" id="btnNext2" disabled>Continue →</button>
276
- </div>
277
- </div>
278
- <!-- PAGE 3: CONFIG -->
279
- <div id="page3" class="page">
280
- <div class="page-header">
281
- <div class="header-row">
282
- <div>
283
- <h2>Configuration</h2>
284
- <p>API Keys & file selection</p>
285
- </div>
286
- <div class="header-actions">
287
- <button class="btn secondary btn-xs" id="btnImport">📥 Import</button>
288
- <button class="btn secondary btn-xs" id="btnExport">📤 Export</button>
289
- </div>
290
- </div>
291
- </div>
292
- <div class="scroll-area">
293
- <div class="form-group">
294
- <div class="label-row">
295
- <label class="cyan-label">PLUGINS <span id="pluginCount"
296
- style="color:var(--t2);font-weight:normal;font-size:10px;margin-left:4px">3/7</span></label>
297
- <span class="file-actions">
298
- <a id="btnPluginAll" class="link-btn">All</a><span class="link-sep">|</span><a
299
- id="btnPluginNone" class="link-btn">None</a>
300
- </span>
301
- </div>
302
- <div class="plugin-grid" id="pluginGrid">
303
- <div class="plugin-group-title" id="lblCorePlugins">🔒 Core (Required)</div>
304
- <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
305
- class="plugin-checkbox" value="opencode-antigravity-auth" checked disabled><span
306
- class="checkmark"></span>⚡ opencode-antigravity-auth</label><span
307
- class="plugin-desc">Authentication (required)</span></div>
308
- <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
309
- class="plugin-checkbox" value="oh-my-opencode" checked disabled><span
310
- class="checkmark"></span>🤖 oh-my-opencode</label><span class="plugin-desc">oMo
311
- Agents (required)</span></div>
312
- <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
313
- class="plugin-checkbox" value="@tarquinen/opencode-dcp" checked disabled><span
314
- class="checkmark"></span>✂️ @tarquinen/opencode-dcp</label><span
315
- class="plugin-desc">Context Pruning (required)</span></div>
316
-
317
- <div class="plugin-group-title" id="lblOptionalPlugins" style="margin-top:4px;">⚙️ Optional
318
- </div>
319
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
320
- type="checkbox" class="plugin-checkbox" id="chkPluginSupermemory"
321
- value="opencode-supermemory"><span class="checkmark"></span>🧠
322
- opencode-supermemory</label><span class="plugin-badge hidden" id="warnSupermemory">⚠
323
- No key</span><span class="plugin-desc">RAG Memory System</span></div>
324
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
325
- type="checkbox" class="plugin-checkbox"
326
- value="@ramtinj95/opencode-tokenscope"><span class="checkmark"></span>📊
327
- @ramtinj95/opencode-tokenscope</label><span class="plugin-desc">Token Usage
328
- Stats</span></div>
329
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
330
- type="checkbox" class="plugin-checkbox" id="chkPluginOpenSync"
331
- value="opencode-sync-plugin"><span class="checkmark"></span>🌩️
332
- opencode-sync-plugin</label><span class="plugin-badge hidden" id="warnOpenSync">⚠ No
333
- key</span><span class="plugin-desc">Chat Sync (OpenSync)</span></div>
334
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
335
- type="checkbox" class="plugin-checkbox" value="cc-safety-net"><span
336
- class="checkmark"></span>🛡️
337
- cc-safety-net</label><span class="plugin-desc">Safety Guard</span></div>
338
- </div>
339
- <div style="margin-top:6px;text-align:right;">
340
- <button class="btn secondary btn-xs" id="btnPreviewConfig">👁 Preview opencode.json</button>
341
- </div>
342
- </div>
343
- <div class="divider"></div>
344
- <div class="form-group">
345
- <div class="label-row"><label class="cyan-label">SUPERMEMORY</label><span
346
- class="val-indicator val-empty" id="valSupermemory">(Optional)</span></div>
347
- <span class="help-text">API Key (console.supermemory.ai/keys)</span>
348
- <input type="text" id="txtSupermemoryKey" class="modern-input" spellcheck="false"
349
- placeholder="sm_...">
350
- </div>
351
- <div class="form-group">
352
- <div class="label-row"><label class="purple-label">OPENSYNC</label><span
353
- class="val-indicator val-empty" id="valOpenSyncKey">(Optional)</span></div>
354
- <span class="help-text">API Key (opensync.dev → Settings)</span>
355
- <input type="text" id="txtOpenSyncKey" class="modern-input" spellcheck="false">
356
- <div class="label-row"><span class="help-text">Convex URL</span><span
357
- class="val-indicator val-empty" id="valOpenSyncUrl">(Optional)</span></div>
358
- <input type="text" id="txtOpenSyncUrl" class="modern-input" spellcheck="false"
359
- placeholder="https://...convex.cloud">
360
- </div>
361
-
362
- <div class="divider"></div>
363
- <label class="grey-label">OPTIONS</label>
364
- <label class="modern-checkbox"><input type="checkbox" id="chkBackup" checked><span
365
- class="checkmark"></span>Backup konfigurasi lama</label>
366
- <label class="modern-checkbox"><input type="checkbox" id="chkNpmInstall" checked><span
367
- class="checkmark"></span>Jalankan npm install</label>
368
- </div>
369
- <div class="page-footer">
370
- <button class="btn secondary" id="btnPrev3">← Back</button>
371
- <button class="btn primary" id="btnNext3">Install Now →</button>
372
- </div>
373
- </div>
374
- <!-- PAGE 4: INSTALLING -->
375
- <div id="page4" class="page">
376
- <div class="page-header">
377
- <h2 id="installTitle">Installing...</h2>
378
- <p id="installSubtitle">Menyalin konfigurasi...</p>
379
- </div>
380
- <div class="progress-container">
381
- <div class="progress-bar" id="installProgress" style="width:0%"></div>
382
- </div>
383
- <div class="log-container">
384
- <div class="log-header"><span class="log-title">Log</span></div>
385
- <div class="log-content scroll-area" id="logContent"></div>
386
- </div>
387
- <div class="page-footer"><button class="btn primary hidden" id="btnNext4">Finish ✓</button></div>
388
- </div>
389
- <!-- PAGE 5: COMPLETE -->
390
- <div id="page5" class="page">
391
- <div class="center-content">
392
- <div class="success-icon">✓</div>
393
- <h2>Installation Complete!</h2>
394
- <p class="success-text">Antigravity OpenCode siap digunakan</p>
395
- <div class="summary-card"><label class="cyan-label">📁 Config Location</label>
396
- <div class="code-text" id="txtConfigPath">...</div>
397
- </div>
398
- <div class="summary-card"><label class="purple-label">🚀 Next Steps</label>
399
- <div class="step-text">1. opencode auth login</div>
400
- <div class="step-text">2. opencode</div>
401
- </div>
402
- <div class="action-row">
403
- <button class="btn secondary" id="btnOpenFolder">📂 Config</button>
404
- <button class="btn secondary" id="btnAuthLogin">🔑 Auth</button>
405
- <button class="btn primary" id="btnFinish">Close</button>
406
- </div>
407
- </div>
408
- </div>
409
- </div>
410
- </div>
411
- <!-- MODAL -->
412
- <div class="modal-overlay" id="modal">
413
- <div class="modal-container">
414
- <div class="modal-header"><span class="modal-title" id="modalTitle">Title</span><button class="modal-close"
415
- id="btnModalClose">✕</button></div>
416
- <div class="modal-body" id="modalBody"></div>
417
- </div>
418
- </div>
419
- <script src="i18n.js"></script>
420
- <script src="renderer.js"></script>
421
- </body>
422
-
423
- </html>
424
-
214
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
215
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
216
+ Think</option>
217
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
218
+ </option>
219
+ </select></div>
220
+
221
+ <div class="agent-adv-section" style="border-left-color:#3498db;">⚡ Light Group</div>
222
+ <div class="agent-adv-row"><span class="agent-adv-name">Librarian
223
+ <i>(Research)</i></span><select id="selAgent_librarian"
224
+ class="agent-model-select agent-adv-select" data-group="light">
225
+ <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
226
+ <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
227
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
228
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
229
+ Think</option>
230
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
231
+ </option>
232
+ </select></div>
233
+ <div class="agent-adv-row"><span class="agent-adv-name">Explore <i>(Scout)</i></span><select
234
+ id="selAgent_explore" class="agent-model-select agent-adv-select"
235
+ data-group="light">
236
+ <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
237
+ <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
238
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
239
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
240
+ Think</option>
241
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
242
+ </option>
243
+ </select></div>
244
+ <div class="agent-adv-row"><span class="agent-adv-name">Multimodal-Looker
245
+ <i>(Vision)</i></span><select id="selAgent_multimodal_looker"
246
+ class="agent-model-select agent-adv-select" data-group="light">
247
+ <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
248
+ <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
249
+ <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
250
+ <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
251
+ Think</option>
252
+ <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
253
+ </option>
254
+ </select></div>
255
+ </div>
256
+ </div>
257
+ </div>
258
+ <div class="page-footer">
259
+ <button class="btn secondary" id="btnPrev1">← Back</button>
260
+ <div style="flex:1"></div>
261
+ <button class="btn primary" id="btnNext1">Continue →</button>
262
+ </div>
263
+ </div>
264
+ <!-- PAGE 2: SYSTEM CHECK -->
265
+ <div id="page2" class="page">
266
+ <div class="page-header">
267
+ <h2>System Check</h2>
268
+ <p>Checking environment...</p>
269
+ </div>
270
+ <div class="scroll-area" id="prereqPanel"></div>
271
+ <div class="page-footer">
272
+ <button class="btn secondary" id="btnRecheck">🔄 Re-check</button>
273
+ <div style="flex:1"></div>
274
+ <button class="btn secondary" id="btnPrev2">← Back</button>
275
+ <button class="btn primary disabled" id="btnNext2" disabled>Continue →</button>
276
+ </div>
277
+ </div>
278
+ <!-- PAGE 3: CONFIG -->
279
+ <div id="page3" class="page">
280
+ <div class="page-header">
281
+ <div class="header-row">
282
+ <div>
283
+ <h2>Configuration</h2>
284
+ <p>API Keys & file selection</p>
285
+ </div>
286
+ <div class="header-actions">
287
+ <button class="btn secondary btn-xs" id="btnImport">📥 Import</button>
288
+ <button class="btn secondary btn-xs" id="btnExport">📤 Export</button>
289
+ </div>
290
+ </div>
291
+ </div>
292
+ <div class="scroll-area">
293
+ <div class="form-group">
294
+ <div class="label-row">
295
+ <label class="cyan-label">PLUGINS <span id="pluginCount"
296
+ style="color:var(--t2);font-weight:normal;font-size:10px;margin-left:4px">3/7</span></label>
297
+ <span class="file-actions">
298
+ <a id="btnPluginAll" class="link-btn">All</a><span class="link-sep">|</span><a
299
+ id="btnPluginNone" class="link-btn">None</a>
300
+ </span>
301
+ </div>
302
+ <div class="plugin-grid" id="pluginGrid">
303
+ <div class="plugin-group-title" id="lblCorePlugins">🔒 Core (Required)</div>
304
+ <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
305
+ class="plugin-checkbox" value="opencode-antigravity-auth" checked disabled><span
306
+ class="checkmark"></span>⚡ opencode-antigravity-auth</label><span
307
+ class="plugin-desc">Authentication (required)</span></div>
308
+ <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
309
+ class="plugin-checkbox" value="oh-my-opencode" checked disabled><span
310
+ class="checkmark"></span>🤖 oh-my-opencode</label><span class="plugin-desc">oMo
311
+ Agents (required)</span></div>
312
+ <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
313
+ class="plugin-checkbox" value="@tarquinen/opencode-dcp" checked disabled><span
314
+ class="checkmark"></span>✂️ @tarquinen/opencode-dcp</label><span
315
+ class="plugin-desc">Context Pruning (required)</span></div>
316
+
317
+ <div class="plugin-group-title" id="lblOptionalPlugins" style="margin-top:4px;">⚙️ Optional
318
+ </div>
319
+ <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
320
+ type="checkbox" class="plugin-checkbox" id="chkPluginSupermemory"
321
+ value="opencode-supermemory"><span class="checkmark"></span>🧠
322
+ opencode-supermemory</label><span class="plugin-badge hidden" id="warnSupermemory">⚠
323
+ No key</span><span class="plugin-desc">RAG Memory System</span></div>
324
+ <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
325
+ type="checkbox" class="plugin-checkbox"
326
+ value="@ramtinj95/opencode-tokenscope"><span class="checkmark"></span>📊
327
+ @ramtinj95/opencode-tokenscope</label><span class="plugin-desc">Token Usage
328
+ Stats</span></div>
329
+ <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
330
+ type="checkbox" class="plugin-checkbox" id="chkPluginOpenSync"
331
+ value="opencode-sync-plugin"><span class="checkmark"></span>🌩️
332
+ opencode-sync-plugin</label><span class="plugin-badge hidden" id="warnOpenSync">⚠ No
333
+ key</span><span class="plugin-desc">Chat Sync (OpenSync)</span></div>
334
+ <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
335
+ type="checkbox" class="plugin-checkbox" value="cc-safety-net"><span
336
+ class="checkmark"></span>🛡️
337
+ cc-safety-net</label><span class="plugin-desc">Safety Guard</span></div>
338
+ </div>
339
+ <div style="margin-top:6px;text-align:right;">
340
+ <button class="btn secondary btn-xs" id="btnPreviewConfig">👁 Preview opencode.json</button>
341
+ </div>
342
+ </div>
343
+ <div class="divider"></div>
344
+ <div class="form-group">
345
+ <div class="label-row"><label class="cyan-label">SUPERMEMORY</label><span
346
+ class="val-indicator val-empty" id="valSupermemory">(Optional)</span></div>
347
+ <span class="help-text">API Key (console.supermemory.ai/keys)</span>
348
+ <input type="text" id="txtSupermemoryKey" class="modern-input" spellcheck="false"
349
+ placeholder="sm_...">
350
+ </div>
351
+ <div class="form-group">
352
+ <div class="label-row"><label class="purple-label">OPENSYNC</label><span
353
+ class="val-indicator val-empty" id="valOpenSyncKey">(Optional)</span></div>
354
+ <span class="help-text">API Key (opensync.dev → Settings)</span>
355
+ <input type="text" id="txtOpenSyncKey" class="modern-input" spellcheck="false">
356
+ <div class="label-row"><span class="help-text">Convex URL</span><span
357
+ class="val-indicator val-empty" id="valOpenSyncUrl">(Optional)</span></div>
358
+ <input type="text" id="txtOpenSyncUrl" class="modern-input" spellcheck="false"
359
+ placeholder="https://...convex.cloud">
360
+ </div>
361
+
362
+ <div class="divider"></div>
363
+ <label class="grey-label">OPTIONS</label>
364
+ <label class="modern-checkbox"><input type="checkbox" id="chkBackup" checked><span
365
+ class="checkmark"></span>Backup konfigurasi lama</label>
366
+ <label class="modern-checkbox"><input type="checkbox" id="chkNpmInstall" checked><span
367
+ class="checkmark"></span>Jalankan npm install</label>
368
+ </div>
369
+ <div class="page-footer">
370
+ <button class="btn secondary" id="btnPrev3">← Back</button>
371
+ <button class="btn primary" id="btnNext3">Install Now →</button>
372
+ </div>
373
+ </div>
374
+ <!-- PAGE 4: INSTALLING -->
375
+ <div id="page4" class="page">
376
+ <div class="page-header">
377
+ <h2 id="installTitle">Installing...</h2>
378
+ <p id="installSubtitle">Menyalin konfigurasi...</p>
379
+ </div>
380
+ <div class="progress-container">
381
+ <div class="progress-bar" id="installProgress" style="width:0%"></div>
382
+ </div>
383
+ <div class="log-container">
384
+ <div class="log-header"><span class="log-title">Log</span></div>
385
+ <div class="log-content scroll-area" id="logContent"></div>
386
+ </div>
387
+ <div class="page-footer"><button class="btn primary hidden" id="btnNext4">Finish ✓</button></div>
388
+ </div>
389
+ <!-- PAGE 5: COMPLETE -->
390
+ <div id="page5" class="page">
391
+ <div class="center-content">
392
+ <div class="success-icon">✓</div>
393
+ <h2>Installation Complete!</h2>
394
+ <p class="success-text">Antigravity OpenCode siap digunakan</p>
395
+ <div class="summary-card"><label class="cyan-label">📁 Config Location</label>
396
+ <div class="code-text" id="txtConfigPath">...</div>
397
+ </div>
398
+ <div class="summary-card"><label class="purple-label">🚀 Next Steps</label>
399
+ <div class="step-text">1. opencode auth login</div>
400
+ <div class="step-text">2. opencode</div>
401
+ </div>
402
+ <div class="action-row" style="flex-wrap: wrap; justify-content: center; gap: 8px;">
403
+ <button class="btn secondary" id="btnOpenFolder">📂 Config</button>
404
+ <button class="btn secondary" id="btnAuthLogin">🔑 Auth</button>
405
+ <button class="btn secondary" id="btnRunCLI">💻 CLI</button>
406
+ <button class="btn secondary" id="btnRunWeb">🌐 Web</button>
407
+ <button class="btn primary" id="btnFinish">Close</button>
408
+ </div>
409
+ </div>
410
+ </div>
411
+ </div>
412
+ </div>
413
+ <!-- MODAL -->
414
+ <div class="modal-overlay" id="modal">
415
+ <div class="modal-container">
416
+ <div class="modal-header"><span class="modal-title" id="modalTitle">Title</span><button class="modal-close"
417
+ id="btnModalClose">✕</button></div>
418
+ <div class="modal-body" id="modalBody"></div>
419
+ </div>
420
+ </div>
421
+ <script src="i18n.js"></script>
422
+ <script src="renderer.js"></script>
423
+ </body>
424
+
425
+ </html>
426
+
package/main.js CHANGED
@@ -9,8 +9,9 @@ const configData = require('./config-data.js');
9
9
  let mainWindow;
10
10
  const configDir = path.join(os.homedir(), '.config', 'opencode');
11
11
 
12
- const CONFIG_VERSION = '1.0.0';
13
- const CONFIG_DATE = '2026-02-20';
12
+ const pkg = require('./package.json');
13
+ const CONFIG_VERSION = pkg.version;
14
+ const CONFIG_DATE = new Date().toISOString().split('T')[0];
14
15
  const VERSION_CHECK_URL = '';
15
16
 
16
17
  const BUNDLED_CONFIGS = [
@@ -63,6 +64,16 @@ ipcMain.on('run-auth-login', () => {
63
64
  spawn('cmd.exe', ['/c', 'start', 'cmd', '/k', 'opencode auth login'], { detached: true, stdio: 'ignore' });
64
65
  }
65
66
  });
67
+ ipcMain.on('run-opencode-cli', () => {
68
+ if (process.platform === 'win32') {
69
+ spawn('cmd.exe', ['/c', 'start', 'cmd', '/k', 'opencode'], { detached: true, stdio: 'ignore' });
70
+ }
71
+ });
72
+ ipcMain.on('run-opencode-web', () => {
73
+ if (process.platform === 'win32') {
74
+ spawn('cmd.exe', ['/c', 'start', 'cmd', '/k', 'opencode --port 8080'], { detached: true, stdio: 'ignore' });
75
+ }
76
+ });
66
77
 
67
78
  function runCommand(cmd) {
68
79
  return new Promise(resolve => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-antigravity-config",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "GUI installer for Antigravity OpenCode configuration",
5
5
  "main": "main.js",
6
6
  "bin": {
package/preload.js CHANGED
@@ -18,5 +18,7 @@ contextBridge.exposeInMainWorld('api', {
18
18
  onInstallLog: (cb) => { ipcRenderer.removeAllListeners('install-log'); ipcRenderer.on('install-log', (e, d) => cb(d)); },
19
19
  onInstallComplete: (cb) => { ipcRenderer.removeAllListeners('install-complete'); ipcRenderer.on('install-complete', (e, d) => cb(d)); },
20
20
  openConfigFolder: () => ipcRenderer.send('open-config-folder'),
21
- runAuthLogin: () => ipcRenderer.send('run-auth-login')
21
+ runAuthLogin: () => ipcRenderer.send('run-auth-login'),
22
+ runOpencodeCLI: () => ipcRenderer.send('run-opencode-cli'),
23
+ runOpencodeWeb: () => ipcRenderer.send('run-opencode-web')
22
24
  });
package/renderer.js CHANGED
@@ -54,7 +54,7 @@ document.addEventListener('DOMContentLoaded', () => {
54
54
 
55
55
  // ── Page 0: Welcome ──
56
56
  document.getElementById('btnStart').addEventListener('click', () => { navigateTo(1); });
57
- (async () => { const m = await window.api.getConfigMeta(); const el = document.getElementById('configMetaText'); if (el && m) el.textContent = `Config v${m.version} • ${m.date} • ${m.fileCount} files`; })();
57
+ (async () => { const m = await window.api.getConfigMeta(); const el = document.getElementById('configMetaText'); if (el && m) el.textContent = `Config v${m.version} • ${m.date} • ${m.fileCount} files`; const vt = document.querySelector('.version-text'); if (vt && m) vt.textContent = `v${m.version}`; })();
58
58
 
59
59
  // Agent Model Selection Logic
60
60
  const AGENT_GROUPS = {
@@ -313,5 +313,7 @@ document.addEventListener('DOMContentLoaded', () => {
313
313
  document.getElementById('btnNext4').addEventListener('click', () => navigateTo(5));
314
314
  document.getElementById('btnOpenFolder').addEventListener('click', () => window.api.openConfigFolder());
315
315
  document.getElementById('btnAuthLogin').addEventListener('click', () => window.api.runAuthLogin());
316
+ document.getElementById('btnRunCLI').addEventListener('click', () => window.api.runOpencodeCLI());
317
+ document.getElementById('btnRunWeb').addEventListener('click', () => window.api.runOpencodeWeb());
316
318
  document.getElementById('btnFinish').addEventListener('click', () => window.api.close());
317
319
  });