Repository navigation
Codalus IDE 0.6.0
·
168 commits
to develop
since this release
Codalus IDE 0.6.0
- The Windows Forms designer's Properties window works as the classic IDE's (user guide):
- Categories collapse, and stay so as you select other components; a component list above the grid selects the form or any of its components by name.
- Font, Location, Size, Padding, Margin and FlatAppearance open into their parts, each edited alone and written as one assignment of the whole value (
button1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point, 0);). - Editors under the value: colors in Custom, Web and System tabs (with Define Color),
TextAlign's nine positions, multi-line text, a menu item's shortcut keys, flags, Dock and Anchor, and dates. AcceptButton, CancelButton, ContextMenuStrip, Cursor (with each cursor's picture) and the font's name offer their choices; a tool tip with line breaks opens the multi-line editor. - Editors behind "…" as panels over the form: Font (one undo step), the String Collection Editor for a text box's
Lines, Select Resource for images (the form's resources or the project'sProperties/Resources.resx, with a preview) and the collection editor, whose items' properties use the same grid. - An invalid value (
abcfor a location's X) says why: OK goes back to what you typed, Cancel puts the old value back. - Reset and Description on a row's right-click menu, a double-click cycles a value, set values are bold in the value cell, and
F4orAlt+Downopens the selected row's drop-down (keys). - A text box's or combo box's
AutoCompleteCustomSourceis edited as a collection. - Read-only values can be selected and copied (
Ctrl+Ccopies a row's value), and several edits sent together (the font editor's OK) apply all or none.
- The Properties window for Solution Explorer's selection (user guide) has the same grid: Categorized and Alphabetical, collapsible categories, a resizable description, Reset on the right-click menu, and Property Pages, which opens a project's properties or, for the solution, the Configuration Manager.
- The Windows Forms designer's context menu is the classic IDE's (user guide): right-click a control (or press
Shift+F10) for its designer's own commands first (a tab control's Add Tab and Remove Tab, a list box's Edit Items...) with Show Smart Tag, then View Code, Bring to Front, Send to Back, Align to Grid, Lock Controls, Select 'parent', Cut, Copy, Paste, Delete and Properties. Entries that don't apply are grayed, as in the classic IDE: nothing to cut, copy, delete or align with the form selected, nothing to paste until you copy. Align, Make Same Size and Tab Order moved off this menu: they're in Format and View, as there. A component in the tray has its own commands first too (an image list's Choose images opens its Images editor), then View Code, the clipboard, Rename, Line Up Icons and Properties, and the tray's background Paste and Line Up Icons. A command's underlined letter (Insert Standard Items on a menu strip) works as in any menu, instead of showing as an&.- Edit → Undo, Redo, Cut, Copy, Paste and Select All work in the designer.
- Select All (
Ctrl+A) takes every component of the form, the controls inside containers and the tray's components included (moved, a control inside a selected container moves only with it), and Paste goes into the selected control's container (a group box, a panel, a split container's panel), not always the form. - The Format menu is grayed when the selection doesn't suit a command, as in the classic IDE: Align Lefts to Bottoms and Make Same Size need two controls or more, spacing two or more in one container, and a tray component in the selection grays what is for controls.
- Lock Controls in the Windows Forms designer (user guide), in the context menu and at the bottom of Format: locked controls show a lock and no grab handles, and a drag, the arrow keys or the handles can't move or resize them; Format aligns others to a locked control and leaves it in place. It's checked while any control of the form is locked, and choosing it then unlocks them all; a control's Locked property locks one control. Locks are kept in the form's
.resxas the classic IDE keeps them, never in the code, and undo takes them back. - The data tip, laid out like the classic IDE's (user guide): hovering a variable or a member access while the program is stopped shows a header right over it, its name on the code's, with its icon, a View drop-down where a visualizer applies (the magnifier opens the likely one, the arrow lists them all) and its value in a box. Expanding it (the pointer resting on its chevron, a click, or
Right) opens its members in a tip of their own, below and to the right, and each member expands the same way, a tip per level. Rows are compact, a long value stops at 400 px with the whole value in its tooltip, a tip shows 15 rows before it scrolls, and the type is in the name's tooltip instead of after each value. Near the editor's bottom edge the tips open upwards, and near its right edge they move left. The header passes the code's gestures on: a double-click on its name selects the word,Ctrl+Clickgoes to the definition and the wheel scrolls the editor. HoldingCtrlfades the tips and lets the pointer through, so the code under them can be read andCtrl+Clicked.- Members as the classic IDE groups them: each row has its kind's icon (the completion list's blue wrench for a property, a field's brick, a constant, an event). The private, protected and internal members your own code declares are listed with the others, in name order, with a lock on their icon; a library type's go under Non-Public members, and Static members come last. A property whose getter threw reads "threw InvalidOperationException: …" in the error color, and still expands to the exception; a value the debugger couldn't evaluate reads "Couldn't evaluate", with Re-evaluate beside it. Locals, Autos, Watch and QuickWatch group members the same way. In a remote session, where the program's assemblies aren't on this machine, nothing is grouped and the icons are guessed from the names.
- Collections as their elements: a
List<T>,Dictionary<TKey, TValue>,HashSet<T>,Queue<T>orStack<T>expands to its elements (a dictionary's entries named by their keys, each expanding to Key and Value; a queue from its head, a stack from its top), then Raw View with the collection's own members. The debugger can't build their debugger views, so Codalus IDE reads the elements from the collections' fields, on every .NET version from 6 to 11, .NET Framework and Mono. Dictionaries and hash sets get the Grid Visualizer too. In a long list, the[DebuggerDisplay]text of the elements past the first 60 is filled in as they scroll into view. - Editing in place: click a value in the header or a row (or press
F2orEnter), type, and pressEnterto set it,Escapeto put it back. When the debugger refuses the value, the box stays open with its message under it, so the fix is a keystroke away. A value that can't be changed (a property without a setter, a constant, a read-only field, any value in a Mono program) opens no box, and its tooltip says why. - Changed values are red: a value that differs from the one it had when the program last stopped is drawn in red, in the data tip as in pinned tips.
- Pin any row: the pin at the end of the row under the pointer pins that member (
app.Properties) to the line, not only the hovered expression. Pinned tips look like the header, with a strip to unpin them on their left and their comment under them; while the program is paused they expand into the same tips, and while it runs their last values are muted. Several on one line stack. - Errors and warnings at the hovered name show in a strip right above the header, with the code's link, the message, Fix and Other Fixes, as in Quick Info; when the tips open upwards near the editor's bottom, the strip moves under the header.
- Locals, Autos, Watch and QuickWatch use the data tip's rows: one flat list under a Name | Value | Type header, each level's indent inside the name cell, so values and types stay in their columns however deep you go (drag the header's edges to resize the columns). They have the data tip's icons, groups, collection views, View button and in-place editing (
F2,Enteror a double-click on a value), changed values in red, andRight/Leftexpand and collapse. What you expanded stays expanded when you step, matched by expression. A watch that doesn't evaluate shows the error icon and its message in the error color. The "Set" dialog is gone.
- NuGet's verified owners (user guide, #78): a blue badge with a check after a package's ID, in Browse and in the details' heading, says nuget.org reserved the ID's prefix for one of the package's owners; its tooltip adds that the authors shown are not verified, and screen readers read "verified owner". It shows only for packages from
https://api.nuget.orgthat can be nobody else's copy: nuget.org chosen in the source box (or your only source), or package source mapping sending the ID to nuget.org alone. A mirror or a feed with nuget.org as its upstream never shows it. Installed, Updates and Consolidate show it in the details, from one nuget.org search beside them; offline, none (D39).- Fixed: with package source mapping, the package manager offered copies restore refuses: in All sources, a local feed's newer build of a package mapped to nuget.org was listed (and in the Version box), and installing it failed restore. Search and the details now leave out sources an ID isn't mapped to.
- Diffs in the editor's colors (user guide, #86): a file's diff colored nothing, so Git compare was plain text. Each side is now colored by its language's grammar, in the editor's colors, and the side whose text is the open document's (usually the working tree) takes the language service's colors too, so interfaces, parameters and the like look as they do in the editor. The colors come from each file's own text, so a removed line that opens a comment never colors the added lines after it. The merge editor's three panes are in the editor's colors too. A changed line's changed words are marked on both sides (
AddSingleton→AddScoped), with a deeper fill and a thin border, removed and added lines have fills of each theme's own (borders only in High Contrast), and a filler row, where the other side has lines, is hatched. - The diff document is laid out like the classic IDE's (user guide, #86): a compact toolbar with Next Change and Previous Change (
F8,Shift+F8while the diff has the focus), the count ("Change 3 of 4": a change is a run of changed lines) and the lines removed and added; a gear menu with Side by Side and Inline (remembered ingit.diff.layout), Refresh and Open the file. Each side has a header naming its file and what it is ("Startup.cs (Index)", "(Working tree)", "(HEAD)", a renamed file's old name), line numbers that count its own file's lines (filler rows no longer shift them), its own caret and current line, and its own status bar with the caret's line and character, the indentation, the line endings and the encoding, the left one with the zoom box (Ctrl+wheeltoo). The side that is the open document has the navigation bar, the other an empty row so the lines stay aligned. The splitter between the sides still resizes them (double-click: half and half), and the diff keeps its caret, scroll position and splitter when you switch tabs. A revision comparison's tab reads "Startup.cs (3f2a1c9 → 8b7e4d2)". - Staging in the diff, change by change (user guide, #86): the code's context menu has Stage Change, Stage Selected Lines, Discard Change… and Discard Selected Lines… (in a staged diff, Unstage Change and Unstage Selected Lines), also in the Command Palette, and the toolbar has Stage All and Discard All… ("Undo All" in the classic IDE; Unstage All in a staged diff). Show Staging Controls (
git.diff.showStagingControls, off by default) adds a column between the line numbers and the signs with each change's Stage and Discard (or Unstage) buttons; hovering one outlines the lines it acts on. A change is what the diff draws, so two edits that git puts in one hunk stage separately, and what is staged is exactly what is drawn. The working-tree side shows the file's open buffer, unsaved edits included, and each action saves the file first, then checks the saved text is the text drawn (format on save can change it; then nothing is applied and you're told). Discard Change… and Discard Selected Lines… now ask first, naming the lines (they didn't before), with Cancel the default, and say when unsaved edits are saved first; Discard All… says when they'll be lost. The diff refreshes by itself after edits, saves and changes to the index, keeping its caret and scroll position. - Summary, large and binary files, and what "No changes" means (user guide, #86): Summary (on the diff's toolbar and in its gear menu, off by default) folds every unchanged run to three lines of context, on both sides in step; a click or
Enteron a folded run opens it. A file over 10 MB or 100,000 lines waits for Compare Anyway instead of keeping Codalus busy, and a binary file shows each side's size; Stage All and Discard All… still work on both. When there are no lines to compare, the diff says why: no changes at all, the working tree matching the index while the file has staged changes (with Open Staged Changes), or only the line endings, the encoding, the file mode or the last newline differing ("Only the line endings differ: CRLF in the index, LF in the working tree."). - Fixed: a narrow window. As the window got narrower, the menu ran under the minimize, maximize and close buttons on Windows, and the standard toolbar wrapped onto a second line. Now, as in the classic IDE, the solution's name shortens first, then the search box shrinks to its magnifier, then the menu wraps onto a second row with the search box at its end, while the window's buttons keep their place at the top right with room to drag the window beside them. The toolbar stays on one row: its groups fold from the right into … buttons that list their commands (user guide). The same happens on macOS and Linux, where the system draws the title bar (on macOS the menu stays in the system's menu bar).
- Fixed: dimmed editor colors. After switching documents or tool windows, the editor and the compare view were often drawn at 85% opacity, so every color, the Classic themes' most visibly, looked muted next to the classic IDE's. A tab's view now appears at once, as in the classic IDE, without the docking library's fade.
- Fixed: Quick Info, the completion list's description and parameter info showed only the declaration of a method or type from a referenced assembly, such as a NuGet package's or .NET's own (
app.UseWebAssemblyDebugging(),Console.WriteLine), without its summary (user guide). They now show its documentation from the XML file next to the assembly, as the classic IDE does, or from a localized one for your OS's language beside it (in ade,pt-brorzh-hansfolder) when one is installed. XAML and Razor completion show these summaries too (Avalonia's and WPF's controls, Blazor's components), read when you select an item so the list doesn't wait for a large documentation file. Files outside a project, and the files of a folder you don't trust, get .NET's documentation too: they now compile against .NET's reference assemblies, as a project does. - The Git Changes window's folder menu and branch drop-down (user guide), as the classic IDE has them. Right-click a folder for Stage, Unstage, Discard Changes…, Stash Changes…, Add to .gitignore, View History, Reveal in File Explorer (Finder, File Manager), Open in Terminal, Copy Path, Copy Relative Path, Expand All and Collapse All; a folder's commands act on the files the window shows, and with a filter on the folder says "2 of 5 files" and the section "Changes (2 of 10)". Files, conflicts and the repository node get the same menu, and a folder's hover buttons now include Discard. The branch button opens a drop-down of the branches with their outgoing and incoming counts and a search box; a click checks a branch out, and each branch has its own menu: Checkout, New Local Branch From… (which can leave the new branch unchecked out), Merge 'x' into 'y', Rebase 'y' onto 'x', Update from 'origin/x', Push (of that branch, checked out or not), Rename…, Delete (and its upstream on the server, if you ask; a branch that isn't merged lists the commits it would lose), Compare with Current Branch (a new document of the files two branches differ in), View History and Copy Branch Name. Entries that don't apply are hidden, and the drop-down says why (a merge in progress, a detached HEAD, a branch checked out in another worktree). Without a remote, the window's link is Publish to a Git Host…. Both menus are menu locations plugins can add to (
gitChanges/context,gitChanges/branch). - Changed: Discard and Delete confirmations have Cancel as the default, at the trailing edge on every OS, so
Entercancels; the action is a plain button named for what it does. On macOS a dialog's default button now goes last without reversing the others, so a delete reads [Delete] [Cancel] there too. - Update a branch without checking it out (user guide): Git → Branches → Update Branch… (also in the Git Changes window's ⋯ menu) lists the local branches that have an upstream, the current one first, and brings the one you pick up to date from its remote, so you no longer check it out and pull. It fetches only that branch and moves it only by a fast-forward, so your current branch, your files and any uncommitted changes stay as they are; picking the current branch fast-forwards it, with its files, and never makes a merge commit. The status bar shows it running, with a cancel button, then how many commits came. When both the branch and its upstream have commits the other doesn't, nothing changes and a notification says how many on each side and offers Checkout, to merge or rebase there; a branch with only commits of its own has nothing to update (Push sends them). A branch checked out in another worktree, or being rebased there, is left alone, and the notification says where, with Open in New Window. Each branch's own menu in the Git Changes window's branch drop-down has it too, as Update from 'origin/…'.
- Fixed: building while a form is open in the Windows Forms designer (user guide): the designer kept your app's assembly open, so the next build failed with MSB3027 ("Could not copy … The process cannot access the file") until you closed it. It now runs on a copy of your build output, as the classic IDE does, and after a build that changes your app it loads the form again on the new build, so your own controls show their changes (a designer in another tab does it when you switch to it). While it loads again, the form takes no clicks, and changes you make in the Properties window apply once it's back. A designer you open while a build runs waits for the build instead of failing with "A build is already running.", and one that couldn't start (your project didn't build yet) starts after your next successful build.
- Fixed: dragging from the Toolbox onto a form (user guide) didn't start a drag. Double-click a Toolbox item, or press Enter on it, to add it at once, as in the classic IDE: into the selected container, at its top-left corner or a step below and to the right of the selected control, with the designer focused so the arrow keys move it (
Spaceand a click still arm an item). The armed item is highlighted in the list instead of a hint above it, which pushed the items down; the hint is the designer's status line. A component (a Timer) can be dropped on the component tray, and nothing is dropped in tab order mode or beside the form. Items are created through their Toolbox item and container, as in the classic IDE, so the code a Toolbox item writes changes: a Label sizes itself to its text (AutoSize = true), a split container fills an empty container, the first menu strip becomes the form's main menu, and a control added to a tab control goes to its selected page. - Fixed: a list box, combo box, domain up-down or list view selected in the Windows Forms designer showed a menu's Type Here box over it (user guide), which took the clicks meant for the control, and typing in it replaced the list's items with the typed text. Only menu, tool, status and context menu strips (and strips derived from them) have Type Here now; a list's items are edited in its Items collection editor.
- Fixed: opening a form in the Windows Forms designer while its project was still loading, with the form's code closed (from Solution Explorer, or as the session reopened it), closed the designer and opened the code, saying the form "isn't a form, a user control or another control" (user guide). It now opens in the designer. Renaming a control while the project loads also renames its uses in the form's code, new code keeps the file's short type names, and the designer reads the form again once the project has loaded.
- Fixed: in the Windows Forms designer, a control dropped on another, or moved over it, was drawn behind it although it was in front, and Send to Back seemed to bring a control to the front (user guide): Windows Forms'
DrawToBitmap, which draws the form, draws a container's controls in reverse order. Overlapping controls are now drawn in their real order, on the form and inside group boxes, panels, tab pages and split containers. - Fixed: on Windows, starting a program in the integrated terminal under the debugger now and then failed with "The process cannot access the file … because it is being used by another process.": another program, such as an antivirus scanner, had the file the program reports its process id through open for a moment. Codalus IDE now reads it again a moment later.
- Hot Reload while debugging a Blazor Web App (user guide): Start Debugging runs the server under
dotnet watchand attaches the debugger to it, so saving a WebAssembly component (or Apply Code Changes,Alt+F10) applies the edit in the browser while both the server and the page are debugged, and breakpoints stop in the changed code. Before,F5applied no edits there, althoughCtrl+F5with Hot Reload did. Edits to code the server runs wait for Restart (Ctrl+Shift+F5), and Codalus IDE says so; the server's breakpoints in edited files wait for the restart too, with the reason in the margin. Edits that need a restart restart the app, and debugging follows it in a new browser window, without leaving the old server holding the port. The server's startup code is debugged only when it has breakpoints, which choose the previous behavior; its console output shows in the Debug Console. Needs the .NET SDK 10.0.400 or later. The Hot Reload while debugging setting (debug.hotReload) turns it off (ADR 0040). - Fixed: a Blazor Web App's
.Clientproject was the default startup project when the solution listed it first, asdotnet new blazorsolutions often do, so Run and Start Debugging started the client's dev host, which serves nothing at/, and no browser opened. The server that hosts it is the default startup project now. - Fixed: Run (
Ctrl+F5) of a web app could end Codalus IDE when no program opens URLs (on Linux, noxdg-open). Output → Run now says the browser couldn't be opened, with the address. - Fixed: the Hot Reload status said "applied" when the browser refused an update ("Unable to apply managed code updates", which SDK 10's
dotnet watchfollows with "changes applied" anyway). It now says the changes weren't applied, and the tooltip has the browser's message. "Waiting for a file to change before restarting" no longer shows as restarting: the app exited. - Fixed: the Hot Reload while debugging setting's description promised that other apps restart to apply an edit, which nothing did. It now says what happens.
- New Project is the classic IDE's three-page wizard (user guide): File → New → Project (
Ctrl+Shift+N), the start window's Create a new project, and Solution Explorer's Add → New Project… open one window instead of a row of pickers and prompts.- Create a new project lists your recent templates (pin them, or remove them) and every installed template with its icon, description and tags, with search (
Alt+S) and filters by language, platform and project type. A template whose projects run only on Windows says so on Linux and macOS, and a missing template pack (Avalonia, CoreWCF) installs in place. - Configure your new project asks for the project name, the location (your recent locations, or Browse…), the solution name, whether to place the solution and project in the same directory, and whether to trust the location; with a solution or folder open you can add the project to it, and Add → New Project adds it in the selected solution folder.
- Additional information shows the framework, labeled Long Term Support, Standard Term Support or Preview, and the options of that framework's template, such as Include sample pages, Use controllers, Do not use top-level statements, Authentication type and Configure for HTTPS, plus Enable container support and Enlist in Aspire orchestration in a trusted location.
- Create makes the solution and the project, opens them and opens the template's start file; your recent templates, locations, filters and options are remembered. The window has the classic IDE's keys (
Alt+LeftandAlt+Right,Enter,Esc, access keys); on macOS⌘[and⌘]move between the pages, so⌥←and⌥→keep moving by word in its text boxes. - Projects are now created with your default .NET SDK, and their packages restore when the trusted solution opens; a location whose
global.jsonpins an SDK too old for the framework gets a warning. The built-in Templates plugin is gone: New Project is part of the IDE, with the same commands and the sametemplates.defaultLocationsetting (ADR 0082). A plugin can no longer redeclare a command or setting of the IDE's (plugins.md).
- Create a new project lists your recent templates (pin them, or remove them) and every installed template with its icon, description and tags, with search (
- Classic's editor colors match the classic IDE's (user guide): in Classic Dark, control keywords (
if,return) are pink-lilac#D8A0DF, comments#57A64A(an XML doc comment's text too, and Razor's and HTML's comments), strings#D69D85, line numbers gray#8A8A8Awith the caret's line number brighter (#CCCCCC), CodeLens#A1A1A1, and the current line a#272727fill: the values measured in the classic IDE. Classic Light and Blue take its Light scheme: control keywords#8F08C4, gray line numbers with a darker one for the caret's line, and a gray CodeLens. Text a grammar colors (files without a language service, and C# before its semantic colors arrive) follows. Bracket pair colors are off by default in the Classic themes, as the classic IDE has none, and stay on in Harbor, Graphite, Daylight and Ember; Text Editor → Bracket Pair Colorization (editor.bracketPairColorization) still turns them on or off in any theme. The other families keep their colors. Two new color keys go with it:editorLineNumber.activeForegroundandeditorCodeLens.foregroundinworkbench.colorCustomizationsand in themes. - Rounded corners in the Classic themes, as in the classic IDE (user guide): tool windows, the document well and the toolbar are cards with 4 px corners, 6 px apart and 6 px from the window's edges on the window's color. The document well is one card holding its tabs; the selected tab is outlined in the accent and opens into a 1 px accent frame around the active document (in Classic Blue and High Contrast it keeps its fill), and in a group without the focus it stays outlined in gray, its title semibold. The focused tool window is framed in the accent, its caption plain text on the card. The toolbar is a card as wide as its buttons and still wraps in a narrow window. Buttons, fields and drop-downs have 4 px corners (2 before), list and tree rows are inset with rounded corners, Solution Explorer marks the selected item with a pill, the selected tool window tab hangs from its window, and auto-hidden tool windows' tabs have a bar. Menus, drop-down lists and toasts have 6 px corners and dialogs 8 px in every theme (they had 5, 6, 8 and 10); on Linux without a compositor a menu's corners show the window's color instead of white or black squares. Harbor, Graphite, Daylight and Ember keep their shapes.
- Combo box lists check the chosen item, and tabs have a line under them, as the control set's design draws them: an open combo box's list shows a check beside the item that's chosen, and every item's text starts after the check's column, so the list lines up. Find and Replace's Look in and File types and Counters' process box check the scope, the file types or the process that's chosen too; the editor's navigation bar and Find what and Replace with, whose lists are what you typed before, keep their lists without it. Every row of tabs inside a window or document (Find Results' pages, HTTP Response's Body, Headers and Request, a profiling report, Containers, Find and Replace and Code Search) has a thin line under it, which the selected tab's underline covers. Find and Replace's and Code Search's tabs now look like the others: the body's text size, 28 px, the accent underline.
- Fixed: Reset in the Settings editor kept the Modified mark when the setting's value was the same as its default (or as the value another settings file gives it): the line was removed from settings.json, but the row still said Modified and offered Reset, and the page's count of modified settings stayed the same.
- Fixed: Start Debugging (
F5) on an Aspire AppHost on a busy machine could leave a project stuck short of Running in the Aspire window while it ran under the debugger: Codalus IDE answered the orchestrator's request to start the project only once the debugger had attached, and the orchestrator gave up after 120 seconds. It now answers at once, and the program joins the debug session meanwhile. - Connect a coding agent from AI Chat (user guide): while AI assistance is off, or has no provider, AI Chat offers Claude, Codex, Gemini CLI and GitHub Copilot as buttons, and More agents… for pi, OpenCode and goose (the agent menu has Connect to each one, More agents… and Manage Agents… while AI is on; Add agent… is gone). The Connect dialog finds Node.js and npx (or the agent's own CLI) on your PATH, installs what's missing with your own package manager (winget, Homebrew, snap, or apt and dnf when their Node.js is new enough; Codalus's own Node.js only as an opt-in where none can), shows how the agent signs in and exactly what runs, and tests the connection in an empty folder before anything is saved: only a passing test writes the agent's entry to your user settings, and turns AI on when you checked its box. Claude's subscription signs in through Claude Code's own login in the Terminal (Codalus never sees its tokens), and the test asks Claude who is signed in; an API key goes to the OS credential store, never to a file (Codex keeps its own). Manage Agents… checks an agent's connection, changes its key, signs it in again or disconnects it (optionally signing it out). Connecting is refused in remote windows.
- External agents sign in from the Terminal: an agent's own login (Claude's, pi's) runs in a Terminal tab, and the agent starts again afterwards; a question refused for sign-in is sent again once you're signed in. Entries can name
secretEnv(keys kept in the credential store) andunsetEnv, and Connect and Disconnect keep the comments insideai.agents. - Plugins can no longer read other plugins' secrets: a plugin host's secret requests must name one of its own plugins, and the shell's own secrets (external agents' keys) are out of every plugin's reach.
- Fixed: the completion list, its description, parameter info, Quick Info and other popups that open in a window of their own drew their text at 14 px instead of the 12 px of the rest of the IDE.
- Fixed: the Aspire window's console output could stay empty for a running project: when the AppHost's log stream for it ended early, the window never asked again. It now follows the stream again while the resource runs (a few times, waiting longer each time), without repeating lines already shown, and again when the resource is restarted.
- Fixed: Class View lost its selection, and collapsed, whenever the solution's projects changed (a reload, or the build host finishing an evaluation after the language service was ready), so
Enterright after could do nothing. A reload that leaves the same projects now keeps the tree as it is, and the Object Browser keeps its project. - Fixed: on macOS, stopping something that runs in its own processes (a template or git command past its time limit, a program you run or debug, a host, a remote session, Aspire's resources) could hang for minutes while any program on the Mac was crashing: ending the process tree read every process's details, and macOS holds a crashed process's until its crash report is written. Codalus IDE now finds the processes to end from the system's list of each process's children.
- Fixed: on Windows, a Git command (Stage, Unstage, Discard, a stash) sometimes failed with "Unable to create '…/.git/index.lock': File exists" right after another one: the antivirus or the search indexer can hold the last command's lock file for a moment. Codalus IDE now tries such a command again for a moment before it reports the lock.
Other changes
- Design New Project as the classic IDE's three-page wizard (0.6.0) (28587c6)
- Expand typed paths in Codalus.Platform (UserPaths) (761e4b1)
- New Project's template catalog, creation and history in the Workbench (1960b5d)
- Plugin host: keep the IDE's commands and settings, test prompts through HelloWorld (054c6c0)
- New Project is the IDE's: commands, the wizard's model, and the Templates plugin retired (34b41db)
- New Project: Enlist in Aspire orchestration (9eb807a)
- PathBox: recent paths in the field, and a label's access key reaches it (5e146e6)
- Icons for New Project's template kinds (85d42cb)
- New Project's window: the three pages, their keys and their checks (956fa56)
- Smoke step projects.newProject and New Project in the gallery (a0e08dd)
- Docs for New Project: ADR 0082, D37, the user guide and the 0.6.0 notes (702e8b1)
- Website: New Project on the Features page (e5b9785)
- New Project: shown in the taskbar like the start window; more view tests (5ca0c35)
- New Project: a closed wizard doesn't reload the templates (20c13b6)
- New Project's CLI: dotnet new's real error, and a time limit that isn't a cancel (f7e2547)
- New Project's plan: Aspire beside a same-directory project; unreadable folders (c10ffd4)
- New Project's history writes nothing when the filters don't change (a83253e)
- ProjectTemplateCatalogSdkTests: a fixed day for the support labels (de10d39)
- New Project's wizard: container support after the project loads, and the review's fixes (f2e80a6)
- Docs for New Project's fixes: macOS keys, trust after Create, Aspire beside the project (5e7cdd0)
- Windows Forms designer: a copy of the build output for the designer host (#66) (8cc388f)
- Windows Forms designer: start the host on a copy of the build output (#66) (650fe72)
- Windows Forms designer: reload the form after a build, wait for running builds (#66) (aac8ed0)
- Docs: building while a form is open in the Windows Forms designer (#66) (92df6aa)
- Design: the Toolbox's armed item drawn as the selection (#66) (ec72dd7)
- Windows Forms designer: Toolbox items created as the classic IDE creates them (#66) (4af5850)
- Toolbox: drag onto the designer, double-click or Enter to add, the armed item as the selection (#66) (db189d2)
- Smoke: winforms.toolboxAndBuild, and the armed Toolbox in the gallery (#66) (43742b0)
- Docs: the Toolbox as in the classic IDE (#66) (612f818)
- Toolbox: the armed item's inactive color matches the Toolbox view (#66) (281302f)
- Windows Forms designer: retry held files the host needs, skip other builds' outputs in the copy (#66) (64c2141)
- Windows Forms designer: start again after a failed start, stop on close and at exit (#66) (569414d)
- Toolbox: the Pointer's own help text, the designer names its reload button, sturdier gesture tests (#66) (728698f)
- Docs: a designer without a host, closing during a start, the copy's exit and skipped folders (#66) (c30baaa)
- Windows Forms designer: Type Here only on tool strips, not on list boxes, combo boxes, domain up-downs or list views (#67) (4563e91)
- Windows Forms designer: a form opened before the C# host has its project opens in the designer, not as code (#76) (cd36ebd)
- Design the Windows Forms designer's context menus and locked controls (#67) (c4639df)
- Windows Forms designer tests: a control dropped on another, drawn in its order (#78, red first) (88113d1)
- Windows Forms designer: overlapping controls drawn in their order, front over back (#78) (ab6ea7c)
- Design the Windows Forms designer's Properties window (#68) (67e4d10)
- Design the Git Changes window's folder menu and branch drop-down (#23) (8647cff)
- Windows Forms designer: read again after a first read still on its way, quietly; tests count loads from a complete read (#76) (6153e08)
- Windows Forms designer: which controls are drawn again tested on every OS, a control that can't be drawn alone keeps the frame (#78) (3420749)
- Windows Forms designer: #67's context menus and Lock Controls deferred, platform results, smart tags in the guide (#67) (57ac5ad)
- Design the NuGet package manager's verified-owner badge (#78) (09bd3bc)
- Control set: a check in combo box lists and a line under every tab strip (89d7d78)
- Website: the pictures that show the tab strips' new line (ccc4406)
- Designer menus mockup: the review's states, the lock on the corner, Fluent's shapes (#67) (e579706)
- Control set: only a history's list goes without the check; side tab strips; the gallery fits (246f270)
- Website: the EF Core picture's tabs, and the pictures in their earlier states (4bfc256)
- Properties window mockup: the review's states, classic parity, the thumb's gutter (#68) (c3a6d02)
- Git Changes mockup: the review's states, the upstream's warning, both spike outcomes (#23) (118bab4)
- Design connecting external agents from templates (0.6.0, task #79) (372ec8a)
- NuGet verified-owner mockup: mapping, the version shown, the status badges (#78) (6b20290)
- Designs: the maintainer approved the four 0.6 mockups and #66's Toolbox look (D38-D42) (09d6944)
- Start 0.6.0 after cutting release/0.5.0 (64437ba)
- Git Changes mockup: Update from the upstream in the branch menu (#23, D38 question 21) (ddbd185)
- Git: update a local branch from its upstream without checking it out (fast-forward only) (5cc1ac8)
- Git: Update Branch… in Git → Branches and the Git Changes window's ⋯ menu (the user's request) (36a0576)
- Git: Update Branch moves a branch in git's own fetch, one at a time, and leaves a branch being rebased alone (7477bf1)
- Git: Update Branch says what D38 draws, with Checkout and Open in New Window, and can be cancelled; the branch-menu entry is still to come (2eec406)
- Designs: the maintainer approved the Git Changes Update entry as drawn (D38 question 21) (ea1d60c)
- Windows Forms designer tests: Edit's commands on a focused designer, Select All and paste into the nearest container (#67, red first) (f57434b)
- Designs: the maintainer approved connecting agents from templates (D43), Claude's sign-in as drawn (4ab6499)
- Quick Info, completion and parameter info show referenced assemblies' documentation (39fd6c2)
- Menus: check entries from a rule's Checked clause, and a title of the moment in context menus (#67) (2d9169b)
- Windows Forms designer host: Locked as the .resx's metadata, and the context menu's verbs as the classic IDE lists them (#67) (8b7fe4b)
- Windows Forms designer: the classic IDE's context menus, Edit's commands, Select All, paste into the nearest container, and Lock Controls (#67) (0a5e422)
- Smoke: winforms.designerMenus, the classic IDE's context menus and Lock Controls through the real host (#67) (a324332)
- Docs: the Windows Forms designer's context menus and Lock Controls (#67) (26d2a57)
- Windows Forms designer: a verbs answer from a host that ended opens the menu without them; a copy of nothing keeps the clipboard (#67) (95ed46e)
- XAML and Razor summaries on resolve; Miscellaneous Files survive an unreadable pack (00c61b3)
- Windows Forms designer host: the .resx's metadata read as XML, Choose images opens the Images editor, verbs merged without their mnemonics (#67) (259721b)
- Windows Forms designer: nested controls move with their container, a tray right-click keeps the selection, verbs' mnemonics as access keys, and the menus' gestures tested (#67) (865d7e0)
- Smoke: winforms.designerMenus waits for the real host's verbs before it checks the list box's menu (#67) (19e0ca8)
- Docs: the review's fixes to the Windows Forms designer's menus (#67) (9aaccae)
- Windows Forms designer protocol: sub-properties, Reset, editable choices, the type editors' kinds and AutoCompleteCustomSource (#68) (31918b9)
- Properties window: the grid's model, with categories that collapse, rows that expand into their parts, refresh in place, Reset and Property Pages (#68) (ab69a7a)
- Design the data tip, the Git diff document and rounded corners (#82, #86, #84) (92ff4fe)
- Properties window: a virtualized grid view with one editor per row, the classic IDE's toolbar, the component selector, splitters, a row menu and the keyboard (#68) (6192ff8)
- Windows Forms designer: the Properties window reads the host's parts, Reset, editable choices and editor kinds, nests (DataBindings) and reports invalid values (#68) (0cd3ab7)
- Windows Forms designer host: parts from the type converters with a real context, editors from the UITypeEditors, choices, Reset and dotted paths (#68) (6256ba8)
- Properties window: the drop-down editors for colors, alignment, multi-line text, shortcut keys, dates and cursors (#68) (ce0e0a3)
- Windows Forms designer: the font editor and the String Collection Editor as panels in the in-window dialog's frame, and the collection editor on the shared property grid (#68) (67d2659)
- Windows Forms designer: Select Resource for images, a local resource or one of the project's resources file, with a preview (#68) (cf2f8d7)
- Smoke: winforms.properties checks the Properties window through the real host; the gallery's editors state and the theme inspection of the grid, its drop-downs, editors and dialog (#68) (8b02f85)
- Docs: the Windows Forms designer's Properties window as the classic IDE's, in the user guide, ADR 0073, the roadmap, the changelog and the site (#68) (bc20885)
- Windows Forms designer host: a request's edits all or none, an unset reference as "(none)", and the host tests' one build (#68) (1d4888e)
- Properties window: a row refreshed in place takes the fresh row's actions; flags, multi-line text, footer keys, copy, outlines and tooltips as drawn (#68) (6c25fcd)
- Windows Forms designer: Select Resource as drawn, extender rows that reset and edit multi-line text, one item grid view; the fake host as the real one (#68) (3876010)
- Docs: the review's fixes to the Windows Forms designer's Properties window (#68) (c13319c)
- Designs: the maintainer approved the data tip, the Git diff document and rounded corners (D44-D46) and the classic palette (D47) (c2a3d1c)
- Editor colors no longer dimmed: Dock's reveal fade left the document view at Opacity 0.85 after tab switches (#83) (4862feb)
- Settings: Reset of a value equal to the default clears the Modified mark (SettingsService.LayersChanged) (#88) (f089173)
- Shell tests: each headless test starts from an empty Avalonia root locator, so a render scheduler an earlier test's leftover work bound there can't stall the rest (#80) (158475b)
- New Project history test: check the default location before the other-casing step, which moves that casing first where paths ignore case (b4655fd)
- Target-framework tests: link HeadlessIsolation.cs beside ShellFixture.cs, which now calls it (d1890f5)
- Hot Reload while debugging a Blazor Web App (#75), and the Blazor run fixes found reproducing it (#90) (9581f59)
- Designs: the contrast check's count with every 0.6 design merged (221,090 pairs, none below) (b03431d)
- Classic's editor colors match the classic IDE (#83, D47) (95b87bd)
- Rounded corners for Classic (#84, D46) (b4dce81)
- Diff document: both sides in the editor's colors (#86, D45) (d55897a)
- Diff document: diff tokens in every theme and changed words (#86, D45) (ddccc56)
- Smoke blazor.compoundHotReload: look at the tick until the edited line has run (a6b095e)
- Diff document: the classic IDE's layout, status bars and gear menu (#86, D45) (f41c6c4)
- Document tabs: the last tab to keep ends at the group's edge; the focused-frame test waits for the color (6a6c32e)
- Diff document: staging column, staging commands and save-first (#86, D45) (27f9215)
- Diff document: Summary, the size limit, binary files and no-changes states (#86, D45) (c535759)
- ADR 0008: amendment for the redesigned diff document (#86, D45) (4daee63)
- Smoke test: a screenshot of the colored diff in the git step (#86) (7326616)
- Narrow window: keep the caption buttons clear, wrap the menu, fold the toolbar (667902a)
- Data tip: the classic IDE's layout (#82, D44) (8ca5eaf)
- Data tip: members grouped as the classic IDE does, and their icons (#82, D44) (3900b2b)
- Data tip: List, Dictionary, HashSet, Queue and Stack as their elements (#82, D44) (f7899dd)
- Terminal launch under the debugger: a pid file another process holds open is read on the next poll (e68de5c)
- Data tip: values edited in place, changes in red, any row pinned (#82, D44) (0d1a7f1)
- CI: say why an MSBuild worker node died (MSB4166 on the macOS runner) (13f9145)
- Data tip: the hover's diagnostics in a strip above the header (#82, D44) (6d26036)
- Data tip: Locals, Autos, Watch and QuickWatch as one row list (#82, D44) (773cfe3)
- Windows Forms designer test: a designer that doesn't ask on activation says why (d83216f)
- Data tip: the hover's tips follow the text; the tests start without late chrome (#82, D44) (12d948d)
- Aspire F5: a project's run session is answered before its start under the debugger (7a284d6)
- Changelog: Aspire F5 answers the orchestrator at once (0.6.0) (70c82d5)
- Git: branch details, rename, delete by git's merged rule, push and compare of any branch (D38's workbench side) (4ef0c69)
- Dialogs: Discard and Delete keep Enter on Cancel at the trailing edge on every OS (D38, question 1) (34aca6c)
- Git Changes: folder menu and branch drop-down from registered menu locations (#23, D38) (233fe74)
- Docs: the Git Changes window's folder menu and branch drop-down (D38) (8bccb01)
- New Project tests: the first model's keys are the Windows and Linux ones on every OS (7045751)
- The watched server's probe tries each of the host's addresses at once (#75) (24fc5a2)
- Data tip: the tips' text at the shell's size in their own windows; the smoke step measures after a frame (#82, D44) (67860d6)
- Narrow window: the toolbar's first fold makes room for its "…" (4c2a73e)
- Website: fresh screenshots with Classic's editor colors and rounded corners (#83, #84) (bd92a3d)
- Remove a resx assembly alias with the last entry that used it (#67) (2d3c447)
- Integration: the combined branches' localization catalog regenerated; the Properties window's Reset entry takes its icon the menus' way (6f12be7)
- Aspire Ctrl+F5 test: both projects listen before the request, and a failed answer says why (5cb77f7)
- Popups: their text at the shell's 12 px, in a window of their own or the overlay (0daa791)
- Aspire window: a live resource's console is followed again when its stream ends early (f405c12)
- Website: a fresh IntelliSense screenshot, its popups at the shell's text size (a62d0f3)
- Windows Forms designer tests: a designer's Toolbox requests are counted, not told by their task (ddd1b1e)
- Debugging: a program added to a multi-program session gets its process id and exit in its own place (409e5ef)
- Git branch menu tests: the repositories live under the temp folder's real path (1a74cdc)
- NuGet: nuget.org's verified-owner badge (#78 item 4, D39) (d2a63b0)
- External agents: terminal sign-in, agents' keys, templates and the connection test (#79, D43) (12980fd)
- Connect to an agent: the dialog, AI Chat's offer, the commands and a smoke step (#79, D43) (e76dfaf)
- Make the agent connect smoke step and AI-off test deterministic (d9bd90b)
- Document Connect to agent (ADR 0083, checkpoint, user guide, site) (83b5668)
- Narrow window: fill each menu row before the next, whatever the font (1c04480)
- External agents: log the sign-in status an agent reports right after initialize (20a884a)
- Razor HTML test: say why an HTML item is missing (725d465)
- String cache gate tests: wait for the end of the build, release the gate, run alone (df11507)
- Tests: the macOS temp folder's real path for the agents, and Windows Forms' own Font.Name and Lines (25821cb)
- Windows: the agent's program by its own file name, and the Locked test in the .resx's alias form (c19cf36)
- Diff document test: the changed line's fill where it has no text (fa89e5f)
- Smoke ai.connect: click a shown agent button, and say which wait failed (ae010e1)
- Website: screenshots from #144's Linux smoke run (0f39105)
- Smoke ai.connect: click the Claude button as it is at the click (16c98a0)
- Git branch drop-down test: load the branches again after detaching HEAD (b703a13)
- Diff document test: the removed line by its own pane, in a frame once drawn (b54fbc7)
- Git branch tests: the second clone checks out without CRLF on Windows (a908872)
- CI: the macOS others shard runs two test modules at a time, as Windows does (cc56242)
- Class View keeps its selection when the projects change (896c7b1)
- End process trees without .NET's walk, which blocks for minutes on macOS (7af040a)
- ProcessTree.Kill looks again for a child a mid-fork stop missed (5385f36)
- Smoke sweep: the Debug scenario waits for the context to say stopped (42b52ea)
- Smoke test: a step that fails mid-session prints the debugger's output (b384305)
- CI: the netcoredbg cache's key without a workspace walk (cce116a)
- Blazor Web App debugging: a server held past a restart is ended once dotnet watch says it exited (7a35b4e)
- Git: a write that finds a lock file busy tries again for a moment (8f60469)
- Hosts compile ProcessTree in instead of shipping Codalus.Platform (1d5a499)
- Accept 0.6.0's macOS idle working set (267.4 MB) for the regression gate (e5e43d1)
All changes: v0.5.0...v0.6.0