] [--save-local-changes] [--wait\|--no-wait] [--wait-timeout ] [--profile ]...` | Deploy the branch's latest commit, or the given one. Waits for healthy containers when the stack's wait-for-healthy setting says so, unless `--wait` or `--no-wait` overrides it. |
+| `deploy --dry-run [--commit ] [--profile ]...` | Run every check a deploy runs before it pulls the images, and show how the compose configuration changes, without deploying (see [What is checked before a deploy](#what-is-checked-before-a-deploy)). |
+| `reclone ` | Move the clone aside and clone again at the deployed commit. |
+| `status [\|--all] [--json]` | Show what is deployed, failed and changed locally, without asking the remote. |
+
+`compose-git --help` explains a command and each of its options.
+
+`` is an `https://` address without a user name or password in it, an ssh address
+(`ssh://git@host[:port]/path` or `git@host:path`), or the path of a repository under `/mnt`. `--credential`
+is the name of a git credential (an HTTPS token) on the Credentials tab, for an `https://` address; an ssh
+stack uses its repository's deploy key. `` is the stack's exact folder name in the projects folder. `--clones-root` must be on a share,
+disk or pool, and the share must exist.
+
+Exit status: `0` success (for `check`: up to date), `1` failed, `2` the command line was not understood, `3`
+(`check`) a newer commit changes the stack's folder, `4` (`check`) a newer commit changes only files outside
+it. `check --all` exits `3` if any stack's folder changed, even when another could not be checked; otherwise
+`1` if any could not be checked; otherwise `4` if any has a newer commit outside its folder. If another operation on the same stack is running (a Start or Update from the web UI, say),
+`deploy` waits up to 30 seconds (`COMPOSE_LOCK_TIMEOUT`) for it to finish, then fails without changing
+anything. `convert`, `reclone` and `check` (when it has a newer commit to fetch) do not wait: they refuse to
+start while another operation on the stack is running, so run them again once it has finished.
+
+Without `--profile`, `deploy` uses the profiles the stack is running with, or else its default profiles, the
+same as Update in the web UI.
+
+## Other actions on a git stack
+
+The rest of Compose Manager treats a git stack like any other stack, using the commit that is checked out in
+the clone. Start, Stop, Update, autostart, auto-update and stopping the array all work as usual, with the same
+compose files and `.env` as a deploy. None of them fetch a new commit, run the checks above, or record a
+deployed commit: only `compose-git deploy` does that.
+
+- **Delete** removes the stack folder and leaves the clone (see [Limitations](#limitations)).
+- **Backup** saves the stack folder, not the clone, as for any stack whose compose file lives elsewhere. The
+ repository is the backup of the clone.
+- **Settings:** the Sources tab offers no compose path for a git stack. If the stack's `indirect` file is edited by
+ hand so it no longer names the compose file in the clone, the next deploy refuses, because it no longer matches
+ `git.json`.
+
+## Limitations
+
+- **An `https` server needs a certificate this server trusts.** A self-hosted git server with a self-signed
+ certificate is refused over `https`; reach it over ssh instead.
+- No submodules and no Git LFS: the clone checks out plain files only.
+- **The web UI's editor edits the file in the clone** (it says so above the file). The next deploy treats that
+ as a local change, and the editor lists it in a "Changed in the clone" box. Changes that must survive deploys belong in the plugin's override or the stack folder's
+ `.env`.
+- **Deleting a git stack leaves its clone** under the clones folder, and names it. Remove it by hand.
diff --git a/docs/user-guide.md b/docs/user-guide.md
index a670c1b8..bfe690f6 100644
--- a/docs/user-guide.md
+++ b/docs/user-guide.md
@@ -81,7 +81,7 @@ Compose Manager provides a Backup & Restore interface under **Settings → Compo
### Hiding and Filtering Compose Containers
-You can optionally hide compose-managed containers from the native Docker manager and Dashboard. Use the setting to toggle patching of the Docker page and enable server-side filters so only the desired containers/stacks are shown.
+Use **Hide Compose Containers from Docker Page** to hide Compose-managed containers from the native Docker Containers table when **Show Compose in Header Menu** is disabled (inline mode). Use **Hide Compose Containers from Docker Dashboard Tile** to hide them from the native Dashboard tile when **Show Dashboard Tile** is enabled. These display options avoid duplicate entries without changing how containers run; no legacy WebUI patch is required.
### Display Options
@@ -119,7 +119,3 @@ services:
```
The **Web UI** tab in the editor provides a visual interface for adding these labels.
-
-### Patching the Native UI
-
-Enable "Patch Web UI" in settings to show compose containers in the native Docker manager with stack grouping.
diff --git a/source/compose.manager/README.md b/source/compose.manager/README.md
index 42be301a..8baaf817 100644
--- a/source/compose.manager/README.md
+++ b/source/compose.manager/README.md
@@ -1,3 +1,3 @@
-**Compose Manager Plus**
+**Compose Manager Plus (Beta)**
A plugin for unRAID that installs Docker Compose and adds a management interface to the web UI.
diff --git a/source/compose.manager/compose.manager.settings.page b/source/compose.manager/compose.manager.settings.page
index 30103498..0f1a3c40 100755
--- a/source/compose.manager/compose.manager.settings.page
+++ b/source/compose.manager/compose.manager.settings.page
@@ -9,12 +9,6 @@ Lock="true"
include "/usr/local/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php";
require_once("/usr/local/emhttp/plugins/compose.manager/include/Defines.php");
$cfg = parse_plugin_cfg($sName);
-$ui_patch_button_type = (!$option_patch_ui && strcmp($cfg['PATCH_UI'], "true") == 0 && !isset($composemanDockerClientPatch)) ? "Button" : "Hidden";
-$ui_unpatch_button_type = (!$option_patch_ui && strcmp($cfg['PATCH_UI'], "false") == 0 && isset($composemanDockerClientPatch)) ? "Button" : "Hidden";
-
-$option_patch_ui = version_compare(parse_ini_file('/etc/unraid-version')['version'], '6.12.0-RC0', '>=');
-$ui_patch_help_class = $option_patch_ui ? "hidden" : "inline_help"; // hide help on 6.12+ (integration built-in) //
-
$projects_exist = intval(shell_exec("ls -l " . $compose_root . " | grep ^d | wc -l")) != 0;
@@ -658,7 +652,6 @@ $acePath = file_exists('/usr/local/emhttp/plugins/dynamix/javascript/ace/ace.js'