Commit Graph
34 Commits
Author SHA1 Message Date
Symon 4a70e995d3 feat: add tooltips for icon buttons 2026-06-07 18:06:04 +03:00
Symon 55d0e2f877 Add negative label filtering for cards 2026-06-05 16:43:45 +03:00
Symon dcf8a6d748 fix: inherit active board filters when creating a card (#1663)
A card created while member/label filters were active was made without
any members or labels, so the all-or-nothing filter immediately excluded
it and the card vanished from the view.

After a card is created, assign the active filter users and labels to it
(reusing addUserToCard/addLabelToCard) so it stays visible. No-op when no
filters are active.
2026-06-04 20:31:01 +03:00
Symon 05979a460f feat: filter webhooks per project, board, and account
Adds optional project, board, and acting-user scope to each webhook so
events from a specific board or project can be routed to a single
endpoint without an external automation tool in the middle (closes
#1457).

A webhook now fires for an event only when every set scope matches:
empty scope still means "fire for everything", keeping existing
webhooks working unchanged. Scope filtering is centralized in the
sendWebhooks helper, which auto-derives projectId/boardId from the
event payload, so existing call sites are untouched.
2026-05-02 10:31:30 +03:00
Symon 52edbcc2f8 feat: add operator config options for Apprise notifications (closes #1576)
Adds three new environment variables that give instance operators control
over Apprise notification services, addressing GDPR and compliance concerns
around third-party data transfers.

## New environment variables

- APPRISE_ENABLED (default: true)
  Set to "false" to globally prevent users from creating Apprise notification
  services and to silently skip sending any Apprise notifications. Existing
  services in the database are preserved but not used while disabled.

- APPRISE_ALLOWED_SCHEMAS (default: empty — no restriction)
  Comma-separated allowlist of Apprise URL schemas (e.g. "slack,tgram").
  When set, only services whose URL schema appears in this list can be
  created or will be sent. Takes priority over APPRISE_BLOCKED_SCHEMAS.
  Uses Apprise's internal schema names (e.g. "tgram" for Telegram).

- APPRISE_BLOCKED_SCHEMAS (default: empty — built-in list applies)
  Comma-separated blocklist of Apprise URL schemas (e.g. "discord,slack").
  When set, replaces the built-in blocked list entirely. When empty, the
  built-in list (syslog, dbus, kde, qt, glib, gnome, macosx, windows)
  continues to apply as a fallback.

## Enforcement

Validation happens at two layers:

1. API layer (create endpoints for user and board notification services)
   Returns HTTP 403 when Apprise is disabled, HTTP 422 when the URL schema
   is not permitted. This gives users immediate feedback in the UI.

2. Python send layer (send_notifications.py)
   The schema config is passed as a JSON argument so the same allow/block
   rules apply at send time, guarding against services that were created
   before the config was tightened.

## Files changed

- server/config/custom.js — parse new env vars via existing envToArray helper
- server/utils/send_notifications.py — accept schemaConfig as argv[4]; replace
  hard-coded BLOCKED_SCHEMAS_SET with dynamic allowed/blocked resolution
- server/api/helpers/utils/send-notifications.js — short-circuit when disabled;
  pass schemaConfig JSON to the Python script
- server/api/helpers/notification-services/create-one-in-{user,board}.js — add
  appriseDisabled and schemaNotAllowed exits with schema validation logic
- server/api/controllers/notification-services/create-in-{user,board}.js — wire
  new exits to forbidden (403) and unprocessableEntity (422) responses
- server/.env.sample — document all three new variables with comments
2026-04-26 23:44:52 +03:00
Symon Baikov 9683227fbc feat: Add ability to move lists between boards (#1208) 2025-09-04 00:07:10 +02:00
Symon Baikov d8fbf2f909 feat: Add ability to hide completed tasks (#1210) 2025-07-21 18:33:02 +02:00
Symon Baikov b4be12eb28 fix: Update Greek translation (#1255) 2025-07-15 13:13:52 +02:00
Symon Baikov 70cadcd974 fix: Update Finnish translation (#1251) 2025-07-11 12:16:22 +02:00
Symon Baikov a8b9ac8165 fix: Update Turkish translation (#1239) 2025-07-07 12:03:14 +02:00
Symon Baikov 76c7be5063 fix: Update German translation (#1235) 2025-07-07 11:47:21 +02:00
symonbaikov 0fd2bd3bc5 Restore i18n.js to remove deletion from PR 2025-07-05 23:25:18 +03:00
symonbaikov ae0c23eada chore: remove unrelated config and locale files from feature branch 2025-07-05 23:09:01 +03:00
symonbaikov 334f7b2028 feat: add 'No member' filter for board cards 2025-07-05 23:07:22 +03:00
symonbaikov e1efe663a0 Add German (de-DE) translation and enable it in i18n config 2025-07-05 22:46:32 +03:00
symonbaikov ffb9693184 feat(api): allow setting custom fields when creating a card via API (closes #1155) 2025-07-04 21:37:11 +03:00
Symon Baikov 2d1a8658bb feat: Add Estonian translation (#1212) 2025-06-16 20:39:50 +02:00
Symon Baikov bdac15240f fix: Update Serbian (Cyrillic) translation (#1206) 2025-06-10 18:54:23 +02:00
Symon Baikov e24bb845c6 fix: Update Slovak translation (#1205) 2025-06-10 12:18:24 +02:00
Symon Baikov 240b01e694 fix: Update Romanian translation (#1203) 2025-06-09 23:42:44 +02:00
Symon Baikov 07483909b4 fix: Update Brazilian Portuguese translation (#1202) 2025-06-09 23:40:35 +02:00
Symon Baikov 84dc0385af fix: Update Dutch translation (#1201) 2025-06-09 12:35:31 +02:00
Symon Baikov 041199af8b fix: Update Korean translation (#1197) 2025-06-09 12:33:51 +02:00
Symon Baikov f72ac437b9 fix: Update Japanese translation (#1196) 2025-06-09 12:32:17 +02:00
Symon Baikov 128028c848 fix: Update Italian translation (#1195) 2025-06-09 12:30:12 +02:00
Symon Baikov 0f1e7ecc2c fix: Update Indonesian translation (#1194) 2025-06-08 13:11:03 +02:00
Symon Baikov 9ca49f1f51 fix: Update Hungarian translation (#1193) 2025-06-08 13:09:31 +02:00
Symon Baikov 8447f0c884 fix: Update French translation (#1192) 2025-06-08 13:08:17 +02:00
Symon Baikov 180984799c fix: Update Spanish translation (#1189) 2025-06-08 13:06:40 +02:00
Symon Baikov 037a9101c2 fix: Update Bulgarian translation (#1187) 2025-06-07 16:33:15 +02:00
Symon Baikov 754629e6a9 fix: Update Czech translation (#1185) 2025-06-07 13:52:33 +02:00
Symon Baikov 8bc1569242 fix: Responsive label color selector, improve action button styles (#1184) 2025-06-07 13:44:45 +02:00
Symon Baikov 6dbce8c790 feat: Add Finnish translation (#1180) 2025-06-06 18:00:13 +02:00
Symon Baikov b696fe0e4d feat: Add Greek translation (#1176) 2025-06-06 14:14:00 +02:00