# February 17, 2026

***

## Merge Builds

### 🔀 Merge Builds — Partial Updates for Large Games

{% hint style="success" %}
**NEW FEATURE:** Upload only changed or new files into an existing build, instead of re-uploading the entire game!
{% endhint %}

Merge builds are designed for large games where only a small portion of the content changes between updates. Instead of uploading a full 20 GB build, you upload a ZIP containing only the modified files and the system creates a new build with the changes merged in.

**How it works:**

1. Select a **baseline build** — any completed, deployed build (including previous merge builds)
2. Upload a ZIP with **only the changed/new files**
3. The backend copies the baseline content to a new build and applies your changes on top
4. The result is a **new independent build** — the baseline stays untouched
5. Assign the new merge build to an environment when ready

**Key benefits:**

* **Faster uploads** — upload only what changed, not the entire game
* **Same storage** — merge builds are full builds with their own R2 content
* **Safe rollback** — baseline is never modified, rollback = switch environment back
* **Chainable** — merge into a merge build (merge builds are eligible baselines)
* **File removal** — optionally remove files from the baseline during merge

***

### 🖥️ CLI — Interactive Baseline Selection

{% hint style="success" %}
**NEW:** The CLI shows a rich selection prompt when creating merge builds!
{% endhint %}

When creating a merge build in interactive mode, the CLI fetches eligible builds from the API and presents them in a selection list with detailed build info:

```bash
Merge build? [y/n] (n): y
Loading eligible builds...
Select the baseline build to merge into:
  ⌨️  Enter Build ID manually
> Build #42 (v1.3) ● Production | 2026-02-10 14:30 | 2.4 GB | 1,203 files
  Build #45 (merge) (v1.4) ● Staging | 2026-02-12 09:15 | 2.5 GB | 1,250 files
  Build #38 (v1.2) No environment | 2026-02-05 11:00 | 2.1 GB | 1,150 files
```

**Each build shows:**

| Field         | Description                                                         |
| ------------- | ------------------------------------------------------------------- |
| Build ID      | The unique build identifier                                         |
| (merge) tag   | Indicates the build is itself the result of a merge                 |
| Version       | Patch version (e.g., v1.3)                                          |
| Environment   | Which environment(s) this build is assigned to, or "No environment" |
| Date          | When the build was created                                          |
| Deployed size | Total size of the deployed patch content                            |
| File count    | Number of files in the build                                        |
| Build notes   | First 40 characters of the build notes (if any)                     |

**Manual fallback** — you can always select "Enter Build ID manually" to type an ID directly.

**CLI command-line usage:**

```bash
# Merge build with baseline selection
gamelaunchercloud-cli upload -a 1 -f "ChangedFiles.zip" -b 42 -n "Hotfix v1.3.1"

# Merge build with file removal
gamelaunchercloud-cli upload -a 1 -f "ChangedFiles.zip" -b 42 --removed-paths "OldFile.dll,Legacy/OldModule.dat"
```

***

### ✂️ CLI — Remove Files from Build

{% hint style="success" %}
**NEW:** Remove files from a build directly from the CLI — no ZIP upload needed!
{% endhint %}

The new `remove-files` command creates a new build from a baseline with specified files removed, without uploading anything:

```bash
# Remove files using command-line options
gamelaunchercloud-cli remove-files -a 1 -b 42 -p "Data/OldFile.dll" -p "Legacy/Module.dat" -n "Removed deprecated files"
```

**Interactive mode** — select "✂️ Remove Files from Build" from the main menu:

```bash
What would you like to do?
  📤 Upload Build
  📊 Check Build Status
  🔄 Retry Failed Build
> ✂️  Remove Files from Build
  📋 List My Apps
```

The interactive flow guides you through app selection, baseline build selection (with the same rich build list), path entry, and optional notes.

**Path validation** — the CLI validates entered file paths against the actual build files before submitting. Invalid paths are rejected with a clear error message.

**Command options:**

| Option       | Alias | Description                                 | Required |
| ------------ | ----- | ------------------------------------------- | -------- |
| `--app`      | `-a`  | Application ID                              | Yes      |
| `--build`    | `-b`  | Baseline Build ID to remove files from      | Yes      |
| `--paths`    | `-p`  | File paths to remove (can specify multiple) | Yes      |
| `--notes`    | `-n`  | Build notes for the new build               | No       |
| `--no-watch` |       | Don't watch build progress after creation   | No       |

***

### 🌍 CLI — Environment Management

{% hint style="success" %}
**NEW:** Manage environments directly from the CLI — list, create, delete, and assign builds!
{% endhint %}

The new `environments` command group lets you manage your app environments without leaving the terminal:

```bash
# List all environments for an app
gamelaunchercloud-cli environments list -a 1

# Create a new environment
gamelaunchercloud-cli environments create -a 1 -n "beta"

# Delete an environment
gamelaunchercloud-cli environments delete -a 1 -n "beta"

# Assign a build to an environment
gamelaunchercloud-cli environments assign-build -b 42 -e 3
```

**Interactive mode** — select "🌍 Manage Environments" from the main menu:

```
What would you like to do?
  📤 Upload Build
  📊 Check Build Status
  🔄 Retry Failed Build
  ✂️  Remove Files from Build
> 🌍 Manage Environments
  📋 List My Apps
```

The interactive flow presents a sub-menu with all environment actions:

```
🌍 Environment Management
  📋 List Environments
  ➕ Create Environment
  🗑️  Delete Environment
  🔗 Assign Build to Environment
  ← Back
```

**List environments** displays a formatted table:

| Column       | Description                               |
| ------------ | ----------------------------------------- |
| ID           | Environment ID                            |
| Name         | Environment name                          |
| Active Build | Currently assigned build ID, or "None"    |
| Enabled      | Whether the environment is active         |
| System       | Whether it's a system-managed environment |
| Access Code  | Access code if configured                 |

**Assign build** — when assigning a build to an environment, the CLI shows a confirmation message:

```
⚠  IMPORTANT: This action will set Build #42 as the active build for Environment #3.
Users will receive this build as their next update.

Are you sure you want to continue? [y/n] (y):
```

**Delete environment** — in interactive mode, only non-system environments are shown. A confirmation prompt is required before deletion.

**Subcommand reference:**

| Subcommand     | Options                                            | Description                      |
| -------------- | -------------------------------------------------- | -------------------------------- |
| `list`         | `--app, -a` (required)                             | List all environments for an app |
| `create`       | `--app, -a`, `--name, -n` (both required)          | Create a new environment         |
| `delete`       | `--app, -a`, `--name, -n` (both required)          | Delete an environment            |
| `assign-build` | `--build, -b`, `--environment, -e` (both required) | Assign a build to an environment |

***

## Dashboard

### 🎨 Redesigned App Environments Section

{% hint style="success" %}
**IMPROVED:** The Environments section in the App Builds tab has been completely redesigned with a new layout and a launcher preview panel!
{% endhint %}

<div data-full-width="true"><figure><img src="/files/eEwOM4WOu8JmemsAxKWe" alt=""><figcaption><p>IMPROVED - App Environments section and new preview</p></figcaption></figure></div>

The environments list now features a cleaner, more informative layout:

**Launcher Preview panel** — a new sidebar on the right side shows a real-time preview of how the selected environment looks in the launcher:

* Displays the **app banner/logo**
* Shows an **Environment dropdown** reflecting the selected environment
* Renders the **Play button** using the app's actual accent color
* Includes the **settings gear icon** just like the real launcher
* Updates dynamically as you switch between environments

***

### 🔄 Merge Builds in Environment Selection

{% hint style="success" %}
**NEW:** Merge builds appear in the environment build selection dialog!
{% endhint %}

<div data-full-width="true"><figure><img src="/files/7rkbT7syAPekc7VicrVs" alt=""><figcaption><p>NEW - Merge Build in Dashboard</p></figcaption></figure></div>

* **Merge builds are selectable** — since they have their own complete content, they can be assigned to any environment
* **Rollback** — done by selecting a different build in the environment dialog

***

### 🗑️ Remove Files from Build

{% hint style="success" %}
**NEW:** Remove specific files from any completed build directly from the Dashboard!
{% endhint %}

<figure><img src="/files/kvWKHOJi6EEDRz85gbft" alt=""><figcaption><p>NEW - Remove Files from Build Dialog</p></figcaption></figure>

<figure><img src="/files/Q8ysgFedwgxHVoGzR8Vm" alt=""><figcaption><p>NEW - Build Details Remove File Button</p></figcaption></figure>

Each completed build now has a **"Remove Files"** action button (✂️). Clicking it opens a **two-panel dialog**:

* **Left panel** — enter file paths to remove (one per line), optional build notes, and see real-time path validation
* **Right panel** — browse all files in the build with search filtering; click any file to add it to the removal list

**Features:**

* **File preview panel** — see every file in the build with size information before deciding what to remove
* **Click-to-add** — click any file in the preview to instantly add its path to the removal list
* **Path validation** — entered paths are validated against the actual build files in real-time, with invalid paths highlighted
* **Original build untouched** — the source build is never modified
* **Creates a new merge build** — the result is a full, independent build you can assign to any environment
* **No upload required** — the backend copies the baseline content and removes the specified files server-side

**Use cases:**

* Remove a deprecated plugin or DLL
* Clean up legacy assets between versions
* Remove test files that were accidentally included

***

### 📂 Build File Viewer and Revamped Build Details

{% hint style="success" %}
**NEW:** View all files inside any completed build directly from the Dashboard — no download needed!
{% endhint %}

<div data-full-width="true"><figure><img src="/files/XC5EvzKL9tZSULRshC8g" alt=""><figcaption><p>NEW - Build File Viewer</p></figcaption></figure></div>

Each completed build in the build details page now has a **"View Files"** toggle button. Clicking it expands an inline file viewer showing every file in the build:

* **Search filtering** — quickly find files by name or path
* **File size display** — see the size of each file
* **File count** — total number of files shown in the header
* **Download Raw** — link to download the raw `VersionInfo.info` file
* **No download required** — browse the entire build contents without downloading the build

***

### 🔗 Link Only Mode — Configuration

{% hint style="success" %}
**NEW FEATURE:** Set any app as "Link Only" so the play button opens a URL instead of triggering a download!
{% endhint %}

<div data-full-width="true"><figure><img src="/files/lpNiuVcjReIX7VGc2UoI" alt=""><figcaption><p>NEW - Link Only Mode for Apps</p></figcaption></figure></div>

Link Only Mode is designed for games or apps hosted on external platforms, or any scenario where you want the launcher to redirect users to a URL rather than manage a local installation.

**How it works:**

1. Go to **App Settings → Platforms** and enable **Link Only Mode**
2. Enter the **destination URL** (e.g., your website, a Discord invite)
3. Optionally customize the **Button Text** and **Status Text** from a list of predefined options
4. The launcher's play button will open the URL in the user's default browser instead of downloading

The Platforms tab now includes a **Link Only Mode** card with:

* **Toggle switch** — enable or disable link-only for each platform
* **URL input** — the destination URL that opens when the user clicks play
* **Button Text dropdown** — select from 13 predefined button labels (or leave the default "Open")
* **Status Text dropdown** — select from 9 predefined status messages displayed below the play button (or "None" for no status text)
* **Live preview** — an interactive preview chip showing exactly how the play button will appear in the launcher, including the external link icon and the selected button text

### 🎯 Per-Instance Launch Argument Overrides

{% hint style="success" %}
**NEW:** Define custom launch arguments for each individual instance when using Multiple Executions!
{% endhint %}

<figure><img src="/files/TFl9Mdhl91z2rfzeihU4" alt=""><figcaption><p>NEW - Instance Argument Overrides</p></figcaption></figure>

When an app is configured with **Multiple Executions**, you can now override the global **Launch Arguments** on a per-instance basis. This is useful for multi-client setups where each instance needs different parameters (e.g., different client slots, screen positions, or server roles).

**How it works:**

1. Go to **App Settings → Platforms** and ensure **Multiple Executions** is enabled
2. In the **Launch Arguments** field, use the `{{instance_id}}` placeholder to inject the instance number automatically — e.g., `-clientIndex {{instance_id}}`
3. For finer control, click **"+ Add Override"** under **Instance Argument Overrides** (Primary or Secondary) to define completely custom arguments for a specific instance number
4. Instances without an override use the global Launch Arguments (with `{{instance_id}}` resolved)

**`{{instance_id}}` placeholder:**

| Instance | Launch Arguments               | Resolved Value   |
| -------- | ------------------------------ | ---------------- |
| 1        | `-clientIndex {{instance_id}}` | `-clientIndex 1` |
| 2        | `-clientIndex {{instance_id}}` | `-clientIndex 2` |
| 3        | `-clientIndex {{instance_id}}` | `-clientIndex 3` |

**Instance Argument Overrides:**

* Each override consists of an **instance number** and a **custom argument string**
* Overrides take **full priority** — the global Launch Arguments are completely replaced for that instance
* Add and remove overrides dynamically with the **"+ Add Override"** and **delete (✕)** buttons
* Empty overrides are automatically filtered out on save
* The `{{instance_id}}` placeholder is also supported inside overrides

**Example use case — Unity multi-client:**

| Instance | Override Arguments                                                   |
| -------- | -------------------------------------------------------------------- |
| 1        | `-clientIndex 1 -screen-fullscreen 1`                                |
| 2        | `-clientIndex 2 -screen-fullscreen 0 -screen-width 800`              |
| 3        | `-clientIndex 3 -screen-fullscreen 0 -screen-width 800 -popupwindow` |

***

## Launcher Desktop

### **File Verification Speed Improvements**

{% embed url="<https://youtu.be/cEoWJVaTT5w>" fullWidth="true" %}
File Verification Benchmark - Special thanks to *TCG World* for allowing us to use the game for this demonstration.
{% endembed %}

### Local Checksum Cache — Skip Re-Hashing Unchanged Files

{% hint style="success" %}
**NEW:** The launcher now caches file checksums locally, dramatically reducing verification time on subsequent launches!
{% endhint %}

Previously, every time the launcher verified a game's integrity (on launch, repair, or update check), it had to read and hash **every file on disk** — even files that hadn't changed since the last check. For large games with thousands of files, this could take minutes.

The new **Local Checksum Cache** (`checksums.json`) stores each file's xxHash64 hash alongside its last-modified timestamp and size. On subsequent verifications, the launcher performs a fast metadata check (a stat call taking \~microseconds) instead of re-reading and hashing the entire file (\~milliseconds to seconds per file).

**How it works:**

1. On first verification, all files are hashed normally and their checksums are stored in the local cache
2. On subsequent verifications, the launcher checks each file's `LastWriteTimeUtc` and `Size` against the cached entry
3. If metadata matches → the cached hash is reused instantly (cache hit)
4. If metadata changed or entry is missing → the file is re-hashed and the cache is updated (cache miss)
5. Stale entries (files removed from the manifest) are automatically pruned

**Key details:**

| Aspect         | Detail                                                                   |
| -------------- | ------------------------------------------------------------------------ |
| Cache location | `%LocalAppData%\GameLauncher\Cache\Apps\{gameId}\checksums.json`         |
| Hash algorithm | xxHash64                                                                 |
| Persistence    | Atomic write (temp file + move) to prevent corruption                    |
| Error handling | Cache failures are non-blocking — the download flow is never interrupted |
| Cache pruning  | Entries for files no longer in the manifest are automatically removed    |

**Performance impact:**

* First launch: no change (all files must be hashed)
* Subsequent launches: **up to 90%+ faster** verification for unchanged files
* A stat call (\~microseconds) replaces a full file-read + hash (\~milliseconds to seconds)

***

### Segmented File Verification — Smarter Batch Processing

{% hint style="success" %}
**NEW:** File verification now groups files into logical segments for significantly more efficient processing!
{% endhint %}

Previously, the launcher processed each file individually with unbounded parallelism, which could overwhelm the thread pool for games with 20,000+ files. The new **Segmented File Verification** groups files into logical segments before processing:

* **Bundle segments** — files that belong to the same Smart Bundle are grouped together by their `BundleId`
* **Directory segments** — non-bundled files are grouped by their parent directory

This transforms \~20,000 individual file operations into \~100–300 segment-level operations, processed with bounded parallelism based on CPU core count.

**How it works:**

1. The `FileSegmenter` reads the manifest and groups files by bundle or directory
2. Segments are processed in parallel with `MaxDegreeOfParallelism = Environment.ProcessorCount`
3. Within each segment, files are checked sequentially (cache-first, then hash if needed)
4. Results are aggregated at the segment level

**Key benefits:**

* **Prevents thread pool starvation** — bounded parallelism instead of spawning thousands of tasks
* **Better disk I/O patterns** — files in the same directory are read together, improving sequential read performance
* **Bundle-aware** — files from the same Smart Bundle are verified as a group
* **Combined with checksum cache** — segments with fully cached files complete almost instantly

**Additional improvement:**

* File read buffer increased from 4 KB to **64 KB** for better disk throughput during hashing

***

### 🔗 Link Only Play Button

{% hint style="success" %}
**NEW:** The launcher fully supports Link Only apps with localized text and auto-scaling buttons!
{% endhint %}

<figure><img src="/files/tPJQy1Xe2zLOoasBi69S" alt=""><figcaption><p>NEW - Link Only Mode</p></figcaption></figure>

When a game is configured as Link Only, the Desktop launcher:

* **Opens the URL** in the user's default browser when the play button is clicked
* **Displays the custom button text** — translated to the launcher's language for predefined options, or shown as-is for custom text
* **Shows the custom status text** below the play button — also translated for predefined options
* **Auto-scales long text** — the play button uses a Viewbox to automatically shrink text that would otherwise overflow
* **Skips all download logic** — no verification, no patching, no update checks for link-only apps
* **Supports 7 languages** — English, Spanish (MX), Thai, Simplified Chinese, Portuguese (BR), Hebrew, and French

***

### Connection Error Screen

{% hint style="success" %}
**NEW:** A dedicated error screen now appears when the launcher cannot load data from the server or local cache!
{% endhint %}

<div data-full-width="true"><figure><img src="/files/XYpsiYSaK0ONg1xhZ2vO" alt=""><figcaption><p>NEW - Connection Error Screen</p></figcaption></figure></div>

When the launcher fails to retrieve the launcher manifest from both the API server and the local cache, it now displays a **Connection Error** screen instead of showing a blank or broken UI.

The screen provides clear troubleshooting steps:

* **Check your internet connection** and try again
* **VPN issues** — try disabling it or switching to a different country. Some regions (e.g., China, Russia) may have network restrictions; in that case, try using a VPN
* **Firewall or antivirus** — make sure it's not blocking the application
* **Run as Administrator** — try running the launcher with elevated permissions
* **Contact the launcher administrator** if the problem persists

A **"Retry Connection"** button allows the user to attempt reconnecting without restarting the launcher.

***

### Connection Diagnostics Window

{% hint style="success" %}
**NEW:** A standalone diagnostics window runs 7 automated checks to help users and administrators identify connection issues!
{% endhint %}

<div data-full-width="true"><figure><img src="/files/eo87KrYlk1ZflEsmXLTE" alt=""><figcaption><p>NEW - Diagnostics Window</p></figcaption></figure></div>

The new **Connection Diagnostics Window** is a dedicated tool that runs a comprehensive suite of network checks and presents the results in a clear two-column layout — troubleshooting recommendations on the left, detailed diagnostic results on the right.

**7 Automated Checks:**

| Check          | What it tests                                                                    |
| -------------- | -------------------------------------------------------------------------------- |
| **Internet**   | HTTP request to `google.com` — verifies basic internet connectivity              |
| **DNS**        | Resolves the API hostname — checks DNS resolution and shows resolved IPs         |
| **API Health** | Calls the API health endpoint — validates the backend is reachable and healthy   |
| **CDN**        | Requests the CDN base URL — confirms CDN reachability and response status        |
| **SSL**        | Validates the API SSL certificate — checks expiration date and issuer            |
| **Clock**      | Compares local time with the API server time — detects clock drift               |
| **Firewall**   | Inspects Windows Firewall rules — checks inbound/outbound rules for the launcher |

**Smart result display:**

* Each check shows a green ✅ or red ❌ icon with detailed result text (status code, response time, resolved IPs, certificate info, etc.)
* **User-friendly error messages** — technical exceptions like "No such host is known" are translated into clear descriptions (e.g., "DNS resolution failed — Could not resolve api.gamelauncher.cloud")
* The **Copy** button copies all diagnostic results to the clipboard for easy sharing with support, including raw error details for failed checks
* A **retry counter** tracks how many times diagnostics have been run in the current session

**Three-state left panel:**

* **Running** — shows a neutral stethoscope icon with "Connection Diagnostics" while checks are in progress
* **All Passed** — shows a green checkmark with "All Checks Passed" when every check succeeds
* **Errors Found** — shows the warning icon with "Connection Error" and troubleshooting steps when any check fails

**Fix Firewall button** — when the firewall check detects blocking rules, a dedicated button appears to automatically fix the Windows Firewall rules for the launcher executable.

**Accessible from multiple entry points:**

* **Connection Error panel** — "Run Diagnostics" button on the main error screen
* **Offline indicator** — click the offline status icon in the top navigation bar
* **Launcher Settings** — "Run Diagnostics" button in the Launcher settings tab

***

### Per-Instance Launch Argument Resolution

{% hint style="success" %}
**NEW:** The launcher resolves `{{instance_id}}` and per-instance overrides at launch time — each instance gets the correct arguments automatically!
{% endhint %}

When launching a game configured with Multiple Executions, the Desktop launcher now:

* **Resolves `{{instance_id}}`** — replaces the placeholder with the actual instance number (1, 2, 3, …) for each process
* **Applies per-instance overrides** — if the Dashboard defines a custom argument string for a specific instance, it completely replaces the global arguments for that instance
* **Works across all launch paths** — normal launch, optimized mode, and multi-instance launch all resolve arguments correctly
* **Smart process detection** — when arguments contain `{{instance_id}}` or per-instance overrides, the launcher matches running processes by executable path only (skipping argument comparison) to avoid false negatives during optimized mode monitoring

**Resolution order for each instance:**

1. Check if a **per-instance override** exists for this instance number → use it as-is (with `{{instance_id}}` resolved)
2. Otherwise, use the **global Launch Arguments** with `{{instance_id}}` replaced by the instance number

***

### Fixes

#### 🐛 Build Version Not Updating After Game Updates

{% hint style="warning" %}
**FIX:** The build version displayed below the play button now correctly updates after a game download or update completes.
{% endhint %}

Some users reported that after updating a game, the version label below the play button still showed the version from the original installation — even after multiple updates.

This was a visual-only bug. The game files were always updated correctly on disk, but the launcher UI was not refreshing the version display after completing a download. This has been fixed so the version label now updates immediately after every download or update finishes.

***

#### 🐛 Launched Apps Not Closing When Launcher Exits

{% hint style="warning" %}
**FIX:** All launched game processes are now terminated when the launcher is closed — preventing orphaned processes from running indefinitely.
{% endhint %}

Previously, when the user closed the launcher (from the tray icon "Exit" menu, the window close button, or a force shutdown), any games that had been launched would continue running as orphaned processes. The launcher only stopped its internal monitoring timers but never terminated the actual game processes.

Now, when the launcher exits through **any** shutdown path:

* All monitored game processes are killed along with their entire process tree
* Monitoring timers are disposed
* A fallback mechanism retries the kill without the process tree flag if the first attempt fails
* The cleanup runs in both the normal shutdown (`CleanupServices`) and the force shutdown (`ForceShutdown`) paths

***

#### 🐛 News UI Improvements

{% hint style="warning" %}
**FIX:** Several visual issues in the news slideshow have been corrected.
{% endhint %}

* **"Read More" button misalignment** — the button was rendering incorrectly in certain layouts; it now displays properly within the news card
* **Default placeholder image** — when a news entry has no image configured, a generic default image is now shown instead of a blank or broken area

***

## API

### 📡 New Endpoint — Merge Candidates

{% hint style="success" %}
**NEW:** `GET /api/cli/build/merge-candidates/{appId}` endpoint for listing eligible baseline builds.
{% endhint %}

* Returns completed, deployed builds for an app that can serve as merge baselines
* Includes environment assignment info (which environments each build is assigned to)
* Both original and merge builds are included (all completed + deployed builds)
* Used by the CLI interactive mode and available for third-party integrations

***

### 📡 New Endpoint — Remove Files from Build

{% hint style="success" %}
**NEW:** `POST /api/AppBuild/remove-files` endpoint for creating builds with files removed.
{% endhint %}

* Creates a new merge build from a baseline with specified files removed — no ZIP upload needed
* Validates permissions, baseline build status, and removed paths
* Enqueues the merge build job immediately for background processing
* Used by the Dashboard "Remove Files" dialog and the CLI `remove-files` command

***

### 📡 New Endpoint — Build File List

{% hint style="success" %}
**NEW:** `GET /api/AppBuild/build-files/{appBuildId}` endpoint for retrieving all files in a build.
{% endhint %}

* Returns the complete list of files in a deployed build, parsed from `VersionInfo.info`
* Each file includes its relative path and size in bytes
* Used by the Dashboard file viewer, the remove-files dialog for path validation, and the CLI for path validation
* Requires the build to be in a completed/deployed state

***

{% hint style="info" %}
**Need Help?** Check out our [Help Center](https://help.gamelauncher.cloud/) or join our [Discord Community](https://discord.gamelauncher.cloud)!
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gamelauncher.cloud/help/changelog/2026/february-17-2026.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
