Release Git Tools 0.2.0
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-09-02 09:45:57 +02:00
parent ed0acbf8c8
commit 320e7212ef
25 changed files with 1453 additions and 76 deletions
+8
View File
@@ -1,5 +1,13 @@
# Changelog
## 0.2.0 - 2026-09-02
- Added exact atomic text-patch application/reversal against explicit local
snapshots with deterministic JSON/ZIP export.
- Added layered ignore sources and tracked-state explanations, root
`.gitattributes` evaluation, and advisory release planning from Conventional
Commit headers.
## 0.1.0 - 2026-09-01
- Added the initial local-first Git Tools workbench.
+30 -3
View File
@@ -1,5 +1,5 @@
==============================================================================
@add-ideas/toolbox-contract@0.2.3
@add-ideas/toolbox-contract@0.3.0
Declared licence: Apache-2.0
==============================================================================
--- LICENSE ---
@@ -198,7 +198,7 @@ Declared licence: Apache-2.0
==============================================================================
@add-ideas/toolbox-helpers@0.1.0
@add-ideas/toolbox-helpers@0.2.0
Declared licence: GPL-3.0-or-later
==============================================================================
--- LICENSE ---
@@ -879,7 +879,7 @@ Public License instead of this License. But first, please read
==============================================================================
@add-ideas/toolbox-shell-react@0.2.3
@add-ideas/toolbox-shell-react@0.3.0
Declared licence: Apache-2.0
==============================================================================
--- LICENSE ---
@@ -1077,6 +1077,33 @@ Declared licence: Apache-2.0
limitations under the License.
==============================================================================
fflate@0.8.2
Declared licence: MIT
==============================================================================
--- LICENSE ---
MIT License
Copyright (c) 2023 Arjun Barrett
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
==============================================================================
react@19.2.8
Declared licence: MIT
+6 -3
View File
@@ -8,12 +8,15 @@ Git Tools is a standalone local-first application in the [add·ideas Toolbox](ht
- Unified and `git diff` patch parsing with file status, modes, renames, hunk counts, line numbers, statistics, binary markers, and diagnostics
- Unified patch authoring from before/after text with bounded LCS, context selection, path safety, and missing-final-newline markers
- Root `.gitignore` matching for comments, escapes, globstars, character classes, directory rules, negation, ordered explanations, and ignored-parent diagnostics
- Exact, atomic text-patch application and reversal against an explicit JSON repository snapshot, with downloadable JSON or deterministic ZIP output and no working-tree access
- Layered `.gitignore` matching for comments, escapes, globstars, character classes, directory rules, negation, global excludes, `.git/info/exclude`, parent-to-child nested files, explicit tracked state, winning-rule explanations, and ignored-parent diagnostics
- Root `.gitattributes` evaluation with set/unset/value/unspecified states, last-match provenance, and directory-pattern diagnostics
- Strict SemVer 2.0 precedence plus common exact, comparator, partial, wildcard, hyphen, tilde, caret, AND, and OR ranges
- Conventional Commit builder and structural lint with breaking-change/footer diagnostics
- Keep-a-Changelog heading/section normalization, stable ordering, and duplicate-entry removal
- Advisory release planning from Conventional Commit headers: SemVer bump, grouped notes, tag name, invalid-input evidence, and review-only command sequence
Patch and before/after inputs are capped at 4 MiB with additional file, line, hunk, and diff-matrix bounds. `.gitignore` evaluates one repository-root file only; it does not read nested ignore files, global excludes, index state, or submodules. No workspace or `.git` directory is accessed. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) and [docs/PRIVACY-SECURITY.md](docs/PRIVACY-SECURITY.md).
Patch and before/after inputs are capped at 4 MiB with additional file, line, hunk, and diff-matrix bounds. Applied snapshots are text-only, exact-match, atomic, limited to 5,000 files/32 MiB, and never touch the working tree. Ignore inputs are an explicit local snapshot; command-line exclude rules and submodule repository boundaries are not modeled. Attribute macros and nested attribute files are not expanded. No workspace or `.git` directory is accessed. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) and [docs/PRIVACY-SECURITY.md](docs/PRIVACY-SECURITY.md).
## Development
@@ -27,7 +30,7 @@ npm run test:browser
## Release
`npm run release:artifact` creates a deterministic `release/git-tools-0.1.0.zip` and checksum sidecar.
`npm run release:artifact` creates a deterministic `release/git-tools-0.2.0.zip` and checksum sidecar.
## Licence
+2 -2
View File
@@ -1,7 +1,7 @@
# Corresponding source
The corresponding source for Git Tools 0.1.0 is available at:
The corresponding source for Git Tools 0.2.0 is available at:
https://git.add-ideas.de/lotobo/git-tools/src/tag/v0.1.0
https://git.add-ideas.de/lotobo/git-tools/src/tag/v0.2.0
Build with Node.js 22, npm 11, `npm ci`, and `npm run release:artifact`.
+4 -4
View File
@@ -1,12 +1,12 @@
# Third-party notices
Git Tools 0.1.0 directly depends on these runtime packages:
Git Tools 0.2.0 directly depends on these runtime packages:
| Package | Pinned version | Declared licence |
| -------------------------------- | -------------: | ---------------- |
| `@add-ideas/toolbox-contract` | 0.2.3 | Apache-2.0 |
| `@add-ideas/toolbox-helpers` | 0.1.0 | GPL-3.0-or-later |
| `@add-ideas/toolbox-shell-react` | 0.2.3 | Apache-2.0 |
| `@add-ideas/toolbox-contract` | 0.3.0 | Apache-2.0 |
| `@add-ideas/toolbox-helpers` | 0.2.0 | GPL-3.0-or-later |
| `@add-ideas/toolbox-shell-react` | 0.3.0 | Apache-2.0 |
| `react` | 19.2.8 | MIT |
| `react-dom` | 19.2.8 | MIT |
+1 -1
View File
@@ -1,5 +1,5 @@
const CACHE_PREFIX = "git-tools-shell-";
const CACHE_NAME = CACHE_PREFIX + "0.1.0";
const CACHE_NAME = CACHE_PREFIX + "0.2.0";
const CORE = ["./", "./manifest.webmanifest", "./favicon.svg"];
self.addEventListener("install", (event) => {
event.waitUntil(
+18 -2
View File
@@ -3,7 +3,7 @@
"schemaVersion": 1,
"id": "de.add-ideas.git-tools",
"name": "Git Tools",
"version": "0.1.0",
"version": "0.2.0",
"description": "Inspect and author Git interchange formats locally in the browser.",
"entry": "./",
"icon": "./favicon.svg",
@@ -29,9 +29,25 @@
"crossOriginIsolated": false,
"topLevelContext": false
},
"io": {
"accepts": [
{ "mediaType": "text/x-diff", "extensions": [".diff", ".patch"] },
{
"mediaType": "text/plain",
"extensions": [".gitignore", ".gitattributes", ".txt"]
},
{ "mediaType": "application/json", "extensions": [".json"] }
],
"produces": [
{ "mediaType": "text/x-diff", "extensions": [".patch"] },
{ "mediaType": "application/json", "extensions": [".json"] },
{ "mediaType": "application/zip", "extensions": [".zip"] }
]
},
"capabilities": { "required": [], "optional": [] },
"privacy": {
"processing": "local",
"fileUploads": true,
"fileUploads": false,
"telemetry": false,
"label": "Inputs stay in this browser; nothing is uploaded."
},