Commit Graph

51 Commits (2c3c734bcc5e485a59145b78f5c783ca9a462cb7)

Author SHA1 Message Date
Nick Schonning 1d9ed91643
Move db migration CI to GitHub Actions ()
Nick Schonning 418c3a4699
Move Jest tests to filtered GitHub Action ()
Aaron Patterson fb8503e861
Upgrade to Ruby 3.2 ()
Co-authored-by: Matthew Ford <matt@bitzesty.com>
Nick Schonning c6b7e04120
Sync Node.js to 16.19 patch release ()
Shlee 99d2693071
Update circleci ()
* Update config.yml

* Update config.yml
Effy Elden 1e49be3328
Align everything to Node.js 16 ()
* Update nvmrc to Node.js 16

* Update package.json minimum Node engine to 16

* Update README requirements to Node.js 16

* Update devcontainer Node.js version to 16

* Update devcontainer Dockerfile Node.js choices to LTS versions that are still in support/maintenance

* Pin CircleCI Node image to 16

* Fix YAML type issue

* Update CircleCI Node.js to 16.18 to match 
mhkhung 1122697b37
3.0.5 version of cimg/ruby:3.0-node upgraded to node 18 ()
Node 18 caused build to fail
Claire 02851848e9
Revamp post filtering system ()
* Add model for custom filter keywords

* Use CustomFilterKeyword internally

Does not change the API

* Fix /filters/edit and /filters/new

* Add migration tests

* Remove whole_word column from custom_filters (covered by custom_filter_keywords)

* Redesign /filters

Instead of a list, present a card that displays more information and handles
multiple keywords per filter.

* Redesign /filters/new and /filters/edit to add and remove keywords

This adds a new gem dependency: cocoon, as well as a npm dependency:
cocoon-js-vanilla. Those are used to easily populate and remove form fields
from the user interface when manipulating multiple keyword filters at once.

* Add /api/v2/filters to edit filter with multiple keywords

Entities:
- `Filter`: `id`, `title`, `filter_action` (either `hide` or `warn`), `context`
  `keywords`
- `FilterKeyword`: `id`, `keyword`, `whole_word`

API endpoits:
- `GET /api/v2/filters` to list filters (including keywords)
- `POST /api/v2/filters` to create a new filter
  `keywords_attributes` can also be passed to create keywords in one request
- `GET /api/v2/filters/:id` to read a particular filter
- `PUT /api/v2/filters/:id` to update a new filter
  `keywords_attributes` can also be passed to edit, delete or add keywords in
   one request
- `DELETE /api/v2/filters/:id` to delete a particular filter
- `GET /api/v2/filters/:id/keywords` to list keywords for a filter
- `POST /api/v2/filters/:filter_id/keywords/:id` to add a new keyword to a
   filter
- `GET /api/v2/filter_keywords/:id` to read a particular keyword
- `PUT /api/v2/filter_keywords/:id` to edit a particular keyword
- `DELETE /api/v2/filter_keywords/:id` to delete a particular keyword

* Change from `irreversible` boolean to `action` enum

* Remove irrelevent `irreversible_must_be_within_context` check

* Fix /filters/new and /filters/edit with update for filter_action

* Fix Rubocop/Codeclimate complaining about task names

* Refactor FeedManager#phrase_filtered?

This moves regexp building and filter caching to the `CustomFilter` class.

This does not change the functional behavior yet, but this changes how the
cache is built, doing per-custom_filter regexps so that filters can be matched
independently, while still offering caching.

* Perform server-side filtering and output result in REST API

* Fix numerous filters_changed events being sent when editing multiple keywords at once

* Add some tests

* Use the new API in the WebUI

- use client-side logic for filters we have fetched rules for.
  This is so that filter changes can be retroactively applied without
  reloading the UI.
- use server-side logic for filters we haven't fetched rules for yet
  (e.g. network error, or initial timeline loading)

* Minor optimizations and refactoring

* Perform server-side filtering on the streaming server

* Change the wording of filter action labels

* Fix issues pointed out by linter

* Change design of “Show anyway” link in accordence to review comments

* Drop “irreversible” filtering behavior

* Move /api/v2/filter_keywords to /api/v1/filters/keywords

* Rename `filter_results` attribute to `filtered`

* Rename REST::LegacyFilterSerializer to REST::V1::FilterSerializer

* Fix systemChannelId value in streaming server

* Simplify code by removing client-side filtering code

The simplifcation comes at a cost though: filters aren't retroactively
applied anymore.
Claire 30658924a8
Fix test-related issues ()
* Remove obsolete RSS::Serializer test

Since , RSS::Serializer no longer has specific code for deleted statuses,
but it is never called on deleted statuses anyway.

* Rename erroneously-named test files

* Fix failing test

* Fix test deprecation warnings

* Update CircleCI Ruby orb

1.4.0 has a bug that does not match all the test files due to incorrect
globbing
Shlee 82e1c6216e
Update config.yml ()
Shlee 9fbe952789
Update config.yml ()
Claire 61ae6b3535
Add more migration tests ()
* Add migration tests for hide_network settings migration

* Add tests about suspended/suspended_at

* Add more tests regarding the results of migrations

* Fix migration test regarding stale conflicting remote account

* Add migration tests about AccountConversation
Josh Soref b5329e0035
Spelling ()
* spelling: account

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: affiliated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: appearance

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: autosuggest

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: cacheable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: component

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: conversations

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: domain.example

Clarify what's distinct and use RFC friendly domain space.

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: environment

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exceeds

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: functional

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: inefficiency

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: not

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: notifications

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occurring

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: position

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: progress

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: promotable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: reblogging

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: repetitive

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: resolve

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: saturated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: similar

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: strategies

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: success

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: targeting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: thumbnails

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unauthorized

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unsensitizes

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: validations

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: various

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
Shlee f6a3c27e9d
Update config.yml ()
Yamagishi Kazutoshi 298491a816
Remove protobuf dependencies ()
Claire a0e06c3c3e
Add more advanced migration tests ()
- populate the database with some data when testing migrations
- try both one-step and two-step migrations (`SKIP_POST_DEPLOYMENT_MIGRATIONS`)
Shlee c242c1d87a
Ruby 3.0.2 Upgrade ()
* Update .ruby-version

* Update Gemfile

* Update Gemfile.lock

* Update Dockerfile

* Update check-i18n.yml

* Update config.yml

* Update config.yml
Shlee 1114935e64
[CircleCI] Test using Postgres 14 ()
* Update config.yml

* Update config.yml
Yamagishi Kazutoshi 9cdf8ac148
Improve CircleCI config ()
* Improve CircleCI config

* Enable PAM only when needed

* Remove Ruby 2.6
Shlee 229f5d1681
NodeJS 14 support - circleci/docker/.nvmrc ()
* Update config.yml

* Update Dockerfile

* Update .nvmrc

* Update Dockerfile

* NodeJS 10 is EOL.

* Update package.json

* Update README.md

* Update Vagrantfile

* Update Dockerfile

* Update Dockerfile
Yamagishi Kazutoshi 1db28332b5
Add Actions for check i18n ()
Claire 566fc90913
Add Ruby 3.0 support ()
* Fix issues with POSIX::Spawn, Terrapin and Ruby 3.0

Also improve the Terrapin monkey-patch for the stderr/stdout issue.

* Fix keyword argument handling throughout the codebase

* Monkey-patch Paperclip to fix keyword arguments handling in validators

* Change validation_extensions to please CodeClimate

* Bump microformats from 4.2.1 to 4.3.1

* Allow Ruby 3.0

* Add Ruby 3.0 test target to CircleCI

* Add test for admin dashboard warnings

* Fix admin dashboard warnings on Ruby 3.0
David Cook f2d977914e
Set bundle config in local file, and set path ()
Shlee a1062df1e1
Fix the circleci packages for Buster. ()
* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update .circleci/config.yml

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>

* Update config.yml

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Eugen Rochko 60408fa3ef
Change CircleCI test output ()
Shlee ae7e3f0933
Update config.yml ()
David Cook 05d83cb07d
Set BUNDLE_PATH in CircleCI ()
ThibG 1051de0165 Fix Gemfile.lock ()
* Use bundle install in deployment mode for Continuous Integration to catch Gemfile.lock issues

* Fix deprecation warnings

* Fix Gemfile.lock

* More changes to catch Gemfile.lock issues
Shlee 827e590d8e Drop support for Ruby 2.4 from CircleCI ()
* Update config.yml

* Update Gemfile

* Update README.md

* Update Gemfile

* Update Gemfile

* Update Gemfile

* Update README.md

* Update README.md
ThibG 630b5136ec Add CircleCI task to test migrations ()
Shlee e326b0dda1 Upgrade CircleCI testing to Ruby 2.4-2.7 ()
* Update config.yml

* Update Gemfile
Shlee 7a81346d55 Circleci - Upgrade to Buster Images ()
* Update config.yml

* Update Gemfile.lock
Eugen Rochko 9361981388
Add missing locale file for ga and add rake task to check for it ()
* Add missing locale file for ga and add rake task to check for it

* Update lib/tasks/repo.rake

Co-Authored-By: Yamagishi Kazutoshi <ykzts@desire.sh>

* Fix check-i18n build
Shlee db28bb487b Pushed CircleCI docker images to more recent V ()
Eugen Rochko 65efe892cf
Fix check-i18n builds ()
* Fix check-i18n builds

* Remove check for missing plural forms
ThibG eb3b9e22bd Fix CircleCI ()
ashleyhull-versent 29484f6555 Replace Ruby 2.3 with 2.6 in CircleCI ()
* Update config.yml

* Update Gemfile

* dropping ruby 2.3

2.3 EOL date: scheduled for 2019-03-31

* Updating docker containers

* Update Gemfile
Eugen Rochko 26fe37c414
Update i18n-tasks and change CircleCI command ()
* Update i18n-tasks and CircleCI command

* Fix 

* Update i18n-tasks

* Fix ast
Eugen Rochko 9b5348240e
Add consistent interpolations check to CircleCI ()
* Add consistent interpolations check to CircleCI

* Fix locale strings using wrong variables
Eugen Rochko df3a7e724d
Fix missing plural keys ()
* Update i18n-tasks to feature-missing-plural-keys

* Fix pluralizations with missing keys in Arabic

Fix 

* Add i18n-tasks missing-plural-keys to CircleCI
takayamaki 33976c8ecc fix: Execute PAM authentication tests on CircleCI ()
and use 'if' option of context block
ThibG 5059989cc7 Use CircleCI workflows for ruby dependencies ()
* Add “bundle clean” suggestion from CircleCI doc

Cf. https://circleci.com/docs/2.0/caching/#bundler-ruby

* Use workspaces instead of caches for ruby gems

Cache are not guaranteed to be available, while the test jobs *require* their
depencies to run. Workspaces are thus more suitable.

One downside is that the order of workspace layer additions need to be
deterministic, which is why install-ruby{2.3,2.4} now depend on
install-ruby2.5.
ThibG d425d30804 Use workspace instead of caching for built assets ()
Tests cannot run without built assets, and we want
exactly the matching assets. This is not a cache.
Renato "Lond" Cerqueira 4045b50bd6 Restore support to ruby 2.3, add ruby 2.3 to circle ci ()
This replace calls of String#match? with rails Regex#match?
This follows the same idea used to keep Rails 5.2 compatible with Ruby
2.2.2 in https://github.com/rails/rails/pull/32973
Yamagishi Kazutoshi 1337ca837b Add CONTINUOUS_INTEGRATION: true to .circleci/config.yml ()
Yamagishi Kazutoshi ac788ad47e Disable simplecov on CircleCI ()
* Disable simplecov on CircleCI

* Remove --format progress
Yamagishi Kazutoshi 8c35d163a5 Port travis_retry for CI ()
* Port travis_retry for CI

* Add license
Yamagishi Kazutoshi 1c3ace23cb Remove unnecessary hyphen from restore_cache key ()
Yamagishi Kazutoshi 3bf6da1ffc Move precompile step to build stage ()
Yamagishi Kazutoshi b8f0cfd6e3 Add parallel test processors ()