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
11 changes: 5 additions & 6 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"features": {
"ghcr.io/devcontainers-extra/features/mise:1": {
"version": "1.0.0",
"resolved": "ghcr.io/devcontainers-extra/features/mise@sha256:5c389ab1e3c8e44e5e0ff119f6868d54dbb781bc860bd8587dc66209cb8c4a8c",
"integrity": "sha256:5c389ab1e3c8e44e5e0ff119f6868d54dbb781bc860bd8587dc66209cb8c4a8c"
},
"ghcr.io/devcontainers/features/node:2": {
"version": "2.1.0",
"resolved": "ghcr.io/devcontainers/features/node@sha256:586c9a6f7dd40bd3ba2cd41e7f2f88dcc31fbe5d1442afcbf07ffbc66b686857",
Expand All @@ -10,12 +15,6 @@
"resolved": "ghcr.io/skevetter/features/curl@sha256:51d9731e398d4d80fb0adf41725f3fb141186f7e28b3bb000a737abcdc8dace4",
"integrity": "sha256:51d9731e398d4d80fb0adf41725f3fb141186f7e28b3bb000a737abcdc8dace4"
},
"ghcr.io/skevetter/features/go-task:1": {
"version": "1.0.0",
"resolved": "ghcr.io/skevetter/features/go-task@sha256:347d13ba8faa01a1073d237eae5fe21897cad4bfe2cd6404a97cdda466812c71",
"integrity": "sha256:347d13ba8faa01a1073d237eae5fe21897cad4bfe2cd6404a97cdda466812c71",
"dependsOn": ["ghcr.io/skevetter/features/picolayer:1"]
},
"ghcr.io/skevetter/features/picolayer:1": {
"version": "1.0.1",
"resolved": "ghcr.io/skevetter/features/picolayer@sha256:0e3ba730535d31b899c5e6d55c3aa9392c593b9ac636692c08c6fa6396d87885",
Expand Down
5 changes: 3 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"image": "mcr.microsoft.com/devcontainers/go:1.26",
"features": {
"ghcr.io/skevetter/features/go-task:1": {},
"ghcr.io/devcontainers-extra/features/mise:1": {},
"ghcr.io/skevetter/features/prek:1": {},
"ghcr.io/skevetter/features/uv:1": {},
"ghcr.io/devcontainers/features/node:2": {
"version": "24"
}
}
},
"postCreateCommand": "mise trust && mise install"
}
13 changes: 4 additions & 9 deletions .github/workflows/act.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,8 @@ jobs:
with:
node-version: "24"

- name: setup Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
go-version-file: go.mod

- name: install task
run: go install github.com/go-task/task/v3/cmd/task@latest
- name: setup mise tools
uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3

- name: install goreleaser
uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7
Expand All @@ -39,7 +34,7 @@ jobs:
run: docker version && docker ps -a

- name: build test binary
run: task cli:test:e2e:build
run: mise run cli:test:e2e:build

- name: generate GitHub App token
id: app-token
Expand All @@ -61,7 +56,7 @@ jobs:
KUBECONFIG="${KUBECONFIG:-$HOME/.kube/config}" \
PATH="${PATH}" \
GOROOT="${GOROOT}" \
${{ github.event.inputs.test_focus == '' && 'task cli:test:e2e' || format('task cli:test:e2e:focus -- "{0}"', github.event.inputs.test_focus) }}
${{ github.event.inputs.test_focus == '' && 'mise run cli:test:e2e' || format('mise run cli:test:e2e:focus -- "{0}"', github.event.inputs.test_focus) }}

build-ui:
name: Build User Interface
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/devcontainer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ on:
runCmd:
description: "Command to run inside the devcontainer"
required: false
default: for c in go task prek uv node; do command -v "$c" >/dev/null 2>&1 || { echo "missing $c" >&2; exit 1; }; done
default: for c in go mise prek uv node; do command -v "$c" >/dev/null 2>&1 || { echo "missing $c" >&2; exit 1; }; done

permissions:
contents: read

env:
DEFAULT_RUN_CMD: for c in go task prek uv node; do command -v "$c" >/dev/null 2>&1 || { echo "missing $c" >&2; exit 1; }; done
DEFAULT_RUN_CMD: for c in go mise prek uv node; do command -v "$c" >/dev/null 2>&1 || { echo "missing $c" >&2; exit 1; }; done

jobs:
build:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ jobs:
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- uses: j178/prek-action@4e14d07f9231acabce116ccfca13b13dd9755ece # v3.0.0
- uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3

- run: prek run --all-files

agent-skill:
name: Agent Skill
Expand Down
1 change: 0 additions & 1 deletion .golangci-version

This file was deleted.

77 changes: 0 additions & 77 deletions .pre-commit-config.yaml

This file was deleted.

32 changes: 16 additions & 16 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,21 @@ Toolchain is managed by mise. Install mise using `curl https://mise.run | sh`. I

## Common Developer Commands

`task --list` shows developer commands. The most common tasks:
`mise tasks` shows developer commands. The most common tasks:

### CLI (Go) Development

- **Tidy Go modules**: `task cli:tidy`
- **Lint CLI**: `task cli:lint` and `task cli:lint:ci` (or `task cli:lint:fix` to apply fixes)
- **Format CLI**: `task cli:format`
- **Run unit tests**: `task cli:test` (writes coverage to `dist/profile.out`; a `dist` directory is required, e.g. `mkdir -p dist`)
- **Build development binary**: `task cli:build:dev` (output under `dist/devsy-dev_linux_amd64_v1/`)
- **Tidy Go modules**: `mise run cli:tidy`
- **Lint CLI**: `mise run cli:lint` and `mise run cli:lint:ci` (or `mise run cli:lint:fix` to apply fixes)
- **Format CLI**: `mise run cli:format`
- **Run unit tests**: `mise run cli:test` (writes coverage to `dist/profile.out`; a `dist` directory is required, e.g. `mkdir -p dist`)
- **Build development binary**: `mise run cli:build:dev` (output under `dist/devsy-dev_linux_amd64_v1/`)

### Desktop (Electron/Svelte 5) Development

- **Verify desktop code quality**: `task desktop:check` (Svelte check and TypeScript compiler)
- **Run desktop unit tests**: `task desktop:test`
- **Run desktop E2E (Playwright) tests**: `task desktop:test:e2e`
- **Verify desktop code quality**: `mise run desktop:check` (Svelte check and TypeScript compiler)
- **Run desktop unit tests**: `mise run desktop:test`
- **Run desktop E2E (Playwright) tests**: `mise run desktop:test:e2e`

### Local Development: Agent Binary URL (`DEVSY_AGENT_URL`)

Expand All @@ -42,7 +42,7 @@ Local setup:

```bash
# 1. Build the agent binary for the workspace's Linux arch (output: dist/devsy-dev_linux_amd64_v1/devsy-linux-amd64).
task cli:build:dev
mise run cli:build:dev

# 2. Serve the built binary over HTTP.
mkdir -p bin
Expand All @@ -64,18 +64,18 @@ The agent binary runs inside the (Linux) workspace, so it is a Linux binary (`de
Desktop tests run inside an Electron browser environment. In headless or container environments, Electron commands require an `xvfb-run` prefix to emulate a display server:

```bash
xvfb-run task desktop:test # Desktop unit tests headlessly
xvfb-run mise run desktop:test # Desktop unit tests headlessly

xvfb-run task desktop:test:e2e # Desktop E2E tests headlessly
xvfb-run mise run desktop:test:e2e # Desktop E2E tests headlessly
```

### E2E (Ginkgo) Tests

Devsy uses [Ginkgo](https://onsi.github.io/ginkgo/) for Go E2E and integration tests.

- **All E2E tests**: `task cli:test:e2e`
- **A focused test suite**: `task cli:test:e2e:suite -- "suite-name"`
- **A specific test pattern**: `task cli:test:e2e:focus -- "test-pattern"`
- **All E2E tests**: `mise run cli:test:e2e`
- **A focused test suite**: `mise run cli:test:e2e:suite "suite-name"`
- **A specific test pattern**: `mise run cli:test:e2e:focus "test-pattern"`

---

Expand All @@ -86,7 +86,7 @@ Devsy uses [Ginkgo](https://onsi.github.io/ginkgo/) for Go E2E and integration t
- **Idiomatic**: Focus on simplicity, reliability, and efficiency when writing clear, idiomatic Go code.
- **Style Guide**: Use the Uber style guide https://github.com/uber-go/guide/blob/master/style.md.
- **Unit Testing**: Prefer using [testify suite](https://github.com/stretchr/testify#suite-package) (`testify/suite`) for writing unit tests.
- **Linter**: `golangci-lint` via `task cli:lint` (or `task cli:lint:fix`). Run `task cli:lint:ci` before pushing changes.
- **Linter**: `golangci-lint` via `mise run cli:lint` (or `mise run cli:lint:fix`). Run `mise run cli:lint:ci` before pushing changes.

### TypeScript / Svelte Code Style

Expand Down
Loading
Loading