diff --git a/README.md b/README.md index 6526841..e54add0 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,10 @@ A cross-platform desktop Git client written in Rust, with pull request alerts bu > it. Search every commit by summary, message, author or hash. Blame any file at any revision. > Dark and light themes, both designed against the same contrast rules rather than one inverted. > +> Past 1.0's scope and already in: submodules and worktrees in the sidebar โ€” with the actions each +> allows, and none git would refuse โ€” Git LFS files shown as sizes rather than pointers, with the +> ones you have not fetched named as such, `--autosquash`, and a Brazilian Portuguese translation. +> > Two caveats worth knowing before you rely on it. Pushing over SSH with a passphrase, or > over HTTPS with a credential helper, has not been verified โ€” it should work, since hideGit hands > those operations to your own `git`, but every remote in the test suite is a local path. And on @@ -31,6 +35,12 @@ A cross-platform desktop Git client written in Rust, with pull request alerts bu > See [ROADMAP](./docs/ROADMAP.md) for what ships when, and > [ARCHITECTURE](./docs/ARCHITECTURE.md) for how it is built. +

+ hideGit showing a repository's commit graph, with coloured lanes for each line of development, the selected commit's message and file list below it, and a syntax-highlighted diff on the right. +

+ --- ## What it does @@ -68,7 +78,10 @@ refused rather than being retried with `--force`. | ๐ŸŸก | Accessibility: focus ring, keyboard routes and contrast are done | [M6](./docs/ROADMAP.md#m6--polish--release) | | โ›” | Screen-reader support โ€” iced 0.14 has no accessibility surface to build on | [M6](./docs/ROADMAP.md#m6--polish--release) | | โ›” | Signed installers โ€” needs a paid certificate. Downloads are unsigned and say so | [M6](./docs/ROADMAP.md#m6--polish--release) | -| โฌœ | Submodules, worktrees, LFS, PT-BR translation | [Post-1.0](./docs/ROADMAP.md#post-10) | +| โœ… | Submodules: both commits when they disagree, plus update and init | [Post-1.0](./docs/ROADMAP.md#post-10) | +| โœ… | Worktrees: what each checkout holds, add, remove and prune | [Post-1.0](./docs/ROADMAP.md#post-10) | +| โœ… | Git LFS: sizes instead of pointers, and which objects are not fetched | [Post-1.0](./docs/ROADMAP.md#post-10) | +| โœ… | `--autosquash`, a draggable rebase plan, and a Brazilian Portuguese translation | [Post-1.0](./docs/ROADMAP.md#post-10) | Legend: โฌœ planned ยท ๐ŸŸก in progress ยท โ›” blocked on something outside this repository ยท โœ… shipped @@ -76,6 +89,39 @@ Nothing here is ๐ŸŸก by omission. The two โ›” rows are not being worked on and w thing they wait for exists: a toolkit that can talk to a screen reader, and a certificate somebody has paid for. +## A few more screens + + + + + + + + + + +
+ The working directory, with staged, changed and untracked files listed separately, a diff showing one changed line, buttons to stage the file or just the hunk, and the commit message composer below. +

Stage by file, by hunk, or by line. Staged, changed and untracked + stay separate lists, and the diff carries its own Stage file and + Stage hunk buttons rather than hiding them in a menu.

+
+ The same commit graph and diff in hideGit's light theme. +

The light theme is designed, not inverted. Both themes are checked + against the same contrast rules, including the syntax colours in a diff.

+
+ The command palette open over the working directory, listing commands grouped under Repositories, Remotes, Working directory and History, each with its keyboard shortcut on the right. +

Everything is reachable from the keyboard. The palette shows each + command's shortcut, so it teaches the binding rather than replacing it.

+
+

Screenshots are of hideGit's own repository, on macOS. Nothing here is a + mockup: it is the release build opened on this repository, so the commits in the graph are the + ones in the log above.

+
+ ## Requirements **Git must be installed and on your `PATH`.** @@ -195,6 +241,7 @@ enough for Explorer, the taskbar and Alt-Tab to show it. There is nothing else t | [COMMIT_GRAPH](./docs/COMMIT_GRAPH.md) | Lane assignment algorithm and rendering | | [RELEASING](./docs/RELEASING.md) | How a release is cut, what ships, and why nothing is signed yet | | [ADRs](./docs/adr/README.md) | Why each major technical decision was made | +| [screenshots](./docs/screenshots/README.md) | How the images above are taken, and how to retake them | ## Contributing diff --git a/docs/screenshots/README.md b/docs/screenshots/README.md new file mode 100644 index 0000000..1157e30 --- /dev/null +++ b/docs/screenshots/README.md @@ -0,0 +1,48 @@ +# Screenshots + +The images the [README](../../README.md) shows. Nothing here is a mockup: each one is the release +build, opened on **this repository**, so the commits in the graph are the ones in the log. + +## Reproducing them + +Two things matter, and the second is the one worth copying. + +**Build the bundle, not just the binary.** The window is the same either way, but a bundle is what +macOS gives an icon and a name to. + +```sh +cargo build --release +cargo run -p xtask -- bundle-macos +``` + +**Run against a throwaway profile.** hideGit keeps its config, state and recent-repository list +under `$HOME`, so pointing `HOME` at an empty directory gives a session that has never opened +anything else. That is not tidiness โ€” a screenshot of a real sidebar publishes the name and path of +every repository the author has open, and those are usually somebody else's to disclose. +`HIDEGIT_NO_KEYCHAIN=1` does the same job for the forge: signed out, so no pull request, review or +account detail can appear. + +```sh +profile=$(mktemp -d) +open -a target/release/bundle/hideGit.app \ + --env HOME="$profile" --env HIDEGIT_NO_KEYCHAIN=1 \ + --args "$PWD" +``` + +The trade is that the pull request pane cannot be shown this way, since it needs an account. A +screenshot of it would have to come from a repository whose PRs are already public, with the same +care taken over everything else on screen. + +**Capture the window, not a region of the screen.** A rectangle captures whatever is on top of it; +a window id captures the window. + +```sh +screencapture -x -o -l docs/screenshots/graph.png +``` + +## Keeping them honest + +A screenshot is documentation that cannot be tested, so it is the first thing to go stale. When a +change alters what one of these shows โ€” the sidebar's sections, the diff's colours, the composer โ€” +retake it in the same commit, the way any other document in `docs/` is updated with the change it +describes. diff --git a/docs/screenshots/command-palette.png b/docs/screenshots/command-palette.png new file mode 100644 index 0000000..b64403f Binary files /dev/null and b/docs/screenshots/command-palette.png differ diff --git a/docs/screenshots/graph.png b/docs/screenshots/graph.png new file mode 100644 index 0000000..bfe468d Binary files /dev/null and b/docs/screenshots/graph.png differ diff --git a/docs/screenshots/light-theme.png b/docs/screenshots/light-theme.png new file mode 100644 index 0000000..49ed8d7 Binary files /dev/null and b/docs/screenshots/light-theme.png differ diff --git a/docs/screenshots/staging.png b/docs/screenshots/staging.png new file mode 100644 index 0000000..55804fc Binary files /dev/null and b/docs/screenshots/staging.png differ