Skip to content

0.9.11: skipped repos in multi-edit, DEPLOY STATUS - #391

Merged
cvince merged 10 commits into
mainfrom
vince/0.9.11
Oct 5, 2026
Merged

cvince merged 10 commits into
mainfrom
vince/0.9.11

Conversation

@cvince

@cvince cvince commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Multi-edit lists repos that needed no PR under Skipped. capy edit STATUS gains needs deploy; capy secrets gets a DEPLOY STATUS column with (n of m) counts and a tabbed locations table in the details view; honest deploy wording.

cvince added 10 commits October 4, 2026 11:24
A multi-edit only opens a PR in a repo where something changed. Repos
where every location already had the value, or whose keep.lock on the
base branch was already up to date, used to vanish from the confirmation.
They are now listed under a "Skipped" heading with a one-line
description, repo names grey in a terminal (plain for agents).

`capy secrets set --json` gains `skipped` (only when non-empty).
…rets

MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- capy edit STATUS gains 'not deployed': in sync, but a deploy target holds
  an older value (deployed_value_hash != value hash). Priority: conflict >
  local/remote > not deployed > in sync. Targets read from the server's keep
  file (CI-mode records live there), local keep.lock as fallback.
- capy secrets gets a STATUS column; Tab order is now PROJECT > BRANCH >
  STATUS > CONNECTOR > TARGET > INTEGRATIONS > USERS (PROJECT default).
  Multi-target rows read 'not deployed (1 of 3)'; details view shows it.
- --json: rows gain status (+ targets_not_deployed/targets_total), targets
  gain up_to_date. Existing fields unchanged.
- Deploy PR body no longer calls merging 'the deploy signal'; result line
  says 'pushed to <target>' / 'pushed, release not triggered'.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Shared ui/statusBadge.ts: the '● status' badge both screens use
  (in sync green, local/not deployed yellow, remote cyan, conflict red,
  unknown dim). EditScreen.statusBadge delegates to it.
- capy secrets STATUS cell and details-view status use the badge;
  'not deployed (1 of 3)' gets the yellow dot too. A lagging target in the
  details view is yellow.
- The highlighted row is re-highlighted after a coloured cell's reset.
- JSON unchanged (plain strings).
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- capy secrets: the column, Tab label and details label read DEPLOY STATUS
  (Vince, 2026-10-04). capy edit keeps STATUS.
- A row with no Capy deploy target shows a grey — instead of in sync:
  Capy only knows its own targets.
- --json: status gains the additive value 'no target' for such rows.
…tant

- On-screen words live in one constant each (core/deployStatus.ts):
  BEHIND_LABEL, TARGET_STATUS_HEADING, NO_TARGET_LABEL. Both are
  COPY-FLAG while the wording is re-decided. Internal status code and the
  JSON value are now 'behind', independent of the label.
- A target in .capy/deploy.json on origin/<default branch> that has never
  received a push counts as behind: capy edit reads it directly; after a
  bare capy sync, recordConfiguredTargets adds a hashless placeholder
  record to the SERVER keep (one write per branch, only when missing, never
  on --dry-run, best-effort). The server index already reports a hashless
  record as stale. The first real capy deploy replaces it.
- TargetDelivery.deployed_value_hash / deployed_at are optional (absent on
  a placeholder).
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Final wording (Vince, 2026-10-04): capy secrets DEPLOY STATUS shows
  deployed (green), not deployed (yellow, '(1 of 3)' for multi-target),
  grey — for no Capy target, unknown. capy edit keeps in sync.
- --json status follows the words: deployed / not deployed / no target /
  unknown.
- capy edit counts a configured, never-pushed target as not deployed
  (read-only, from .capy/deploy.json on origin/<default>).
- The automatic server placeholder record (recordConfiguredTargets) is
  held until approved: its call in capyCommand.ts is removed; the module
  and its tests stay.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- BEHIND_LABEL is 'needs deploy' (Vince, 2026-10-04) in capy secrets and
  capy edit.
- capy secrets DEPLOY STATUS counts LOCATIONS, not targets: needs deploy
  when any location has a lagging target, else deployed when some location
  has only current targets, else —. '(n of m)' when not every location is
  in that state, e.g. 'deployed (1 of 33)'.
- --json: status 'needs deploy'; status_locations / locations_total replace
  the unreleased targets_not_deployed / targets_total.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- LOCATION (project · branch, protected marker) · a Tab-switched middle
  column (DEPLOY STATUS → CONNECTOR → TARGET, Shift-Tab back, wrapping;
  DEPLOY STATUS first) · UPDATED.
- DEPLOY STATUS per location: deployed / needs deploy badges, grey — for
  no target. TARGET lists [provider] target, a lagging one marked in
  yellow; — if none.
- Padded by visible width; when narrow the project name shrinks first so
  the branch stays readable, then the middle column.
- Tab was unbound in the details view; the main table column is untouched.
  Footer hint adds 'tab column' (existing words from the list footer).
UPDATED is flush with the right edge and the middle column takes the
slack; LOCATION still gives way first when narrow. Tests pin every
column's values to the x position of its header.
mainTableLayout(available) is the one source of the list's column widths.
The locations table uses it: its middle and UPDATED columns start at the
list's x positions with the list's widths, and LOCATION fills the NAME
column less the details indent. Tests compare the offsets at 80/120/160
columns in all three middle-column modes.
@cvince
cvince merged commit d480bcb into main Oct 5, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant