feat: live Repo/CI panel, env.local overrides (0.3.0)
- `devdesk attach --repo NAME` / `devdesk repo NAME`: git state of the session's folder (branch, ahead/behind, uncommitted changes) plus the Gitea commit status of HEAD and open PR count. Uses the anonymous API for public repos, or /etc/devdesk/gitea-token when present. Runs over the ttyd channel, so no sidecar is needed. The panel links to the repo, the CI run and PRs, and a notification fires when HEAD's CI finishes while the tab is in the background. - /etc/devdesk/env.local is read after the packaged env and never shipped, so upgrades no longer stop at a conffile prompt. - Hooks and status line only record for panes on DevDesk's own tmux server; the Claude wrapper re-reads env before every launch (so the Remote Control toggle applies on the next Claude restart). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -211,6 +211,41 @@ claude_args() {
|
||||
[ ! -e "$DEVDESK_STATE_DIR/context/stranger.json" ]
|
||||
}
|
||||
|
||||
@test "repo reports git state and recognises Gitea remotes" {
|
||||
export DEVDESK_GITEA_URL=http://127.0.0.1:9 # nothing listens: CI lookups fail fast
|
||||
repo="$DEVDESK_PROJECTS_ROOT/alpha"
|
||||
git -C "$repo" init -q -b main
|
||||
git -C "$repo" -c user.name=t -c user.email=t@t commit -q --allow-empty -m init
|
||||
git -C "$repo" remote add origin gitea@10.10.10.63:LotusGuild/alpha.git
|
||||
touch "$repo/new-file"
|
||||
run devdesk attach --repo alpha
|
||||
[ "$status" -eq 0 ]
|
||||
[ "$(jq -r '.git' <<<"$output")" = true ]
|
||||
[ "$(jq -r '.branch' <<<"$output")" = main ]
|
||||
[ "$(jq -r '.dirty' <<<"$output")" = 1 ]
|
||||
[ "$(jq -r '.repo' <<<"$output")" = LotusGuild/alpha ]
|
||||
[ "$(jq -r '.ci' <<<"$output")" = null ]
|
||||
git -C "$repo" remote set-url origin https://127.0.0.1:9/LotusGuild/alpha-https.git
|
||||
run devdesk repo alpha
|
||||
[ "$(jq -r '.repo' <<<"$output")" = LotusGuild/alpha-https ]
|
||||
git -C "$repo" remote set-url origin https://github.com/someone/else.git
|
||||
run devdesk repo alpha
|
||||
[ "$(jq -r '.repo' <<<"$output")" = null ]
|
||||
run devdesk repo main
|
||||
[ "$(jq -r '.git' <<<"$output")" = false ]
|
||||
}
|
||||
|
||||
@test "env.local overrides the packaged env" {
|
||||
mkdir -p "$TMP/etc" "$DEVDESK_PROJECTS_ROOT/alpha/ops"
|
||||
printf 'DEVDESK_DEFAULT_DIR=%s\n' "$DEVDESK_PROJECTS_ROOT" >"$TMP/etc/env"
|
||||
printf 'DEVDESK_DEFAULT_DIR=%s\n' "$DEVDESK_PROJECTS_ROOT/alpha/ops" >"$TMP/etc/env.local"
|
||||
export DEVDESK_ENV="$TMP/etc/env"
|
||||
start_server
|
||||
devdesk new adhoc
|
||||
run tmux -S "$DEVDESK_SOCKET" display -p -t =adhoc:claude '#{pane_current_path}'
|
||||
[ "$output" = "$DEVDESK_PROJECTS_ROOT/alpha/ops" ]
|
||||
}
|
||||
|
||||
@test "web actions run through attach and answer with JSON" {
|
||||
start_server
|
||||
run devdesk attach --new web1 alpha
|
||||
|
||||
Reference in New Issue
Block a user