guito 0.5.4 → 0.6.1

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
@@ -2,6 +2,46 @@
2
2
 
3
3
  All notable changes to Guito are documented in this file. The project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html), and this changelog is structured around [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
4
4
 
5
+ ## [0.6.1] - 2026-09-08
6
+
7
+ ### Added
8
+
9
+ - Rebase the current branch onto any branch from the pull menu. The new "Rebase (from)..." entry opens a branch picker with origin/main as the default choice, and the option list scrolls when a repository has many branches.
10
+ - Force push from the push menu. The red "Push (force)" entry asks for confirmation before overwriting the remote branch with the local history.
11
+ - Create pull requests on an on-prem Azure DevOps Server from the push menu. After setting the server URL with the new settings button (or the guito.azureDevOpsUrl VS Code setting), a "Create Pull Request..." entry opens a dialog with title, description, source and target branches, and shows a link to the created pull request when it is created.
12
+ - Fill pull requests with optional metadata: required and optional reviewers, linked work items searched by id or title, and tags, all with autocomplete suggestions from the Azure DevOps API.
13
+ - Create the pull request from a new remote branch with a random name without leaving the current branch, and publish the source branch to the remote automatically when it has not been pushed yet.
14
+ - Authenticate to Azure DevOps with Windows integrated authentication, so no credentials are stored or entered for on-prem servers.
15
+
16
+ ## [0.6.0] - 2026-09-07
17
+
18
+ ### Added
19
+
20
+ - Stage and unstage individual files, selected ranges, or all changes from the Uncommitted changes panel, with Ctrl/Cmd and Shift selection and separate index/working-tree diff previews.
21
+ - Write a commit subject and optional description, then commit staged changes without leaving Guito. Drafts survive panel closure and failed commits during the session.
22
+ - Rename and delete local branches from the branch context menu. Deleting the checked-out branch is disabled, the branches dropdown follows renames, and it falls back to "Show All" when the selected branch is deleted.
23
+ - Navigate commit search results with up/down arrows (or Enter and Shift+Enter in the search box) instead of filtering the list. Matches are highlighted in place, the counter shows the focused match, and navigating to a match outside the loaded history fetches more commits until it can be selected and scrolled into view.
24
+ - Choose the reset type when resetting the current branch to a commit. A dialog offers soft (keep changes staged), mixed (keep changes unstaged), and hard (discard all changes) resets.
25
+ - Add a tag context menu with view details, delete tag, push tag, create archive, and copy tag name actions. Pushing a tag uploads it to the remote through the new `/api/tag/push` endpoint.
26
+ - Clear the commit search with a dedicated button.
27
+ - Persist column widths and the commit message draft across sessions using browser storage.
28
+ - Stash all, staged, or unstaged changes directly from the Uncommitted changes panel. Staged-only stashes keep unstaged work in place, and unstaged stashes keep staged changes staged.
29
+ - Discard selected or all unstaged changes from the Uncommitted changes panel after a confirmation dialog. Discarding unstaged edits preserves staged changes for files with both.
30
+ - Added browser regressions and Git integration coverage for search, table alignment, staging, committing, and branch management.
31
+
32
+ ### Changed
33
+
34
+ - Remove the per-file stage/unstage buttons from file rows in the Uncommitted changes panel; staging and unstaging now use the selection and bulk actions in each section header.
35
+
36
+ ### Fixed
37
+
38
+ - Keep the table header, uncommitted row, graph, and commit columns aligned while scrolling horizontally or resizing columns.
39
+ - Restore virtual rows after searching or clearing empty results; show loading feedback during search, refresh, history loading, and graph computation.
40
+ - Recover pending graph work when its worker fails, ignore superseded search requests, and allow explicit retries without automatic failure loops.
41
+ - Preserve the last known working status after errors and support initial commits, partial staging, renamed/deleted files, and literal filenames.
42
+ - Reject blank subjects, empty-index commits, and unresolved conflicts, and prevent overlapping UI mutations.
43
+ - Keep commit graph edges connected across viewport boundaries while scrolling, so long merge edges no longer disappear from view.
44
+
5
45
  ## [0.5.4] - 2026-09-06
6
46
 
7
47
  ### Changed
package/CONTRIBUTION.md CHANGED
@@ -96,8 +96,14 @@ Run the same core checks used by the release workflow:
96
96
  npm run check
97
97
  npm run build
98
98
  npm test
99
+ npx playwright install chromium --only-shell
100
+ npm run test:browser
99
101
  ```
100
102
 
103
+ The browser suite uses a disposable repository and authenticated API fixtures. Failure traces are saved under `test-results/`.
104
+
105
+ On Windows, after building, `node tests/browser/vscode-smoke.mjs` also opens an isolated Extension Development Host, stages a fixture file, and commits it through the authenticated webview. Set `GUITO_CODE_EXE` if VS Code is installed outside its default per-user location. The test closes its host and removes its temporary profile and repository afterward.
106
+
101
107
  - Add or update tests when changing server routes, authentication, repository selection, or Git behavior.
102
108
  - Test UI changes against a disposable repository with branches, merges, remote references, working-tree changes, and untracked files where relevant.
103
109
  - Exercise destructive operations only in a disposable repository.
package/README.md CHANGED
@@ -9,12 +9,13 @@ The name combines **GUI** and **Git**: **G**u**IT**o. It is also a [Portuguese w
9
9
  ## Features
10
10
 
11
11
  - Visual commit graph with branch and tag references.
12
- - Commit search by subject, author, or hash.
12
+ - Commit search by subject, body, author, or hash, with loading feedback and retries.
13
13
  - Local and remote branch filtering.
14
14
  - Commit and working-tree diffs powered by the Monaco editor, with inline and side-by-side layouts.
15
15
  - Fetch, pull, pull with rebase, push, and sync actions.
16
16
  - Context actions for creating branches and tags, checking out commits, cherry-picking, reverting, merging, rebasing, resetting, and exporting archives.
17
17
  - Working-tree actions for stashing changes, resetting tracked changes, and cleaning untracked files.
18
+ - Stage and unstage files with multi-selection, preview staged and unstaged diffs, and commit staged changes.
18
19
  - Browser-based CLI and a VS Code extension with local, Remote SSH, Dev Container, and Codespaces support.
19
20
 
20
21
  > [!CAUTION]
@@ -48,6 +49,12 @@ After installing the extension, open a trusted workspace containing a Git reposi
48
49
 
49
50
  In a multi-root workspace, Guito asks which repository to open. Git must be available on the local or remote VS Code extension host.
50
51
 
52
+ ## Stage and commit changes
53
+
54
+ Click **Uncommitted changes** to open the staged and unstaged file lists. Click to select a file, Ctrl/Cmd-click to toggle individual files, or Shift-click to select a range. Use the per-file buttons, selected-file actions, or **Stage all** / **Unstage all**. The separate **Diff** button previews only the changes in that list.
55
+
56
+ Enter a commit message and optional description, then choose **Commit staged changes**. Only staged changes are committed; unstaged edits remain on disk. Commit drafts stay available when you close and reopen the panel during the session.
57
+
51
58
  ## CLI options
52
59
 
53
60
  ```text