4 Commits

Author SHA1 Message Date
Vaclav Tvrdik
a2900682a0 Move channel to shared vaclavt/sublime-chanel repo
channel.json is removed; vDiff's Package Control channel now lives
in vaclavt/sublime-chanel alongside vAI and vterm.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-30 11:29:26 +02:00
Vaclav Tvrdik
9d04d8c711 Merge remote-tracking branch 'github/main' 2026-09-29 15:24:49 +02:00
Vaclav Tvrdik
e24922828c installable through a Package Control channel
repository.json describes vDiff itself; "tags": true means a release is a
pushed git tag. channel.json is the file users add to their "channels"
setting - it holds nothing but repository URLs, so packages added to it
later reach existing users without them changing anything.

The two are easy to confuse: Package Control rejects a file under
"channels" unless it has a top-level "repositories" key, so a repository
file belongs in "repositories". The README spells that out.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-26 22:51:55 +02:00
Vaclav Tvrdik
725d04aeed target the Python 3.14 plugin host
Build 4213 replaced Sublime's Python 3.8 plugin host with 3.14. The value
3.8 is still accepted as a legacy alias and resolves to the same host, but
naming 3.14 survives those aliases being dropped. Package Control 4.2.8
honours it from build 4203 on.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-26 22:50:17 +02:00
4 changed files with 82 additions and 6 deletions

11
.gitattributes vendored Normal file
View File

@@ -0,0 +1,11 @@
# Keep the release archive to what Sublime actually loads. Package Control
# installs whatever the tag's zip contains, and GitHub builds that zip with
# git archive, which honours export-ignore.
.claude/ export-ignore
tests/ export-ignore
.gitattributes export-ignore
.gitignore export-ignore
diff.sublime-project export-ignore
TODO.txt export-ignore
channel.json export-ignore
repository.json export-ignore

View File

@@ -1 +1 @@
3.8
3.14

View File

@@ -4,18 +4,49 @@ Review what a coding agent changed without leaving Sublime Text: the whole file,
insertions in green, in the file's own syntax highlighting. Stage, unstage or discard the file, or jump
to the real file at the caret's line.
Install: symlink this directory into `Packages` as `vDiff` (Python 3.8 plugin host, no dependencies).
On first use vDiff writes the scopes it paints changes with into `Packages/User/<your scheme>.sublime-color-scheme`;
Sublime loads a scheme file it has not seen before only at startup, so restart it once to get the colours.
Needs Sublime Text build 4213 or later, the build that replaced the Python 3.8 plugin host with
Python 3.14. No dependencies.
Command Palette:
## Install with Package Control
vDiff is distributed through the shared channel at
[vaclavt/sublime-chanel](https://github.com/vaclavt/sublime-chanel), not the default one. Open
**Preferences → Package Settings → Package Control → Settings** and put the channel URL in the
`channels` array of the right-hand (User) pane:
```json
{
"channels": [
"https://packagecontrol.io/channel_v3.json",
"https://raw.githubusercontent.com/vaclavt/sublime-chanel/main/channel.json"
]
}
```
Keep `https://packagecontrol.io/channel_v3.json` in the list — dropping it hides every default
package. Then run **Package Control: Install Package** from the Command Palette and pick **vDiff**.
Upgrades arrive through **Package Control: Upgrade Package** like any other package.
## Install from source
Clone or symlink the repository into the Sublime Text `Packages` directory as `vDiff`:
```bash
git clone https://github.com/vaclavt/vdiff.git \
"$HOME/Library/Application Support/Sublime Text/Packages/vDiff"
```
Use one method or the other, not both: an unpacked `Packages/vDiff` directory overrides the
`vDiff.sublime-package` that Package Control installs.
## Command Palette
- **vDiff: Changed Files** – uncommitted changes (staged, unstaged, untracked). Arrowing through
the list previews each file; Enter keeps it, Esc goes back to what was shown.
- **vDiff: Recent Commits** – last N commits, then the files of the chosen commit. A key binding to
`vdiff_commits` with `{"sha": "HEAD"}` skips the list and reviews the last commit directly.
Keys inside the review view:
## Keys inside the review view
| key | action |
|---|---|
@@ -32,3 +63,16 @@ Keys inside the review view:
| Esc | close the view |
The header links do the same with the mouse. Settings: `vDiff.sublime-settings`.
## The channel
`repository.json` in this repository is a Package Control **repository** file: its top-level key
is `packages`, and it describes vDiff itself — where the code lives and which releases exist.
`"tags": true` means Package Control reads the repository's git tags, so publishing a release is
just `git tag v1.0.1 && git push --tags`. A package whose tags are all unpushed resolves to zero
releases, and Package Control drops it from the list without an error — if vDiff is missing from
**Install Package**, check the tags reached GitHub.
The channel itself — the `channels`-array file listing `repository.json` for vDiff and vaclavt's
other packages — lives in [vaclavt/sublime-chanel](https://github.com/vaclavt/sublime-chanel), not
here. Add a package there instead of in this repository.

21
repository.json Normal file
View File

@@ -0,0 +1,21 @@
{
"$schema": "sublime://packagecontrol.io/schemas/repository",
"schema_version": "4.0.0",
"packages": [
{
"name": "vDiff",
"details": "https://github.com/vaclavt/vdiff",
"description": "Review uncommitted changes and commits in Sublime Text: whole files with deletions in red and insertions in green, in the file's own syntax highlighting",
"author": "vaclavt",
"labels": ["git", "diff", "review", "vcs"],
"releases": [
{
"sublime_text": ">=4213",
"platforms": ["*"],
"python_versions": ["3.14"],
"tags": true
}
]
}
]
}