@altimateai/altimate-code 0.11.1 → 0.12.0
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 +35 -0
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,41 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.12.0] - 2026-09-18
|
|
9
|
+
|
|
10
|
+
The workspace pilot grows a management surface: the agent knows which workspace it is linked to, the sidebar shows what has and has not synced, a `/workspace` menu handles refresh/sync/unlink, and a locally written skill can be published to the workspace. Everything under **Added** is pilot-only (`ALTIMATE_WORKSPACE=1`); nothing changes for other users. **Heads-up for support:** `upgrade` and `uninstall` now refuse when they cannot tell how the binary was installed, instead of guessing — see the first entry under **Fixed**.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **The agent knows which workspace it is linked to.** The system prompt names the bound workspace whenever the binding is verified, so "which workspace is this project linked to?" is answerable; unverified states stay unnamed. Server-provided names are stripped of control and line-separator characters and length-bounded before they reach the prompt, so a hostile workspace name cannot open a new heading or role. (#1278)
|
|
15
|
+
- **`/workspace` menu** — shows the binding, then **Refresh** (pull the workspace's skills and memory into this project), **Sync** (re-send local memory the workspace never received) and **Unlink**. Unlink is safe against a relink that lands mid-request and confirms with the server before clearing local state. (#1278)
|
|
16
|
+
- **Sidebar sync status** — two lines under the workspace name: `12 memories · 3 not synced` and `skills synced 6m ago`. Refreshes every 30 s and reacts immediately to a link, unlink or rebind in this process. The memory-enablement check is rate-limited (once per five minutes on "no", never re-asked on "yes") and scoped to the signed-in account, so a tenant switch never pairs one account's counts with another's name. (#1279)
|
|
17
|
+
- **Publish a skill to the workspace** — `altimate-code skill publish <name>`, and a "Publish to workspace" action in the Skills dialog (`ctrl+a` on a skill). Uploads every file in the skill directory, not just `SKILL.md`; re-publishing updates the same workspace skill. Refuses, with a message that says what to do, when the project is not linked, the account does not own the workspace, the skill is built-in, global, or one the workspace sent you, a file is binary or a symlink, the bundle is empty or over 10 MB / 100 files, the name is taken by another of your skills, or the skill was edited in the workspace while you were uploading. Never uploads `.env*`, `.git`, editor swap files, private keys and certificates (`id_rsa`, `*.pem`, `*.key`, `*.p12`, …), `.npmrc`/`.netrc`/`.pypirc`, `credentials.json`, `secrets.*`, or the `.ssh`/`.aws`/`.gnupg`/`.altimate` directories — a filename blocklist, so keep other secrets out of skill folders. Documented in [Skills](docs/docs/configure/skills.md#cli-commands). (#1280, #1313)
|
|
18
|
+
- **Extension tools in the prompt** — when a live VS Code bridge for this project serves extension-type tools (dbt project tools, SQL tools), the `## Workspace integrations` section now names them, so the model can call what the IDE is actually serving. Silent unless both the catalog lists the tool and the bridge is verified alive. (#1291)
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **`upgrade` and `uninstall` resolve the install from the running binary** instead of asking every package manager and acting on the first that answered. When the method cannot be confirmed — a pinned `ALTIMATE_CODE_BIN_PATH`, an `npx`/`dlx` cache, a scoop or choco install (which only ever targeted upstream's `opencode` package), or an unfamiliar layout — both commands now refuse and print the manual command for each manager, rather than upgrading the wrong package or, for `uninstall`, deleting config, data and cache before failing to remove the binary. Upgrade failures name a reason; subprocess output reaching the log is redacted first. (#1305, #1306)
|
|
23
|
+
- **Compaction, title and summary requests no longer fail with "Could not get a response from the agent."** Those requests declare no tools while summarising a history full of tool calls, which the Altimate gateway rejects. Tool parts are now flattened to readable text for toolless requests only, with assistant turns coalesced so role alternation holds; ordinary turns are untouched. (#1319, closes #1315)
|
|
24
|
+
- **Creating a quick workspace from an already-linked project works.** The atomic create-and-bind call refused before creating anything, so the rebind path never had a target. It now creates unbound, then repoints — and aborts cleanly if the signed-in account changes in between, rather than stranding a new workspace. (#1318)
|
|
25
|
+
- **`skill publish` and the TUI "Publish to workspace" row appear only under the workspace pilot**, like `link`; outside it, the command told users to run a `link` command that did not exist for them. Found in this release's review.
|
|
26
|
+
- **`test/installation/ownership.test.ts` read the developer's real `BUN_INSTALL`** and was red on any machine where bun had ever installed this package globally. Found in this release's review.
|
|
27
|
+
|
|
28
|
+
## [0.11.2] - 2026-09-11
|
|
29
|
+
|
|
30
|
+
Patch on 0.11.1: closes the gap that kept most free-tier users from ever being offered Altimate Base, and makes linked workspace names clickable. **Heads-up for support:** on their next launch, users whose default quietly moved to a public free Zen model after 0.11.0 will now see a one-time dialog asking whether to switch to Altimate Base. Nothing switches without a Yes.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **Altimate Base is now offered to every user on an implicit free default, not only users who had picked Big Pickle.** 0.11.0's migration fired only when `opencode/big-pickle` was in the persisted recent-models list, which only the model picker writes. 1,027 of 1,031 Big Pickle machines had never used the picker, so on 0.11.x they were silently rerouted to the next public free Zen model (`nemotron-3.5-lightning-free`) and never saw the consent dialog. Eligibility is now judged on the resolved launch default itself, and the dialog names the model actually being replaced. Escape and clicking outside the dialog count as No and open the model picker; Ctrl-C closes without deciding. A decline is remembered in two places (the TUI's kv store and `declinedManagedBaseDefault: true` in the state directory's `model.json`) and is honoured by the TUI, headless `run`/`serve`, and ACP/IDE sessions alike, so a No in one surface is never overridden by another. A registered Base outranks only the keyless public Zen tier; a keyed Zen account or any other connected provider still wins. Registration is per machine: once any host has registered, other hosts on that machine default to Base without a prompt of their own (documented in [Providers](docs/docs/configure/providers.md)). (#1302, closes #1301)
|
|
35
|
+
- **Model cycling visits every recent model in a stable order** instead of bouncing between two, and the model you cycle to becomes the launch default on the next start. (#1302)
|
|
36
|
+
- **A prompt submitted before the app finished loading is kept, not discarded.** The submission is deferred until startup state has settled and then sent unchanged; if you edit the text in the meantime it is not auto-sent. (#1302)
|
|
37
|
+
- **Migration and consent telemetry now carries an `origin` field** (`welcome`, `model`, `migration`) so the migration path is visible in the data; it was previously gated on the first-run funnel and invisible. No new fields carry paths, prompt text, or URLs. Documented in [Telemetry](docs/docs/reference/telemetry.md). (#1302)
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- **Linked workspace names are clickable** in the sidebar, in `altimate-code link`, and in the "already linked" dialog, opening the workspace's manage page in the browser. In the terminal this uses OSC 8 hyperlinks; the underline affordance appears only on terminals known to render them, and a plain `Manage it at:` URL line is printed otherwise. Server-provided names are stripped of control and bidi characters before they reach the terminal, so a hostile workspace name cannot redirect or visually spoof the link. (#1274)
|
|
42
|
+
|
|
8
43
|
## [0.11.1] - 2026-09-09
|
|
9
44
|
|
|
10
45
|
Same-day patch to 0.11.0: fixes a first-run freeze that fresh installs hit, and adds the first-run health telemetry that would have caught it. Shipped straight to `latest` without a beta soak because the freeze blocked new users on the headline 0.11.0 feature (Altimate Base).
|
package/package.json
CHANGED
|
@@ -7,20 +7,20 @@
|
|
|
7
7
|
"scripts": {
|
|
8
8
|
"postinstall": "bun ./postinstall.mjs || node ./postinstall.mjs"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.12.0",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@altimateai/altimate-core": "0.7.0"
|
|
14
14
|
},
|
|
15
15
|
"optionalDependencies": {
|
|
16
|
-
"@altimateai/altimate-code-darwin-x64-baseline": "0.
|
|
17
|
-
"@altimateai/altimate-code-linux-x64-baseline": "0.
|
|
18
|
-
"@altimateai/altimate-code-linux-arm64": "0.
|
|
19
|
-
"@altimateai/altimate-code-windows-x64-baseline": "0.
|
|
20
|
-
"@altimateai/altimate-code-darwin-arm64": "0.
|
|
21
|
-
"@altimateai/altimate-code-darwin-x64": "0.
|
|
22
|
-
"@altimateai/altimate-code-windows-x64": "0.
|
|
23
|
-
"@altimateai/altimate-code-linux-x64": "0.
|
|
16
|
+
"@altimateai/altimate-code-darwin-x64-baseline": "0.12.0",
|
|
17
|
+
"@altimateai/altimate-code-linux-x64-baseline": "0.12.0",
|
|
18
|
+
"@altimateai/altimate-code-linux-arm64": "0.12.0",
|
|
19
|
+
"@altimateai/altimate-code-windows-x64-baseline": "0.12.0",
|
|
20
|
+
"@altimateai/altimate-code-darwin-arm64": "0.12.0",
|
|
21
|
+
"@altimateai/altimate-code-darwin-x64": "0.12.0",
|
|
22
|
+
"@altimateai/altimate-code-windows-x64": "0.12.0",
|
|
23
|
+
"@altimateai/altimate-code-linux-x64": "0.12.0"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"pg": ">=8",
|