megit-app 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,35 @@ surface, and the HTTP API may change in any minor release.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.4.0] - 2026-08-05
13
+
14
+ ### Added
15
+
16
+ - The add-repo dialog lists up to 10 recent repositories. Ones already open are marked and
17
+ clicking them switches to that tab; closing a tab keeps the repo in the list.
18
+
19
+ ### Changed
20
+
21
+ - "Discard all" in the commit panel now discards only unstaged changes: tracked files go back to their staged content and untracked files are deleted, while anything staged survives. It previously reset both sides to HEAD, so staging a hunk you wanted to keep and discarding the rest threw away the part you had just protected. The button counts unstaged entries and does nothing when there are none.
22
+
23
+ ### Fixed
24
+
25
+ - The search bar (<kbd>⌘F</kbd>) no longer slides sideways when the commit panel opens or closes. It was centred on `.graph-pane`, which shrinks with the panel, so a 50% anchor moved on every selection change; it is now pinned to the start of the subject column, which only moves when a splitter is dragged.
26
+
27
+ ## [0.3.0] - 2026-08-01
28
+
29
+ ### Added
30
+
31
+ - Split terminal panes: <kbd>⌘D</kbd> (or the split button in the panel header) divides the terminal panel into up to four side-by-side shells, each its own PTY with its own scrollback. A pane goes away when its shell exits (`exit`, <kbd>⌃D</kbd>) or via the ✕ in its top-right corner, which kills the shell rather than orphaning it; closing the last one closes the panel. The layout is remembered per repository, so switching tabs and coming back reattaches every pane. The four-pane cap is enforced server-side, not just in the UI — the WebSocket spawns login shells, so an unbounded pane index would be an unbounded shell factory.
32
+
33
+ ### Changed
34
+
35
+ - The published package now requires Node ≥ 22 instead of ≥ 24, so `npx megit-app` no longer prints an `EBADENGINE` warning on Node 22 or 23. Node 24 was only ever needed to run `server/*.ts` directly in development; the package ships `dist-server/` compiled to ES2022, whose real floor is `import.meta.dirname` (Node 20.11). Development and CI stay on Node 24.
36
+
37
+ ### Fixed
38
+
39
+ - A stash newer than every commit no longer sinks to its base commit's row. Stash placement snaps a stash down to its base when the first lane clear of solid graph lines sits more than one lane past the insertion row's own traffic — a guard against a stash square floating alone past the right edge. On a busy history that fired far too eagerly: a stash taken minutes ago landed eleven rows down, next to a day-old base. The guard now also keeps the chronological row whenever the clear lane fits inside the width the graph already draws, which is the width the original check was really about.
40
+
12
41
  ## [0.2.0] - 2026-07-30
13
42
 
14
43
  ### Added
@@ -97,6 +126,7 @@ First public release.
97
126
  - Windows (arm64, x64): builds and runs, but untested on real hardware — recursive `fs.watch` crashes the test worker there, so auto-refresh is not covered by CI
98
127
  - Linux: everything except the terminal — `node-pty` is an `optionalDependency` with no Linux prebuild, and the terminal button is hidden when it is unavailable
99
128
 
100
- [Unreleased]: https://github.com/vuongvu1/megit/compare/v0.2.0...HEAD
129
+ [Unreleased]: https://github.com/vuongvu1/megit/compare/v0.3.0...HEAD
130
+ [0.3.0]: https://github.com/vuongvu1/megit/compare/v0.2.0...v0.3.0
101
131
  [0.2.0]: https://github.com/vuongvu1/megit/compare/v0.1.0...v0.2.0
102
132
  [0.1.0]: https://github.com/vuongvu1/megit/releases/tag/v0.1.0
package/README.md CHANGED
@@ -10,10 +10,10 @@ Nothing leaves your machine: the server binds `127.0.0.1`, shells out to your ow
10
10
 
11
11
  ## Install
12
12
 
13
- Requires Node ≥ 24.
13
+ Requires Node ≥ 22.
14
14
 
15
15
  ```bash
16
- npx megit-app # reopen your last session
16
+ npx megit-app
17
17
  ```
18
18
 
19
19
  The package is `megit-app` — `npx megit` is an unrelated package by someone else, so keep the `-app`.
@@ -68,7 +68,9 @@ Author and committer are shown separately when they differ — including the dat
68
68
 
69
69
  <kbd>⌘</kbd><kbd>F</kbd> opens a find bar that filters the rows already loaded, as you type — matching commit message, author name, email, hash prefix, or ref name. That costs no request and can't go stale when the graph refreshes underneath you. <kbd>↵</kbd> and <kbd>⇧</kbd><kbd>↵</kbd> walk the matches, wrapping at the ends the way a find bar should.
70
70
 
71
- If what you want is further back than the rows you've loaded, the globe button re-runs the same query as a full-history `git log` search. Because git ANDs its commit-limiting options, "message OR author OR hash" is three searches unioned into one date-ordered list, capped at 500 results — the counter shows `12 of 340 · all`, with a `+` when the cap truncated it. A match below the loaded window pulls the graph down to it.
71
+ ![the find bar over the graph, showing a match counter and the current match selected](docs/search.png)
72
+
73
+ If what you want is further back than the rows you've loaded, the globe button re-runs the same query as a full-history `git log` search. Because git ANDs its commit-limiting options, "message OR author OR hash" is three searches unioned into one date-ordered list, capped at 500 results — the counter shows `12 of 340 · all`, and `340+` when the cap truncated it. A match below the loaded window pulls the graph down to it.
72
74
 
73
75
  ### A real shell, in the repo
74
76
 
@@ -109,11 +111,11 @@ Auto-refresh only ever reads local git, so commits pushed by someone else stay i
109
111
 
110
112
  ## Platform support
111
113
 
112
- | Platform | Status |
113
- | -------------------- | ----------------------------------------- |
114
- | macOS (arm64, x64) | full |
114
+ | Platform | Status |
115
+ | -------------------- | -------------------------------------------------- |
116
+ | macOS (arm64, x64) | full |
115
117
  | Windows (arm64, x64) | untested on real hardware; auto-refresh unverified |
116
- | Linux | everything except the built-in terminal |
118
+ | Linux | everything except the built-in terminal |
117
119
 
118
120
  The terminal needs [node-pty](https://github.com/microsoft/node-pty), which ships prebuilt binaries for macOS and Windows only. It is an `optionalDependency`: on Linux the install either compiles it from source (needs python3 and a C++ toolchain) or skips it, and megit hides the terminal button. Nothing else is affected.
119
121
 
@@ -125,7 +127,7 @@ The list of open repositories lives in `~/.config/megit/config.json`. Repositori
125
127
 
126
128
  ## Development
127
129
 
128
- Requires pnpm.
130
+ Requires Node ≥ 24 and pnpm — a development-only floor, since the server runs its TypeScript unbuilt (the published package ships compiled JS and only needs Node ≥ 22).
129
131
 
130
132
  ```bash
131
133
  pnpm install