vibeostheog 0.23.0 → 0.23.2
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 +8 -0
- package/package.json +1 -1
- package/src/lib/hooks/footer.js +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 0.23.2
|
|
2
|
+
- fix: footer regex case-sensitivity — /VIBE/i matches VibeMaX to prevent double-append
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## 0.23.1
|
|
6
|
+
- fix: footer dedup — content hash fallback prevents double-append from message.updated vs text.complete shape mismatch
|
|
7
|
+
|
|
8
|
+
|
|
1
9
|
## 0.22.16
|
|
2
10
|
|
|
3
11
|
- test: add 12 cache isolation scenarios (no cross-session/project hallucination)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeostheog",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.2",
|
|
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",
|
package/src/lib/hooks/footer.js
CHANGED
|
@@ -58,6 +58,7 @@ const SAVINGS_LEDGER_FILE = join(getVibeOSHome(), "savings-ledger.jsonl");
|
|
|
58
58
|
let _prevOutputText = "";
|
|
59
59
|
let _autoReportCount = 0;
|
|
60
60
|
const textCompletePainted = new Set();
|
|
61
|
+
let _lastStrippedText = "";
|
|
61
62
|
function loadSelection() {
|
|
62
63
|
try {
|
|
63
64
|
const raw = readFileSync(join(getVibeOSHome(), "model-tiers.json"), "utf-8");
|
|
@@ -274,9 +275,11 @@ async function _appendFooter(input, output, directory) {
|
|
|
274
275
|
subRegime: _latestBlackboxState?.sub_regime || classifyTurnSimple(latestUserIntent || ""),
|
|
275
276
|
stress: _footerStress,
|
|
276
277
|
}).mode;
|
|
277
|
-
const stripped = text.replace(/— .+?VIBE[^—]*—\s*/
|
|
278
|
+
const stripped = text.replace(/— .+?VIBE[^—]*—\s*/gi, "").trimEnd();
|
|
278
279
|
if (stripped !== text)
|
|
279
280
|
return;
|
|
281
|
+
if (stripped === _lastStrippedText)
|
|
282
|
+
return;
|
|
280
283
|
const ltTotal = ltTasks + ltCache;
|
|
281
284
|
const modeCapitalized = (mode) => mode.charAt(0).toUpperCase() + mode.slice(1);
|
|
282
285
|
const optMode = (resolvedMode || "budget").toLowerCase();
|
|
@@ -343,6 +346,7 @@ async function _appendFooter(input, output, directory) {
|
|
|
343
346
|
obj.text = text;
|
|
344
347
|
}
|
|
345
348
|
_setFooter(output, footerText);
|
|
349
|
+
_lastStrippedText = stripped;
|
|
346
350
|
// CLI/pipe mode: stdout is already rendered, write footer to stderr
|
|
347
351
|
if (!process.stdout?.isTTY) {
|
|
348
352
|
console.error(`\n${vibeLine} —`);
|