From 66957b2309305e2f9c15fa6435c394cebac3f645 Mon Sep 17 00:00:00 2001 From: Sergii Demianchuk Date: Tue, 20 Oct 2026 17:07:05 -0400 Subject: [PATCH] docs: RELEASE-NOTES.md for v1.4.1 Written against v1.4.0 after tagging (v1.4.1 = 39b22c3, #110-#117), from the notes #113 and #115 had started. Adds Ask When Risky (#112), memory from you and Search Sessions (#114), the working light (#116, #117) and the browser edition at app.levelcode.ai, with the new settings and command; drops the "Sessions panel does not search" line Search Sessions closes; and says plainly that Ask When Risky, the task list and remembering have only been driven by scripted models. Counts are measured the draft script's way on the tag: 137 gate files, 80 suites with 1,407 counted cases (seven print "N passed"/"N passing" and are not counted). --- RELEASE-NOTES.md | 83 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 19 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index a0aa88d..b0acdf3 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,14 +1,6 @@ - -# LevelCode vX.Y.Z - - +# LevelCode v1.4.1 + +The agent now shows its plan while it works, and pressing Enter no longer stops it: what you type waits its turn. A new approvals mode, **Ask When Risky**, has a reviewer model check each command against what you asked for before it runs. The agent can keep what you tell it to remember, and **Search Sessions** finds any past conversation. A repository's own settings can no longer loosen what the agent may do. And LevelCode now runs in a browser tab, at **app.levelcode.ai**. ## Highlights @@ -20,7 +12,7 @@ Now only your own user settings count, except for eleven display and context pre `levelcode.ai.includeActiveFile`, `levelcode.ai.diagrams.enabled`, and `levelcode.ai.chat.` `autoContext`, `autoContextMaxFiles`, `scopeToActiveProject`, `workspaceMap`, `startLocation`, `fontSize`, `maxImagesPerMessage`, `proseWidth`, `groupActivity`. -These are the same eleven the browser edition allows. +These are the same eleven the browser edition allows. The new settings in this release are user-only too. - **If you set one of the others in a project on purpose, it no longer applies there.** For example, a per-project `levelcode.ai.verify.command`, `levelcode.ai.provider`, `levelcode.ai.baseURL` or `levelcode.cloud.endpoint`. Move it to your user settings. In the project's `settings.json` the editor shows the ignored value faded, with a note saying why. - **They are now shared by all your profiles.** VS Code keeps settings like these in the Default profile. A value written in another profile's `settings.json` is ignored, and changing one from another profile writes it to the Default profile for you. @@ -34,17 +26,70 @@ These are the same eleven the browser edition allows. - **A clear hand-back.** When a run ends with a decision for you, the agent asks one question with one or two answers to click ("Run the tests now?"). Clicking an answer sends it as your next message. Before that box appears, the files the agent changed are checked (the editor's diagnostics, and your verify command if you set one); if the check fails, the agent fixes the problems first. - **Messages that wait their turn.** One waiting message shows as a single row; several fold into "3 messages queued · Next: …". **Send now** hands a message to the agent at its next step without stopping the run. You can also edit a waiting message in the message box, reorder several, or remove them. If a run is stopped or fails, anything still waiting comes back into the message box instead of being sent. +### Ask When Risky: a reviewer checks each command before it runs + +The approvals menu under the message box has a third mode, between **Default Approvals** (asks before every command) and **Autopilot** (runs commands without asking; anything hard to undo still asks). + +- **How it decides.** Before a command runs, a reviewer model is shown the command, your requests and the agent's recent activity. It rates how risky the command is and whether you asked for it. LevelCode runs the command only when the risk is low, or medium and clearly part of your task. Anything else shows you the usual approval card, with the reviewer's reason. +- **Some commands always ask.** Deleting files, `sudo`, force-push and the rest of the irreversible set ask you every time, and are never left to the reviewer. +- **Every failure asks.** A review that fails, cannot be read or takes longer than 30 seconds shows you the card. So does a command too long for the reviewer to see whole. +- **Only your own words count as your go-ahead.** What you typed and your answers to the agent's questions do. A diagram retry, Continue, a reply button's prepared text, and anything in a file or a command's output do not. +- **Each review is one model call, for every run of a command,** `npm test` included. With LevelCode Cloud it uses credits, and the run's cost includes it. `levelcode.ai.agent.reviewModel` can name a smaller, faster model from the same provider. +- **Default Approvals stays the default.** Choose the mode from the menu, or set `levelcode.ai.agent.approvals`. + +### Memory from you, and Search Sessions + +Until now, project memory was only what LevelCode inferred after a session ended. Now the agent also keeps what you tell it to. + +- **Ask it to remember something**, correct how it works ("no, use pnpm"), confirm an approach, state a decision or say where something lives, and the agent saves a short note. Notes are listed under **From you** in the Sessions panel's Memory tab, and every new session in the project starts knowing them. +- **A note counts as yours only when it says what you said.** It must quote words you typed in this run, and use only those words, in your order, keeping every "not" and "never". Any other note is kept as unconfirmed and has no effect until you click **Confirm** in the Memory tab. So text in a repository cannot become one of your instructions by quoting you. +- **Ask it to forget something**, and it removes the matching note, but only when your words ask for that and name it. **Forget** in the Memory tab always works. +- **Memory says how old it is.** Each note and fact older than a day carries its age ("9 days old") in what the agent reads, so it knows to check it. +- **Search Sessions…** (in the Command Palette, and the search icon in the Sessions panel's title bar) searches the title and the whole conversation of every session, archived ones included, and reopens the one you pick. Title matches come first. History stays the short list of recent work. Search, listed as missing in these notes since v1.0.5, is here. +- Turn notes off with `levelcode.ai.sessions.memory.notes`. + +### A light round the message box while LevelCode works + +A thin line of light travels round the message box's border while the agent is thinking, writing, running a command or checking its edits. While it waits on you, for an approval or an answer, the light stops and the border stays dimly lit. With reduced motion the border is lit without moving, and high-contrast themes show no light. Turn it off with `levelcode.ai.chat.workingAura`. + +### LevelCode in a browser tab + +LevelCode now runs in a browser at **[app.levelcode.ai](https://app.levelcode.ai)**: the same editor, chat and agent, with nothing to install. Sign in with your LevelCode account, or bring your own provider key. + +- **Your files:** a scratch workspace saved in the browser, or a folder from your computer (in Chrome and Edge), which the agent edits in place. +- **LevelCode Shell** gives you and the agent a terminal over your files, with the usual commands (`ls`, `cat`, `grep`, `sed`, `find`, `jq` and more). It starts no programs and has no network: no `node`, `npm`, `git` or `python`. What the agent's commands change comes back for review with Keep and Undo. +- **What stays in the Mac app:** running real programs (tests, builds, dev servers), local MCP servers, installing extensions, and the update check. + +## New settings + +- `levelcode.ai.agent.approvals` (default **Default Approvals**): how the agent's commands are approved: Default Approvals, Ask When Risky or Autopilot. The same choice as the approvals menu under the message box. +- `levelcode.ai.agent.reviewModel` (default **empty**, the agent's own model): the model that reviews commands in Ask When Risky. +- `levelcode.ai.sessions.memory.notes` (default **on**): let the agent remember and forget what you ask it to. +- `levelcode.ai.chat.workingAura` (default **on**): the light round the message box while LevelCode works. + +## New commands + +- **AI: Search Sessions…**: search every session's title and conversation, and reopen the one you pick. + ## Not in this release - -- **Send now is for text.** A waiting message with an image is sent when the run ends, not mid-run. And a message sent with Send now is read after the step the agent is on: it does not interrupt a command that is already running, and it does not hold back the agent's next edit while it waits. +**Ask When Risky has been checked only with a scripted reviewer.** No real model has rated commands for it yet, so how often it lets routine commands run, and what it catches, has not been measured. The irreversible set asks you whatever the reviewer says, and Default Approvals stays the default. + +**The task list, the hand-back and remembering were tested with scripted models.** Real models may use them differently. A model that never uses the task list or the hand-back ends its runs as before. + +**Send now is for text.** A waiting message with an image is sent when the run ends, not mid-run. And a message sent with Send now is read after the step the agent is on: it does not interrupt a command that is already running, and it does not hold back the agent's next edit while it waits. + +**There is still no Windows or Linux build.** ## Test coverage - +- **137 test files** run in the gate, up from 126 in v1.4.0: the bundled extensions, the signature checker and the browser edition. +- **The bundled extensions' 80 suites hold 1,407 counted cases**, up from 70 suites and 1,252 cases in v1.4.0. Seven suites print `N passing` or `N passed` and are not counted. - `settingsScope` (4 cases): every LevelCode AI setting is user-only unless it is on the list above; every scope is one the editor knows, because it reads a misspelt one as a setting a folder can set; and the desktop and the browser edition allow the same list. -- `turnPlan` (20 cases), `agentPlanProgress` (11) and `planProgressUi` (24): how the task list and the hand-back are read and moved; the agent loop ending on a hand-back with a question without another model call, checking its edits there, and delivering Send now at the next step (or handing it back when the run stops); and the chat page's list, box and queue, down to Enter queueing instead of stopping. -- `scripts/plan-progress-editor-check.js` runs a scripted agent in the real editor (17 checks, light and dark), and `web/test/e2e-plan-progress.mjs` does the same in the browser edition (9 checks). Neither is part of the gate. -- `scripts/folder-settings-editor-check.js` opens the real editor on a project that tries all of the above and checks that none of it takes effect. It is not part of the gate. +- `turnPlan` (20 cases), `agentPlanProgress` (13) and `planProgressUi` (26): how the task list and the hand-back are read and moved; the agent loop ending on a hand-back with a question without another model call, checking its edits there, and delivering Send now at the next step (or handing it back when the run stops); and the chat page's list, box and queue, down to Enter queueing instead of stopping. +- `agentReview` (27, uncounted) and `agentReviewGate` (15): the reviewer's rules and every way a review can fail, and the real agent loop running commands in all three modes. +- `memoryNotes` (32), `memoryNotesHost` (14) and `memoryPoisoning` (49): when a note counts as yours and when forget may remove one, each tried against notes that change your order or drop a "not"; the real agent loop with the remember and forget tools; and Search Sessions over a store of 163 sessions. +- `workingAura` (15): when the light turns, stops and is off, and its look. +- Five scripts run each feature in the real editor with a scripted model: the project settings (16 checks), the task list and queue (17), Ask When Risky (12), memory and Search Sessions (11) and the working light (11). None is part of the gate. -**Full changelog:** https://github.com/levelcodeai/levelcode/compare/v1.4.0...vX.Y.Z +**Full changelog:** https://github.com/levelcodeai/levelcode/compare/v1.4.0...v1.4.1