Repository navigation
Releases
BeeBranch 2.0.0
BeeBranch 2.0.0
Workspaces regroupent les dépôts, la navigation reste la même avec ou sans dépôt ouvert, les forges se retrouvent sur un seul écran Intégrations, et l'arbre de commits laisse choisir son format de date.
Nouveautés
- Les workspaces regroupent les dépôts : un onglet ouvert, cloné ou créé rejoint le workspace actif ; le fermer ne le retire pas du groupe. Chaque workspace a une icône Lucide, une image ou un monogramme. Le fetch groupé utilise les mêmes jetons que le fetch d'un seul dépôt : les remotes HTTPS privés ne renvoient plus
auth.faileduniquement parce que l'action est groupée. - Un seul écran Intégrations : GitLab et GitHub partagent une page avec un onglet par forge, son logo et son état, puis Dépôts, Revues et Connexion. L'onglet choisi ne saute plus quand on change de forge.
- Regrouper les dépôts par groupe ou organisation : la case est mémorisée et replie les groupes GitLab ou les organisations GitHub en accordéons avec leur nombre de dépôts.
- Lier un dossier à son projet distant : Utiliser pour ce dossier retient quel projet distant correspond au dossier ouvert, sans modifier Git. La ligne reconnue — y compris automatiquement via l'URL du remote — affiche Projet de ce dossier ; en choisir une autre remplace le lien, et aucun bouton ne l'efface.
- Le format des dates de l'arbre de commits se choisit : Paramètres → Apparence propose Relatif, puis date et heure (le comportement précédent, « il y a… » pendant sept jours), puis des dates courte, numérique ou ISO, avec ou sans l'heure. Le choix est mémorisé et suit la langue de l'interface.
- Les profils retiennent un compte GitHub : un profil peut enregistrer le compte GitHub connecté comme il enregistre déjà une instance GitLab.
Changements
- La navigation est la même avec ou sans dépôt ouvert : la barre latérale reste visible, se replie en rail d'icônes à côté du navigateur du graphe et se déplie pour retrouver la liste complète. Accueil rouvre la carte sans fermer le dernier onglet, et un seul catalogue alimente la barre et le menu de commandes : conflits, recherche et synchronisation ne changent plus de groupe selon l'endroit où on les ouvre.
- Les écrans liés au dépôt quittent le menu de gauche : stash, recherche, worktrees, tags, remotes, sous-modules, merge requests, pull requests et pipelines vivent déjà dans le navigateur du dépôt. Le menu de gauche garde historique, workspaces, conflits, synchronisation, terminal, rebase, patches, historique de fichier, outils, journal et récupération. Une entrée qui exige un dépôt affiche Ouvrir un dépôt et ouvre le sélecteur, au lieu d'un bouton grisé.
- La connexion aux forges passe par une seule entrée : GitLab et GitHub ne sont plus un bouton unique qui préférait GitLab ; le bas de la barre n'a plus qu'une entrée Intégrations, avec le nombre de forges connectées. Le portrait quitte la barre du haut pour se placer sous Réglages : la roue ouvre l'apparence, le portrait ouvre les profils.
- Le sélecteur de workspace garde sa largeur : fixé à 168 px, il ne change plus de taille entre Accueil et Historique.
- L'historique porte la barre du dépôt : Fetch / Pull / Push / branche / stash / undo vivent dans l'historique et non plus dans le cadre de la fenêtre ; alterner Accueil et Historique ne fait plus descendre toute l'interface.
- Fusionner crée toujours un commit de fusion : Fusionner, au glisser-déposer ou dans le menu d'une branche, passe
--no-ff; Avance rapide reste l'action qui déplace la branche sans commit. - Le terminal s'ouvre en bas ou en plein écran : le bouton Terminal de la barre d'historique ouvre un panneau intégré en bas de l'écran, refermé par un second clic ou sa croix, avec un bord qui se tire ; Terminal dans le menu de gauche ouvre le même terminal en plein écran.
- Le formulaire de clone est partagé : cloner depuis Accueil et depuis un workspace utilise le même formulaire.
- La synchronisation annonce sa portée : le bouton affiche Pull tout ou Pull 3 (et de même pour Fetch) avant le clic, y compris dans le menu et la confirmation ; zéro case cochée veut toujours dire tous les dépôts.
Corrigé
- Cliquer un onglet dépôt quitte les réglages : depuis Réglages ou une page d'intégration, activer un onglet dépôt ramène au graphe en passant par le garde de navigation ; un brouillon non enregistré refuse toujours le clic au lieu d'être perdu.
- Un clic d'onglet ramène à l'arbre : ouvrir un onglet dépôt ou changer de workspace ne rouvre plus l'écran Conflits ni l'opération en cours sur le dépôt suivant.
- Les erreurs de workspace et de profil suivent la langue de l'interface : les codes connus sont traduits.
- Les onglets qui dépassent restent accessibles : la bande d'onglets a une barre de défilement visible et un menu des onglets masqués.
Notes
- L'artefact de mise à jour est signé avec la même clé que 1.11.0 : Réglages → Mises à jour propose 2.0.0, et « Revenir à la version précédente » revient à 1.11.0 via
rollback.json.
BeeBranch 1.11.0
BeeBranch 1.11.0
Branches gather into folders, settings split into categories, the chrome and the graph share one icon set, and the changes panel stages only the files you tick.
Added
- Branches gather into folders: the Local and Remote sections group refs by their
/prefix (feature/,fix/,chore/…) into collapsible folders with a count, remotes nesting under their name. A toggle beside the filter returns to the flat list and the choice is remembered; the current branch's folder stays open, a folder opened or closed by hand keeps its state, and filtering opens every folder that contains a match. A branch that shares its name with a folder stays beside it. - Settings split into categories: Appearance, General, Git, Profiles and Shortcuts now sit in a side rail, the selected tab is remembered, and the panel fills the whole area to the right of the menu instead of stopping at 900 px.
- Stage only what is ticked: a checkbox in the To stage and Ready to commit headers selects the whole group; unchecking files then Stage selection / Unstage selection acts only on the remaining ticked ones. With nothing ticked, Stage all / Unstage all keep their current behaviour. Beyond 500 displayed files the header checkbox covers the visible list only.
Changed
- One icon set: the toolbar, sidebar, file status, refs, stash, work-in-progress marker, hunks and commit options all draw Lucide glyphs, in the React chrome and on the graph canvas; the stash node keeps a permanent outline and takes a dashed accent when selected.
- Selection reads as a pill: selected rows drop the yellow left edge for a soft background pill across history, work-in-progress, branches and profiles.
- Context submenus open as flyouts: nested entries unfold beside their parent menu on hover instead of replacing it.
- Fewer confirmations: a remote-branch checkout Git would accept switches at once, and a clean stash Pop applies immediately; the bar remains only for a checkout Git would refuse or a pop predicted to conflict.
Fixed
- GitHub OAuth tokens renew themselves: an expiring token keeps its refresh token, expiry and client ID in the keychain, and a background refresher renews it two minutes before expiry, re-reading the wall clock every 30 s so sleep does not stop it. The rotated refresh token is saved before the shared client swaps its access token, push / fetch / pull read the current one, and a rejected refresh drops the session and warns the panel instead of leaving it “connected” through 401s. Tokens issued before this version carry no refresh token and Personal Access Tokens stay plain strings, so one reconnection from the GitHub panel is required to benefit from renewal.
- The commit diff no longer opens a second file list: the diff viewer hides its rail when the commit detail already lists the files, and the detail marks the file currently shown, scrolling it into view — image diffs included.
- Stash Pop from the repo bar works: it enables as soon as the stash list arrives, finds its entry by SHA so a double click cannot pop the next stash, and a failed diff or
merge-treepreview no longer disables it. - Programmatic focus stops painting the workspace: the skip link's focus target no longer draws a yellow ring around the whole workbench.
Notes
- The update artifact is signed with the same key as 1.10.0: Settings → Updates offers 1.11.0, and “Return to the previous version” goes back to 1.10.0 through
rollback.json.
BeeBranch 1.10.0
BeeBranch 1.10.0
Automatic fetch is offered once on first open, ref chips are wired to their commit in the graph, and the repo tabs no longer trade header height for a scrollbar.
Added
- Automatic fetch, offered on first open: opening a repository shows a single banner proposing a background fetch interval (off, 1, 5, 15 or 30 minutes). The question is asked once per installation, including on installs that predate it, and answering Later counts as an answer, so it never comes back. The same preference is editable in Settings (Automatic fetch) and in the Sync panel, and changing it restarts the background timer at once instead of at the next repository open.
- Graph chips are tied to their commit: every decorated commit draws a stem in its lane colour between the last ref chip and its node, and the local-changes marker sits on HEAD's lane instead of the middle of the graph column.
Changed
- Repo tabs keep the full header height: the tab strip hides the system overlay scrollbar and paints a thin thumb that fades in on hover and while dragging, so the tabs line up with the rest of the chrome; the strip pans with the wheel.
- Graph contrast follows the current branch: a chip-to-node stem stays solid only for HEAD, the hovered row and the focused branch; every other stem drops to 20 % opacity.
Fixed
- The file list keeps the arrow keys: ↑/↓ and Home/End walk To stage then Ready to commit whenever the panel is open, instead of only when the focus already sits inside it. Pressing ↓ from the graph or the diff opens the next file instead of moving the focus ring around the canvas, and ←/→ collapse or expand a folder in tree mode.
Notes
- The update artifact is signed with the same key as 1.9.0: Settings → Updates offers 1.10.0, and “Return to the previous version” goes back to 1.9.0 through
rollback.json.
BeeBranch 1.9.0
BeeBranch 1.9.0
The interface is readable by default: wider rows, explicit file glyphs, a structured commit detail, and outlined primary controls — with the same accent yellow.
Changed
- Readability ships by default: history rows and file rows sit on a 32 px height on the 8 px grid. File rows carry pencil / plus / minus glyphs, the folder reads grey and the path uses the interface sans font. The commit detail spells out its title and lays its Author / Date / Parents / Signature grid, with an outlined primary action. Only three controls take an outline: creating a local branch (
+), closing an inspector (×) and the default action menu (···).
Fixed
- Arrow keys walk the changes panel: ↑/↓ (and Home/End) move between the files of To stage / Ready to commit and put the focus on the file path before opening its diff, instead of landing on the row checkbox; ↓ from the filter opens the first file and ↑ from the first file returns to it, while ←/→ collapse or expand a folder in tree mode.
- The upstream selector shows this branch's remotes only: right-clicking a local branch lists the remote-tracking copies of that branch (
main→origin/main,github/main) rather than every remote branch. Symbolic refs stay out, the current upstream is marked, and the empty state says this branch has no remote copy yet.
Notes
- The update artifact is signed with the same key as 1.8.1: Settings → Updates offers 1.9.0, and “Return to the previous version” goes back to 1.8.1 through
rollback.json.
BeeBranch 1.8.1
BeeBranch 1.8.1
The pipeline detail now reads like the forge's: stages, their jobs, and the job log without leaving the application.
Added
- Stage detail and job logs: each stage of a pipeline shows its own aggregated state, followed by its jobs with their status and duration. Opening a job reads its log in place, with paging for a long trace and the link that opens the full job on the forge. The pipeline and its jobs remain reachable from the navigator's Pipelines section, next to the commit indicator.
Notes
- The update artifact is signed with the same key as 1.8.0: Settings → Updates offers 1.8.1, and “Return to the previous version” goes back to 1.8.0 through
rollback.json.
BeeBranch 1.8.0
BeeBranch 1.8.0
The whole repository's CI in one place, and a branch switch that only asks when something actually stands in its way.
Added
- Pipeline history: the repository navigator has a Pipelines section listing the linked project's pipelines across every ref — branches, tags and merge requests — newest first, with pagination. Selecting one shows its jobs by stage with their status and duration inside the application; the pipeline and every job open on the forge. The toolbar indicator still reports the checked-out commit, and its panel now switches between a Commit and a Repository scope.
Changed
- Branch switch runs without asking: checking out a local branch or a commit from the branch menus, the graph, a review request or the status bar switches directly when Git would accept it. Only a checkout Git would refuse (operation in progress, unresolved conflicts) or one that would move an existing local branch onto a remote branch reads its summary first; local changes are stashed by the switch and restored by its undo.
- Commit CI associates itself: a repository whose remote points at the connected GitLab or GitHub instance is linked automatically, so the indicator and its pipelines appear without opening the forge panel first; a renamed project is resolved through its redirect.
Notes
- The update artifact is signed with the same key as 1.7.0: Settings → Updates offers 1.8.0, and “Return to the previous version” goes back to 1.7.0 through
rollback.json.
BeeBranch 1.7.0
BeeBranch 1.7.0
Merges and ordinary pushes stop asking for a decision Git already made, and commit CI now finds its forge project by itself.
Changed
- Merge applies immediately: dropping a branch onto another one, or using a branch's menu, merges it at once instead of first asking for a merge strategy. The choice it used to ask is its own menu action — Fast-forward only (
--ff-only) when the target can be fast-forwarded — and a rebase keeps its single confirmation. - Plain pushes no longer ask: a push Git can send as a fast-forward goes straight to the remote. The summary bar stays for a push the remote would refuse (it moved ahead), and a force push now asks exactly once: its warning bar replaces the summary instead of preceding it.
Fixed
- Commit CI finds its project: a repository whose remote points at the connected GitLab or GitHub instance is associated automatically, so the toolbar indicator and its pipelines appear without opening the forge panel first. A project renamed on the forge is resolved through its redirect and its cached path refreshed; only remotes on the instance host are considered, so another forge's repository never borrows a same-named project.
Notes
- The update artifact is signed with the same key as 1.6.1: Settings → Updates offers 1.7.0, and “Return to the previous version” goes back to 1.6.1 through
rollback.json.
BeeBranch 1.6.1
BeeBranch 1.6.1
A fix for the draft commit message added in 1.6.0: it no longer sits in the way of selecting the local changes.
Fixed
- WIP row: the commit message is now a label until you double-click it (or focus it and press Enter/F2). A single click anywhere on the
// WIProw opens the changed files, as before 1.6.0, so selecting the row never lands in a text field. Enter or Escape leaves the field; the draft remains shared with the commit panel in both directions.
Notes
- The update artifact is signed with the same key as 1.6.0: Settings → Updates offers 1.6.1, and “Return to the previous version” goes back to 1.6.0 through
rollback.json.
BeeBranch 1.6.0
BeeBranch 1.6.0
See what an operation will do before it runs, resolve conflicts region by region, compare images side by side, draft the commit message in the graph, and open a terminal in the repository folder — on a more reliable undo and with Git errors that explain themselves.
Added
- Summary before an operation: pull, push, merge, rebase, cherry-pick, reset, stash pop and checkout now ask once, in the action bar, with the commits, files and lines involved. Conflict risk is predicted with
git merge-tree, the files that would conflict are listed by name, and an operation that would refuse explains why before anything runs. Cancelling changes nothing. - Per-region conflict resolution: a conflicted file that still has markers is split into regions that name their sides from the operation (the checked-out branch, the incoming commit, the stash) instead of ours and theirs. Each region can take either side, both, or the base, and any line of either side can be checked individually. Whole-file accept and free-form editing remain available; a region left undecided keeps its markers.
- Image diffs: an image (PNG, JPEG, GIF, WebP, AVIF, BMP) shows both revisions side by side with their dimensions and size instead of only “binary file”. Bytes are read at the diff revision through the same worktree-scoped, size-bounded path as text files; the renderer receives a
data:URL already allowed by the content policy. - Editable WIP node: the draft commit message is edited directly in the graph’s
// WIProw. Typing there or in the commit panel edits the same draft, so the message written in the graph is the one committed; the badge still opens the panel. - Built-in terminal: a terminal view opens a PTY in the repository folder with the shell from your environment, streams output, forwards keys and resizes, and closes the shell when the view closes. The renderer never chooses the program; the backend owns the PTY.
- Commit CI in the repository toolbar: an indicator shows the state of the pipelines attached to the checked-out commit for the linked forge (GitLab pipelines, GitHub Actions runs), with the finished/total count. Clicking it lists each pipeline, expands its jobs, opens the forge page and refreshes every 30 seconds. It stays hidden until a forge project is linked and connected.
- Multi-file selection in the changes panel: ⌘/Ctrl+click adds or removes a file, Maj+click selects every file between the last clicked row and the clicked one, and the bulk bar stages, unstages or discards them in one call. Right-clicking a row of the selection opens grouped actions for every selected file.
- Notifications: action results and errors appear at the bottom of the window instead of banners above the workspace. A success disappears after a few seconds; an error stays until closed and keeps its remediation.
- Keyboard shortcut reference: press
?outside a text field, or use the command palette, to list every shortcut, including customised ones. - Relative dates: commits from the last week show their age (“3 hours ago”, “yesterday”) in the history and the commit detail.
- Visible undo: every undoable action is confirmed by a notification with an Undo button, and an undo by “Undone: …” with a Redo button. When the next undo or redo cannot run, its buttons are disabled and their tooltip says why.
Changed
- An operation in progress (merge, rebase…) is announced once, by the banner above the workspace, with a single action to resolve or manage it.
- The workspaces, GitLab, GitHub, profiles and recovery pages no longer show the repository toolbar and references, which do not apply to them.
- The repository panel only lists the review requests of the repository’s forge (merge requests for GitLab, pull requests for GitHub), or of the connected forges when the repository is not linked.
- The command palette shows customised shortcuts instead of the default ones.
Fixed
- Git errors on a non-English system: Git reports its messages in English to BeeBranch, so failures are recognised whatever the system language. Only the message language changes: the encoding of paths, hooks and editors is kept.
- Error messages: error codes that had no English wording now say what to do next — branches, tags, worktrees, squash, fetch-all and Git start-up included.
- Undo never discards uncommitted work: undoing a merge, rebase, cherry-pick or revert is refused while tracked files have uncommitted changes, and never overwrites an untracked file. An undo blocked by an untracked file is refused before it runs, with the file names, and the entry stays undoable.
- Several commits can be undone in a row; the undone changes stay staged. Undo is no longer blocked by unrelated changes (a new untracked file, an edit elsewhere, a background fetch): undoing a branch, tag or remote operation only checks what it restores.
- Redo after several undos re-applies the most recent undo first. A change outside the undo history (stage, discard, pull…) clears the redo instead of leaving one that fails.
- Undoing the deletion of an annotated tag restores the original tag object (same message, tagger and signature), or rebuilds it on its commit if Git pruned it.
- Pressing undo twice quickly undoes two operations instead of failing. The commit panel’s Undo the commit only targets its own commit.
- Removing a worktree with local changes is no longer offered as undoable, since its changes cannot be restored; undoing the creation of a worktree also deletes the branch it created. Redoing a worktree removal never forces it.
- Undoing a branch drop that stashed local changes, or an operation stopped on conflicts, is refused once those files were edited again, instead of losing the edits. The automatic stash is dropped by its commit, so a stash pushed in between is never removed.
Notes
- The pre-operation summary reads local references; it does not fetch. Conflict prediction requires Git 2.38 or newer and is reported as unavailable below that; a multiple cherry-pick is predicted from its first commit.
- Per-region resolution applies while the working file still contains markers; once markers are removed, whole-file resolution remains.
- The built-in terminal uses the shell from the environment (
$SHELL,COMSPECon Windows), opens at most eight sessions, and is tested on macOS and Linux; the Windows path compiles and passes the suite but does not run a PTY test. - The update artifact is signed with the same key as 1.5.0: Settings → Updates offers 1.6.0, and “Return to the previous version” goes back to 1.5.0 through
rollback.json.
BeeBranch 1.5.0
BeeBranch 1.5.0
Confirm actions without leaving the workspace, do more from a file's context menu, and work through a calmer changes panel and diff toolbar.
Added
- Action bar for confirmations: force push, push rejection, merge or rebase by drag and drop, branch publication, deletions, discards and aborts now ask for confirmation in a bar above the workspace instead of a modal dialog. Destructive actions take two steps in the same bar — the action, then an explicit warning with Confirm / Cancel, focus starting on Cancel. Escape cancels.
- Publishing a local branch: creating a branch the remote does not know yet, or pushing a branch without upstream, asks for confirmation in the action bar. Confirming pushes it to
origin/<branch>with--set-upstream, so the first push creates the remote branch and records its upstream in one explicit step. - Richer file context menu: an Ignore submenu offers the file itself, every file with the same name, every file with the same extension, or its folder. Ignoring a tracked file adds the pattern to
.gitignoreand untracks the file after a confirmation; it stays on disk and its removal is staged. The menu can also stash a single file, open it in the external diff tool or its default program, show it in Finder or the file manager, save its changes as a patch, open its history, and edit it in-app. - Keyboard shortcuts: Escape closes the central editor (diff, tool) and then the inspector, one panel per press.
Mod+Wcloses the active repository tab through the existing close confirmation. On macOS,Cmd+Wno longer quits the application.
Changed
- Destructive actions no longer require typing the branch, tag, path or
abort: the backend policy requires an explicit acknowledgement, and the two-step bar replaces the typed text. - Diff toolbar: actions, display modes and navigation are grouped. Hunk and file navigation carry a visible label, and word wrap shows when it is on.
- Changes panel: the checkbox, stage and
···controls of a file row appear on hover, keyboard focus or selection, and every checkbox stays visible during a multi-selection. Discard the selection… is disabled until something is selected. - Error banners in the workspace can be dismissed and share the layout of the application banner.
Notes
- Untracking an ignored file stages its removal from the repository: other clones lose the file at their next pull, while the local copy stays on disk.
- On Linux, Show in file manager opens the parent folder:
xdg-opencannot select a file.