- isHarborRegistry: derive scheme and port from the registry URL via
parseRegistryUrl instead of hardcoding https:// so HTTP-only mirrors and
non-443 ports are detected (same scheme handling as getRegistryAuthHeader).
- isHarborRegistry: only cache the detection result when a definitive answer
was obtained; a transient network error no longer pins "not Harbor" for the
whole TTL and keeps returning _catalog 403s after Harbor recovers.
- getHarborBasicAuth: trim username/password (pasted credentials with trailing
whitespace silently broke Basic auth).
- harborListRepositories: implement real cross-project pagination for the
no-orgPath case (enumerate every project and all repos, paginate the
flattened list) so >100 projects / >100 repos no longer truncate silently
with a hardcoded hasMore=false.
- harborSearchRepositories: sanitize the search term against Harbor's query
grammar (, = ~ ( )) so special characters can't break or alter the q filter;
paginate the project list as well.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Harbor denies access to the V2 _catalog endpoint for robot accounts
(scope registry:catalog:* returns an empty JWT). This adds automatic
Harbor detection and falls back to the native Harbor project API
(/api/v2.0/projects/{name}/repositories) for both catalog listing
and image search.
- Detect Harbor via WWW-Authenticate header + /api/v2.0/ping (cached 5min)
- List repositories through Harbor project API with pagination
- Search repositories using Harbor's q=name=~ filter
- Transparent fallback: no configuration change required
Fixes#360
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Bark as a supported Apprise notification protocol.
Supported URL formats:
- bark://bark_key uses the official Bark server at https://api.day.app/
- bark://host/bark_key uses a custom Bark server over HTTP
- barks://host/bark_key uses a custom Bark server over HTTPS
Bark notifications are sent with POST JSON payloads containing the device key, title, and body. The notification settings modal now
lists Bark examples in the Apprise URL placeholder and support text.
Add `extraHosts` option to `runContainer` and `runContainerWithStreaming` so arbitrary `HostConfig.ExtraHosts` entries can be passed when spawning containers.
Expose `getOwnExtraHosts()` from `host-path.ts` and forward the cached entries into scanner and self-updater containers, ensuring custom host aliases (e.g. internal registry hostnames) are available inside those sidecars without additional user configuration.
Add mmost:// and mmosts:// (secure) Apprise URL support for Mattermost
incoming webhooks. Supports optional botname override and custom paths.
- Add sendMattermost() function following existing notification patterns
- Update NotificationModal with Mattermost in examples and description
Enhanced the sendNtfy function to support Bearer token authentication in addition to Basic auth. Now, URLs in the format token@host/topic will use Bearer tokens, improving flexibility for different notification server setups.