diff --git a/.decidim-version b/.decidim-version index 12a91df0e0b30..3edc695dcea5c 100644 --- a/.decidim-version +++ b/.decidim-version @@ -1 +1 @@ -0.26.4 +0.27.2 diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000000..811628826f16e --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ + +open_collective: decidim diff --git a/.github/actions/module-rspec/action.yml b/.github/actions/module-rspec/action.yml index 2ad1e16db6896..bdc49b056afbb 100644 --- a/.github/actions/module-rspec/action.yml +++ b/.github/actions/module-rspec/action.yml @@ -7,14 +7,18 @@ inputs: github_token: description: 'Github token' required: true - ruby-version: + ruby_version: description: 'Ruby Version' - default: "2.7.5" + default: "3.0.2" required: false - node-version: + node_version: description: 'Node version' default: '16.9.1' required: false + processor_count: + description: "Number or parallel jobs to run" + default: "4" + required: false runs: using: "composite" @@ -25,11 +29,11 @@ runs: GITHUB_TOKEN: " ${{ inputs.github_token }}" - uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ inputs.ruby-version }} + ruby-version: ${{ inputs.ruby_version }} bundler-cache: true - uses: actions/setup-node@v1 with: - node-version: ${{ inputs.node-version }} + node-version: ${{ inputs.node_version }} - name: Get npm cache directory path id: npm-cache-dir-path run: echo "::set-output name=dir::$(npm get cache)-${{ inputs.name }}" @@ -56,3 +60,9 @@ runs: name: Scanning Security issues on module working-directory: ${{ inputs.name }} shell: "bash" + - run: bundle exec rake parallel:create parallel:migrate + name: Parallel tests + shell: "bash" + working-directory: ./spec/decidim_dummy_app/ + env: + PARALLEL_TEST_PROCESSORS: " ${{ inputs.processor_count }}" diff --git a/.github/config.yml b/.github/config.yml new file mode 100644 index 0000000000000..cf7b595d5a5b9 --- /dev/null +++ b/.github/config.yml @@ -0,0 +1,14 @@ +# Configuration for request-info - https://github.com/behaviorbot/request-info +# +requestInfoReplyComment: > + It seems like you didn't give us much information about what you're trying to do here. + We would appreciate it if you could provide us with more info about this issue/PR! + +checkIssueTemplate: true + +checkPullRequestTemplate: true + +requestInfoOn: + pullRequest: true + issue: true + diff --git a/.github/stale.yml b/.github/stale.yml index d93c65225aa99..add96c6074f9d 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,7 +1,7 @@ # Number of days of inactivity before an issue becomes stale daysUntilStale: 60 # Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 +daysUntilClose: false # Ignore issues in a project exemptProjects: true # Ignore issues in a milestone @@ -14,8 +14,12 @@ exemptLabels: - "type: bug" # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. @carolromero & @andreslucena feel free to chime in. + Thank you for your contribution. This issue has been automatically marked + as stale because it has not had recent activity. + + Is this still relevant? If so, what is blocking it? Is there anything you + can do to help move it forward? + + @carolromero & @andreslucena feel free to chime in. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: false diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 9b735bb9a522e..7570018e38779 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -20,7 +20,7 @@ Individual workflows with changes: working-directory: ${{ env.DECIDIM_MODULE }} ``` -- `ci_comments.yml`: Runs tests for the JS files. Tests must run from the project root folder. You'll need to install NodeJS and the JS dependencies: +- `ci_javascript.yml`: Runs tests for the JS files. Tests must run from the project root folder. You'll need to install NodeJS and the JS dependencies: ```yml - uses: actions/setup-node@master @@ -32,8 +32,15 @@ Individual workflows with changes: name: Test JS files ``` -- Proposals specs are split in three workflows: +- Some specs are split in three workflows, so if we need to retry this particular workflow we don't need to retry all the module suite. For instance proposals: - `ci_proposals_system_admin.yml`: Runs the system specs for the admin section - `ci_proposals_system_public.yml`: Runs the system specs for the public section - `ci_proposals_unit_tests.yml`: Runs the unit tests + +- `ci_performance_metrics_monitoring.yml`: Runs Lighthouse metrics expectations against the app to detect any performance regression. The expectations can be found in `lighthouse_budget.json`, where a time is defined for each metric: + + - [First Contentful Paint](https://web.dev/first-contentful-paint/): 2 seconds + - [Speed Index](https://web.dev/speed-index/): 4 seconds + - [Time to Interactive](https://web.dev/interactive/): 5 seconds + - [Largest Contentful Paint](https://web.dev/lcp/): 2.5 seconds diff --git a/.github/workflows/ci_accountability.yml b/.github/workflows/ci_accountability.yml index 5b9916af2b891..ce4c56daedd8e 100644 --- a/.github/workflows/ci_accountability.yml +++ b/.github/workflows/ci_accountability.yml @@ -23,9 +23,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-accountability + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -61,7 +62,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_admin.yml b/.github/workflows/ci_admin.yml index 2851d6f87c63c..c9b344e1fe998 100644 --- a/.github/workflows/ci_admin.yml +++ b/.github/workflows/ci_admin.yml @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-admin + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -52,7 +53,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec --exclude-pattern 'spec/system/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/(?!system)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_admin_system_1.yml b/.github/workflows/ci_admin_system.yml similarity index 85% rename from .github/workflows/ci_admin_system_1.yml rename to .github/workflows/ci_admin_system.yml index 260b6342b38b3..5c5a1cd14b10d 100644 --- a/.github/workflows/ci_admin_system_1.yml +++ b/.github/workflows/ci_admin_system.yml @@ -1,4 +1,4 @@ -name: "[CI] Admin (system tests 1)" +name: "[CI] Admin (system tests)" on: push: branches: @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-admin + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -56,11 +57,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/*_spec.rb | sed -n "1,$(echo $half)p" | xargs) - bundle exec rspec $list_of_files + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec[^spec/system] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_api.yml b/.github/workflows/ci_api.yml index b74bc376cba6d..5ce7bf4506d06 100644 --- a/.github/workflows/ci_api.yml +++ b/.github/workflows/ci_api.yml @@ -19,9 +19,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-api + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -53,7 +54,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_assemblies.yml b/.github/workflows/ci_assemblies.yml index 2b1cfdebcf777..4c7c8a0defbba 100644 --- a/.github/workflows/ci_assemblies.yml +++ b/.github/workflows/ci_assemblies.yml @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-assemblies + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -56,7 +57,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_blogs.yml b/.github/workflows/ci_blogs.yml index 325afedc45462..3930887bded1e 100644 --- a/.github/workflows/ci_blogs.yml +++ b/.github/workflows/ci_blogs.yml @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-blogs + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -59,7 +60,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_budgets.yml b/.github/workflows/ci_budgets.yml index d42cb042f9bf9..ec5ac83370458 100644 --- a/.github/workflows/ci_budgets.yml +++ b/.github/workflows/ci_budgets.yml @@ -20,9 +20,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-budgets + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -58,7 +59,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_comments.yml b/.github/workflows/ci_comments.yml index cae48432a1f4c..9a50851a1a397 100644 --- a/.github/workflows/ci_comments.yml +++ b/.github/workflows/ci_comments.yml @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-comments + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -56,7 +57,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_conferences.yml b/.github/workflows/ci_conferences.yml index d424f7220c616..4fc4e87865af8 100644 --- a/.github/workflows/ci_conferences.yml +++ b/.github/workflows/ci_conferences.yml @@ -19,9 +19,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-conferences + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -57,7 +58,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_consultations.yml b/.github/workflows/ci_consultations.yml index 4824fc15a8f5b..001d35e9bd129 100644 --- a/.github/workflows/ci_consultations.yml +++ b/.github/workflows/ci_consultations.yml @@ -19,9 +19,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-consultations + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -57,7 +58,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_core_lib.yml b/.github/workflows/ci_core_lib.yml index f2b5e5766eab0..869e961e4676c 100644 --- a/.github/workflows/ci_core_lib.yml +++ b/.github/workflows/ci_core_lib.yml @@ -14,12 +14,14 @@ on: - "decidim-api/**" - "decidim-core/**" - "decidim-dev/**" + - "packages/**" env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-core + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -51,7 +53,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec spec/lib + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec[^spec/lib] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_core_system.yml b/.github/workflows/ci_core_system.yml index 7f8a56f6bb8d0..28d20e6d3fedf 100644 --- a/.github/workflows/ci_core_system.yml +++ b/.github/workflows/ci_core_system.yml @@ -17,9 +17,11 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-core + PARALLEL_TEST_PROCESSORS: 2 + DECIDIM_SERVICE_WORKER_ENABLED: true jobs: main: @@ -55,11 +57,17 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec spec/system + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: | + sudo Xvfb -ac $DISPLAY -screen 0 1920x1084x24 > /dev/null 2>&1 & # optional + bundle exec rake parallel:spec[^spec/system] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: SIMPLECOV: "true" + DISPLAY: ":99" - run: ./.github/upload_coverage.sh $DECIDIM_MODULE $GITHUB_EVENT_PATH name: Upload coverage - uses: actions/upload-artifact@v2 diff --git a/.github/workflows/ci_admin_system_2.yml b/.github/workflows/ci_core_system_ssl.yml similarity index 68% rename from .github/workflows/ci_admin_system_2.yml rename to .github/workflows/ci_core_system_ssl.yml index 4fea30c920bee..e466f1c2ef91b 100644 --- a/.github/workflows/ci_admin_system_2.yml +++ b/.github/workflows/ci_core_system_ssl.yml @@ -1,4 +1,4 @@ -name: "[CI] Admin (system tests 2)" +name: "[CI] Core (system specs SSL)" on: push: branches: @@ -11,16 +11,17 @@ on: paths: - "*" - ".github/**" - - "decidim-admin/**" - "decidim-core/**" - "decidim-dev/**" - - "decidim-participatory_processes/**" env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 - DECIDIM_MODULE: decidim-admin + DECIDIM_MODULE: decidim-core + PARALLEL_TEST_PROCESSORS: 2 + DECIDIM_SERVICE_WORKER_ENABLED: true + TEST_SSL: true jobs: main: @@ -39,11 +40,15 @@ jobs: --health-retries 5 env: POSTGRES_PASSWORD: postgres + validator: + image: ghcr.io/validator/validator:latest + ports: ["8888:8888"] env: DATABASE_USERNAME: postgres DATABASE_PASSWORD: postgres DATABASE_HOST: localhost RUBYOPT: '-W:no-deprecated' + VALIDATOR_HTML_URI: http://localhost:8888/ steps: - uses: actions/checkout@v2.0.0 with: @@ -52,15 +57,17 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} - run: | - count=$(ls spec/system/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/*_spec.rb | sed -n "$(expr $half + 1), $(echo $count)p" | xargs) - bundle exec rspec $list_of_files + sudo Xvfb -ac $DISPLAY -screen 0 1920x1084x24 > /dev/null 2>&1 & # optional + bundle exec rake parallel:spec[spec/system/data_consent/organization_spec.rb] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: SIMPLECOV: "true" + DISPLAY: ":99" - run: ./.github/upload_coverage.sh $DECIDIM_MODULE $GITHUB_EVENT_PATH name: Upload coverage - uses: actions/upload-artifact@v2 diff --git a/.github/workflows/ci_core_unit.yml b/.github/workflows/ci_core_unit.yml index 6364021bb915d..d194825824ecf 100644 --- a/.github/workflows/ci_core_unit.yml +++ b/.github/workflows/ci_core_unit.yml @@ -17,9 +17,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-core + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -51,7 +52,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec --exclude-pattern 'spec/{system,lib}/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/(?!(system|lib))'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_debates.yml b/.github/workflows/ci_debates.yml index 2e68aa6acae7b..3809e47a53f95 100644 --- a/.github/workflows/ci_debates.yml +++ b/.github/workflows/ci_debates.yml @@ -19,9 +19,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-debates + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -57,7 +58,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_dev_system.yml b/.github/workflows/ci_dev_system.yml index 9b63b096d3bc0..7b3071bf22c6a 100644 --- a/.github/workflows/ci_dev_system.yml +++ b/.github/workflows/ci_dev_system.yml @@ -16,9 +16,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-dev + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -50,6 +51,9 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} - run: bundle exec rspec spec/system name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} diff --git a/.github/workflows/ci_elections_system_admin_1.yml b/.github/workflows/ci_elections_system_admin.yml similarity index 89% rename from .github/workflows/ci_elections_system_admin_1.yml rename to .github/workflows/ci_elections_system_admin.yml index db42892332694..8b52f892a4769 100644 --- a/.github/workflows/ci_elections_system_admin_1.yml +++ b/.github/workflows/ci_elections_system_admin.yml @@ -1,4 +1,4 @@ -name: "[CI] Elections (system admin 1)" +name: "[CI] Elections (system admin)" on: push: branches: @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-elections + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -46,7 +47,7 @@ jobs: image: ghcr.io/validator/validator:latest ports: ["8888:8888"] bulletin_board: - image: codegram/decidim-bulletin-board:0.22.3 + image: decidim/decidim-bulletin-board:0.23.0 ports: ["8000:8000"] env: DATABASE_URL: postgresql://postgres:postgres@postgres/bb @@ -71,11 +72,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/admin/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/admin/*_spec.rb | sed -n "1,$(echo $half)p" | xargs) - bundle exec rspec $list_of_files + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec[^spec/system/admin] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_elections_system_admin_2.yml b/.github/workflows/ci_elections_system_admin_2.yml deleted file mode 100644 index 9e00e1479709f..0000000000000 --- a/.github/workflows/ci_elections_system_admin_2.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: "[CI] Elections (system admin 2)" -on: - push: - branches: - - develop - - release/* - - "*-stable" - pull_request: - branches-ignore: - - "chore/l10n*" - paths: - - "*" - - ".github/**" - - "decidim-admin/**" - - "decidim-bulletin_board/**" - - "decidim-core/**" - - "decidim-dev/**" - - "decidim-elections/**" - - "decidim-forms/**" - - "decidim-proposals/**" - -env: - CI: "true" - RUBY_VERSION: 2.7.5 - NODE_VERSION: 16.9.1 - DECIDIM_MODULE: decidim-elections - -jobs: - main: - name: Tests - runs-on: ubuntu-latest - if: "!startsWith(github.head_ref, 'chore/l10n')" - timeout-minutes: 60 - services: - postgres: - image: postgres:11 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_PASSWORD: postgres - bulletin_board: - image: codegram/decidim-bulletin-board:0.22.3 - ports: ["8000:8000"] - env: - DATABASE_URL: postgresql://postgres:postgres@postgres/bb - RAILS_ENV: test - SEED: 1 - IDENTIFICATION_PRIVATE_KEY: '{"kty":"RSA","n":"zMXsZpYPKkDlSmezX898y7zNOaJ7ENIN4kj4UhQ95Vm4HlgTpIs2VMMsO0eqynMaOR_G1mXdqbpbaJtXijBe4V8323QwGm6WVAa71E7pDXa5g6-uo5f8GePitN0YER9y2yNQN4uTaNzJiWV2uLBUYfMdj3SIif31YwLULHAOj3B_oleFK8coE_Qr3NzATcYBmsqE8AR4NljxTO6KDmP1SLdf5GBOBhOAIFbnL_Kpj2xkm7MS3hjMVKpiRhqA1UgX5oKZ8ixBv46fNJF0pBsHi3fHNjK9oZzgdx_AI-YFpdE_40-8bh_g9sWzxacqOM2-MdQLHbvRPEVltO3E8tr6I5YWrylcP7l9VD8OJeqjq2qFYHnGYdmLoD2XuXmI9EuBvSb9H4-qcartxZSIQCimKib_fxZvgrG1FSRRhK6YpvIdGv4-G2zfCCRsC4XD80TYI2bf-oYCoy7eU3_eVHFMV2yg4p1Wnuw2Vgq0edPL_bKaV9JvGx7F-U5juxNN0WZR9LzbPl4ReejzN95lyHgbj0nTH_u3bSpZmgJrQF-PwdnPcG46deVjJgUeosrlC4lQxVrRz0GL58BuFunnz2uYDBDrcJCiG60EbdkAFHjOcXU4wrUWATin7je_aqdBXhSnkTafcJAMvL7Y2Ld7vDge8nLqjAVlAi5am3rN0kqKT6M","e":"AQAB","kid":"a8e86f02ca27e1861bfc49e2a9a4614ca9068f8efdb6d42d19d3aab0eb2a31be"}' - DISABLE_DATABASE_ENVIRONMENT_CHECK: 1 - RAILS_SERVE_STATIC_FILES: enabled - DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL: true - env: - DATABASE_USERNAME: postgres - DATABASE_PASSWORD: postgres - DATABASE_HOST: localhost - RUBYOPT: "-W:no-deprecated" - ELECTIONS_BULLETIN_BOARD_SERVER: http://localhost:8000/api - steps: - - uses: actions/checkout@v2.0.0 - with: - fetch-depth: 1 - - uses: ./.github/actions/module-rspec - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/admin/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/admin/*_spec.rb | sed -n "$(expr $half + 1), $(echo $count)p" | xargs) - bundle exec rspec $list_of_files - name: RSpec - working-directory: ${{ env.DECIDIM_MODULE }} - env: - SIMPLECOV: "true" - - run: ./.github/upload_coverage.sh decidim-elections-system-admin $GITHUB_EVENT_PATH - name: Upload coverage - - uses: actions/upload-artifact@v2 - if: always() - with: - name: screenshots - path: ./spec/decidim_dummy_app/tmp/screenshots - if-no-files-found: ignore diff --git a/.github/workflows/ci_elections_system_public.yml b/.github/workflows/ci_elections_system_public.yml index b3ee2724f3c2f..428ff0300d953 100644 --- a/.github/workflows/ci_elections_system_public.yml +++ b/.github/workflows/ci_elections_system_public.yml @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-elections + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -46,7 +47,7 @@ jobs: image: ghcr.io/validator/validator:latest ports: ["8888:8888"] bulletin_board: - image: codegram/decidim-bulletin-board:0.22.3 + image: decidim/decidim-bulletin-board:0.23.0 ports: ["8000:8000"] env: DATABASE_URL: postgresql://postgres:postgres@postgres/bb @@ -71,6 +72,9 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} - run: bundle exec rspec spec/system/ --exclude-pattern 'spec/system/admin/**/*_spec.rb' name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} diff --git a/.github/workflows/ci_elections_unit_tests.yml b/.github/workflows/ci_elections_unit_tests.yml index fc10cc94236d9..aefa45bb7d55e 100644 --- a/.github/workflows/ci_elections_unit_tests.yml +++ b/.github/workflows/ci_elections_unit_tests.yml @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-elections + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -43,7 +44,7 @@ jobs: env: POSTGRES_PASSWORD: postgres bulletin_board: - image: codegram/decidim-bulletin-board:0.22.3 + image: decidim/decidim-bulletin-board:0.23.0 ports: ["8000:8000"] env: DATABASE_URL: postgresql://postgres:postgres@postgres/bb @@ -67,7 +68,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec --exclude-pattern 'spec/system/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/(?!system)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_forms.yml b/.github/workflows/ci_forms.yml index 607012f7d2e02..7cbd8187ea0a4 100644 --- a/.github/workflows/ci_forms.yml +++ b/.github/workflows/ci_forms.yml @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-forms + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -52,7 +53,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_generators.yml b/.github/workflows/ci_generators.yml index ce4a8c3ba456b..7a95dd99803e8 100644 --- a/.github/workflows/ci_generators.yml +++ b/.github/workflows/ci_generators.yml @@ -16,9 +16,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-generators + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -73,7 +74,7 @@ jobs: - run: bundle exec brakeman --rails6 --force-scan . name: Scanning Security issues on module working-directory: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_initiatives.yml b/.github/workflows/ci_initiatives.yml index 2280c67b736ab..0a33a016e7af2 100644 --- a/.github/workflows/ci_initiatives.yml +++ b/.github/workflows/ci_initiatives.yml @@ -20,9 +20,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-initiatives + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -54,7 +55,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec --exclude-pattern 'spec/system/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/(?!system)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_initiatives_system_admin.yml b/.github/workflows/ci_initiatives_system_admin.yml index 53c81faafdbcb..abe78ea7534e3 100644 --- a/.github/workflows/ci_initiatives_system_admin.yml +++ b/.github/workflows/ci_initiatives_system_admin.yml @@ -20,9 +20,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-initiatives + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -58,7 +59,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec spec/system/admin + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec[^spec/system/admin] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_initiatives_system_public.yml b/.github/workflows/ci_initiatives_system_public.yml index e0a6648b2259a..85a253035ee00 100644 --- a/.github/workflows/ci_initiatives_system_public.yml +++ b/.github/workflows/ci_initiatives_system_public.yml @@ -20,9 +20,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-initiatives + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -58,7 +59,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec spec/system/ --exclude-pattern 'spec/system/admin/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/system\/(?!admin)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_javascript.yml b/.github/workflows/ci_javascript.yml new file mode 100644 index 0000000000000..ae91bcfe1561b --- /dev/null +++ b/.github/workflows/ci_javascript.yml @@ -0,0 +1,54 @@ +name: "[CI] Javascript" +on: + push: + branches: + - develop + - release/* + - "*-stable" + pull_request: + branches-ignore: + - "chore/l10n*" + paths: + - "*" + - ".github/**" + - "decidim-admin/**" + - "decidim-comments/**" + - "decidim-core/**" + - "decidim-dev/**" + +env: + CI: "true" + NODE_VERSION: 16.9.1 + +jobs: + main: + name: Tests + runs-on: ubuntu-20.04 + if: "!startsWith(github.head_ref, 'chore/l10n')" + timeout-minutes: 60 + steps: + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 + if: "github.ref != 'refs/heads/develop'" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + - uses: actions/checkout@v2.0.0 + with: + fetch-depth: 1 + - uses: actions/setup-node@v1 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get npm cache directory path + id: npm-cache-dir-path + run: echo "::set-output name=dir::$(npm get cache)-javascript" + - uses: actions/cache@v2 + id: npm-cache + with: + path: ${{ steps.npm-cache-dir-path.outputs.dir }} + key: npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + npm- + - name: Install JS dependencies + run: npm ci + - run: npm run test + name: Test JS files + diff --git a/.github/workflows/ci_main.yml b/.github/workflows/ci_main.yml index 36ef1772f1fe8..89ea508233caa 100644 --- a/.github/workflows/ci_main.yml +++ b/.github/workflows/ci_main.yml @@ -11,7 +11,7 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 jobs: diff --git a/.github/workflows/ci_meetings_system_admin.yml b/.github/workflows/ci_meetings_system_admin.yml index 11ba9ff9f01c9..fa7ddb061574c 100644 --- a/.github/workflows/ci_meetings_system_admin.yml +++ b/.github/workflows/ci_meetings_system_admin.yml @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-meetings + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -59,7 +60,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec spec/system/admin + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec[^spec/system/admin] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_meetings_system_public_1.yml b/.github/workflows/ci_meetings_system_public.yml similarity index 85% rename from .github/workflows/ci_meetings_system_public_1.yml rename to .github/workflows/ci_meetings_system_public.yml index ba7aaf643db14..b9467b576bca5 100644 --- a/.github/workflows/ci_meetings_system_public_1.yml +++ b/.github/workflows/ci_meetings_system_public.yml @@ -1,4 +1,4 @@ -name: "[CI] Meetings (system public 1)" +name: "[CI] Meetings (system public)" on: push: branches: @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-meetings + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -59,11 +60,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/*_spec.rb | sed -n "1,$(echo $half)p" | xargs) - bundle exec rspec $list_of_files + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/system\/(?!admin)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_meetings_system_public_2.yml b/.github/workflows/ci_meetings_system_public_2.yml deleted file mode 100644 index 3e7e08bfa6007..0000000000000 --- a/.github/workflows/ci_meetings_system_public_2.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: "[CI] Meetings (system public 2)" -on: - push: - branches: - - develop - - release/* - - "*-stable" - pull_request: - branches-ignore: - - "chore/l10n*" - paths: - - "*" - - ".github/**" - - "decidim-admin/**" - - "decidim-assemblies/**" - - "decidim-core/**" - - "decidim-dev/**" - - "decidim-forms/**" - - "decidim-meetings/**" - - "decidim-participatory_processes/**" - -env: - CI: "true" - RUBY_VERSION: 2.7.5 - NODE_VERSION: 16.9.1 - DECIDIM_MODULE: decidim-meetings - -jobs: - main: - name: Tests - runs-on: ubuntu-latest - if: "!startsWith(github.head_ref, 'chore/l10n')" - timeout-minutes: 60 - services: - postgres: - image: postgres:11 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_PASSWORD: postgres - env: - DATABASE_USERNAME: postgres - DATABASE_PASSWORD: postgres - DATABASE_HOST: localhost - RUBYOPT: '-W:no-deprecated' - steps: - - uses: actions/checkout@v2.0.0 - with: - fetch-depth: 1 - - uses: ./.github/actions/module-rspec - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/*_spec.rb | sed -n "$(expr $half + 1), $(echo $count)p" | xargs) - bundle exec rspec $list_of_files - name: RSpec - working-directory: ${{ env.DECIDIM_MODULE }} - env: - SIMPLECOV: "true" - - run: ./.github/upload_coverage.sh decidim-meetings-system-public $GITHUB_EVENT_PATH - name: Upload coverage - - uses: actions/upload-artifact@v2 - if: always() - with: - name: screenshots - path: ./spec/decidim_dummy_app/tmp/screenshots - if-no-files-found: ignore diff --git a/.github/workflows/ci_meetings_unit_tests.yml b/.github/workflows/ci_meetings_unit_tests.yml index 65223a0fb1712..4d28ca30f931e 100644 --- a/.github/workflows/ci_meetings_unit_tests.yml +++ b/.github/workflows/ci_meetings_unit_tests.yml @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-meetings + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -55,7 +56,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec --exclude-pattern 'spec/system/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/(?!system)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_pages.yml b/.github/workflows/ci_pages.yml index dfe045b831392..9ebd6919d9ee8 100644 --- a/.github/workflows/ci_pages.yml +++ b/.github/workflows/ci_pages.yml @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-pages + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -56,7 +57,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_participatory_processes.yml b/.github/workflows/ci_participatory_processes.yml index c7fb39309078c..8ef0118a59292 100644 --- a/.github/workflows/ci_participatory_processes.yml +++ b/.github/workflows/ci_participatory_processes.yml @@ -19,9 +19,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-participatory_processes + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -57,7 +58,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_performance_metrics_monitoring.yml b/.github/workflows/ci_performance_metrics_monitoring.yml new file mode 100644 index 0000000000000..98903e6363f80 --- /dev/null +++ b/.github/workflows/ci_performance_metrics_monitoring.yml @@ -0,0 +1,92 @@ +name: "[CI] Performance Metrics monitoring" +on: + push: + branches: + - develop + - release/* + - "*-stable" + pull_request: + branches-ignore: + - "chore/l10n*" + paths: + - "*" + - ".github/**" + - "decidim-api/**" + - "decidim-core/**" + - "decidim-dev/**" + +env: + CI: "true" + SIMPLECOV: "true" + RUBY_VERSION: 3.0.2 + NODE_VERSION: 16.9.1 + RAILS_ENV: development + +jobs: + main: + name: Tests + runs-on: ubuntu-20.04 + if: "!startsWith(github.head_ref, 'chore/l10n')" + timeout-minutes: 60 + services: + postgres: + image: postgres:11 + ports: ["5432:5432"] + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + env: + POSTGRES_PASSWORD: postgres + env: + DATABASE_USERNAME: postgres + DATABASE_PASSWORD: postgres + DATABASE_HOST: localhost + RUBYOPT: '-W:no-deprecated' + steps: + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 + if: "github.ref != 'refs/heads/develop'" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + - uses: actions/checkout@v2.0.0 + with: + fetch-depth: 1 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY_VERSION }} + bundler-cache: true + - uses: actions/setup-node@v1 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get npm cache directory path + id: npm-cache-dir-path + run: echo "::set-output name=dir::$(npm get cache)-${{ env.DECIDIM_MODULE }}" + - uses: actions/cache@v2 + id: npm-cache + with: + path: ${{ steps.npm-cache-dir-path.outputs.dir }} + key: npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + npm- + - run: bundle exec rake development_app + name: Create development app + - run: bundle exec rails assets:precompile + name: Precompile assets + working-directory: ./development_app/ + - run: bundle exec rails decidim:lighthouse:prepare_urls + name: Setup lighthouse urls + working-directory: ./development_app/ + - run: bundle exec rails dev:cache + name: Activate Rails cache + working-directory: ./development_app/ + - run: bundle exec rails server -b localhost -d + name: Run Rails server + working-directory: ./development_app/ + - name: Audit URLs using Lighthouse + uses: treosh/lighthouse-ci-action@v8 + with: + runs: 3 # run more than once to warm up the application + uploadArtifacts: true + budgetPath: ./.github/workflows/lighthouse_budget.json # test performance budgets + temporaryPublicStorage: true diff --git a/.github/workflows/ci_proposals_system_admin.yml b/.github/workflows/ci_proposals_system_admin.yml index 50717bb43a7a6..064b6a3353598 100644 --- a/.github/workflows/ci_proposals_system_admin.yml +++ b/.github/workflows/ci_proposals_system_admin.yml @@ -23,9 +23,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-proposals + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -61,7 +62,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec spec/system/admin + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec[^spec/system/admin] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_proposals_system_public_1.yml b/.github/workflows/ci_proposals_system_public.yml similarity index 85% rename from .github/workflows/ci_proposals_system_public_1.yml rename to .github/workflows/ci_proposals_system_public.yml index d551f91fe0186..791cc31a09355 100644 --- a/.github/workflows/ci_proposals_system_public_1.yml +++ b/.github/workflows/ci_proposals_system_public.yml @@ -1,4 +1,4 @@ -name: "[CI] Proposals (system public 1)" +name: "[CI] Proposals (system public)" on: push: branches: @@ -23,9 +23,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-proposals + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -61,11 +62,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/*_spec.rb | sed -n "1,$(echo $half)p" | xargs) - bundle exec rspec $list_of_files + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/system\/(?!admin)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_proposals_system_public_2.yml b/.github/workflows/ci_proposals_system_public_2.yml deleted file mode 100644 index 616d06902c8b0..0000000000000 --- a/.github/workflows/ci_proposals_system_public_2.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: "[CI] Proposals (system public2)" -on: - push: - branches: - - develop - - release/* - - "*-stable" - pull_request: - branches-ignore: - - "chore/l10n*" - paths: - - "*" - - ".github/**" - - "decidim-admin/**" - - "decidim-assemblies/**" - - "decidim-budgets/**" - - "decidim-comments/**" - - "decidim-core/**" - - "decidim-dev/**" - - "decidim-meetings/**" - - "decidim-participatory_processes/**" - - "decidim-proposals/**" - -env: - CI: "true" - RUBY_VERSION: 2.7.5 - NODE_VERSION: 16.9.1 - DECIDIM_MODULE: decidim-proposals - -jobs: - main: - name: Tests - runs-on: ubuntu-latest - if: "!startsWith(github.head_ref, 'chore/l10n')" - timeout-minutes: 60 - services: - postgres: - image: postgres:11 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_PASSWORD: postgres - env: - DATABASE_USERNAME: postgres - DATABASE_PASSWORD: postgres - DATABASE_HOST: localhost - RUBYOPT: '-W:no-deprecated' - steps: - - uses: actions/checkout@v2.0.0 - with: - fetch-depth: 1 - - uses: ./.github/actions/module-rspec - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - name: ${{ env.DECIDIM_MODULE }} - - run: | - count=$(ls spec/system/*_spec.rb | wc -l | tr -d ' ') - half=$(expr $count / 2) - list_of_files=$(ls spec/system/*_spec.rb | sed -n "$(expr $half + 1), $(echo $count)p" | xargs) - bundle exec rspec $list_of_files - name: RSpec - working-directory: ${{ env.DECIDIM_MODULE }} - env: - SIMPLECOV: "true" - - run: ./.github/upload_coverage.sh decidim-proposals-system-public $GITHUB_EVENT_PATH - name: Upload coverage - - uses: actions/upload-artifact@v2 - if: always() - with: - name: screenshots - path: ./spec/decidim_dummy_app/tmp/screenshots - if-no-files-found: ignore diff --git a/.github/workflows/ci_proposals_unit_tests.yml b/.github/workflows/ci_proposals_unit_tests.yml index 31cc0d03148cb..486cd74810bce 100644 --- a/.github/workflows/ci_proposals_unit_tests.yml +++ b/.github/workflows/ci_proposals_unit_tests.yml @@ -23,9 +23,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-proposals + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -57,7 +58,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec --exclude-pattern 'spec/system/**/*_spec.rb' + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec['spec\/(?!system)'] name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_sortitions.yml b/.github/workflows/ci_sortitions.yml index d3723609188fb..3442e204f1e02 100644 --- a/.github/workflows/ci_sortitions.yml +++ b/.github/workflows/ci_sortitions.yml @@ -20,9 +20,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-sortitions + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -58,7 +59,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_surveys.yml b/.github/workflows/ci_surveys.yml index 17f34a2303087..21114ded733bc 100644 --- a/.github/workflows/ci_surveys.yml +++ b/.github/workflows/ci_surveys.yml @@ -21,9 +21,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-surveys + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -59,7 +60,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_system.yml b/.github/workflows/ci_system.yml index e4b464a31a492..947eecbd38ec7 100644 --- a/.github/workflows/ci_system.yml +++ b/.github/workflows/ci_system.yml @@ -17,9 +17,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-system + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -55,7 +56,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_templates.yml b/.github/workflows/ci_templates.yml index c8dd390a95df8..2f8b43b17185a 100644 --- a/.github/workflows/ci_templates.yml +++ b/.github/workflows/ci_templates.yml @@ -20,9 +20,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-templates + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -58,7 +59,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/ci_verifications.yml b/.github/workflows/ci_verifications.yml index a62bc1b42b7df..b0baf13a49cbb 100644 --- a/.github/workflows/ci_verifications.yml +++ b/.github/workflows/ci_verifications.yml @@ -18,9 +18,10 @@ on: env: CI: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 DECIDIM_MODULE: decidim-verifications + PARALLEL_TEST_PROCESSORS: 2 jobs: main: @@ -56,7 +57,10 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} name: ${{ env.DECIDIM_MODULE }} - - run: bundle exec rspec + processor_count: ${{ env.PARALLEL_TEST_PROCESSORS }} + ruby_version: ${{ env.RUBY_VERSION }} + node_version: ${{ env.NODE_VERSION }} + - run: bundle exec rake parallel:spec name: RSpec working-directory: ${{ env.DECIDIM_MODULE }} env: diff --git a/.github/workflows/lighthouse_budget.json b/.github/workflows/lighthouse_budget.json new file mode 100644 index 0000000000000..1c67544218853 --- /dev/null +++ b/.github/workflows/lighthouse_budget.json @@ -0,0 +1,23 @@ +[ + { + "path": "/*", + "timings": [ + { + "metric": "first-contentful-paint", + "budget": 2000 + }, + { + "metric": "speed-index", + "budget": 4000 + }, + { + "metric": "interactive", + "budget": 5000 + }, + { + "metric": "largest-contentful-paint", + "budget": 2500 + } + ] + } +] diff --git a/.github/workflows/lint_code.yml b/.github/workflows/lint_code.yml index 78f4f048bc1b3..eb830c43e247e 100644 --- a/.github/workflows/lint_code.yml +++ b/.github/workflows/lint_code.yml @@ -12,7 +12,7 @@ on: env: CI: "true" SIMPLECOV: "true" - RUBY_VERSION: 2.7.5 + RUBY_VERSION: 3.0.2 NODE_VERSION: 16.9.1 jobs: diff --git a/.gitignore b/.gitignore index 6fead199957f3..f274592e37ce0 100644 --- a/.gitignore +++ b/.gitignore @@ -32,5 +32,7 @@ public/decidim-packs tmp # webpack packs output decidim-packs +# inner package-lock files inside the packages/ folder +packages/**/package-lock.json temporary_changelog.md diff --git a/.lighthouserc.json b/.lighthouserc.json new file mode 100644 index 0000000000000..bff6072848ded --- /dev/null +++ b/.lighthouserc.json @@ -0,0 +1,15 @@ +{ + "_comment": "This configuration is used by .github/workflows/ci_metrics_monitoring.yml workflow", + "ci": { + "collect": { + "_comment": "url is empty because is filled dynamically in CI execution", + "url": [], + "settings": { + "chromeFlags": "--disable-gpu --no-sandbox", + "throttlingMethod": "devtools", + "preset": "desktop" + } + } + } +} + diff --git a/.rubocop-disabled.yml b/.rubocop-disabled.yml new file mode 100644 index 0000000000000..de7949f88de4a --- /dev/null +++ b/.rubocop-disabled.yml @@ -0,0 +1,11 @@ +Style/OpenStructUse: + Enabled: false + +Gemspec/RequireMFA: + Enabled: false + +Naming/MemoizedInstanceVariableName: + Enabled: false + +RSpec/VerifiedDoubleReference: + Enabled: false diff --git a/.rubocop.yml b/.rubocop.yml index 870c0b9fff2d6..0975cd3a003af 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,3 +1,4 @@ inherit_from: - .rubocop_ruby.yml - .rubocop_rails.yml + - .rubocop-disabled.yml diff --git a/.rubocop_ruby.yml b/.rubocop_ruby.yml index 299a4ada0d7d2..657b02344b045 100644 --- a/.rubocop_ruby.yml +++ b/.rubocop_ruby.yml @@ -13,11 +13,13 @@ AllCops: - "**/Gemfile" - "**/Rakefile" Exclude: + - "**/node_modules/**/*" - "**/vendor/**/*" - "development_app/**/*" - "decidim_app-design/node_modules/**/*" - "spec/decidim_dummy_app/**/*" - "node_modules/**/*" + - "decidim-initiatives/lib/gem_overrides/origami/date.rb" # Default formatter will be used if no -f/--format option is given. DefaultFormatter: progress # Cop names are not displayed in offense messages by default. Change behavior @@ -68,12 +70,12 @@ AllCops: # If a value is specified for TargetRubyVersion then it is used. # Else if .ruby-version exists and it contains an MRI version it is used. # Otherwise we fallback to the oldest officially supported Ruby version (2.0). - TargetRubyVersion: 2.7 + TargetRubyVersion: 3.0 - RSpec: - Patterns: - - "(?:^|/)spec/" - - "(?:^|/)test/" +# RSpec: +# Patterns: +# - "(?:^|/)spec/" +# - "(?:^|/)test/" # Indent private/protected/public as deep as method definitions Layout/AccessModifierIndentation: @@ -1269,10 +1271,11 @@ RSpec/NamedSubject: Enabled: false RSpec/RepeatedExampleGroupDescription: - Enabled: false + Enabled: true RSpec/RepeatedExampleGroupBody: - Enabled: false + Enabled: true + RSpec/VerifiedDoubles: Enabled: false diff --git a/.ruby-version b/.ruby-version index a603bb50a29e3..b50214693056f 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.5 +3.0.2 diff --git a/.simplecov b/.simplecov index 76114887f8c90..fbd58ab7f2dd5 100644 --- a/.simplecov +++ b/.simplecov @@ -7,7 +7,7 @@ if ENV["SIMPLECOV"] SimpleCov.start do # `ENGINE_ROOT` holds the name of the engine we're testing. # This brings us to the main Decidim folder. - root File.expand_path("..", ENV["ENGINE_ROOT"]) + root File.expand_path("..", ENV.fetch("ENGINE_ROOT", nil)) # We make sure we track all Ruby files, to avoid skipping unrequired files # We need to include the `../` section, otherwise it only tracks files from the diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d1e730d0c264..c204f5054f504 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,5 @@ # Change Log - -## [Unreleased](https://github.com/decidim/decidim/tree/HEAD) - -Nothing. - -## [0.26.4](https://github.com/decidim/decidim/tree/v0.26.4) +## [0.27.2](https://github.com/decidim/decidim/tree/0.27.2) ### Added @@ -16,60 +11,61 @@ Nothing. ### Fixed -- **decidim-core**: Backport 'Prevent the account edit route through Devise' to v0.26 [\#9932](https://github.com/decidim/decidim/pull/9932) -- **decidim-participatory processes**: Backport 'Fix unpublished processes shown in the group process count' to v0.26 [\#9934](https://github.com/decidim/decidim/pull/9934) -- **decidim-admin**: Backport 'Fix global moderation types not translated' to v0.26 [\#9937](https://github.com/decidim/decidim/pull/9937) -- **decidim-admin**: Backport 'Fix updating organization settings in case there were errors' to v0.26 [\#9938](https://github.com/decidim/decidim/pull/9938) -- **decidim-budgets**, **decidim-core**, **decidim-elections**, **decidim-proposals**: Backport 'Do not import resources multiple times' to v0.26 [\#9942](https://github.com/decidim/decidim/pull/9942) -- **decidim-forms**, **decidim-surveys**: Backport 'Fix form answer attachments breaking the answer view' to v0.26 [\#9945](https://github.com/decidim/decidim/pull/9945) -- **decidim-comments**: Backport 'Fix "disappearing" underscores with comments' to v0.26 [\#9949](https://github.com/decidim/decidim/pull/9949) -- **decidim-admin**, **decidim-core**: Backport 'Fix editor content saving when the content has only one video' to v0.26 [\#9951](https://github.com/decidim/decidim/pull/9951) -- **decidim-proposals**: Backport 'Fix collaborative drafts page when there are errors on the form' to v0.26 [\#9955](https://github.com/decidim/decidim/pull/9955) -- **decidim-debates**: Backport 'Fix the finite value on the debate form when editing an existing debate' to v0.26 [\#9957](https://github.com/decidim/decidim/pull/9957) -- **decidim-pages**: Backport 'Fix exporting and importing a page component' to v0.26 [\#9959](https://github.com/decidim/decidim/pull/9959) -- **decidim-participatory processes**: Backport 'Fix importing participatory process from legacy format' to v0.26 [\#9964](https://github.com/decidim/decidim/pull/9964) -- **decidim-assemblies**, **decidim-core**, **decidim-participatory processes**: Backport 'Fix duplicate stats on home page and participatory space main page' to v0.26 [\#9966](https://github.com/decidim/decidim/pull/9966) -- **decidim-budgets**, **decidim-core**, **decidim-proposals**, **decidim-templates**: Backport 'Address Crowdin feedback' to v0.26 [\#9970](https://github.com/decidim/decidim/pull/9970) -- **decidim-core**: Backport 'Limit invitation redirects only to paths within the application' to v0.26 [\#9973](https://github.com/decidim/decidim/pull/9973) -- **decidim-initiatives**: Backport 'Fix initiative sign if the authorization metadata is set to `nil`' to v0.26 [\#9981](https://github.com/decidim/decidim/pull/9981) -- **decidim-initiatives**: Backport 'Add missing i18n key in Initiatives' to v0.26 [\#9983](https://github.com/decidim/decidim/pull/9983) -- **decidim-core**: Backport 'Fix correct resource linking for amendments' to v0.26 [\#9988](https://github.com/decidim/decidim/pull/9988) -- **decidim-core**: Backport 'Fix user sign up with invalid name' to v0.26 [\#9991](https://github.com/decidim/decidim/pull/9991) -- **decidim-initiatives**: Backport 'Make initiatives order translatable' to v0.26 [\#9995](https://github.com/decidim/decidim/pull/9995) -- **decidim-core**: Backport 'Make ToS agreement translatable' to v0.26 [\#9997](https://github.com/decidim/decidim/pull/9997) -- **decidim-debates**: Backport 'Make Scopes field in debates translatable' to v0.26 [\#9999](https://github.com/decidim/decidim/pull/9999) -- **decidim-core**: Backport 'Remove invitations badge' to v0.26 [\#10001](https://github.com/decidim/decidim/pull/10001) -- **decidim-conferences**: Backport 'Fix conference invitations' to v0.26 [\#10004](https://github.com/decidim/decidim/pull/10004) -- **decidim-admin**, **decidim-core**: Backport 'Fix preserving bold text in the rich text editor when pasting content' to v0.26 [\#9962](https://github.com/decidim/decidim/pull/9962) -- **decidim-admin**, **decidim-assemblies**, **decidim-initiatives**, **decidim-participatory processes**, **decidim-verifications**: Backport 'Add missing active actions on admin navigation menu' to v0.26 [\#9993](https://github.com/decidim/decidim/pull/9993) -- **decidim-core**: Backport 'Fix disappearing sub-lists in rich text editors' to v0.26 [\#9968](https://github.com/decidim/decidim/pull/9968) -- **decidim-elections**: Backport 'Define the component import routes, permissions and controller at votings' to v0.26 [\#9977](https://github.com/decidim/decidim/pull/9977) -- **decidim-core**, **decidim-proposals**: Backport 'Fix proposal etiquette and length validator with base64 images' to v0.26 [\#10010](https://github.com/decidim/decidim/pull/10010) -- **decidim-core**, **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport 'Refactor cell titles' to v0.26 [\#10041](https://github.com/decidim/decidim/pull/10041) -- **decidim-admin**, **decidim-comments**: Backport 'Fix moderations for comments that are mapped to deleted resources' to v0.26 [\#9941](https://github.com/decidim/decidim/pull/9941) -- **decidim-comments**, **decidim-core**, **decidim-verifications**: Backport 'Fix user related absolute URLs' to v0.26 [\#9947](https://github.com/decidim/decidim/pull/9947) -- **decidim-core**: Backport 'Fix duplicate user activity records when public spaces have private users' to v0.26 [\#9979](https://github.com/decidim/decidim/pull/9979) -- **decidim-meetings**: Backport 'Refactor the meeting list item title display' to v0.26 [\#10047](https://github.com/decidim/decidim/pull/10047) -- **decidim-accountability**, **decidim-admin**, **decidim-proposals**: Backport 'Reformat CSV help for import files on Accountability and Proposals' to v0.26 [\#10055](https://github.com/decidim/decidim/pull/10055) -- **decidim-system**: Backport 'Fix organization SMTP password not saved (became blank) in system panel' to v0.26 [\#10053](https://github.com/decidim/decidim/pull/10053) -- **decidim-budgets**, **decidim-elections**, **decidim-proposals**, **decidim-sortitions**: Backport 'Fix usages of `reorder` and `paginate`' to v0.26 [\#10051](https://github.com/decidim/decidim/pull/10051) -- **decidim-admin**: Backport 'Show only ToS acceptance when admin hasn't accepted it' to v0.26 [\#10057](https://github.com/decidim/decidim/pull/10057) -- **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport 'Refactor admin listing titles' to v0.26 [\#10049](https://github.com/decidim/decidim/pull/10049) -- **decidim-core**: Backport 'Fix date/time formats at component forms' to v0.26 [\#9953](https://github.com/decidim/decidim/pull/9953) +- **decidim-core**: Backport 'Fix: The i18n locales selector is showing a dropdown with 3 languages' to v0.27 [\#10087](https://github.com/decidim/decidim/pull/10087) +- **decidim-core**: Backport 'Remove unecessary line in push notifications spec' to v0.27 [\#10088](https://github.com/decidim/decidim/pull/10088) +- Backport 'Lock GitHub actions to Ubuntu 20.04 due to OpenSSL 3.0 issues' to v0.27 [\#10225](https://github.com/decidim/decidim/pull/10225) +- **decidim-core**: Add date format to Conversation [\#10224](https://github.com/decidim/decidim/pull/10224) +- **decidim-core**: Backport 'Allow blocking a UserGroup' to v0.27 [\#10255](https://github.com/decidim/decidim/pull/10255) +- **decidim-admin**, **decidim-assemblies**, **decidim-elections**, **decidim-initiatives**, **decidim-pages**, **decidim-participatory processes**: Backport 'Fix wrong capitalization in i18n values and add missing keys' to v0.27 [\#10256](https://github.com/decidim/decidim/pull/10256) +- **decidim-api**, **decidim-core**: Backport 'Fix machine translations at the API' to v0.27 [\#10257](https://github.com/decidim/decidim/pull/10257) +- **decidim-budgets**: Backport 'Correct the "voted for this" string in the budgets component' to v0.27 [\#10258](https://github.com/decidim/decidim/pull/10258) +- **decidim-conferences**, **decidim-core**: Backport 'Fix translations missing on admin log' to v0.27 [\#10259](https://github.com/decidim/decidim/pull/10259) +- **decidim-core**: Backport 'Fix push notifications URL method' to v0.27 [\#10262](https://github.com/decidim/decidim/pull/10262) +- **decidim-conferences**: Backport 'Add correct call for conference speaker' to v0.27 [\#10260](https://github.com/decidim/decidim/pull/10260) +- **decidim-meetings**: Backport 'Fix missing fields on duplicate meetings functionality' to v0.27 [\#10261](https://github.com/decidim/decidim/pull/10261) +- **decidim-core**: Backport 'Fix resource_icon with component or manifest nil' to v0.27 [\#10263](https://github.com/decidim/decidim/pull/10263) +- **decidim-budgets**, **decidim-core**, **decidim-debates**, **decidim-meetings**, **decidim-proposals**, **decidim-sortitions**: Backport 'Fix filter URL not updated with the text search input' to v0.27 [\#10264](https://github.com/decidim/decidim/pull/10264) +- **decidim-core**: Backport 'Add missing logs for UserGroup block and unblock actions' to v0.27 [\#10266](https://github.com/decidim/decidim/pull/10266) +- **decidim-admin**, **decidim-core**: Backport 'Don't show the 'unreport' action when user is blocked' to v0.27 [\#10267](https://github.com/decidim/decidim/pull/10267) +- **decidim-admin**, **decidim-core**: Backport 'Fix bug when blocking two UserGroups' to v0.27 [\#10269](https://github.com/decidim/decidim/pull/10269) +- **decidim-core**: Backport 'Add order by in linked_participatory_space_resources' to v0.27 [\#10270](https://github.com/decidim/decidim/pull/10270) +- **decidim-blogs**: Backport 'Move i18n attribute key of Post's body' to v0.27 [\#10265](https://github.com/decidim/decidim/pull/10265) +- **decidim-core**: Backport 'Fix dependency resolver trying to fetch gem paths from lazy specifications' to v0.27 [\#10272](https://github.com/decidim/decidim/pull/10272) +- **decidim-core**: Backport 'Fix double parentheses in the titled upload modal with existing attachment' to v0.27 [\#10273](https://github.com/decidim/decidim/pull/10273) +- **decidim-proposals**: Backport 'Removed "disabled" status from proposals' main categories' to v0.27 [\#10274](https://github.com/decidim/decidim/pull/10274) +- **decidim-core**: Backport 'Improve link handling of the redirect engine' to v0.27 [\#10276](https://github.com/decidim/decidim/pull/10276) +- **decidim-core**: Backport 'Fix pipeline asset absolute URLs' to v0.27 [\#10275](https://github.com/decidim/decidim/pull/10275) +- **decidim-accountability**, **decidim-initiatives**, **decidim-participatory processes**: Backport 'Added missing localizations' to v0.27 [\#10278](https://github.com/decidim/decidim/pull/10278) +- **decidim-blogs**: Backport 'Remove unused permissions on Blogs' to v0.27 [\#10268](https://github.com/decidim/decidim/pull/10268) +- **decidim-initiatives**: Backport 'Respect "rich text editor" setting in Initiatives' to v0.27 [\#10271](https://github.com/decidim/decidim/pull/10271) +- **decidim-proposals**: Backport 'Prevent sending proposal create event until is commited' to v0.27 [\#10279](https://github.com/decidim/decidim/pull/10279) +- **decidim-initiatives**: Backport 'Fix initiatives count in initiatives index page' to v0.27 [\#10280](https://github.com/decidim/decidim/pull/10280) +- **decidim-core**: Backport 'User's group endorsement no longer disappears after personal endorsement removed' to v0.27 [\#10281](https://github.com/decidim/decidim/pull/10281) +- **decidim-core**: Backport 'Fix bug regarding user group moderation action logs' to v0.27 [\#10254](https://github.com/decidim/decidim/pull/10254) +- **decidim-assemblies**, **decidim-conferences**, **decidim-participatory processes**: Backport 'Do not display unpublished spaces in linked spaces' to v0.27 [\#10346](https://github.com/decidim/decidim/pull/10346) +- **decidim-assemblies**, **decidim-meetings**: Backport 'Display Published meetings in Assembly cell' to v0.27 [\#10340](https://github.com/decidim/decidim/pull/10340) +- **decidim-core**: Backport 'Uploading files - Explanation %{attribute} not translate' to v0.27 [\#10348](https://github.com/decidim/decidim/pull/10348) +- **decidim-admin**, **decidim-core**: Backport 'Fix newsletters unwanted CSS and 404 page on preview' to v0.27 [\#10354](https://github.com/decidim/decidim/pull/10354) +- **decidim-admin**: Backport 'A Valuator should not be able to access Global Moderation' to v0.27 [\#10350](https://github.com/decidim/decidim/pull/10350) +- **decidim-core**: Backport 'Fix an edge case with the attribute object forms with arrays/enums' (#10218) to v0.27 [\#10358](https://github.com/decidim/decidim/pull/10358) +- **decidim-initiatives**: Backport 'Fixing some typos in the english translations' to v0.27 [\#10361](https://github.com/decidim/decidim/pull/10361) ### Removed Nothing. +### Developer improvements + +- Backport 'Remove unecessary line in push notifications spec' to v0.27 [\#10088](https://github.com/decidim/decidim/pull/10088) + ### Internal -- Backport 'Fix importing a page component without a body' to v0.26 [\#10023](https://github.com/decidim/decidim/pull/10023) +- Backport 'Lock GitHub actions to Ubuntu 20.04 due to OpenSSL 3.0 issues' to v0.27 [\#10225](https://github.com/decidim/decidim/pull/10225) -### Developer improvements +### Unsorted -Nothing. -## [0.26.3](https://github.com/decidim/decidim/tree/v0.26.3) +## [0.27.1](https://github.com/decidim/decidim/tree/0.27.1) ### Added @@ -81,547 +77,870 @@ Nothing. ### Fixed -- **decidim-core**: Backport 'Fix / Expose createMapController properly to let overriding' to v0.26 [\#9520](https://github.com/decidim/decidim/pull/9520) -- **decidim-elections**: Backport 'Capture unhandled errors from JS promises and inform the user' to v0.26 [\#9521](https://github.com/decidim/decidim/pull/9521) -- **decidim-elections**: Backport 'Remove description from questions in elections' to v0.26 [\#9522](https://github.com/decidim/decidim/pull/9522) -- **decidim-initiatives**: Backport 'Return 404 when there isn't an initiative' to v0.26 [\#9523](https://github.com/decidim/decidim/pull/9523) -- **decidim-forms**, **decidim-meetings**, **decidim-surveys**: Backport 'Fix rollback questionnaire answer when file is invalid' to v0.26 [\#9524](https://github.com/decidim/decidim/pull/9524) -- **decidim-elections**: Backport 'Make sure component is published when starting an election' to v0.26 [\#9525](https://github.com/decidim/decidim/pull/9525) -- **decidim-core**, **decidim-meetings**, **decidim-proposals**: Backport 'Fix email subject when resource title has special characters' to v0.26 [\#9526](https://github.com/decidim/decidim/pull/9526) -- **decidim-core**: Backport 'Prevent users to validate nicknames/emails taken by user groups' to v0.26 [\#9527](https://github.com/decidim/decidim/pull/9527) -- **decidim-elections**: Backport 'Fix hardcoded hour in election dashboard' to v0.26 [\#9528](https://github.com/decidim/decidim/pull/9528) -- **decidim-comments**, **decidim-core**: Backport 'Fix long word breaking on comments and cards' to v0.26 [\#9529](https://github.com/decidim/decidim/pull/9529) -- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-core**, **decidim-elections**, **decidim-initiatives**, **decidim-participatory processes**: Backport 'Fix background-image URLs with weird characters' to v0.26 [\#9531](https://github.com/decidim/decidim/pull/9531) -- **decidim-assemblies**, **decidim-conferences**, **decidim-elections**: Backport 'Fix cache hash on Hightlighted spaces' to v0.26 [\#9536](https://github.com/decidim/decidim/pull/9536) -- **decidim-accountability**: Backport 'Add short format to result date' to v0.26 [\#9540](https://github.com/decidim/decidim/pull/9540) -- **decidim-elections**: Backport 'Advertise users if BB connection is lost in trustees/admin zones' to v0.26 [\#9535](https://github.com/decidim/decidim/pull/9535) -- **decidim-core**: Backport 'Fix email subject when participatory space title is present' to v0.26 [\#9573](https://github.com/decidim/decidim/pull/9573) -- **decidim-conferences**: Backport 'Fix published conferences order' to v0.26 [\#9688](https://github.com/decidim/decidim/pull/9688) -- **decidim-comments**: Backport 'Fix creation notification when editing a comment ' to v0.26 [\#9690](https://github.com/decidim/decidim/pull/9690) -- **decidim-elections**: Backport 'Remove margin-bottom on votings navigation' to v0.26 [\#9692](https://github.com/decidim/decidim/pull/9692) -- **decidim-initiatives**: Backport 'Use public link on initiatives mailer' to v0.26 [\#9694](https://github.com/decidim/decidim/pull/9694) -- **decidim-accountability**: Backport 'Disallow creating grandchildren results' to v0.26 [\#9698](https://github.com/decidim/decidim/pull/9698) -- **decidim-forms**, **decidim-meetings**: Backport 'Prevent showing announcement on meetings registrations' to v0.26 [\#9700](https://github.com/decidim/decidim/pull/9700) -- **decidim-initiatives**: Backport 'Fix for initiative mailer when promoting committee is disabled' to v0.26 [\#9696](https://github.com/decidim/decidim/pull/9696) -- **decidim-elections**: Backport 'Improve steps election check page with census' to v0.26 [\#9702](https://github.com/decidim/decidim/pull/9702) -- **decidim-core**: Backport 'Fix translated attributes field type change' to v0.26 [\#9704](https://github.com/decidim/decidim/pull/9704) -- **decidim-core**: Backport 'Prevent missing ActionLog entries to break the application' to v0.26 [\#9706](https://github.com/decidim/decidim/pull/9706) -- **decidim-proposals**: Backport 'Fix publish event on official proposals' to v0.26 [\#9708](https://github.com/decidim/decidim/pull/9708) -- **decidim-admin**, **decidim-proposals**: Backport 'Add help text for proposals' 'publish answers immediately' setting ' to v0.26 [\#9712](https://github.com/decidim/decidim/pull/9712) -- **decidim-conferences**: Backport 'Return 404 when there isn't a valid component in program' to v0.26 [\#9717](https://github.com/decidim/decidim/pull/9717) -- **decidim-budgets**: Backport 'Fix budgets seeds on non development apps' to v0.26 [\#9719](https://github.com/decidim/decidim/pull/9719) -- **decidim-core**: Backport 'Fix creating automatic nicknames when taken by user_groups' to v0.26 [\#9721](https://github.com/decidim/decidim/pull/9721) -- **decidim-debates**: Backport 'Fix resource endorsed notification with Debates' to v0.26 [\#9723](https://github.com/decidim/decidim/pull/9723) -- **decidim-meetings**: Backport 'Fix agenda_item association with agenda' to v0.26 [\#9728](https://github.com/decidim/decidim/pull/9728) -- **decidim-verifications**: Backport 'Fix absolute urls on 'managed user error' event' to v0.26 [\#9730](https://github.com/decidim/decidim/pull/9730) -- **decidim-core**: Backport 'Fix mobile notifications switch component overlaps' to v0.26 [\#9732](https://github.com/decidim/decidim/pull/9732) -- **decidim-core**: Backport 'Fix blocked user nickname and avatar in user presenter' to v0.26 [\#9741](https://github.com/decidim/decidim/pull/9741) -- **decidim-admin**: Backport 'Fix form error overlap with character counter in the admin panel' to v0.26 [\#9749](https://github.com/decidim/decidim/pull/9749) -- **decidim-core**: Backport 'Fix the endorsement permissions' to v0.26 [\#9734](https://github.com/decidim/decidim/pull/9734) -- **decidim-meetings**: Backport 'Fix order when filtering Meetings' to v0.26 [\#9751](https://github.com/decidim/decidim/pull/9751) -- **decidim-proposals**: Backport 'Fix redundant notification on comments with linked proposals' to v0.26 [\#9746](https://github.com/decidim/decidim/pull/9746) -- **decidim-core**: Backport 'Make the HERE Map display in the currently selected language' to v0.26 [\#9714](https://github.com/decidim/decidim/pull/9714) -- **decidim-admin**, **decidim-forms**: Backport 'Fix admin language selector with more than 4 locales' to v0.26 [\#9710](https://github.com/decidim/decidim/pull/9710) -- **decidim-meetings**: Backport 'Ignore participatory spaces without models in meetings visible_for scope' to v0.26 [\#9794](https://github.com/decidim/decidim/pull/9794) -- **decidim-admin**: Backport 'Fix leaking emails on admin user search controller' to 0.26 [\#9797](https://github.com/decidim/decidim/pull/9797) -- **decidim-assemblies**, **decidim-participatory processes**: Backport 'Fix import of images on spaces' to v0.26 [\#9803](https://github.com/decidim/decidim/pull/9803) -- **decidim-core**: Backport 'Fix hashtags not recognized at the beginning of the string' to v0.26 [\#9811](https://github.com/decidim/decidim/pull/9811) -- **decidim-accountability**, **decidim-core**, **decidim-debates**, **decidim-initiatives**, **decidim-meetings**, **decidim-proposals**: Backport 'Fix version pages showing a HTTP 500 error when the version does not exist' to v0.26 [\#9809](https://github.com/decidim/decidim/pull/9809) -- **decidim-core**: Backport 'Fix hidden error messages on the registration form' to v0.26 [\#9813](https://github.com/decidim/decidim/pull/9813) -- **decidim-core**: Backport 'Fix multitenant organizations stats cache' to v0.26 [\#9807](https://github.com/decidim/decidim/pull/9807) -- **decidim-admin**, **decidim-initiatives**: Backport 'Fix initiatives components' to v0.26 [\#9825](https://github.com/decidim/decidim/pull/9825) -- Backport 'Fix doorkeeper initialization after 5.6.0 release' to v0.26 [\#9788](https://github.com/decidim/decidim/pull/9788) +- **decidim-participatory processes**: Backport 'Fix unpublished processes shown in the group process count' to v0.27 [\#9935](https://github.com/decidim/decidim/pull/9935) +- **decidim-admin**: Backport 'Fix global moderation types not translated' to v0.27 [\#9936](https://github.com/decidim/decidim/pull/9936) +- **decidim-admin**: Backport 'Fix updating organization settings in case there were errors' to v0.27 [\#9939](https://github.com/decidim/decidim/pull/9939) +- **decidim-budgets**, **decidim-core**, **decidim-elections**, **decidim-proposals**: Backport 'Do not import resources multiple times' to v0.27 [\#9943](https://github.com/decidim/decidim/pull/9943) +- **decidim-forms**, **decidim-surveys**: Backport 'Fix form answer attachments breaking the answer view' to v0.27 [\#9944](https://github.com/decidim/decidim/pull/9944) +- **decidim-comments**, **decidim-core**, **decidim-verifications**: Backport 'Fix user related absolute URLs' to v0.27 [\#9946](https://github.com/decidim/decidim/pull/9946) +- **decidim-comments**: Backport 'Fix "disappearing" underscores with comments' to v0.27 [\#9948](https://github.com/decidim/decidim/pull/9948) +- **decidim-admin**, **decidim-core**: Backport 'Fix editor content saving when the content has only one video' to v0.27 [\#9950](https://github.com/decidim/decidim/pull/9950) +- **decidim-core**: Backport 'Fix date/time formats at component forms' to v0.27 [\#9952](https://github.com/decidim/decidim/pull/9952) +- **decidim-proposals**: Backport 'Fix collaborative drafts page when there are errors on the form' to v0.27 [\#9954](https://github.com/decidim/decidim/pull/9954) +- **decidim-debates**: Backport 'Fix the finite value on the debate form when editing an existing debate' to v0.27 [\#9956](https://github.com/decidim/decidim/pull/9956) +- **decidim-pages**: Backport 'Fix exporting and importing a page component' to v0.27 [\#9958](https://github.com/decidim/decidim/pull/9958) +- **decidim-core**: Backport 'Fix webpacker crashes on missing icons' to v0.27 [\#9960](https://github.com/decidim/decidim/pull/9960) +- **decidim-participatory processes**: Backport 'Fix importing participatory process from legacy format' to v0.27 [\#9963](https://github.com/decidim/decidim/pull/9963) +- **decidim-assemblies**, **decidim-core**, **decidim-participatory processes**: Backport 'Fix duplicate stats on home page and participatory space main page' to v0.27 [\#9965](https://github.com/decidim/decidim/pull/9965) +- **decidim-budgets**, **decidim-core**, **decidim-proposals**, **decidim-templates**: Backport 'Address Crowdin feedback' to v0.27 [\#9969](https://github.com/decidim/decidim/pull/9969) +- **decidim-core**, **decidim-proposals**: Backport 'Fix cryptic file validation errors' to v0.27 [\#9971](https://github.com/decidim/decidim/pull/9971) +- **decidim-core**: Backport 'Limit invitation redirects only to paths within the application' to v0.27 [\#9972](https://github.com/decidim/decidim/pull/9972) +- **decidim-admin**, **decidim-assemblies**, **decidim-participatory processes**: Backport 'Add malformed file errors when CSV reading fails' to v0.27 [\#9974](https://github.com/decidim/decidim/pull/9974) +- **decidim-elections**: Backport 'Define the component import routes, permissions and controller at votings' to v0.27 [\#9976](https://github.com/decidim/decidim/pull/9976) +- **decidim-core**: Backport 'Fix duplicate user activity records when public spaces have private users' to v0.27 [\#9978](https://github.com/decidim/decidim/pull/9978) +- **decidim-initiatives**: Backport 'Fix initiative sign if the authorization metadata is set to `nil`' to v0.27 [\#9980](https://github.com/decidim/decidim/pull/9980) +- **decidim-initiatives**: Backport 'Add missing i18n key in Initiatives' to v0.27 [\#9982](https://github.com/decidim/decidim/pull/9982) +- **decidim-comments**: Backport 'Fix commenting field disabled when polling new comments' to v0.27 [\#9986](https://github.com/decidim/decidim/pull/9986) +- **decidim-core**: Backport 'Fix correct resource linking for amendments' to v0.27 [\#9987](https://github.com/decidim/decidim/pull/9987) +- **decidim-core**: Backport 'Fix last activity page showing recently updated records' to v0.27 [\#9989](https://github.com/decidim/decidim/pull/9989) +- **decidim-core**: Backport 'Fix user sign up with invalid name' to v0.27 [\#9990](https://github.com/decidim/decidim/pull/9990) +- **decidim-core**: Backport 'Fix user sign up with invalid name' to v0.27 [\#9990](https://github.com/decidim/decidim/pull/9990) +- **decidim-admin**, **decidim-assemblies**, **decidim-initiatives**, **decidim-participatory processes**, **decidim-verifications**: Backport 'Add missing active actions on admin navigation menu' to v0.27 [\#9992](https://github.com/decidim/decidim/pull/9992) +- **decidim-admin**, **decidim-assemblies**, **decidim-initiatives**, **decidim-participatory processes**, **decidim-verifications**: Backport 'Add missing active actions on admin navigation menu' to v0.27 [\#9992](https://github.com/decidim/decidim/pull/9992) +- **decidim-admin**, **decidim-assemblies**, **decidim-initiatives**, **decidim-participatory processes**, **decidim-verifications**: Backport 'Add missing active actions on admin navigation menu' to v0.27 [\#9992](https://github.com/decidim/decidim/pull/9992) +- **decidim-initiatives**: Backport 'Make initiatives order translatable' to v0.27 [\#9994](https://github.com/decidim/decidim/pull/9994) +- **decidim-core**: Backport 'Make ToS agreement translatable' to v0.27 [\#9996](https://github.com/decidim/decidim/pull/9996) +- **decidim-debates**: Backport 'Make Scopes field in debates translatable' to v0.27 [\#9998](https://github.com/decidim/decidim/pull/9998) +- **decidim-core**: Backport 'Remove invitations badge' to v0.27 [\#10000](https://github.com/decidim/decidim/pull/10000) +- **decidim-conferences**: Backport 'Fix conference invitations' to v0.27 [\#10003](https://github.com/decidim/decidim/pull/10003) +- **decidim-admin**, **decidim-core**: Backport 'Fix preserving bold text in the rich text editor when pasting content' to v0.27 [\#9961](https://github.com/decidim/decidim/pull/9961) +- **decidim-core**, **decidim-proposals**: Backport 'Fix proposal etiquette and length validator with base64 images' to v0.27 [\#10009](https://github.com/decidim/decidim/pull/10009) +- **decidim-core**: Backport 'Fix disappearing sub-lists in rich text editors' to v0.27 [\#9967](https://github.com/decidim/decidim/pull/9967) +- **decidim-meetings**, **decidim-proposals**: Backport 'Fix invalid rendering of meeting and proposal body texts' to v0.27 [\#10002](https://github.com/decidim/decidim/pull/10002) +- **decidim-core**, **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport 'Refactor cell titles' to v0.27 [\#10040](https://github.com/decidim/decidim/pull/10040) +- **decidim-admin**, **decidim-comments**: Backport 'Fix moderations for comments that are mapped to deleted resources' to v0.27 [\#9940](https://github.com/decidim/decidim/pull/9940) +- **decidim-meetings**: Backport 'Refactor the meeting list item title display' to v0.27 [\#10046](https://github.com/decidim/decidim/pull/10046) +- **decidim-system**: Backport 'Fix organization SMTP password not saved (became blank) in system panel' to v0.27 [\#10052](https://github.com/decidim/decidim/pull/10052) +- **decidim-accountability**, **decidim-admin**, **decidim-proposals**: Backport 'Reformat CSV help for import files on Accountability and Proposals' to v0.27 [\#10054](https://github.com/decidim/decidim/pull/10054) +- **decidim-budgets**, **decidim-elections**, **decidim-proposals**, **decidim-sortitions**: Backport 'Fix usages of `reorder` and `paginate`' to v0.27 [\#10050](https://github.com/decidim/decidim/pull/10050) +- **decidim-admin**: Backport 'Show only ToS acceptance when admin hasn't accepted it' to v0.27 [\#10056](https://github.com/decidim/decidim/pull/10056) +- **decidim-participatory processes**: Backport 'Fix usages of sanitize helper methods for editable content provided by admins' to v0.27 [\#10058](https://github.com/decidim/decidim/pull/10058) +- **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport 'Refactor admin listing titles' to v0.27 [\#10048](https://github.com/decidim/decidim/pull/10048) ### Removed Nothing. +### Developer improvements + +Nothing. + ### Internal -- Backport 'Fix invalid translation in spec' to v0.26 [\#9435](https://github.com/decidim/decidim/pull/9435) -- Backport 'Remove the description field from the elections component seeds' to v0.26 [\#9553](https://github.com/decidim/decidim/pull/9553) -- Fix API GraphiQL system spec for 0.26 with newer ChromeDriver [\#9556](https://github.com/decidim/decidim/pull/9556) -- Backport 'Update `rokroskar/workflow-run-cleanup-action` GitHub action to v0.3.3' to v0.26 [\#9829](https://github.com/decidim/decidim/pull/9829) -- Backport 'Split parallel test coverage reports into their own folders' to v0.26 [\#9819](https://github.com/decidim/decidim/pull/9819) -- Backport 'Improve release process' to v0.26 [\#9864](https://github.com/decidim/decidim/pull/9864) +- **decidim-dev**: Backport 'Ignore the problematics HTML validation checks with hidden inputs' to v0.27 [\#10025](https://github.com/decidim/decidim/pull/10025) +- Backport 'Bump versions on install docs' to v0.27 [\#10008](https://github.com/decidim/decidim/pull/10008) +- **decidim-assemblies**: Backport 'Fix importing a page component without a body' to v0.27 [\#10029](https://github.com/decidim/decidim/pull/10029) -### Developer improvements +## [0.27.0](https://github.com/decidim/decidim/tree/0.27.0) -Nothing. +### Detailed changes -## [0.26.2](https://github.com/decidim/decidim/tree/v0.26.2) +#### Added -### Added +Nothing. + +#### Changed Nothing. -### Changed +#### Fixed Nothing. -### Fixed +#### Removed -- **decidim-comments**, **decidim-core**, **decidim-meetings**: Backport "Fix timeout in comment view and during meetings" to v0.26 [\#9091](https://github.com/decidim/decidim/pull/9091) -- **decidim-core**: Backport "Dont add external link container inside editor" to v0.26 [\#9108](https://github.com/decidim/decidim/pull/9108) -- **decidim-core**: Backport "Add base URI to meta image URLs" to v0.26 [\#9153](https://github.com/decidim/decidim/pull/9153) -- **decidim-initiatives**: Backport "Remove 'edit link' in topbar for initiative's authors" to v0.26 [\#9239](https://github.com/decidim/decidim/pull/9239) -- **decidim-elections**: Backport 'Clarify message to user when checking census' to v0.26 [\#9240](https://github.com/decidim/decidim/pull/9240) -- **decidim-participatory processes**: Backport 'Fix processes count in processes group title cell' to v0.26 [\#9242](https://github.com/decidim/decidim/pull/9242) -- **decidim-elections**: Backport 'Improve wording when casting your vote' to v0.26 [\#9243](https://github.com/decidim/decidim/pull/9243) -- **decidim-proposals**: Backport 'Add 'not answered' as a possible answer in proposals' to v0.26 [\#9246](https://github.com/decidim/decidim/pull/9246) -- **decidim-meetings**: Backport 'Fix meetings minutes migration' to v0.26 [\#9247](https://github.com/decidim/decidim/pull/9247) -- **decidim-assemblies**, **decidim-proposals**: Backport "Fix absolute urls on 'assembly member' and 'collaborative drafts' events" to v0.26 [\#9248](https://github.com/decidim/decidim/pull/9248) -- **decidim-accountability**, **decidim-consultations**: Backport 'Fix components navbar in consultations mobile ' to v0.26 [\#9249](https://github.com/decidim/decidim/pull/9249) -- **decidim-meetings**: Backport 'Move modal to body and fix condition' to v0.26 [\#9250](https://github.com/decidim/decidim/pull/9250) -- **decidim-meetings**: Backport 'Do not send upcoming meeting notification for hidden or withdrawn meetings' to v0.26 [\#9251](https://github.com/decidim/decidim/pull/9251) -- **decidim-core**: Backport 'Show only current organization in verification conflicts with multitenants' to v0.26 [\#9252](https://github.com/decidim/decidim/pull/9252) -- **decidim-elections**: Backport 'Send email to newly added trustees' to v0.26 [\#9253](https://github.com/decidim/decidim/pull/9253) -- **decidim-meetings**: Backport 'Fix registration type field highlighted in admin meeting creation form' to v0.26 [\#9254](https://github.com/decidim/decidim/pull/9254) -- **decidim-surveys**: Backport 'Fix contradictory form errors on survey form' to v0.26 [\#9257](https://github.com/decidim/decidim/pull/9257) -- **decidim-initiatives**: Backport 'Add edit and delete actions in InitiativeType admin table' to v0.26 [\#9260](https://github.com/decidim/decidim/pull/9260) -- **decidim-surveys**: Backport 'Clarify unregistered answers on surveys behavior' to v0.26 [\#9261](https://github.com/decidim/decidim/pull/9261) -- **decidim-elections**: Backport 'Fix voting with single election' to v0.26 [\#9262](https://github.com/decidim/decidim/pull/9262) -- **decidim-initiatives**: Backport 'Fix initiative print link, margin, and organization logo' to v0.26 [\#9263](https://github.com/decidim/decidim/pull/9263) -- **decidim-elections**: Backport 'Remove show more button on elections' to v0.26 [\#9264](https://github.com/decidim/decidim/pull/9264) -- **decidim-surveys**: Backport 'Fix survey activity log entries' to v0.26 [\#9265](https://github.com/decidim/decidim/pull/9265) -- **decidim-budgets**: Backport 'Remove beforeunload confirmation panel from the budgets voting' to v0.26 [\#9266](https://github.com/decidim/decidim/pull/9266) -- **decidim-admin**, **decidim-elections**: Backport 'Fix newsletters and Decidim Votings' to v0.26 [\#9258](https://github.com/decidim/decidim/pull/9258) -- **decidim-core**: Backport 'Fix notifications where resources are missing' to v0.26 [\#9256](https://github.com/decidim/decidim/pull/9256) -- **decidim-core**: Backport 'Enforce password validation rules on 'Forgot your password?' form' to v0.26 [\#9245](https://github.com/decidim/decidim/pull/9245) -- **decidim-core**: Backport 'Fix displaying blocked users in account follow pages' to v0.26 [\#9255](https://github.com/decidim/decidim/pull/9255) -- **decidim-core**: Backport 'Fix Leaflet trying to load "infinite amount of tiles"' to v0.26 [\#9269](https://github.com/decidim/decidim/pull/9269) -- **decidim-system**: Backport 'Enforce password validation rules on system admins' to v0.26 [\#9259](https://github.com/decidim/decidim/pull/9259) -- **decidim-meetings**: Backport 'Remove presenters in the meetings admin backoffice' to v0.26 [\#9323](https://github.com/decidim/decidim/pull/9323) -- **decidim-elections**: Backport 'Correctly show trustees and votings menu' to v0.26 [\#9324](https://github.com/decidim/decidim/pull/9324) -- **decidim-core**: Backport 'Fix hashtag parsing on URLs with fragments' to v0.26 [\#9326](https://github.com/decidim/decidim/pull/9326) -- **decidim-comments**, **decidim-core**: Backport 'Add missing events locales' to v0.26 [\#9327](https://github.com/decidim/decidim/pull/9327) -- **decidim-conferences**: Backport 'Make conference's partners logos always mandatory' to v0.26 [\#9328](https://github.com/decidim/decidim/pull/9328) -- **decidim-admin**: Backport 'Fix margin around warning message in colour settings' to v0.26 [\#9329](https://github.com/decidim/decidim/pull/9329) -- **decidim-elections**: Backport 'Hide more information link when there's no description on an election' to v0.26 [\#9331](https://github.com/decidim/decidim/pull/9331) -- **decidim-admin**, **decidim-assemblies**, **decidim-budgets**, **decidim-core**, **decidim-elections**, **decidim-meetings**, **decidim-pages**, **decidim-proposals**: Backport 'Apply crowdin feedback' to v0.26 [\#9333](https://github.com/decidim/decidim/pull/9333) -- **decidim-comments**, **decidim-core**: Backport 'Don't show deleted resources in last activities ' to v0.26 [\#9330](https://github.com/decidim/decidim/pull/9330) -- **decidim-elections**: Backport 'Fix election label translations' to v0.26 [\#9343](https://github.com/decidim/decidim/pull/9343) -- **decidim-verifications**: Backport 'Allow to renew expired verifications (if renewable)' to v0.26 [\#9344](https://github.com/decidim/decidim/pull/9344) -- **decidim-elections**: Backport 'Add error message when adding question and election has started' to v0.26 [\#9404](https://github.com/decidim/decidim/pull/9404) -- **decidim-core**: Backport 'Fix user interests' to v0.26 [\#9406](https://github.com/decidim/decidim/pull/9406) -- **decidim-elections**: Backport 'Fix regular expression on census check' to v0.26 [\#9408](https://github.com/decidim/decidim/pull/9408) -- **decidim-elections**: Backport 'Enforce YYYYmmdd format in birthdate when uploading census' to v0.26 [\#9410](https://github.com/decidim/decidim/pull/9410) -- **decidim-consultations**: Backport 'Return 404 when there isn't a question' to v0.26 [\#9414](https://github.com/decidim/decidim/pull/9414) -- **decidim-consultations**: Backport 'Return 404 when there isn't a consultation' to v0.26 [\#9413](https://github.com/decidim/decidim/pull/9413) -- **decidim-elections**: Backport 'Return 404 when there isn't a voting in elections_log' to v0.26 [\#9415](https://github.com/decidim/decidim/pull/9415) -- **decidim-proposals**: Backport 'Fix proposals creation with Participatory Texts ' to v0.26 [\#9416](https://github.com/decidim/decidim/pull/9416) -- **decidim-elections**: Backport 'Fix ActionLog when a ballot style is deleted' to v0.26 [\#9411](https://github.com/decidim/decidim/pull/9411) -- **decidim-elections**: Backport 'Only show that the code can be requested via SMS if its true' to v0.26 [\#9409](https://github.com/decidim/decidim/pull/9409) -- **decidim-budgets**, **decidim-proposals**: Backport 'Add missing translation keys proposals import and proposals picker' to v0.26 [\#9412](https://github.com/decidim/decidim/pull/9412) -- **decidim-elections**: Backport 'Fix HTML safe content in election voting' to v0.26 [\#9405](https://github.com/decidim/decidim/pull/9405) -- **decidim-core**: Backport 'Fix for internal links not displaying on page title' to v0.26 [\#9407](https://github.com/decidim/decidim/pull/9407) +Nothing. -### Removed +#### Developer improvements Nothing. -### Internal +## [0.27.0.rc2](https://github.com/decidim/decidim/tree/0.27.0.rc2) -- Backport 'Fix generators specs target branch' to v0.26 [\#9290](https://github.com/decidim/decidim/pull/9290) +### Detailed changes -### Developer improvements +#### Added Nothing. -## [0.26.1](https://github.com/decidim/decidim/tree/v0.26.1) +#### Changed -### Added +Nothing. + +#### Fixed + +- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-core**, **decidim-elections**, **decidim-initiatives**, **decidim-participatory processes**: Backport 'Fix background-image URLs with weird characters' to v0.27 [\#9495](https://github.com/decidim/decidim/pull/9495) +- **decidim-comments**, **decidim-core**: Backport 'Fix long word breaking on comments and cards' to v0.27 [\#9530](https://github.com/decidim/decidim/pull/9530) +- **decidim-core**: Backport 'Fix nested attributes model mapping' to v0.27 [\#9532](https://github.com/decidim/decidim/pull/9532) +- **decidim-initiatives**: Backport 'Add the rexml gem as a requirement for Ruby 3.0.0+ compatibility' to v0.27 [\#9533](https://github.com/decidim/decidim/pull/9533) +- **decidim-elections**: Backport 'Advertise users if BB connection is lost in trustees/admin zones' to v0.27 [\#9534](https://github.com/decidim/decidim/pull/9534) +- **decidim-assemblies**, **decidim-conferences**, **decidim-elections**: Backport 'Fix cache hash on Hightlighted spaces' to v0.27 [\#9537](https://github.com/decidim/decidim/pull/9537) +- **decidim-core**: Backport 'Fix email subject when participatory space title is present' to v0.27 [\#9538](https://github.com/decidim/decidim/pull/9538) +- **decidim-accountability**: Backport 'Add short format to result date' to v0.27 [\#9541](https://github.com/decidim/decidim/pull/9541) +- **decidim-conferences**: Backport 'Fix published conferences order' to v0.27 [\#9687](https://github.com/decidim/decidim/pull/9687) +- **decidim-comments**: Backport 'Fix creation notification when editing a comment ' to v0.27 [\#9689](https://github.com/decidim/decidim/pull/9689) +- **decidim-elections**: Backport 'Remove margin-bottom on votings navigation' to v0.27 [\#9691](https://github.com/decidim/decidim/pull/9691) +- **decidim-initiatives**: Backport 'Use public link on initiatives mailer' to v0.27 [\#9693](https://github.com/decidim/decidim/pull/9693) +- **decidim-accountability**: Backport 'Disallow creating grandchildren results' to v0.27 [\#9697](https://github.com/decidim/decidim/pull/9697) +- **decidim-forms**, **decidim-meetings**: Backport 'Prevent showing announcement on meetings registrations' to v0.27 [\#9699](https://github.com/decidim/decidim/pull/9699) +- **decidim-initiatives**: Backport 'Fix for initiative mailer when promoting committee is disabled' to v0.27 [\#9695](https://github.com/decidim/decidim/pull/9695) +- **decidim-elections**: Backport 'Improve steps election check page with census' to v0.27 [\#9701](https://github.com/decidim/decidim/pull/9701) +- **decidim-core**: Backport 'Fix translated attributes field type change' to v0.27 [\#9703](https://github.com/decidim/decidim/pull/9703) +- **decidim-core**: Backport 'Prevent missing ActionLog entries to break the application' to v0.27 [\#9705](https://github.com/decidim/decidim/pull/9705) +- **decidim-proposals**: Backport 'Fix publish event on official proposals' to v0.27 [\#9707](https://github.com/decidim/decidim/pull/9707) +- **decidim-admin**, **decidim-proposals**: Backport 'Add help text for proposals' 'publish answers immediately' setting ' to v0.27 [\#9711](https://github.com/decidim/decidim/pull/9711) +- **decidim-conferences**: Backport 'Return 404 when there isn't a valid component in program' to v0.27 [\#9716](https://github.com/decidim/decidim/pull/9716) +- **decidim-budgets**: Backport 'Fix budgets seeds on non development apps' to v0.27 [\#9718](https://github.com/decidim/decidim/pull/9718) +- **decidim-core**: Backport 'Fix creating automatic nicknames when taken by user_groups' to v0.27 [\#9720](https://github.com/decidim/decidim/pull/9720) +- **decidim-debates**: Backport 'Fix resource endorsed notification with Debates' to v0.27 [\#9722](https://github.com/decidim/decidim/pull/9722) +- **decidim-core**: Backport 'Set push notifications in user locale' to v0.27 [\#9724](https://github.com/decidim/decidim/pull/9724) +- **decidim-elections**: Backport 'Improve census importing process in elections/votings space' to v0.27 [\#9725](https://github.com/decidim/decidim/pull/9725) +- **decidim-core**: Backport 'Strip tags keeping entity characters' to v0.27 [\#9726](https://github.com/decidim/decidim/pull/9726) +- **decidim-meetings**: Backport 'Fix agenda_item association with agenda' to v0.27 [\#9727](https://github.com/decidim/decidim/pull/9727) +- **decidim-verifications**: Backport 'Fix absolute urls on 'managed user error' event' to v0.27 [\#9729](https://github.com/decidim/decidim/pull/9729) +- **decidim-core**: Backport 'Fix mobile notifications switch component overlaps' to v0.27 [\#9731](https://github.com/decidim/decidim/pull/9731) +- **decidim-core**: Backport 'Fix account update without password change' to v0.27 [\#9735](https://github.com/decidim/decidim/pull/9735) +- **decidim-meetings**: Backport 'Fix order when filtering Meetings' to v0.27 [\#9737](https://github.com/decidim/decidim/pull/9737) +- **decidim-admin**: Backport 'Fix admin autocomplete when a locale is defined in the URL' to v0.27 [\#9738](https://github.com/decidim/decidim/pull/9738) +- **decidim-core**: Backport 'Fix blocked user nickname and avatar in user presenter' to v0.27 [\#9740](https://github.com/decidim/decidim/pull/9740) +- **decidim-core**: Backport 'Change the custom public port ENV variable name to HTTP_PORT' to v0.27 [\#9747](https://github.com/decidim/decidim/pull/9747) +- **decidim-admin**: Backport 'Fix form error overlap with character counter in the admin panel' to v0.27 [\#9748](https://github.com/decidim/decidim/pull/9748) +- **decidim-core**: Backport 'Fix the endorsement permissions' to v0.27 [\#9733](https://github.com/decidim/decidim/pull/9733) +- **decidim-core**: Backport 'Fix PWA install prompt keeps appearing more than once' to v0.27 [\#9744](https://github.com/decidim/decidim/pull/9744) +- **decidim-core**: Backport 'Fix issues with daily and weekly notifications' to v0.27 [\#9739](https://github.com/decidim/decidim/pull/9739) +- **decidim-proposals**: Backport 'Fix redundant notification on comments with linked proposals' to v0.27 [\#9745](https://github.com/decidim/decidim/pull/9745) +- **decidim-generators**: Backport 'Add missing queue close_meeting_reminder to sidekiq configuration' to v0.27 [\#9715](https://github.com/decidim/decidim/pull/9715) +- **decidim-core**: Backport 'Make the HERE Map display in the currently selected language' to v0.27 [\#9713](https://github.com/decidim/decidim/pull/9713) +- **decidim-admin**, **decidim-forms**: Backport 'Fix admin language selector with more than 4 locales' to v0.27 [\#9709](https://github.com/decidim/decidim/pull/9709) +- **decidim-core**, **decidim-dev**, **decidim-generators**: Backport 'Fix data consent expiry' to v0.27 [\#9742](https://github.com/decidim/decidim/pull/9742) +- **decidim-core**: Backport 'Fix uninitialized constant errors with custom set of modules' to v0.27 [\#9743](https://github.com/decidim/decidim/pull/9743) +- **decidim-meetings**: Backport 'Ignore participatory spaces without models in meetings visible_for scope' to v0.27 [\#9795](https://github.com/decidim/decidim/pull/9795) +- **decidim-admin**: Backport 'Fix leaking emails on admin user search controller' to 0.27 [\#9796](https://github.com/decidim/decidim/pull/9796) +- **decidim-core**: Backport 'Fix order of last activities' to v0.27 [\#9802](https://github.com/decidim/decidim/pull/9802) +- **decidim-conferences**: Backport 'Fix conference speaker avatars' to v0.27 [\#9823](https://github.com/decidim/decidim/pull/9823) +- **decidim-core**: Backport 'Prevent the account edit route through Devise' to v0.27 [\#9806](https://github.com/decidim/decidim/pull/9806) +- **decidim-accountability**, **decidim-core**, **decidim-debates**, **decidim-initiatives**, **decidim-meetings**, **decidim-proposals**: Backport 'Fix version pages showing a HTTP 500 error when the version does not exist' to v0.27 [\#9810](https://github.com/decidim/decidim/pull/9810) +- **decidim-core**: Backport 'Fix hashtags not recognized at the beginning of the string' to v0.27 [\#9812](https://github.com/decidim/decidim/pull/9812) +- **decidim-comments**: Backport 'Fix posting comments before the initial load has run' to v0.27 [\#9815](https://github.com/decidim/decidim/pull/9815) +- **decidim-core**: Backport 'Fix hidden error messages on the registration form' to v0.27 [\#9814](https://github.com/decidim/decidim/pull/9814) +- **decidim-core**: Backport 'Fix multitenant organizations stats cache' to v0.27 [\#9808](https://github.com/decidim/decidim/pull/9808) +- **decidim-core**: Backport 'Fix character counter for the WYSIWYG editor' to v0.27 [\#9816](https://github.com/decidim/decidim/pull/9816) +- **decidim-admin**, **decidim-initiatives**: Backport 'Fix initiatives components' to v0.27 [\#9824](https://github.com/decidim/decidim/pull/9824) +- **decidim-core**, **decidim-meetings**: Backport 'Fix iframe disabling producing invalid HTML' to v0.27 [\#9805](https://github.com/decidim/decidim/pull/9805) +- **decidim-assemblies**, **decidim-participatory processes**: Backport 'Fix import of images on spaces' to v0.27 [\#9804](https://github.com/decidim/decidim/pull/9804) +- **decidim-core**: Backport 'Fix doorkeeper initialization after 5.6.0 release' to v0.27 [\#9787](https://github.com/decidim/decidim/pull/9787) + +#### Removed Nothing. -### Changed +#### Developer improvements Nothing. -### Fixed +## [0.27.0.rc1](https://github.com/decidim/decidim/tree/0.27.0.rc1) -- **decidim-meetings**: Backport "Fix the meetings export to also include unpublished meetings" to v0.26 [\#8939](https://github.com/decidim/decidim/pull/8939) -- **decidim-system**, **decidim-verifications**: Backport "Fix verification report with multitenants" to v0.26 [\#8940](https://github.com/decidim/decidim/pull/8940) -- **decidim-core**: Backport "Fix officialized user event missing translations" to v0.26 [\#8942](https://github.com/decidim/decidim/pull/8942) -- **decidim-verifications**: Backport "Fix email for verification conflict with managed users" to v0.26 [\#8945](https://github.com/decidim/decidim/pull/8945) -- **decidim-core**: Backport "Fix profile notifications" to v0.26 [\#8949](https://github.com/decidim/decidim/pull/8949) -- **decidim-assemblies**, **decidim-budgets**, **decidim-comments**, **decidim-consultations**, **decidim-core**, **decidim-elections**, **decidim-forms**, **decidim-initiatives**, **decidim-participatory processes**, **decidim-proposals**: Backport several accessibility fixes to v0.26 [\#8950](https://github.com/decidim/decidim/pull/8950) -- **decidim-core**: Backport "Add missing 'Locale' string in i18n in account page" to v0.26 [\#8980](https://github.com/decidim/decidim/pull/8980) -- **decidim-meetings**: Backport "Truncate the meetings card description" to v0.26 [\#8979](https://github.com/decidim/decidim/pull/8979) -- **decidim-proposals**: Backport "Fix proposals' cards with big images" to v0.26 [\#8978](https://github.com/decidim/decidim/pull/8978) -- **decidim-initiatives**: Backport "Fix link to docs in initiatives admin" to v0.26 [\#8975](https://github.com/decidim/decidim/pull/8975) -- **decidim-comments**: Backport "Fix budget hard dependency and caching flag issues in comments" to v0.26 [\#8973](https://github.com/decidim/decidim/pull/8973) -- **decidim-participatory processes**: Backport "Fix processes creation form with stats, metrics and announcements" to v0.26 [\#8977](https://github.com/decidim/decidim/pull/8977) -- **decidim-initiatives**: Backport "Show signatures in answered initiatives" to v0.26 [\#8991](https://github.com/decidim/decidim/pull/8991) -- **decidim-core**: Backport "Add missing reveal__title classes" to v0.26 [\#8999](https://github.com/decidim/decidim/pull/8999) -- **decidim-core**: Backport "Remove the label from the dropdown menu opener" to v0.26 [\#9002](https://github.com/decidim/decidim/pull/9002) -- **decidim-core**: Backport "Fix mobile nav keyboard focus" to v0.26 [\#9001](https://github.com/decidim/decidim/pull/9001) -- **decidim-core**: Backport "Fix main navigation aria-current attribute" to v0.26 [\#9000](https://github.com/decidim/decidim/pull/9000) -- **decidim-core**: Backport "Show character counter when replying to message" to v0.26 [\#9003](https://github.com/decidim/decidim/pull/9003) -- **decidim-core**: Backport "Fix character counter with emoji picker close to maximum characters" to v0.26 [\#9012](https://github.com/decidim/decidim/pull/9012) -- **decidim-api**, **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-initiatives**, **decidim-meetings**, **decidim-participatory processes**, **decidim-proposals**: Backport "Fix API when meetings have proposal linking disabled" to v0.26 [\#8992](https://github.com/decidim/decidim/pull/8992) -- **decidim-core**: Backport "Fix Devise flash messages translation" to v0.26 [\#9043](https://github.com/decidim/decidim/pull/9043) -- **decidim-core**: Backport "Disable new conversation next button when no users selected" to v0.26 [\#9054](https://github.com/decidim/decidim/pull/9054) -- **decidim-initiatives**: Backport "Fix initiatives signatures issues" to v0.26 [\#8974](https://github.com/decidim/decidim/pull/8974) -- **decidim-blogs**, **decidim-core**, **decidim-debates**, **decidim-proposals**: Backport "Fix for endorsed_by with other user group's member" to v0.26 [\#9062](https://github.com/decidim/decidim/pull/9062) -- **decidim-proposals**: Backport "Fix footer actions caching on proposals' card" to v0.26 [\#9063](https://github.com/decidim/decidim/pull/9063) -- **decidim-admin**: Backport "Add missing 'Locale' string in i18n in selective newsletter" to v0.26 [\#9064](https://github.com/decidim/decidim/pull/9064) -- **decidim-core**: Backport "Fix social share button sharing" to v0.26 [\#9065](https://github.com/decidim/decidim/pull/9065) -- **decidim-meetings**: Backport "Use published meetings scope on processes landing and proposal's form" to v0.26 [\#9066](https://github.com/decidim/decidim/pull/9066) -- **decidim-core**: Backport "Require omniauth/rails_csrf_protection explicitly" to v0.26 [\#9067](https://github.com/decidim/decidim/pull/9067) -- **decidim-core**, **decidim-proposals**: Backport "Fix amendable events title" to v0.26 [\#9079](https://github.com/decidim/decidim/pull/9079) -- **decidim-proposals**: Backport "Create admin log records when proposals are imported from a file" to v0.26 [\#9077](https://github.com/decidim/decidim/pull/9077) -- **decidim-comments**, **decidim-core**, **decidim-proposals**: Backport "Add noreferrer and ugc to links" to v0.26 [\#9078](https://github.com/decidim/decidim/pull/9078) -- **decidim-meetings**: Backport "Fix submit in meetings admin form" to v0.26 [\#9076](https://github.com/decidim/decidim/pull/9076) -- **decidim-core**: Backport "Fix session cookie SameSite policy" to v0.26 [\#9059](https://github.com/decidim/decidim/pull/9059) -- **decidim-budgets**, **decidim-core**, **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport "Fix cache URLs on cards" to v0.26 [\#9074](https://github.com/decidim/decidim/pull/9074) -- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-core**, **decidim-initiatives**, **decidim-participatory processes**: Backport "Fix Twitter hashtag search when it starts with a number" to v0.26 [\#9075](https://github.com/decidim/decidim/pull/9075) +### 1. Upgrade notes -### Removed +As usual, we recommend that you have a full backup, of the database, application code and static files. -Nothing. +To update, follow these steps: -### Internal +#### 1.1. Update your Gemfile -- Backport "Fix ActionMailer preview loading" to v0.26 [\#8963](https://github.com/decidim/decidim/pull/8963) -- Backport "Fix flaky spec in meetings multi-date selectors" to v0.26 [\#8976](https://github.com/decidim/decidim/pull/8976) -- Backport "Local HTML validator for the CI" to v0.26 [\#9004](https://github.com/decidim/decidim/pull/9004) -- Backport "Fix API when meetings have proposal linking disabled" to v0.26 [\#8992](https://github.com/decidim/decidim/pull/8992) +```ruby +gem "decidim", "0.27.0.rc1" +gem "decidim-dev", "0.27.0.rc1" +``` -### Developer improvements +#### 1.2. Run these commands -- Backport "Fix Devise configs that depend on Decidim configs" to v0.26 [\#9022](https://github.com/decidim/decidim/pull/9022) -- Backport "Fix Faker address country code in seeds" to v0.26 [\#9046](https://github.com/decidim/decidim/pull/9046) +```console +bundle update decidim +bin/rails decidim:upgrade +bin/rails db:migrate +``` -## [0.26.0](https://github.com/decidim/decidim/tree/v0.26.0) +#### 1.3. Follow the steps and commands detailed in these notes -### Added +### 2. General notes -Nothing. +#### 2.1. Ruby update to 3.0 -### Changed +We have updated the Ruby version to 3.0.2. Upgrading to this version will require either to install the Ruby Version on your host, or change the decidim docker image to use ruby:3.0.2. -- **decidim-comments**: Backport "Show hidden comments replies" to v0.26 [\#8868](https://github.com/decidim/decidim/pull/8868) +You can read more about this change on PR [\#8452](https://github.com/decidim/decidim/pull/8452). -### Fixed +#### 2.2. Rails update to 6.1 -- **decidim-proposals**: Backport "Fix geocoding NaN values" to v0.26 [\#8778](https://github.com/decidim/decidim/pull/8778) -- **decidim-core**: Backport "Add 'nofollow noopener' rel to the profile personal URL" to v0.26 [\#8780](https://github.com/decidim/decidim/pull/8780) -- **decidim-generators**: Backport "Add .keep file to empty directory to include on git committing" to v0.26 [\#8788](https://github.com/decidim/decidim/pull/8788) -- **decidim-core**: Backport "Fix avatar upload validation errors are displayed twice" to v0.26 [\#8798](https://github.com/decidim/decidim/pull/8798) -- **decidim-meetings**: Backport "Fix displaying hidden meetings in homepage's 'upcoming meetings' content block" to v0.26 [\#8819](https://github.com/decidim/decidim/pull/8819) -- **decidim-participatory processes**: Backport "Fix characters not encoded in highlighted participatory processes groups title" to v0.26 [\#8824](https://github.com/decidim/decidim/pull/8824) -- **decidim-comments**: Backport "Fix displaying hidden related resources" to v0.26 [\#8835](https://github.com/decidim/decidim/pull/8835) -- **decidim-generators**: Backport "Add natively a .keep file to empty directory to include on git committing" to v0.26 [\#8836](https://github.com/decidim/decidim/pull/8836) -- **decidim-consultations**, **decidim-core**, **decidim-elections**: Backport "Fix report moderation for all the spaces" to v0.26 [\#8841](https://github.com/decidim/decidim/pull/8841) -- **decidim-meetings**, **decidim-participatory processes**: Backport "Fix displaying hidden meetings in show process page" to v0.26 [\#8843](https://github.com/decidim/decidim/pull/8843) -- **decidim-meetings**: Backport "Fix displaying hidden resources in global search" to v0.26 [\#8850](https://github.com/decidim/decidim/pull/8850) -- **decidim-core**: Backport "Fix activity cell disappearing author images" to v0.26 [\#8848](https://github.com/decidim/decidim/pull/8848) -- **decidim-initiatives**: Backport "Fix scope validation on initiative's creation" to v0.26 [\#8857](https://github.com/decidim/decidim/pull/8857) -- **decidim-accountability**: Backport "Fix accountability categories' colors" to v0.26 [\#8858](https://github.com/decidim/decidim/pull/8858) -- **decidim-debates**: Backport "Remove actions from debates' cards" to v0.26 [\#8861](https://github.com/decidim/decidim/pull/8861) -- **decidim-assemblies**: Backport "Fix assemblies title when there are unpublished children" to v0.26 [\#8860](https://github.com/decidim/decidim/pull/8860) -- **decidim-core**: Backport "Fix cache_hash generation in AuthorCell" to v0.26 [\#8862](https://github.com/decidim/decidim/pull/8862) -- **decidim-meetings**, **decidim-participatory processes**: Backport "Fix displaying hidden meetings in processes group's 'upcoming meetings' content block" to v0.26 [\#8864](https://github.com/decidim/decidim/pull/8864) -- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-proposals**: Backport "Fix notifications when there is a note proposal in other spaces than processes" to v0.26 [\#8865](https://github.com/decidim/decidim/pull/8865) -- **decidim-proposals**: Backport "Fix answered proposals display" to v0.26 [\#8863](https://github.com/decidim/decidim/pull/8863) -- **decidim-comments**: Backport "Show hidden comments replies" to v0.26 [\#8868](https://github.com/decidim/decidim/pull/8868) -- **decidim-meetings**: Backport "Fix meetings iframe embed code" to v0.26 [\#8884](https://github.com/decidim/decidim/pull/8884) +We have updated the Ruby on Rails version to 6.1. This will be done automatically when doing the `bundle update`. If you had any code customization you'll probably need to take this into account and update your code. Some important aspects to mention: -### Removed +- ActionMailer - Change default queue name of the deliver (:mailers) job to be the job adapter's default (:default) +- ActiveSupport - Remove deprecated fallback to I18n.default_locale when config.i18n.fallbacks is empty. This change should be transparent for all the Decidim users that have configured the `Decidim.default_locale` +- If you are using Spring, it is highly suggested to add the following line at the top of your application's `config/spring.rb` (especially if you are seeing the following messages in the console `ERROR: directory is already being watched!`): -Nothing. +```ruby +require "decidim/spring" +``` -### Internal +You can read more about this change on PR [\#8411](https://github.com/decidim/decidim/pull/8411). -- Backport "Fix flaky test in UpdateAssemblyMember" to v0.26 [\#8803](https://github.com/decidim/decidim/pull/8803) +#### 2.3. Data consent change (aka "cookie consent") -### Developer improvements +Local data consent management has been updated, generally also referred to as "cookie consent". Supported data consent categories are essential, preferences, analytics and marketing. -Nothing. +This feature is many times referred to as "cookie consent" due to historic reasons but in Decidim we prefer to call it "data consent" because this can also include other data stored in the user's browser using its APIs, such as data added to LocalStorage. -## [0.26.0.rc2](https://github.com/decidim/decidim/tree/v0.26.0.rc2) +As many non-technical people are still more familiar with the "cookie" terminology, the user interface talks only about "Cookie consent" to make it easier to understand for non-technical participants. -### Added +Iframe HTML elements that are added with the editor or meeting forms are disabled until data consent is given for all data categories. Scripts that require local data to be stored in the user's browser could be added as follows: -Nothing. -#### Moderated content can now be removed from search index -PR [\#8811](https://github.com/decidim/decidim/pull/8811) is addressing an issue when the moderated resources are not removed from the general search index. +```html + +``` -This will automatically work for new moderated resources. For already existing ones, we have introduced a new task that will remove the moderated content from being displayed in search: +Note that you need to define the `type="text/plain"` for the script that adds local data to the user's browser in order to prevent the script from being executed before data consent is given. You should also define the metadata for all the local data that you or your 3rd party scripts are adding to the user's browser. -```ruby +Mind that we also changed the data consent cookie from "decidim-cc" to "decidim-consent" by default. You can change it on your initializer, or update your legal notice accordingly. + +Learn more about [Data consent at Decidim Documentation](https://docs.decidim.org/en/customize/data_consent). You can read more about this change on PR [\#9271](https://github.com/decidim/decidim/pull/9271). + +#### 2.4. Configuration via Environment Variables + +We've modified the default installation to configure most of the application through Environment Variables. For existing installations we recommend that you migrate to this new model so its easier to configure your applications. + +As an example, after migrating to this, if you want to enable a setting, you'll need to: + +a. Set the correct Environment Variable +b. Restart the server + +Until now the flow could be something like: + +a. Change your initializer +b. Commit to git +c. Push to git server +d. Deploy to the server +e. Restart the server + +For migrating: + +1. Backup your `config/secrets.yml` and `config/initializers/decidim.rb` +1. Generate a new decidim app and copy your generated files +1. Migrate your old settings to the new Environment Variables. + +Learn more about [Environment Variables at Decidim Documentation](https://docs.decidim.org/en/configure/environment_variables/). You can read more about this change on PR [\#8725](https://github.com/decidim/decidim/pull/8725). + +#### 2.5. GraphQL API documentation change + +We've replaced the `graphql-docs` npm package with gem. You shouldn't need to do anything as this will be handled automatically. + +The static documentation will be rendered into the `app/views/static/api/docs` directory, which is being refreshed automatically when you run `bin/rails decidim:upgrade`. + +You can read more about this change on PR [\#8631](https://github.com/decidim/decidim/pull/8631). + +#### 2.6. Custom icons new uploader + +We now only allow PNG images at Favicon so we can provide higher quality versions to mobile devices. + +You can read more about this change on PR [\#8645](https://github.com/decidim/decidim/pull/8645). + +#### 2.7. Strong password rules for admin users + +For extra security, there are new password rules for administrator users which are enabled by default. This means that: + +- This will force the current administrators to change their passwords after 90 days has passed from the previous login. +- For development/testing/staging environments this also means that the default user passwords have changed to `decidim123456789` to match the minimum length rules for admins. +- For consistency reasons, regular users password has also been changed with the seed data. + +The relevant [Environment Variables](https://docs.decidim.org/en/configure/environment_variables/) are: + +| Name | Value | Default value | +| -------- | -------- | -------- | +| DECIDIM_ADMIN_PASSWORD_STRONG | Enable strong password rules for admin users. | true | +| DECIDIM_ADMIN_PASSWORD_EXPIRATION_DAYS | Defines how many days admin passwords are valid before they need to be reset. | 90 | +| DECIDIM_ADMIN_PASSWORD_REPETITION_TIMES | Defines how many previous passwords are compared against new admin user passwords. | 5 | +| DECIDIM_ADMIN_PASSWORD_MIN_LENGTH | The minimum character length for admin user passwords. | 15 | + +You can read more about this change on PR [\#9347](https://github.com/decidim/decidim/pull/9347). + +#### 2.8 Service workers + +For the Progressive Web Application related features, like Push Notifications and Add To Home Screen, you'll need to update your webpack configuration: + +```console +bin/rails decidim:webpacker:install +``` + +You'll need to also add these to your .gitignore: + +```gitignore +public/sw.js +public/sw.js.map +``` + +These files will be generated by the asset compilation task in your production server. Most of the time this should be handled automatically by your deployment process (like Capistrano or Heroku). In case that you need to run that manually, this is the command: + +```console +bin/rails assets:precompile +``` + +In your development environment this should be happening automatically behind the scenes or if you are running the `./bin/webpack-dev-server` manually, during the recompilation process. + +### 3. One time actions + +These are one time actions that need to be done after the code is updated in the production database. + +#### 3.1. Moderated content can now be removed from search index + +We have fixed a bug where moderated resources weren't removed from the general search index. This will automatically work for new moderated resources. For already existing ones, we have introduced a new task that will remove the moderated content from being displayed in search: + +```console bin/rails decidim:upgrade:moderation:remove_from_search ``` -#### Default Decidim app fully configurable via ENV vars +You can read more about this change on PR [\#8811](https://github.com/decidim/decidim/pull/8811). -### Changed +#### 3.2. New Comments statistics structure -Nothing. +We've fixed the stastics of comments in participatory spaces. You'll need to run the task: -### Fixed +```console +bin/rails decidim_comments:update_participatory_process_in_comments +``` -- **decidim-meetings**: Backport "Fix for preview unpublished meetings by admin user" to v0.26 [\#8724](https://github.com/decidim/decidim/pull/8724) -- **decidim-comments**: Backport "Adds emojis when user edits a comment" to v0.26 [\#8743](https://github.com/decidim/decidim/pull/8743) -- **decidim-core**: Backport "Properly mark sender and recipient in Conversation" to v0.26 [\#8746](https://github.com/decidim/decidim/pull/8746) -- **decidim-participatory processes**: Backport "Fix order by weight in processes groups' processes content block" to v0.26 [\#8771](https://github.com/decidim/decidim/pull/8771) -- **decidim-core**: Backport "Don't display blocked users in mentions" to v0.26 [\#8770](https://github.com/decidim/decidim/pull/8770) +You can read more about this change on PR [\#8012](https://github.com/decidim/decidim/pull/8012). -### Removed +#### 3.3. Push Notifications -Nothing. +We've implemented Push Notifications for improving the engagement with the platform. To configure it: -### Internal +##### 3.3.1. Generate the VAPID keys by running the command -- Backport "Revert the i18n-tasks initialization syntax" to v0.26 [\#8696](https://github.com/decidim/decidim/pull/8696) -- Backport "Lock graphql version to 1.12 minor" to v0.26 [\#8695](https://github.com/decidim/decidim/pull/8695) -- Disable codeclimate's stylelint [\#8711](https://github.com/decidim/decidim/pull/8711) +```console +bin/rails decidim:pwa:generate_vapid_keys +``` -### Developer improvements +##### 3.3.2. Copy them to your [Environment Variables](https://docs.decidim.org/en/configure/environment_variables/) file -- Backport "Fix webpacker generator for modules" to v0.26 [\#8750](https://github.com/decidim/decidim/pull/8750) +The relevant [Environment Variables](https://docs.decidim.org/en/configure/environment_variables/) are: -## [0.26.0.rc1](https://github.com/decidim/decidim/tree/v0.26.0.rc1) +| Name | Value | Default value | +| -------- | -------- | -------- | +| VAPID_PUBLIC_KEY | VAPID public key that will be used to sign the Push API requests. | | +| VAPID_PRIVATE_KEY | VAPID private key that will be used to sign the Push API requests. | | -### Migration notes -#### Register assets paths -To prevent Zeitwerk from trying to autoload classes from the `app/packs` folder, it's necesary to register these paths for each module and for the application using the method `Decidim.register_assets_path` on initializers. This is explained in the webpacker migration guides for [applications](https://github.com/decidim/decidim/blob/develop/docs/modules/develop/pages/guide_migrate_webpacker_app.adoc#help-decidim-to-know-the-applications-assets-folder) and [modules](https://github.com/decidim/decidim/blob/develop/docs/modules/develop/pages/guide_migrate_webpacker_module.adoc#help-decidim-to-know-the-modules-assets-folder)), and was implemented in [\#8449](https://github.com/decidim/decidim/pull/8449). +These will be printed to the console when you run the command instructed in the previous step. -#### Unconfirmed access disabled by default -As per [\#8233](https://github.com/decidim/decidim/pull/8233), by default all participants must confirm their email account to sign in. Implementors can change this setting as a [initializer configuration](https://docs.decidim.org/en/configure/initializer/#_unconfirmed_access_for_users): +You can read more about this change on PR [\#8774](https://github.com/decidim/decidim/pull/8774). -```ruby -Decidim.configure do |config| - config.unconfirmed_access_for = 2.days -end +#### 3.4. Categories' description is deprecated + +The `description` field in the categories admin forms has been removed (this applies to any participatory space using categories). For now it's still available in the database, so you can extract it with the following command: + +```console +bin/rails runner -e production 'Decidim::Category.pluck(:id, :name, :description).map { |row| puts row.join(";") }' ``` -#### User workflows change to prevent user enumeration attacks +In the next version (v0.28.0) it will be fully removed from the database. -Until now it was possible to see if an email account was registered in Decidim, by using features like "Forgot your password", as the response changed if the email existed ("`You will receive an email with instructions on how to reset your password in a few minutes`") that's different to a non-existing user account ("`could not be found. Did you sign up previously?`"). This allows User Enumration attacks, where a malicious actor can check if anyone has an acount in the platform. As per [\#8537](https://github.com/decidim/decidim/pull/8537), anyone has the same answer always "`If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes`". +You can read more about this change on PR [\#8617](https://github.com/decidim/decidim/pull/8617). -#### Blocked user in global search +#### 3.5. Global search user by nickname -PR [\#8658](https://github.com/decidim/decidim/pull/8658) Blocked users are present in global search, to update the search and make them disappear, Run in a rails console or create a migration with: +We've added the ability to search for a user by nickname. You'll need to update the existing search index by running this in (be aware that it could take a while if your database has a lot of Users!): -```ruby - Decidim::User.find_each(&:try_update_index_for_search_resource) +```console +bin/rails runner -e production 'Decidim::User.find_each { |u| puts "Processing user #{u.id}" ; u.try_update_index_for_search_resource }' ``` -Please be aware that it could take a while if your database has a lot of Users. +You can read more about this change on PR [\#8658](https://github.com/decidim/decidim/pull/8658). -#### Fix statistics in Comments +#### 3.6. Add CORS policy for dynamic file uploads -As per [#8012](https://github.com/decidim/decidim/pull/8012), for fixing statistic in comments. There's a rake task that you need to run: +This release allows Decidim users to upload files to Decidim dynamically from their browsers. If you are using any external file storage providers, such as Amazon S3, Google Cloud Storage or Azure Storage, you need to configure a CORS policy for these service providers to make the uploads work for the end users. If you are using the default configurations with a local file storage, you don't have to do any extra configuration to make this work. -```ruby -rake decidim_comments:update_participatory_process_in_comments +To configure the CORS policy for each 3rd party service, please refer to the [Active Storage section](https://docs.decidim.org/en/services/activestorage.html) of the documentation. + +You can read more about this change on PR [\#8681](https://github.com/decidim/decidim/pull/8681). + +### 4. Scheduled tasks + +Implementers need to configure these changes it in your scheduler task system in the production server. We give the examples with `crontab`, although alternatively you could use `whenever` gem or the scheduled jobs of your hosting provider. + +#### 4.1. Reminders for participants + +We have added the possibility to send reminders for some actions, like pending budgets orders or user generated meetings that weren't closed. + +```console +# Generate reminders +4 0 * * * cd /home/user/decidim_application && RAILS_ENV=production bundle exec rake decidim:reminders:all +``` + +You can read more about this change on PR [\#8621](https://github.com/decidim/decidim/pull/8621). + +#### 4.2. Mail Notifications digest + +Participants can configure if they want to receive notifications in real-time (one email by any action that they're notified to), or a daily or weekly notifications digest (a highlight with some of the notifications). + +```console +# Send notification mail digest daily +5 0 * * * cd /home/user/decidim_application && RAILS_ENV=production bundle exec rake decidim:mailers:notifications_digest_daily + +# Send notification mail digest weekly on saturdays +5 0 * * 6 cd /home/user/decidim_application && RAILS_ENV=production bundle exec rake decidim:mailers:notifications_digest_weekly ``` -#### Base64 images migration +You can read more about this change on PR [\#8833](https://github.com/decidim/decidim/pull/8833). -As per [\#8250](https://github.com/decidim/decidim/pull/8250), we've replaced the default base64 editor images attachment with the use of ActiveStorage attachments. This PR also adds a task to parse all editor contents and replace existing base64 images with attachments. The task parses all the attributes which can be edited from admin using the WYSIWYG editor. The task requires an argument with the email of an admin used to create EditorImage instances. To run this task execute: +#### 4.3. Rename data portability to download your data +"Data portability" has been renamed to "Download you data". As this was a scheduled task that was already configured you'll need to change it. Where you had: + +```console +# Remove expired data portability files +0 0 * * * cd /home/user/decidim_application && RAILS_ENV=production bundle exec rake decidim:delete_data_portability_files ``` -rails decidim:active_storage_migrations:migrate_inline_images_to_active_storage[admin_email] + +Changes to: + +```console +# Remove expired download your data files +0 0 * * * cd /home/user/decidim_application && RAILS_ENV=production bundle exec rake decidim:delete_download_your_data_files ``` -### Added +You can read more about this change on PR [\#9196](https://github.com/decidim/decidim/pull/9196). -- **decidim-budgets**: Port decidim-budgets improvements from AjuntamentdeBarcelona/decidim [\#8249](https://github.com/decidim/decidim/pull/8249) -- **decidim-elections**: Improve evote admin logs [\#8263](https://github.com/decidim/decidim/pull/8263) -- **decidim-blogs**, **decidim-meetings**: Add card images to meetings and blog posts [\#8276](https://github.com/decidim/decidim/pull/8276) -- **decidim-admin**: Align UI groups filtering with the rest of decidim [\#8105](https://github.com/decidim/decidim/pull/8105) -- **decidim-admin**, **decidim-proposals**: Improve error messages in admin panel [\#8193](https://github.com/decidim/decidim/pull/8193) -- **decidim-elections**: Allow to mark trustees as missing [\#8314](https://github.com/decidim/decidim/pull/8314) -- **decidim-admin**: Add sorting to private participants in a participatory space [\#8242](https://github.com/decidim/decidim/pull/8242) -- **decidim-comments**: Improve control of comments in meetings and debates [\#8027](https://github.com/decidim/decidim/pull/8027) -- **decidim-proposals**: Offer a way to see all proposals in withdrawn proposal list [\#8251](https://github.com/decidim/decidim/pull/8251) -- **decidim-admin**, **decidim-proposals**: Configurable default order for proposals [\#8295](https://github.com/decidim/decidim/pull/8295) -- **decidim-assemblies**: Filter assemblies by assembly type in admin [\#7153](https://github.com/decidim/decidim/pull/7153) -- **decidim-assemblies**: Non participant assembly members avatar [\#8277](https://github.com/decidim/decidim/pull/8277) -- **decidim-core**: Add image file upload in QuillJS editor [\#8250](https://github.com/decidim/decidim/pull/8250) -- **decidim-meetings**: Make meeting report editable by the author in front-end [\#8209](https://github.com/decidim/decidim/pull/8209) -- **decidim-core**: Improve dialog accessibility [\#8294](https://github.com/decidim/decidim/pull/8294) -- **decidim-meetings**: Ability for users to withdraw their meetings [\#8248](https://github.com/decidim/decidim/pull/8248) -- **decidim-admin**: Add colors accessibility warning in admin Appearance [\#8354](https://github.com/decidim/decidim/pull/8354) -- **decidim-proposals**: Import proposal answers [\#8271](https://github.com/decidim/decidim/pull/8271) -- **decidim-core**: Add more actions in QuillJS toolbar [\#8120](https://github.com/decidim/decidim/pull/8120) -- **decidim-meetings**: Add more filter options to directory meetings page [\#8333](https://github.com/decidim/decidim/pull/8333) -- **decidim-assemblies**, **decidim-conferences**, **decidim-participatory processes**: Add filters for Participatory process admins section [\#8106](https://github.com/decidim/decidim/pull/8106) -- **decidim-budgets**: Show modal when user is trying to leave with pending vote [\#8387](https://github.com/decidim/decidim/pull/8387) -- **decidim-meetings**: Meetings iframe visibility [\#8307](https://github.com/decidim/decidim/pull/8307) -- **decidim-budgets**: Add search, filters and sorting to admin panel budget projects [\#8592](https://github.com/decidim/decidim/pull/8592) -- **decidim-core**: Describe the notifications' time with words [\#8564](https://github.com/decidim/decidim/pull/8564) -- **decidim-comments**, **decidim-core**: Add link to comments in Notifications [\#8607](https://github.com/decidim/decidim/pull/8607) -- **decidim-comments**, **decidim-core**: Add full content of comments in notifications [\#8581](https://github.com/decidim/decidim/pull/8581) -- **decidim-core**: Change colors on mobile navigation bar [\#8628](https://github.com/decidim/decidim/pull/8628) -- **decidim-core**, **decidim-proposals**: Add author to proposals in notifications [\#8603](https://github.com/decidim/decidim/pull/8603) -- **decidim-comments**, **decidim-core**, **decidim-meetings**, **decidim-proposals**: Allow participants to receive translated content by email [\#8174](https://github.com/decidim/decidim/pull/8174) -- **decidim-admin**: Add search, filters, pagination and sorting to moderated users [\#8620](https://github.com/decidim/decidim/pull/8620) -- **decidim-surveys**: Add "title and description" in surveys [\#8588](https://github.com/decidim/decidim/pull/8588) +### 5. Changes in APIs -### Changed +#### 5.1. Javascript load at the bottom of the pages -- **decidim-elections**: Validate census CSV headers [\#8264](https://github.com/decidim/decidim/pull/8264) -- **decidim-meetings**: Improve Attendees count error handling on frontend [\#8238](https://github.com/decidim/decidim/pull/8238) -- **decidim-core**: Disable unconfirmed access by default [\#8233](https://github.com/decidim/decidim/pull/8233) -- **decidim-meetings**: Rename 'upcoming events' content block to 'upcoming meetings' [\#8412](https://github.com/decidim/decidim/pull/8412) -- **decidim-core**: Change user workflows to prevent user enumeration attacks [\#8537](https://github.com/decidim/decidim/pull/8537) +For improving performance and load times, we've moved javascript snippets to the bottom of `body` sections. -### Fixed +If you are redefining Decidim layout, using partials including javascript packs, or have the "HTML snippet" option enabled, you might need to review them. -- **decidim-accountability**: Fix accountability notifications proposal title [\#8240](https://github.com/decidim/decidim/pull/8240) -- **decidim-elections**: Remove white spaces in Census [\#8262](https://github.com/decidim/decidim/pull/8262) -- **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Fix characters not encoded in title [\#8253](https://github.com/decidim/decidim/pull/8253) -- **decidim-proposals**: Fix flaky test on proposals splitting [\#8302](https://github.com/decidim/decidim/pull/8302) -- **decidim-core**: Fix invalid i18n values for diff changeset [\#8299](https://github.com/decidim/decidim/pull/8299) -- **decidim-meetings**: Fix live? missing method delegation in online_meeting cell [\#8241](https://github.com/decidim/decidim/pull/8241) -- **decidim-comments**: Fix statistics in Comments [\#8012](https://github.com/decidim/decidim/pull/8012) -- **decidim-budgets**: Fix some explore budgets specs [\#8303](https://github.com/decidim/decidim/pull/8303) -- **decidim-core**: Fix missing icons after CORS [\#8290](https://github.com/decidim/decidim/pull/8290) -- **decidim-core**: Remove unnecessary spacer from external link indicator [\#8291](https://github.com/decidim/decidim/pull/8291) -- **decidim-core**: [CVE-2021-22942] Possible Open Redirect in Host Authorization Middleware [\#8265](https://github.com/decidim/decidim/pull/8265) -- **decidim-debates**: Fix "last comment by" when commenter is a user group [\#8279](https://github.com/decidim/decidim/pull/8279) -- **decidim-proposals**: Similar proposal functionality breaks when the machine translation is enabled. [\#8098](https://github.com/decidim/decidim/pull/8098) -- **decidim-core**: Fix regex that parses users and groups references inside content. [\#8297](https://github.com/decidim/decidim/pull/8297) -- **decidim-assemblies**: Fix birthday attribute type in Assembly Members [\#8311](https://github.com/decidim/decidim/pull/8311) -- **decidim-comments**: Fix issues with dynamic comments polling [\#8317](https://github.com/decidim/decidim/pull/8317) -- **decidim-assemblies**: Fix "Edit" and "View public page" in Assembly Members [\#8312](https://github.com/decidim/decidim/pull/8312) -- **decidim-comments**: Fix "View all comments" link in single comment page [\#8308](https://github.com/decidim/decidim/pull/8308) -- **decidim-budgets**: Fix dont allow budget exceeding in project view [\#8261](https://github.com/decidim/decidim/pull/8261) -- **decidim-debates**: Fix title meta tag for debates [\#8323](https://github.com/decidim/decidim/pull/8323) -- **decidim-proposals**: Fix UserAnswersSerializer for CSV exports [\#8329](https://github.com/decidim/decidim/pull/8329) -- **decidim-admin**: Do not block registered users with InviteUserAgain [\#8268](https://github.com/decidim/decidim/pull/8268) -- **decidim-conferences**: Fix error when accessing the meetings of a conference with speakers related [\#8369](https://github.com/decidim/decidim/pull/8369) -- **decidim-conferences**: Fix details on conference speakers: affiliation order, personal URL link, seeds and more info link [\#8378](https://github.com/decidim/decidim/pull/8378) -- **decidim-meetings**: Define localized fields in Decidim::Meetings:DiffRenderer [\#8381](https://github.com/decidim/decidim/pull/8381) -- **decidim-core**: Include only public entities in the following page [\#8361](https://github.com/decidim/decidim/pull/8361) -- **decidim-proposals**: Any user can access proposal's pages representing the "create a proposal" steps [\#8390](https://github.com/decidim/decidim/pull/8390) -- **decidim-core**: Fix localized faker with single locale [\#8394](https://github.com/decidim/decidim/pull/8394) -- **decidim-core**: Fix user activity page error message with missing username [\#8403](https://github.com/decidim/decidim/pull/8403) -- **decidim-core**: Fix conversation with deleted account [\#8409](https://github.com/decidim/decidim/pull/8409) -- **decidim-core**: Fix javascript exception when geocoding proposals is disabled [\#8413](https://github.com/decidim/decidim/pull/8413) -- **decidim-blogs**: Add missing translations [\#8426](https://github.com/decidim/decidim/pull/8426) -- **decidim-comments**: Refresh comments component after updating [\#8362](https://github.com/decidim/decidim/pull/8362) -- **decidim-core**: Fix webpacker issue when using zeitwerk [\#8444](https://github.com/decidim/decidim/pull/8444) -- **decidim-core**: Improve Zeitwerk assets paths to ignore [\#8449](https://github.com/decidim/decidim/pull/8449) -- **decidim-surveys**: Fix notification after creating survey [\#8463](https://github.com/decidim/decidim/pull/8463) -- **decidim-budgets**, **decidim-comments**: Fix comment's get link in project view [\#8450](https://github.com/decidim/decidim/pull/8450) -- **decidim-elections**: Fix report missing trustee admin log entry [\#8468](https://github.com/decidim/decidim/pull/8468) -- **decidim-system**: Add `pptx` in allowed_file_extensions (of admin) [\#8502](https://github.com/decidim/decidim/pull/8502) -- **decidim-core**: Fix 404 link in 'how to participate' home content block [\#8513](https://github.com/decidim/decidim/pull/8513) -- **decidim-meetings**: Fix meetings with multiple dates [\#8497](https://github.com/decidim/decidim/pull/8497) -- **decidim-core**: Fix pt-BR issue [\#8523](https://github.com/decidim/decidim/pull/8523) -- **decidim-generators**: Freezing webpacker to RC.5 until RC.7 is fixed [\#8531](https://github.com/decidim/decidim/pull/8531) -- **decidim-conferences**: Fix conference speakers when there isn't any avatar [\#8520](https://github.com/decidim/decidim/pull/8520) -- **decidim-assemblies**, **decidim-participatory processes**: Fix the copy of components weights in participatory processes and assemblies [\#8498](https://github.com/decidim/decidim/pull/8498) -- **decidim-meetings**: Fix meetings input when rich text editor is disabled [\#8534](https://github.com/decidim/decidim/pull/8534) -- **decidim-meetings**: Fix showing created meetings in 'my public profile' [\#8519](https://github.com/decidim/decidim/pull/8519) -- **decidim-meetings**, **decidim-proposals**: Fix various proposal picker issues when there are thousands of proposals [\#8558](https://github.com/decidim/decidim/pull/8558) -- **decidim-core**: Remove border on all the fieldsets [\#8561](https://github.com/decidim/decidim/pull/8561) -- **decidim-initiatives**: Remove wrong in initiatives header [\#8563](https://github.com/decidim/decidim/pull/8563) -- **decidim-core**: Fix CSS layout wrapper top padding [\#8562](https://github.com/decidim/decidim/pull/8562) -- **decidim-forms**, **decidim-surveys**: Fix duplicated answers in surveys [\#8560](https://github.com/decidim/decidim/pull/8560) -- **decidim-meetings**: Fix the meeting copy functionality [\#8430](https://github.com/decidim/decidim/pull/8430) -- **decidim-core**: Move social login buttons to the top of the login modal [\#8574](https://github.com/decidim/decidim/pull/8574) -- **decidim-comments**, **decidim-meetings**: Fix HTML injection in comments and meeting's description [\#8511](https://github.com/decidim/decidim/pull/8511) -- **decidim-core**: Fix avatar thumbnail in participants' profile [\#8577](https://github.com/decidim/decidim/pull/8577) -- **decidim-core**: Rename index to avoid conflicts with decidim_awesome module migrations [\#8613](https://github.com/decidim/decidim/pull/8613) -- **decidim-core**: Fix group mentions in notifications [\#8598](https://github.com/decidim/decidim/pull/8598) -- **decidim-forms**, **decidim-surveys**: Fix surveys exports with free text in multiple option [\#8582](https://github.com/decidim/decidim/pull/8582) -- **decidim-core**: Fix reply to a conversation with deleted participants [\#8635](https://github.com/decidim/decidim/pull/8635) -- **decidim-admin**, **decidim-debates**, **decidim-proposals**: Fix consistency in creation actions phrasing: "Participants can create XXX" [\#8650](https://github.com/decidim/decidim/pull/8650) -- **decidim-core**: Fix wrong display of deleted accounts in conversations [\#8641](https://github.com/decidim/decidim/pull/8641) -- **decidim-core**: Fix cache key on ActivityCell [\#8654](https://github.com/decidim/decidim/pull/8654) -- **decidim-participatory processes**: Fix participatory groups leaks on other organizations/tenants [\#8651](https://github.com/decidim/decidim/pull/8651) -- **decidim-core**: Fix blocked users appear in search [\#8658](https://github.com/decidim/decidim/pull/8658) -- **decidim-meetings**: Don't start poll meetings component when DOM elements are not present [\#8676](https://github.com/decidim/decidim/pull/8676) -- **decidim-initiatives**, **decidim-proposals**: Fix initiative attachments [\#7452](https://github.com/decidim/decidim/pull/7452) -- **decidim-assemblies**: Fix performance issues on assemblies page when having many private users [\#8509](https://github.com/decidim/decidim/pull/8509) -- **decidim-proposals**: Add location data to proposals export and import [\#8679](https://github.com/decidim/decidim/pull/8679) -- **decidim-meetings**: Fix meetings form embed type visibility [\#8602](https://github.com/decidim/decidim/pull/8602) -- **decidim-meetings**: Do not send upcoming meeting events notification for past events [\#8665](https://github.com/decidim/decidim/pull/8665) +Also, you can no longer call jQuery or any other library in your views directly. For example the following snippet won't work: -### Removed +```javascript + +``` -- **decidim-proposals**: Remove "Allow card image" setting from Proposals [\#8281](https://github.com/decidim/decidim/pull/8281) -- **decidim-assemblies**: Remove designation_mode field from Assembly Members [\#8310](https://github.com/decidim/decidim/pull/8310) -- **decidim-participatory processes**: Remove admin show page in Participatory Process Groups [\#8313](https://github.com/decidim/decidim/pull/8313) +Instead of that, you should encapsulate it in a `content_for(:js_content)` block, that will render the snippet +right after javascript bundles have been loaded. + +```javascript +<% content_for(:js_content) do %> + +<% end %> +``` -### Developer improvements +You can read more about this change on PR [\#9156](https://github.com/decidim/decidim/pull/9156). -- Fix Luxembourgish locale [\#8270](https://github.com/decidim/decidim/pull/8270) -- Fix ARIA roles for dialogs and tooltips [\#8293](https://github.com/decidim/decidim/pull/8293) -- Add selectors on edit_form_fields [\#8353](https://github.com/decidim/decidim/pull/8353) -- Fix HTTPOnly and secure flag on the cookie acceptance cookie [\#8358](https://github.com/decidim/decidim/pull/8358) -- Add Brakeman to GitHub Actions for improving security [\#6832](https://github.com/decidim/decidim/pull/6832) -- Disallow redirection to the host when performing redirect_back [\#8296](https://github.com/decidim/decidim/pull/8296) -- Improve performance on the serializers by using includes, query counter [\#8278](https://github.com/decidim/decidim/pull/8278) -- Enforce redirects to include the organization host [\#8385](https://github.com/decidim/decidim/pull/8385) -- Fix issues with the session/environment security configs [\#8360](https://github.com/decidim/decidim/pull/8360) -- Improve extendability on some controllers [\#8398](https://github.com/decidim/decidim/pull/8398) -- Add avatar eager logging to UserEntityFinder #8416 [\#8417](https://github.com/decidim/decidim/pull/8417) -- Increase text contrast in current phase of a participatory process [\#8422](https://github.com/decidim/decidim/pull/8422) -- Fix CVE-2021-41136 (HTTP Request Smuggling in puma) [\#8431](https://github.com/decidim/decidim/pull/8431) -- Remove anchored dependency [\#8453](https://github.com/decidim/decidim/pull/8453) -- Fix pt-BR issue [\#8523](https://github.com/decidim/decidim/pull/8523) -- Add rendered view instrumentation information [\#8530](https://github.com/decidim/decidim/pull/8530) -- Optimize open data exporter for large amount of data [\#8503](https://github.com/decidim/decidim/pull/8503) -- Add cache key separator to cache_hash [\#8559](https://github.com/decidim/decidim/pull/8559) -- Improve generation of the opendata export [\#8593](https://github.com/decidim/decidim/pull/8593) -- Add several cache keys to cells [\#8566](https://github.com/decidim/decidim/pull/8566) -- Update password strength check [\#8455](https://github.com/decidim/decidim/pull/8455) -- Remove etherpad-lite dependency [\#8541](https://github.com/decidim/decidim/pull/8541) -- Fix Rack::Attack initializer custom parameter configuration [\#8643](https://github.com/decidim/decidim/pull/8643) +#### 5.2. Dynamic attachment uploads -### Internal +We've changed the way file uploads work in Decidim. Files are now dynamically uploaded inside the modal so we can give the user immediate feedback on validation. If you didn't have any customization involving file uploads you can ignore this. + +There are now two different types of file fields: titled and untitled. Titled file fields related to ```Decidim::Attachment``` internally. + +**To update your module** you probably have to update forms and commands related to upload field (also views should be updated in case of titled attachments). After successful a upload and submitting a form, request params should contain signed_id of [ActiveStorage::Blob](https://api.rubyonrails.org/classes/ActiveStorage/Blob.html) which you need to find the blob at the backend. Some examples: + +- To update view with titled file field see example: [edit_form_fields.html.erb](https://github.com/decidim/decidim/pull/8681/files#diff-17a22480fdfa3d439edcb26eb0a1a52bed5521d61ba36e0cc6ca83e838f03e9b) +- To update untitled form example: [import_form.rb](https://github.com/decidim/decidim/pull/8681/files#diff-5ce71b5873906c6f8919f4bc1f8c330bd97e8757760705a66c789f375eb743c1) +- To update untitled command example: [update_account.rb](https://github.com/decidim/decidim/pull/8681/files#diff-ed1274f76cd0ac1d5b223648dcdae670c2127c7dffa0d38540c1536a86f36abb) -- Fix dependencies locks after 0.26.0.dev bump [\#8247](https://github.com/decidim/decidim/pull/8247) -- Add modules recommendations in documentation [\#8218](https://github.com/decidim/decidim/pull/8218) -- Fix webpacker dependency lock [\#8272](https://github.com/decidim/decidim/pull/8272) -- Improve README with examples [\#8244](https://github.com/decidim/decidim/pull/8244) -- Update foundation-sites to 6.7.0 for better Dart Sass compatibility [\#8273](https://github.com/decidim/decidim/pull/8273) -- Fix NPM packages versioning during release process [\#8280](https://github.com/decidim/decidim/pull/8280) -- Add 'Lint PR title' workflow to CI [\#8285](https://github.com/decidim/decidim/pull/8285) -- Don't trigger PR linting on pushes, only on PRs [\#8304](https://github.com/decidim/decidim/pull/8304) -- Prevent root package.json to be treated as a package [\#8315](https://github.com/decidim/decidim/pull/8315) -- Fix CSS validation tests caused by a bug on the validation service [\#8322](https://github.com/decidim/decidim/pull/8322) -- **decidim-core**: Remove npm decidim packages with dependencies from other decidim packages [\#8330](https://github.com/decidim/decidim/pull/8330) -- **decidim-core**: Fix problems introduced by #8330 [\#8341](https://github.com/decidim/decidim/pull/8341) -- Update Node and NPM version [\#8343](https://github.com/decidim/decidim/pull/8343) -- Remove hack for CSS validation [\#8326](https://github.com/decidim/decidim/pull/8326) -- Update docs in migrating to webpacker [\#8349](https://github.com/decidim/decidim/pull/8349) -- **decidim-comments**: Ignore errors during comments migration task [\#8351](https://github.com/decidim/decidim/pull/8351) -- **decidim-meetings**: Fix published and title in seeded meetings [\#8359](https://github.com/decidim/decidim/pull/8359) -- **decidim-core**: Fix SQL to make version display faster [\#8393](https://github.com/decidim/decidim/pull/8393) -- Remove GraphQL deprecated API call [\#8432](https://github.com/decidim/decidim/pull/8432) -- **decidim-generators**: Fixing generator webpacker issues [\#8427](https://github.com/decidim/decidim/pull/8427) -- **decidim-generators**: Fix railties requirements on created applications [\#8415](https://github.com/decidim/decidim/pull/8415) -- **decidim-core**: Update omniauth gem and dependencies [\#8388](https://github.com/decidim/decidim/pull/8388) -- Document how to enable machine translations on organization [\#8458](https://github.com/decidim/decidim/pull/8458) -- **decidim-dev**: Improves manual installation documentation [\#8508](https://github.com/decidim/decidim/pull/8508) -- Update the i18n-tasks initialization syntax [\#8544](https://github.com/decidim/decidim/pull/8544) -- Documentation: improve develop section [\#8553](https://github.com/decidim/decidim/pull/8553) -- Change default window size in Capybara configuration [\#8576](https://github.com/decidim/decidim/pull/8576) -- Fix security instructions [\#8587](https://github.com/decidim/decidim/pull/8587) -- Temporarily ignore CSS validation issue in CI [\#8597](https://github.com/decidim/decidim/pull/8597) -- Update nokogiri to 1.12.5 [\#8609](https://github.com/decidim/decidim/pull/8609) -- Update paper_trail to 12.1 [\#8608](https://github.com/decidim/decidim/pull/8608) -- Update ruby to 2.7.5 [\#8629](https://github.com/decidim/decidim/pull/8629) -- Remove truncato dependency [\#8507](https://github.com/decidim/decidim/pull/8507) -- Change figaro to rbenv-vars in "manual installation" documentation [\#8575](https://github.com/decidim/decidim/pull/8575) -- Add instructions PostgreSQL configuration in development app [\#8618](https://github.com/decidim/decidim/pull/8618) -- Fix etherpad doc reference in initializer [\#8632](https://github.com/decidim/decidim/pull/8632) -- Clarifies git branches conventions in doc [\#8644](https://github.com/decidim/decidim/pull/8644) -- Fix changelog link [\#8671](https://github.com/decidim/decidim/pull/8671) -- Enable simplecov only for rspec step [\#8674](https://github.com/decidim/decidim/pull/8674) -- **decidim-dev**: Improve machine translation documentation and comments [\#8668](https://github.com/decidim/decidim/pull/8668) -- Split the workflows files for CI [\#8675](https://github.com/decidim/decidim/pull/8675) -- DRY GitHub workflows with composite actions [\#8677](https://github.com/decidim/decidim/pull/8677) -- Change Gitter to Matrix.org in documentation [\#8466](https://github.com/decidim/decidim/pull/8466) +Learn more about [Direct Uploads at Rails Documentation](https://edgeguides.rubyonrails.org/active_storage_overview.html#direct-uploads). You can read more about this change on PR [\#8681](https://github.com/decidim/decidim/pull/8681). + +Module developers should also notice that when using `<%= form.upload :file %>` in your views, these fields are now automatically converted to dynamic upload fields. Regarding this, you will need to do a couple of changes in your code: + +1. In your form classes, specify the attribute type as `Decidim::Attributes::Blob`, e.g. `attribute :file, Decidim::Attributes::Blob` +1. In your system tests, you might have previously used something like `attach_file(:your_form_file, file_fixture("your-test-file.xyz"))` to attach your file. Change these to `dynamically_attach_file(:your_form_file, file_fixture("your-test-file.xyz"))` in order to let the test helper handle the attachment for you as it has a few steps. +1. In other tests (such as commands, controllers, etc.), you might have previously used something like `fixture_file_upload(file_fixture("your-test-file.xyz"), "text/plain")`. This will not work anymore after you do the changes in the forms as they now expect either blobs or blob signed ID references. To fix this, replace these with `upload_test_file(Rack::Test::UploadedFile.new(file_fixture("your-test-file.xyz"), "text/plain"))`. +1. If you need to process files locally within your form classes or commands, you need to include the `Decidim::ProcessesFileLocally` concern and use the method it provides `process_file_locally(blob)` to get local access to the files that may be stored at 3rd party file storages. The method takes the ActiveStorage Blob as an argument and yields the path to the local file for the provided block argument. + +#### 5.3. `Decidim::Form`s no longer use `Rectify::Form` and `Virtus` should be no longer used + +If you don't have any customization involving Forms or `Virtus` you can ignore this. + +As per [\#8669](https://github.com/decidim/decidim/pull/8669), your `Decidim::Form`s will no longer use `Rectify::Form` or `Virtus.model` attributes because `Virtus` is discontinued and Decidim is loosening the dependency on the `virtus` gem. Instead, the attributes implementation is now based on [`ActiveModel::Attributes`](https://api.rubyonrails.org/classes/ActiveModel/Attributes/ClassMethods.html) with an integration layer within Decidim that aims to provide as much backwards compatibility as possible with the `Virtus.model` attributes that were previously used. + +For most cases, no changes in the code should be needed but there are specific differences with the implementation which may require changes in the 3rd party code as well. Both `Rectify::Form` and `Virtus` will be still available in the core (through the `rectify` gem) but you should migrate away from them as soon as possible as they may be removed in future versions of Decidim. + +There are specific things that you need to change regarding your Form or `Virtus.model` classes when migrating to `Decidim::AttributeObject`: + +- Change all instances of `YourForm < Rectify::Form` to `YourForm < Decidim::Form`. It should be very rare to find any classes in your code that inherit directly from `Rectify::Form` but in case you have used that, replace those references with `Decidim::Form`. +- Change all instances of `include Virtus.model` to `include Decidim::AttributeObject::Model`. +- For all file objects that may be of type `String` or `ActionDispatch::Http::UploadedFile`, remove the `String` type casting from these attributes as otherwise the uploaded file objects would be converted to strings. In other words, change all `attribute :uploaded_image, String` definitions within the forms to `attribute :uploaded_image` which allows them to be of any type. +- Change all `attribute :attr_name, Hash` to `attribute :attr_name, Hash[Symbol => ExpectedType]` where `ExpectedType` is the type you are expecting the hash values to be. The new layer will default the hash key types to `Symbol` and hash value types to `Object` (= any type). The Virtus Hash attribute did not force any default types for these. It should be preferred to use the actual expected type for the values instead of `Object` (= any type) to make your code more robust and less buggy. +- Change all `attribute :attr_name, Array` to `attribute :attr_name, Array[ExpectedType]` where `ExpectedType` is the type you are expecting the array values to be. It should be preferred to use the actual expected type for the values instead of `Object` (= any type) to make your code more robust and less buggy. +- The original form attribute values are no longer available through the `@attr_name` instance variables within the Form or `Virtus.model` classes. Instead, change all these references to `@attributes["attr_name"].value` in case you want to fetch the original value of the attribute without using its accessor method. Another way is to provide an alias for the original attribute method before overriding it. If you have not overridden the original attribute accessor, simply remove the `@` character in front of the attribute name to fetch the attribute value using the original accessor method. +- When calling the `attributes` method of the model/form classes, use strings to refer to the attribute names, not symbols as you might have done with `Virtus` or `Rectify::Form`. Change all `model.attributes[:attr_name]` method calls to `model.attributes["attr_name"]`. +- When calling `model.attributes.slice(...)`, you also need to use strings to refer to the attribute keys. Change all instances of `model.attributes.slice(:attr1, :attr2)` to `model.attributes.slice("attr1", "attr2")` +- If you had overridden any of the [`Rectify::Form` methods](https://github.com/andypike/rectify/blob/v0.13.0/lib/rectify/form.rb) within your form classes, remove those overrides. For example, you might have overridden the `form_attributes_valid?` method which no longer does anything. Instead, define a custom validation in order to add extra validations to your forms. +- Very rarely, when defining a an attribute of type `Rails::Engine`, you need to change `attribute :attr_name, Rails::Engine` to `attribute :attr_name, Rails::Engine, **{}`. This is because we want to preserve the method signature against `ActiveModel::Attributes` for the `attribute` class method intead of the legacy `Virtus.model`. There is a limitation in the Ruby language that if the method has default values for the previous arguments and defines keyword arguments, the last argument will always receive a `respond_to?(:to_hash)` call to it which doesn't work for `Rails::Engine` (you can try it out in the Rails console by calling `Rails::Engine.respond_to?(:to_hash)`). +- Test all your form and command classes thoroughly to notice any differences between the two implementations. The new layer is a bit more "robust" with some of the type castings, so some things may break during the migration in case you have relied on some of the oversights within `Virtus`. + +#### 5.4. `Rectify::Presenter` deprecated + +PR [\#8758](https://github.com/decidim/decidim/pull/8758) is deprecating the implementation of `Rectify::Presenter` in favour of `SimpleDelegator` + +#### 5.5. Searchlight removal + +The `searchlight` gem has been removed in favor of Ransack as of [\#8748](https://github.com/decidim/decidim/pull/8748) in order to standardize all searches within Decidim around a single way of performing searches. Ransack was selected as the preferred search backend because it is better maintained and has a larger community of developers around it compared to Searchlight. + +Ransack provides a search API that produces the search queries semi-automatically against the available database columns and ActiveRecord scopes made available for the Ransack searches while Searchlight used to require to write all the search logic manually in the search classes. Due to the inner workings of the Ransack gem and for consistency reasons, the following changes have been made for the search filtering: + +- For search scopes that are doing more than matching against a specific column in the database or require special programming logic during the searches, there is a new scope convention introduced with the `with_*` and `with_any_*` scope names. The `with_*` convention should be used when providing a search scope that searches against one key, such as `with_category(1)` and the `with_any_*` convention should be used when providing a search scope that searches against one or multiple keys, such as `with_any_category(1, 2, 3)`. + - An example of such scope is `with_any_category` provided by the `HasCategory` concern which searches against the provided category IDs or any sub-category of those category IDs. You can find all the introduced (or changed) scopes by searching for `scope :with_` within the Decidim codebase. + - With Searchlight, these search parameters were provided e.g. as `category_id` which was then used to perform the explained search query manually in the ResourceSearch class which is now used for a different purpose. As the search now happens through Ransack and the ActiveRecord scopes, these parameters have been renamed to better explain what they do. With Ransack, matching e.g. against the `category_id_eq` key would mean that the search is done against this specific column in the record's database table and only searching for the provided search input (and not e.g. the parent categories in the category case). +- The origin scopes provided by `Decidim::Authorable` and `Decidim::Coauthorable` have been renamed with the `with_` prefix as explained above. +- All the filtering key changes have been reflected to the participant filtering views (`_filters.html.erb` in most modules) as well as the controller methods `default_filter_params` where applicable. +- The `default_filter_params` method within the participant-facing controllers now defines all the parameters that are allowed in the search queries and only these parameters are passed to the Ransack search. This limitation is made in order to protect the participant views from providing more searching options through the URL parameters than they are supposed to provide. In the past, the `Searchlight::Search` classes took care of utilizing only the allowed parameters but Ransacker does not have any middle-layer that would do the same, which is why the limitation is done at the controller side. +- The `search_collection` method now defines the base collection used for the searches within the filtering controllers. In previous versions, there used to be a method that defined a `search_klass` method that defined the `Searchlight::Search` class to be used as the basis for the search. Now, the `search_collection` defines the base collection instead against which the Ransack search is run. + +3rd party developers that have developed their own modules or customizations for the core controllers or filtering views, should revisit their customizations and make sure they reflect these changes made for the controllers or filtering views. It is suggested to remove the customizations related to the filtering views/controllers and re-do from scratch what needs to be customized in order to ensure full compatibility with the changed filtering APIs. In case you had created your own `Searchlight::Search` (or `ResourceSearch`) classes, you should scrap those and start over using Ransack. + +More information on using Ransack can be found from the [Ransack documentation](https://github.com/activerecord-hackery/ransack). You can find examples for filtering in the core filtering views and controllers. + +Related changes include: + +- **decidim-core**: The `Decidim::ActivitySearch` class has been rewritten as `Decidim::PublicActivities` which is now a `Rectify::Query` class instead of `Searchlight::Search` class due to the removal of Searchlight at [\#8748](https://github.com/decidim/decidim/pull/8748). +- **decidim-core**: The `Decidim::ResourceSearch` class now inherits from `Ransack::Search` instead of `Searchlight::Search` as of [\#8748](https://github.com/decidim/decidim/pull/8748). The new `ResourceSearch` class provides extra search functionality for contextual searches that require context information in addition to the search parameters, such as current user or current component. It has barely anything to do with the `ResourceSearch` class in the previous versions which contained much more logic. Please review all your search classes that were inheriting from this class. You should migrate your search filtering to Ransack. +- **decidim-debates**, **decidim-initiatives**, **decidim-meetings**: The resource search classes `Decidim::Debates::DebateSearch`, `Decidim::Intitatives::InitiativeSearch` and `Decidim::Meetings::MeetingSearch` are rewritten for the Ransack searches due to Searchlight removal at [\#8748](https://github.com/decidim/decidim/pull/8748). The role of these classes is now to pass contextual information to the searches, such as the current user. All other search filtering should happen directly through Ransack. +- **decidim-meetings**: The `visible_meetings_for` scope for the `Meeting` model has been renamed to `visible_for` in [\#8748](https://github.com/decidim/decidim/pull/8748) for consistency. +- **decidim-core**: The `official_origin`, `participants_origin`, `user_group_origin` and `meeting_origin` scopes for the `Decidim::Authorable` and `Decidim::Coauthorable` concerns have been changed to `with_official_origin`, `with_participants_origin`, `with_user_group_origin` and `with_meeting_origin` respectively in [\#8748](https://github.com/decidim/decidim/pull/8748) for consistency. See the Searchlight removal change notes for reasoning. +- **decidim-core**: Nicknames are now differents case insensitively, a rake task has been created to check every nickname and modify them if some are similar (Launch it with "bundle exec rake decidim:upgrade:fix_nickname_uniqueness"). Routing and mentions has been made case insensitive for every tab in profiles. + +### Detailed changes + +#### Added + +- **decidim-core**: Implement service workers and custom offline fallback page [\#8594](https://github.com/decidim/decidim/pull/8594) +- **decidim-core**: Add emojis to Conversations [\#8735](https://github.com/decidim/decidim/pull/8735) +- **decidim-budgets**, **decidim-core**: Add reminders for pending orders in budgets [\#8621](https://github.com/decidim/decidim/pull/8621) +- **decidim-core**: Add favicon pwa uploader and icons in manifest [\#8645](https://github.com/decidim/decidim/pull/8645) +- **decidim-core**: Allow users to be searched by nickname [\#8663](https://github.com/decidim/decidim/pull/8663) +- **decidim-core**: Add items to set a splash screen [\#8649](https://github.com/decidim/decidim/pull/8649) +- **decidim-core**: Add VAPID keys' generator for webpush notifications [\#8738](https://github.com/decidim/decidim/pull/8738) +- **decidim-core**: Add anchors on the homepage [\#8756](https://github.com/decidim/decidim/pull/8756) +- **decidim-admin**, **decidim-assemblies**, **decidim-participatory processes**: Add a privacy warning on non-transparent private spaces [\#8753](https://github.com/decidim/decidim/pull/8753) +- **decidim-core**: Show the Add2HomeScreen option in compatible browsers [\#8736](https://github.com/decidim/decidim/pull/8736) +- **decidim-assemblies**: Allow assembly admins administer children assemblies [\#8773](https://github.com/decidim/decidim/pull/8773) +- **decidim-core**: Dynamic attachment uploads [\#8681](https://github.com/decidim/decidim/pull/8681) +- **decidim-participatory processes**: Create process types to allow filtering Processes by them [\#8583](https://github.com/decidim/decidim/pull/8583) +- **decidim-core**: Accessible character counter for screen readers [\#9009](https://github.com/decidim/decidim/pull/9009) +- **decidim-budgets**, **decidim-core**: Show users own voting activity [\#8914](https://github.com/decidim/decidim/pull/8914) +- **decidim-core**: Add autocomplete attribute to Devise fields [\#9038](https://github.com/decidim/decidim/pull/9038) +- **decidim-core**: Allow admins to disable email notifications for reported users [\#9072](https://github.com/decidim/decidim/pull/9072) +- **decidim-meetings**: Add reminders for publishing reports to meeting authors [\#8757](https://github.com/decidim/decidim/pull/8757) +- **decidim-meetings**: Export calendar improvements [\#9035](https://github.com/decidim/decidim/pull/9035) +- **decidim-core**: Remove all the private participants from a participatory space [\#8866](https://github.com/decidim/decidim/pull/8866) +- **decidim-core**: Performance: replace moment by dayjs [\#9161](https://github.com/decidim/decidim/pull/9161) +- **decidim-assemblies**, **decidim-conferences**, **decidim-core**, **decidim-meetings**, **decidim-participatory processes**: Homepage optimization: tune images' caches and query includes [\#9145](https://github.com/decidim/decidim/pull/9145) +- **decidim-accountability**, **decidim-assemblies**, **decidim-conferences**, **decidim-core**, **decidim-elections**, **decidim-meetings**, **decidim-proposals**: Cache highlighted resources for components cells [\#9143](https://github.com/decidim/decidim/pull/9143) +- **decidim-core**: Can resend and cancel email confirmation [\#8996](https://github.com/decidim/decidim/pull/8996) +- **decidim-core**: Performance optimization: load JavaScript at page's bottom [\#9156](https://github.com/decidim/decidim/pull/9156) +- **decidim-meetings**: Configure online meetings embedded services with ENV vars [\#9219](https://github.com/decidim/decidim/pull/9219) +- **decidim-elections**: Add an option to hide the "Can I vote?" page [\#9191](https://github.com/decidim/decidim/pull/9191) +- **decidim-core**: Add autocomplete in user account [\#9217](https://github.com/decidim/decidim/pull/9217) +- **decidim-budgets**: Bulk actions for budgeting projects in admin panel [\#8986](https://github.com/decidim/decidim/pull/8986) +- **decidim-comments**: Load comments with ajax [\#9144](https://github.com/decidim/decidim/pull/9144) +- **decidim-admin**, **decidim-participatory processes**: Add admin log when importing, exporting and duplicating a process [\#9244](https://github.com/decidim/decidim/pull/9244) +- **decidim-core**: Mail notifications digest [\#8833](https://github.com/decidim/decidim/pull/8833) +- **decidim-core**: Send push notifications to client [\#8774](https://github.com/decidim/decidim/pull/8774) +- **decidim-admin**, **decidim-core**: Add admin log when updating component or its permissions [\#9270](https://github.com/decidim/decidim/pull/9270) +- **decidim-admin**, **decidim-core**: Add admin log when creating, updating or deleting attachment collections [\#9276](https://github.com/decidim/decidim/pull/9276) +- **decidim-initiatives**: Add admin log when creating, updating or deleting initiative types [\#9310](https://github.com/decidim/decidim/pull/9310) +- **decidim-admin**: Add admin log when creating, updating or deleting scope types [\#9312](https://github.com/decidim/decidim/pull/9312) +- **decidim-accountability**: Add admin log when creating, updating or deleting accountability's status [\#9320](https://github.com/decidim/decidim/pull/9320) +- **decidim-admin**, **decidim-assemblies**: Add admin log when duplicating, exporting or importing assemblies [\#9338](https://github.com/decidim/decidim/pull/9338) +- **decidim-admin**: Add admin log when creating, updating or deleting area types [\#9316](https://github.com/decidim/decidim/pull/9316) +- **decidim-accountability**, **decidim-admin**: Add admin log when creating, updating or deleting accountability's timeline entries [\#9321](https://github.com/decidim/decidim/pull/9321) +- **decidim-admin**, **decidim-core**: Add admin log when creating, updating or deleting attachments [\#9282](https://github.com/decidim/decidim/pull/9282) +- **decidim-core**: Group creator can leave group [\#9315](https://github.com/decidim/decidim/pull/9315) +- **decidim-meetings**: Short URLs to fix long export calendar URLs [\#9383](https://github.com/decidim/decidim/pull/9383) +- **decidim-core**: Accept and reject cookies [\#9271](https://github.com/decidim/decidim/pull/9271) +- **decidim-admin**: Add admin log when creating, updating or deleting categories [\#9317](https://github.com/decidim/decidim/pull/9317) +- **decidim-admin**: Add admin log when updating external domains or help sections [\#9339](https://github.com/decidim/decidim/pull/9339) +- **decidim-templates**: Add admin log when creating, deleting, duplicating and updating templates [\#9363](https://github.com/decidim/decidim/pull/9363) +- **decidim-forms**: Add admin log when updating survey questionnaire [\#9385](https://github.com/decidim/decidim/pull/9385) +- **decidim-meetings**: Add admin log when updating the meeting questionnaire [\#9273](https://github.com/decidim/decidim/pull/9273) +- **decidim-admin**, **decidim-core**: Add admin log when exporting a component [\#9390](https://github.com/decidim/decidim/pull/9390) +- **decidim-blogs**: Add admin log when creating, updating and deleting blog posts [\#9386](https://github.com/decidim/decidim/pull/9386) +- **decidim-comments**, **decidim-initiatives**: Add configuration option for initiative type to deactivate comments [\#9318](https://github.com/decidim/decidim/pull/9318) +- **decidim-initiatives**: Add order setting to initiatives [\#9377](https://github.com/decidim/decidim/pull/9377) +- **decidim-api**, **decidim-blogs**: Add official blog posts [\#9429](https://github.com/decidim/decidim/pull/9429) +- **decidim-core**: External link improvements [\#9402](https://github.com/decidim/decidim/pull/9402) +- **decidim-admin**, **decidim-core**: Strong passwords for admins [\#9347](https://github.com/decidim/decidim/pull/9347) +- **decidim-budgets**: Add geocoding to budgets projects [\#9280](https://github.com/decidim/decidim/pull/9280) + +#### Changed + +- **decidim-admin**: Change default sort order on admin moderations [\#8667](https://github.com/decidim/decidim/pull/8667) +- **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Replace 'citizens' terminology with 'participants' [\#8697](https://github.com/decidim/decidim/pull/8697) +- **decidim-core**, **decidim-elections**, **decidim-initiatives**, **decidim-proposals**, **decidim-system**, **decidim-verifications**: Change to a inclusive language: replace he/she/his/her with they/their [\#8684](https://github.com/decidim/decidim/pull/8684) +- **decidim-generators**: Make Decidim fully configurable via ENV vars [\#8725](https://github.com/decidim/decidim/pull/8725) +- **decidim-core**: Replace Decidim mentions in UI with 'the platform' [\#8827](https://github.com/decidim/decidim/pull/8827) +- **decidim-admin**: Clarify the locales on the list of admins [\#8838](https://github.com/decidim/decidim/pull/8838) +- **decidim-core**: Display friendly report reason and details in moderation emails [\#8840](https://github.com/decidim/decidim/pull/8840) +- **decidim-comments**: Show hidden comments replies [\#8828](https://github.com/decidim/decidim/pull/8828) +- **decidim-generators**: Make Decidim fully configurable via ENV vars part II [\#8990](https://github.com/decidim/decidim/pull/8990) +- Reduce d3 bundle size [\#9034](https://github.com/decidim/decidim/pull/9034) +- **decidim-elections**: Add help text when verifying your vote [\#9190](https://github.com/decidim/decidim/pull/9190) +- **decidim-accountability**: Add timeline entry title in Accountability projects [\#9127](https://github.com/decidim/decidim/pull/9127) +- **decidim-core**: Rename data portability to download your data [\#9196](https://github.com/decidim/decidim/pull/9196) +- **decidim-elections**: Better wording when verifying an offline voter [\#9357](https://github.com/decidim/decidim/pull/9357) +- **decidim-initiatives**: Add signature collection period title in header [\#9314](https://github.com/decidim/decidim/pull/9314) + +#### Fixed + +- **decidim-admin**, **decidim-assemblies**, **decidim-budgets**, **decidim-conferences**, **decidim-consultations**, **decidim-core**, **decidim-elections**, **decidim-forms**, **decidim-initiatives**, **decidim-meetings**, **decidim-participatory processes**, **decidim-proposals**: Fix deprecation warnings from rails 6.1 update (#8610) [\#8610](https://github.com/decidim/decidim/pull/8610) +- **decidim-core**: Remove 'required field' explanation from conversation textearea [\#8701](https://github.com/decidim/decidim/pull/8701) +- **decidim-core**: Fix some non-localized user emails [\#8719](https://github.com/decidim/decidim/pull/8719) +- **decidim-meetings**: Fix for preview unpublished meetings by admin user [\#8713](https://github.com/decidim/decidim/pull/8713) +- **decidim-participatory processes**: Fix order by weight in processes groups' processes content block [\#8734](https://github.com/decidim/decidim/pull/8734) +- **decidim-admin**, **decidim-core**: Change scope picker button to disabled when necessary [\#8733](https://github.com/decidim/decidim/pull/8733) +- **decidim-comments**: Add emojis when user edits a comment [\#8731](https://github.com/decidim/decidim/pull/8731) +- **decidim-admin**, **decidim-meetings**, **decidim-proposals**: Fix reporting a proposal when author is a meeting [\#8737](https://github.com/decidim/decidim/pull/8737) +- **decidim-core**: Don't display blocked users in mentions [\#8687](https://github.com/decidim/decidim/pull/8687) +- **decidim-core**: Properly mark sender and recipient in Conversation [\#8742](https://github.com/decidim/decidim/pull/8742) +- **decidim-proposals**: Fix geocoding NaN values [\#8762](https://github.com/decidim/decidim/pull/8762) +- **decidim-core**: Add "nofollow noopener" rel to the profile personal URL [\#8779](https://github.com/decidim/decidim/pull/8779) +- **decidim-generators**: Add .keep file to empty directory to include on git committing [\#8786](https://github.com/decidim/decidim/pull/8786) +- **decidim-core**: Fix reminder manifest, replace virtus with attribute object [\#8785](https://github.com/decidim/decidim/pull/8785) +- **decidim-core**: Fix avatar upload validation errors are displayed twice [\#8794](https://github.com/decidim/decidim/pull/8794) +- **decidim-meetings**: Fix displaying hidden meetings in homepage's "upcoming meetings" content block [\#8809](https://github.com/decidim/decidim/pull/8809) +- **decidim-meetings**, **decidim-participatory processes**: Fix displaying hidden meetings in processes group's "upcoming meetings" content block [\#8818](https://github.com/decidim/decidim/pull/8818) +- **decidim-participatory processes**: Fix characters not encoded in highlighted participatory process group title [\#8820](https://github.com/decidim/decidim/pull/8820) +- **decidim-initiatives**: Fix scope validation on initiative's creation [\#8755](https://github.com/decidim/decidim/pull/8755) +- **decidim-generators**: Add natively a .keep file to empty directory to include on git committing [\#8830](https://github.com/decidim/decidim/pull/8830) +- **decidim-core**, **decidim-meetings**, **decidim-proposals**: Fix displaying hidden related resources [\#8812](https://github.com/decidim/decidim/pull/8812) +- **decidim-consultations**, **decidim-core**, **decidim-elections**: Fix report moderation for all the spaces [\#8813](https://github.com/decidim/decidim/pull/8813) +- **decidim-meetings**, **decidim-participatory processes**: Fix displaying hidden meetings in show process page [\#8823](https://github.com/decidim/decidim/pull/8823) +- **decidim-accountability**: Fix accountability text search [\#8831](https://github.com/decidim/decidim/pull/8831) +- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-proposals**: Fix notifications when there is a note proposal in other spaces than processes [\#8822](https://github.com/decidim/decidim/pull/8822) +- **decidim-core**: Fix activity cell disappearing author images [\#8826](https://github.com/decidim/decidim/pull/8826) +- **decidim-accountability**: Fix accountability categories' colors [\#8844](https://github.com/decidim/decidim/pull/8844) +- **decidim-meetings**: Fix displaying hidden resources in global search [\#8811](https://github.com/decidim/decidim/pull/8811) +- **decidim-assemblies**: Fix assemblies title when there are unpublished children [\#8855](https://github.com/decidim/decidim/pull/8855) +- **decidim-debates**: Remove actions from debates' cards [\#8854](https://github.com/decidim/decidim/pull/8854) +- **decidim-core**: Fix cache_hash generation in AuthorCell [\#8852](https://github.com/decidim/decidim/pull/8852) +- **decidim-proposals**: Fix answered proposals display [\#8851](https://github.com/decidim/decidim/pull/8851) +- **decidim-comments**: Show hidden comments replies [\#8828](https://github.com/decidim/decidim/pull/8828) +- **decidim-meetings**: Fix meetings iframe embed code [\#8875](https://github.com/decidim/decidim/pull/8875) +- **decidim-core**: Fix the way the results are displayed in search page [\#8873](https://github.com/decidim/decidim/pull/8873) +- **decidim-meetings**: Fix display warning message in meetings [\#8872](https://github.com/decidim/decidim/pull/8872) +- **decidim-core**: Translate the remove recipient button correctly for new conversation [\#8894](https://github.com/decidim/decidim/pull/8894) +- **decidim-core**: Fix diff mode selector accessibility [\#8879](https://github.com/decidim/decidim/pull/8879) +- **decidim-core**: Add a unique title to the new group page [\#8882](https://github.com/decidim/decidim/pull/8882) +- **decidim-core**: Fix illogical heading order for the versions list [\#8880](https://github.com/decidim/decidim/pull/8880) +- **decidim-core**: Improve logo link aria label [\#8878](https://github.com/decidim/decidim/pull/8878) +- **decidim-core**: Add the "choose language" string in all locales to the language chooser [\#8883](https://github.com/decidim/decidim/pull/8883) +- **decidim-core**: Change the correct element type for the change password button [\#8890](https://github.com/decidim/decidim/pull/8890) +- **decidim-budgets**: Fix duplicate ID on the budgets index page [\#8908](https://github.com/decidim/decidim/pull/8908) +- **decidim-core**: Fix accessibility issue related to the documents collection toggle [\#8907](https://github.com/decidim/decidim/pull/8907) +- **decidim-participatory processes**: Fix heading order in the process steps page [\#8906](https://github.com/decidim/decidim/pull/8906) +- **decidim-elections**: Fix illogical heading orders in the elections component [\#8905](https://github.com/decidim/decidim/pull/8905) +- **decidim-forms**: Fix the form questionnaires heading orders [\#8903](https://github.com/decidim/decidim/pull/8903) +- **decidim-budgets**: Fix the illogical heading orders with the budget component views [\#8904](https://github.com/decidim/decidim/pull/8904) +- **decidim-core**: Fix the component index views heading order for the subtitle change [\#8902](https://github.com/decidim/decidim/pull/8902) +- **decidim-comments**: Fix comments heading order [\#8876](https://github.com/decidim/decidim/pull/8876) +- **decidim-proposals**: Fix display withdraw warning message in proposals [\#8870](https://github.com/decidim/decidim/pull/8870) +- **decidim-core**: Make the button link font weight consistent with normal links [\#8891](https://github.com/decidim/decidim/pull/8891) +- **decidim-proposals**: Fix illogical heading order for a single proposal [\#8877](https://github.com/decidim/decidim/pull/8877) +- **decidim-core**: Fix the HTML diff mode accessibility [\#8915](https://github.com/decidim/decidim/pull/8915) +- **decidim-assemblies**, **decidim-core**, **decidim-initiatives**, **decidim-participatory processes**: Change the participatory space header's subtitle element to a `
` to fix heading order issues [\#8901](https://github.com/decidim/decidim/pull/8901)
+- **decidim-comments**: Fix Foundation Abide errors for Rails remote (AJAX) forms [\#8889](https://github.com/decidim/decidim/pull/8889)
+- **decidim-core**: Fix logical heading order for the endorsers list [\#8892](https://github.com/decidim/decidim/pull/8892)
+- **decidim-comments**, **decidim-core**: Fix emoji picker hiding Foundation Abide form errors [\#8886](https://github.com/decidim/decidim/pull/8886)
+- **decidim-comments**: Fix budget hard dependency and caching flag issues in comments [\#8899](https://github.com/decidim/decidim/pull/8899)
+- **decidim-core**: Fix diff mode selector roles and tabindexes [\#8912](https://github.com/decidim/decidim/pull/8912)
+- **decidim-consultations**: Fix heading order in the consultation question page [\#8920](https://github.com/decidim/decidim/pull/8920)
+- **decidim-meetings**: Fix the meetings export to also include unpublished meetings [\#8874](https://github.com/decidim/decidim/pull/8874)
+- **decidim-initiatives**: Fix initiatives signatures issues [\#8448](https://github.com/decidim/decidim/pull/8448)
+- **decidim-initiatives**: Fix link to docs in initiatives admin [\#8921](https://github.com/decidim/decidim/pull/8921)
+- **decidim-core**: Fix translatable presence validator for hyphenated locales [\#8795](https://github.com/decidim/decidim/pull/8795)
+- **decidim-participatory processes**: Fix processes creation form with stats, metrics and announcements [\#8925](https://github.com/decidim/decidim/pull/8925)
+- **decidim-system**, **decidim-verifications**: Fix verification report with multitenants: notify it only to admins of that organization [\#8929](https://github.com/decidim/decidim/pull/8929)
+- **decidim-core**: Fix officialized user event missing translations [\#8927](https://github.com/decidim/decidim/pull/8927)
+- **decidim-verifications**: Fix email for verification conflict with managed users [\#8926](https://github.com/decidim/decidim/pull/8926)
+- **decidim-core**: Fix profile notifications [\#8943](https://github.com/decidim/decidim/pull/8943)
+- **decidim-elections**: Add a subtitle to votings page [\#8919](https://github.com/decidim/decidim/pull/8919)
+- **decidim-assemblies**, **decidim-participatory processes**: Add a subtitle to assemblies and processes pages [\#8918](https://github.com/decidim/decidim/pull/8918)
+- **decidim-meetings**: Truncate the meetings card description [\#8954](https://github.com/decidim/decidim/pull/8954)
+- **decidim-proposals**: Fix proposals' cards with big images [\#8952](https://github.com/decidim/decidim/pull/8952)
+- **decidim-core**: Add missing reveal__title classes [\#8958](https://github.com/decidim/decidim/pull/8958)
+- **decidim-core**: Fix multiple mentions correct focus on element (recipient) removal [\#8959](https://github.com/decidim/decidim/pull/8959)
+- **decidim-core**: Add missing 'Locale' string in i18n in account page [\#8969](https://github.com/decidim/decidim/pull/8969)
+- **decidim-core**: Fix main navigation aria-current attribute [\#8968](https://github.com/decidim/decidim/pull/8968)
+- **decidim-core**: Fix mobile nav keyboard focus [\#8962](https://github.com/decidim/decidim/pull/8962)
+- **decidim-core**: Remove the label from the dropdown menu opener [\#8972](https://github.com/decidim/decidim/pull/8972)
+- **decidim-blogs**, **decidim-core**, **decidim-debates**, **decidim-proposals**: Fix for endorsed_by with other user group's member [\#8967](https://github.com/decidim/decidim/pull/8967)
+- **decidim-proposals**: Fix footer actions caching on proposals' card [\#8987](https://github.com/decidim/decidim/pull/8987)
+- **decidim-initiatives**: Show signatures in answered initiatives [\#8747](https://github.com/decidim/decidim/pull/8747)
+- **decidim-api**, **decidim-meetings**, **decidim-proposals**: Fix API when meetings have proposal linking disabled [\#8971](https://github.com/decidim/decidim/pull/8971)
+- **decidim-meetings**, **decidim-proposals**: Fix proposals seeds after reordering of modules loading [\#8993](https://github.com/decidim/decidim/pull/8993)
+- **decidim-core**: Show character counter when replying to message [\#8922](https://github.com/decidim/decidim/pull/8922)
+- **decidim-core**: Fix character counter with emoji picker close to maximum characters [\#8916](https://github.com/decidim/decidim/pull/8916)
+- **decidim-budgets**, **decidim-core**, **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Fix cache URLs on cards [\#8988](https://github.com/decidim/decidim/pull/8988)
+- **decidim-core**: Fix submit form with enter when there are attachments [\#9019](https://github.com/decidim/decidim/pull/9019)
+- **decidim-core**: Fix Devise flash messages translation [\#9025](https://github.com/decidim/decidim/pull/9025)
+- **decidim-admin**: Add missing 'Locale' string in i18n in selective newsletter [\#9037](https://github.com/decidim/decidim/pull/9037)
+- **decidim-core**: Disable new conversation next button when no users selected [\#9024](https://github.com/decidim/decidim/pull/9024)
+- **decidim-core**: Fix social share button sharing (`Can't find variable: SocialShareButton` console error) [\#9041](https://github.com/decidim/decidim/pull/9041)
+- **decidim-meetings**: Use published meetings scope on processes landing and proposal's form [\#9023](https://github.com/decidim/decidim/pull/9023)
+- **decidim-core**: Require omniauth/rails_csrf_protection explicitly [\#9053](https://github.com/decidim/decidim/pull/9053)
+- **decidim-core**: Fix session cookie SameSite policy [\#9051](https://github.com/decidim/decidim/pull/9051)
+- **decidim-conferences**: Fix conference partner logo is not optional on create [\#9045](https://github.com/decidim/decidim/pull/9045)
+- **decidim-comments**, **decidim-core**, **decidim-proposals**: Add noreferrer and ugc to links [\#9047](https://github.com/decidim/decidim/pull/9047)
+- **decidim-proposals**: Create admin log records when proposals are imported from a file [\#9006](https://github.com/decidim/decidim/pull/9006)
+- **decidim-meetings**: Remove presenters in the meetings admin backoffice [\#9052](https://github.com/decidim/decidim/pull/9052)
+- **decidim-meetings**: Fix submit in meetings admin form [\#9061](https://github.com/decidim/decidim/pull/9061)
+- **decidim-core**, **decidim-proposals**: Fix amendable events title [\#9050](https://github.com/decidim/decidim/pull/9050)
+- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-core**, **decidim-initiatives**, **decidim-participatory processes**: Fix Twitter hashtag search when it starts with a number [\#9039](https://github.com/decidim/decidim/pull/9039)
+- **decidim-initiatives**: Remove 'edit link' in topbar for initiative's authors [\#8997](https://github.com/decidim/decidim/pull/8997)
+- **decidim-comments**, **decidim-core**, **decidim-meetings**: Fix timeout in comment view and during meetings [\#9070](https://github.com/decidim/decidim/pull/9070)
+- **decidim-core**: Dont add external link container inside editor [\#9095](https://github.com/decidim/decidim/pull/9095)
+- **decidim-core**, **decidim-dev**: VAPID key generator availabe in core [\#9107](https://github.com/decidim/decidim/pull/9107)
+- **decidim-assemblies**: Allow assembly admins to manage components in child assemblies [\#8955](https://github.com/decidim/decidim/pull/8955)
+- **decidim-core**: Add base URI to meta image URLs [\#9125](https://github.com/decidim/decidim/pull/9125)
+- **decidim-elections**: Clarify message to user when checking census [\#9112](https://github.com/decidim/decidim/pull/9112)
+- **decidim-elections**: Fix attachments when called from Cells [\#9136](https://github.com/decidim/decidim/pull/9136)
+- **decidim-participatory processes**: Fix processes count in processes group title cell [\#9087](https://github.com/decidim/decidim/pull/9087)
+- **decidim-meetings**: Do not send upcoming meeting notification for hidden or withdrawn meetings [\#9134](https://github.com/decidim/decidim/pull/9134)
+- **decidim-elections**: Improve wording when casting your vote [\#9098](https://github.com/decidim/decidim/pull/9098)
+- **decidim-core**: Prevent race condition between prevenTimeout and show modal [\#9092](https://github.com/decidim/decidim/pull/9092)
+- **decidim-generators**: Fix app generator when creating a development_app [\#9142](https://github.com/decidim/decidim/pull/9142)
+- **decidim-meetings**: Fix meetings minutes migration [\#9148](https://github.com/decidim/decidim/pull/9148)
+- **decidim-core**: Enforce password validation rules on 'Forgot your password?' form [\#9090](https://github.com/decidim/decidim/pull/9090)
+- **decidim-proposals**: Add 'not answered' as a possible answer in proposals [\#9021](https://github.com/decidim/decidim/pull/9021)
+- **decidim-budgets**: Fix vote reminder email urls [\#9152](https://github.com/decidim/decidim/pull/9152)
+- **decidim-meetings**: Move modal to body and fix condition [\#9158](https://github.com/decidim/decidim/pull/9158)
+- **decidim-assemblies**, **decidim-proposals**: Fix absolute urls on 'create assembly member' and proposals' 'collaborative drafts' events [\#9146](https://github.com/decidim/decidim/pull/9146)
+- **decidim-accountability**, **decidim-consultations**: Fix components navbar in consultations mobile [\#9155](https://github.com/decidim/decidim/pull/9155)
+- **decidim-core**: Show only current organization in verification conflicts with multitenants [\#9033](https://github.com/decidim/decidim/pull/9033)
+- **decidim-elections**: Send email to newly added trustees [\#9100](https://github.com/decidim/decidim/pull/9100)
+- **decidim-meetings**: Fix registration type field highlighted in admin meeting creation form [\#9160](https://github.com/decidim/decidim/pull/9160)
+- **decidim-core**: Fix displaying blocked users in account follow pages [\#9164](https://github.com/decidim/decidim/pull/9164)
+- **decidim-core**: Separate validation messages for image dimensions and size [\#9165](https://github.com/decidim/decidim/pull/9165)
+- **decidim-core**: Fix notifications where resources are missing [\#9183](https://github.com/decidim/decidim/pull/9183)
+- **decidim-core**: Fix encoding organization name in A2HS [\#9184](https://github.com/decidim/decidim/pull/9184)
+- **decidim-surveys**: Fix contradictory form errors on survey form [\#9186](https://github.com/decidim/decidim/pull/9186)
+- **decidim-admin**, **decidim-elections**: Fix newsletters and Decidim Votings [\#9188](https://github.com/decidim/decidim/pull/9188)
+- **decidim-meetings**: Fix typo in meeting's copy calendar string [\#9193](https://github.com/decidim/decidim/pull/9193)
+- **decidim-initiatives**: Fix typo and improves copy in initiatives admin [\#9194](https://github.com/decidim/decidim/pull/9194)
+- **decidim-system**: Enforce password validation rules on system admins [\#9207](https://github.com/decidim/decidim/pull/9207)
+- **decidim-initiatives**: Add edit and delete actions in InitiativeType admin table [\#9151](https://github.com/decidim/decidim/pull/9151)
+- **decidim-surveys**: Clarify unregistered answers on surveys behavior [\#9205](https://github.com/decidim/decidim/pull/9205)
+- **decidim-elections**: Fix voting with single election [\#9097](https://github.com/decidim/decidim/pull/9097)
+- **decidim-admin**: Fix invalid translation call [\#9218](https://github.com/decidim/decidim/pull/9218)
+- **decidim-initiatives**: Fix initiative print link, margin, and organization logo [\#9162](https://github.com/decidim/decidim/pull/9162)
+- **decidim-elections**: Fix election label translations [\#9102](https://github.com/decidim/decidim/pull/9102)
+- **decidim-elections**: Remove show more button on elections [\#9103](https://github.com/decidim/decidim/pull/9103)
+- **decidim-surveys**: Fix survey activity log entries [\#9173](https://github.com/decidim/decidim/pull/9173)
+- **decidim-core**: Fix dynamic validation and title change for titled attachments [\#9175](https://github.com/decidim/decidim/pull/9175)
+- **decidim-budgets**: Remove beforeunload confirmation panel from the budgets voting [\#9224](https://github.com/decidim/decidim/pull/9224)
+- **decidim-core**: Fix nicknames uniqueness with different cases [\#8792](https://github.com/decidim/decidim/pull/8792)
+- **decidim-core**: Fix Leaflet trying to load "infinite amount of tiles" [\#9233](https://github.com/decidim/decidim/pull/9233)
+- **decidim-verifications**: Allow to renew expired verifications (if renewable) [\#8192](https://github.com/decidim/decidim/pull/8192)
+- **decidim-elections**: Correctly show trustees and votings menu [\#9192](https://github.com/decidim/decidim/pull/9192)
+- **decidim-core**: Fix hashtag parsing on URLs with fragments [\#9221](https://github.com/decidim/decidim/pull/9221)
+- **decidim-comments**, **decidim-core**: Add missing events locales [\#9199](https://github.com/decidim/decidim/pull/9199)
+- **decidim-conferences**: Make conference's partners logos always mandatory [\#9214](https://github.com/decidim/decidim/pull/9214)
+- **decidim-admin**: Fix margin around warning message in colour settings [\#9278](https://github.com/decidim/decidim/pull/9278)
+- **decidim-comments**, **decidim-core**: Don't show deleted resources in last activities [\#9293](https://github.com/decidim/decidim/pull/9293)
+- **decidim-elections**: Hide more information link when there's no description on an election [\#9099](https://github.com/decidim/decidim/pull/9099)
+- **decidim-admin**: Fix local storage protocol options for uploaders [\#9285](https://github.com/decidim/decidim/pull/9285)
+- **decidim-admin**, **decidim-assemblies**, **decidim-budgets**, **decidim-core**, **decidim-elections**, **decidim-meetings**, **decidim-pages**, **decidim-proposals**: Apply crowdin feedback [\#9301](https://github.com/decidim/decidim/pull/9301)
+- **decidim-participatory processes**: Update file validation for process import [\#9236](https://github.com/decidim/decidim/pull/9236)
+- **decidim-core**: Fix user interests [\#9225](https://github.com/decidim/decidim/pull/9225)
+- **decidim-elections**: Add error message when adding question and election has started [\#9189](https://github.com/decidim/decidim/pull/9189)
+- **decidim-elections**: Fix HTML safe content in election voting [\#9210](https://github.com/decidim/decidim/pull/9210)
+- **decidim-elections**: Fix ActionLog when a ballot style is deleted [\#9355](https://github.com/decidim/decidim/pull/9355)
+- **decidim-elections**: Enforce YYYYmmdd format in birthdate when uploading census [\#9354](https://github.com/decidim/decidim/pull/9354)
+- **decidim-elections**: Only show that the code can be requested via SMS if its true [\#9353](https://github.com/decidim/decidim/pull/9353)
+- **decidim-meetings**: Short URLs to fix long export calendar URLs [\#9383](https://github.com/decidim/decidim/pull/9383)
+- **decidim-core**: Fix for internal links not displaying on page title [\#9228](https://github.com/decidim/decidim/pull/9228)
+- **decidim-elections**: Fix regular expression on census check [\#9352](https://github.com/decidim/decidim/pull/9352)
+- **decidim-budgets**, **decidim-proposals**: Add missing translation keys proposals import and proposals picker [\#9359](https://github.com/decidim/decidim/pull/9359)
+- **decidim-consultations**: Return 404 when there isn't a consultation [\#9374](https://github.com/decidim/decidim/pull/9374)
+- **decidim-consultations**: Return 404 when there isn't a question [\#9375](https://github.com/decidim/decidim/pull/9375)
+- **decidim-elections**: Return 404 when there isn't a voting in elections_log [\#9376](https://github.com/decidim/decidim/pull/9376)
+- **decidim-proposals**: Fix proposals creation with Participatory Texts [\#9381](https://github.com/decidim/decidim/pull/9381)
+- **decidim-forms**, **decidim-meetings**, **decidim-surveys**: Fix rollback questionnaire answer when file is invalid [\#9361](https://github.com/decidim/decidim/pull/9361)
+- **decidim-core**: Create tempfile when Active Storage service doesn't implement path_for method [\#9362](https://github.com/decidim/decidim/pull/9362)
+- **decidim-core**: Fix / Expose createMapController properly to let overriding [\#9425](https://github.com/decidim/decidim/pull/9425)
+- **decidim-elections**: Capture unhandled errors from JS promises and inform the user [\#9430](https://github.com/decidim/decidim/pull/9430)
+- **decidim-elections**: Make sure component is published when starting an election [\#9358](https://github.com/decidim/decidim/pull/9358)
+- **decidim-elections**: Remove description from questions in elections [\#9401](https://github.com/decidim/decidim/pull/9401)
+- **decidim-initiatives**: Return 404 when there isn't an initiative [\#9427](https://github.com/decidim/decidim/pull/9427)
+- **decidim-core**, **decidim-meetings**, **decidim-proposals**: Fix email subject when resource title has special characters [\#9392](https://github.com/decidim/decidim/pull/9392)
+- **decidim-core**, **decidim-generators**: Fix service worker cache in development environment [\#9424](https://github.com/decidim/decidim/pull/9424)
+- **decidim-core**: Prevent users to validate nicknames/emails taken by user groups (#9452) [\#9452](https://github.com/decidim/decidim/pull/9452)
+- **decidim-elections**: Fix hardcoded hour in election dashboard (#9465) [\#9465](https://github.com/decidim/decidim/pull/9465)
+
+#### Removed
+
+- **decidim-meetings**: Clean meetings form with registrations [\#8500](https://github.com/decidim/decidim/pull/8500)
+- **decidim-core**: Remove 'required field' explanation from conversation textearea [\#8701](https://github.com/decidim/decidim/pull/8701)
+- **decidim-admin**, **decidim-assemblies**, **decidim-conferences**, **decidim-participatory processes**: Remove category description [\#8617](https://github.com/decidim/decidim/pull/8617)
+- **decidim-core**: The `rectify` gem has been removed from the stack as of [\#9101](https://github.com/decidim/decidim/pull/9101). If you are a library developer, replace any `Rectify::Query` with `Decidim::Query`, replace any `Rectify::Command` with `Decidim::Command`. Replace any `Rectify::Presenter` with `SimpleDelegator` (Already deprecated in [\#8758](https://github.com/decidim/decidim/pull/8758))
+- **decidim-core**: The `searchlight` gem has been removed in favor of Ransach as of [\#8748](https://github.com/decidim/decidim/pull/8748). Please review the **Changed** notes regarding the required changes. Please review all your search classes that were inheriting from `Searchlight::Search`. You should migrate your search filtering to Ransack.
+- **decidim-core**: The `search_params` and `default_search_params` methods within the participant-facing controllers are now removed in favor of using `filter_params` and `default_filter_params` as of [\#8748](https://github.com/decidim/decidim/pull/8748). The duplicate methods were redundant after the Ransack migration which is why they were removed. In case you had overridden these methods in your controllers, they no longer do anything. In case you were calling these methods before, you will now receive a `NoMethodError` because they are removed. Please use `filter_params` and `default_filter_params` instead.
+- **decidim-accountability**, **decidim-assemblies**, **decidim-budgets**, **decidim-consultations**, **decidim-core**, **decidim-elections**, **decidim-initiatives**, **decidim-participatory_processes**, **decidim-proposals**, **decidim-sortitions**: The search service classes inheriting from `Searchlight::Search` that are no longer necessary due to the Ransack migration have been removed in all modules as of [\#8748](https://github.com/decidim/decidim/pull/8748). This includes `Decidim::Accountability::ResultSearch`, `Decidim::Assemblies::AssemblySearch`, `Decidim::Budgets::ProjectSearch`, `Decidim::Consultations::ConsultationSearch`, `Decidim::HomeActivitySearch`, `Decidim::ParticipatorySpaceSearch`, `Decidim::Elections::ElectionsSearch`, `Decidim::Votings::VotingSearch`, `Decidim::Meetings::Directory::MeetingSearch`, `Decidim::ParticipatoryProcesses::ParticipatoryProcessesSearch`, `Decidim::Proposals::CollaborativeDraftSearch`, `Decidim::Proposals::ProposalSearch` and `Decidim::Sortitions::SortitionSearch`.
+
+#### Developer improvements
+
+- Replace graphql-docs npm package with gem [\#8631](https://github.com/decidim/decidim/pull/8631)
+- Migrate from `Virtus` to `ActiveModel::Attributes` (and get rid of `Rectify::Form`) [\#8669](https://github.com/decidim/decidim/pull/8669)
+- Replace various autocomplete solutions [\#8524](https://github.com/decidim/decidim/pull/8524)
+- Fix webpacker generator for modules [\#8715](https://github.com/decidim/decidim/pull/8715)
+- Add parallel_tests for test suite in CI [\#8678](https://github.com/decidim/decidim/pull/8678)
+- Replace `searchlight` with `ransack` which is already a core dependency [\#8748](https://github.com/decidim/decidim/pull/8748)
+- Update docs in Webpacker app migration [\#8881](https://github.com/decidim/decidim/pull/8881)
+- Move VAPID keys generators to core [\#8923](https://github.com/decidim/decidim/pull/8923)
+- Update docs in Webpacker app migration (part II) [\#8911](https://github.com/decidim/decidim/pull/8911)
+- Fix Devise configs that depend on Decidim configs [\#9014](https://github.com/decidim/decidim/pull/9014)
+- Update rails to 6.1 [\#8411](https://github.com/decidim/decidim/pull/8411)
+- Add useful error for custom-authorizations development [\#8834](https://github.com/decidim/decidim/pull/8834)
+- Prevent Faker Address country_code from raising RetryLimitExceeded [\#9036](https://github.com/decidim/decidim/pull/9036)
+- Fix Spring errors with Rails 6.1 [\#9032](https://github.com/decidim/decidim/pull/9032)
+- Disable webpack-dev-server overlay [\#9082](https://github.com/decidim/decidim/pull/9082)
+- Make frontend development 10-12x faster (compile SCSS through sass-embedded) [\#9081](https://github.com/decidim/decidim/pull/9081)
+- Fix webpacker configuration when sass-loader is not available [\#9149](https://github.com/decidim/decidim/pull/9149)
+- Remove Rectify Gem dependency [\#9101](https://github.com/decidim/decidim/pull/9101)
+- Fix webpacker thread safety [\#9203](https://github.com/decidim/decidim/pull/9203)
+- Fix budget amounts in project seeds [\#9174](https://github.com/decidim/decidim/pull/9174)
+- Update ruby to 3.0 [\#8452](https://github.com/decidim/decidim/pull/8452)
+- Remove unused helper method from UserInterestsController [\#9237](https://github.com/decidim/decidim/pull/9237)
+- Light refactor for fetching admins [\#9287](https://github.com/decidim/decidim/pull/9287)
+- Fix local storage protocol options for uploaders [\#9285](https://github.com/decidim/decidim/pull/9285)
+- Add empty database (aka no seed) installation manual [\#9349](https://github.com/decidim/decidim/pull/9349)
+- Bump letter_opener_web from 1.3 to 2.0 [\#9395](https://github.com/decidim/decidim/pull/9395)
+- Change docs to use decidim_system:create_admin command [\#9372](https://github.com/decidim/decidim/pull/9372)
+- Add documentation for logic customization [\#9325](https://github.com/decidim/decidim/pull/9325)
+- External link improvements [\#9402](https://github.com/decidim/decidim/pull/9402)
+- Improve asset routing logic [\#9403](https://github.com/decidim/decidim/pull/9403)
+- Remove the threads limit from the Capybara Puma server [\#9422](https://github.com/decidim/decidim/pull/9422)
## Previous versions
-Please check [release/0.25-stable](https://github.com/decidim/decidim/blob/release/0.25-stable/CHANGELOG.md) for previous changes.
+Please check [release/0.26-stable](https://github.com/decidim/decidim/blob/release/0.26-stable/CHANGELOG.md) for previous changes.
diff --git a/Gemfile b/Gemfile
index 36a8274c232ce..f04324cbe98e2 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,29 +13,24 @@ gem "decidim-templates", path: "."
gem "bootsnap", "~> 1.4"
-gem "foundation_rails_helper", git: "https://github.com/sgruhier/foundation_rails_helper.git"
-gem "puma", ">= 5.5.1"
+gem "puma", ">= 5.6.2"
gem "faker", "~> 2.14"
group :development, :test do
gem "byebug", "~> 11.0", platform: :mri
- # Use latest simplecov from master until next version of simplecov is
- # released (greather than 0.18.5)
- # See https://github.com/decidim/decidim/issues/6230
- gem "simplecov", "~> 0.19.0"
-
gem "decidim-dev", path: "."
- gem "brakeman", "~> 5.1"
+ gem "brakeman", "~> 5.2"
+ gem "parallel_tests", "~> 3.7"
end
group :development do
- gem "letter_opener_web", "~> 1.3"
+ gem "letter_opener_web", "~> 2.0"
gem "listen", "~> 3.1"
gem "rubocop-faker"
gem "spring", "~> 2.0"
gem "spring-watcher-listen", "~> 2.0"
- gem "web-console", "4.0.4"
+ gem "web-console", "~> 4.2"
end
diff --git a/Gemfile.lock b/Gemfile.lock
index 3ed050bce7ec3..9169869252e4e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,72 +1,62 @@
-GIT
- remote: https://github.com/sgruhier/foundation_rails_helper.git
- revision: 45709e28f567b2e619a06091eb63d4f050f861d8
- specs:
- foundation_rails_helper (3.0.0)
- actionpack (>= 4.1, < 7.0)
- activemodel (>= 4.1, < 7.0)
- activesupport (>= 4.1, < 7.0)
- railties (>= 4.1, < 7.0)
-
PATH
remote: .
specs:
- decidim (0.26.4)
- decidim-accountability (= 0.26.4)
- decidim-admin (= 0.26.4)
- decidim-api (= 0.26.4)
- decidim-assemblies (= 0.26.4)
- decidim-blogs (= 0.26.4)
- decidim-budgets (= 0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-debates (= 0.26.4)
- decidim-forms (= 0.26.4)
- decidim-generators (= 0.26.4)
- decidim-meetings (= 0.26.4)
- decidim-pages (= 0.26.4)
- decidim-participatory_processes (= 0.26.4)
- decidim-proposals (= 0.26.4)
- decidim-sortitions (= 0.26.4)
- decidim-surveys (= 0.26.4)
- decidim-system (= 0.26.4)
- decidim-templates (= 0.26.4)
- decidim-verifications (= 0.26.4)
- decidim-accountability (0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-admin (0.26.4)
+ decidim (0.27.2)
+ decidim-accountability (= 0.27.2)
+ decidim-admin (= 0.27.2)
+ decidim-api (= 0.27.2)
+ decidim-assemblies (= 0.27.2)
+ decidim-blogs (= 0.27.2)
+ decidim-budgets (= 0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-debates (= 0.27.2)
+ decidim-forms (= 0.27.2)
+ decidim-generators (= 0.27.2)
+ decidim-meetings (= 0.27.2)
+ decidim-pages (= 0.27.2)
+ decidim-participatory_processes (= 0.27.2)
+ decidim-proposals (= 0.27.2)
+ decidim-sortitions (= 0.27.2)
+ decidim-surveys (= 0.27.2)
+ decidim-system (= 0.27.2)
+ decidim-templates (= 0.27.2)
+ decidim-verifications (= 0.27.2)
+ decidim-accountability (0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-admin (0.27.2)
active_link_to (~> 1.0)
- decidim-core (= 0.26.4)
+ decidim-core (= 0.27.2)
devise (~> 4.7)
devise-i18n (~> 1.2)
devise_invitable (~> 2.0)
- decidim-api (0.26.4)
+ decidim-api (0.27.2)
graphql (~> 1.12, < 1.13)
+ graphql-docs (~> 2.1.0)
rack-cors (~> 1.0)
+ decidim-assemblies (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-blogs (0.27.2)
+ decidim-admin (= 0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-budgets (0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-comments (0.27.2)
+ decidim-core (= 0.27.2)
redcarpet (~> 3.5, >= 3.5.1)
- decidim-assemblies (0.26.4)
- decidim-core (= 0.26.4)
- decidim-blogs (0.26.4)
- decidim-admin (= 0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-budgets (0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-comments (0.26.4)
- decidim-core (= 0.26.4)
- redcarpet (~> 3.5, >= 3.5.1)
- decidim-conferences (0.26.4)
- decidim-core (= 0.26.4)
- decidim-meetings (= 0.26.4)
+ decidim-conferences (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-meetings (= 0.27.2)
wicked_pdf (~> 2.1)
wkhtmltopdf-binary (~> 0.12)
- decidim-consultations (0.26.4)
- decidim-admin (= 0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-core (0.26.4)
+ decidim-consultations (0.27.2)
+ decidim-admin (= 0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-core (0.27.2)
active_link_to (~> 1.0)
acts_as_list (~> 0.9)
batch-loader (~> 1.2)
@@ -75,17 +65,17 @@ PATH
cells-erb (~> 0.1.0)
cells-rails (~> 0.1.3)
charlock_holmes (~> 0.7)
- date_validator (~> 0.9.0)
- decidim-api (= 0.26.4)
+ date_validator (~> 0.12.0)
+ decidim-api (= 0.27.2)
devise (~> 4.7)
devise-i18n (~> 1.2)
diffy (~> 3.3)
doorkeeper (~> 5.1)
doorkeeper-i18n (~> 4.0)
- file_validators (~> 2.1)
+ file_validators (~> 3.0)
fog-local (~> 0.6)
- foundation_rails_helper
- geocoder (~> 1.7.5)
+ foundation_rails_helper (~> 4.0)
+ geocoder (~> 1.8)
hashdiff (>= 0.4.0, < 2.0.0)
invisible_captcha (~> 0.12)
kaminari (~> 1.2, >= 1.2.1)
@@ -104,144 +94,145 @@ PATH
premailer-rails (~> 1.10)
rack (~> 2.2, >= 2.2.3)
rack-attack (~> 6.0)
- rails (~> 6.0.4)
+ rails (~> 6.1.0)
rails-i18n (~> 6.0)
ransack (~> 2.4.1)
- rectify (~> 0.13.0)
redis (~> 4.1)
request_store (~> 1.5.0)
rubyXL (~> 3.4)
rubyzip (~> 2.0)
- searchlight (~> 4.1)
seven_zip_ruby (~> 1.3)
social-share-button (~> 1.2, >= 1.2.1)
valid_email2 (~> 2.1)
webpacker (= 6.0.0.rc.5)
+ webpush (~> 1.1)
wisper (~> 2.0)
- decidim-debates (0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-dev (0.26.4)
+ decidim-debates (0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-dev (0.27.2)
axe-core-rspec (~> 4.1.0)
byebug (~> 11.0)
capybara (~> 3.24)
db-query-matchers (~> 0.10.0)
- decidim (= 0.26.4)
+ decidim (= 0.27.2)
erb_lint (~> 0.0.35)
factory_bot_rails (~> 4.8)
i18n-tasks (~> 0.9.18)
mdl (~> 0.5)
- nokogiri (~> 1.12)
+ nokogiri (~> 1.13)
+ parallel_tests (~> 3.7)
puma (~> 5.0)
rails-controller-testing (~> 1.0)
- rspec-cells (~> 0.3.4)
+ rspec-cells (~> 0.3.7)
rspec-html-matchers (~> 0.9.1)
rspec-rails (~> 4.0)
rspec-retry (~> 0.6.2)
rspec_junit_formatter (~> 0.3.0)
- rubocop (~> 0.92.0)
- rubocop-rails (~> 2.8)
- rubocop-rspec (= 1.43.2)
- selenium-webdriver (~> 3.142)
- simplecov (~> 0.19.0)
- simplecov-cobertura (~> 1.3.1)
- system_test_html_screenshots (~> 0.2)
+ rubocop (~> 1.28.0)
+ rubocop-rails (~> 2.14)
+ rubocop-rspec (~> 2.10)
+ selenium-webdriver (~> 4.1.0)
+ simplecov (~> 0.21.0)
+ simplecov-cobertura (~> 2.1.0)
w3c_rspec_validators (~> 0.3.0)
webmock (~> 3.6)
wisper-rspec (~> 1.0)
- decidim-elections (0.26.4)
- decidim-bulletin_board (= 0.22.3)
- decidim-core (= 0.26.4)
- decidim-forms (= 0.26.4)
- decidim-proposals (= 0.26.4)
+ decidim-elections (0.27.2)
+ decidim-bulletin_board (= 0.23)
+ decidim-core (= 0.27.2)
+ decidim-forms (= 0.27.2)
+ decidim-proposals (= 0.27.2)
rack-attack (~> 6.0)
- voting_schemes-dummy (= 0.22.3)
- voting_schemes-electionguard (= 0.22.3)
- decidim-forms (0.26.4)
- decidim-core (= 0.26.4)
+ voting_schemes-dummy (= 0.23)
+ voting_schemes-electionguard (= 0.23)
+ decidim-forms (0.27.2)
+ decidim-core (= 0.27.2)
wicked_pdf (~> 2.1)
wkhtmltopdf-binary (~> 0.12)
- decidim-generators (0.26.4)
- decidim-core (= 0.26.4)
- decidim-initiatives (0.26.4)
- decidim-admin (= 0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-verifications (= 0.26.4)
+ decidim-generators (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-initiatives (0.27.2)
+ decidim-admin (= 0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-verifications (= 0.27.2)
origami (~> 2.1)
- virtus-multiparams (~> 0.1)
+ rexml (~> 3.2.5)
wicked (~> 1.3)
wicked_pdf (~> 2.1)
wkhtmltopdf-binary (~> 0.12)
- decidim-meetings (0.26.4)
- decidim-core (= 0.26.4)
- decidim-forms (= 0.26.4)
+ decidim-meetings (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-forms (= 0.27.2)
icalendar (~> 2.5)
- decidim-pages (0.26.4)
- decidim-core (= 0.26.4)
- decidim-participatory_processes (0.26.4)
- decidim-core (= 0.26.4)
- decidim-proposals (0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- doc2text (~> 0.4.4)
+ decidim-pages (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-participatory_processes (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-proposals (0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ doc2text (~> 0.4.5)
redcarpet (~> 3.5, >= 3.5.1)
- decidim-sortitions (0.26.4)
- decidim-admin (= 0.26.4)
- decidim-comments (= 0.26.4)
- decidim-core (= 0.26.4)
- decidim-proposals (= 0.26.4)
- decidim-surveys (0.26.4)
- decidim-core (= 0.26.4)
- decidim-forms (= 0.26.4)
- decidim-templates (= 0.26.4)
- decidim-system (0.26.4)
+ decidim-sortitions (0.27.2)
+ decidim-admin (= 0.27.2)
+ decidim-comments (= 0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-proposals (= 0.27.2)
+ decidim-surveys (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-forms (= 0.27.2)
+ decidim-templates (= 0.27.2)
+ decidim-system (0.27.2)
active_link_to (~> 1.0)
- decidim-core (= 0.26.4)
+ decidim-core (= 0.27.2)
devise (~> 4.7)
devise-i18n (~> 1.2)
devise_invitable (~> 2.0)
- decidim-templates (0.26.4)
- decidim-core (= 0.26.4)
- decidim-forms (= 0.26.4)
- decidim-verifications (0.26.4)
- decidim-core (= 0.26.4)
+ decidim-templates (0.27.2)
+ decidim-core (= 0.27.2)
+ decidim-forms (= 0.27.2)
+ decidim-verifications (0.27.2)
+ decidim-core (= 0.27.2)
GEM
remote: https://rubygems.org/
specs:
- actioncable (6.0.4.1)
- actionpack (= 6.0.4.1)
+ actioncable (6.1.6)
+ actionpack (= 6.1.6)
+ activesupport (= 6.1.6)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (6.0.4.1)
- actionpack (= 6.0.4.1)
- activejob (= 6.0.4.1)
- activerecord (= 6.0.4.1)
- activestorage (= 6.0.4.1)
- activesupport (= 6.0.4.1)
+ actionmailbox (6.1.6)
+ actionpack (= 6.1.6)
+ activejob (= 6.1.6)
+ activerecord (= 6.1.6)
+ activestorage (= 6.1.6)
+ activesupport (= 6.1.6)
mail (>= 2.7.1)
- actionmailer (6.0.4.1)
- actionpack (= 6.0.4.1)
- actionview (= 6.0.4.1)
- activejob (= 6.0.4.1)
+ actionmailer (6.1.6)
+ actionpack (= 6.1.6)
+ actionview (= 6.1.6)
+ activejob (= 6.1.6)
+ activesupport (= 6.1.6)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
- actionpack (6.0.4.1)
- actionview (= 6.0.4.1)
- activesupport (= 6.0.4.1)
- rack (~> 2.0, >= 2.0.8)
+ actionpack (6.1.6)
+ actionview (= 6.1.6)
+ activesupport (= 6.1.6)
+ rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (6.0.4.1)
- actionpack (= 6.0.4.1)
- activerecord (= 6.0.4.1)
- activestorage (= 6.0.4.1)
- activesupport (= 6.0.4.1)
+ actiontext (6.1.6)
+ actionpack (= 6.1.6)
+ activerecord (= 6.1.6)
+ activestorage (= 6.1.6)
+ activesupport (= 6.1.6)
nokogiri (>= 1.8.5)
- actionview (6.0.4.1)
- activesupport (= 6.0.4.1)
+ actionview (6.1.6)
+ activesupport (= 6.1.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -249,25 +240,27 @@ GEM
active_link_to (1.0.5)
actionpack
addressable
- activejob (6.0.4.1)
- activesupport (= 6.0.4.1)
+ activejob (6.1.6)
+ activesupport (= 6.1.6)
globalid (>= 0.3.6)
- activemodel (6.0.4.1)
- activesupport (= 6.0.4.1)
- activerecord (6.0.4.1)
- activemodel (= 6.0.4.1)
- activesupport (= 6.0.4.1)
- activestorage (6.0.4.1)
- actionpack (= 6.0.4.1)
- activejob (= 6.0.4.1)
- activerecord (= 6.0.4.1)
- marcel (~> 1.0.0)
- activesupport (6.0.4.1)
+ activemodel (6.1.6)
+ activesupport (= 6.1.6)
+ activerecord (6.1.6)
+ activemodel (= 6.1.6)
+ activesupport (= 6.1.6)
+ activestorage (6.1.6)
+ actionpack (= 6.1.6)
+ activejob (= 6.1.6)
+ activerecord (= 6.1.6)
+ activesupport (= 6.1.6)
+ marcel (~> 1.0)
+ mini_mime (>= 1.1.0)
+ activesupport (6.1.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2, >= 2.2.2)
+ i18n (>= 1.6, < 2)
+ minitest (>= 5.1)
+ tzinfo (~> 2.0)
+ zeitwerk (~> 2.3)
acts_as_list (0.9.19)
activerecord (>= 3.0)
addressable (2.8.0)
@@ -295,9 +288,9 @@ GEM
parser (>= 2.4)
smart_properties
bindex (0.8.1)
- bootsnap (1.7.5)
- msgpack (~> 1.0)
- brakeman (5.1.1)
+ bootsnap (1.10.3)
+ msgpack (~> 1.2)
+ brakeman (5.2.2)
browser (2.7.1)
builder (3.2.4)
byebug (11.1.3)
@@ -310,7 +303,7 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
- carrierwave (2.2.2)
+ carrierwave (2.2.3)
activemodel (>= 5.0.0)
activesupport (>= 5.0.0)
addressable (~> 2.6)
@@ -332,7 +325,7 @@ GEM
charlock_holmes (0.7.7)
chef-utils (18.0.172)
concurrent-ruby
- childprocess (3.0.0)
+ childprocess (4.1.0)
coercible (1.0.0)
descendants_tracker (~> 0.0.1)
coffee-rails (5.0.0)
@@ -343,21 +336,22 @@ GEM
execjs
coffee-script-source (1.12.2)
colorize (0.8.1)
- concurrent-ruby (1.1.9)
+ commonmarker (0.23.6)
+ concurrent-ruby (1.1.10)
crack (0.4.5)
rexml
crass (1.0.6)
- css_parser (1.12.0)
+ css_parser (1.14.0)
addressable
- date_validator (0.9.0)
- activemodel
- activesupport
+ date_validator (0.12.0)
+ activemodel (>= 3)
+ activesupport (>= 3)
db-query-matchers (0.10.0)
activesupport (>= 4.0, < 7)
rspec (~> 3.0)
- decidim-bulletin_board (0.22.3)
+ decidim-bulletin_board (0.23.0)
byebug (~> 11.0)
- graphlient (~> 0.4.0)
+ graphlient (~> 0.5.0)
jwt (~> 2.2.2)
rails (~> 6.0, >= 5.0.0)
wisper (~> 2.0.0)
@@ -374,20 +368,19 @@ GEM
warden (~> 1.2.3)
devise-i18n (1.10.2)
devise (>= 4.8.0)
- devise_invitable (2.0.6)
+ devise_invitable (2.0.7)
actionmailer (>= 5.0)
devise (>= 4.6)
diff-lcs (1.5.0)
diffy (3.4.2)
- doc2text (0.4.4)
- nokogiri (>= 1.12.5, < 1.13.0)
+ doc2text (0.4.5)
+ nokogiri (>= 1.13.2, < 1.14.0)
rubyzip (~> 2.3.0)
docile (1.4.0)
- doorkeeper (5.6.0)
+ doorkeeper (5.6.4)
railties (>= 5)
doorkeeper-i18n (4.0.1)
dumb_delegator (1.0.0)
- equalizer (0.0.11)
erb_lint (0.0.37)
activesupport
better_html (~> 1.0.7)
@@ -399,14 +392,17 @@ GEM
erbse (0.1.4)
temple
erubi (1.10.0)
- excon (0.93.1)
+ escape_utils (1.3.0)
+ excon (0.99.0)
execjs (2.8.1)
+ extended-markdown-filter (0.7.0)
+ html-pipeline (~> 2.9)
factory_bot (4.11.1)
activesupport (>= 3.0.0)
factory_bot_rails (4.11.1)
factory_bot (~> 4.11.1)
railties (>= 3.0.0)
- faker (2.18.0)
+ faker (2.19.0)
i18n (>= 1.6, < 2)
faraday (1.10.2)
faraday-em_http (~> 1.0)
@@ -433,8 +429,8 @@ GEM
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
- ffi (1.15.1)
- file_validators (2.3.0)
+ ffi (1.15.5)
+ file_validators (3.0.0)
activemodel (>= 3.2)
mime-types (>= 1.0)
fog-core (2.3.0)
@@ -445,10 +441,16 @@ GEM
fog-local (0.8.0)
fog-core (>= 1.27, < 3.0)
formatador (1.1.0)
- geocoder (1.7.5)
- globalid (0.5.2)
+ foundation_rails_helper (4.0.1)
+ actionpack (>= 4.1, < 7.1)
+ activemodel (>= 4.1, < 7.1)
+ activesupport (>= 4.1, < 7.1)
+ railties (>= 4.1, < 7.1)
+ gemoji (3.0.1)
+ geocoder (1.8.1)
+ globalid (1.0.0)
activesupport (>= 5.0)
- graphlient (0.4.0)
+ graphlient (0.5.0)
faraday (>= 1.0)
faraday_middleware
graphql-client
@@ -456,12 +458,24 @@ GEM
graphql-client (0.18.0)
activesupport (>= 3.0)
graphql
+ graphql-docs (2.1.0)
+ commonmarker (~> 0.16)
+ escape_utils (~> 1.2)
+ extended-markdown-filter (~> 0.4)
+ gemoji (~> 3.0)
+ graphql (~> 1.12)
+ html-pipeline (~> 2.9)
+ sass (~> 3.4)
hashdiff (1.0.1)
hashie (5.0.0)
- highline (2.0.3)
+ highline (2.1.0)
+ hkdf (0.3.0)
+ html-pipeline (2.14.3)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
html_tokenizer (0.0.7)
htmlentities (4.3.4)
- i18n (1.8.11)
+ i18n (1.10.0)
concurrent-ruby (~> 1.0)
i18n-tasks (0.9.37)
activesupport (>= 4.0.2)
@@ -482,7 +496,7 @@ GEM
ruby-vips (>= 2.0.17, < 3)
invisible_captcha (0.13.0)
rails (>= 3.2.0)
- json (2.6.2)
+ json (2.6.3)
jwt (2.2.3)
kaminari (1.2.2)
activesupport (>= 4.1.0)
@@ -502,13 +516,14 @@ GEM
kramdown (~> 2.0)
launchy (2.5.0)
addressable (~> 2.7)
- letter_opener (1.7.0)
- launchy (~> 2.2)
- letter_opener_web (1.4.0)
- actionmailer (>= 3.2)
- letter_opener (~> 1.0)
- railties (>= 3.2)
- listen (3.5.1)
+ letter_opener (1.8.1)
+ launchy (>= 2.2, < 3)
+ letter_opener_web (2.0.0)
+ actionmailer (>= 5.2)
+ letter_opener (~> 1.7)
+ railties (>= 5.2)
+ rexml
+ listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.3.1)
@@ -528,22 +543,26 @@ GEM
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
- mini_magick (4.11.0)
- mini_mime (1.1.1)
- mini_portile2 (2.6.1)
- minitest (5.14.4)
+ mini_magick (4.12.0)
+ mini_mime (1.1.2)
+ mini_portile2 (2.8.0)
+ minitest (5.15.0)
mixlib-cli (2.1.8)
mixlib-config (3.0.27)
tomlrb
mixlib-shellout (3.2.7)
chef-utils
- msgpack (1.4.2)
+ msgpack (1.4.5)
multi_xml (0.6.0)
multipart-post (2.2.3)
mustache (1.1.1)
+ net-protocol (0.2.1)
+ timeout
+ net-smtp (0.3.3)
+ net-protocol
nio4r (2.5.8)
- nokogiri (1.12.5)
- mini_portile2 (~> 2.6.1)
+ nokogiri (1.13.6)
+ mini_portile2 (~> 2.8.0)
racc (~> 1.4)
oauth (1.1.0)
oauth-tty (~> 1.0, >= 1.0.1)
@@ -558,7 +577,7 @@ GEM
rack (>= 1.2, < 4)
snaky_hash (~> 2.0)
version_gem (~> 1.1)
- omniauth (2.1.0)
+ omniauth (2.1.1)
hashie (>= 3.4.6)
rack (>= 2.2.3)
rack-protection
@@ -587,49 +606,52 @@ GEM
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
- parallel (1.20.1)
- parser (3.0.2.0)
+ parallel (1.22.1)
+ parallel_tests (3.7.3)
+ parallel
+ parser (3.1.2.0)
ast (~> 2.4.1)
pg (1.1.4)
pg_search (2.3.6)
activerecord (>= 5.2)
activesupport (>= 5.2)
- premailer (1.18.0)
+ premailer (1.19.0)
addressable
css_parser (>= 1.12.0)
htmlentities (>= 4.0.0)
- premailer-rails (1.11.1)
+ premailer-rails (1.12.0)
actionmailer (>= 3)
+ net-smtp
premailer (~> 1.7, >= 1.7.9)
- public_suffix (4.0.6)
- puma (5.5.2)
+ public_suffix (4.0.7)
+ puma (5.6.4)
nio4r (~> 2.0)
racc (1.6.0)
- rack (2.2.3)
+ rack (2.2.3.1)
rack-attack (6.6.1)
rack (>= 1.0, < 3)
rack-cors (1.1.1)
rack (>= 2.0.0)
- rack-protection (3.0.2)
+ rack-protection (3.0.5)
rack
- rack-proxy (0.7.4)
+ rack-proxy (0.7.6)
rack
rack-test (1.1.0)
rack (>= 1.0, < 3)
- rails (6.0.4.1)
- actioncable (= 6.0.4.1)
- actionmailbox (= 6.0.4.1)
- actionmailer (= 6.0.4.1)
- actionpack (= 6.0.4.1)
- actiontext (= 6.0.4.1)
- actionview (= 6.0.4.1)
- activejob (= 6.0.4.1)
- activemodel (= 6.0.4.1)
- activerecord (= 6.0.4.1)
- activestorage (= 6.0.4.1)
- activesupport (= 6.0.4.1)
- bundler (>= 1.3.0)
- railties (= 6.0.4.1)
+ rails (6.1.6)
+ actioncable (= 6.1.6)
+ actionmailbox (= 6.1.6)
+ actionmailer (= 6.1.6)
+ actionpack (= 6.1.6)
+ actiontext (= 6.1.6)
+ actionview (= 6.1.6)
+ activejob (= 6.1.6)
+ activemodel (= 6.1.6)
+ activerecord (= 6.1.6)
+ activestorage (= 6.1.6)
+ activesupport (= 6.1.6)
+ bundler (>= 1.15.0)
+ railties (= 6.1.6)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@@ -643,35 +665,29 @@ GEM
rails-i18n (6.0.0)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7)
- railties (6.0.4.1)
- actionpack (= 6.0.4.1)
- activesupport (= 6.0.4.1)
+ railties (6.1.6)
+ actionpack (= 6.1.6)
+ activesupport (= 6.1.6)
method_source
- rake (>= 0.8.7)
- thor (>= 0.20.3, < 2.0)
- rainbow (3.0.0)
+ rake (>= 12.2)
+ thor (~> 1.0)
+ rainbow (3.1.1)
rake (13.0.6)
ransack (2.4.2)
activerecord (>= 5.2.4)
activesupport (>= 5.2.4)
i18n
- rb-fsevent (0.11.0)
+ rb-fsevent (0.11.1)
rb-inotify (0.10.1)
ffi (~> 1.0)
- rectify (0.13.0)
- activemodel (>= 4.1.0)
- activerecord (>= 4.1.0)
- activesupport (>= 4.1.0)
- virtus (~> 1.0.5)
- wisper (>= 1.6.1)
- redcarpet (3.5.1)
+ redcarpet (3.6.0)
redis (4.8.0)
- regexp_parser (2.1.1)
+ regexp_parser (2.3.1)
request_store (1.5.1)
rack (>= 1.4)
- responders (3.0.1)
- actionpack (>= 5.0)
- railties (>= 5.0)
+ responders (3.1.0)
+ actionpack (>= 5.2)
+ railties (>= 5.2)
rexml (3.2.5)
rspec (3.12.0)
rspec-core (~> 3.12.0)
@@ -680,15 +696,15 @@ GEM
rspec-cells (0.3.8)
cells (>= 4.0.0, < 6.0.0)
rspec-rails (>= 3.0.0, < 6.1.0)
- rspec-core (3.12.0)
+ rspec-core (3.12.1)
rspec-support (~> 3.12.0)
- rspec-expectations (3.12.0)
+ rspec-expectations (3.12.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-html-matchers (0.9.4)
nokogiri (~> 1)
rspec (>= 3.0.0.a, < 4)
- rspec-mocks (3.12.0)
+ rspec-mocks (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (4.1.2)
@@ -704,26 +720,26 @@ GEM
rspec-support (3.12.0)
rspec_junit_formatter (0.3.0)
rspec-core (>= 2, < 4, != 2.12.0)
- rubocop (0.92.0)
+ rubocop (1.28.2)
parallel (~> 1.10)
- parser (>= 2.7.1.5)
+ parser (>= 3.1.0.0)
rainbow (>= 2.2.2, < 4.0)
- regexp_parser (>= 1.7)
+ regexp_parser (>= 1.8, < 3.0)
rexml
- rubocop-ast (>= 0.5.0)
+ rubocop-ast (>= 1.17.0, < 2.0)
ruby-progressbar (~> 1.7)
- unicode-display_width (>= 1.4.0, < 2.0)
- rubocop-ast (1.5.0)
- parser (>= 3.0.1.1)
+ unicode-display_width (>= 1.4.0, < 3.0)
+ rubocop-ast (1.17.0)
+ parser (>= 3.1.1.0)
rubocop-faker (1.1.0)
faker (>= 2.12.0)
rubocop (>= 0.82.0)
- rubocop-rails (2.9.1)
+ rubocop-rails (2.15.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
- rubocop (>= 0.90.0, < 2.0)
- rubocop-rspec (1.43.2)
- rubocop (~> 0.87)
+ rubocop (>= 1.7.0, < 2.0)
+ rubocop-rspec (2.11.1)
+ rubocop (~> 1.19)
ruby-progressbar (1.11.0)
ruby-vips (2.1.4)
ffi (~> 1.12)
@@ -732,18 +748,26 @@ GEM
nokogiri (>= 1.10.8)
rubyzip (>= 1.3.0)
rubyzip (2.3.2)
- searchlight (4.1.0)
- selenium-webdriver (3.142.7)
- childprocess (>= 0.5, < 4.0)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ selenium-webdriver (4.1.0)
+ childprocess (>= 0.5, < 5.0)
+ rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2)
semantic_range (3.0.0)
seven_zip_ruby (1.3.0)
- simplecov (0.19.1)
+ simplecov (0.21.2)
docile (~> 1.1)
simplecov-html (~> 0.11)
- simplecov-cobertura (1.3.1)
- simplecov (~> 0.8)
+ simplecov_json_formatter (~> 0.1)
+ simplecov-cobertura (2.1.0)
+ rexml
+ simplecov (~> 0.19)
simplecov-html (0.12.3)
+ simplecov_json_formatter (0.1.4)
smart_properties (1.17.0)
snaky_hash (2.0.1)
hashie
@@ -762,33 +786,29 @@ GEM
activesupport (>= 5.2)
sprockets (>= 3.0.0)
ssrf_filter (1.1.1)
- system_test_html_screenshots (0.2.0)
- actionpack (>= 5.2, < 6.1.a)
- temple (0.9.1)
+ temple (0.10.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
- thor (1.1.0)
+ thor (1.2.1)
thread_safe (0.3.6)
tilt (2.0.11)
+ timeout (0.3.1)
tomlrb (2.0.3)
- tzinfo (1.2.9)
- thread_safe (~> 0.1)
+ tzinfo (2.0.4)
+ concurrent-ruby (~> 1.0)
uber (0.1.0)
- unicode-display_width (1.8.0)
+ unicode-display_width (2.1.0)
valid_email2 (2.3.1)
activemodel (>= 3.2)
mail (~> 2.5)
version_gem (1.1.1)
- virtus (1.0.5)
+ virtus (2.0.0)
axiom-types (~> 0.1)
coercible (~> 1.0)
descendants_tracker (~> 0.0, >= 0.0.3)
- equalizer (~> 0.0, >= 0.0.9)
- virtus-multiparams (0.1.1)
- virtus (~> 1.0)
- voting_schemes-dummy (0.22.3)
+ voting_schemes-dummy (0.23.0)
rails (>= 5.0.0)
- voting_schemes-electionguard (0.22.3)
+ voting_schemes-electionguard (0.23.0)
rails (>= 5.0.0)
w3c_rspec_validators (0.3.0)
rails
@@ -800,7 +820,7 @@ GEM
rexml (~> 3.2)
warden (1.2.9)
rack (>= 2.0.9)
- web-console (4.0.4)
+ web-console (4.2.0)
actionview (>= 6.0.0)
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
@@ -814,6 +834,9 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
+ webpush (1.1.0)
+ hkdf (~> 0.2)
+ jwt (~> 2.0)
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
@@ -823,17 +846,17 @@ GEM
activesupport
wisper (2.0.1)
wisper-rspec (1.1.0)
- wkhtmltopdf-binary (0.12.6.5)
+ wkhtmltopdf-binary (0.12.6.6)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.5.1)
+ zeitwerk (2.5.4)
PLATFORMS
ruby
DEPENDENCIES
bootsnap (~> 1.4)
- brakeman (~> 5.1)
+ brakeman (~> 5.2)
byebug (~> 11.0)
decidim!
decidim-conferences!
@@ -843,18 +866,17 @@ DEPENDENCIES
decidim-initiatives!
decidim-templates!
faker (~> 2.14)
- foundation_rails_helper!
- letter_opener_web (~> 1.3)
+ letter_opener_web (~> 2.0)
listen (~> 3.1)
- puma (>= 5.5.1)
+ parallel_tests (~> 3.7)
+ puma (>= 5.6.2)
rubocop-faker
- simplecov (~> 0.19.0)
spring (~> 2.0)
spring-watcher-listen (~> 2.0)
- web-console (= 4.0.4)
+ web-console (~> 4.2)
RUBY VERSION
- ruby 2.7.5p203
+ ruby 3.0.2p107
BUNDLED WITH
- 2.3.5
+ 2.3.20
diff --git a/README.adoc b/README.adoc
index af2273591ef9c..7720f92965286 100644
--- a/README.adoc
+++ b/README.adoc
@@ -1,5 +1,3 @@
-D:doctype: book
-
image::https://cdn.rawgit.com/decidim/decidim/develop/logo.svg[Decidim Logo,400]
The participatory democracy framework.
@@ -9,7 +7,7 @@ Free Open-Source participatory democracy, citizen participation and open governm
____
https://decidim.org[Decidim] is a participatory democracy framework, written in Ruby on Rails, originally developed for the Barcelona City government online and offline participation website.
-Installing these libraries will provide you a generator and gems to help you develop web applications like the ones found on <
- <%= link_to translated_attribute(category.name),results_path(filter: { category_id: category, scope_id: current_scope }) %>+++See all+++
+++
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Accountability/develop.svg?label=%5BCI%5D%20Accountability[Accountability,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Api/develop.svg?label=%5BCI%5D%20Api[Api,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Assemblies/develop.svg?label=%5BCI%5D%20Assemblies[Assemblies,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Blogs/develop.svg?label=%5BCI%5D%20Blogs[Blogs,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Budgets/develop.svg?label=%5BCI%5D%20Budgets[Budgets,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Comments/develop.svg?label=%5BCI%5D%20Comments[Comments,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Conferences/develop.svg?label=%5BCI%5D%20Conferences[Conferences,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Consultations/develop.svg?label=%5BCI%5D%20Consultations[Consultations,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Core/develop.svg?label=%5BCI%5D%20Core[Core,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Debates/develop.svg?label=%5BCI%5D%20Debates[Debates,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Forms/develop.svg?label=%5BCI%5D%20Forms[Forms,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Generators/develop.svg?label=%5BCI%5D%20Generators[Generators,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Initiatives/develop.svg?label=%5BCI%5D%20Initiatives[Initiatives,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Main%20folder/develop.svg?label=%5BCI%5D%20Main[Main,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Meetings/develop.svg?label=%5BCI%5D%20Meetings[Meetings,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Pages/develop.svg?label=%5BCI%5D%20Pages[Pages,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Participatory%20processes/develop.svg?label=%5BCI%5D%20Participatory%20processes[Participatory processes,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Proposals%20(system%20admin)/develop.svg?label=%5BCI%5D%20Proposals%20(system%20admin)[Proposals (system admin),link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Proposals%20(system%20public)/develop.svg?label=%5BCI%5D%20Proposals%20(system%20public)[Proposals (system admin),link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Proposals%20(unit%20tests)/develop.svg?label=%5BCI%5D%20Proposals%20(unit%20tests)[Proposals (unit tests),link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Sortitions/develop.svg?label=%5BCI%5D%20Sortitions[Sortitions,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Surveys/develop.svg?label=%5BCI%5D%20Surveys[Surveys,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20System/develop.svg?label=%5BCI%5D%20System[System,link=https://github.com/decidim/decidim/actions]
-image:https://img.shields.io/github/workflow/status/decidim/decidim/%5BCI%5D%20Verifications/develop.svg?label=%5BCI%5D%20Verifications[Verifications,link=https://github.com/decidim/decidim/actions]
-+++
- <%= timeline_entry.entry_date %>
+ <%= l timeline_entry.entry_date, format: :decidim_short %>
<%= translated_attribute(timeline_entry.title) %>
<% if allowed_to? :update, :timeline_entry, timeline_entry: timeline_entry %>
diff --git a/decidim-accountability/app/views/decidim/accountability/results/_home_categories.html.erb b/decidim-accountability/app/views/decidim/accountability/results/_home_categories.html.erb
index e2b8837e119b4..b82b0f04e6f10 100644
--- a/decidim-accountability/app/views/decidim/accountability/results/_home_categories.html.erb
+++ b/decidim-accountability/app/views/decidim/accountability/results/_home_categories.html.erb
@@ -26,7 +26,7 @@