* Add logic to enable generic hook expiry
* Add storage for hook expiry warnings.
* Migrate generic hooks / add expiry field
* Allow reporting a specific error and status code for generic webhooks
* Report the specific error when a message fails to send
* Refactor input class to better support datetime
* Remove single use of innerChild
* Add UI support for expiry configuration
* Add new packages
* Add warnings when the timer is about to expire.
* Add send expiry notice config option
* lint
* document new option s
* Fixup test
* Add tests for expiry
* Add textual command for setting a duration on a webhook.
* Add e2e test for inbound hooks.
* changelog
* Add a configuration option to force webhooks to expire.
* update config.sample.yml
* fix field not working
* Initial support for outbound webhooks.
* Refactor outbound into it's own connection type.
* Add support for media / encrypted media.
* Ensure we configure a sensible User Agent
* Add a test for outbound webhooks
* Checkpoint for feature completeness.
* Lint tidy
* Finish up media tests.
* changelog
* Add outbound documentation
* update default config
* fix tests
* Fix GitLab's ready for review hook
As far back as I could go in the docs (GitLab 14.10),
the keys for changes have been `previous` and `current`.
There is a `draft` change that
we can use directly
instead of guessing from the title.
The type of the value depends on
the key of the change.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
* Add changelog
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
---------
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
Co-authored-by: Will Hunt <will@half-shot.uk>
* Fix a namespace conflict.
* Add support for edits.
* Couple of bugfixes.
* changelog
* Support pkcs1 format keys.
* Add docs for official API.
* couple of cleanups
* Revert "Support pkcs1 format keys."
This reverts commit 157cc4ac1269ecdeb64529c51b79d11463cdbbfd.
* Split out queue and cache config
* Update usages of cache config,
* Update default
* Cleanup
* Make queue optional.
* config updates.
* changelog
* update spec config
* Update tests
* tweak import
* Update default config.
* fixup test
* Update config.sample.yml
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
Signed-off-by: Will Hunt <will@half-shot.uk>
* Update encryption.md
Signed-off-by: Will Hunt <will@half-shot.uk>
* Clear up worker config
Signed-off-by: Will Hunt <will@half-shot.uk>
* Update src/config/Config.ts
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
Signed-off-by: Will Hunt <will@half-shot.uk>
* update helm config
* move UserTokenStore.ts
* Port all the imports to new path.
* Port RSA handling to rust.
* Add tests.
* linting
* lint rust
* Remove unwraps / panics
* fix build script
* Ensure we store and check with algorithm and key was used.
* quieten false deadcode warnings
* changelog
* fix test imports
* lazy mock out UTS
* Refactor so that UserTokenStore is initiated by the time Bridge is created.
* update defaults
* replace if with match
* Use the magic of ?
* fmt
---------
Signed-off-by: Will Hunt <will@half-shot.uk>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
* Ensure atom feeds hash and prefix
* Add some fixing code for this.
* Remove feed fixer
* Refactor RSS feed tests a bit
* Add tests to ensure hashes do not change
* changelog
* Backoff RSS requests if a url repeatedly fails.
* Increase max backoff time to a day
* Add backoff for failing feeds.
* Remove unused finally
* Add this.feedLastBackoff
* Rewrite in rust.
* linting
* pop
* Optimise backoff function further
* Drop only!
* fix test
* lint
* lint further
* Better comments
* Fix urls calculation
* Remove testing URL
* Add some variance to speed up while loop
* correct comment
* Follow the advice and use a VecDeque as it's slightly faster.
* Vastly better shuffle method
* Speed up checking for previous guids.
* fix hasher function
* lint
* Content doesn't need to be calculated twice.
* Slightly more efficient iteration
* Improve performance of backoff insertion
* Configure feed reader
* lint
* Ensure appending and removing from the queue works as expected.
* Ensure we do keep urls that have been removed.
* lint
* Inc/dec metrics as queue items are added/deleted.
* Add comment
* tidy up
* Add command to list feeds in YAML format
* Add line breaks
* Add changelog
* Add a period in the help
* Add $URL to templates and add feed list format docs
* Use an optional arg on yaml list instead of a separate function
* Update changelog to include JSON format
* Ensure connection state always explicitly states all keys, even if some are undefined.
* changelog
* Fix type
* fix test types
* Add support for E2E testing
* Add CI job for e2e test
* Ensure integration test only runs when regular tests complete
* Add homerunner image
* Disallow concurrent runs
* Add concurrency to other expensive steps
* changelog
* Fix mq test
* Cache rust deps
* Drop only
* Use a shared key
* Update metrics.md
Made descriptions of metrics more consistent and some smaller improvements.
* Update README.md (#855)
* Update README.md
Smaller improvements. Fixed a typo.
* Create 855.doc
---------
Co-authored-by: Will Hunt <will@half-shot.uk>
* Update setup.md (#857)
* Update setup.md
Smaller improvements such as fixes for typos, also added an example on how to pass requests from Nginx
* Create 857.docs
* Rename 857.docs to 857.doc
---------
Co-authored-by: Will Hunt <will@half-shot.uk>
* Update workers.md (#858)
* Update workers.md
Fixed typos
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
* Create 858.doc
---------
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
Co-authored-by: Will Hunt <will@half-shot.uk>
* Update encryption.md (#860)
* Update encryption.md
Consistently spell Hookshot with an upper-case H as the first letter
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
* Create 860.doc
---------
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
Co-authored-by: Will Hunt <will@half-shot.uk>
* Update widgets.md (#859)
* Update widgets.md
Consistently spell Hookshot with an upper-case H as the first letter
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
* Create 859.doc
---------
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
Co-authored-by: Will Hunt <will@half-shot.uk>
* Drop Node 18, start testing Node 21 & update dependencies. (#862)
* Major package upgrades
* Update rust deps and fix a few things
* Drop 18 testing
* Use node 20
* lint rust
* lint
* changelog
* Drop usage of SVGs, use compound elements.
* Update widget API
* Better support for dark mode in widgets (#863)
* Major package upgrades
* Update rust deps and fix a few things
* Drop 18 testing
* Use node 20
* lint rust
* lint
* changelog
* Drop usage of SVGs, use compound elements.
* Update widget API
* Drop usage of SVGs, use compound elements.
* Add dark mode for widgets
* changelog
* Remove yarn-error.log
* Commit metrics changes
* Cleanup
---------
Signed-off-by: Joshua Hoffmann joshua.hoffmann@b1-systems.de
Co-authored-by: Will Hunt <will@half-shot.uk>
* Major package upgrades
* Update rust deps and fix a few things
* Drop 18 testing
* Use node 20
* lint rust
* lint
* changelog
* Drop usage of SVGs, use compound elements.
* Update widget API
* Add ability to respond to webhooks.
* Refactor hook handling code for simplicity
* Cleanup checkbox
* Ensure we can send a response even we send no content.
* Add docs
* changelog
* Reflect local and global state in the UI
* Revert CHANGELOG for now
* Emphasize Slack the service in webhooks docs
and not time slack
* Guard against falsey non-string values
---------
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
* quickjs test
* Replace vm2 with quickjs
* initalise -> initialise
* Remove unused transformation timeout time
* Don't assume quickModule is set
Also use whether it's set as the indicator of whether transformation
functions are allowed, instead of checking the config
* Refactor GenericHookConnectionState validation
- Do it in the constructor instead of in callers
- Make hookId mandatory so as to not drop it on some state updates
- Conflate a state event's state key with a connection state's name,
which was already the case in practice
* Refactor validateState
* Drop explicit any
Better to infer the type instead
* Always validate transformation fn
* Fix test
* Add changelog
* Fix disposal, validation, and printing
* Fix transformation error string formatting
Also refactor similar code
* Let invalid transformations run & fail
instead of pretending that one was never set
* Restore transformation timeout time
* Don't execute transformation fn when validating it
Instead, only compile it
* Revert unrelated changes
---------
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
* Remove Sled crypto store, use SQLite by default
on account of it being removed from the crypto-sdk
* Add changelog
* Don't start if Sled store config is set
* Bridge Gitlab comment replies as Matrix threads
* Persistently store Gitlab Discussion-Thread mapping
* Remove leftover debug line
* Denoise comment descriptions when they happen in Matrix threads
* Make comment debouncing time configurable
* Add some tests for Gitlab comments
* De-only Gitlab comment tests
* Linting
* Changelog
* Map multiple Gitlab discussions to a single Matrix thread
We debounce Gitlab comments, so multiple discussions can end up in one thread.
This ensures that replies to *any* of these discussions end up in the same thread.
* Add tests for the many-to-one reply case
* Move SerializedGitlabDiscussionThreads to Types
* Update changelog.d/758.feature
Co-authored-by: Will Hunt <will@half-shot.uk>
* Fix instructions for validating your config using Docker (#794)
* Fix instructions for validating your config using Docker
Fixes GH-787
* Changelog
---------
Co-authored-by: Tadeusz Sośnierz <tadeusz@sosnierz.com>
* Add more icons to GitHub messages (#795)
* Add more icons to GitHub messages
* Add merged icon
* Lint
* Add changelog
* Bump word-wrap from 1.2.3 to 1.2.4 (#799)
* Bump word-wrap from 1.2.3 to 1.2.4
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)
---
updated-dependencies:
- dependency-name: word-wrap
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Add changelog
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
* Update matrix-appservice-bridge to 9.0.1 (#800)
* Bump semver from 5.7.1 to 5.7.2 (#797)
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)
---
updated-dependencies:
- dependency-name: semver
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Will Hunt <will@half-shot.uk>
* 4.4.0
* 4.4.1
* Set the default commentDebouncMs for Gitlab in its Config
* Rename `approvalState` to something more fitting
* Update sample config
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Co-authored-by: Will Hunt <will@half-shot.uk>
Co-authored-by: Connor Davis <mail@connordav.is>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
* Various smaller changes
* Drop account data entirely
* Use max feed items
* Commit known working improvements
* Better status handlingh
* changelog
* Update changelog
* Add a note on Redis.
* Add proper HTTP tests
* Linty lint
* Tweaks
* New metrics woah
* Tweaks
* Add support for concurrent RSS feed reading
* Add feed concurrency polling
* Actually load all workers
* Ensure feed just sleeps if there are no urls to poll
* Fix map
* Update default config
* Update src/feeds/FeedReader.ts
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
* Update src/feeds/FeedReader.ts
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
---------
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>