vibeostheog 0.23.5 → 0.23.7

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
@@ -1,3 +1,11 @@
1
+ ## 0.23.7
2
+ - fix: footer brand uses raw optModeFooter not normalized optMode
3
+
4
+
5
+ ## 0.23.6
6
+ - fix: trinity mode persistence — write to sid+_opt key, respect user's explicit mode
7
+
8
+
1
9
  ## 0.23.5
2
10
  - fix: tier-based median cost fallback for unknown models
3
11
 
package/bin/setup.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeostheog",
3
- "version": "0.23.5",
3
+ "version": "0.23.7",
4
4
  "description": "Cost-aware delegation enforcer for OpenCode. Tracks model usage, routes Task subagents to cheaper tiers, surfaces cumulative savings in chat. Includes research audit, reporting framework, project memory, progressive scratchpad decadence, and trinity CLI for brain/medium/cheap slot switching.",
5
5
  "scripts": {
6
6
  "release": "node scripts/release.mjs",
@@ -193,9 +193,10 @@ export function syncControlSettings(cv, options = {}) {
193
193
  }
194
194
  if (cv.thinking_mode && currentSel.thinking_level !== "full")
195
195
  writeIf("thinking_level", cv.thinking_mode);
196
- const userOptMode = loadSessionOptMode(sid + "_opt") || loadOptimizationMode();
196
+ const userSetMode = loadSessionOptMode(sid + "_opt");
197
+ const userOptMode = userSetMode || loadOptimizationMode();
197
198
  if (persistOptimizationMode && cv.optimization_mode && userOptMode !== "auto") {
198
- if (userOptMode !== cv.optimization_mode) {
199
+ if (userOptMode !== cv.optimization_mode && !userSetMode) {
199
200
  writeSessionSlot(sid + "_opt", cv.optimization_mode);
200
201
  saveOptimizationMode(cv.optimization_mode);
201
202
  }
@@ -283,7 +283,7 @@ async function _appendFooter(input, output, directory) {
283
283
  const ltTotal = ltTasks + ltCache;
284
284
  const modeCapitalized = (mode) => mode.charAt(0).toUpperCase() + mode.slice(1);
285
285
  const optMode = (resolvedMode || "budget").toLowerCase();
286
- const vibeBrand = optMode === "vibemax" ? "VibeMaX" : optMode === "vibeultrax" ? "VibeUltraX" : optMode === "quality" ? "VibeQMaX" : "VibeMaX";
286
+ const vibeBrand = optModeFooter === "vibeultrax" ? "VibeUltraX" : (optModeFooter === "vibeqmax" || optModeFooter === "quality") ? "VibeQMaX" : "VibeMaX";
287
287
  const modeLabel = modeCapitalized(optMode);
288
288
  const qualityIcon = execution.quality === "brain" ? "🧠" : execution.quality === "medium" ? "⚙" : execution.quality === "free" ? "🎁" : "⚡";
289
289
  const flashIcon = isApiConnected() ? " ⚡" : "";
@@ -202,6 +202,7 @@ export function createTrinityTool(deps) {
202
202
  const ok = deps.saveOptimizationMode(resolvedSlot);
203
203
  if (!ok)
204
204
  return `Failed to write mode`;
205
+ deps.writeSessionSlot(deps._OC_SID + "_opt", resolvedSlot);
205
206
  const allEntries = [...BRANDED_MODES, ...RUNTIME_MODES];
206
207
  const modeEntry = allEntries.find(e => e.id === slot);
207
208
  if (modeEntry) {