Skip to content

GitBolt 0.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:38
· 69 commits to main since this release
2d27e2b

Added

  • Comment actions in the MR/PR view, at the right of each comment's header (shown on hover or
    focus):

    • Add reaction (a smiley): GitHub's eight reactions; on GitLab the common ones and a search
      of every emoji. Reactions show under the comment as pills ("👍 3"), yours highlighted; a click
      toggles yours at once (put back if the forge refuses), and hovering one says who reacted.
    • ⋮: Edit and Delete on your own comments (Edit turns the comment into its Markdown box;
      Delete arms in place first), Copy link, and Quote reply.
    • Right-clicking a comment's date offers Copy link and Open in browser; hovering any relative
      date in the view shows the full date and time, in your date format, with the time zone.
  • Resolve and unresolve threads (GitLab's resolvable discussions, GitHub's review threads) with the
    circled check on a thread's first comment: green once resolved, naming who resolved it. A
    resolved thread folds its replies under a row saying how many and who replied last; the row
    unfolds any thread, and your choice is kept for the session.

  • Emoji autocomplete in the Markdown boxes (comments, replies, descriptions): type : and two letters (:thu) for a popup at the caret; ↑/↓ choose, Enter or Tab inserts the :shortcode:, Esc closes it. It stays quiet in URLs, times and code. @ offers people the same way (the MR's own first, then the forge's search) and inserts @username.

  • Keyboard shortcuts for the everyday actions, each also in the command palette:

    • staging: stage or unstage the open file (Ctrl+Shift+S), the hunk or selected lines at the
      diff's cursor (Ctrl+Shift+D); Stage all and Unstage all in the palette;
    • Commit (Ctrl+Enter) from the file list or the diff, not only from the message;
    • Fetch all (Ctrl+L), Pull (Ctrl+Shift+L), Push (Ctrl+Shift+K), a new branch (Ctrl+Shift+N),
      Stash (Ctrl+Alt+S) and Pop (Ctrl+Alt+P);
    • the diff: Hunk, Inline and Split (Ctrl+Shift+1, 2, 3), Source or Rendered for Markdown
      (Ctrl+Shift+V), the next and previous file (F8, Shift+F8), File History (Ctrl+Shift+H)
      and Blame (Ctrl+Shift+B);
    • the keyboard to the sidebar, the graph, the file list or the diff (Alt+1 to Alt+4), and a
      tab by its place (Ctrl+1 to Ctrl+8, Ctrl+9 for the last);
    • on an open MR/PR: Approve (Ctrl+Shift+A), Merge (Ctrl+Shift+M) and Open in browser
      (Ctrl+Shift+O). Approve and Merge still ask first.
  • Change an MR/PR's reviewers and assignees from its view: + Add (the same people search as
    Create) and × apply at once, and a change the forge refuses is put back with the reason. On
    GitHub, a reviewer who already reviewed stays: GitHub keeps a submitted review.

  • Right-clicking empty space in the tab bar opens a menu: Reopen the last closed tab (Ctrl+Shift+T), Open repository, Clone.

  • Auto-merge in the MR/PR view, as GitLab's merge widget has it: while the pipeline or checks
    run, the button is Set to auto-merge ("Merge when all checks pass"), with the chosen
    method, squash and delete-source-branch options. Once set, the box says who set it, with
    Cancel auto-merge; a failed pipeline says it won't merge. On GitLab it's the merge's
    auto_merge (and the older merge_when_pipeline_succeeds); on GitHub, GraphQL's auto-merge,
    and a repository that doesn't allow it says so. The sidebar's MR/PR rows show a small mark.

  • Compare on the MR/PR view's branch card: an icon at the right end of the commits bar that
    shows the MR's changes as a compare in the graph (its merge base, then its head), with the
    compare's files open, so the diff matches the forge's Changes. A head that isn't in the
    repository yet is fetched first (only the MR's or PR's own ref, from the target's remote).

  • A review composer: Review… in the Approvals card opens Comment, Approve or Request changes
    with a message (optional to approve), as GitHub's review dialog. On GitHub it's one review; on
    GitLab, Request changes also sets your reviewer state to Changes requested where the server
    supports it. Approve still works in one click (armed in place).

  • Subscribe / Unsubscribe in the MR/PR view's ⋯ menu: the forge's notifications for it.

  • Reviewer and assignee limits: on a GitLab project that allows one reviewer or assignee
    (GitLab Free), the card's + swaps the person instead of adding one, in the view and in Create;
    GitHub's 10 assignees are a cap. If the forge drops someone anyway, a toast says who it kept.

  • A pencil in the Labels card's corner opens label editing.

  • An image viewer: click an image in rendered Markdown (comments, descriptions, previews) to see
    it over the app at 100% (or fitted), zoom with the wheel around the pointer, pan by dragging or
    with the arrow keys; Fit, 100%, Copy image and Open in browser in its toolbar; Esc closes it.

  • Videos in GitLab comments play inline and in the viewer. A format the app can't play (H.264 or
    HEVC MP4s) says so, with Open in browser and Open with default app.

  • A diff note's file:line link opens the diff at that line, centred, with the cursor on it; a
    multi-line note shows file:100-105 and selects its lines.

  • The Debug modal's Requests tab: every request the UI makes to the core (graph, file
    contents, commit details, forge calls…) with its duration and outcome, and the git commands it
    ran, a click away in the Commands tab. Slow only and Failed only filters.

  • The Commands tab's Hide reads (on by default) hides the frequent read-only commands
    (status, diff, log…), keeping the actions, failed commands and the one an error points at.

  • A Keyboard shortcuts button in the status bar, left of the git version.

  • Every popup trigger toggles: pressing a menu's or picker's button again closes it, and that
    click does nothing else.

Changed

  • The MR/PR view's threads: the first comment's author is on the timeline and its text fills the
    card; replies are compact, a small avatar in their header. Timeline icons sit centred on their
    event's first line, and the date follows the text without a "·". Expanded replies show only
    "Collapse replies" (the count and last reply are the folded row's). A comment on a file leads
    with its author and date, the file link under them. A comment's date underlines on hover and
    opens its Copy link / Open in browser menu on click. The discussion shows a spinner while it
    loads.

  • A push refreshes its MR/PR at once, and again a few seconds later, so the new pipeline and
    mergeability show without waiting for the next poll.

  • The Keyboard Shortcuts panel (Ctrl+/) lists every shortcut, including the ones that only work
    in a context (with a file open, on an MR/PR), and groups them as Staging, Diff, File history
    and Merge request. Next and Previous change are in the palette too.

  • The merge box: Delete source branch, then Squash commits, as on GitLab. The merge method is
    the Merge button's tooltip instead of a line of its own; on GitHub it's chosen in the button's
    dropdown. The status icon is centred on its title line.

  • The MR/PR view's Reviewers, Assignees and Labels are cards beside each other, like Pipeline,
    Approvals and Conflicts, with their + in the header; the cards' values are centred, and the
    review buttons look like buttons (Approved stays pressed, in green).

  • The branch card's commit bar toggles the commit list from anywhere on it (but Compare, at its
    right end).

  • Merges use the forge's own commit messages: the merge box has no message fields.

  • A card button that opens something (Review…, a people card's +, the Labels pencil) shows a
    small caret.

  • When the MR/PR view's status line wraps (a long name, a narrow dock), Check out, Edit and ⋯
    stay at its right edge, and a narrow card's name gives way to its buttons.

  • Fewer git processes: worktrees, the sidebar's refs and ahead/behind counts are read in
    process; a file that keeps changing (a growing log) refreshes at most every 2 s, and a
    worktree you aren't viewing at most every 5 s, counts only. A busy linked worktree went from
    about 130 git processes in 10 s to 3; a fetch from 7 to 1.

  • Worktree diffs compare what git would store (autocrlf, .gitattributes eol and text, ident,
    working-tree encoding, filter drivers), so a CRLF file no longer reads as every line changed
    in the rendered Markdown diff, and Open in lands on the changed line.

  • Diffs open centred on their first change, and Next/Previous change go from what's on screen.

  • Blame or History from Diff View opens File History on Changes; from File View, on the file.

  • Context menus keep a Local or Remote button that can't apply, disabled with the reason (Delete
    on the checked-out branch), and hovering a row lights the button it runs.

  • Confirm popovers keep Cancel and the answer on one row; a destructive one started from the
    keyboard focuses Cancel.

  • The bell moved to the top bar, left of Settings.

  • The MR/PR hover card: the state chip leads the title (in place of its icon), the branches on
    their own line, and
    only what needs a look (no "No reviews yet" or "No conflicts").

  • Sidebar MR/PR rows show a coloured state icon (green open, grey draft).

  • Edit mode in the MR/PR view puts the form first (title, description, then reviewers,
    assignees and labels) with full-size Cancel / Save.

  • A file opened over the floating MR/PR panel shows on top of it, and the panel's shadow falls
    only to its right. The panel's scrollbar no longer shifts its content.

  • Reopening the MR/PR that's open keeps its view; its commit and line counts show at once.

  • Compare loads older history instead of fetching when the MR's commits are already local.

  • Mermaid 12 (the ELK layout).

  • A commit's branch chips: the checked-out branch, then a branch with its remote at the same
    commit (main with origin/main), then local-only branches, then one checked out in another
    worktree; then remote-only branches and tags.

Fixed

  • After Merge on GitLab, an MR showed as Closed for a while: GitLab's locked (it's merging)
    is now Merging…, with a spinner, and the view polls quickly until it's merged.
  • An armed button's "Click again to …" label no longer grows past the edge of its panel (the
    merge box's Merge, over the graph): it grows toward the side with room.
  • Word wrap works on the left side of a split diff after it was inline.
  • At an interactive rebase's Edit stop, the commit box could show the parent commit's message.
  • A sidebar MR/PR's hover card no longer runs off the bottom of the window when its details
    arrive and it grows, and the status bar no longer covers it.
  • A click in the inline branch or tag name input could close it.
  • Images uploaded to GitLab comments didn't load (GitLab sends them as generic files), and
    {width=900 height=575} after one showed as text; it now sizes the image. A broken image says
    why when hovered.
  • A push from the "Push to" panel (a branch without an upstream yet) that the remote rejected
    offered only Pull: it now offers Force push too, with the lease, to the target it was sent to.
  • A failed fetch over ssh showed OpenSSH's "connection is not using a post-quantum key exchange"
    warning instead of git's error.