Skip to content

Gitty 0.1.4

Choose a tag to compare

@baojie baojie released this 12 Aug 07:50
· 169 commits to master since this release

Added

  • Every file in the tree now shows its line count beside the name (e.g.
    "142 lines"), counted from disk for the work tree and from the revision
    wherever else. Binary files, deleted files and files larger than 8 MB are
    skipped and show no count.

  • Images are shown, not reported as binary. Opening a .png, .jpg, .gif,
    .webp, .bmp, .ico, .avif or .svg — from the file tree, the header
    button or a snapshot — gives the picture itself, fitted to the pane over a
    checkerboard so transparency reads as transparency, with its pixel dimensions
    and size underneath. Click it for actual size and scroll around; click again
    to fit. The bytes come from disk in the work tree and from the commit
    everywhere else, so an image can be looked at as it was.

  • Markdown previews show the images they reference. A relative path is resolved
    against the document and read out of the repository at the document's own
    revision, so an old commit renders with the screenshots it shipped with; one
    that is not there at that revision leaves a placeholder carrying its alt text.
    Images from the web are still not fetched — reading a stranger's README should
    not announce you to whatever host it points at. Selecting an image also
    renames the header's View File to View Image.

  • A Language setting in the Settings dialog switches the interface without
    restarting: the panes, the menus, the dialogs and the application menu's own
    labels all change together. Nine languages are listed — English, 简体中文,
    日本語, 한국어, Français, Deutsch, Español, Русский and Português, all of them
    translated in full — the interface, the application menu and the notices git's
    output is wrapped in. English remains the source the others are translated
    from.

  • The commit log filters. A box above it narrows the list to commits whose
    message or author contains the text, with a ✕ to clear; typing is debounced
    and the result pages like the unfiltered log. The filter is a union of a
    message match and an author match — git would AND --grep with --author,
    so the two passes are merged by hash and shaped in one date-ordered pass.

  • Selecting a commit shows its full message. The subject, author, date and the
    whole body sit above the file list whenever a commit or a snapshot is
    selected, so a long commit message no longer has to be guessed at from the
    one-line log. When the message has a body, a ▸ toggle folds it away to the
    subject and the metadata row, giving the file list the room.

  • Blame and file history, from any file's context menu. Blame File opens
    one row per source line — the commit, its author and the line itself, with an
    em dash where a line is not committed yet; File History lists every
    commit that touched the file and clicking one opens it. Both open as
    documents beside the diff, blame the revision being viewed (a commit-mode
    file blames that commit, a snapshot file the snapshot's tree), and the
    history follows renames.

  • A vitest suite for the git parsers, the only part of the app that is pure
    functions over text: the status, log, name-status, branch and blame
    formats are parsed from fixtures without a repository. npm test joins
    npm run typecheck as the automated safety net.

Changed

  • A repository tab's tooltip now says when that repository has uncommitted
    changes, so the yellow dot beside its name does not have to be guessed at.
  • The README is available in five more languages — 简体中文, 日本語, Español,
    Français and Deutsch — under ref/readme/, linked from the top of the English
    one. Each translation is stamped with the date it was made and says plainly
    that the English README is the official version and the only one kept up to
    date; where a translation disagrees with it, the English is right.
  • README restructured around the window rather than the panes. The title bar —
    every button and counter in it — now has a section of its own instead of
    being split across four unrelated ones, tabs and recent repositories sit under
    it, and opening a file whole is documented beside the diff rather than inside
    it. Newly written up: the Settings dialog, snapshots (Browse Snapshot),
    and the Word highlight option, none of which the README mentioned.
  • The window opens faster: the renderer bundle is split, so the app shell and
    the four panes no longer wait on the libraries only some of them need. The
    terminal (xterm), opened files and markdown previews (highlight.js,
    markdown-it) load as their own chunks only when they first appear, instead of
    gating the first paint.
  • The pane-title tooltips now spell out the double-click gesture: hovering any
    of the four pane titles shows Double-click the title toggles full screen
    under its shortcut, so the mouse gesture is discoverable without a docs hunt.
  • README screenshot updated for this release (ref/gitty-0.1.4.png).

Fixed

  • Yesterday evening's commits read as times still to come. The commit log shows
    a bare time for today's rows and a date for everything else, but "everything
    else" was measured as the last 24 hours: at 3 PM, a commit from 9:45 the
    previous night was labelled "9:45 PM" with no date, sitting directly under
    1:43 PM. The cutoff is now the calendar day. The file history pane shares the
    same stamp and was wrong the same way.
  • The window could stay hidden forever on Wayland. It is created hidden and
    shown at its first paint, but an unmapped window's renderer can hold that
    frame back — and showing the window is what would have released it. Gitty
    appeared to start and then leave nothing on screen. The load event now arms a
    fallback that shows the window a second later if the first paint has not
    already done it.
  • Around twenty strings never followed the language setting, because they were
    still written into the components rather than read from a message table —
    Show Whole Diff, Wrap, Outline, Preview, Open in Browser,
    the document tabs, the work-tree row of the commit log and a dozen tooltips.
    They now come from the tables like everything else.