v1.19.1
moghtech/komodov1.19.1Aug 24, 2025by mbecker20
AI Summary
A feature-rich release adding UI editing for config files, improved 'Deploy Stack If Changed' logic, and new server monitoring capabilities.
Key Highlights
- UI editing for config files (JSON, YAML, TOML, etc.)
- Deploy Stack If Changed now tracks config file changes
- Push images to multiple registries / organizations
- Track and view system load averages
- New SendAlert API for Actions / Procedures
New Features
- Config file support in Stacks
- Static Action Args configuration
- Server stats dashboard enhancements
- New RunStackService API
- Periphery version mismatch alerts
Full Release Notes
# Changelog
🚨 In order to use `config_files`, Periphery should also be updated to **v1.19.1**
❗️In addition to `ghcr.io`, images are now **also being published to `moghtech/komodo-*`** (Docker Hub)
### Stack `config_files` 🦎
One of the most common requests was to allow **in UI editing of `.env` files on server / in repo**. But really, there's not much difference between `.env` files and **any config file** which a Stack may be dependent on.
This release adds the ability to configure **all config files Stacks depend on**, such as json / yaml app config files, and **edit the files from the Komodo UI**. Just add the relative path to the files (from the Run Directory) to the Stack "Config Files".
Users which are already using "Additional Env File" feature will find, with no change, that they can now see / edit all their additional env files from the UI. The only difference is that "Additional Env Files" will _also_ be included in the `docker compose up` command (with --env-file flag), while "Config Files" will not.
The UI editors **support syntax highlighting for a couple of common formats, such as toml, yaml, json, ini, and shell / .env**. It will be challenging to add support for all the various formats used, so I won't personally accept requests to add more. The support is set up for extension though, please raise a PR adding support for additional syntax highlighting you would like and I am happy to review and merge it.
<img width="1419" height="809" alt="Screenshot 2025-08-22 at 1 28 34 AM" src="https://github.com/user-attachments/assets/9fd49c74-5429-44a4-97e1-6f7774787b7f" />
### Deploy Stack If Changed 🦎
The biggest issue with Deploy Stack If Changed up to v1.19.1 was that it would only Redeploy if one of the compose files changed. If the commit is only to config file, these changes would be missed.
Now in v1.19.1, "Config Files" and "Additional Env Files" will **also be tracked and diffed for changes**. This means changes made **only to a config / additional env file can also trigger deploy** using Deploy Stack If Changed.
Any change made to a **compose file** or **additional env file** will _always_ lead to a full Redeploy. However users are **able to configure what kind of behavior diffs to config files leads to, either globally for the Stack or at the service level**. For example, you can set diffs in a config file to only **restart a specific service or services**.
<img width="910" height="217" alt="Screenshot 2025-08-23 at 12 41 58 PM" src="https://github.com/user-attachments/assets/3f110967-f945-436d-808d-fc983c33c704" />
### Action Example 🦎
If you configure Stacks with all dependent `config_files`, you can create an Action like this:
```ts
const { REPO } = ARGS as { REPO: string };
if (!REPO) {
throw "Must pass REPO arg with linked repo name";
}
const repo_id = (
await komodo.read("ListRepos", { query: { names: [REPO] } })
)[0].id;
const stacks = (
await komodo.read("ListStacks", {
query: { specific: { linked_repos: [repo_id] } },
})
)
.filter((s) => s.info.state === Types.StackState.Running)
.map((s) => s.name)
.join("\n");
console.log("Deploying if changed:\n");
console.log(stacks);
console.log();
await komodo.execute("BatchDeployStackIfChanged", { pattern: stacks });
```
It is re-usable in multiple Procedures, which can wrap the Action an hardcode the actual Repo.
You then setup webhooks for the Procedure on push, or can schedule the Procedure to run at polling intervals.
### Community Contributions 🦎
This last week saw a ton of **end-to-end feature development** in community contributions, and I wanted to highlight them here:
- **Stack**: New `execute` API -- [**RunStackService**](https://docs.rs/komodo_client/latest/komodo_client/api/execute/struct.RunStackService.html) -- in #732 by @bpbradley
- Analogous to [`docker compose run`](https://docs.docker.com/reference/cli/docker/compose/run/)
- **Server**: Now includes **Core - Periphery version mismatch** alerts to highlight this issue for Users. #748 by @MP-Tool
- **Server**: Track and view **system load averages** both real-time and historically. #761 by @jackra1n
- **Server**: New **system stats** focused server table available on toggle. #761 by @jackra1n
- **UI**: Enhance server stats dashboard in #746 by @MP-Tool
- **UI**: Enhance confirm menus accepting "Enter" to confirm in #750 by @MP-Tool
- Improve rustdocs in #743 by @MP-Tool
### Resource
- **Build**: Push images to **Multiple registries / organizations**
- Using this to now publish images to `moghtech/komodo-*` (docker.io)
- **Action / Procedure**: You can now configure static **Action Args** using the Procedure Config UI
### Misc
- New `execute` API -- **SendAlert**
- Broadcast custom alert messages from within Actions / Procedures