Reconcile canonical GnosysLabs/Hop publishing paths with accepted release implementation
Hop-State: A_06FN5C39XCC4JXJEAKVD5S0 Hop-Proposal: R_06FN5C2KP6Z8BKCP0KK1QZ0 Hop-Task: T_06FN3MBF98GWD4NA5PA1RWG Hop-Attempt: AT_06FN5B04YJGZ2NFP2TJWM1R
This commit is contained in:
+3
-3
@@ -22,7 +22,7 @@ builds:
|
|||||||
ldflags:
|
ldflags:
|
||||||
- >-
|
- >-
|
||||||
-s -w
|
-s -w
|
||||||
-X githop.xyz/hop/hop/internal/hop.Version={{ .Version }}
|
-X githop.xyz/GnosysLabs/Hop/internal/hop.Version={{ .Version }}
|
||||||
|
|
||||||
archives:
|
archives:
|
||||||
- id: release
|
- id: release
|
||||||
@@ -65,7 +65,7 @@ changelog:
|
|||||||
|
|
||||||
release:
|
release:
|
||||||
gitea:
|
gitea:
|
||||||
owner: hop
|
owner: GnosysLabs
|
||||||
name: hop
|
name: Hop
|
||||||
draft: true
|
draft: true
|
||||||
prerelease: auto
|
prerelease: auto
|
||||||
|
|||||||
@@ -77,13 +77,13 @@ release archive, verifies its SHA-256 checksum, installs `hop` to
|
|||||||
installs the Codex skill:
|
installs the Codex skill:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh | sh
|
curl -fsSL https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh | sh
|
||||||
```
|
```
|
||||||
|
|
||||||
To inspect the installer before running it:
|
To inspect the installer before running it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSLO https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh
|
curl -fsSLO https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh
|
||||||
less install.sh
|
less install.sh
|
||||||
sh install.sh
|
sh install.sh
|
||||||
```
|
```
|
||||||
@@ -101,7 +101,7 @@ installs `hop.exe` under `%LOCALAPPDATA%\Programs\Hop`, adds it to your user
|
|||||||
PATH, and installs the Codex skill:
|
PATH, and installs the Codex skill:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
irm https://githop.xyz/hop/hop/raw/branch/main/scripts/install.ps1 | iex
|
irm https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.ps1 | iex
|
||||||
```
|
```
|
||||||
|
|
||||||
### Go install — developer path
|
### Go install — developer path
|
||||||
@@ -109,7 +109,7 @@ irm https://githop.xyz/hop/hop/raw/branch/main/scripts/install.ps1 | iex
|
|||||||
If Go 1.26 or newer is already installed:
|
If Go 1.26 or newer is already installed:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go install githop.xyz/hop/hop/cmd/hop@latest
|
go install githop.xyz/GnosysLabs/Hop/cmd/hop@latest
|
||||||
hop skill install --force
|
hop skill install --force
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ Cloning is supported, but it is the contributor/fallback path rather than the
|
|||||||
normal product installation:
|
normal product installation:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://githop.xyz/hop/hop.git
|
git clone https://githop.xyz/GnosysLabs/Hop.git
|
||||||
cd hop
|
cd hop
|
||||||
go test ./...
|
go test ./...
|
||||||
go build -trimpath -o hop ./cmd/hop
|
go build -trimpath -o hop ./cmd/hop
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"githop.xyz/hop/hop/internal/hop"
|
"githop.xyz/GnosysLabs/Hop/internal/hop"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
module githop.xyz/hop/hop
|
module githop.xyz/GnosysLabs/Hop
|
||||||
|
|
||||||
go 1.26
|
go 1.26
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ func TestProductDocumentationUsesCanonicalGiteaHost(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
text := string(contents)
|
text := string(contents)
|
||||||
if !strings.Contains(text, "githop.xyz") {
|
if !strings.Contains(text, "githop.xyz/GnosysLabs/Hop") {
|
||||||
t.Errorf("%s does not name the canonical distribution host", relative)
|
t.Errorf("%s does not name the canonical distribution host", relative)
|
||||||
}
|
}
|
||||||
if strings.Contains(text, "raw.githubusercontent.com/hop-vcs/hop") ||
|
if strings.Contains(text, "raw.githubusercontent.com/hop-vcs/hop") ||
|
||||||
|
|||||||
@@ -508,7 +508,7 @@ func TestOpenProjectInsideFinalValidationDoesNotReacquireAcceptanceLock(t *testi
|
|||||||
if openErr != nil {
|
if openErr != nil {
|
||||||
t.Fatal(openErr)
|
t.Fatal(openErr)
|
||||||
}
|
}
|
||||||
case <-time.After(2 * time.Second):
|
case <-time.After(10 * time.Second):
|
||||||
t.Fatal("OpenProject deadlocked by reacquiring the acceptance lock")
|
t.Fatal("OpenProject deadlocked by reacquiring the acceptance lock")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
hopskill "githop.xyz/hop/hop/skills/hop"
|
hopskill "githop.xyz/GnosysLabs/Hop/skills/hop"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SkillInstallResult struct {
|
type SkillInstallResult struct {
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param(
|
param(
|
||||||
[string]$GiteaUrl = $(if ($env:HOP_GITEA_URL) { $env:HOP_GITEA_URL } else { "https://githop.xyz" }),
|
[string]$GiteaUrl = $(if ($env:HOP_GITEA_URL) { $env:HOP_GITEA_URL } else { "https://githop.xyz" }),
|
||||||
[string]$Repository = $(if ($env:HOP_REPOSITORY) { $env:HOP_REPOSITORY } else { "hop/hop" }),
|
[string]$Repository = $(if ($env:HOP_REPOSITORY) { $env:HOP_REPOSITORY } else { "GnosysLabs/Hop" }),
|
||||||
[string]$Version = $(if ($env:HOP_VERSION) { $env:HOP_VERSION } else { "latest" }),
|
[string]$Version = $(if ($env:HOP_VERSION) { $env:HOP_VERSION } else { "latest" }),
|
||||||
[string]$InstallDir = $(if ($env:HOP_INSTALL_DIR) { $env:HOP_INSTALL_DIR } else { Join-Path $env:LOCALAPPDATA "Programs\Hop" }),
|
[string]$InstallDir = $(if ($env:HOP_INSTALL_DIR) { $env:HOP_INSTALL_DIR } else { Join-Path $env:LOCALAPPDATA "Programs\Hop" }),
|
||||||
[switch]$SkipSkill,
|
[switch]$SkipSkill,
|
||||||
|
|||||||
Executable → Regular
+1
-1
@@ -3,7 +3,7 @@ set -eu
|
|||||||
|
|
||||||
gitea_url=${HOP_GITEA_URL:-https://githop.xyz}
|
gitea_url=${HOP_GITEA_URL:-https://githop.xyz}
|
||||||
gitea_url=${gitea_url%/}
|
gitea_url=${gitea_url%/}
|
||||||
repository=${HOP_REPOSITORY:-hop/hop}
|
repository=${HOP_REPOSITORY:-GnosysLabs/Hop}
|
||||||
requested_version=${HOP_VERSION:-latest}
|
requested_version=${HOP_VERSION:-latest}
|
||||||
install_dir=${HOP_INSTALL_DIR:-"$HOME/.local/bin"}
|
install_dir=${HOP_INSTALL_DIR:-"$HOME/.local/bin"}
|
||||||
install_skill=${HOP_INSTALL_SKILL:-1}
|
install_skill=${HOP_INSTALL_SKILL:-1}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ New-Item -ItemType Directory -Path $fixtures, $payload | Out-Null
|
|||||||
try {
|
try {
|
||||||
$binary = Join-Path $payload "hop.exe"
|
$binary = Join-Path $payload "hop.exe"
|
||||||
& go build -trimpath `
|
& go build -trimpath `
|
||||||
-ldflags "-X githop.xyz/hop/hop/internal/hop.Version=9.9.9-installer-test" `
|
-ldflags "-X githop.xyz/GnosysLabs/Hop/internal/hop.Version=9.9.9-installer-test" `
|
||||||
-o $binary (Join-Path $root "cmd/hop")
|
-o $binary (Join-Path $root "cmd/hop")
|
||||||
if ($LASTEXITCODE -ne 0) { throw "Could not build installer test binary" }
|
if ($LASTEXITCODE -ne 0) { throw "Could not build installer test binary" }
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ try {
|
|||||||
|
|
||||||
& (Join-Path $root "scripts/install.ps1") `
|
& (Join-Path $root "scripts/install.ps1") `
|
||||||
-GiteaUrl "https://gitea.test" `
|
-GiteaUrl "https://gitea.test" `
|
||||||
-Repository "hop/hop" `
|
-Repository "GnosysLabs/Hop" `
|
||||||
-InstallDir $installDir `
|
-InstallDir $installDir `
|
||||||
-SkipSkill `
|
-SkipSkill `
|
||||||
-SkipPath
|
-SkipPath
|
||||||
|
|||||||
Executable → Regular
+2
-2
@@ -23,7 +23,7 @@ esac
|
|||||||
asset="hop_${os}_${arch}.tar.gz"
|
asset="hop_${os}_${arch}.tar.gz"
|
||||||
mkdir -p "$tmp_dir/payload" "$tmp_dir/fixtures" "$tmp_dir/mock-bin" "$tmp_dir/home"
|
mkdir -p "$tmp_dir/payload" "$tmp_dir/fixtures" "$tmp_dir/mock-bin" "$tmp_dir/home"
|
||||||
go build -trimpath \
|
go build -trimpath \
|
||||||
-ldflags '-X githop.xyz/hop/hop/internal/hop.Version=9.9.9-installer-test' \
|
-ldflags '-X githop.xyz/GnosysLabs/Hop/internal/hop.Version=9.9.9-installer-test' \
|
||||||
-o "$tmp_dir/payload/hop" "$root/cmd/hop"
|
-o "$tmp_dir/payload/hop" "$root/cmd/hop"
|
||||||
tar -czf "$tmp_dir/fixtures/$asset" -C "$tmp_dir/payload" hop
|
tar -czf "$tmp_dir/fixtures/$asset" -C "$tmp_dir/payload" hop
|
||||||
if command -v sha256sum >/dev/null 2>&1; then
|
if command -v sha256sum >/dev/null 2>&1; then
|
||||||
@@ -67,7 +67,7 @@ HOME="$tmp_dir/home" \
|
|||||||
PATH="$tmp_dir/mock-bin:$PATH" \
|
PATH="$tmp_dir/mock-bin:$PATH" \
|
||||||
HOP_TEST_FIXTURES="$tmp_dir/fixtures" \
|
HOP_TEST_FIXTURES="$tmp_dir/fixtures" \
|
||||||
HOP_GITEA_URL="https://gitea.test" \
|
HOP_GITEA_URL="https://gitea.test" \
|
||||||
HOP_REPOSITORY="hop/hop" \
|
HOP_REPOSITORY="GnosysLabs/Hop" \
|
||||||
HOP_INSTALL_DIR="$tmp_dir/home/bin" \
|
HOP_INSTALL_DIR="$tmp_dir/home/bin" \
|
||||||
HOP_MODIFY_PATH=0 \
|
HOP_MODIFY_PATH=0 \
|
||||||
sh "$root/scripts/install.sh"
|
sh "$root/scripts/install.sh"
|
||||||
|
|||||||
@@ -51,4 +51,4 @@ tracks which accepted state is physically visible, allowing safe catch-up with
|
|||||||
`hop sync` without treating a divergent folder as disposable.
|
`hop sync` without treating a divergent folder as disposable.
|
||||||
|
|
||||||
For the full product direction, read the
|
For the full product direction, read the
|
||||||
[product blueprint](https://githop.xyz/hop/hop/src/branch/main/docs/product-blueprint.md).
|
[product blueprint](https://githop.xyz/GnosysLabs/Hop/src/branch/main/docs/product-blueprint.md).
|
||||||
|
|||||||
+2
-2
@@ -27,13 +27,13 @@ visible project folder.
|
|||||||
macOS or Linux:
|
macOS or Linux:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh | sh
|
curl -fsSL https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh | sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Windows PowerShell:
|
Windows PowerShell:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
irm https://githop.xyz/hop/hop/raw/branch/main/scripts/install.ps1 | iex
|
irm https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.ps1 | iex
|
||||||
```
|
```
|
||||||
|
|
||||||
Restart Codex Desktop, open a Git project, and ask Codex to work normally. The
|
Restart Codex Desktop, open a Git project, and ask Codex to work normally. The
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ newer; they do not need a local Go toolchain.
|
|||||||
## macOS and Linux
|
## macOS and Linux
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh | sh
|
curl -fsSL https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh | sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The installer:
|
The installer:
|
||||||
@@ -21,7 +21,7 @@ The installer:
|
|||||||
Review before execution:
|
Review before execution:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSLO https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh
|
curl -fsSLO https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh
|
||||||
less install.sh
|
less install.sh
|
||||||
sh install.sh
|
sh install.sh
|
||||||
```
|
```
|
||||||
@@ -35,7 +35,7 @@ Installer options are environment variables:
|
|||||||
| `HOP_INSTALL_SKILL` | `1` | Set to `0` to skip Codex skill installation |
|
| `HOP_INSTALL_SKILL` | `1` | Set to `0` to skip Codex skill installation |
|
||||||
| `HOP_MODIFY_PATH` | `1` | Set to `0` to leave shell profiles unchanged |
|
| `HOP_MODIFY_PATH` | `1` | Set to `0` to leave shell profiles unchanged |
|
||||||
| `HOP_GITEA_URL` | `https://githop.xyz` | Gitea instance base URL |
|
| `HOP_GITEA_URL` | `https://githop.xyz` | Gitea instance base URL |
|
||||||
| `HOP_REPOSITORY` | `hop/hop` | Alternate Gitea owner/repository |
|
| `HOP_REPOSITORY` | `GnosysLabs/Hop` | Alternate Gitea owner/repository |
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ HOP_VERSION=v0.1.0 HOP_INSTALL_DIR="$HOME/bin" sh install.sh
|
|||||||
In PowerShell as your normal user:
|
In PowerShell as your normal user:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
irm https://githop.xyz/hop/hop/raw/branch/main/scripts/install.ps1 | iex
|
irm https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.ps1 | iex
|
||||||
```
|
```
|
||||||
|
|
||||||
The script verifies the Windows archive, installs to
|
The script verifies the Windows archive, installs to
|
||||||
@@ -67,7 +67,7 @@ Use `-SkipSkill` only when another agent runtime will receive the skill. Use
|
|||||||
With Go 1.26 or newer:
|
With Go 1.26 or newer:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go install githop.xyz/hop/hop/cmd/hop@latest
|
go install githop.xyz/GnosysLabs/Hop/cmd/hop@latest
|
||||||
hop skill install --force
|
hop skill install --force
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Put `$(go env GOPATH)/bin` on PATH if `hop` is not found.
|
|||||||
## Build from source
|
## Build from source
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://githop.xyz/hop/hop.git
|
git clone https://githop.xyz/GnosysLabs/Hop.git
|
||||||
cd hop
|
cd hop
|
||||||
go test ./...
|
go test ./...
|
||||||
go build -trimpath -o hop ./cmd/hop
|
go build -trimpath -o hop ./cmd/hop
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
Hop releases are built on `githop.xyz` by Gitea Actions and uploaded by
|
Hop releases are built on `githop.xyz` by Gitea Actions and uploaded by
|
||||||
GoReleaser as draft Gitea Releases.
|
GoReleaser as draft Gitea Releases.
|
||||||
|
|
||||||
The examples assume the canonical repository is `githop.xyz/hop/hop`.
|
The canonical repository is `githop.xyz/GnosysLabs/Hop`.
|
||||||
|
|
||||||
## One-time Gitea setup
|
## One-time Gitea setup
|
||||||
|
|
||||||
- Create the `hop/hop` repository and set its default branch to `main`.
|
- Create the `GnosysLabs/Hop` repository and set its default branch to `main`.
|
||||||
- Configure `origin` as `https://githop.xyz/hop/hop.git`.
|
- Configure `origin` as `https://githop.xyz/GnosysLabs/Hop.git`.
|
||||||
- Run a currently patched Gitea 1.26.x or newer, enable Actions, and enable
|
- Run a currently patched Gitea 1.26.x or newer, enable Actions, and enable
|
||||||
Actions for the repository. Hop's least-privilege workflow uses the 1.26 job
|
Actions for the repository. Hop's least-privilege workflow uses the 1.26 job
|
||||||
token permission model.
|
token permission model.
|
||||||
@@ -30,7 +30,7 @@ The examples assume the canonical repository is `githop.xyz/hop/hop`.
|
|||||||
- Add `SECURITY.md` with a monitored private disclosure address.
|
- Add `SECURITY.md` with a monitored private disclosure address.
|
||||||
- Create an offline-controlled release-signing key, publish its public key, and
|
- Create an offline-controlled release-signing key, publish its public key, and
|
||||||
add detached signing for `checksums.txt` before general availability.
|
add detached signing for `checksums.txt` before general availability.
|
||||||
- Confirm the `githop.xyz/hop/hop` Go import path serves valid `go-import`
|
- Confirm the `githop.xyz/GnosysLabs/Hop` Go import path serves valid `go-import`
|
||||||
metadata.
|
metadata.
|
||||||
- Back up the Gitea database, repositories, release attachments, and Actions
|
- Back up the Gitea database, repositories, release attachments, and Actions
|
||||||
secrets.
|
secrets.
|
||||||
|
|||||||
@@ -5,20 +5,20 @@
|
|||||||
Rerun the installer. It replaces the binary and refreshes the embedded skill:
|
Rerun the installer. It replaces the binary and refreshes the embedded skill:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh | sh
|
curl -fsSL https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh | sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Pin a release when required:
|
Pin a release when required:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://githop.xyz/hop/hop/raw/branch/main/scripts/install.sh | \
|
curl -fsSL https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.sh | \
|
||||||
HOP_VERSION=v0.1.0 sh
|
HOP_VERSION=v0.1.0 sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Windows:
|
Windows:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
irm https://githop.xyz/hop/hop/raw/branch/main/scripts/install.ps1 -OutFile install.ps1
|
irm https://githop.xyz/GnosysLabs/Hop/raw/branch/main/scripts/install.ps1 -OutFile install.ps1
|
||||||
.\install.ps1 -Version v0.1.0
|
.\install.ps1 -Version v0.1.0
|
||||||
Remove-Item install.ps1
|
Remove-Item install.ps1
|
||||||
```
|
```
|
||||||
@@ -36,7 +36,7 @@ Restart Codex Desktop when the installed skill changed.
|
|||||||
## Upgrade Go installations
|
## Upgrade Go installations
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go install githop.xyz/hop/hop/cmd/hop@latest
|
go install githop.xyz/GnosysLabs/Hop/cmd/hop@latest
|
||||||
hop skill install --force
|
hop skill install --force
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user