fleetlens 0.16.2 → 0.16.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/app/apps/web/.next/BUILD_ID +1 -1
- package/app/apps/web/.next/build-manifest.json +3 -3
- package/app/apps/web/.next/prerender-manifest.json +3 -3
- package/app/apps/web/.next/server/app/_global-error.html +1 -1
- package/app/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/agent/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/day/[date]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/day/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/digest/[date]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/digest/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/insights/[key]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/insights/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/print/[key]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/team/onboarding/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/team/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0sr4wr_.js +1 -1
- package/app/apps/web/.next/server/chunks/packages_parser_dist_06d9se1._.js +1 -1
- package/app/apps/web/.next/server/chunks/packages_parser_dist_10ihc3~._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/_0k8yioi._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_0epqfet._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0n7_p1d._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0nb5_-s._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_0mx_509._.js +1 -1
- package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/app/apps/web/.next/server/middleware-manifest.json +5 -5
- package/app/apps/web/.next/server/pages/500.html +1 -1
- package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/app/apps/web/.next/static/chunks/13hdlcc0bj_zt.js +14 -0
- package/app/apps/web/.next/static/chunks/16gca31.pi4.o.css +1 -0
- package/app/apps/web/app/globals.css +19 -9
- package/app/apps/web/app/usage/page.tsx +27 -1
- package/app/apps/web/lib/changelog-data.generated.ts +1 -1
- package/app/apps/web/package.json +1 -1
- package/app/apps/web/tsconfig.tsbuildinfo +1 -1
- package/dist/daemon-worker.js +46 -21
- package/dist/index.js +51 -28
- package/menubar/FleetlensMenubar.app/Contents/Info.plist +2 -2
- package/menubar/FleetlensMenubar.app/Contents/MacOS/FleetlensMenubar +0 -0
- package/package.json +1 -1
- package/app/apps/web/.next/static/chunks/0d~7p_ye7v7_5.css +0 -1
- package/app/apps/web/.next/static/chunks/0jes0m38a9ib_.js +0 -14
- /package/app/apps/web/.next/static/{q_fQaCe85j7F9VawBRe81 → cKCY-h3trXN9_kNrMfxWd}/_buildManifest.js +0 -0
- /package/app/apps/web/.next/static/{q_fQaCe85j7F9VawBRe81 → cKCY-h3trXN9_kNrMfxWd}/_clientMiddlewareManifest.js +0 -0
- /package/app/apps/web/.next/static/{q_fQaCe85j7F9VawBRe81 → cKCY-h3trXN9_kNrMfxWd}/_ssgManifest.js +0 -0
package/dist/daemon-worker.js
CHANGED
|
@@ -3219,6 +3219,15 @@ async function getCodexSession(id, opts = {}) {
|
|
|
3219
3219
|
function hasUsableRateLimitWindows(primary, secondary) {
|
|
3220
3220
|
return numberOf(primary?.used_percent) !== void 0 || numberOf(secondary?.used_percent) !== void 0;
|
|
3221
3221
|
}
|
|
3222
|
+
function normalizeCodexWindow(raw, nowMs) {
|
|
3223
|
+
const usedPercent = numberOf(raw?.used_percent);
|
|
3224
|
+
const resetUnix = numberOf(raw?.resets_at);
|
|
3225
|
+
const expired = resetUnix !== void 0 && nowMs > resetUnix * 1e3;
|
|
3226
|
+
return {
|
|
3227
|
+
utilization: usedPercent === void 0 ? null : expired ? 0 : usedPercent,
|
|
3228
|
+
resets_at: resetUnix !== void 0 ? new Date(resetUnix * 1e3).toISOString() : null
|
|
3229
|
+
};
|
|
3230
|
+
}
|
|
3222
3231
|
async function getLatestCodexUsage(opts = {}) {
|
|
3223
3232
|
const root = opts.root ?? DEFAULT_CODEX_ROOT;
|
|
3224
3233
|
const files = await listRolloutFiles(root);
|
|
@@ -3244,23 +3253,34 @@ async function getLatestCodexUsage(opts = {}) {
|
|
|
3244
3253
|
const secondary = rl.secondary ?? null;
|
|
3245
3254
|
if (!hasUsableRateLimitWindows(primary, secondary))
|
|
3246
3255
|
continue;
|
|
3247
|
-
const fivePct = numberOf(primary?.used_percent);
|
|
3248
|
-
const sevenPct = numberOf(secondary?.used_percent);
|
|
3249
|
-
const fiveResetUnix = numberOf(primary?.resets_at);
|
|
3250
|
-
const sevenResetUnix = numberOf(secondary?.resets_at);
|
|
3251
3256
|
const planType = typeof rl.plan_type === "string" ? rl.plan_type : null;
|
|
3252
3257
|
const nowMs = Date.now();
|
|
3253
|
-
|
|
3254
|
-
|
|
3258
|
+
let fiveHour = null;
|
|
3259
|
+
let sevenDay = null;
|
|
3260
|
+
for (const candidate of [primary, secondary]) {
|
|
3261
|
+
if (!candidate)
|
|
3262
|
+
continue;
|
|
3263
|
+
const windowMinutes = numberOf(candidate.window_minutes);
|
|
3264
|
+
if (windowMinutes === FIVE_HOUR_WINDOW_MINUTES) {
|
|
3265
|
+
fiveHour = normalizeCodexWindow(candidate, nowMs);
|
|
3266
|
+
} else if (windowMinutes === SEVEN_DAY_WINDOW_MINUTES) {
|
|
3267
|
+
sevenDay = normalizeCodexWindow(candidate, nowMs);
|
|
3268
|
+
}
|
|
3269
|
+
}
|
|
3270
|
+
const unknownWindows = [primary, secondary].filter((candidate) => candidate !== null && numberOf(candidate.window_minutes) === void 0);
|
|
3271
|
+
if (!fiveHour && !sevenDay) {
|
|
3272
|
+
fiveHour = primary ? normalizeCodexWindow(primary, nowMs) : null;
|
|
3273
|
+
sevenDay = secondary ? normalizeCodexWindow(secondary, nowMs) : null;
|
|
3274
|
+
} else if (unknownWindows.length === 1) {
|
|
3275
|
+
const inferred = normalizeCodexWindow(unknownWindows[0], nowMs);
|
|
3276
|
+
if (!fiveHour)
|
|
3277
|
+
fiveHour = inferred;
|
|
3278
|
+
else if (!sevenDay)
|
|
3279
|
+
sevenDay = inferred;
|
|
3280
|
+
}
|
|
3255
3281
|
return {
|
|
3256
|
-
five_hour: {
|
|
3257
|
-
|
|
3258
|
-
resets_at: fiveResetUnix !== void 0 ? new Date(fiveResetUnix * 1e3).toISOString() : null
|
|
3259
|
-
},
|
|
3260
|
-
seven_day: {
|
|
3261
|
-
utilization: sevenExpired ? 0 : sevenPct ?? null,
|
|
3262
|
-
resets_at: sevenResetUnix !== void 0 ? new Date(sevenResetUnix * 1e3).toISOString() : null
|
|
3263
|
-
},
|
|
3282
|
+
five_hour: fiveHour ?? { utilization: null, resets_at: null },
|
|
3283
|
+
seven_day: sevenDay ?? { utilization: null, resets_at: null },
|
|
3264
3284
|
plan_type: planType,
|
|
3265
3285
|
source_path: file.filePath
|
|
3266
3286
|
};
|
|
@@ -3274,7 +3294,7 @@ function codexSessionLocalDay(meta) {
|
|
|
3274
3294
|
const ms = Date.parse(meta.firstTimestamp);
|
|
3275
3295
|
return Number.isFinite(ms) ? toLocalDay(ms) : void 0;
|
|
3276
3296
|
}
|
|
3277
|
-
var DEFAULT_CODEX_ROOT, ROLLOUT_RE, IDLE_GAP_MS, metaCache2, detailCache2;
|
|
3297
|
+
var DEFAULT_CODEX_ROOT, ROLLOUT_RE, IDLE_GAP_MS, metaCache2, detailCache2, FIVE_HOUR_WINDOW_MINUTES, SEVEN_DAY_WINDOW_MINUTES;
|
|
3278
3298
|
var init_codex = __esm({
|
|
3279
3299
|
"../parser/dist/codex.js"() {
|
|
3280
3300
|
"use strict";
|
|
@@ -3286,6 +3306,8 @@ var init_codex = __esm({
|
|
|
3286
3306
|
IDLE_GAP_MS = 3 * 60 * 1e3;
|
|
3287
3307
|
metaCache2 = /* @__PURE__ */ new Map();
|
|
3288
3308
|
detailCache2 = /* @__PURE__ */ new Map();
|
|
3309
|
+
FIVE_HOUR_WINDOW_MINUTES = 5 * 60;
|
|
3310
|
+
SEVEN_DAY_WINDOW_MINUTES = 7 * 24 * 60;
|
|
3289
3311
|
}
|
|
3290
3312
|
});
|
|
3291
3313
|
|
|
@@ -5631,7 +5653,8 @@ var init_fs = __esm({
|
|
|
5631
5653
|
captured_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5632
5654
|
agent: "codex",
|
|
5633
5655
|
five_hour: w.five_hour,
|
|
5634
|
-
seven_day: w.seven_day
|
|
5656
|
+
seven_day: w.seven_day,
|
|
5657
|
+
plan_type: w.plan_type
|
|
5635
5658
|
};
|
|
5636
5659
|
}
|
|
5637
5660
|
};
|
|
@@ -8166,7 +8189,7 @@ function buildIngestPayload(inputs) {
|
|
|
8166
8189
|
return {
|
|
8167
8190
|
ingestId: randomUUID(),
|
|
8168
8191
|
observedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
8169
|
-
cliVersion: "0.16.
|
|
8192
|
+
cliVersion: "0.16.4",
|
|
8170
8193
|
...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
|
|
8171
8194
|
...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
|
|
8172
8195
|
...richRollup ? { richRollup } : {},
|
|
@@ -17100,14 +17123,14 @@ async function getUpdateAvailability() {
|
|
|
17100
17123
|
if (isDevMode()) return null;
|
|
17101
17124
|
const latest = await fetchLatestVersion();
|
|
17102
17125
|
if (latest === null) return {
|
|
17103
|
-
current: "0.16.
|
|
17126
|
+
current: "0.16.4",
|
|
17104
17127
|
latest: null,
|
|
17105
17128
|
updateAvailable: false
|
|
17106
17129
|
};
|
|
17107
17130
|
return {
|
|
17108
|
-
current: "0.16.
|
|
17131
|
+
current: "0.16.4",
|
|
17109
17132
|
latest,
|
|
17110
|
-
updateAvailable: shouldUpdate("0.16.
|
|
17133
|
+
updateAvailable: shouldUpdate("0.16.4", latest)
|
|
17111
17134
|
};
|
|
17112
17135
|
}
|
|
17113
17136
|
|
|
@@ -17262,9 +17285,11 @@ async function tick() {
|
|
|
17262
17285
|
extra_usage: null
|
|
17263
17286
|
};
|
|
17264
17287
|
appendSnapshot(USAGE_LOG3, snapshot);
|
|
17288
|
+
const fiveHour = snapshot.five_hour.utilization === null ? "\u2014" : `${snapshot.five_hour.utilization}%`;
|
|
17289
|
+
const sevenDay = snapshot.seven_day.utilization === null ? "\u2014" : `${snapshot.seven_day.utilization}%`;
|
|
17265
17290
|
log2(
|
|
17266
17291
|
"info",
|
|
17267
|
-
`${source.kind} snapshot 5h=${
|
|
17292
|
+
`${source.kind} snapshot 5h=${fiveHour} 7d=${sevenDay}`
|
|
17268
17293
|
);
|
|
17269
17294
|
} catch (err) {
|
|
17270
17295
|
log2("warn", `${source.kind} poll failed: ${err.message}`);
|
package/dist/index.js
CHANGED
|
@@ -3287,6 +3287,15 @@ async function getCodexSession(id, opts = {}) {
|
|
|
3287
3287
|
function hasUsableRateLimitWindows(primary, secondary) {
|
|
3288
3288
|
return numberOf(primary?.used_percent) !== void 0 || numberOf(secondary?.used_percent) !== void 0;
|
|
3289
3289
|
}
|
|
3290
|
+
function normalizeCodexWindow(raw, nowMs) {
|
|
3291
|
+
const usedPercent = numberOf(raw?.used_percent);
|
|
3292
|
+
const resetUnix = numberOf(raw?.resets_at);
|
|
3293
|
+
const expired = resetUnix !== void 0 && nowMs > resetUnix * 1e3;
|
|
3294
|
+
return {
|
|
3295
|
+
utilization: usedPercent === void 0 ? null : expired ? 0 : usedPercent,
|
|
3296
|
+
resets_at: resetUnix !== void 0 ? new Date(resetUnix * 1e3).toISOString() : null
|
|
3297
|
+
};
|
|
3298
|
+
}
|
|
3290
3299
|
async function getLatestCodexUsage(opts = {}) {
|
|
3291
3300
|
const root = opts.root ?? DEFAULT_CODEX_ROOT;
|
|
3292
3301
|
const files = await listRolloutFiles(root);
|
|
@@ -3312,23 +3321,34 @@ async function getLatestCodexUsage(opts = {}) {
|
|
|
3312
3321
|
const secondary = rl.secondary ?? null;
|
|
3313
3322
|
if (!hasUsableRateLimitWindows(primary, secondary))
|
|
3314
3323
|
continue;
|
|
3315
|
-
const fivePct = numberOf(primary?.used_percent);
|
|
3316
|
-
const sevenPct = numberOf(secondary?.used_percent);
|
|
3317
|
-
const fiveResetUnix = numberOf(primary?.resets_at);
|
|
3318
|
-
const sevenResetUnix = numberOf(secondary?.resets_at);
|
|
3319
3324
|
const planType = typeof rl.plan_type === "string" ? rl.plan_type : null;
|
|
3320
3325
|
const nowMs = Date.now();
|
|
3321
|
-
|
|
3322
|
-
|
|
3326
|
+
let fiveHour = null;
|
|
3327
|
+
let sevenDay = null;
|
|
3328
|
+
for (const candidate of [primary, secondary]) {
|
|
3329
|
+
if (!candidate)
|
|
3330
|
+
continue;
|
|
3331
|
+
const windowMinutes = numberOf(candidate.window_minutes);
|
|
3332
|
+
if (windowMinutes === FIVE_HOUR_WINDOW_MINUTES) {
|
|
3333
|
+
fiveHour = normalizeCodexWindow(candidate, nowMs);
|
|
3334
|
+
} else if (windowMinutes === SEVEN_DAY_WINDOW_MINUTES) {
|
|
3335
|
+
sevenDay = normalizeCodexWindow(candidate, nowMs);
|
|
3336
|
+
}
|
|
3337
|
+
}
|
|
3338
|
+
const unknownWindows = [primary, secondary].filter((candidate) => candidate !== null && numberOf(candidate.window_minutes) === void 0);
|
|
3339
|
+
if (!fiveHour && !sevenDay) {
|
|
3340
|
+
fiveHour = primary ? normalizeCodexWindow(primary, nowMs) : null;
|
|
3341
|
+
sevenDay = secondary ? normalizeCodexWindow(secondary, nowMs) : null;
|
|
3342
|
+
} else if (unknownWindows.length === 1) {
|
|
3343
|
+
const inferred = normalizeCodexWindow(unknownWindows[0], nowMs);
|
|
3344
|
+
if (!fiveHour)
|
|
3345
|
+
fiveHour = inferred;
|
|
3346
|
+
else if (!sevenDay)
|
|
3347
|
+
sevenDay = inferred;
|
|
3348
|
+
}
|
|
3323
3349
|
return {
|
|
3324
|
-
five_hour: {
|
|
3325
|
-
|
|
3326
|
-
resets_at: fiveResetUnix !== void 0 ? new Date(fiveResetUnix * 1e3).toISOString() : null
|
|
3327
|
-
},
|
|
3328
|
-
seven_day: {
|
|
3329
|
-
utilization: sevenExpired ? 0 : sevenPct ?? null,
|
|
3330
|
-
resets_at: sevenResetUnix !== void 0 ? new Date(sevenResetUnix * 1e3).toISOString() : null
|
|
3331
|
-
},
|
|
3350
|
+
five_hour: fiveHour ?? { utilization: null, resets_at: null },
|
|
3351
|
+
seven_day: sevenDay ?? { utilization: null, resets_at: null },
|
|
3332
3352
|
plan_type: planType,
|
|
3333
3353
|
source_path: file.filePath
|
|
3334
3354
|
};
|
|
@@ -3342,7 +3362,7 @@ function codexSessionLocalDay(meta) {
|
|
|
3342
3362
|
const ms = Date.parse(meta.firstTimestamp);
|
|
3343
3363
|
return Number.isFinite(ms) ? toLocalDay(ms) : void 0;
|
|
3344
3364
|
}
|
|
3345
|
-
var DEFAULT_CODEX_ROOT, ROLLOUT_RE, IDLE_GAP_MS, metaCache2, detailCache2;
|
|
3365
|
+
var DEFAULT_CODEX_ROOT, ROLLOUT_RE, IDLE_GAP_MS, metaCache2, detailCache2, FIVE_HOUR_WINDOW_MINUTES, SEVEN_DAY_WINDOW_MINUTES;
|
|
3346
3366
|
var init_codex = __esm({
|
|
3347
3367
|
"../parser/dist/codex.js"() {
|
|
3348
3368
|
"use strict";
|
|
@@ -3354,6 +3374,8 @@ var init_codex = __esm({
|
|
|
3354
3374
|
IDLE_GAP_MS = 3 * 60 * 1e3;
|
|
3355
3375
|
metaCache2 = /* @__PURE__ */ new Map();
|
|
3356
3376
|
detailCache2 = /* @__PURE__ */ new Map();
|
|
3377
|
+
FIVE_HOUR_WINDOW_MINUTES = 5 * 60;
|
|
3378
|
+
SEVEN_DAY_WINDOW_MINUTES = 7 * 24 * 60;
|
|
3357
3379
|
}
|
|
3358
3380
|
});
|
|
3359
3381
|
|
|
@@ -5699,7 +5721,8 @@ var init_fs = __esm({
|
|
|
5699
5721
|
captured_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5700
5722
|
agent: "codex",
|
|
5701
5723
|
five_hour: w.five_hour,
|
|
5702
|
-
seven_day: w.seven_day
|
|
5724
|
+
seven_day: w.seven_day,
|
|
5725
|
+
plan_type: w.plan_type
|
|
5703
5726
|
};
|
|
5704
5727
|
}
|
|
5705
5728
|
};
|
|
@@ -5786,9 +5809,9 @@ function onDiskVersion() {
|
|
|
5786
5809
|
try {
|
|
5787
5810
|
const here = dirname3(fileURLToPath(import.meta.url));
|
|
5788
5811
|
const pkg = JSON.parse(readFileSync5(join3(here, "..", "package.json"), "utf8"));
|
|
5789
|
-
return pkg.version ?? "0.16.
|
|
5812
|
+
return pkg.version ?? "0.16.4";
|
|
5790
5813
|
} catch {
|
|
5791
|
-
return "0.16.
|
|
5814
|
+
return "0.16.4";
|
|
5792
5815
|
}
|
|
5793
5816
|
}
|
|
5794
5817
|
function getServerStatus() {
|
|
@@ -5800,7 +5823,7 @@ function getServerStatus() {
|
|
|
5800
5823
|
return { running: false };
|
|
5801
5824
|
}
|
|
5802
5825
|
function isServerStale(status2) {
|
|
5803
|
-
return status2.running === true && status2.version !== "0.16.
|
|
5826
|
+
return status2.running === true && status2.version !== "0.16.4";
|
|
5804
5827
|
}
|
|
5805
5828
|
async function ensureCurrentServer(opts = {}) {
|
|
5806
5829
|
const status2 = getServerStatus();
|
|
@@ -6239,9 +6262,9 @@ Installed: ${PACKAGE_NAME}@${verify.installedVersion} at ${verify.installedPath
|
|
|
6239
6262
|
console.warn(
|
|
6240
6263
|
` \u2022 reinstall in the correct Node env: 'npm install -g ${PACKAGE_NAME}@latest'`
|
|
6241
6264
|
);
|
|
6242
|
-
} else if (verify.installedVersion !== "0.16.
|
|
6265
|
+
} else if (verify.installedVersion !== "0.16.4") {
|
|
6243
6266
|
console.log(
|
|
6244
|
-
` \u2192 This process is still running ${"0.16.
|
|
6267
|
+
` \u2192 This process is still running ${"0.16.4"}. Next invocation will use ${verify.installedVersion}.`
|
|
6245
6268
|
);
|
|
6246
6269
|
}
|
|
6247
6270
|
}
|
|
@@ -6276,14 +6299,14 @@ async function getUpdateAvailability() {
|
|
|
6276
6299
|
if (isDevMode()) return null;
|
|
6277
6300
|
const latest = await fetchLatestVersion();
|
|
6278
6301
|
if (latest === null) return {
|
|
6279
|
-
current: "0.16.
|
|
6302
|
+
current: "0.16.4",
|
|
6280
6303
|
latest: null,
|
|
6281
6304
|
updateAvailable: false
|
|
6282
6305
|
};
|
|
6283
6306
|
return {
|
|
6284
|
-
current: "0.16.
|
|
6307
|
+
current: "0.16.4",
|
|
6285
6308
|
latest,
|
|
6286
|
-
updateAvailable: shouldUpdate("0.16.
|
|
6309
|
+
updateAvailable: shouldUpdate("0.16.4", latest)
|
|
6287
6310
|
};
|
|
6288
6311
|
}
|
|
6289
6312
|
async function checkForUpdate() {
|
|
@@ -6373,7 +6396,7 @@ async function restartServices(state) {
|
|
|
6373
6396
|
}
|
|
6374
6397
|
async function forceUpdate() {
|
|
6375
6398
|
const latest = await fetchLatestVersion();
|
|
6376
|
-
const current = "0.16.
|
|
6399
|
+
const current = "0.16.4";
|
|
6377
6400
|
if (latest === null) {
|
|
6378
6401
|
console.error("Could not reach npm registry. Check your network.");
|
|
6379
6402
|
process.exit(1);
|
|
@@ -6786,7 +6809,7 @@ async function status() {
|
|
|
6786
6809
|
console.log(`Server: running on ${url} (PID ${server.pid}, v${ver})`);
|
|
6787
6810
|
if (isServerStale(server)) {
|
|
6788
6811
|
console.log(
|
|
6789
|
-
` \u26A0 serving stale ${ver} (CLI is ${"0.16.
|
|
6812
|
+
` \u26A0 serving stale ${ver} (CLI is ${"0.16.4"}) \u2014 run 'fleetlens start' to restart on the current version`
|
|
6790
6813
|
);
|
|
6791
6814
|
}
|
|
6792
6815
|
} else {
|
|
@@ -18929,7 +18952,7 @@ function buildIngestPayload(inputs) {
|
|
|
18929
18952
|
return {
|
|
18930
18953
|
ingestId: randomUUID2(),
|
|
18931
18954
|
observedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
18932
|
-
cliVersion: "0.16.
|
|
18955
|
+
cliVersion: "0.16.4",
|
|
18933
18956
|
...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
|
|
18934
18957
|
...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
|
|
18935
18958
|
...richRollup ? { richRollup } : {},
|
|
@@ -20972,7 +20995,7 @@ async function main() {
|
|
|
20972
20995
|
case "version":
|
|
20973
20996
|
case "--version":
|
|
20974
20997
|
case "-v":
|
|
20975
|
-
console.log(`fleetlens ${"0.16.
|
|
20998
|
+
console.log(`fleetlens ${"0.16.4"}`);
|
|
20976
20999
|
break;
|
|
20977
21000
|
case "help":
|
|
20978
21001
|
case "--help":
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<key>CFBundleName</key><string>Fleetlens</string>
|
|
11
11
|
<key>CFBundleDisplayName</key><string>Fleetlens Menu Bar</string>
|
|
12
12
|
<key>CFBundlePackageType</key><string>APPL</string>
|
|
13
|
-
<key>CFBundleShortVersionString</key><string>0.16.
|
|
14
|
-
<key>CFBundleVersion</key><string>0.16.
|
|
13
|
+
<key>CFBundleShortVersionString</key><string>0.16.4</string>
|
|
14
|
+
<key>CFBundleVersion</key><string>0.16.4</string>
|
|
15
15
|
<key>LSApplicationCategoryType</key><string>public.app-category.developer-tools</string>
|
|
16
16
|
<key>LSMinimumSystemVersion</key><string>14.0</string>
|
|
17
17
|
<key>LSUIElement</key><true/>
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono:"SF Mono", "Fira Code", "JetBrains Mono", "Cascadia Code", monospace;--color-red-50:#fef2f2;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-800:#9f0712;--color-red-950:#460809;--color-amber-400:#fcbb00;--color-amber-600:#dd7400;--color-green-50:#f0fdf4;--color-green-300:#7bf1a8;--color-green-400:#05df72;--color-green-600:#00a544;--color-green-700:#008138;--color-green-800:#016630;--color-green-950:#032e15;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-gray-700:#364153;--color-gray-900:#101828;--color-gray-950:#030712;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--default-mono-font-family:"SF Mono", "Fira Code", "JetBrains Mono", "Cascadia Code", monospace}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-300:lab(76.5514% 36.422 15.5335);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-800:lab(33.7174% 55.8993 41.0293);--color-red-950:lab(13.003% 29.04 16.7519);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-600:lab(60.3514% 40.5624 87.1228);--color-green-50:lab(98.1563% -5.60117 2.75915);--color-green-300:lab(86.9953% -47.2691 25.0054);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-green-800:lab(37.4616% -36.7971 22.9692);--color-green-950:lab(15.6845% -20.4225 11.7249);--color-gray-100:lab(96.1596% -.0823438 -1.13575);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-900:lab(8.11897% .811279 -12.254);--color-gray-950:lab(1.90334% .278696 -5.48866)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before{border-color:var(--af-border-subtle)}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-5{height:calc(var(--spacing) * 5)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.w-5{width:calc(var(--spacing) * 5)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-\[8rem_1fr\]{grid-template-columns:8rem 1fr}.grid-cols-\[10rem_1fr\]{grid-template-columns:10rem 1fr}.grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-400\/40{border-color:#fcbb0066}@supports (color:color-mix(in lab, red, red)){.border-amber-400\/40{border-color:color-mix(in oklab, var(--color-amber-400) 40%, transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-green-300{border-color:var(--color-green-300)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.bg-amber-400\/10{background-color:#fcbb001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-400\/10{background-color:color-mix(in oklab, var(--color-amber-400) 10%, transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-red-50{background-color:var(--color-red-50)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.font-mono{font-family:SF Mono,Fira Code,JetBrains Mono,Cascadia Code,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-amber-600{color:var(--color-amber-600)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-500{color:var(--color-gray-500)}.text-gray-500\!{color:var(--color-gray-500)!important}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-red-400{color:var(--color-red-400)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:underline:hover{text-decoration-line:underline}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (prefers-color-scheme:dark){.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:border-green-800{border-color:var(--color-green-800)}.dark\:border-red-800{border-color:var(--color-red-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-green-950{background-color:var(--color-green-950)}.dark\:bg-red-950{background-color:var(--color-red-950)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-700{color:var(--color-gray-700)}.dark\:text-green-300{color:var(--color-green-300)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-red-300{color:var(--color-red-300)}}}:root,[data-theme=dark]{--background:#1a1a1f;--foreground:#e8e8f0;--af-accent:#2dd4bf;--af-accent-hover:#5eead4;--af-accent-subtle:#2dd4bf1f;--af-success:#34d399;--af-success-subtle:#34d3991f;--af-warning:#fbbf24;--af-warning-subtle:#fbbf241a;--af-danger:#f87171;--af-danger-subtle:#f871711f;--af-info:#a78bfa;--af-info-subtle:#a78bfa1f;--af-surface:#2c2c33;--af-surface-hover:#333340;--af-surface-elevated:#38384a;--af-border-subtle:#2f2f38;--af-text:#e8e8f0;--af-text-secondary:#9090a0;--af-text-tertiary:#707078;--af-heatmap-0:#2f2f38;--af-heatmap-1:#2dd4bf2e;--af-heatmap-2:#2dd4bf59;--af-heatmap-3:#2dd4bf99;--af-heatmap-4:#2dd4bfe6}[data-theme=light]{--background:#fdfbf9;--foreground:#1a1a1a;--af-accent:#14b8a6;--af-accent-hover:#0d9488;--af-accent-subtle:#14b8a61f;--af-success:#059669;--af-success-subtle:#0596691f;--af-warning:#d97706;--af-warning-subtle:#d977061f;--af-danger:#c53030;--af-danger-subtle:#c530301f;--af-info:#8168e0;--af-info-subtle:#8168e01f;--af-surface:#f5f1ec;--af-surface-hover:#ede8e0;--af-surface-elevated:#e8e2da;--af-border-subtle:#e8e2da;--af-text:#1a1a1a;--af-text-secondary:#5a544e;--af-text-tertiary:#8a8580;--af-heatmap-0:#ede8e0;--af-heatmap-1:#14b8a638;--af-heatmap-2:#14b8a666;--af-heatmap-3:#14b8a6a6;--af-heatmap-4:#14b8a6f2}html,body{background:var(--background);color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:14px;line-height:1.6}body{min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}input:not([type=checkbox]):not([type=radio]),select,textarea{background:var(--background);border:1px solid var(--af-border-subtle);color:var(--af-text);border-radius:8px;outline:none;padding:9px 12px;font-size:13px;transition:border-color .15s}input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:var(--af-accent);box-shadow:0 0 0 3px var(--af-accent-subtle)}input::placeholder{color:var(--af-text-tertiary)}.sl-compact-select{border-radius:6px!important;height:32px!important;padding:4px 28px 4px 10px!important;font-size:12px!important}.sl-day-nav-btn{border:1px solid var(--af-border-subtle);background:var(--af-surface-hover);width:26px;height:26px;color:var(--af-text-secondary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,opacity .15s;display:inline-flex}.sl-day-nav-btn:hover:not(:disabled){background:var(--af-surface-elevated);color:var(--af-text-primary)}.sl-day-nav-btn:disabled{opacity:.35;cursor:default}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--af-border-subtle);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--af-surface-elevated)}.af-panel{background:var(--af-surface);border:1px solid var(--af-border-subtle);border-radius:12px;overflow:hidden}.af-panel-header{border-bottom:1px solid var(--af-border-subtle);align-items:center;gap:6px;padding:14px 18px;font-size:13px;font-weight:600;display:flex}.af-tag{border:none;border-radius:100px;padding:3px 10px;font-size:11px;font-weight:500;display:inline-block}.af-tag-default{background:var(--af-border-subtle);color:var(--af-text-secondary)}.af-tag-accent{background:var(--af-accent-subtle);color:var(--af-accent)}.af-tag-success{background:var(--af-success-subtle);color:var(--af-success)}.af-tag-warning{background:var(--af-warning-subtle);color:var(--af-warning)}.af-tag-danger{background:var(--af-danger-subtle);color:var(--af-danger)}.af-empty{text-align:center;color:var(--af-text-tertiary);padding:48px 32px;font-size:13px}.af-tabs{background:var(--background);border-radius:8px;gap:2px;padding:3px;display:inline-flex}.af-tab-btn{color:var(--af-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:7px 18px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}.af-tab-btn:hover{color:var(--af-text)}.af-tab-btn.active{background:var(--af-surface-elevated);color:var(--af-text);box-shadow:0 1px 3px #0003}.flex{display:flex}.items-center{align-items:center}.items-baseline{align-items:baseline}.af-card{background:var(--af-surface);border:1px solid var(--af-border-subtle);border-radius:12px;padding:18px 20px;transition:border-color .12s}.af-card:hover{border-color:var(--af-surface-elevated)}.af-btn,.af-btn-primary,.af-btn-danger{border-radius:8px;padding:6px 14px;font-size:13px;transition:background .12s,border-color .12s;display:inline-block}.af-btn{border:1px solid var(--af-border-subtle);background:var(--af-surface);color:var(--af-text)}.af-btn:hover:not(:disabled){border-color:var(--af-accent)}.af-btn-primary{background:var(--af-accent);color:var(--background);border:1px solid #0000;font-weight:500}.af-btn-primary:hover:not(:disabled){background:var(--af-accent-hover)}.af-btn-danger{border:1px solid var(--af-danger);color:var(--af-danger);background:0 0}.af-btn-danger:hover:not(:disabled){background:var(--af-danger-subtle)}.af-btn:disabled,.af-btn-primary:disabled,.af-btn-danger:disabled{opacity:.55;cursor:default}.af-panel{background:var(--af-surface-elevated);border:1px solid var(--af-border-subtle);border-radius:8px}.af-panel-danger{background:var(--af-danger-subtle);border:1px solid var(--af-danger);color:var(--af-danger);border-radius:8px}.af-step-active{background:var(--af-accent);color:var(--background)}.af-chip{border:1px solid var(--af-border-subtle);font-family:var(--font-mono);border-radius:9999px;padding:2px 10px;font-size:12px;display:inline-block}a.af-chip:hover{border-color:var(--af-accent);text-decoration:underline}.af-row:hover{background:var(--af-surface-hover)}.sl-prose{color:var(--af-text);word-break:break-word;font-size:13.5px;line-height:1.65}.sl-prose>:first-child{margin-top:0}.sl-prose>:last-child{margin-bottom:0}.sl-prose h1,.sl-prose h2,.sl-prose h3,.sl-prose h4{letter-spacing:-.01em;color:var(--af-text);margin:18px 0 8px;font-weight:700;line-height:1.25}.sl-prose h1{border-bottom:1px solid var(--af-border-subtle);padding-bottom:6px;font-size:20px}.sl-prose h2{font-size:16px}.sl-prose h3{font-size:14px}.sl-prose h4{color:var(--af-text-secondary);font-size:13px}.sl-prose p{margin:10px 0}.sl-prose strong{color:var(--af-text);font-weight:600}.sl-prose em{color:var(--af-text);font-style:italic}.sl-prose ul,.sl-prose ol{margin:10px 0;padding-left:22px}.sl-prose ul{list-style-type:disc}.sl-prose ol{list-style-type:decimal}.sl-prose li,.sl-prose li>p{margin:4px 0}.sl-prose blockquote{border-left:3px solid var(--af-accent);color:var(--af-text-secondary);background:var(--af-accent-subtle);border-radius:0 6px 6px 0;margin:12px 0;padding:4px 14px}.sl-prose code{font-family:var(--font-mono);background:var(--af-border-subtle);color:var(--af-text);border-radius:4px;padding:1px 5px;font-size:12px}.sl-prose pre{background:var(--background);border:1px solid var(--af-border-subtle);border-radius:8px;margin:12px 0;padding:12px 14px;font-size:12px;line-height:1.55;overflow-x:auto}.sl-prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.sl-prose table{border-collapse:collapse;width:100%;margin:12px 0;font-size:12px}.sl-prose th,.sl-prose td{border:1px solid var(--af-border-subtle);text-align:left;padding:6px 10px}.sl-prose th{background:var(--af-surface-hover);font-weight:600}.sl-prose hr{border:none;border-top:1px solid var(--af-border-subtle);margin:16px 0}.sl-prose a{color:var(--af-accent);text-underline-offset:2px;text-decoration:underline}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|