pudu-ai 0.2.8 → 0.2.9

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.
Files changed (2) hide show
  1. package/dist/cli/index.js +26 -17
  2. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -1986,7 +1986,7 @@ import { render } from "ink";
1986
1986
 
1987
1987
  // src/tui/App.tsx
1988
1988
  import { Box as Box10, useApp as useApp2, useInput as useInput4 } from "ink";
1989
- import { useMemo as useMemo2, useState as useState4 } from "react";
1989
+ import { useMemo as useMemo2, useRef as useRef2, useState as useState4 } from "react";
1990
1990
 
1991
1991
  // src/tui/views/Dashboard.tsx
1992
1992
  import { Box, Text } from "ink";
@@ -3071,15 +3071,7 @@ function TasksView({ session }) {
3071
3071
  }
3072
3072
 
3073
3073
  // src/tui/keys.ts
3074
- function handleAppKey(screen, input, key) {
3075
- const letter = input.toLowerCase();
3076
- if (screen === "benchmark") return { type: "ignore" };
3077
- if (screen === "recommend" || screen === "tasks") {
3078
- if (letter === "q") return { type: "quit" };
3079
- if (key.escape) return { type: "home" };
3080
- return { type: "ignore" };
3081
- }
3082
- if (letter === "q" || key.escape) return { type: "quit" };
3074
+ function globalNav(letter) {
3083
3075
  if (letter === "b") return { type: "screen", screen: "benchmark" };
3084
3076
  if (letter === "m") return { type: "screen", screen: "models" };
3085
3077
  if (letter === "r") return { type: "screen", screen: "recommend" };
@@ -3087,7 +3079,20 @@ function handleAppKey(screen, input, key) {
3087
3079
  if (letter === "c") return { type: "screen", screen: "compare" };
3088
3080
  if (letter === "l") return { type: "screen", screen: "history" };
3089
3081
  if (letter === "t") return { type: "screen", screen: "tasks" };
3090
- if (letter === "s" || letter === "i") return { type: "screen", screen: "recommend" };
3082
+ if (letter === "s") return { type: "screen", screen: "recommend" };
3083
+ return void 0;
3084
+ }
3085
+ function handleAppKey(screen, input, key) {
3086
+ const letter = input.toLowerCase();
3087
+ if (screen === "benchmark") return { type: "ignore" };
3088
+ if (letter === "q") return { type: "quit" };
3089
+ if (key.escape) return screen === "home" ? { type: "quit" } : { type: "home" };
3090
+ if (screen === "recommend") {
3091
+ if (letter === "i" || letter === "1" || letter === "2" || letter === "3") return { type: "ignore" };
3092
+ }
3093
+ const nav = globalNav(letter);
3094
+ if (nav) return nav;
3095
+ if (letter === "i" && screen === "home") return { type: "screen", screen: "recommend" };
3091
3096
  if (key.return && screen === "home") return { type: "screen", screen: "benchmark" };
3092
3097
  return { type: "ignore" };
3093
3098
  }
@@ -3150,23 +3155,28 @@ function ColorNav() {
3150
3155
  }
3151
3156
 
3152
3157
  // src/tui/App.tsx
3153
- import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
3158
+ import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
3154
3159
  function App(props) {
3155
3160
  const { exit } = useApp2();
3156
3161
  const [screen, setScreen] = useState4(props.start ?? "home");
3162
+ const screenRef = useRef2(screen);
3163
+ screenRef.current = screen;
3157
3164
  const [selected, setSelected] = useState4(0);
3158
3165
  const benchable = useMemo2(
3159
3166
  () => props.session.models.filter((m) => Boolean(m.artifactPath)),
3160
3167
  [props.session.models]
3161
3168
  );
3162
3169
  useInput4((input, key) => {
3163
- const result = handleAppKey(screen, input, key);
3170
+ const result = handleAppKey(screenRef.current, input, key);
3164
3171
  if (result.type === "quit") exit();
3165
3172
  if (result.type === "home") setScreen("home");
3166
3173
  if (result.type === "screen") setScreen(result.screen);
3167
3174
  });
3168
- return /* @__PURE__ */ jsxs9(Box10, { flexDirection: "column", padding: 1, children: [
3169
- screen !== "benchmark" && /* @__PURE__ */ jsx10(Welcome, { compact: screen !== "home" }),
3175
+ return /* @__PURE__ */ jsxs9(Box10, { flexDirection: "column", paddingX: 1, paddingTop: 0, paddingBottom: 1, children: [
3176
+ screen !== "benchmark" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
3177
+ /* @__PURE__ */ jsx10(ColorNav, {}),
3178
+ /* @__PURE__ */ jsx10(Welcome, { compact: true })
3179
+ ] }),
3170
3180
  screen === "home" && /* @__PURE__ */ jsx10(Dashboard, { session: props.session }),
3171
3181
  screen === "models" && /* @__PURE__ */ jsx10(ModelsView, { session: props.session }),
3172
3182
  screen === "hardware" && /* @__PURE__ */ jsx10(HardwareView, { session: props.session }),
@@ -3184,8 +3194,7 @@ function App(props) {
3184
3194
  preset: props.preset,
3185
3195
  onBack: () => setScreen("home")
3186
3196
  }
3187
- ),
3188
- screen !== "benchmark" && /* @__PURE__ */ jsx10(ColorNav, {})
3197
+ )
3189
3198
  ] });
3190
3199
  }
3191
3200
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pudu-ai",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "Pudu-AI — local AI hardware & benchmark lab for the terminal",
5
5
  "keywords": [
6
6
  "ai",