Skip to content

[pull] master from caprover:master - #283

Open
pull[bot] wants to merge 687 commits into
next-stack:masterfrom
caprover:master
Open

pull[bot] wants to merge 687 commits into
next-stack:masterfrom
caprover:master

Conversation

@pull

@pull pull Bot commented Aug 7, 2021 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

githubsaturn and others added 22 commits December 3, 2025 22:59
The existing POST /update/ replaces all fields — omitted fields are
reset to defaults (e.g. envVars becomes [], instanceCount becomes 0).
This makes simple operations like scaling dangerous: sending only
{appName, instanceCount} wipes all environment variables.

The new PATCH /update/ endpoint fetches the existing app definition
and merges only the explicitly provided fields. Omitted fields retain
their current values.

Example — scale without touching env vars:
  PATCH /api/v2/user/apps/appDefinitions/update/
  {"appName": "my-app", "instanceCount": 1}

The POST endpoint is unchanged — full backward compatibility.
Add PATCH endpoint for partial app definition updates
Backup tar files currently use a filename that only encodes a
timestamp and the leader's IP, e.g.

    caprover-backup-2026_04_10-19_30_00-1744312200000-ip-1_2_3_4.tar

When you run several CapRover instances behind a NAT or with
similar IPs, that filename is not enough to tell the backups apart
after downloading them.

This appends the swarm leader's hostname to the existing filename:

    caprover-backup-...-ip-1_2_3_4-host-captain-prod.tar

The hostname is sanitized to a portable charset ([A-Za-z0-9._-]) so
it is safe in filesystems and HTTP Content-Disposition headers, and
the segment is omitted entirely when the leader has no hostname, so
existing single-node setups see no change beyond an additional
suffix when one is available.

The sanitization step is exposed as a small static helper
(`BackupManager.sanitizeHostnameForFilename`) so it can be unit
tested in isolation. Top-level cleanup hooks in the existing test
file are now gated on `process.env.CI`, matching how the
integration tests in the same file are gated, so the new pure
helper tests can run on a developer workstation.

Closes #1257
…hostname

Append leader hostname to backup filename
🇭🇷 Add Croatian (hr-HR) language support to the frontend
#188

caprover/caprover-frontend#188
Add Croatian (hr-HR) language support to the frontend
A single worker underutilizes multi-core CPUs. Using auto lets nginx
spawn one worker per CPU core for better concurrency.
Set base nginx worker_processes to auto
githubsaturn and others added 30 commits September 21, 2026 21:51
fix: restore backup archive layout and download failures
…ayout

fix: restore backups with malformed nested data layout
Fix one-click deploy when values are omitted
A one-click deploy with more than one service checked each app name only
when it registered that app. A later name that was too long or already
taken failed after the project and the earlier apps were created, and
those stayed behind. Check every name before the first step instead, and
say the length limit in the error.

Fixes #2504
be5d55d allowed a leading number in app names. A one-click deploy with
more than one service creates a project named after the app, so with the
old project rule such a name failed at "Creating project".

Fixes #2505
A build scheduled while another one ran was queued, and the promise handed to its caller never settled: onBuildFinished started the queued build and dropped its result. A one-click deploy registered during another app's build therefore stayed at "Registering" for good, although the build ran. Pass the result to the queued promise instead.
Check one-click app names before creating anything
Allow project names that start with a number
Settle the promise of a queued build when it finishes
cp -rp followed symlinks on BSD cp (macOS) because lowercase -r
implies -L for historical compatibility, so a dangling certificate
symlink under /captain/data raised ENOENT and aborted the whole
backup copy. GNU cp (Linux) never followed symlinks here either way,
so this only reproduced in local macOS dev/test runs, not CI.

Switch to -RPp: -R is the portable recursive flag and -P makes the
no-dereference behavior explicit on both cp implementations.
fix: preserve dangling symlinks when copying backup data on macOS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants