megit-app 0.1.0 → 0.3.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 +30 -1
- package/README.md +16 -10
- package/dist/assets/{DiffView-CJb6qgum.js → DiffView-BNnSrWMx.js} +1 -1
- package/dist/assets/{TerminalPanel-Cwtdgirw.js → TerminalPanel-54--lgXp.js} +11 -11
- package/dist/assets/index-CjT1mano.css +1 -0
- package/dist/assets/index-WjpXTtcO.js +249 -0
- package/dist/index.html +2 -2
- package/dist-server/index.js +9 -1
- package/dist-server/term.js +28 -11
- package/package.json +2 -2
- package/dist/assets/index-CfQ1U4Ld.js +0 -249
- package/dist/assets/index-DZyh3SKi.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,33 @@ surface, and the HTTP API may change in any minor release.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.3.0] - 2026-08-01
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- 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.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- 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.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- 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.
|
|
25
|
+
|
|
26
|
+
## [0.2.0] - 2026-07-30
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- Merge and Rebase in the right-click menu of a remote branch chip, not only a local one. When a local branch has diverged from its upstream — a local commit here, a new commit on the remote — `origin/x` is drawn as its own chip, and that chip is exactly what you want to merge in or rebase onto. The actions address the branch by its full remote-tracking ref, so a diverged `origin/main` can never resolve to the local `main`.
|
|
31
|
+
- A build badge in the top-right of the tab bar: `[DEV]` when running the Vite dev server, the package version (`v0.2.0`) in a production build. Baked in at build time, so it costs no request and the unused branch is dropped from the production bundle.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- Refresh (⟳ button and <kbd>r</kbd>) now fetches from the remote before re-reading the repository. It previously only read local git, so commits pushed by someone else — and the Pull/Push badge counts — stayed stale until you hit Pull. Auto-refresh over SSE and the initial load of a tab remain local-only, so neither costs a network round-trip; a fetch that fails is ignored and the local refresh still happens.
|
|
36
|
+
- Ref chips are ordered branches-first, tags-last, instead of taking whatever order git listed them in. The sort is stable, so git's ordering still decides within each group.
|
|
37
|
+
- The tab close button is a real 18×18 target with a hover ring and a `Close <repo>` label for screen readers, and its cross is an SVG rather than a `×` glyph — a text glyph is positioned from the font's baseline, so flex centring aligned its line box and left the visible ink off-centre.
|
|
38
|
+
|
|
12
39
|
## [0.1.0] - 2026-07-28
|
|
13
40
|
|
|
14
41
|
First public release.
|
|
@@ -84,5 +111,7 @@ First public release.
|
|
|
84
111
|
- 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
|
|
85
112
|
- Linux: everything except the terminal — `node-pty` is an `optionalDependency` with no Linux prebuild, and the terminal button is hidden when it is unavailable
|
|
86
113
|
|
|
87
|
-
[Unreleased]: https://github.com/vuongvu1/megit/compare/v0.
|
|
114
|
+
[Unreleased]: https://github.com/vuongvu1/megit/compare/v0.3.0...HEAD
|
|
115
|
+
[0.3.0]: https://github.com/vuongvu1/megit/compare/v0.2.0...v0.3.0
|
|
116
|
+
[0.2.0]: https://github.com/vuongvu1/megit/compare/v0.1.0...v0.2.0
|
|
88
117
|
[0.1.0]: https://github.com/vuongvu1/megit/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -10,12 +10,14 @@ 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 ≥
|
|
13
|
+
Requires Node ≥ 22.
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npx megit-app
|
|
16
|
+
npx megit-app
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
The package is `megit-app` — `npx megit` is an unrelated package by someone else, so keep the `-app`.
|
|
20
|
+
|
|
19
21
|
Installed globally (`npm i -g megit-app`), the command is just `megit`.
|
|
20
22
|
|
|
21
23
|
`PORT` picks the port (default 3411). The server opens your browser at it.
|
|
@@ -66,7 +68,9 @@ Author and committer are shown separately when they differ — including the dat
|
|
|
66
68
|
|
|
67
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.
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+

|
|
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.
|
|
70
74
|
|
|
71
75
|
### A real shell, in the repo
|
|
72
76
|
|
|
@@ -87,7 +91,9 @@ Checkout auto-stashes a dirty worktree first. Destructive items are marked as su
|
|
|
87
91
|
|
|
88
92
|
### Auto-refresh
|
|
89
93
|
|
|
90
|
-
The server watches each open repository (`fs.watch`, filtered and debounced) and pushes changes to the browser over SSE. Commit in your terminal and the graph updates within about a second.
|
|
94
|
+
The server watches each open repository (`fs.watch`, filtered and debounced) and pushes changes to the browser over SSE. Commit in your terminal and the graph updates within about a second.
|
|
95
|
+
|
|
96
|
+
Auto-refresh only ever reads local git, so commits pushed by someone else stay invisible until something fetches. <kbd>r</kbd> and the ⟳ button therefore fetch from the remote first, then refresh — that is the one path that surfaces new upstream commits and refreshes the Pull/Push badges. A fetch that fails (offline, no remote) is ignored and the local refresh still happens.
|
|
91
97
|
|
|
92
98
|
### Keyboard
|
|
93
99
|
|
|
@@ -96,7 +102,7 @@ The server watches each open repository (`fs.watch`, filtered and debounced) and
|
|
|
96
102
|
| <kbd>↑</kbd> <kbd>↓</kbd> <kbd>Home</kbd> <kbd>End</kbd> | move through rows |
|
|
97
103
|
| <kbd>⌘</kbd><kbd>F</kbd> | search commits |
|
|
98
104
|
| <kbd>↵</kbd> / <kbd>⇧</kbd><kbd>↵</kbd> | next / previous match |
|
|
99
|
-
| <kbd>r</kbd> | refresh
|
|
105
|
+
| <kbd>r</kbd> | fetch from remote, then refresh |
|
|
100
106
|
| <kbd>⌘</kbd><kbd>J</kbd> | toggle terminal |
|
|
101
107
|
| <kbd>⌘</kbd><kbd>K</kbd> | clear terminal |
|
|
102
108
|
| <kbd>⌘</kbd><kbd>⇧</kbd><kbd>0</kbd> | toggle theme |
|
|
@@ -105,11 +111,11 @@ The server watches each open repository (`fs.watch`, filtered and debounced) and
|
|
|
105
111
|
|
|
106
112
|
## Platform support
|
|
107
113
|
|
|
108
|
-
| Platform | Status
|
|
109
|
-
| -------------------- |
|
|
110
|
-
| macOS (arm64, x64) | full
|
|
114
|
+
| Platform | Status |
|
|
115
|
+
| -------------------- | -------------------------------------------------- |
|
|
116
|
+
| macOS (arm64, x64) | full |
|
|
111
117
|
| Windows (arm64, x64) | untested on real hardware; auto-refresh unverified |
|
|
112
|
-
| Linux | everything except the built-in terminal
|
|
118
|
+
| Linux | everything except the built-in terminal |
|
|
113
119
|
|
|
114
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.
|
|
115
121
|
|
|
@@ -121,7 +127,7 @@ The list of open repositories lives in `~/.config/megit/config.json`. Repositori
|
|
|
121
127
|
|
|
122
128
|
## Development
|
|
123
129
|
|
|
124
|
-
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).
|
|
125
131
|
|
|
126
132
|
```bash
|
|
127
133
|
pnpm install
|