Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:
if [ "$GOOS" = "windows" ]; then
output="${output}.exe"
fi
go build -trimpath -ldflags "-s -w -X github.com/ghostable-dev/ghostable/internal/app.version=ci" -o "$output" ./cmd/ghostable
go build -trimpath -ldflags "-s -w -X github.com/ghostable-dev/ghostable/v3/internal/app.version=ci" -o "$output" ./cmd/ghostable

native-platform-smoke:
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -122,7 +122,7 @@ jobs:
binary="${binary}.exe"
fi

go build -trimpath -ldflags "-s -w -X github.com/ghostable-dev/ghostable/internal/app.version=ci" -o "$binary" ./cmd/ghostable
go build -trimpath -ldflags "-s -w -X github.com/ghostable-dev/ghostable/v3/internal/app.version=ci" -o "$binary" ./cmd/ghostable
"$binary" --help
"$binary" version

Expand Down
10 changes: 7 additions & 3 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ builds:
flags:
- -trimpath
ldflags:
- -s -w -X github.com/ghostable-dev/ghostable/internal/app.version={{ .Version }}
- -s -w -X github.com/ghostable-dev/ghostable/v3/internal/app.version={{ .Version }}

archives:
- id: ghostable
Expand Down Expand Up @@ -86,9 +86,12 @@ release:
github:
owner: ghostable-dev
name: ghostable
name_template: "{{ .Tag }} Release"
prerelease: auto
make_latest: '{{ if .Prerelease }}false{{ else }}true{{ end }}'

npms:
- name: "@ghostable/beta"
- name: "@ghostable/cli"
ids:
- ghostable-npm
description: "Local-first encrypted environment management CLI"
Expand All @@ -105,7 +108,7 @@ npms:
repository: "https://github.com/ghostable-dev/ghostable"
bugs: "https://github.com/ghostable-dev/ghostable/issues"
access: public
tag: latest
tag: '{{ if .Prerelease }}next{{ else }}latest{{ end }}'
format: tar.gz
disable: '{{ not (isEnvSet "NPM_TOKEN") }}'

Expand All @@ -127,3 +130,4 @@ homebrew_casks:
name: ghostable-release-bot
email: release-bot@ghostable.dev
commit_msg_template: "Update ghostable Homebrew cask to {{ .Tag }}"
skip_upload: auto
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

[![Release](https://img.shields.io/github/v/release/ghostable-dev/ghostable?sort=semver)](https://github.com/ghostable-dev/ghostable/releases/latest)
[![Downloads](https://img.shields.io/github/downloads/ghostable-dev/ghostable/total?label=downloads)](https://github.com/ghostable-dev/ghostable/releases)
[![npm](https://img.shields.io/npm/v/@ghostable/beta?label=npm)](https://www.npmjs.com/package/@ghostable/beta)
[![npm downloads](https://img.shields.io/npm/dm/@ghostable/beta?label=npm%20downloads)](https://www.npmjs.com/package/@ghostable/beta)
[![npm](https://img.shields.io/npm/v/@ghostable/cli?label=npm)](https://www.npmjs.com/package/@ghostable/cli)
[![npm downloads](https://img.shields.io/npm/dm/@ghostable/cli?label=npm%20downloads)](https://www.npmjs.com/package/@ghostable/cli)
[![CI](https://img.shields.io/github/actions/workflow/status/ghostable-dev/ghostable/ci.yml?branch=main&label=ci)](https://github.com/ghostable-dev/ghostable/actions/workflows/ci.yml)
[![License](https://img.shields.io/github/license/ghostable-dev/ghostable)](LICENSE)
[![macOS](https://img.shields.io/badge/macOS-signed%20%26%20notarized-2ea44f)](https://github.com/ghostable-dev/ghostable/releases/latest)
Expand All @@ -21,8 +21,8 @@ file-backed identity store otherwise.

## Security Status

Ghostable is beta security software and has not completed an external security
audit. The repository includes a public [security policy](SECURITY.md), a
Ghostable has not completed an external security audit. The repository includes
a public [security policy](SECURITY.md), a
[threat model](docs/security/threat-model.md), and stable
[test vectors](docs/security/test-vectors.md) so developers can inspect the
claims and reproduce the critical cryptographic checks.
Expand All @@ -49,12 +49,18 @@ brew install --cask ghostable
Node/npm projects:

```sh
npm install @ghostable/beta
npm install @ghostable/cli
```

This installs a project-local `ghostable` binary at
`node_modules/.bin/ghostable`.

When available, release candidates use npm's `next` tag:

```sh
npm install @ghostable/cli@next
```

Other platforms can download the matching archive from the
[latest release](https://github.com/ghostable-dev/ghostable/releases/latest) and put
the `ghostable` binary on `PATH`.
Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ restrictive file-backed identity store otherwise.

## Security Status

Ghostable is beta software and has not completed an external security audit.
Ghostable has not completed an external security audit.
The current assurance evidence is repository-visible: focused security tests,
documented test vectors, and the public threat model in
`docs/security/threat-model.md`. Do not treat the current release as formally
Expand Down
2 changes: 1 addition & 1 deletion cmd/ghostable/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package main
import (
"os"

"github.com/ghostable-dev/ghostable/internal/app"
"github.com/ghostable-dev/ghostable/v3/internal/app"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion docs/security/test-vectors.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The fixture file `docs/security/test-vectors.json` contains deterministic
vectors for security-sensitive compatibility checks. These vectors are public
evidence for developers reviewing the beta security design; they are not an
evidence for developers reviewing the security design; they are not an
external audit.

The vectors cover:
Expand Down
2 changes: 1 addition & 1 deletion docs/security/threat-model.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Ghostable Threat Model

This threat model documents the current beta security design. It is not a
This threat model documents the current security design. It is not a
substitute for an external audit.

## Assets
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/ghostable-dev/ghostable
module github.com/ghostable-dev/ghostable/v3

go 1.25.10

Expand Down
2 changes: 1 addition & 1 deletion internal/app/adopt.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"io"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
)

type adoptSection struct {
Expand Down
4 changes: 2 additions & 2 deletions internal/app/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"path/filepath"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

const agentsBlockStart = "<!-- ghostable:start -->"
Expand Down
4 changes: 2 additions & 2 deletions internal/app/agent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestRunAccessCreateCreatesToken(t *testing.T) {
Expand Down
6 changes: 3 additions & 3 deletions internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import (
"strconv"
"strings"

"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

var version = "dev"
Expand Down
2 changes: 1 addition & 1 deletion internal/app/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/manifoldco/promptui"
)

Expand Down
2 changes: 1 addition & 1 deletion internal/app/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
)

func (r *Runner) runDeploy(args []string) error {
Expand Down
4 changes: 2 additions & 2 deletions internal/app/deploy_laravel_cloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"strings"
"time"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

const cloudCommandTimeout = 2 * time.Minute
Expand Down
6 changes: 3 additions & 3 deletions internal/app/deploy_laravel_forge.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (
"strings"
"time"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/dotenv"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/dotenv"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

const forgeCommandTimeout = 2 * time.Minute
Expand Down
4 changes: 2 additions & 2 deletions internal/app/deploy_laravel_providers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestRunDeployCloudInvokesLaravelCloudCLI(t *testing.T) {
Expand Down
8 changes: 4 additions & 4 deletions internal/app/deploy_laravel_vapor.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import (
"strings"
"time"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/dotenv"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/dotenv"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

const vaporCommandTimeout = 2 * time.Minute
Expand Down
2 changes: 1 addition & 1 deletion internal/app/deploy_laravel_vapor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestRunDeployVaporDryRunUsesEnvironmentVariables(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion internal/app/deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestRunDeployWritesEnvironmentToDotenv(t *testing.T) {
Expand Down
8 changes: 4 additions & 4 deletions internal/app/device.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import (
"sort"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

var deviceCommandOptions = []commandOption{
Expand Down
6 changes: 3 additions & 3 deletions internal/app/device_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestPrintAccessDeviceRowsStripsTerminalControlSequences(t *testing.T) {
Expand Down
8 changes: 4 additions & 4 deletions internal/app/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import (
"strings"
"time"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/dotenv"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/dotenv"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

var envCommandOptions = []commandOption{
Expand Down
4 changes: 2 additions & 2 deletions internal/app/env_clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"path/filepath"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

type envCleanResult struct {
Expand Down
8 changes: 4 additions & 4 deletions internal/app/env_run.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import (
"sort"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/internal/validation"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/validation"
)

type envRunRequest struct {
Expand Down
2 changes: 1 addition & 1 deletion internal/app/env_shell.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"runtime"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
)

var resolveEnvShellCommand = defaultEnvShellCommand
Expand Down
6 changes: 3 additions & 3 deletions internal/app/env_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import (
"strings"
"testing"

"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestRunEnvCreatePromptsForEnvironmentType(t *testing.T) {
Expand Down
12 changes: 6 additions & 6 deletions internal/app/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import (
"sort"
"strings"

"github.com/ghostable-dev/ghostable/internal/cli"
"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/dotenv"
"github.com/ghostable-dev/ghostable/internal/review"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/internal/validation"
"github.com/ghostable-dev/ghostable/v3/internal/cli"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/dotenv"
"github.com/ghostable-dev/ghostable/v3/internal/review"
"github.com/ghostable-dev/ghostable/v3/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/validation"
)

var exampleCommandOptions = []commandOption{
Expand Down
6 changes: 3 additions & 3 deletions internal/app/example_hygiene_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (
"testing"
"time"

"github.com/ghostable-dev/ghostable/internal/domain"
"github.com/ghostable-dev/ghostable/internal/prompt"
"github.com/ghostable-dev/ghostable/internal/store"
"github.com/ghostable-dev/ghostable/v3/internal/domain"
"github.com/ghostable-dev/ghostable/v3/internal/prompt"
"github.com/ghostable-dev/ghostable/v3/internal/store"
)

func TestRunExampleGenerateDiscoversStoredSchemaAndCodeKeys(t *testing.T) {
Expand Down
Loading
Loading