Skip to content

v1.37.0

Choose a tag to compare

@VictorQuilgars VictorQuilgars released this 18 Sep 14:14

Added

  • Make your own theme. Settings › Appearance › Create a theme opens a drawer over the app, and the app is the preview: a theme is twenty-four seeds, everything else derives from them, and changing one repaints the whole window, graph included. Start from the theme in use or from an installed one; the validator's rules are shown live beside the seed they are about; an inspect mode answers the other question — click anything in the window and see which seed colours it, with a jump to that seed. A seed answers where it makes a real part of the colour — a third or more — so hovering text boxes the text, not the frame it tints by a tenth, and a pressed button is its accent, not the text mixed into it. Saving installs the theme through the same store and validator as one from the bank, and puts it in use; the file it exports is the bank's own format, and a pasted one loads. Local to the machine; sharing to the bank is the next step. The themes above it are a shelf now: every one, on two rows that slide sideways and fade in from the edge, with the bank's card standing still at their end. (#242)
  • A minimap of the activity above the panes. A block of its own, under the toolbar and as wide as the side pane, the graph and the details together, draws the loaded history day by day — commits, or lines changed — newest on the left, with HEAD and its upstream on the top edge, ticks for local branches and stashes (remote branches and tags on request), the stretch the graph has on screen, and the days the search matched. Hover a day for its date, its count and its refs; click it and its commit is selected and scrolled to; drag across it to zoom, double-click or Exit zoom to come back; the wheel over it scrolls the graph; the gap under it is its handle, and the height it is dragged to is kept. It is built from the rows the graph holds, so Load more widens it. The Minimap switch in the toolbar shows and hides it, as do its own menu, the graph header's right-click menu and Settings › Graph; it stays as it was left.
  • The panes are cards. Sidebar, graph and panel sit as rounded cards on a darker frame, set apart by a gap rather than by a line — the way VS Code lays out its parts, and the layout the themes were drawn for. It is the default; Settings › Appearance › Layout offers Flush, the edge-to-edge rendering the app had, for anyone who prefers it, and compact density takes the frame in with everything else. The VS Code panel gets it too, its rail and compact toolbar as the frame and the rest as cards. (#240)
  • Two submodule actions that were missing: empty it, and re-read its URL. The sidebar could initialize a submodule and update it, and that was all — the last two gaps in the internal git-coverage matrix. Right-click a submodule now also offers Sync the URL, for when its remote moved and the change arrived as a commit to .gitmodules: git keeps fetching from the URL written into .git/config at clone time, so until this runs every update still goes to the old host. And Empty the working tree, which frees the checkout while leaving the submodule declared and re-initialisable. That one asks first, and no --force is ever sent — git refusing when there is work that is not pushed is the whole safety of the command, and its refusal is shown rather than swallowed. (#86)

Fixed

  • A menu closes when you do something else. It closed on a press elsewhere only when that press produced a mousedown — and a splitter cancels its press to keep the drag from selecting text, so a press on the gap under the minimap, or between the panes, left an open menu up. Presses are caught before any control can cancel or keep them now, and the window losing the focus — another app clicked — closes it too. A press on the background of the toolbar or the tab strip was the last hole: they move the window, and a drag region hands the press to the system, never to the page — while a menu is up, nothing drags the window. The minimap's options button toggles its menu: a second press puts it away.
  • A submenu near the window's right edge opens on the left. A submenu always opened to the right of its row, so one near the right edge — the minimap's Markers, the Reset modes of a commit right-clicked near the edge — was drawn past the window, unseen and out of reach. With no room on the right it opens on the left now, and is lifted when it would run past the bottom. The menu itself is clamped by its real size: it opens with a small scale-in, and a size read on that first frame left a menu opened against the right edge a few pixels over it, its border cut off.
  • The CLI speaks English. The terminal UI predates the English-only rule the app and the extension were swept for, and it still carried fifty-one sites of French: the whole help panel, every status line, the sidebar's section headers, the column titles, and thirteen error messages from the git layer — Conflit de rebase, Aucun remote configuré, Rien à rétablir. It is translated, the section headers now read as the desktop's do (LOCAL, REMOTES, TAGS), and a test reads the sources so the next one fails in CI rather than on screen. (#77)
  • In the VS Code panel, the graph follows the editor's theme instead of keeping the old colours. The graph resolves the ten branch colours to real values once — a var() cannot be added to anything, and it does arithmetic on them to fade an edge toward the canvas — and bakes one into every commit of its layout. When the editor's theme changed under the panel, everything the stylesheet owns repainted and the branches did not, until something unrelated moved the layout again. On the desktop this was hidden rather than absent: the settings page is a full-page tab, so leaving it rebuilds the graph from scratch and the colours came back right by accident. They are right on purpose now. (#160)
  • The working-tree row counted a file twice. Stage everything, then touch one of the files again: git status lists it in both columns, the staging pane rightly shows it twice — once to commit, once still to stage — and the number on the WIP row and in the pane's header added the two lists, so two files read as three. The count is over files now, on the row, in the header and in the N of M staged badge. (#232)
  • A theme's accent was the outline of every control. The one border seed was read from a VS Code theme's structural separators first — panel.border, the line above the terminal, which Dracula paints in its purple on purpose — and it lands on inputs, chips, rows and cards alike. It is read from the theme's own separators now — the section line, the panel edge — composited over the canvas when the theme writes them with an alpha; a border that is a colour of its own, or that sits on the far side of the canvas from the text where nothing can see it, is derived instead: the canvas a step toward the text, which is the light grey VS Code itself draws where a theme sets nothing. Fifteen of the thirty-two built-in themes change their line — Dracula's purple becomes a quiet grey-blue — and the validator refuses a border that is not its canvas a shade off, measured in Oklab's chroma plane: the same rule the bank is generated against, so nothing served is refused at the door.
  • A theme's accent is the colour it marks things with, not its button. The accent seed was read from the link colour, then the button — and Dracula's button is its grey current line, so the commit button, the links and every accent in the app were grey while its pink went, by accident, to the model's colour. The accent is now the colour a theme uses most where VS Code marks the user's action or attention: the button, the link, the activity-bar badge, the progress bar, the focus ring, the active tab and panel title, the remote item — greys not voting. The model's colour is the theme's second such colour when it has one of a clearly different hue, Dracula's purple beside its pink; otherwise the theme's own violet, or the lane nearest it. Twenty-two of the thirty-two built-in themes change their accent — Dark+ and Light+ get VS Code's blue back, Catppuccin its mauve — and 516 themes of the bank stop having a grey one.
  • The graph's lanes start at the accent, and no lane is a diff colour. An imported theme's ten lanes are samples around its hue wheel, and the wheel began at red: the branch you are on, first drawn, was red in Dracula — its removed lines red, to the byte, with an added-lines green three lanes over. The wheel now starts at the hue nearest the accent, as the default theme's does, so the current branch carries the theme's colour; and a lane that reads as one of the four semantic colours is left out while six colours remain, below which two neighbouring branches would share one, which is the worse reading. Fewer than ten are walked in order and wrap. Every built-in theme's lanes change. (#237)