Skip to content

Releases: cloudinfraz/s3proxy-rs-ui

s3proxy-rs UI v0.6.5

Choose a tag to compare

@github-actions github-actions released this 13 Sep 01:43
ca36735

Compared with v0.6.4, this update adds paginated administration workflows,
backend-authored configuration diagnostics, typed runtime-validated API
operations, popup policy and IAM role details, broader browser quality gates,
and stronger release and deployment checks. The backend contract is pinned to
the reviewed [s3proxy-rs] revision listed below.

Added

  • Added cursor-based identity pagination and paginated identity selectors for
    administration workflows.
  • Added paginated backend option selectors and selected-backend lookups for
    identity and bucket mapping forms.
  • Expanded unit and browser coverage for pagination, backend selection, policy
    validation, and stale asynchronous responses.
  • Added contract-wide tests that require every documented /admin/ui/* API
    to be covered by matching Vite and Nginx proxy rules.
  • Added desktop and mobile regression coverage for long-list popup placement,
    keyboard navigation, focus restoration, and unsaved-draft dismissal.
  • Added backend-authored configuration diagnostics to Overview with distinct
    loading, ready, attention, unavailable, and stale-refresh states.
  • Added Previous and Next controls for opaque-cursor finding pages, including
    visible page and result ranges, cached back-navigation, and coverage for more
    findings than one page can contain.
  • Added generated operation metadata and standalone runtime validators for
    OpenAPI-constrained methods, paths, parameters, request bodies, statuses, and
    successful response payloads.
  • Added automated axe accessibility checks and bounded Firefox and WebKit smoke
    coverage alongside the desktop and mobile Chromium suite.
  • Added a non-root, digest-pinned, self-cleaning Kubernetes Job that validates
    deployed UI health, security headers, assets, readiness authentication,
    pagination controls, route isolation, and the served OpenAPI checksum.
  • Added production-shaped readiness-query qualification evidence at 10,000
    identities and mappings, with sequential and concurrency-four regression
    budgets. The measured plan passed without a speculative index change.

Changed

  • Moved managed policy, bucket policy, and IAM role details from below-table
    sections into responsive dialogs with visible action controls. IAM role
    status, attachment, retirement, and deletion operations use an Actions menu.
  • Kept one active dialog during detail, edit, and review transitions, restored
    focus when closing, and preserved list pagination during edits.
  • Added wider policy and trust editors with bounded scrolling and protection
    against accidental dismissal of unsaved drafts.
  • Switched overview resource counts to the backend summary instead of deriving
    totals from resource lists.
  • Moved bucket policy scope filtering to the backend and separated query caches
    by scope so pagination follows the selected policy type.
  • Updated the pinned backend contract and generated API types for pagination,
    backend options, overview summaries, and health responses.
  • Updated npm dependencies and GitHub Actions, retained a compatible TypeScript
    version, and explicitly enabled strict application type checking.
  • Simplified the README with a clearer quick start, command reference, container
    build instructions, and links to detailed guides.
  • Replaced browser-side deriveReadiness business evaluation with presentation-
    only mapping of backend finding codes and resource identities.
  • Kept /admin/ui/overview as the count authority while loading readiness from
    the additive authenticated /admin/ui/readiness operation.
  • Made readiness pages client-fresh for 60 seconds, disabled interval and
    window-focus refetch, and retained explicit refresh plus configuration-
    mutation invalidation.
  • Moved method, URL, query serialization, and successful-response validation to
    the generated operation facade. Feature code now supplies typed operation
    parameters instead of constructing transport paths.
  • Updated the pinned backend contract and regenerated TypeScript operation,
    schema, and validator artifacts for configuration diagnostics.

Fixed

  • Routed /admin/ui/overview and /admin/ui/backend-options requests through
    Vite and Nginx instead of returning the SPA document, fixing unavailable
    overview counts and invalid-response errors in backend selectors.
  • Kept policy and role actions within the viewport instead of requiring a
    scroll to the end of the resource list, including on mobile screens.
  • Prevented delayed role-detail responses from reopening dismissed dialogs.
  • Preserved the existing identity-list response contract while adding the
    paginated identity API, and routed pagination requests through Vite and Nginx.
  • Guarded bucket and managed policy dialogs against late asynchronous results
    and invalidated validation and review state when drafts change.
  • Bound policy mutation confirmation to the reviewed request rather than a
    subsequently edited draft.
  • Cleared stale policy simulation results when inputs change, ignored outdated
    responses, and displayed the identity, action, resource, and conditions that
    produced each result.
  • Respected identity enabled state and reported enabled mappings or IAM roles
    whose owner is disabled without treating intentionally disabled identities as
    active routing candidates.
  • Removed Overview and selector dependencies on the unbounded identity
    collection. Selectors use bounded authoritative cursors, and Overview does not
    reconstruct complete state by traversing resource pages.
  • Prevented delayed identity-policy preparation results, errors, and finalizers
    from reopening or altering review state after identity or policy selection
    changes, including A-to-B-to-A transitions.
  • Propagated React Query cancellation through all query-backed reads and applied
    a tested finite request timeout without misclassifying cancellation as session
    revocation.
  • Routed the readiness API through both Vite and Nginx instead of returning the
    single-page application document.

Security

  • Rejects structurally invalid successful API payloads at the transport boundary
    with a sanitized client error instead of exposing unchecked caller-selected
    generic values to feature state.
  • Keeps configuration findings free of access keys, administrator key material,
    Azure credentials, secret references, policy documents, trust values, and
    internal database errors.
  • Runs deployed acceptance without a ServiceAccount token, Secret, bearer key,
    database connection, or cloud identity; the temporary Job and ConfigMap are
    removed after success or failure.

Deployment

  • Added shared UI release validation and trusted source-revision checks before
    Azure login in publication and deployment workflows.
  • Restricted deployment to the canonical repository's main branch and
    required image signatures from the exact main publication workflow identity.
  • Preserved existing network isolation when policy rendering is disabled and
    required an existing UI NetworkPolicy for that production deployment mode.
  • Corrected the deployment health-check pod label to use UI access permissions.
  • Kept all UI image publication and AKS deployment in the protected CI/CD
    workflows; the repository exposes no local AKS deployment command.
  • Changed the deployment workflow to schedule the maintained in-cluster UI test
    Job instead of installing a browser and opening a local Kubernetes tunnel.
  • Added make aks-ui-test-job for explicitly validating an already deployed UI
    from inside the selected cluster without changing the Deployment.

Compatibility and upgrade notes

  • The checked-in contract targets [cloudinfraz/s3proxy-rs][s3proxy-rs] revision
    61aebf232acc29efb93a6978df7489ba609ea534, with served OpenAPI SHA-256
    ca4aa1a45992e2c9c66fde634f2e08d1cd33d4c22b3cf7c2c8b656063a19528d.
    UI and backend release numbers are independent.
  • Deploy a backend supporting the pinned identity pagination, backend options,
    Overview summary, configuration diagnostics, and bucket policy filtering
    contracts before this UI.
    Validate real authenticated API responses in the target environment; mocked
    browser tests and a matching contract pin do not prove deployment compatibility.
  • Rebuild and deploy the UI image to apply the Nginx proxy fixes; refreshing
    the browser alone does not update the deployed proxy configuration.
  • Popup workflows retain server-side validation, impact-token review,
    concurrency checks, and role lifecycle gates without introducing new APIs.
  • See the [backend changelog][s3proxy-rs-0.6.3] for SigV4 canonical URI fixes,
    ListObjectsV2 improvements, and backend security changes. These are backend
    changes, not storage operations added to the administration UI.
  • /admin/ui/readiness is on-demand configuration analysis, not a health probe.
    Kubernetes, load-balancer, and operational health checks must continue using
    /health or authenticated /admin/health as appropriate.
  • Finding pagination bounds response rows, not database work. Each uncached page
    recomputes the complete finding set and global count; the UI does not prefetch
    or automatically traverse remaining pages.

Published artifacts

  • Static UI package: s3proxy-rs-ui-v0.6.5.tar.gz
  • Container image: ghcr.io/cloudinfraz/s3proxy-rs-ui@sha256:b36628ed9d33368c90788699374ba63750299bac06e737f5c45dc9902bda976e
  • SPDX SBOM and SHA-256 checksums attached to this release

s3proxy-rs UI v0.6.4

Choose a tag to compare

@github-actions github-actions released this 08 Sep 02:57

Added

  • Added a Bucket routing workflow that creates server-generated virtual S3
    identities, displays credentials once, and continues directly to mapping
    creation using a credential-ID-only handoff.
  • Added recovery for failed session revocation that blocks sign-in and protected
    routes until the browser verifies revocation or a retry succeeds.
  • Added repository-local Spec Kit skills for specification, clarification,
    planning, task generation, implementation, analysis, and Git integration.
  • Added desktop and mobile browser coverage for credential handoff, mapping
    updates, failed logout recovery, and release security boundaries.
  • Added an application-level React error boundary with a reload recovery path
    for unexpected rendering failures.
  • Added centralized, sanitized API error interception with request method and
    path context while preserving component-owned retry and recovery behavior.
  • Added focused unit coverage for routing, API failures, shared controls, and
    administration workflows across identities, backends, bucket mappings,
    policies, IAM roles, temporary credentials, operations, and the shell.
  • Added TypeScript and Vue 3 coding guidelines, including required component,
    template, and Pinia integration tests.
  • Added React Testing Library, jsdom, Vue Test Utils, and matching Vue 3 compiler
    dependencies for component testing.

Changed

  • Restricted credential-to-mapping return URLs to a single allowlisted
    credential_id parameter and authoritative enabled virtual identities.
  • Made mapping edits preserve immutable aliases and owners while submitting only
    reviewed mutable fields with current concurrency metadata.
  • Isolated pending revocation state per browser tab and sanitized recovery
    failures before presenting retry actions.
  • Enforced whole-source unit coverage in CI with minimum 75 percent thresholds
    for statements, branches, functions, and lines.
  • Expanded CI to run coverage instead of import-only unit execution and ignore
    generated coverage artifacts.
  • Updated release documentation for release-branch and manual workflow dispatch
    procedures.
  • Updated endpoint example validation to reject unsafe ASCII control characters
    without relying on a control-character regular expression.

Fixed

  • Rejected malformed, whitespace-only, UUID-invalid, and non-virtual generated
    credential responses before disclosure or mapping handoff.
  • Cleared one-time credential plaintext synchronously before navigation and kept
    generated access and secret keys out of query caches and request payloads.
  • Improved session-expiry routing, role-dialog validation, identity-policy error
    recovery, and application error-boundary handling.
  • Removed duplicate global API alerts that conflicted with contextual component
    errors and remained visible after successful retries.
  • Isolated API client mocks and browser globals between tests to prevent order-
    dependent failures.
  • Increased the unit-test timeout for instrumented component tests so coverage
    execution remains stable in CI.

Security

  • Added browser assertions that generated credentials do not remain in URLs,
    local storage, session storage, the DOM after acknowledgement, or outbound
    request URLs and bodies.
  • Prevented access to protected content while session revocation is unresolved,
    including across reloads and direct navigation attempts.

Deployment

  • Removed a disabled UI NetworkPolicy before deployment verification so stale
    policy state cannot affect rollout health checks.
  • Excluded repository metadata, environment files, coverage output, and Docker
    build definitions from the runtime image build context.

Published artifacts

  • Static UI package: s3proxy-rs-ui-v0.6.4.tar.gz
  • Container image: ghcr.io/cloudinfraz/s3proxy-rs-ui@sha256:70b97f4ffb6598b7dc9621353d12c0510ac89ddce6594ead18bae6bad7e1b6ef
  • SPDX SBOM and SHA-256 checksums attached to this release

s3proxy-rs UI v0.6.3

Choose a tag to compare

@github-actions github-actions released this 07 Sep 11:32
23dcc91

This is the first documented release of the standalone s3proxy-rs administration
UI. It consolidates the browser application, runtime image, Kubernetes manifests,
and release automation previously developed alongside the backend.

Added

Administration and sessions

  • Standalone React administration application served from /admin/ui/.
  • Session-based sign-in and sign-out with CSRF protection, session-expiry checks,
    and automatic authorization-state revalidation.
  • Responsive desktop and mobile navigation with accessible keyboard and skip-link
    behavior.
  • Overview dashboard showing resource counts, service capabilities, and
    configuration-readiness findings.

Identities and credentials

  • S3 identity creation, editing, deletion, and secret rotation.
  • One-time display of newly created and rotated access credentials.
  • Dependency details and replacement-identity workflows for safer credential
    lifecycle management.
  • Direct credential mapping mode with read-only routing details and client
    examples when routing metadata is available.

Azure backends and bucket routing

  • Azure backend listing, creation, editing, detail inspection, and deletion.
  • Managed Identity, account-key reference, and SAS-token reference authentication
    modes, gated by backend capabilities.
  • Reviewed backend mutations using impact tokens and authoritative-state reloads
    when a review becomes stale.
  • Reference checks that prevent deletion of backends still used by identities or
    virtual mappings.
  • Virtual bucket mapping lifecycle with cursor pagination, backend overrides,
    endpoint prefixes, effective-target review, and stale-review recovery.
  • Explicit separation between routing metadata changes and retained Azure
    containers or blobs.

Policies and authorization

  • Managed policy creation, validation, editing, inspection, pagination, and
    deletion.
  • Protection for built-in policies and impact review for attached policies.
  • Identity policy attachment and detachment using stable identity and policy IDs.
  • Bucket policy management for direct-global and virtual-bucket scopes.
  • Policy preflight diagnostics and identity-policy simulation against persisted
    policy metadata.

IAM roles and temporary credentials

  • IAM role creation, details, cursor pagination, enable/disable, duration changes,
    trust replacement, and deletion.
  • Policy attachment and detachment for roles.
  • Reviewed role mutations with expected policy revisions and impact tokens.
  • Retained-session retirement in bounded batches and deletion gates for active or
    referenced roles.
  • Trust policy editor for allow/deny statements, S3 credential principals, and
    supported IAM, STS, AWS, IP, and transport conditions.
  • Temporary credential readiness view with STS and S3 endpoints, role duration
    limits, AWS CLI and JavaScript examples, and revocation guidance.

Operations

  • Administrator API-key lifecycle with optional expiry, one-time key display,
    enable/disable controls, deletion confirmation, and last-used status.
  • Audit event viewer with configurable windows, refresh, bounded pagination, and
    actor, entity, action, and timestamp details.
  • Health view with runtime version, cache mode, database and schema readiness,
    authorization mode, policy resolver state, multipart persistence, and periodic
    refresh.

Testing and contributor experience

  • Unit, API-contract, deployment-script, mocked browser, live browser, and
    deployed browser acceptance suites.
  • Desktop and mobile browser coverage for navigation, lifecycle operations,
    contract failures, stale responses, responsive behavior, and credential
    handling.
  • Locked local validation through make check, including dependency audit,
    linting, tests, generated API validation, build, and browser acceptance.
  • Public contribution, support, security, conduct, issue, pull-request, E2E, and
    deployment documentation.

Changed

  • Split the UI into its own repository and runtime image, independent of the
    s3proxy-rs control-plane and data-plane images.
  • Pinned the generated TypeScript API schema to an explicit backend revision and
    OpenAPI SHA-256 checksum.
  • Reserved /admin/ui/azure-backends for the Azure backends page while retaining
    /admin/ui/backends and related paths for JSON APIs.
  • Standardized development and CI on Node.js 24.18.0, npm 11.16.0, and locked
    dependency installation from the public npm registry.
  • Hardened API response validation and error-envelope handling across UI
    workflows.
  • Added runtime and rollback-baseline verification for deployment acceptance.

Security

  • Prevented credential-bearing browser state from being persisted to local or
    session storage.
  • Disabled traces, screenshots, videos, saved authentication state, and automatic
    page snapshots for live credential-bearing browser tests.
  • Added browser checks for secret leakage through storage, URLs, history, and
    delayed responses after navigation, dismissal, or sign-out.
  • Added same-origin session and CSRF handling for proxied admin API requests.
  • Hardened Nginx responses with Content Security Policy, frame denial, MIME
    sniffing prevention, referrer restrictions, and a restricted permissions policy.
  • Added weekly CodeQL analysis and Dependabot updates for npm, GitHub Actions, and
    Docker dependencies.
  • Added high and critical dependency and container-image vulnerability gates.

Deployment

  • Added an unprivileged Nginx runtime image with no Node.js toolchain, backend
    binary, database credentials, cache credentials, or Azure credentials.
  • Added Kubernetes Deployment and Service manifests with two replicas, rolling
    updates, health probes, resource bounds, read-only root filesystem, dropped
    capabilities, disabled service-account token mounting, and runtime-default
    seccomp.
  • Added optional NetworkPolicy rendering for explicitly labeled administrative
    namespaces and UI client pods.
  • Added immutable SHA-256 image rendering and rejection of mutable deployment
    references.
  • Added protected staging and production workflows using Azure workload identity
    federation.
  • Added release-image provenance, SPDX SBOM generation, Trivy scanning, keyless
    Cosign signing, signature verification, and OCI source-revision verification.
  • Added deployed runtime checks and browser acceptance before a deployment is
    considered complete.

Compatibility and known limitations

  • The UI requires a compatible s3proxy-rs admin API. This release is pinned to
    backend revision 7d16a4b49d7e5f9aea1e4dda03205d2afc4844c9.
  • The application must be served under /admin/ui/ and expects same-origin
    access to /admin/*.
  • The runtime image expects a Service named s3proxy-control on port 8081 in
    the same Kubernetes namespace.
  • The supplied manifests do not create an Ingress or configure external TLS;
    operators own those boundaries.
  • Mocked browser acceptance does not prove live-backend compatibility. The live
    suite requires an isolated, disposable backend and may create or revoke
    administrator material.
  • Readiness reflects available control API metadata. Identity enabled state and
    effective role-policy readiness may be reported as unknown.
  • Policy simulation and configuration review do not perform signed S3 requests,
    Azure storage I/O, or data migration.

Published artifacts

  • Static UI package: s3proxy-rs-ui-v0.6.3.tar.gz
  • Container image: ghcr.io/cloudinfraz/s3proxy-rs-ui@sha256:55126dfb6163462d8ce453aa52b6c95e450e0debf31779965435116fddc8e882
  • SPDX SBOM and SHA-256 checksums attached to this release