You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
Eight focused commits — fixes user-reported bugs and adds the
most-requested workflow improvements for the *arr / homelab support
use-case.
### Bugs fixed
- **Copy to Clipboard could silently fail.** Added an
`execCommand('copy')` fallback path so the modern
`navigator.clipboard.writeText` failures (focus loss, browsers that
expose the API but throw) no longer leave the user staring at a
"Copied!" label that didn't actually copy.
- **Open PrivateBin / Gist / logs.notifiarr buttons** now call
`window.open` synchronously inside the click handler, then await the
clipboard write. Previously the await ate the user-activation token in
Safari and the popup was blocked.
- **Copy as Markdown was not Discord-compatible.** Discord doesn't
render pipe-table markdown — `|` shows literally and `_` / `*` chars in
volume paths trigger inline formatting. Added a dedicated **Copy MD
(Discord)** button that wraps each table in a fenced code block; the
existing GitHub markdown button is preserved as **Copy MD (GitHub)**.
### Features
- **User / Group comparison table** sits next to the Volume comparison.
Rows: `user:` directive, `PUID`, `PGID`, `group_add`, `UMASK`. The
single biggest *arr support question is "why can't service X read files
written by service Y?" — a UID/GID mismatch is now obvious in one glance
instead of buried in env dumps.
- **Derived `user` extra** in the service overview merges the `user:`
directive with `PUID`/`PGID` env vars, collapsing to a single value when
they match and annotating the directive when they conflict.
- **Default tab switched from YAML to Table.** Most users want the
structured overview first; YAML stays one click away.
- **Case-insensitive PUID / PGID / UMASK lookup** so a typo'd `Puid`
still surfaces.
### Redaction expansion
Closes the gaps identified in the redaction audit:
- Connection-string keys (`*_URL`, `*_URI`, `*_DSN`, `DATABASE_*`,
`REDIS_*`, `MONGO_*`, `POSTGRES_*`, etc.).
- Vendor token keys: AWS access/secret, Tailscale auth keys, GitHub
PATs, any `*webhook*`.
- `_FILE` suffix stripping for the Docker-secrets convention.
- Value-side scan: basic-auth credentials in URLs
(`scheme://user:pass@host`), `ghp_…` / `gho_…` etc., AWS access key IDs
(`AKIA…`), Tailscale (`tskey-…-…`), Discord/Slack webhook URLs,
JWT-shaped tokens.
### CI / Dependabot
- New **dependabot-automerge.yml** uses `gh pr merge --auto --squash`
for minor + patch updates, gated on CI green.
- Dependabot config now splits dev-deps from prod-deps so dev-only churn
auto-merges without dragging runtime deps along.
- ci.yml gets `permissions: contents: read` for least-privilege.
- prerelease.yml `paths-ignore` skips docs/config-only commits so README
edits stop spamming pre-release tags.
### Tests
231 tests pass (was 191). New coverage:
- Discord vs GitHub markdown formatters (fence count, section omission,
no `### ` in Discord output for older clients).
- User-group derivation across all combinations (directive only,
PUID/PGID only, both matching, both conflicting, partial, empty).
- Case-insensitive env lookup.
- 22 new redaction tests for connection strings, basic-auth URLs, vendor
tokens, webhook URLs, JWT, and `_FILE` suffix.
### Build
Single-file output is 82 KB / 26 KB gzipped — well under the 150 KB CI
gate.
## Test plan
- [x] `npm test` — 231 tests pass
- [x] `npx tsc --noEmit` — clean
- [x] `npm run build` — 82 KB output
- [ ] Smoke test on the deployed Pages URL after merge
- [ ] Verify Discord paste renders with monospace alignment
- [ ] Verify GitHub paste renders as a real markdown table
- [ ] Confirm Dependabot auto-merge fires on the next minor PR
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
* **New Features**
* Added Table, Cards, and YAML as independent output tabs.
* GitHub and Discord markdown export formats now available.
* User/Group comparison table displaying PUID, PGID, and UMASK details.
* Enhanced redaction for environment variables, URLs, and vendor
credentials.
* **Improvements**
* Improved clipboard compatibility across browsers.
* **Chores**
* Version updated to 0.2.0.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Copy file name to clipboardExpand all lines: README.md
+39-20Lines changed: 39 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,24 +6,41 @@ Browser-based tool that turns messy Docker Compose output into clean, readable d
6
6
7
7
## Features
8
8
9
-
### Service Cards
9
+
### Three views
10
10
11
-
Parsed per-service view showing image, ports, volumes, networks, environment, and extras (restart policy, hostname, depends_on, resource limits). Empty sections are omitted. Switch between YAML and Cards views with the tab bar.
11
+
-**Table***(default)* — service overview + User/Group comparison + Volume comparison, all in one place. Best for quickly spotting UID/GID mismatches or which services share which host paths.
-**YAML** — full sanitized YAML output, ready to paste into a gist.
12
14
13
-
### Markdown Table
15
+
### Copy as Markdown — GitHub or Discord
14
16
15
-
One-click "Copy as Markdown Table" generates a table with columns for Service, Image, Ports, Volumes, and Networks — paste directly into Discord or GitHub issues.
17
+
Two dedicated buttons:
18
+
19
+
-**Copy MD (GitHub)** — `### heading` + bare pipe-table markdown. Renders as a real table on GitHub.
20
+
-**Copy MD (Discord)** — `**bold**` labels + each table wrapped in a fenced code block. Discord doesn't render pipe tables, so the fence preserves alignment in monospace and prevents `_underscore_` / `*asterisk*` characters in volume paths from triggering inline formatting.
21
+
22
+
Both formats include the Services overview, User/Group comparison, and Volume comparison sections.
23
+
24
+
### User / Group merging
25
+
26
+
The "User" column merges three sources of identity into a single value so you can spot mismatches at a glance:
27
+
28
+
- explicit `user: <UID>:<GID>` directive
29
+
-`PUID` / `PGID` env vars (linuxserver convention)
30
+
-`group_add` and `UMASK` in the comparison table
31
+
32
+
Lookups are case-insensitive (so a typo'd `Puid` still surfaces). When the directive matches `PUID:PGID`, only one value is shown; when they conflict, the directive is shown with the env values annotated.
0 commit comments