> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# Breaking Changes

## v1.8.0

**Breaking Changes**

- **Docker Swarm support has been removed.** Please use Kubernetes for better security and scalability.

- **`ChallengeNetwork` is now treated as a network prefix.** GZCTF automatically creates `<ChallengeNetwork>-open` and `<ChallengeNetwork>-isolated` networks (with `gzctf` as the default prefix). For the `custom` network mode, create a `<ChallengeNetwork>-custom` network yourself. For more details, see [appsettings](/config/appsettings.md).

- **New `KnownIPNetworks` / `KnownProxies` options in `ForwardedOptions`.** The old `KnownNetworks`, `TrustedNetworks`, and `TrustedProxies` keys are kept for backward compatibility.

- **Auto-managed NetworkPolicies.** GZCTF now creates and maintains `gzctf-network-open` and `gzctf-network-isolated` NetworkPolicies in the challenge namespace to restrict access for open and isolated network modes. Do not modify or delete them manually.

## v1.7.0

**Storage System Redesign (⚠️ Configuration Update Required)**

### Storage Connection String Changes

| Type       | Old Format          | New Format                    | Status               |
| ---------- | ------------------- | ----------------------------- | -------------------- |
| Local Disk | `disk://path=...`   | `disk://path=...`             | ✅ No change          |
| AWS S3     | `keyId=...;key=...` | `accessKey=...;secretKey=...` | ❌ Parameters renamed |
| MinIO S3   | `keyId=...;key=...` | `accessKey=...;secretKey=...` | ❌ Parameters renamed |
| Azure Blob | `azure.blobs://...` | ❌ Not supported               | ❌ Removed            |

### ⚠️ Required Updates

**AWS S3 / MinIO users:**

Update `ConnectionStrings:Storage`:

```
OLD: aws.s3://keyId=AKIA...;key=secret...;bucket=my-bucket;region=us-east-1
NEW: aws.s3://accessKey=AKIA...;secretKey=secret...;bucket=my-bucket;region=us-east-1

OLD: minio.s3://keyId=admin;key=admin;bucket=gzctf;serviceUrl=http://minio:9000
NEW: s3://accessKey=admin;secretKey=admin;bucket=gzctf;endpoint=http://minio:9000;forcePathStyle=true
```

**Azure Blob users:**

Azure Blob Storage is no longer supported. Migrate to AWS S3 or MinIO:

1. Choose alternative storage
2. Migrate file data
3. Update GZCTF configuration
4. Restart GZCTF

### S3 Parameters

- `accessKey` (required\*): AWS Access Key ID
- `secretKey` (required\*): AWS Secret Access Key
- `bucket` (required): Bucket name
- `region` (required\*\*): AWS region
- `endpoint` (optional): Custom URL for MinIO
- `useHttp` (optional): Use HTTP (default: false)
- `forcePathStyle` (optional): Path-style URLs (default: false). Must be `true` when a custom `endpoint` is used, otherwise virtual-hosted-style (`<bucket>.<endpoint-host>`) is used and requests fail.
- `sessionToken` (optional): Temporary credentials

\* If omitted, AWS default credential chain is used
\*\* Either `region` or `endpoint` must be specified

⚠️ **Database upgraded automatically.** Downgrade not supported.

## v1.2.2

**Breaking Changes**

- Removed the `Google ReCaptcha` verification code configuration item

  Update steps: Delete the `Google ReCaptcha` verification code configuration item and choose other verification methods, such as `Cloudflare Turnstile` verification code.

## v0.24

**Breaking Changes**

- **The `SendMailAddress` has been renamed to `SenderAddress`**

  Update steps: Modify the `SendMailAddress` configuration key to `SenderAddress`

## v0.18

- **New**: Preliminary support for i18n multi-language support, currently supporting Chinese, Japanese, and English

**Breaking Changes**

- **The database structure is no longer compatible with the previous version, and the database needs to be reinitialized. If you need to keep the data, please use the `v0.17` tag**

  Update steps: Delete or backup the original database and reinitialize the database

- **The default exposed port of the container has been changed from `80` to `8080`**

  Update steps: Modify the exposed port of the container to `8080`

  Reference: [Default ASP.NET Core port changed from 80 to 8080](https://learn.microsoft.com/en-us/dotnet/core/compatibility/containers/8.0/aspnet-port)

## v0.17

**Breaking Changes**

- **Moved the original `uploads` directory to `files/uploads`, removed the configuration item for this directory, and changed the location of the log storage**

  Update steps: Move the original `uploads` directory to `files/uploads`, remount the relevant directories, and delete the configuration item for the `uploads` directory and the original `log` directory.

## v0.16-v0.1

Please check the release notes: [https://github.com/GZTimeWalker/GZCTF/releases](https://github.com/GZTimeWalker/GZCTF/releases)
