rinco-pi-hud 1.0.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.
- package/LICENSE +21 -0
- package/NOTICE +18 -0
- package/README.md +204 -0
- package/docs/CONTRIBUTING.md +110 -0
- package/docs/README.zh-CN.md +204 -0
- package/docs/footer.md +139 -0
- package/extensions/hud/commands/settings.ts +765 -0
- package/extensions/hud/config/config-counts.ts +87 -0
- package/extensions/hud/config/config.ts +65 -0
- package/extensions/hud/config/file-io.ts +128 -0
- package/extensions/hud/config/normalize.ts +374 -0
- package/extensions/hud/config/persist.ts +277 -0
- package/extensions/hud/config/schema.ts +303 -0
- package/extensions/hud/footer/format.ts +279 -0
- package/extensions/hud/footer/index.ts +543 -0
- package/extensions/hud/footer/layout.ts +183 -0
- package/extensions/hud/footer/render-labels.ts +305 -0
- package/extensions/hud/index.ts +466 -0
- package/extensions/hud/segments/extension-status.ts +88 -0
- package/extensions/hud/segments/git.ts +384 -0
- package/extensions/hud/segments/mcp-status.ts +25 -0
- package/extensions/hud/segments/package-version.ts +651 -0
- package/extensions/hud/segments/project-state.ts +67 -0
- package/extensions/hud/segments/runtime-definitions.ts +695 -0
- package/extensions/hud/segments/runtime.ts +167 -0
- package/extensions/hud/segments/skill-activity.ts +152 -0
- package/extensions/hud/session/context.ts +19 -0
- package/extensions/hud/session/lifecycle.ts +60 -0
- package/extensions/hud/session/live-context.ts +75 -0
- package/extensions/hud/state/index.ts +67 -0
- package/extensions/hud/state/project-refresh.ts +104 -0
- package/extensions/hud/state/telemetry.ts +261 -0
- package/extensions/hud/telemetry/codex-usage/LICENSE +21 -0
- package/extensions/hud/telemetry/codex-usage/app-server-client.ts +231 -0
- package/extensions/hud/telemetry/codex-usage/format.ts +278 -0
- package/extensions/hud/telemetry/codex-usage/index.ts +462 -0
- package/extensions/hud/telemetry/codex-usage/normalize.ts +264 -0
- package/extensions/hud/telemetry/codex-usage/query.ts +207 -0
- package/extensions/hud/telemetry/codex-usage/safety.ts +27 -0
- package/extensions/hud/telemetry/codex-usage/types.ts +137 -0
- package/extensions/hud/telemetry/format.ts +434 -0
- package/extensions/hud/telemetry/token-switch.ts +114 -0
- package/extensions/hud/ui/icons.ts +239 -0
- package/extensions/hud/ui/style.ts +276 -0
- package/package.json +56 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { GitReadResult } from "./git.js";
|
|
2
|
+
import { emptyGitStatus } from "./git.js";
|
|
3
|
+
import type { PackageVersionReadResult } from "./package-version.js";
|
|
4
|
+
import type { RuntimeReadResult } from "./runtime.js";
|
|
5
|
+
import type { FooterState } from "../state/index.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Apply a project refresh (git + runtime) onto footer state, preserving
|
|
9
|
+
* last-good values on transient errors and clearing on cwd change / not-a-repo.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately mutates `state` in place rather than returning a new object:
|
|
12
|
+
* this runs on every project-refresh tick of a long-lived render loop, and
|
|
13
|
+
* `FooterState` is a single shared, non-reactive mutable record read
|
|
14
|
+
* directly by the footer's `render()` — allocating a fresh object per tick
|
|
15
|
+
* would add churn with no observable benefit. This is the one place in the
|
|
16
|
+
* codebase that intentionally diverges from the immutable-update convention
|
|
17
|
+
* used elsewhere (e.g. `state/telemetry.ts`).
|
|
18
|
+
*
|
|
19
|
+
* Returns the cwd to store as `previousCwd` for the next refresh.
|
|
20
|
+
*/
|
|
21
|
+
export function applyProjectRefreshToState(
|
|
22
|
+
state: FooterState,
|
|
23
|
+
args: {
|
|
24
|
+
cwd: string;
|
|
25
|
+
previousCwd: string | undefined;
|
|
26
|
+
git: GitReadResult;
|
|
27
|
+
runtime: RuntimeReadResult;
|
|
28
|
+
packageVersion?: PackageVersionReadResult;
|
|
29
|
+
},
|
|
30
|
+
): string {
|
|
31
|
+
const cwdChanged = args.previousCwd !== undefined && args.previousCwd !== args.cwd;
|
|
32
|
+
|
|
33
|
+
if (cwdChanged) {
|
|
34
|
+
Object.assign(state, emptyGitStatus());
|
|
35
|
+
state.runtime = undefined;
|
|
36
|
+
state.packageVersion = undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (args.git.kind === "ok") {
|
|
40
|
+
Object.assign(state, args.git.status);
|
|
41
|
+
} else if (args.git.kind === "not_a_repo") {
|
|
42
|
+
Object.assign(state, emptyGitStatus());
|
|
43
|
+
}
|
|
44
|
+
// kind === "error": keep previous git fields (unless cwdChanged already cleared)
|
|
45
|
+
|
|
46
|
+
if (args.runtime.kind === "ok") {
|
|
47
|
+
state.runtime = args.runtime.runtime;
|
|
48
|
+
} else if (cwdChanged && args.runtime.kind === "error") {
|
|
49
|
+
// Already cleared above; keep undefined.
|
|
50
|
+
state.runtime = undefined;
|
|
51
|
+
}
|
|
52
|
+
// error + same cwd: keep previous runtime
|
|
53
|
+
|
|
54
|
+
if (args.packageVersion !== undefined) {
|
|
55
|
+
if (args.packageVersion.kind === "ok") {
|
|
56
|
+
// `null` means "no manifest in this cwd"; clear so the segment disappears
|
|
57
|
+
// even on the same cwd when the user removes their manifest.
|
|
58
|
+
state.packageVersion = args.packageVersion.result ?? undefined;
|
|
59
|
+
} else if (!cwdChanged) {
|
|
60
|
+
// error + same cwd: keep previous packageVersion (last-good semantics)
|
|
61
|
+
} else {
|
|
62
|
+
state.packageVersion = undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return args.cwd;
|
|
67
|
+
}
|