jivamai 0.2.33-dev.f1a0ab3 → 0.2.34-dev.828ae62
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/dist/assets/index-Bnmqb4t0.js +31 -0
- package/dist/assets/index-C6vx7BMs.css +10 -0
- package/dist/index.html +2 -2
- package/dist/offline.html +343 -0
- package/dist/sw.js +44 -0
- package/dist-server/index.js +1 -1
- package/dist-server/offline.html +343 -0
- package/dist-server/sw.js +44 -0
- package/package.json +1 -1
- package/public/offline.html +343 -0
- package/public/sw.js +44 -0
- package/dist/assets/index-4So1kBgC.css +0 -10
- package/dist/assets/index-CbMmXFFf.js +0 -31
|
@@ -0,0 +1,343 @@
|
|
|
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
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' http://localhost:*;" />
|
|
7
|
+
<meta name="theme-color" content="#8b5cf6" />
|
|
8
|
+
<title>Jivam — Not Running</title>
|
|
9
|
+
<style>
|
|
10
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
11
|
+
|
|
12
|
+
:root {
|
|
13
|
+
--bg: #0A0A0B;
|
|
14
|
+
--card: rgba(28, 28, 33, 0.85);
|
|
15
|
+
--card-border: rgba(139, 92, 246, 0.2);
|
|
16
|
+
--text: #F5F3FF;
|
|
17
|
+
--text-muted: #9CA3AF;
|
|
18
|
+
--text-subtle: #6B7280;
|
|
19
|
+
--accent: #A78BFA;
|
|
20
|
+
--accent-blue: #60A5FA;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
html, body {
|
|
24
|
+
height: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
body {
|
|
28
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
|
29
|
+
background: var(--bg);
|
|
30
|
+
color: var(--text);
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
padding: 24px;
|
|
35
|
+
overflow-x: hidden;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Aurora background — same visual language as the main app's .aurora-bg */
|
|
39
|
+
.aurora {
|
|
40
|
+
position: fixed;
|
|
41
|
+
inset: 0;
|
|
42
|
+
pointer-events: none;
|
|
43
|
+
z-index: 0;
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
}
|
|
46
|
+
.aurora::before,
|
|
47
|
+
.aurora::after {
|
|
48
|
+
content: '';
|
|
49
|
+
position: absolute;
|
|
50
|
+
border-radius: 50%;
|
|
51
|
+
animation: aurora-drift 22s ease-in-out infinite;
|
|
52
|
+
}
|
|
53
|
+
.aurora::before {
|
|
54
|
+
width: 80%;
|
|
55
|
+
height: 80%;
|
|
56
|
+
top: -20%;
|
|
57
|
+
left: -10%;
|
|
58
|
+
background: radial-gradient(ellipse, rgba(139, 92, 246, 0.14) 0%, transparent 70%);
|
|
59
|
+
}
|
|
60
|
+
.aurora::after {
|
|
61
|
+
width: 60%;
|
|
62
|
+
height: 60%;
|
|
63
|
+
bottom: -10%;
|
|
64
|
+
right: -10%;
|
|
65
|
+
background: radial-gradient(ellipse, rgba(59, 130, 246, 0.1) 0%, transparent 70%);
|
|
66
|
+
animation-duration: 27s;
|
|
67
|
+
animation-direction: reverse;
|
|
68
|
+
}
|
|
69
|
+
@keyframes aurora-drift {
|
|
70
|
+
0%, 100% { transform: translate(0, 0) scale(1); }
|
|
71
|
+
33% { transform: translate(40px, -30px) scale(1.05); }
|
|
72
|
+
66% { transform: translate(-30px, 20px) scale(0.95); }
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.card {
|
|
76
|
+
position: relative;
|
|
77
|
+
z-index: 1;
|
|
78
|
+
width: 100%;
|
|
79
|
+
max-width: 520px;
|
|
80
|
+
max-height: 90vh;
|
|
81
|
+
overflow-y: auto;
|
|
82
|
+
background: var(--card);
|
|
83
|
+
border: 1px solid var(--card-border);
|
|
84
|
+
border-radius: 20px;
|
|
85
|
+
padding: 36px;
|
|
86
|
+
text-align: center;
|
|
87
|
+
box-shadow: 0 4px 24px rgba(139, 92, 246, 0.15);
|
|
88
|
+
backdrop-filter: blur(12px);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.logo-badge {
|
|
92
|
+
width: 72px;
|
|
93
|
+
height: 72px;
|
|
94
|
+
margin: 0 auto 20px;
|
|
95
|
+
border-radius: 18px;
|
|
96
|
+
display: flex;
|
|
97
|
+
align-items: center;
|
|
98
|
+
justify-content: center;
|
|
99
|
+
background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), rgba(59, 130, 246, 0.15));
|
|
100
|
+
}
|
|
101
|
+
.logo-badge img {
|
|
102
|
+
width: 44px;
|
|
103
|
+
height: 44px;
|
|
104
|
+
object-fit: contain;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
h1 {
|
|
108
|
+
font-size: 22px;
|
|
109
|
+
font-weight: 600;
|
|
110
|
+
margin-bottom: 8px;
|
|
111
|
+
background: linear-gradient(135deg, var(--accent), var(--accent-blue));
|
|
112
|
+
-webkit-background-clip: text;
|
|
113
|
+
background-clip: text;
|
|
114
|
+
-webkit-text-fill-color: transparent;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.subtitle {
|
|
118
|
+
font-size: 14px;
|
|
119
|
+
color: var(--text-muted);
|
|
120
|
+
line-height: 1.6;
|
|
121
|
+
margin-bottom: 24px;
|
|
122
|
+
max-width: 400px;
|
|
123
|
+
margin-left: auto;
|
|
124
|
+
margin-right: auto;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.subtitle code {
|
|
128
|
+
background: rgba(139, 92, 246, 0.15);
|
|
129
|
+
color: var(--accent);
|
|
130
|
+
padding: 1px 6px;
|
|
131
|
+
border-radius: 4px;
|
|
132
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
133
|
+
font-size: 13px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* ── Terminal mockups ──────────────────────────────────────────── */
|
|
137
|
+
.terminal {
|
|
138
|
+
text-align: left;
|
|
139
|
+
border-radius: 10px;
|
|
140
|
+
overflow: hidden;
|
|
141
|
+
margin: 0 auto 22px;
|
|
142
|
+
max-width: 400px;
|
|
143
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
144
|
+
font-size: 13px;
|
|
145
|
+
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* macOS Terminal.app chrome */
|
|
149
|
+
.terminal.mac .titlebar {
|
|
150
|
+
background: #3a3a3d;
|
|
151
|
+
padding: 9px 12px;
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
gap: 8px;
|
|
155
|
+
}
|
|
156
|
+
.terminal.mac .dot { width: 11px; height: 11px; border-radius: 50%; flex-shrink: 0; }
|
|
157
|
+
.terminal.mac .dot.red { background: #ff5f57; }
|
|
158
|
+
.terminal.mac .dot.yellow { background: #febc2e; }
|
|
159
|
+
.terminal.mac .dot.green { background: #28c840; }
|
|
160
|
+
.terminal.mac .titlebar .title {
|
|
161
|
+
flex: 1;
|
|
162
|
+
text-align: center;
|
|
163
|
+
color: rgba(255, 255, 255, 0.55);
|
|
164
|
+
font-size: 12px;
|
|
165
|
+
font-family: -apple-system, sans-serif;
|
|
166
|
+
margin-right: 43px; /* balance the dots on the left */
|
|
167
|
+
}
|
|
168
|
+
.terminal.mac .body { background: #1e1e1e; padding: 16px; }
|
|
169
|
+
|
|
170
|
+
/* Windows Terminal / PowerShell chrome */
|
|
171
|
+
.terminal.win .titlebar {
|
|
172
|
+
background: #2b2b2b;
|
|
173
|
+
padding: 8px 6px 8px 12px;
|
|
174
|
+
display: flex;
|
|
175
|
+
align-items: center;
|
|
176
|
+
gap: 8px;
|
|
177
|
+
}
|
|
178
|
+
.terminal.win .titlebar .icon {
|
|
179
|
+
width: 14px;
|
|
180
|
+
height: 14px;
|
|
181
|
+
border-radius: 3px;
|
|
182
|
+
background: linear-gradient(135deg, #5391fe, #1e3a7b);
|
|
183
|
+
flex-shrink: 0;
|
|
184
|
+
}
|
|
185
|
+
.terminal.win .titlebar .title {
|
|
186
|
+
flex: 1;
|
|
187
|
+
color: rgba(255, 255, 255, 0.7);
|
|
188
|
+
font-size: 12px;
|
|
189
|
+
font-family: 'Segoe UI', system-ui, sans-serif;
|
|
190
|
+
}
|
|
191
|
+
.terminal.win .titlebar .win-btn {
|
|
192
|
+
width: 30px;
|
|
193
|
+
height: 24px;
|
|
194
|
+
display: flex;
|
|
195
|
+
align-items: center;
|
|
196
|
+
justify-content: center;
|
|
197
|
+
color: rgba(255, 255, 255, 0.55);
|
|
198
|
+
font-size: 10px;
|
|
199
|
+
border-radius: 3px;
|
|
200
|
+
}
|
|
201
|
+
.terminal.win .titlebar .win-btn.close:hover { background: #e81123; color: #fff; }
|
|
202
|
+
.terminal.win .body { background: #012456; padding: 16px; }
|
|
203
|
+
|
|
204
|
+
.terminal .line {
|
|
205
|
+
color: rgba(255, 255, 255, 0.85);
|
|
206
|
+
line-height: 1.7;
|
|
207
|
+
white-space: pre;
|
|
208
|
+
}
|
|
209
|
+
.terminal .prompt { color: #8b8b8b; }
|
|
210
|
+
.terminal.win .prompt { color: #7fb2f0; }
|
|
211
|
+
.terminal .cmd { color: #ffffff; font-weight: 600; }
|
|
212
|
+
.terminal .cursor {
|
|
213
|
+
display: inline-block;
|
|
214
|
+
width: 7px;
|
|
215
|
+
height: 14px;
|
|
216
|
+
background: rgba(255, 255, 255, 0.75);
|
|
217
|
+
vertical-align: -2px;
|
|
218
|
+
animation: blink 1.1s step-end infinite;
|
|
219
|
+
}
|
|
220
|
+
@keyframes blink { 50% { opacity: 0; } }
|
|
221
|
+
|
|
222
|
+
/* ── Status / retry ────────────────────────────────────────────── */
|
|
223
|
+
.status {
|
|
224
|
+
display: flex;
|
|
225
|
+
align-items: center;
|
|
226
|
+
justify-content: center;
|
|
227
|
+
gap: 8px;
|
|
228
|
+
font-size: 12px;
|
|
229
|
+
color: var(--text-subtle);
|
|
230
|
+
margin-bottom: 18px;
|
|
231
|
+
}
|
|
232
|
+
.dots { display: inline-flex; gap: 4px; }
|
|
233
|
+
.dots span {
|
|
234
|
+
width: 5px;
|
|
235
|
+
height: 5px;
|
|
236
|
+
border-radius: 50%;
|
|
237
|
+
background: var(--accent);
|
|
238
|
+
animation: dotBounce 1.4s ease-in-out infinite;
|
|
239
|
+
}
|
|
240
|
+
.dots span:nth-child(2) { animation-delay: 0.2s; }
|
|
241
|
+
.dots span:nth-child(3) { animation-delay: 0.4s; }
|
|
242
|
+
@keyframes dotBounce {
|
|
243
|
+
0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
|
|
244
|
+
30% { transform: translateY(-4px); opacity: 1; }
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
button {
|
|
248
|
+
font-family: inherit;
|
|
249
|
+
font-size: 14px;
|
|
250
|
+
font-weight: 500;
|
|
251
|
+
color: #fff;
|
|
252
|
+
background: var(--accent);
|
|
253
|
+
border: none;
|
|
254
|
+
border-radius: 12px;
|
|
255
|
+
padding: 10px 22px;
|
|
256
|
+
cursor: pointer;
|
|
257
|
+
transition: opacity 0.15s ease;
|
|
258
|
+
}
|
|
259
|
+
button:hover { opacity: 0.88; }
|
|
260
|
+
button:active { opacity: 0.75; }
|
|
261
|
+
</style>
|
|
262
|
+
</head>
|
|
263
|
+
<body>
|
|
264
|
+
<div class="aurora"></div>
|
|
265
|
+
|
|
266
|
+
<div class="card">
|
|
267
|
+
<div class="logo-badge">
|
|
268
|
+
<img src="data:image/png;base64,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" alt="Jivam" />
|
|
269
|
+
</div>
|
|
270
|
+
|
|
271
|
+
<h1>Jivam isn't running</h1>
|
|
272
|
+
<p class="subtitle" id="subtitle">
|
|
273
|
+
The Jivam background service isn't running. Open Terminal and run the command below to start it.
|
|
274
|
+
</p>
|
|
275
|
+
|
|
276
|
+
<div class="terminal mac" id="terminal-mac">
|
|
277
|
+
<div class="titlebar">
|
|
278
|
+
<span class="dot red"></span><span class="dot yellow"></span><span class="dot green"></span>
|
|
279
|
+
<span class="title">Terminal — zsh — 80×24</span>
|
|
280
|
+
</div>
|
|
281
|
+
<div class="body">
|
|
282
|
+
<div class="line"><span class="prompt">you@mac ~ %</span> <span class="cmd">jivam</span></div>
|
|
283
|
+
<div class="line"><span class="prompt">you@mac ~ %</span> <span class="cursor"></span></div>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<div class="terminal win" id="terminal-win" style="display:none">
|
|
288
|
+
<div class="titlebar">
|
|
289
|
+
<span class="icon"></span>
|
|
290
|
+
<span class="title">Windows PowerShell</span>
|
|
291
|
+
<span class="win-btn">─</span><span class="win-btn">▢</span><span class="win-btn close">✕</span>
|
|
292
|
+
</div>
|
|
293
|
+
<div class="body">
|
|
294
|
+
<div class="line"><span class="prompt">PS C:\Users\you></span> <span class="cmd">jivam</span></div>
|
|
295
|
+
<div class="line"><span class="prompt">PS C:\Users\you></span> <span class="cursor"></span></div>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
|
|
299
|
+
<div class="status">
|
|
300
|
+
<span class="dots"><span></span><span></span><span></span></span>
|
|
301
|
+
<span id="status-text">Checking automatically...</span>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<button id="retry-btn">Try Again</button>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<script>
|
|
308
|
+
(function () {
|
|
309
|
+
var ua = navigator.userAgent || ''
|
|
310
|
+
var plat = navigator.platform || ''
|
|
311
|
+
var isWindows = /Win/.test(plat) || /Windows/.test(ua)
|
|
312
|
+
|
|
313
|
+
if (isWindows) {
|
|
314
|
+
document.getElementById('terminal-mac').style.display = 'none'
|
|
315
|
+
document.getElementById('terminal-win').style.display = ''
|
|
316
|
+
document.getElementById('subtitle').textContent =
|
|
317
|
+
'The Jivam background service isn\'t running. Open PowerShell and run the command below to start it.'
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
var checking = false
|
|
321
|
+
function checkServer() {
|
|
322
|
+
if (checking) return
|
|
323
|
+
checking = true
|
|
324
|
+
fetch('/api/version', { cache: 'no-store' })
|
|
325
|
+
.then(function (res) {
|
|
326
|
+
if (res.ok) {
|
|
327
|
+
window.location.href = '/'
|
|
328
|
+
} else {
|
|
329
|
+
checking = false
|
|
330
|
+
}
|
|
331
|
+
})
|
|
332
|
+
.catch(function () { checking = false })
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
setInterval(checkServer, 3000)
|
|
336
|
+
document.getElementById('retry-btn').addEventListener('click', function () {
|
|
337
|
+
document.getElementById('status-text').textContent = 'Checking...'
|
|
338
|
+
window.location.reload()
|
|
339
|
+
})
|
|
340
|
+
})()
|
|
341
|
+
</script>
|
|
342
|
+
</body>
|
|
343
|
+
</html>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Minimal offline-fallback service worker. This does NOT cache the app
|
|
2
|
+
// shell (index.html / hashed JS-CSS bundles) or any API responses — only
|
|
3
|
+
// enough to show a friendly "Jivam isn't running" page when the background
|
|
4
|
+
// service (which serves this whole origin) is unreachable, e.g. right after
|
|
5
|
+
// a reboot before `jivam` has started, or if it crashed. Caching the app
|
|
6
|
+
// bundle itself would risk serving stale code after an update, which is
|
|
7
|
+
// exactly the class of bug Jivam's own auto-updater was built to avoid —
|
|
8
|
+
// see CLAUDE.md's "updater is real now" note. Keep this worker scoped to
|
|
9
|
+
// just the offline fallback; don't grow it into a general asset cache.
|
|
10
|
+
// offline.html inlines its own logo as a data URI, so it's the only URL
|
|
11
|
+
// that needs precaching — no separate image request for the SW's minimal
|
|
12
|
+
// non-navigation-aware fetch handler (below) to worry about missing.
|
|
13
|
+
const CACHE_NAME = 'jivam-offline-v2'
|
|
14
|
+
const OFFLINE_URL = '/offline.html'
|
|
15
|
+
const PRECACHE_URLS = [OFFLINE_URL]
|
|
16
|
+
|
|
17
|
+
self.addEventListener('install', (event) => {
|
|
18
|
+
event.waitUntil(
|
|
19
|
+
caches.open(CACHE_NAME)
|
|
20
|
+
.then((cache) => cache.addAll(PRECACHE_URLS))
|
|
21
|
+
.then(() => self.skipWaiting())
|
|
22
|
+
)
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
self.addEventListener('activate', (event) => {
|
|
26
|
+
event.waitUntil(
|
|
27
|
+
caches.keys()
|
|
28
|
+
.then((keys) => Promise.all(keys.filter((k) => k !== CACHE_NAME).map((k) => caches.delete(k))))
|
|
29
|
+
.then(() => self.clients.claim())
|
|
30
|
+
)
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
self.addEventListener('fetch', (event) => {
|
|
34
|
+
// Only intercept top-level page navigations — never API calls, the WS
|
|
35
|
+
// upgrade, or hashed asset requests. A failed asset/API request should
|
|
36
|
+
// just fail normally and let the app's own UI handle it; only a failed
|
|
37
|
+
// *navigation* (the background service isn't reachable at all) gets the
|
|
38
|
+
// offline fallback page.
|
|
39
|
+
if (event.request.mode !== 'navigate') return
|
|
40
|
+
|
|
41
|
+
event.respondWith(
|
|
42
|
+
fetch(event.request).catch(() => caches.match(OFFLINE_URL))
|
|
43
|
+
)
|
|
44
|
+
})
|