codex-copilot-dx 0.9.7 → 0.9.8
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 +2 -0
- package/package.json +1 -1
- package/src/dashboard-api.mjs +1 -1
package/README.md
CHANGED
|
@@ -238,6 +238,8 @@ The transparent, single-color double-peak favicon follows the dashboard's saved
|
|
|
238
238
|
|
|
239
239
|
The saved GitHub Copilot account appears immediately to the left of the Snapshot time. It uses the same local credentials and fingerprint-bound identity metadata as `ccdx auth status`, with username (or numeric ID fallback) and a `SAVED` label; this is not an online entitlement check. Missing, invalid, unidentified, or unreadable credentials are shown explicitly. The account read runs once on page load and on the top Refresh action, independently of adapter status, with no polling or upstream authentication calls. Its loopback-only, custom-header-protected API exposes no token, fingerprint, credential path, or raw metadata. The general status endpoint retains its existing identity-free contract.
|
|
240
240
|
|
|
241
|
+
Account names containing underscores are supported, including `dingxiao_microsoft`. A numeric ID is a fallback, not a replacement for an available, safely displayable username; the existing length bounds and credential-shaped text suppression still apply.
|
|
242
|
+
|
|
241
243
|
Usage Analytics is collapsed by default. Opening it adds daily input/output token bars (7/30/90 days) and a 365-day calendar of recorded usage calls or tokens, grouped in the browser's time zone. Cache-read tokens are already part of input and are not added again. Model and range filters use the current snapshot without additional requests; selecting a day shows its filtered model totals in the Usage table, and All history restores the original table. Analytics shares the existing current/rotated-log scan and exposes only bounded metadata (365 days, up to 100 model filters). Days before retained history are hatched, not presented as zero; the oldest retained day may be partial. Counts describe retained usage records, not messages, session time, or all HTTP requests. Refresh explicitly to update the snapshot; there is no background collection or polling.
|
|
242
244
|
|
|
243
245
|
Terminal Animation is collapsed at the bottom of the page, with an Animation shortcut in the header. Preview frames load only when opened; closing it, hiding the page, or requesting reduced motion stops the preview timer. Unsaved choices survive folding and reopening. Recent upstream failures expand to existing diagnostic fields (time, model, code, message, response/request IDs, and retry policy) with a Copy diagnostic control. These are the last 10 retained `response.failed` events, not complete session histories; a retry attempt does not prove recovery. Diagnostic prose is redacted by the existing recorder but can still contain sensitive context: review before copying or sharing.
|
package/package.json
CHANGED
package/src/dashboard-api.mjs
CHANGED
|
@@ -129,7 +129,7 @@ export async function handleDashboardApi(req, res, pathname, {
|
|
|
129
129
|
try {
|
|
130
130
|
const profile = authStatusFn()?.profiles?.codex;
|
|
131
131
|
if (!profile || typeof profile.configured !== "boolean" || typeof profile.valid !== "boolean") throw new Error("Invalid auth status");
|
|
132
|
-
const login = typeof profile.login === "string" && /^[a-z\
|
|
132
|
+
const login = typeof profile.login === "string" && /^[a-z\d_-]{1,39}$/i.test(profile.login)
|
|
133
133
|
&& redactDiagnosticText(profile.login) === profile.login ? profile.login : "";
|
|
134
134
|
const id = /^\d{1,20}$/.test(String(profile.id || "")) ? String(profile.id) : "";
|
|
135
135
|
sendJson(res, 200, {
|