Skip to content

release: v0.21.2 — customer bugfix batch - #214

Merged
padak merged 7 commits into
mainfrom
release/0.21.2
Apr 23, 2026
Merged

release: v0.21.2 — customer bugfix batch#214
padak merged 7 commits into
mainfrom
release/0.21.2

Conversation

@padak

@padak padak commented Apr 23, 2026

Copy link
Copy Markdown
Member

Summary

Integration PR for v0.21.2 hotfix release, bundling 6 merged PRs into a single reviewable unit. All 6 PRs were squash-merged into release/0.21.2 in the order listed below; a single conflict between #211 and #212 in commands/storage.py + commands/context.py was resolved during rebase (composition of both changes: `storage tables` is now multi-project and ignores the implicit active dev branch on single-project reads).

Contents

PR Type What Closes
#213 chore Whitelist `.env.example` / `.env.template` in `.gitignore` (split from #199 per review)
#199 fix `job run` banner reads resolved id, hint threads `branch_id`, whitespace strip on `--variable-values-id`
#209 fix `config search` also scans `rows[].configuration` — matches docstring promise #196
#210 fix `lineage build` supports flat single-project sync layout + emits warning on empty graph #208
#211 fix Storage read commands (`buckets`, `tables`, `bucket-detail`, `table-detail`, `files`) ignore implicit active dev branch — avoids empty-listing trap. Write/destructive commands unchanged. #207
#212 fix `storage tables` accepts zero-or-more `--project`, queries all connected projects in parallel — matches `storage buckets`, `config list`, etc. #198

Customer-reported bugs included

Conflict resolution notes

Rebase of #212 on top of #211 required resolving:

  1. `commands/context.py` — docstring for `storage tables` merged (multi-project signature + production-by-default branch note)
  2. `commands/storage.py` — docstring merged; branch resolution now calls `resolve_branch(..., ignore_active_branch=True)` only for single-project queries (multi-project skips branch resolution entirely because branches are per-project state)
  3. `tests/test_storage_delete.py` — git auto-merge, no manual intervention needed

Pending before merge

  • Bump `pyproject.toml` to `0.21.2`
  • Add changelog entry in `src/keboola_agent_cli/changelog.py`
  • `make version-sync` (updates `plugins/kbagent/.claude-plugin/plugin.json`)
  • `make check` — full CI (lint + format + changelog-check + tests)

Test plan

  • `uv run pytest tests/test_storage_tables.py tests/test_storage_delete.py tests/test_helpers.py` — 86/86 passed after merge conflict resolution
  • `uv run ruff check` + `ruff format --check` on affected files — clean
  • Full `make check` with version bump + changelog before merge
  • `make test-e2e` against real Keboola project (optional; customer bugs already verified manually)

Post-merge

ottomansky and others added 7 commits April 23, 2026 11:59
.env.example and .env.template are documentation/scaffolding artifacts
(e.g. for onboarding contributors) and should stay tracked even though
the catch-all .env.* pattern would otherwise ignore them.
…, whitespace strip (#199)

* fix(0.21.2): job run banner reads resolved id, hint threads branch_id, whitespace strip

- Rich-mode "Bound variable values row" banner now reads
  resolvedVariableValuesId from the service response instead of
  echoing the raw --variable-values-id flag; shows the auto-resolved
  row even when the flag was omitted.
- --variable-values-id input is stripped of surrounding whitespace
  before the empty-string guard; prevents a padded value from passing
  the guard and reaching the service unstripped.
- --hint client job run --branch ID now threads branch_id through all
  three client calls (get_config_detail, list_config_rows, create_job);
  previously the branch arg was silently dropped, causing the rendered
  hint to target production even when a dev branch was specified.
- rich.markup.escape import hoisted to module level in commands/job.py.
- New tests: rich-mode resolved-id banner, whitespace strip forwarding,
  --no-variables JSON output excludes resolvedVariableValuesId,
  wait=True preserves resolvedVariableValuesId on the waited result,
  hint branch_id threading contract.

* review: drop redundant str() in banner, remove PR reference from test docstring

* chore: drop out-of-scope .gitignore whitelist (move to separate PR)
`kbagent config search` now pulls configurations with `include=configuration,rows`
and feeds the full tree (including each row's `configuration` block) through the
match function. Previously, rows were fetched only by `sync pull`, so searches
for row-level properties (writer incremental flags, DB extractor credentials,
etc.) always returned 0 matches, even though the help text promised coverage of
row definitions.

Fixes #196
Previously, `lineage build` relied on iterating subdirectories to find
`<subdir>/.keboola/manifest.json`, which works for `sync pull --all-projects`
(nested layout) but silently returned an empty graph for `sync pull --project X`
(flat layout, manifest in CWD).

Detects whether the target directory is itself a project (flat layout) and
falls back to the existing multi-project iteration otherwise. Emits a
warning when no projects are found with a hint about the expected layouts.

Fixes #208
Storage read operations (tables, buckets, bucket-detail, table-detail,
files) no longer follow the project's active dev branch automatically.
The Storage API branch-scoped endpoint returns only tables/buckets that
were locally modified in the dev branch, which for a freshly created
branch is an empty set. Users with a dev branch active would therefore
see "No tables found" until they reset the branch, defeating the
purpose of dev branch isolation.

Write and destructive storage ops stay branch-aware -- modifying a dev
branch is the expected intent when the user is on one. Explicit
`--branch <id>` continues to override in all cases.

Fixes #207
…ands (#212)

`storage tables` now accepts zero or more `--project` flags and queries all
connected projects in parallel (same pattern as `storage buckets`, `config list`,
`config search`, `job list`, `component list`). Previously it required exactly
one `--project`, forcing users to shell-loop across projects for fleet-wide
audits -- despite the SKILL documentation advertising "multi-project by default"
for read commands.

Parallel execution via BaseService._run_parallel; per-project errors accumulate
into the response envelope (partial success does not abort others).

Fixes #198
The 0.21.2 entry previously covered only the job run hotfix (#199).
Add entries for the four customer-reported bug fixes (#196/#209,
#198/#212, #207/#211, #208/#210) and the gitignore chore (#213)
that are shipping in this release.
@padak
padak merged commit a31390f into main Apr 23, 2026
1 check passed
@padak
padak deleted the release/0.21.2 branch April 23, 2026 11:32
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