Skip to content

Changelog

All notable changes to RepoWrangler are documented here. The format follows Keep a Changelog and the project follows semantic versioning.

[Unreleased]

Documentation

  • Published Ranch Hand v0.1.0-rc.26 with RepoWrangler v1.0.16, identity-first onboarding, private/loopback GitHub App manifest correction, and verified remote setup-token handoff.
  • Published Ranch Hand v0.1.0-rc.25 with RepoWrangler v1.0.15 and direct GitHub manifest submission across all deployment targets.
  • Published Ranch Hand v0.1.0-rc.24 with RepoWrangler v1.0.14, explicit real-mode WSL /onboarding links, and stale service-worker shell eviction.
  • Published Ranch Hand v0.1.0-rc.23 with an ownership-checked managed permanent-removal action for active local WSL Compose deployments.
  • Published Ranch Hand v0.1.0-rc.22 with RepoWrangler v1.0.13 so a fresh real-mode WSL deployment opens the initial onboarding wizard instead of an unusable sign-in screen with no configured provider.
  • Published Ranch Hand v0.1.0-rc.21, fixing WSL and Remote Linux image verification across Docker image stores that report the verified registry index, platform manifest, or config digest.
  • Published Ranch Hand v0.1.0-rc.19, removing Remote Linux's target-side GHCR pull. Ranch Hand now verifies the public image archive on Windows, streams it into Docker over pinned SSH, verifies the exact image ID, and starts Compose with registry pulls disabled.
  • Published Ranch Hand v0.1.0-rc.18, adding visible Remote Linux install submission, durable phase progress, and same-panel error reporting.
  • Published Ranch Hand v0.1.0-rc.17, adding confirmed guided installation of missing Docker prerequisites for WSL, Remote Linux, and Docker Desktop.
  • Published Ranch Hand v0.1.0-rc.16, simplifying Remote Linux authentication and eliminating duplicate Remote Linux, Azure, and Cloudflare credential entry.
  • Published Ranch Hand v0.1.0-rc.15, adding guided, credential-free SSH host key inspection and explicit trusted-source verification for remote Linux.
  • Published Ranch Hand v0.1.0-rc.14, adding an explicit WSL demo-mode toggle that defaults off and starts real first-run provider setup when off.
  • Published Ranch Hand v0.1.0-rc.13, removing GHCR authentication from the local WSL install through a checksum-verified public image archive and Compose with registry pulls disabled.
  • Published Ranch Hand v0.1.0-rc.12, moving the WSL and remote Linux image pull ahead of target mutation so registry failures leave no recovery lock.
  • Published Ranch Hand v0.1.0-rc.11, adding an ownership-safe in-product cleanup action for orphaned WSL directories after lifecycle records are gone.
  • Published Ranch Hand v0.1.0-rc.10, correcting Compose environment interpolation for WSL and remote Linux installs and enabling ownership-checked cleanup of affected rc.9 failed installs.
  • Published Ranch Hand v0.1.0-rc.9, correcting WSL/SSH file transfer, legacy empty-file recovery, same-tab refresh, and Docker prerequisite diagnostics.
  • Published Ranch Hand v0.1.0-rc.8 with partial-transfer cleanup, correct plan/project identity invalidation, and a managed-deployment inventory.
  • Published Ranch Hand v0.1.0-rc.7, completing safe recovery when an interrupted install left only an empty pre-marker WSL directory.
  • Published Ranch Hand v0.1.0-rc.6 with inline ownership-checked recovery when a WSL install is interrupted after creating its dedicated directory.
  • Published Ranch Hand v0.1.0-rc.5 with visible WSL confirmation, progress, lifecycle phase, error, and interrupted-operation recovery feedback.
  • Published Ranch Hand v0.1.0-rc.4 with safe WSL collision defaults and additional remote Linux Compose prepopulation.
  • Published Ranch Hand v0.1.0-rc.3, split local WSL Docker Compose from Docker Desktop, and documented all five deployment targets and prerequisites.
  • Published Ranch Hand v0.1.0-rc.2 and made Latest stable (recommended) the default deployment choice; prerelease and exact-version selection remain explicit advanced choices.
  • Designated Ranch Hand v0.1.0-rc.1 as the Public Preview and primary recommended Windows deployment path, with manual clone/fork/artifact/CI deployment retained as the supported alternative.
  • Published the full Ranch Hand GA promotion contract: signing, latest-patch compatibility, production configuration and target lifecycle, uninstall/data retention, application upgrades, real-target/accessibility/security UAT, task-tested documentation, and best-effort support.
  • Added a Ranch Hand operator entry point and deployment-method chooser while preserving the clone/fork/manual path.
  • Replaced the retired bootstrap-script roadmap language and documented RepoWrangler v1.0.10's artifact release and separate Windows distribution.

[1.0.10] - 2026-07-17

Added

  • Immutable clone-free deployment bundles, a four-target release manifest, digest-pinned GHCR image, checksums, SPDX SBOM, and Sigstore/SLSA provenance for Ranch Hand and user-owned automation.

Fixed

  • PostgreSQL image digest resolution no longer fails through the Buildx inspection pipe before artifact assembly.

[1.0.9] - 2026-07-17 — withdrawn

  • The tag and product image exist, but publication stopped before a GitHub Release, deployment manifest, or bundles were created. Use v1.0.10.

[1.0.8] - 2026-07-16

Fixed

  • PostgreSQL server processes no longer load the SQLite adapter at startup, so PostgreSQL deployments do not emit SQLite warnings or paths in their boot log.

[1.0.7] - 2026-07-16

Changed

  • The Azure Container Apps recipe now lists the region, resource group, registry, Key Vault, exact secret names, public URL, and naming inputs before the deployment steps begin.

[1.0.6] - 2026-07-16

Changed

  • Estate Scope and Administration now expose a full-weight Connect another platform action instead of hiding the workflow in inline prose.

[1.0.5] - 2026-07-16

Added

  • Estate Scope connection sections can be expanded and collapsed while keeping their status and workspace counts visible in the summary.

[1.0.4] - 2026-07-16

Added

  • Workspaces now support search, provider/kind/attention/monitoring filters, multiple sort orders, selectable page sizes, and pagination for large estates.

[1.0.3] - 2026-07-16

Added

  • Repositories now support provider, workspace, language, status, and attention filters plus name, attention, activity, synchronization, and pull-request sorting. Saved views preserve the expanded filter and sort definition.

[1.0.2] - 2026-07-16

Fixed

  • Azure Container Apps deployments now preserve an existing managed custom domain when the release template is reapplied.
  • The Container Apps scheduler flag is emitted as lowercase true/false, as required by the application configuration parser.
  • PowerShell and bash deployment helpers expose the same scheduler and custom domain parameters as the Bicep template.

[1.0.1] - 2026-07-16

Fixed

  • The Azure Container Apps recipe now wires SECRET_ENCRYPTION_KEY from Key Vault and provides an explicit single-replica scheduler switch.

[1.0.0] - 2026-07-16

Added

  • Secure first boot: a fresh real-mode instance enters a narrowly scoped setup mode so the onboarding wizard can configure the first sign-in provider without a pre-existing session. Operators may protect this flow with SETUP_TOKEN; setup access closes as soon as a real provider is usable.
  • Build-derived versioning: APP_VERSION can override the checked-in package version at runtime, and container builds accept --build-arg APP_VERSION=<tag>.
  • Account menu: the sidebar identity control now shows the active provider, role, and sign-out action in one consistent menu.

Changed

  • Public documentation ownership: the complete VitePress documentation source, assets, dependencies, and Cloudflare deployment workflow now live in the private WranglerLabs/repo-wrangler-org website repository. The public WranglerLabs/repo-wrangler repository contains the open-source product code only; published docs remain available at https://wranglerlabs.org.
  • Environment deployment ownership: the public demo deployment trigger was removed from the OSS repository. The private WranglerLabs/repo-wrangler.dev repository independently owns its release lock, build, synthetic configuration, and Cloudflare deployment workflow.

Fixed

  • Scheduled reconciliation now runs every five minutes and can drain up to ten inexpensive jobs per invocation while retaining the provider subrequest budget. This eliminates the enrichment backlog that delayed GitLab branch, pipeline, and merge-request data after discovery.
  • Signed sessions now record their issuing provider. Disabling or removing an auth provider invalidates its sessions immediately; legacy provider-less cookies are rejected.
  • Dependency auditing works again after upgrading the project toolchain to pnpm 11. Known Vite and esbuild advisories are remediated with targeted overrides, lifecycle scripts use an explicit allowlist, and CI now enforces both a frozen lockfile and a clean audit.

[0.6.10] - 2026-07-14

First release under Wrangler Labs — the project moved to WranglerLabs/repo-wrangler (full history preserved) and rebranded; marketing and public docs now share https://wranglerlabs.org and the public demo is at https://repowrangler.dev. Consolidates the v0.5.1-rc1v0.6.10-rc1 hardening series. See the v0.6.10 release notes.

Added

  • Sign out: the sidebar footer now shows a Sign out button under the signed-in user — it ends the session server-side (POST /auth/logout, audited) and returns to the sign-in screen. Previously the UI had no way to leave a session or reach /sign-in while a session cookie existed.

  • Grow the estate (onboarding Phase C): Estate Scope gains an Add more organizations / groups flow per connection — deep-link to the GitHub App's install page, then Check for new organizations matches installations and starts discovery; GitLab groups can be added to the existing connection.

  • New since last review: Estate Scope surfaces repositories discovered after the operator's last review, with Mark all reviewed advancing the marker (GET /estate/new-since-review, POST /estate/mark-reviewed).

  • Getting-started guide: new "Growing the estate" section.

Fixed

  • GitLab discovery never ran on wizard-connected instances: creating a GitLab connection (and selecting groups) enqueued the GitHub discovery job type, and the only other gitlab_discovery enqueue sites were the 03:17 UTC maintenance tick and an interval-gated periodic check — so a fresh GitLab connection produced workspaces with zero projects and zero errors. Connect, group-select, and admin Sync now all enqueue gitlab_discovery now.

[0.5.0] - 2026-07-13

Added

  • More secret providers (PN-4): Cloudflare KV (cloudflare-kv, REST — with a note that Cloudflare Secrets/Secrets Store is preferred for sensitive values) and CyberArk (cyberark, Central Credential Provider / AIM). SECRET_SOURCE now spans env/file/Azure/Vault/AWS/GCP/Cloudflare-KV/CyberArk/composite — no lock-in.
  • App version in the UI: shown under the sidebar title (every page) and on the About & Credits page, served from /auth/config.
  • Docs: sign-in provider setup guide (GitLab/Google/local), an "Updating your instance" guide, and a pre-1.0 maturity note on the auth + secret sections.
  • Release CD: a tag-triggered deploy-demo workflow so the live demo follows the latest release (requires CLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_ID/ CF_D1_DATABASE_ID repo secrets).

Changed

  • Credits page clarified: no upstream code copied — references/inspiration only.
  • Workspaces subtitle no longer says "GitLab groups later" (GitLab is supported).

[0.4.0] - 2026-07-13

Added

  • Secret provider seam (secrets-core, PN-4, ADR-017): secrets are read through an ISecretProvider selected by SECRET_SOURCE — environment variables, Docker/Kubernetes mounted files, Azure Key Vault, HashiCorp Vault, AWS Secrets Manager, and GCP Secret Manager (all SDK-free), plus a composite that layers them. No cloud is required.
  • Scheduler drivers (PN-3, ADR-018): SCHEDULER_MODE=in-process|external|off plus a token-guarded POST /internal/cron/run, so Linux cron, a Kubernetes CronJob, GitHub Actions, or an Azure Functions timer can drive sync over HTTP.
  • Authentication provider registry (PN-5, ADR-019): GitHub, GitLab, Entra, Google, and local-dev are peer sign-in providers behind one signed session cookie, enabled in any combination via AUTH_PROVIDERS; /auth/config lists each so the SPA renders a button per provider.
  • Deploy recipes now wire the new knobs (K8s CronJob + SECRET_SOURCE / AUTH_PROVIDERS; Azure Container Apps AUTH_PROVIDERS; compose Docker-secrets).
  • Fun demo estate: synthetic data themed after Back to the Future (GitHub) and Pinky and the Brain (GitLab), with the domain health engine unchanged.

Changed

  • CI runs checks only (typecheck + unit tests) — no build/bundle/boot steps.
  • Credits page states plainly that no upstream code was copied (references only).

[0.3.0-post] - PostgreSQL adapter, Entra ID, and the documentation suite

Added

  • PostgreSQL storage adapter (persistence-postgres, ADR-015): a D1-compatible adapter over PostgreSQL, selected on the Node host by setting DATABASE_URL. It runs the same persistence SQL and the same migrations/ as SQLite/D1 via compatibility datetime() functions plus a small, unit-tested SQL translator (?N$N, INSERT OR IGNOREON CONFLICT DO NOTHING, case-preserving aliases). This unlocks multi-replica self-hosted deployments (Azure Container Apps, Kubernetes) behind one shared database — run the scheduler on one replica with ENABLE_SCHEDULER=false on the rest. Runtime-verified against a real PostgreSQL engine. Closes roadmap PN-1.

  • Microsoft Entra ID sign-in (ADR-016): an OpenID Connect authorization-code sign-in provider selected by AUTH_MODE=entra, alongside the default GitHub sign-in. It issues the same signed session cookie (roles, /auth/me, and the SPA unchanged), gates access by ENTRA_ALLOWED_USERS, and a new public /auth/config endpoint drives the SPA's sign-in button ("Sign in with Microsoft"). Web-Crypto-only, so it runs on both the Worker and the Node host. Closes roadmap PN-5 (Entra).

  • Documentation suite (DOC-1…8): a full docs/ tree with an public documentation — getting-started, deployment (capability matrix + decision flowchart), configuration reference, provider guides (GitHub/GitLab/ Entra), architecture (C4 + Mermaid), API reference, operations (backup/restore/ DR/upgrade/migrations), security, developer guide, troubleshooting, service catalog, and provider capability matrix.

  • Node server host — zero Cloudflare (apps/server, ADR-014): run the whole product (SPA + API + webhooks + auth + scheduler) on a plain Node 22 process backed by SQLite, with no Cloudflare account. It imports the same Hono app the Worker runs, over the node:sqlite D1 adapter; serves apps/web/dist with SPA fallback; applies migrations at boot; and fires the same two cron expressions in-process. Ships with a Dockerfile and a root docker-compose.ymldocker compose up --build boots the product in demo mode on http://localhost:8080. New deploy recipe deploy/docker/ (topology C — Self-hosted). Closes roadmap PN-2.

  • Design-completeness pass — closed the remaining functional-requirement gaps found in an audit against the solution design: saved views (FR-012, D1-backed, shareable within the instance), CSV + Markdown report export (FR-014, alongside JSON), the Activity/sync-history and Provider-capabilities repository-detail tabs (FR-013, now all 9 tabs), row virtualization for large inventory tables (NFR-002), and PWA groundwork — web manifest, service worker, and registration (goal 7 / FR-011).

  • Drop-in theming (ADR-012): themes are self-contained CSS files under apps/web/src/themes/ — dropping one in makes it appear in the sidebar theme switcher automatically (Hugo/Jekyll-style, via glob discovery), no code change. Ships with light, dark, midnight, slate, sandstone, high-contrast; deployers set the default with VITE_DEFAULT_THEME, users switch live (saved per browser). See the theming guide.

  • Theme Studio (live color customization): a /theme editor with color pickers for every token — apply your palette live as the Custom theme (saved per browser, no rebuild), seed from the current theme or reset, and export a committable themes/<id>.css to turn a personal palette into a permanent shared theme.

  • Host-agnostic frontend (ADR-011): the SPA reads its API origin from VITE_API_BASE_URL (empty = integrated same-origin) and the Worker enforces a CORS allowlist via CORS_ALLOWED_ORIGINS. Two topologies — integrated Cloudflare Worker (default, zero-config) and decoupled SPA on any static host.

  • deploy/ recipes + copy-ready CI for Cloudflare (integrated), GitHub Pages, and Azure Static Web Apps.

  • New packages: persistence-core (backend-neutral storage-port interfaces — the seam a future Node/Postgres backend fulfils), ui (framework-agnostic design tokens + capability presentation), test-support (deterministic domain fixtures).

  • VITE_BASE_PATH support for GitHub Pages project sites.

Changed

  • Public repo carries placeholders only: wrangler.jsonc ships no real D1 id or allowlist and defaults to demo mode. Deployers put their D1 id in a git-ignored wrangler.local.jsonc and set ALLOWED_GITHUB_USERS as a Cloudflare secret (README "Deploying your own instance" updated accordingly).
  • Manifest setup form no longer prefills a specific organization login.

Documentation

  • The personal-account GitHub App path is documented as first-class, including the org-owner 404 and how to avoid it (GitHub App setup).

[0.3.0] - 2026-07-12

Added

  • Estate-wide navigation completed (design IA items 5, 7, 8, 9, 10):
    • Pipelines page — latest workflow/pipeline state per repository, failures first, with duration and direct provider links.
    • Security page — open findings across the estate ordered by secret-scanning first, then severity; metadata only.
    • Budgets & Usage page — budgets per workspace with alert state and stop-at-limit flags; missing access rendered as a capability state.
    • Activity page — recent sync jobs, discoveries, and administrative audit events in one feed.
    • Administration page — session/role, connection setup guidance, manual discovery, and instance policy pointers.
  • Supporting API endpoints: GET /api/v1/pipelines, /security, /budgets, /activity, with demo-mode fixtures.
  • Open-source baseline: issue/PR templates, CodeQL analysis workflow, operations runbooks (key rotation, D1 backup/recovery, upgrade, provider reconnect), and research spike outcomes.
  • Default owner allowlist configured via ALLOWED_GITHUB_USERS.

[0.2.0] - 2026-07-12

Added

  • Phase 2 — branch and change intelligence: estate-wide Branches page (every branch ahead/diverged across all providers) and Change Requests page with blocked/stale/ready/draft attention filters.
  • Phase 3 — governance, security, budgets: governance collection (default-branch protection + community-profile hygiene files) with new health rules; security alert reconciliation (code scanning, Dependabot, secret scanning — each independently capability-gated); daily organization budget sync; Governance and Budgets detail tabs. Migration 0002.
  • Phase 4 — GitLab provider: group/subgroup project discovery, merge requests, pipelines, branch comparison, and webhook receiver (/webhooks/gitlab) with fingerprint idempotency. Configured via GITLAB_TOKEN, GITLAB_GROUPS, GITLAB_BASE_URL, GITLAB_WEBHOOK_SECRET. GitHub and GitLab repositories share every estate view.
  • Phase 5 — notifications: outbound generic webhook (NOTIFY_WEBHOOK_URL) fired when a repository escalates to high/critical.
  • Demo estate now includes a GitLab group, governance data, and budgets.

[0.1.0] - 2026-07-12

Added

  • Initial application scaffold from the solution design pack:
    • Provider-neutral domain model with explainable health rules and FR-005 branch semantics (current / work_pending / untracked_work / diverged / unknown).
    • Capability model — missing data is a state, never a false zero.
    • GitHub provider adapter: App JWT (WebCrypto, PKCS#1→PKCS#8), installation tokens, REST client with rate-limit capture, webhook signature verification and event translation, bounded collectors.
    • D1 persistence: full schema (migration 0001), idempotent upserts, tombstone lifecycle, checkpointed sync jobs, webhook idempotency, retention compaction.
    • Cloudflare Worker (Hono): versioned JSON API, GitHub App OAuth login with allowlist + signed HttpOnly session cookies, webhook receiver, Cron-driven reconciliation and enrichment within free-tier budgets.
    • React SPA: Command Center with attention queue, repository inventory with filters and JSON export, repository detail tabs (overview, branches, pipelines, change requests, security, budgets), workspaces, platform health with manual sync, About & Credits, dark/light themes.
    • Demo mode with a synthetic estate evaluated by the real health engine.
    • Open-source baseline: Apache-2.0, NOTICE, third-party notices, credits (YAML + typed + in-product), security policy, contributing guide, CI.

Apache-2.0 licensed. Read-only by design.