anygate 0.1.0

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.
@@ -0,0 +1,217 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>anygate settings</title>
7
+ <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' rx='8' fill='%232a2724'/><text x='50%25' y='23' font-family='system-ui' font-size='20' font-weight='800' fill='%23e0a44a' text-anchor='middle'>A</text></svg>">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="style.css">
12
+ </head>
13
+ <body>
14
+ <div class="layout">
15
+
16
+ <!-- Sidebar -->
17
+ <aside class="sidebar">
18
+ <div class="sidebar-brand">
19
+ <div class="brand-logo"><span class="brand-monogram">a</span></div>
20
+ <div class="brand-meta">
21
+ <div class="brand-name">anygate</div>
22
+ <div class="brand-byline">ramanan-techlover</div>
23
+ </div>
24
+ </div>
25
+
26
+ <div class="sidebar-version-area" id="sidebar-version-area">
27
+ <div class="sidebar-version">v{{VERSION}}</div>
28
+ <button
29
+ class="update-indicator"
30
+ id="update-indicator"
31
+ type="button"
32
+ aria-expanded="false"
33
+ aria-controls="update-popover"
34
+ hidden
35
+ >đź”” Update available</button>
36
+ <div class="update-popover" id="update-popover" role="dialog" aria-label="anygate update" hidden>
37
+ <div class="update-popover-title">Update available</div>
38
+ <div class="update-version-row"><span>Installed</span><strong id="update-current-version"></strong></div>
39
+ <div class="update-version-row"><span>Available</span><strong id="update-latest-version"></strong></div>
40
+ <code class="update-command" id="update-command">npm install -g anygate@latest</code>
41
+ <button class="btn btn-primary btn-sm update-copy-btn" id="update-copy-btn" type="button">Copy update command</button>
42
+ </div>
43
+ </div>
44
+
45
+ <nav class="sidebar-nav" aria-label="Sections">
46
+ <a href="#providers" class="nav-item active" data-section="providers">
47
+ <span class="nav-icon">
48
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
49
+ </span>
50
+ Providers &amp; Keys
51
+ </a>
52
+ <a href="#favorites" class="nav-item" data-section="favorites">
53
+ <span class="nav-icon">
54
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
55
+ </span>
56
+ Favorites
57
+ </a>
58
+ <a href="#antigravity" class="nav-item" data-section="antigravity">
59
+ <span class="nav-icon">
60
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5"/></svg>
61
+ </span>
62
+ Antigravity Favorites
63
+ <span class="nav-badge" id="nav-agy-badge">0/6</span>
64
+ </a>
65
+ <a href="#apps" class="nav-item" data-section="apps">
66
+ <span class="nav-icon">
67
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
68
+ </span>
69
+ Apps &amp; Launch
70
+ </a>
71
+ <a href="#server" class="nav-item" data-section="server">
72
+ <span class="nav-icon">
73
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v6"/><path d="M6.343 8.343a8 8 0 1011.314 0"/></svg>
74
+ </span>
75
+ Server
76
+ <span class="nav-badge nav-badge-status" id="nav-server-badge" hidden>Live</span>
77
+ </a>
78
+ </nav>
79
+
80
+ <div class="sidebar-footer">
81
+ <button class="btn-theme-full" id="theme-toggle" title="Toggle theme">
82
+ <span class="theme-icon"></span>
83
+ <span class="theme-label">Toggle theme</span>
84
+ </button>
85
+ <div class="sidebar-footer-text">Model settings persist to<br><code>~/.anygate/config.json</code></div>
86
+ </div>
87
+ </aside>
88
+
89
+ <!-- Main content -->
90
+ <main class="content" id="content">
91
+
92
+ <!-- Brand hero -->
93
+ <div class="app-hero" id="app-hero">
94
+ <div class="app-hero-wordmark">
95
+ <span class="hero-text">anygate</span>
96
+ </div>
97
+ <p class="app-hero-sub">Unified gateway for Claude, Codex &amp; Gemini.</p>
98
+ </div>
99
+
100
+ <!-- Providers section -->
101
+ <section id="providers" class="section">
102
+ <h2 class="section-heading">Providers <span class="heading-accent">&amp; Keys</span></h2>
103
+ <div class="provider-stats" id="provider-stats"></div>
104
+ <div class="search-row">
105
+ <div class="search-field">
106
+ <svg class="search-icon" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
107
+ <input type="search" id="provider-search" class="search-input" placeholder="Search all providers…" aria-label="Search providers">
108
+ </div>
109
+ <button class="btn btn-ghost btn-refresh-all" id="refresh-all-btn" title="Refresh model lists for all providers">
110
+ <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg>
111
+ Refresh All
112
+ </button>
113
+ </div>
114
+ <div id="refresh-all-status" class="refresh-all-status" hidden></div>
115
+ <div id="providers-list" class="provider-grid" role="list"></div>
116
+
117
+ <div id="available-providers-section" hidden>
118
+ <div class="available-heading">
119
+ <span class="available-heading-label">Available to add</span>
120
+ <span class="available-heading-hint">Enter an API key to configure</span>
121
+ </div>
122
+ <div id="available-providers-list" class="provider-grid provider-grid-available" role="list"></div>
123
+ </div>
124
+ </section>
125
+
126
+ <!-- Favorites group (merged) -->
127
+ <section id="favorites" class="section">
128
+ <h2 class="section-heading">Favorites</h2>
129
+
130
+ <!-- General favorites sub-panel -->
131
+ <div class="fav-subpanel" id="general-fav-subpanel">
132
+ <h3 class="subpanel-heading">General Favorites</h3>
133
+ <div class="agy-slot-bar">
134
+ <div class="agy-slot-label">Slots used</div>
135
+ <div class="agy-slot-pips" id="gen-pips"></div>
136
+ <div class="agy-slot-count" id="gen-counter">0<span class="agy-slot-max">/20</span></div>
137
+ </div>
138
+ <div class="search-row">
139
+ <div class="search-field">
140
+ <svg class="search-icon" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
141
+ <input type="search" id="model-search" class="search-input" placeholder="Search models to add…" aria-label="Search models">
142
+ </div>
143
+ <label class="free-only-toggle">
144
+ <input type="checkbox" id="model-free-only">
145
+ <span>Free models only</span>
146
+ </label>
147
+ </div>
148
+ <div id="model-results" class="model-results" hidden></div>
149
+ <div id="favorites-list" class="fav-list" role="list" aria-label="General favorites" data-list="general"></div>
150
+ </div>
151
+
152
+ <!-- Antigravity favorites sub-panel -->
153
+ <div class="fav-subpanel" id="antigravity-fav-subpanel">
154
+ <h3 class="subpanel-heading">Antigravity Favorites</h3>
155
+ <div class="agy-slot-bar">
156
+ <div class="agy-slot-label">Slots used</div>
157
+ <div class="agy-slot-pips" id="agy-pips"></div>
158
+ <div class="agy-slot-count" id="agy-counter">0<span class="agy-slot-max">/6</span></div>
159
+ </div>
160
+ <div class="search-row">
161
+ <div class="search-field">
162
+ <svg class="search-icon" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
163
+ <input type="search" id="agy-search" class="search-input" placeholder="Search models to add…" aria-label="Search Antigravity models">
164
+ </div>
165
+ <label class="free-only-toggle">
166
+ <input type="checkbox" id="agy-free-only">
167
+ <span>Free models only</span>
168
+ </label>
169
+ </div>
170
+ <div id="agy-results" class="model-results" hidden></div>
171
+ <div id="agy-list" class="fav-list" role="list" aria-label="Antigravity favorites" data-list="agy"></div>
172
+ </div>
173
+ </section>
174
+
175
+ <!-- Apps section -->
176
+ <section id="apps" class="section">
177
+ <h2 class="section-heading">Applications &amp; Launch</h2>
178
+ <div class="search-row">
179
+ <div class="search-field">
180
+ <svg class="search-icon" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
181
+ <input type="search" id="app-model-search" class="search-input" placeholder="Search launch models by provider or model…" aria-label="Search launch models">
182
+ </div>
183
+ <label class="free-only-toggle">
184
+ <input type="checkbox" id="app-free-only">
185
+ <span>Free models only</span>
186
+ </label>
187
+ </div>
188
+
189
+ <div class="apps-columns">
190
+ <div class="provider-grid apps-column" id="apps-list-cli">
191
+ <!-- CLI cards populated dynamically -->
192
+ </div>
193
+ <div class="apps-column-divider" aria-hidden="true"></div>
194
+ <div class="provider-grid apps-column" id="apps-list-apps">
195
+ <!-- Desktop app cards populated dynamically -->
196
+ </div>
197
+ </div>
198
+
199
+ <details class="advanced-app-paths">
200
+ <summary>Advanced app paths</summary>
201
+ <div id="app-paths-list" class="app-paths-list"></div>
202
+ </details>
203
+ </section>
204
+
205
+ <!-- Server section -->
206
+ <section id="server" class="section">
207
+ <h2 class="section-heading">Server Gateway</h2>
208
+ <div id="server-panel"></div>
209
+ </section>
210
+
211
+ </main>
212
+ </div>
213
+
214
+ <div id="toast-container" class="toast-container" aria-live="polite"></div>
215
+ <script src="app.js" type="module"></script>
216
+ </body>
217
+ </html>