opencode-antigravity-config 1.0.2 → 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/README.md CHANGED
@@ -46,7 +46,8 @@ The installer provides one-click AI stack preset configurations under the **"✨
46
46
  | Preset Name | Heavy Group | Standard Group | Light Group | Use Case |
47
47
  |-------------|-------------|----------------|-------------|----------|
48
48
  | **Antigravity Default** | Gemini 3.1 Pro | Gemini 3.1 Pro | Gemini 3 Flash | Best balanced setup for general projects |
49
- | **Max Reasoning (O1 Class)** | Claude Opus 4.6 Thinking | Gemini 3 Deep Think | Claude Sonnet 4.6 | Highly complex logic, deep architecture fixes |
49
+ | **Max Reasoning (O1 Class)** | Claude Opus 4.6 Thinking | Claude Sonnet 4.6 Thinking | Claude Sonnet 4.6 | Highly complex logic, deep architecture fixes |
50
+ | **Hybrid Balance** | Claude Sonnet 4.6 Thinking | Gemini 3.1 Pro | Gemini 3 Flash | Best of both worlds, smart architect + solid coders |
50
51
  | **Fast & Cheap** | Gemini 3 Flash | Gemini 3 Flash | Gemini 3 Flash | Rapid prototyping, straightforward refactoring |
51
52
  | **Claude Ecosystem** | Claude Opus 4.6 Thinking | Claude Sonnet 4.6 | Claude Sonnet 4.6 | Pure Anthropic behavior everywhere |
52
53
 
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;">
@@ -79,345 +79,348 @@
79
79
  <option value="" disabled selected>✨ Load Template</option>
80
80
  <option value="antigravity_default">Antigravity Default</option>
81
81
  <option value="max_reasoning">Max Reasoning (O1 Class)</option>
82
+ <option value="balance_hybrid">Hybrid Balance (Gemini + Claude)</option>
82
83
  <option value="fast_cheap">Fast & Cheap</option>
83
84
  <option value="claude_only">Claude Ecosystem</option>
84
85
  </select>
85
86
  <button type="button" id="btnAgentAdvanced" class="btn secondary btn-agent-toggle">⚙ Advanced</button>
86
87
  </div>
87
- </div>
88
-
89
- <!-- GROUP MODE (default) -->
90
- <div id="agentGroupMode">
91
- <div class="agent-group-row" style="border-left-color: #e74c3c;">
92
- <div class="agent-group-info">
93
- <span class="agent-group-name">🧠 Heavy</span>
94
- <span class="agent-group-members">Sisyphus, Prometheus, Metis, Oracle</span>
95
- </div>
96
- <select id="selGroupHeavy" class="agent-model-select">
97
- <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>
98
99
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
99
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
100
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
101
- Think</option>
102
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
103
- </option>
104
- </select>
105
- </div>
106
- <div class="agent-group-row" style="border-left-color: #f39c12;">
107
- <div class="agent-group-info">
108
- <span class="agent-group-name">⚙️ Standard</span>
109
- <span class="agent-group-members">Hephaestus, Momus, Atlas</span>
110
- </div>
111
- <select id="selGroupStandard" class="agent-model-select">
112
- <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>
113
114
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
114
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
115
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
116
- Think</option>
117
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
118
- </option>
119
- </select>
120
- </div>
121
- <div class="agent-group-row" style="border-left-color: #3498db;">
122
- <div class="agent-group-info">
123
- <span class="agent-group-name">⚡ Light</span>
124
- <span class="agent-group-members">Librarian, Explore, Multimodal-Looker</span>
125
- </div>
126
- <select id="selGroupLight" class="agent-model-select">
127
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
128
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
129
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
130
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
131
- Think</option>
132
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
133
- </option>
134
- </select>
135
- </div>
136
- </div>
137
-
138
- <!-- ADVANCED MODE (per-agent, hidden by default) -->
139
- <div id="agentAdvancedMode" style="display:none;">
140
- <div class="agent-adv-section" style="border-left-color:#e74c3c;">🧠 Heavy Group</div>
141
- <div class="agent-adv-row"><span class="agent-adv-name">Sisyphus
142
- <i>(Orchestrator)</i></span><select id="selAgent_sisyphus"
143
- class="agent-model-select agent-adv-select" data-group="heavy">
144
- <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>
145
146
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
146
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
147
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
148
- Think</option>
149
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
150
- </option>
151
- </select></div>
152
- <div class="agent-adv-row"><span class="agent-adv-name">Prometheus
153
- <i>(Builder)</i></span><select id="selAgent_prometheus"
154
- class="agent-model-select agent-adv-select" data-group="heavy">
155
- <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>
156
157
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
157
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
158
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
159
- Think</option>
160
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
161
- </option>
162
- </select></div>
163
- <div class="agent-adv-row"><span class="agent-adv-name">Metis <i>(Coder)</i></span><select
164
- id="selAgent_metis" class="agent-model-select agent-adv-select" data-group="heavy">
165
- <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>
166
167
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
167
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
168
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
169
- Think</option>
170
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
171
- </option>
172
- </select></div>
173
- <div class="agent-adv-row"><span class="agent-adv-name">Oracle
174
- <i>(Analyst)</i></span><select id="selAgent_oracle"
175
- class="agent-model-select agent-adv-select" data-group="heavy">
176
- <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>
177
178
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
178
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
179
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
180
- Think</option>
181
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
182
- </option>
183
- </select></div>
184
-
185
- <div class="agent-adv-section" style="border-left-color:#f39c12;">⚙️ Standard Group</div>
186
- <div class="agent-adv-row"><span class="agent-adv-name">Hephaestus
187
- <i>(Coder)</i></span><select id="selAgent_hephaestus"
188
- class="agent-model-select agent-adv-select" data-group="standard">
189
- <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>
190
191
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
191
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
192
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
193
- Think</option>
194
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
195
- </option>
196
- </select></div>
197
- <div class="agent-adv-row"><span class="agent-adv-name">Momus
198
- <i>(Reviewer)</i></span><select id="selAgent_momus"
199
- class="agent-model-select agent-adv-select" data-group="standard">
200
- <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>
201
202
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
202
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
203
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
204
- Think</option>
205
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
206
- </option>
207
- </select></div>
208
- <div class="agent-adv-row"><span class="agent-adv-name">Atlas <i>(Worker)</i></span><select
209
- id="selAgent_atlas" class="agent-model-select agent-adv-select"
210
- data-group="standard">
211
- <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>
212
213
  <option value="google/antigravity-gemini-3-flash">Gemini 3 Flash</option>
213
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
214
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
215
- Think</option>
216
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
217
- </option>
218
- </select></div>
219
-
220
- <div class="agent-adv-section" style="border-left-color:#3498db;">⚡ Light Group</div>
221
- <div class="agent-adv-row"><span class="agent-adv-name">Librarian
222
- <i>(Research)</i></span><select id="selAgent_librarian"
223
- class="agent-model-select agent-adv-select" data-group="light">
224
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
225
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
226
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
227
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
228
- Think</option>
229
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
230
- </option>
231
- </select></div>
232
- <div class="agent-adv-row"><span class="agent-adv-name">Explore <i>(Scout)</i></span><select
233
- id="selAgent_explore" class="agent-model-select agent-adv-select"
234
- data-group="light">
235
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
236
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
237
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
238
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
239
- Think</option>
240
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
241
- </option>
242
- </select></div>
243
- <div class="agent-adv-row"><span class="agent-adv-name">Multimodal-Looker
244
- <i>(Vision)</i></span><select id="selAgent_multimodal_looker"
245
- class="agent-model-select agent-adv-select" data-group="light">
246
- <option value="google/antigravity-gemini-3-flash" selected>Gemini 3 Flash</option>
247
- <option value="google/antigravity-gemini-3-1-pro">Gemini 3.1 Pro</option>
248
- <option value="google/antigravity-claude-sonnet-4-6">Claude Sonnet 4.6</option>
249
- <option value="google/antigravity-claude-sonnet-4-6-thinking">Claude Sonnet 4.6
250
- Think</option>
251
- <option value="google/antigravity-claude-opus-4-6-thinking">Claude Opus 4.6 Think
252
- </option>
253
- </select></div>
254
- </div>
255
- </div>
256
- </div>
257
- <div class="page-footer">
258
- <button class="btn secondary" id="btnPrev1">← Back</button>
259
- <div style="flex:1"></div>
260
- <button class="btn primary" id="btnNext1">Continue →</button>
261
- </div>
262
- </div>
263
- <!-- PAGE 2: SYSTEM CHECK -->
264
- <div id="page2" class="page">
265
- <div class="page-header">
266
- <h2>System Check</h2>
267
- <p>Checking environment...</p>
268
- </div>
269
- <div class="scroll-area" id="prereqPanel"></div>
270
- <div class="page-footer">
271
- <button class="btn secondary" id="btnRecheck">🔄 Re-check</button>
272
- <div style="flex:1"></div>
273
- <button class="btn secondary" id="btnPrev2">← Back</button>
274
- <button class="btn primary disabled" id="btnNext2" disabled>Continue →</button>
275
- </div>
276
- </div>
277
- <!-- PAGE 3: CONFIG -->
278
- <div id="page3" class="page">
279
- <div class="page-header">
280
- <div class="header-row">
281
- <div>
282
- <h2>Configuration</h2>
283
- <p>API Keys & file selection</p>
284
- </div>
285
- <div class="header-actions">
286
- <button class="btn secondary btn-xs" id="btnImport">📥 Import</button>
287
- <button class="btn secondary btn-xs" id="btnExport">📤 Export</button>
288
- </div>
289
- </div>
290
- </div>
291
- <div class="scroll-area">
292
- <div class="form-group">
293
- <div class="label-row">
294
- <label class="cyan-label">PLUGINS <span id="pluginCount"
295
- style="color:var(--t2);font-weight:normal;font-size:10px;margin-left:4px">3/7</span></label>
296
- <span class="file-actions">
297
- <a id="btnPluginAll" class="link-btn">All</a><span class="link-sep">|</span><a
298
- id="btnPluginNone" class="link-btn">None</a>
299
- </span>
300
- </div>
301
- <div class="plugin-grid" id="pluginGrid">
302
- <div class="plugin-group-title" id="lblCorePlugins">🔒 Core (Required)</div>
303
- <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
304
- class="plugin-checkbox" value="opencode-antigravity-auth" checked disabled><span
305
- class="checkmark"></span>⚡ opencode-antigravity-auth</label><span
306
- class="plugin-desc">Authentication (required)</span></div>
307
- <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
308
- class="plugin-checkbox" value="oh-my-opencode" checked disabled><span
309
- class="checkmark"></span>🤖 oh-my-opencode</label><span class="plugin-desc">oMo
310
- Agents (required)</span></div>
311
- <div class="plugin-row core-plugin"><label class="modern-checkbox"><input type="checkbox"
312
- class="plugin-checkbox" value="@tarquinen/opencode-dcp" checked disabled><span
313
- class="checkmark"></span>✂️ @tarquinen/opencode-dcp</label><span
314
- class="plugin-desc">Context Pruning (required)</span></div>
315
-
316
- <div class="plugin-group-title" id="lblOptionalPlugins" style="margin-top:4px;">⚙️ Optional
317
- </div>
318
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
319
- type="checkbox" class="plugin-checkbox" id="chkPluginSupermemory"
320
- value="opencode-supermemory"><span class="checkmark"></span>🧠
321
- opencode-supermemory</label><span class="plugin-badge hidden" id="warnSupermemory">⚠
322
- No key</span><span class="plugin-desc">RAG Memory System</span></div>
323
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
324
- type="checkbox" class="plugin-checkbox"
325
- value="@ramtinj95/opencode-tokenscope"><span class="checkmark"></span>📊
326
- @ramtinj95/opencode-tokenscope</label><span class="plugin-desc">Token Usage
327
- Stats</span></div>
328
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
329
- type="checkbox" class="plugin-checkbox" id="chkPluginOpenSync"
330
- value="opencode-sync-plugin"><span class="checkmark"></span>🌩️
331
- opencode-sync-plugin</label><span class="plugin-badge hidden" id="warnOpenSync">⚠ No
332
- key</span><span class="plugin-desc">Chat Sync (OpenSync)</span></div>
333
- <div class="plugin-row optional-plugin"><label class="modern-checkbox"><input
334
- type="checkbox" class="plugin-checkbox" value="cc-safety-net"><span
335
- class="checkmark"></span>🛡️
336
- cc-safety-net</label><span class="plugin-desc">Safety Guard</span></div>
337
- </div>
338
- <div style="margin-top:6px;text-align:right;">
339
- <button class="btn secondary btn-xs" id="btnPreviewConfig">👁 Preview opencode.json</button>
340
- </div>
341
- </div>
342
- <div class="divider"></div>
343
- <div class="form-group">
344
- <div class="label-row"><label class="cyan-label">SUPERMEMORY</label><span
345
- class="val-indicator val-empty" id="valSupermemory">(Optional)</span></div>
346
- <span class="help-text">API Key (console.supermemory.ai/keys)</span>
347
- <input type="text" id="txtSupermemoryKey" class="modern-input" spellcheck="false"
348
- placeholder="sm_...">
349
- </div>
350
- <div class="form-group">
351
- <div class="label-row"><label class="purple-label">OPENSYNC</label><span
352
- class="val-indicator val-empty" id="valOpenSyncKey">(Optional)</span></div>
353
- <span class="help-text">API Key (opensync.dev → Settings)</span>
354
- <input type="text" id="txtOpenSyncKey" class="modern-input" spellcheck="false">
355
- <div class="label-row"><span class="help-text">Convex URL</span><span
356
- class="val-indicator val-empty" id="valOpenSyncUrl">(Optional)</span></div>
357
- <input type="text" id="txtOpenSyncUrl" class="modern-input" spellcheck="false"
358
- placeholder="https://...convex.cloud">
359
- </div>
360
-
361
- <div class="divider"></div>
362
- <label class="grey-label">OPTIONS</label>
363
- <label class="modern-checkbox"><input type="checkbox" id="chkBackup" checked><span
364
- class="checkmark"></span>Backup konfigurasi lama</label>
365
- <label class="modern-checkbox"><input type="checkbox" id="chkNpmInstall" checked><span
366
- class="checkmark"></span>Jalankan npm install</label>
367
- </div>
368
- <div class="page-footer">
369
- <button class="btn secondary" id="btnPrev3">← Back</button>
370
- <button class="btn primary" id="btnNext3">Install Now →</button>
371
- </div>
372
- </div>
373
- <!-- PAGE 4: INSTALLING -->
374
- <div id="page4" class="page">
375
- <div class="page-header">
376
- <h2 id="installTitle">Installing...</h2>
377
- <p id="installSubtitle">Menyalin konfigurasi...</p>
378
- </div>
379
- <div class="progress-container">
380
- <div class="progress-bar" id="installProgress" style="width:0%"></div>
381
- </div>
382
- <div class="log-container">
383
- <div class="log-header"><span class="log-title">Log</span></div>
384
- <div class="log-content scroll-area" id="logContent"></div>
385
- </div>
386
- <div class="page-footer"><button class="btn primary hidden" id="btnNext4">Finish ✓</button></div>
387
- </div>
388
- <!-- PAGE 5: COMPLETE -->
389
- <div id="page5" class="page">
390
- <div class="center-content">
391
- <div class="success-icon">✓</div>
392
- <h2>Installation Complete!</h2>
393
- <p class="success-text">Antigravity OpenCode siap digunakan</p>
394
- <div class="summary-card"><label class="cyan-label">📁 Config Location</label>
395
- <div class="code-text" id="txtConfigPath">...</div>
396
- </div>
397
- <div class="summary-card"><label class="purple-label">🚀 Next Steps</label>
398
- <div class="step-text">1. opencode auth login</div>
399
- <div class="step-text">2. opencode</div>
400
- </div>
401
- <div class="action-row">
402
- <button class="btn secondary" id="btnOpenFolder">📂 Config</button>
403
- <button class="btn secondary" id="btnAuthLogin">🔑 Auth</button>
404
- <button class="btn primary" id="btnFinish">Close</button>
405
- </div>
406
- </div>
407
- </div>
408
- </div>
409
- </div>
410
- <!-- MODAL -->
411
- <div class="modal-overlay" id="modal">
412
- <div class="modal-container">
413
- <div class="modal-header"><span class="modal-title" id="modalTitle">Title</span><button class="modal-close"
414
- id="btnModalClose">✕</button></div>
415
- <div class="modal-body" id="modalBody"></div>
416
- </div>
417
- </div>
418
- <script src="i18n.js"></script>
419
- <script src="renderer.js"></script>
420
- </body>
421
-
422
- </html>
423
-
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.2",
3
+ "version": "1.0.4",
4
4
  "description": "GUI installer for Antigravity OpenCode configuration",
5
5
  "main": "main.js",
6
6
  "bin": {
@@ -22,6 +22,7 @@
22
22
  "@fontsource/fira-code": "^5.2.7",
23
23
  "electron": "^40.6.0",
24
24
  "jimp": "^1.6.0",
25
+ "opencode-antigravity-config": "^1.0.2",
25
26
  "png-to-ico": "^3.0.1"
26
27
  }
27
28
  }
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 = {
@@ -102,6 +102,7 @@ document.addEventListener('DOMContentLoaded', () => {
102
102
  const lookup = {
103
103
  'antigravity_default': ['google/antigravity-gemini-3-1-pro', 'google/antigravity-gemini-3-1-pro', 'google/antigravity-gemini-3-flash'],
104
104
  'max_reasoning': ['google/antigravity-claude-opus-4-6-thinking', 'google/antigravity-claude-sonnet-4-6-thinking', 'google/antigravity-claude-sonnet-4-6'],
105
+ 'balance_hybrid': ['google/antigravity-claude-sonnet-4-6-thinking', 'google/antigravity-gemini-3-1-pro', 'google/antigravity-gemini-3-flash'],
105
106
  'fast_cheap': ['google/antigravity-gemini-3-flash', 'google/antigravity-gemini-3-flash', 'google/antigravity-gemini-3-flash'],
106
107
  'claude_only': ['google/antigravity-claude-opus-4-6-thinking', 'google/antigravity-claude-sonnet-4-6', 'google/antigravity-claude-sonnet-4-6']
107
108
  };
@@ -312,5 +313,7 @@ document.addEventListener('DOMContentLoaded', () => {
312
313
  document.getElementById('btnNext4').addEventListener('click', () => navigateTo(5));
313
314
  document.getElementById('btnOpenFolder').addEventListener('click', () => window.api.openConfigFolder());
314
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());
315
318
  document.getElementById('btnFinish').addEventListener('click', () => window.api.close());
316
319
  });