Release v.4.28 by Zabuzard · Pull Request #1437 · Together-Java/TJ-Bot

bot and others added 23 commits

February 10, 2026 09:00
* SuggestionsUpDownVoter should have UNKNOWN_MESSAGE exception gracefully with an INFO log instead #1414

* SuggestionsUpDownVoter should have UNKNOWN_MESSAGE exception gracefully with an INFO log instead #1414

Refactored and idomaticized

* SuggestionsUpDownVoter should have UNKNOWN_MESSAGE exception gracefully with an INFO log instead #1414

Refactored and idomaticized -- oops updated to make sure its similar via both react and create thread

* updated info log strings
* fix: allow forwarded messages with media in media-only channels

* fix: address review comments

* fix: remove unused import

* fix: apply code formatting
Bumps com.diffplug.spotless from 8.2.0 to 8.3.0.

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add utilities to detect and replace broken links.

* style: run spotlessApply

* Add utilities to detect and replace broken links V2

* Add utilities to detect and replace broken links V2

* Add utilities to detect and replace broken links V2

* Add utilities to detect and replace broken links V2

* Fixed link detection to handle 3xx redirects properly

Updated isLinkBroken() to only treat 4xx/5xx status codes as broken.
Previously 3xx redirects were incorrectly marked as broken links

also improved javadoc clarity throughout LinkDetection class

* Apply Spotless formatting and regenerate jOOQ sources

* commit:Broken links resolve requested changes

- Rename replaceDeadLinks to replaceBrokenLinks for consistency
- Use Optional instead of null values in stream processing
- Add convenience overload for extractLinks with default filters
- Update javadocs to be more generic and future-proof
- Move implementation details from javadoc to inline comments
- Replace 'ignored' lambda params with '_'

Resolves the review comments from @Zabuzard

* refactor: apply review feedback from @Zabuzard

* New fixed and changes

* refactor: simplify link filtering with helper method
Use streams thraughout and extract replacement logic into a separate
method for better readbility

* style(javadoc): remove gap between JavaDoc and method signature

Remove a reoccuring line gap introduced between each method's JavaDoc and
its corresponding method signatures to adhere to the overall style of the
project.

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>

---------

Signed-off-by: Chris Sdogkos <work@chris-sdogkos.com>
Co-authored-by: Chris Sdogkos <work@chris-sdogkos.com>
…#1423)

* feat(help): add manual reactivation button for inactive threads

* feat(help): add manual reactivation button for inactive threads

* refactor(help): consolidate interactor and cleanup reactivation logic

* refactor(help): share ComponentIdInteractor between listener and archiver

* refactor(help):minor formatting

* refactor: move thread reactivation logic to HelpThreadAutoArchiver

- Make HelpThreadAutoArchiver implement UserInteractor (name: thread-inactivity)

- Own ComponentIdInteractor for mark-active button ID generation

- Move onButtonClick/onInactivityButton from listener to archiver

- Remove mark-active routing and getComponentIdInteractor from listener

- Remove unused generateMarkActiveId from HelpSystemHelper

- Extract mark-active literal to constant (SonarLint S1192)

* refactor: minor cleanups as requested

* refactor: formatting as requested by christolis.

* add Ephermeral message on thread re-Activation
Bumps gradle-wrapper from 9.2.0 to 9.4.0.

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Analytics service setup with first use in Ping command

* Analytics: remove AnalyticsService injection in PingCommand and using it from BotCore;

* feat: update command usage analytics to use generated record methods

* Analytics: applies changes for zabuzard 1st CR;

* Analytics - Metrics > persist(): rename argument moment to happenedAt

* Analytics update

- Metrics: renaming persist() to processEvent();
- resources/db: V16 update, removing default value for happened_at column
* fixed github command

* CR firas
* added a bunch of metric events

* adjusted tests

* (merge conflict)

@Zabuzard Zabuzard added the release

Marks official releases and talks about them, i.e. merges from develop to master

label

Mar 13, 2026