github oblien/openship v0.9.3
Openship v0.9.3

2 hours ago

This release improves Cloud monitoring and build-cache reliability, adds deployment
automation and isolated pull-request previews, and makes workers and schedulers
easier to configure, observe and recover. These notes cover all merged changes
since 0.9.2.

Deployment automation and previews

  • Move command variables into Environment — review literal environment
    assignments in install, build and start commands, then migrate them into
    encrypted project or service settings. Conflicts and concurrent edits stop the
    migration before partial changes are saved. Import and saved settings share the
    same parser and guidance.
  • Prepare framework output automatically — Next.js standalone monorepos and
    Nuxt builds retain their required workspace dependencies, public/static assets
    and selected Node or Bun runtime. Managed direct-server defaults start from the
    configured app directory; explicit custom commands retain their working directory.
  • Review older manual cache mounts — detect duplicate package/framework cache
    mounts and offer configuration migration only after a successful build proves
    managed cache support for those paths. Existing volume data is retained. Build
    logs report observed cache reuse and build-time comparisons.
  • Catch setup problems earlier — pre-install checks identify missing app roots
    and environment examples; command-variable, standalone startup and duplicate-mount
    guidance explains what needs attention without exposing variable values.
  • Opt into GitHub pull-request previews — same-repository, non-draft pull
    requests can deploy their exact commit into a separate preview environment with
    preview-only variables, isolated volumes and per-service URLs. Production
    variables are not copied. Forks and unsafe shared-storage configurations are
    excluded.
  • Recover preview lifecycle operations — durable coordination handles repeated
    webhooks, controller restarts and retryable close/merge cleanup. Optional GitHub
    comments update one existing comment, alongside the existing deployment Checks.
    Whole-instance transfers preserve preview ownership; individual project imports
    clear preview automation that cannot safely transfer.
  • Use automation from the SDK — configure and list previews, inspect or migrate
    manual cache mounts, and move command variables through the shared validated
    project operations.

Workers, schedulers and rollback

  • Configure roles without rebuilding the web app — Apps & Services → Configure
    roles can add or change workers and singleton schedulers on active single-app
    self-hosted Docker deployments. The normal deployment engine reuses the verified
    image and frozen environment while preserving the web container and unchanged
    replicas. The API, SDK and CLI expose the same operation. Cloud, bare, static,
    cluster and multi-service targets are outside this editor's scope.
  • See and inspect background processes — runtime roles appear in project
    service views and topology, with role/replica log selection and retry states.
    Health monitoring includes worker and scheduler failures instead of observing
    only the foreground container.
  • Keep independent role suggestions — framework scans expose matching presets
    at the selected app root. Only presets competing for the same declared slot
    exclude one another; explicit roles, including an empty list, retain precedence.
    Suggestions do not automatically enable background processes.
  • Recover interrupted role handovers — persist exact container identities and
    ownership before replacement, predecessor shutdown and publication. Startup and
    deployment reconciliation either finish a published handover or safely restore
    its predecessor; uncertain cleanup remains pending before conflicting work.
  • Protect active and rollback images — retained role replicas keep their
    required image artifacts protected during configuration changes and release cleanup.
  • Restore frozen Compose environment accurately — rollback preserves encrypted
    deployment snapshots without confusing literal redaction-like values with missing
    secrets. Incomplete legacy snapshots fail clearly rather than borrowing mutable
    current service settings.

Cloud monitoring, caches and storage

  • Avoid expensive monitoring scans — Cloud hosts using fuse-overlayfs skip
    Docker's full storage inventory, which can exhaust daemon memory. Host totals
    remain measured; unavailable detailed project storage stays unknown.
  • Show guest RAM usage — use verified guest counters instead of hypervisor
    process memory and overhead. Older guests receive a bounded, read-only memory
    sample; stream teardown releases the executor.
  • Keep partial metrics useful — missing disk or memory fields in a live frame
    retain the latest measured value for that metric, with its measurement time.
    Purchased capacity is never substituted for measured consumption.
  • Keep Cloud cache cleanup scoped — collect only owned, idle project-worker
    caches and stop before Docker Engine's global builder prune. Cache reuse, worker
    GC, existing build concurrency and user-configured resource limits are unchanged.
    Cloud builds require their isolated BuildKit executor instead of silently falling
    back to the embedded builder. Existing legacy daemon state and autonomous Docker
    GC remain separate host-maintenance concerns.
  • Accept filesystems without fixed inode totals — unsupported or zero inode
    totals mean unknown availability rather than confirmed exhaustion. Real free-space
    and supported inode-exhaustion checks still protect deployment admission.

Domains and ingress

  • Route verified custom domains on first deployment — single-app domains
    without a saved destination use the verified serving port through the shared
    route planner. Explicit endpoints and service-group destinations retain their
    ownership instead of selecting a sibling service.
  • Avoid ephemeral secondary host ports — secondary loopback publications use
    the existing allocator and the target host's ephemeral-range checks.
  • Handle varied Cloudflare Access applications — accounts containing launcher
    or other domain-less applications no longer crash managed ingress setup.
    Inventory and write receipts are validated while overlap and foreign-resource
    ownership protection remain enforced.
  • Clarify edge availability — documentation explains edge failure behavior and
    recovery responsibilities for deployed applications.

Webmail

  • Resolve exact Message-IDs for actions — thread reads, deletion, labels and
    flags validate exact IMAP envelope identities instead of trusting substring
    search matches. Literal percent sequences remain unchanged, stale UID hints are
    rejected, and missing or refused operations no longer report success.
  • Cache application assets correctly — fingerprinted assets receive immutable
    caching while application HTML is revalidated.
  • Serve precompressed assets — negotiate available Brotli or gzip files with
    appropriate content types, encoding and cache headers.

Don't miss a new openship release

NewReleases is sending notifications on new releases.