Changes since last release:
- 📄 Add Mail controller (create, show, update), model, routes, and migration 1d7b130 @Esquivar2
- 📄 Add MailIdAdd component, update list UI and locales, and add mails API 96c25e5 @Esquivar2
- 📄 Refactor mail API: add createOne helper, improve create/show controllers, add getProjectPath helper cd6dfdb @Esquivar2
- 📄 Fix mail helper input: use mailId string instead of criteria object 5e12ae0 @Esquivar2
- 📄 Add API client auth (client_id and client_secret) and create-card endpoint ef8483d @Esquivar2
- 📄 add: support mailId on board level, remove mailIds when deleting board and list, update create endpoint to handle both boardId and listId 3fc0d88 @Esquivar2
- 📄 add: button to create mailId for a list 90d0227 @Esquivar2
- 🐞 fix: add missing exports for button to create mailId for a list 4bf443f @Esquivar2
- 📄 Add test Mail button and client/server changes for MailId display; format server code c05dde5 @Esquivar2
- 📄 add MailStep with reset/update button, fix backend mail update 9081255 @Esquivar2
- 📄 add mail id delete and copy; update client/server integration 527f4f5 @Esquivar2
- 📄 fix eslint warnings ee0badb @Esquivar2
- 📄 add MailListStep component with basic user's mail_ids list for List and delete logic 607691e @Esquivar2
- 📄 extend MailListStep for board mail_ids and show context 85adb2d @Esquivar2
- 📄 add socket handlers for mail create, update, delete 7c7f9e4 @Esquivar2
- 📄 add: endpoints to add labels, memberships, tasks, and attachments for 4gaBoardsNotifications API client af70612 @Esquivar2
- 🐞 fix: Fixed migrations after rebase + other minor issues 56c35bb
- 🐞 fix: minor adjustments after migration fix 32e806a @Esquivar2
- 📄 add: add bootstrap and configure scripts for notifications client (api-client) 34993b2 @Esquivar2
- 🌟 feat: Added bootstrap for email notifications, added helpers for apiClients 7b282d2
- 🐝 refactor: mails -> mailTokens 0a33403
- 🌟 feat: Dotenv config quiet 3f75c5c
- 🐞 fix: MailToken table, board_id is nullable 3e3e948
- 🐞 fix: MailToken routes 1ddf95d
- 🌟 feat(user-prefs): add API client settings (wip) ee231b5 @Esquivar2
- 🐞 fix: Changed migrations order 40c36ea
- 🌟 feat: Add envelope icon aa31dde
- 🌟 feat: Added mailToken Activities 3235377
- 🌟 feat: Improved mailTokens server side code (added meta updates, actions, unified files structure) 6ff5ca2
- 🌟 feat: Improved mail tokens selectors 7e9fc6f
- 🌟 feat: Added copy, reset icons 00a8e19
- 🐞 fix: Fixed updateMailToken api route 02abb6c
- 🌟 feat: Reworked Mail Tokens List (basic) c512eac
- 🌟 feat: Added full emails to MailTokenList, disable MailTokenList if mailService is not available 5624cf2
- 🌟 feat(user-prefs): add notification types selector for API client settings ddd0a5d @Esquivar2
- 🌟 feat(user-prefs): add polish PL translations 5d30a40 @Esquivar2
- 🐝 refactor: Renamed API_KEY actions to API_CLIENT actions 27c18e4
- 🌟 feat: Added ActivityMessage for mail tokens, updated lang 00ba179
- 🌟 feat: Removed option to regen mail token for other user via UI (server-sdie already removed) 6016284
- 🌟 feat: Improved mail token broadcasts: create, update, delete b4c5cf9
- 🌟 feat: Fully support mailTokens for projectManagerCreate, Delete 6a934a5
- 🐞 fix: Fixed sidebar mailTokens loading via boardFetch on click e4ec64b
- 📄 Send notifications to 4gaBoardsNotifications API (initial) 43462d2 @Esquivar2
- 🐞 fix: Removed not needed action data: MAIL_TOKEN_DELETE 12fb87d
- 🐞 fix: Fixed auto-release posts date format c774856
- 🌟 feat: add notification batching system with cron c5071b2 @Esquivar2
- 🌟 feat: Added Api permissions f99012f
- 🌟 feat: Added show secret popup ed596f3
- 🌟 feat: Added apiClient create popup 0dcabc0
- 🌟 feat: Added checkbox2 util (checkbox future replacement) 3d12b75
- 🌟 feat: Added optional title to DateText 4ba67e3
- 🌟 feat: Added apiClient actions and logic (client-side) 1e08d03
- 💄 chore(deps): Removed node-cron from main dir ceff5f9
- 🌟 feat: Added apiClients management server-side ff34808
- 🌟 feat: Added apiClient update e57df63
- 🌟 feat: Setup new permissions for 4gaBoardsNotifications ae996c4
- 💊 clean: Removed not needed createdBy, updatedBy - apiClient 629aa73
- 🌟 feat: Removed apiClients action label field, stopped updating core on internal apiClient update 9e786be
- 🌟 feat: Exposed lastUsedAt for ApiClients in AuthenticationSettings a0d7ae7
- 🌟 feat: Added ActivityMessage for ApiClient 71ac659
- 🌟 feat: Implemented apiClient deletedAt 8fcc099
- 🐝 refactor: Started Checkbox2 replacement 0e52307
- 🐝 refactor: Checkbox2 replacement p2 8ca3b6f
- 🐝 refactor: Checkbox2 replacement p3 (changed - notifications styles picker - conflicting) 5994997
- 🐝 refactor: Checkbox2 replacement p4 8407d7f
- 🐝 refactor: Finished Checkbox refactoring 855896c
- 💄 chore(deps): Bump multiple packages 11876e3
- 🐞 fix: Removed depreciated: i18n interpolation.format, removed parseDatePostProcessor 3a998b7
- 💄 chore: Always restart nodemon 078d260
- 🐞 fix: Check for deletedAt: null in apiClients 7819d5b
- 🌟 feat: Added mailTokens get list id api 66010a6
- 🌟 feat: Added permission for mailTokens.getListId API 75947a6
- 🌟 feat: Sort permissions by name at ApiClientStep 3888718
- 🐞 fix: Delete ApiCLients on user delete 5dd0a10
- 🐞 fix: ShowSecretStep showing old clientSecret for split second on update (when app still has old secret) bd9f2c2
- 🌟 feat: Show clientId and clientSecret in ShowSecret dialog be1a4c1
- 🌟 feat: Created permission groups (client-side) e.g. comments., changed all permissions to [''] 8ca9aef
- 🌟 feat: ApiClients permissions checks - server side 5ad525a
- 🌟 feat: Simplified card create one process (default position) 7cddd8f
- 🌟 feat: Added copyClientId to AuthSettings 2fc7743
- 📄 refator: Simplified apiClient lastUsedAt update a1c3ae4
- 🌟 feat: remove notification_aggregation_scope from user preferences 3749e0d @Esquivar2
- 📖 docs: Removed top comment from routes a78b376
- 💊 clean: Simplified migration for production (as it is not yet released) e451732
- 🌟 feat(api): new board endpoints to fetch labelId/userId by name 87a8606 @Esquivar2
- 🌟 feat: Cleanup NotificationTypeSelecor, minor api fix, prepared for notification batch changes 95754e3
- 🌟 feat: Notification batching changes, simplified structure, changed migrations (db_update) 0417a2f
- 🐝 refactor: Used position-gap from config custom e787200
- 📄 reafactor: Changed api names for board/user-by-name, label-by-name 41079da
- 🔙 revert: Restored parseDatePostProcessor 1f156ed
- 🌟 feat: Added emailNotificationsMarkReadAsDelivered to user prefs (db update) 3f3759a
- 🐝 - 🐞 refactor: Changed handle-email-notification to send-email, fix: Fixed non-utc string emails c5ccbcb
- 🐝 refactor: Changed emailNotificationsEnabledTypes to emailNotificationsTypes 1e607d1
- 🐝 refactor: Simplified notifications.createOne 7c935d4
- 🌟 feat: Added missing en lang keys c33fd3d
- 🧯 build: Added lang coverage test (with tags and vars support) 34daeaf
- 🐞 fix: Fixed lang coverage test for plurals 63ac429
- 🌟 feat: Added missing translations 6aad390
- 💊 clean: Added comment f38c6ee
- 💊 clean: Removed non-used file 74ca157
- 🎨 style: Cleanup NotificationTypesSelector 1dfca4b
- 💄 chore(deps): Bump multiple packages eb98137
- 🧯 build(deps): bump flatted f90bdf9
- 🧯 build(deps-dev): bump flatted 34c4e85
- 📄 Merge pull request #906 from RARgames/dependabot/npm_and_yarn/server/npm_and_yarn-eeacf2bf74 32faaa1
- 🧯 build(deps-dev): bump flatted 5c5dce0
- 📄 Merge pull request #905 from RARgames/dependabot/npm_and_yarn/npm_and_yarn-eeacf2bf74 b386120
- 🧯 build(deps): bump socket.io-parser fa7c1ba
- 📄 Merge pull request #909 from RARgames/dependabot/npm_and_yarn/client/npm_and_yarn-12bf46a12d 0bb1186
- 💄 chore(deps): Bump: msal-node cb7589f
- 🧯 build(deps): bump socket.io-parser 1a65c88
- 📄 Merge pull request #910 from RARgames/dependabot/npm_and_yarn/server/npm_and_yarn-12bf46a12d 375511d
- 🌟 feat: Added tag admin only for user/instance notification settings 3c01196
- 🌟 feat: Added lowercase postProcessor i18n cc7d4bd
- 🌟 feat: Simplified languages 056d81b
- 🌟 feat: Allow tasks without position 98015b8
- 🌟 feat: Added additional perm to notifications email-to-card 6ac8d56
- 🐞 fix: Always compare lowercased username, changed routes cb10426
- 🐞 fix: Updated permissions for internal notifications 509c3a9
- 🌟 feat: FindLabelByName always search in lowercase 2fcd39e
- 🌟 feat: Logger changes (combine extra vars and add tag 4ee446c
- 🌟 feat: Added cron/notification time defaults for production and development 4feaa7e
- 🧯 build(deps): bump knex from 3.1.0 to 3.2.4 in /server 1db76b9
- 📄 Merge pull request #912 from RARgames/dependabot/npm_and_yarn/server/knex-3.2.4 66c31c1
- 🧯 build(deps): bump react-router from 7.13.1 to 7.13.2 in /client 5807ff9
- 📄 Merge pull request #915 from RARgames/dependabot/npm_and_yarn/client/react-router-7.13.2 76150c2
- 🐞 fix: Fixed sidebar board actions missing props (mailToken props) 94e5b52
- 🐞 fix: Only show emailCardToBoard menu for users with canEdit rights f29e52e
- 🐞 fix: Show ListActionsPopup/view activity for every user 92fd270
- 🐞 fix: Show CardActivity for every board member bf6cc9f
- 🐞 fix: Show TaskActivity for every board member 23b84be
- 🐞 fix: Fixed ActivityMessage for cardCommentCreate 56878bd
- 🐞 fix: Show AttachmentActivity, CommentActivity for every board member 8cddd15
- 🐝 refactor: MembershipActionsStep 5162dd1
- 🐞 fix: Fixed actions not broadcasted correctly to action creator session dbd99fa
- 🌟 feat: Added email syntax explanation 120477b
- 🌟 feat: Added notification types to user prefs (db_update) 46c3fe0
- 💢 ci: Separated translation tests, added translation agent so user can just verify new translations instead of writing them from scrach 615bcd9
- 🌟 feat: Added translations for new keys (notifs) 26547c5
- 🌟 feat: Added is_created_via_api, mail_creator_address to card (db_update) 486b174
- 🌟 feat: Include mailCreatorAddress and isCreatedViaApi in ActivityMessage f1a4f4d
- 💢 ci: Updated test script to allow automated ci tests 18ceade
- 💄 chore: Moved jest deps to devDependencies 2e08ccb
- 🐞 fix(dev): Ignore rare case when server gets reloaded after file upload e.g. something.js fe6e1d3
- 🧯 build(deps): bump the npm_and_yarn group across 1 directory with 2 updates 741c7bf
- 📄 Merge pull request #917 from RARgames/dependabot/npm_and_yarn/npm_and_yarn-28e62d4307 a03b7ab
- 🧯 build(deps): bump the npm_and_yarn group across 1 directory with 2 updates a503fa5
- 📄 Merge pull request #919 from RARgames/dependabot/npm_and_yarn/client/npm_and_yarn-0095c1f564 05eeea0
- 🧯 build(deps-dev): bump picomatch 3774348
- 📄 Merge pull request #918 from RARgames/dependabot/npm_and_yarn/server/npm_and_yarn-66413a1f6e bdb14c8
- 🐝 refactor: Prepared to split language files 8d3d70d
- 💊 clean: Ignore eslint devDeps 28fd0c1
- 🌟 feat: Split en, pl translations 50878ce
- 🐝 refactor: ActivityMessage to contain only activity keys 055925a
- 🐝 refactor: Split rest languages d0bac95
- 💄 chore: Changed package manager to pnpm, enforced pnpm, updated docs bc127a9
- 💄 chore(fix): Fixed dependabot config, adjusted .gitignore, fixed dockerfile 083295a
- 🧯 build: Fixed auto-release 164dec1
- 🧯 build: Fixed docker build 5f60315
- 🐞 fix: Fixed board import 0fd8263
- 🧯 build: Add .prettierignore 4e89d5b
- 🧯 build: Added total size and analyze instructions 366850d
- 💢 ci: Changed dependabot settings to skip pnpm version enfrocment 1607d43
- 🧯 build: Added webpack code splitting ade86b6
- 💢 ci: Fixed dependabot root dir updates 8f839d5
- 💄 chore(deps): Bump multiple packages bbdb52f
- 🐞 fix: Fixed webpack code spliting to be prod only bae1d59
- 💄 chore(deps): Moved concurrently, husky, lint-staged to devDeps 9417e49
- 💄 chore(deps): Moved husky back to deps f6597a2
- 🧯 build: Bumped action deps 1e865a8
- 💄 chore: Changed eslint-plugin-import to eslint-plugin-import-x, updated configs fabd17b
- 💄 chore: Added new lint rules b5ecb8b
- 🐝 refactor: Moved locales into packages/locales 70a8ac1
- 🐞 fix: Fixed dockerfile after lang moved to locales package 49c7fed
- 💄 chore: Fixed eslint/prettier configs after changing to pnpm workspaces c85bf3d
- 🌟 feat: Use smaller variant of code syntax highlighting in md-editor bb81c74
- 🐞 fix: Updated translations agent 6f70938
- 🧯 build(deps): bump knex from 3.2.7 to 3.2.8 in /server d26d509
- 📄 Merge pull request #931 from RARgames/dependabot/npm_and_yarn/server/knex-3.2.8 db3c931
- 🧯 build(deps): bump filesize from 11.0.14 to 11.0.15 in /client 6da0a35
- 📄 Merge pull request #930 from RARgames/dependabot/npm_and_yarn/client/filesize-11.0.15 d6abf28
- 🐝 refactor: Moved locales into src dir f871497
- 🌟 feat: Added locales .gitignore c2ca1c4
- 🐞 fix: Added a fallback for webpack resolving dynamic langs ca7acc5
- 🐞 fix: Fixed server tests 8c47950
- 💄 chore(deps): Added i18next, @4gaboards/locales to server, downgraded react-dom for now 244c3bc
- 🌟 feat: Added build step for locales to support client+server(cjs) 8c73578
- 🧯 build: Fixed dockerfile to build packages correctly 201f29f
- 🐞 fix: Fixed lang test i8ncluding _virtual dir 26c80df
- 🐞 fix: Fixed type declarations warning when importing @4gaboards/locales 9993beb
- 🌟 feat: Moved ActivityTypes, ActivityScopes to packages/enums 0d4e05d
- 🌟 feat: Added packages/enums fcdf15b
- 🐝 refactor: Renamed enum files 461c55d
- 🐝 refactor: Renamed enum files 3ae2ebb
- 🐞 fix: locales/enums realtime reload in dev dea981c
- 🌟 feat: Moved truncateIf to locales utils 8b2d308
- 🐞 fix: Fixed locales coverage test 81152d8
- 🌟 feat: Added @4gaboards/utils package - truncateIf, timer d4cce32
- 🌟 feat: Changed eslint config locales to have more rules 742d846
- 🌟 feat: Changed numeric to name-based tags 9054bdc
- 🌟 feat: Shared activities renderer - initial version fdfa59a
- 🌟 feat: Removed obsolete componentByIndex from ActivityMessage, added mailTo link handling d1c6758
- 🐝 refactor: ActivityMessage, locales/renderer added deafults 62b1bc3
- 🌟 feat: Added scopes full names 69d7ca7
- 🌟 feat: Added activity server utils 77a87e7
- 🌟 feat: Added localization to send-email notification 960145a
- 🐞 fix: Fixed notifications grouping for user activities 4ff2940
- 🌟 feat: Changed notification email tag in title 8d20609
- 📖 docs: Updated dev start command 7e17203
- 🧯 build(deps): bump lodash in the npm_and_yarn group across 1 directory 2ab7c04
- 📄 Merge pull request #942 from RARgames/dependabot/npm_and_yarn/npm_and_yarn-52571dc7e9 118a2c9
- 💄 chore(deps): Bumped multiple packages 1547081
- 🐞 fix: Omit trailing whitespace on truncate ActivityMessage 1857d81
- 🌟 feat: Added link to CardModal mail author 6ade8f1
- 🌟 feat: Improved notifications email title and content 66899a7
- 🌟 feat: Added email verification for notifications (1st pass) 2bb353d
- 💢 ci: Build packages/locales before testing 57f3d04
- 🐞 fix: Notifications provide baseUrl instead of hardcoded value 8591e74
- 🐝 refactor: Moved request-email-verifications to user heleprs 73a2360
- 🌟 feat: Email verification: changed prevUserEmail, added redirect_url, fixed renderer USER_UPDATE verification 5bd46c8
- 🌟 feat: Added indicator in PreferencesSettings - notifications require email verification c273dfb
- 🌟 feat: Added language to request-email-verification to send verification email in correct lang 4123cc3
- 🌟 feat: Send instanceName for verification email 2d95694
- 🐞 fix: User Enumeration via Timing Side-Channel in Authentication Endpoint (1/2) - thanks @QiaoNPC 25775cc
- 🌟 feat: Added email verification resend button 031f7b9
- 🌟 feat: Improved lang test d15dc16
- 🌟 feat: Added rate limit per ip-inputUser (2/2) - thanks @QiaoNPC 3afbea4
- 🐞 fix: Fixed Import Path Traversal Leads to Arbitrary File Read - thanks @QiaoNPC ebc7605
- 🐞 fix: LABEL_UPDATE name activity b901e04
- 🌟 feat: Try to send notification email only once, mark user as not verified based on response 7adbab1
- 🌟 feat: Added isVerified to UsersSettings 5251bf7
- 📄 [PATCH] Release 527a58d
Install this release using: docker pull ghcr.io/rargames/4gaboards:3.3.5
View the changelog summary on the: 4ga Boards Blog