pi-studio 0.9.35 → 0.9.36

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/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ All notable changes to `pi-studio` are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.9.36] — 2026-07-13
8
+
9
+ ### Changed
10
+ - Added `max` to the Studio footer Pi thinking selector to match newer Pi thinking levels.
11
+
7
12
  ## [0.9.35] — 2026-07-13
8
13
 
9
14
  ### Added
@@ -3322,7 +3322,7 @@
3322
3322
  }
3323
3323
 
3324
3324
  function getPiThinkingLevels() {
3325
- return ["off", "minimal", "low", "medium", "high", "xhigh"];
3325
+ return ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
3326
3326
  }
3327
3327
 
3328
3328
  function renderFooterModelMenu() {
@@ -3339,7 +3339,9 @@
3339
3339
  modelOptionsHtml.unshift("<option value='" + escapeHtml(currentValue) + "' selected>" + escapeHtml(label || "current model") + "</option>");
3340
3340
  }
3341
3341
  const thinking = piThinkingLevel || "off";
3342
- const thinkingOptionsHtml = getPiThinkingLevels().map((level) => {
3342
+ const thinkingLevels = getPiThinkingLevels();
3343
+ if (thinking && !thinkingLevels.includes(thinking)) thinkingLevels.push(thinking);
3344
+ const thinkingOptionsHtml = thinkingLevels.map((level) => {
3343
3345
  return "<option value='" + escapeHtml(level) + "'" + (level === thinking ? " selected" : "") + ">Thinking: " + escapeHtml(level) + "</option>";
3344
3346
  });
3345
3347
  footerModelMenuEl.innerHTML = ""
package/index.ts CHANGED
@@ -44,6 +44,7 @@ type StudioReplRuntime = "shell" | "python" | "ipython" | "julia" | "r" | "ghci"
44
44
  type StudioQuizAngle = "general" | "scientist" | "mathematician" | "statistician" | "developer" | "reviewer";
45
45
  type StudioQuizScope = "selection" | "editor" | "file" | "folder" | "repo";
46
46
  type StudioQuizThinking = "off" | "minimal" | "low" | "medium" | "high";
47
+ type StudioPiThinkingLevel = ModelThinkingLevel | "max";
47
48
 
48
49
  const STUDIO_CSS_URL = new URL("./client/studio.css", import.meta.url);
49
50
  const STUDIO_ANNOTATION_HELPERS_URL = new URL("./client/studio-annotation-helpers.js", import.meta.url);
@@ -358,7 +359,7 @@ interface PiModelSelectRequestMessage {
358
359
 
359
360
  interface PiThinkingLevelRequestMessage {
360
361
  type: "pi_thinking_level_request";
361
- level: ModelThinkingLevel;
362
+ level: StudioPiThinkingLevel;
362
363
  }
363
364
 
364
365
  interface PiThemeSelectRequestMessage {
@@ -8445,7 +8446,7 @@ function parseIncomingMessage(data: RawData): IncomingStudioMessage | null {
8445
8446
 
8446
8447
  if (msg.type === "pi_thinking_level_request" && typeof msg.level === "string") {
8447
8448
  const level = msg.level.trim().toLowerCase();
8448
- if (level === "off" || level === "minimal" || level === "low" || level === "medium" || level === "high" || level === "xhigh") {
8449
+ if (level === "off" || level === "minimal" || level === "low" || level === "medium" || level === "high" || level === "xhigh" || level === "max") {
8449
8450
  return {
8450
8451
  type: "pi_thinking_level_request",
8451
8452
  level,
@@ -11076,17 +11077,17 @@ export default function (pi: ExtensionAPI) {
11076
11077
  }
11077
11078
  };
11078
11079
 
11079
- const getThinkingLevelSafe = (): ModelThinkingLevel | undefined => {
11080
+ const getThinkingLevelSafe = (): StudioPiThinkingLevel | undefined => {
11080
11081
  try {
11081
- return pi.getThinkingLevel() as ModelThinkingLevel;
11082
+ return pi.getThinkingLevel() as StudioPiThinkingLevel;
11082
11083
  } catch {
11083
11084
  return undefined;
11084
11085
  }
11085
11086
  };
11086
11087
 
11087
- const setThinkingLevelSafe = (level: ModelThinkingLevel) => {
11088
- // Pi's CLI/model config support "off" as a thinking level; some extension API typings still expose the narrower reasoning-only type.
11089
- (pi.setThinkingLevel as (nextLevel: ModelThinkingLevel) => void)(level);
11088
+ const setThinkingLevelSafe = (level: StudioPiThinkingLevel) => {
11089
+ // Pi's CLI/model config support "off" and newer levels such as "max"; some extension API typings still expose a narrower reasoning-only type.
11090
+ (pi.setThinkingLevel as (nextLevel: StudioPiThinkingLevel) => void)(level);
11090
11091
  };
11091
11092
 
11092
11093
  const refreshRuntimeMetadata = (ctx?: { cwd?: string; model?: { provider?: string; id?: string; name?: string; reasoning?: boolean } | undefined }) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-studio",
3
- "version": "0.9.35",
3
+ "version": "0.9.36",
4
4
  "description": "Two-pane browser workspace for pi with prompt/response editing, annotations, critiques, active quiz, prompt/response history, live previews, and tmux-backed REPL/literate REPL workflows",
5
5
  "type": "module",
6
6
  "license": "MIT",