Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [6.8.3] - 2026-09-04
## [Unreleased]

## [6.8.4] - 2026-09-05

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ models, the same native tool schemas, the same MatterAI auth backend — rebuilt
scratch as an interactive TUI with streaming chat, live thinking display, tool
activity rows, edit/command approvals, and todo tracking.

![OrbCode CLI screenshot](assets/orbcode-screenshot.webp)
![OrbCode CLI screenshot](https://res.cloudinary.com/dxvbskvxm/image/upload/v1788594608/Screenshot_2026-09-05_at_13.19.44_nbcyqq.png)

---

Expand Down
Binary file removed assets/orbcode-screenshot.webp
Binary file not shown.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@matterailab/orbcode",
"version": "6.8.3",
"version": "6.8.4",
"description": "OrbCode CLI — agentic coding in your terminal, by MatterAI",
"type": "module",
"bin": {
Expand Down
26 changes: 24 additions & 2 deletions src/api/models.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
// The Axon models served by the MatterAI backend. Ported from the
// Orbital extension's model registry (kilocode-models.ts).
import * as fs from "node:fs"
import * as os from "node:os"
import * as path from "node:path"

/**
* Read the currently selected model id from disk without triggering the full
* settings-load side effects (env application, custom-model registration).
* Used by fetchDynamicModels to avoid pruning the user's selection.
*/
function loadSettingsModel(): string {
try {
const dir = process.env.MATTERAI_CONFIG_DIR || path.join(os.homedir(), ".orbcode")
const raw = fs.readFileSync(path.join(dir, "config.json"), "utf8")
const parsed = JSON.parse(raw)
return typeof parsed.model === "string" ? parsed.model : ""
} catch {
return ""
}
}

/**
* Reasoning-effort hint forwarded to providers that support it (e.g. Anthropic
* `output_config.effort`). Ignored by providers that don't.
Expand Down Expand Up @@ -447,11 +467,13 @@ export async function fetchDynamicModels(
// Reconcile only when the backend returned a usable catalog — an empty or
// failed response must never wipe the offline fallback. Retired models
// (e.g. a version bump the static fallback still lists) are pruned so they
// don't linger in the picker next to their replacement.
// don't linger in the picker next to their replacement. The user's current
// selection is never pruned — a transient backend gap shouldn't swap it.
if (fetched.length > 0) {
const fetchedIds = new Set(fetched.map((model) => model.id));
const currentModel = loadSettingsModel()
for (const id of managedModelIds) {
if (id === DEFAULT_MODEL_ID || fetchedIds.has(id)) continue;
if (id === DEFAULT_MODEL_ID || fetchedIds.has(id) || id === currentModel) continue;
delete BUILTIN_AXON_MODELS[id];
delete AXON_MODELS[id];
}
Expand Down
1 change: 1 addition & 0 deletions src/branding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export const COLORS = {
user: "$orbcode.user",
inputBorder: "$orbcode.inputBorder",
inputBorderInactive: "$orbcode.inputBorderInactive",
info: "$orbcode.info",
diffAddedBackground: "$orbcode.diffAddedBackground",
diffRemovedBackground: "$orbcode.diffRemovedBackground",
} as const;
Expand Down
2 changes: 1 addition & 1 deletion src/ui/components/Spinner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export function Spinner({ label, showTip = false }: { label: string; showTip?: b
{FRAMES[frame]} {label}
<Text color={COLORS.dim}> ({seconds}s · esc to interrupt)</Text>
</Text>
{tipVisible && <Text color={COLORS.dim}>└── TIP: {tip}</Text>}
{tipVisible && <Text color={COLORS.info}>└── TIP: {tip}</Text>}
</Box>
)
}
3 changes: 3 additions & 0 deletions src/ui/theme.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export interface OrbCodeTheme {
user: string;
inputBorder: string;
inputBorderInactive: string;
info: string;
diffAddedBackground: string;
diffRemovedBackground: string;
}
Expand All @@ -47,6 +48,7 @@ export const DARK_THEME: OrbCodeTheme = {
user: "#A5F3F6",
inputBorder: "#535353",
inputBorderInactive: "#52646C",
info: "#C792EA",
diffAddedBackground: "#3FA2660D",
diffRemovedBackground: "#E346710D",
};
Expand All @@ -67,6 +69,7 @@ export const LIGHT_THEME: OrbCodeTheme = {
user: "#293c3d",
inputBorder: "#535353",
inputBorderInactive: "#91A4AC",
info: "#7C4DFF",
diffAddedBackground: "#3FA2660D",
diffRemovedBackground: "#E346710D",
};
Expand Down