Skip to content

Release v1.1.0#17

Merged
lukekim merged 7 commits into
trunkfrom
release/v1.1.0
May 3, 2026
Merged

Release v1.1.0#17
lukekim merged 7 commits into
trunkfrom
release/v1.1.0

Conversation

@lukekim
Copy link
Copy Markdown
Contributor

@lukekim lukekim commented May 3, 2026

Summary

Cuts v1.1.0 of the action — the first minor release after the v1.0.0 launch a few hours ago. Stacks on #16 (`feat: secrets input accepts a map; log per-call API response time`); merge that first, then this one rebases cleanly to a single 2-file diff.

Changes in this PR

  • `package.json`: `1.0.0` → `1.1.0`
  • `CHANGELOG.md`: collapse `[Unreleased]` into a `## [1.1.0] — 2026-05-03` section with explicit Breaking changes / Added / Changed / Fixed buckets, and add a fresh empty `[Unreleased]` header.

Why `1.1.0` (minor, not patch, not major)

  • Net additive features since `v1.0.0` (`org`, `flight-url`, `dataset-ready-timeout-seconds` inputs; `datasets` output; auto-captured `repository` tag; per-call API timing logs) — clearly more than a patch.
  • The two breaking pieces (`secrets` shape, tighter tag-value validation) only affect inputs that shipped a few hours ago in v1.0.0; the CHANGELOG "Breaking changes" section names the exact migration in code-block diffs, which is more useful to consumers than a fresh `v2.0.0` tag right after `v1.0.0`.

Ship sequence after merge

```bash
git tag v1.1.0
git push origin v1.1.0
```

The existing release workflow (`/.github/workflows/release.yml`) then:

  • Verifies `dist/` is up to date.
  • Force-moves the floating `v1` tag to `v1.1.0`.
  • Creates a GitHub release using the `[1.1.0]` body from `CHANGELOG.md`.

Test plan

  • `npm run all` passes locally — lint, typecheck, 107 tests, build, dist freshness all green.
  • CI green on this PR.
  • After merge: tag `v1.1.0` and confirm the floating `v1` tag advances + the GitHub release is created with the changelog body.

Stacking note

Diff against trunk currently includes #16's content + the version bump. Once #16 lands, GitHub auto-rebases this PR and the diff drops to 2 files (`package.json` and `CHANGELOG.md`). If GitHub doesn't auto-rebase, I'll do it manually after #16 merges.

lukekim added 4 commits May 2, 2026 18:01
Three changes from the latest deploy run feedback.

1. Map-shaped `secrets` input
   Mirror the `tags` refactor: accept a YAML block mapping (the canonical
   workflow form) or a JSON object string, instead of multi-line
   `KEY=VALUE` lines. Same key validation as before — must start with a
   letter or underscore, alphanumeric + underscores only — and secret
   values can still contain any characters. Each value is added to the
   runner's secret-mask list before any API call.

2. Per-call API response time
   Every Spice Cloud Management API call now logs
   `<METHOD> <path> → <status> <statusText> (<durationMs>ms)` so the
   user can see each request's latency inline. Network failures log
   `<METHOD> <path> → network error in <durationMs>ms: <message>`.
   Removed the redundant pre-call path logs in deploy.ts that the
   timing line now covers.

3. Branch missing from step summary
   The list-deployments endpoint sometimes returns Deployment objects
   without `branch` even when the create request set it. The summary
   now falls back to the `branch` and `commit-sha` inputs we sent so
   the right values surface even when the API echoes them inconsistently.

Tests: 107 passing (up from 101). New cases cover the YAML and JSON
secret forms (incl. quote-stripping, special characters in values, and
JSON validation) and the post-rebuild `dist/` round-trip.
- package.json: 1.0.0 → 1.1.0.
- CHANGELOG.md: collapse the [Unreleased] block into a [1.1.0] section
  dated 2026-05-03, with explicit Breaking changes / Added / Changed /
  Fixed buckets. Added an empty [Unreleased] header for future entries.

The release rolls up everything since v1.0.0:

- Breaking: secrets input switched from KEY=VALUE to YAML/JSON map
  (matches `tags`); tag-value validation tightened to alphanumeric +
  `_@-` only.
- Added: `org`, `flight-url`, `dataset-ready-timeout-seconds` inputs;
  `datasets` output; auto-captured `repository` tag; per-call
  `<METHOD> <path> → <status> (<ms>ms)` API timing in logs.
- Changed: action runtime bumped from Node 20 to Node 24.
- Fixed: app-url URL pattern, SQL probe gRPC connection, api-key field
  names, step-summary branch fallback, punycode deprecation warning,
  action.yml `${{ … }}` example evaluation bug.
- package.json: 1.0.0 → 1.1.0.
- CHANGELOG.md: collapse the [Unreleased] block into a [1.1.0] section
  dated 2026-05-03, with explicit Breaking changes / Added / Changed /
  Fixed buckets. Added an empty [Unreleased] header for future entries.

The release rolls up everything since v1.0.0:

- Breaking: secrets input switched from KEY=VALUE to YAML/JSON map
  (matches `tags`); tag-value validation tightened to alphanumeric +
  `_@-` only.
- Added: `org`, `flight-url`, `dataset-ready-timeout-seconds` inputs;
  `datasets` output; auto-captured `repository` tag; per-call
  `<METHOD> <path> → <status> (<ms>ms)` API timing in logs.
- Changed: action runtime bumped from Node 20 to Node 24.
- Fixed: app-url URL pattern, SQL probe gRPC connection, api-key field
  names, step-summary branch fallback, punycode deprecation warning,
  action.yml `${{ … }}` example evaluation bug.
Copilot AI review requested due to automatic review settings May 3, 2026 01:44
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Cuts the v1.1.0 release of the GitHub Action, updating the secrets input format, improving step summary accuracy, and adding per-request API timing logs, alongside the version bump and changelog rollup.

Changes:

  • Update secrets parsing to accept YAML block maps or JSON objects, and refresh docs/examples/tests accordingly.
  • Add per-call API timing logs and improve summary output by falling back to input branch / commit-sha when the API omits them.
  • Bump package version to 1.1.0 and consolidate changelog into a 1.1.0 release section.

Reviewed changes

Copilot reviewed 11 out of 13 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/secrets.ts Implements YAML/JSON secret-map parsing and masking behavior.
src/main.ts Improves step summary to fall back to provided inputs for branch/commit.
src/deploy.ts Reduces log noise by removing explicit endpoint strings from logs.
src/api.ts Adds per-request timing/status logging for Management API calls.
package.json Bumps package version to 1.1.0.
examples/full.yml Updates example workflow to use KEY: VALUE secrets format.
action.yml Updates secrets input docs to reflect YAML/JSON map formats.
tests/secrets.test.ts Adds/updates tests for new secrets parsing behavior (YAML + JSON).
tests/deploy.test.ts Updates deploy test to pass secrets in the new format.
README.md Updates README examples/inputs table for new secrets format.
CHANGELOG.md Promotes unreleased notes into a 1.1.0 section with categorized entries.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main.ts Outdated
Comment thread src/secrets.ts Outdated
Comment thread src/api.ts
Comment thread src/api.ts
lukekim added 2 commits May 2, 2026 18:55
- src/main.ts: Use a length-aware fallback (deployment.branch?.length
  ? deployment.branch : inputs.branch ?? "") so the step summary still
  falls back when the API returns an empty string, while documenting
  why we treat empty-string as equivalent to missing here.
- src/secrets.ts: Stop calling `.trim()` on secret values. Strip only
  the leading whitespace separator after `:` and a matching pair of
  outer quotes; trailing whitespace and inner whitespace are preserved
  verbatim. Also pass the un-trimmed raw input to parseBlockMap so a
  trailing space on the last line isn't lost. Whitespace-significant
  values still need quoting to make the boundaries explicit.
- src/api.ts: Move the timing log to AFTER the response body is read
  so the duration reflects true end-to-end request latency, not just
  time-to-first-byte. Body-read errors retry on the next attempt and
  fail with a clear `Failed to read response body for …` message on
  exhaustion.

New tests cover trailing whitespace preserved in unquoted secret
values, leading whitespace preserved inside quoted secret values, and
multiple-spaces-after-colon handling.
@lukekim lukekim self-assigned this May 3, 2026
@lukekim lukekim merged commit 400feb6 into trunk May 3, 2026
4 checks passed
@lukekim lukekim deleted the release/v1.1.0 branch May 3, 2026 02:00
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.

2 participants