diff --git a/.circleci/config.yml b/.circleci/config.yml
index d83e7122e10a8a04d2bd343c4d43cfb07d45f939..3df3f5de9b082af76246486540ae4e621c5d45a8 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,13 +1,12 @@
 version: 2.1
 jobs:
-  test:
+  test-ruby27:
     docker:
       - image: cimg/ruby:2.7-node
       - image: cimg/mysql:8.0
         command: [--default-authentication-plugin=mysql_native_password]
         environment:
           MYSQL_ROOT_HOST: '%'
-          MYSQL_USER: 'root'
           MYSQL_ROOT_PASSWORD: 'root'
           MYSQL_DATABASE: 'qpixel_test'
       - image: cimg/redis:7.0
@@ -23,21 +22,157 @@ jobs:
       - checkout
       - restore_cache:
           keys:
-            - qpixel-{{ checksum "Gemfile" }}
-            - qpixel-
+            - qpixel-ruby27-{{ checksum "Gemfile.lock" }}
+            - qpixel-ruby27-
       - run:
           name: Install Bundler & gems
           command: |
             gem install bundler
             bundle install --path=~/gems
+      - run:
+          name: Clean unnecessary gems
+          command: |
+            bundle clean --force
+      - save_cache:
+          key: qpixel-ruby27-{{ checksum "Gemfile.lock" }}
+          paths:
+            - ~/gems
+      - run:
+          name: Copy key
+          command: |
+            if [ -z "$MASTER_KEY" ]; then rm config/credentials.yml.enc; else echo "$MASTER_KEY" > config/master.key; fi
+      - run:
+          name: Prepare config & database
+          environment:
+            RAILS_ENV: test
+          command: |
+            cp config/database.sample.yml config/database.yml
+            cp config/storage.sample.yml config/storage.yml
+            bundle exec rails db:create
+            bundle exec rails db:schema:load
+            bundle exec rails db:migrate
+            bundle exec rails test:prepare
+      - run:
+          name: Current revision
+          command: |
+            git rev-parse $(git rev-parse --abbrev-ref HEAD)
+      - run:
+          name: Coveralls token
+          command: |
+            if [ -z "$COVERALLS_REPO_TOKEN" ]; then echo "Skipping coveralls"; else echo "repo_token: $COVERALLS_REPO_TOKEN" > .coveralls.yml; fi
+      - run:
+          name: Test
+          command: |
+            bundle exec rails test
+      - store_test_results:
+          path: "~/qpixel/test/reports"
+  system-test-ruby27:
+    docker:
+      - image: cimg/ruby:2.7-browsers
+      - image: cimg/mysql:8.0
+        command: [--default-authentication-plugin=mysql_native_password]
+        environment:
+          MYSQL_ROOT_HOST: '%'
+          MYSQL_ROOT_PASSWORD: 'root'
+          MYSQL_DATABASE: 'qpixel_test'
+      - image: cimg/redis:7.0
+
+    working_directory: ~/qpixel
+
+    steps:
+      - run:
+          name: Install packages
+          command: |
+            sudo apt-get --allow-releaseinfo-change -qq update
+            sudo apt-get -y install git libmariadb-dev libmagickwand-dev
+      - checkout
+      - restore_cache:
+          keys:
+            - qpixel-ruby27-{{ checksum "Gemfile.lock" }}
+            - qpixel-ruby27-
+      - run:
+          name: Install Bundler & gems
+          command: |
+            gem install bundler
+            bundle install --path=~/gems
+      - run:
+          name: Clean unnecessary gems
+          command: |
+            bundle clean --force
+      - save_cache:
+          key: qpixel-ruby27-{{ checksum "Gemfile.lock" }}
+          paths:
+            - ~/gems
+      - run:
+          name: Copy key
+          command: |
+            if [ -z "$MASTER_KEY" ]; then rm config/credentials.yml.enc; else echo "$MASTER_KEY" > config/master.key; fi
+      - run:
+          name: Prepare config & database
+          environment:
+            RAILS_ENV: test
+          command: |
+            cp config/database.sample.yml config/database.yml
+            cp config/storage.sample.yml config/storage.yml
+            bundle exec rails db:create
+            bundle exec rails db:schema:load
+            bundle exec rails db:migrate
+            bundle exec rails test:prepare
+      - run:
+          name: Current revision
+          command: |
+            git rev-parse $(git rev-parse --abbrev-ref HEAD)
+      - run:
+          name: Test
+          command: |
+            bundle exec rails test:system
+      - store_test_results:
+          path: "~/qpixel/test/reports"
+      - store_artifacts:
+          path: "~/qpixel/tmp/screenshots"
+          when: on_fail
+
+  test-ruby31:
+    docker:
+      - image: cimg/ruby:3.1-node
+      - image: cimg/mysql:8.0
+        command: [ --default-authentication-plugin=mysql_native_password ]
+        environment:
+          MYSQL_ROOT_HOST: '%'
+          MYSQL_ROOT_PASSWORD: 'root'
+          MYSQL_DATABASE: 'qpixel_test'
+      - image: cimg/redis:7.0
+
+    working_directory: ~/qpixel
+
+    steps:
+      - run:
+          name: Install packages
+          command: |
+            sudo apt-get --allow-releaseinfo-change -qq update
+            sudo apt-get -y install git libmariadb-dev libmagickwand-dev
+      - checkout
+      - restore_cache:
+          keys:
+            - qpixel-ruby31-{{ checksum "Gemfile.lock" }}
+            - qpixel-ruby31-
+      - run:
+          name: Install Bundler & gems
+          command: |
+            gem install bundler
+            bundle install --path=~/gems
+      - run:
+          name: Clean unnecessary gems
+          command: |
+            bundle clean --force
       - save_cache:
-          key: qpixel-{{ checksum "Gemfile" }}
+          key: qpixel-ruby31-{{ checksum "Gemfile.lock" }}
           paths:
             - ~/gems
       - run:
           name: Copy key
           command: |
-            echo "$MASTER_KEY" > config/master.key
+            if [ -z "$MASTER_KEY" ]; then rm config/credentials.yml.enc; else echo "$MASTER_KEY" > config/master.key; fi
       - run:
           name: Prepare config & database
           environment:
@@ -56,17 +191,82 @@ jobs:
       - run:
           name: Coveralls token
           command: |
-            echo "repo_token: $COVERALLS_REPO_TOKEN" > .coveralls.yml
+            if [ -z "$COVERALLS_REPO_TOKEN" ]; then echo "Skipping coveralls"; else echo "repo_token: $COVERALLS_REPO_TOKEN" > .coveralls.yml; fi
       - run:
           name: Test
           command: |
             bundle exec rails test
       - store_test_results:
           path: "~/qpixel/test/reports"
+  system-test-ruby31:
+    docker:
+      - image: cimg/ruby:3.1-browsers
+      - image: cimg/mysql:8.0
+        command: [ --default-authentication-plugin=mysql_native_password ]
+        environment:
+          MYSQL_ROOT_HOST: '%'
+          MYSQL_ROOT_PASSWORD: 'root'
+          MYSQL_DATABASE: 'qpixel_test'
+      - image: cimg/redis:7.0
+
+    working_directory: ~/qpixel
+
+    steps:
+      - run:
+          name: Install packages
+          command: |
+            sudo apt-get --allow-releaseinfo-change -qq update
+            sudo apt-get -y install git libmariadb-dev libmagickwand-dev
+      - checkout
+      - restore_cache:
+          keys:
+            - qpixel-ruby31-{{ checksum "Gemfile.lock" }}
+            - qpixel-ruby31-
+      - run:
+          name: Install Bundler & gems
+          command: |
+            gem install bundler
+            bundle install --path=~/gems
+      - run:
+          name: Clean unnecessary gems
+          command: |
+            bundle clean --force
+      - save_cache:
+          key: qpixel-ruby31-{{ checksum "Gemfile.lock" }}
+          paths:
+            - ~/gems
+      - run:
+          name: Copy key
+          command: |
+            if [ -z "$MASTER_KEY" ]; then rm config/credentials.yml.enc; else echo "$MASTER_KEY" > config/master.key; fi
+      - run:
+          name: Prepare config & database
+          environment:
+            RAILS_ENV: test
+          command: |
+            cp config/database.sample.yml config/database.yml
+            cp config/storage.sample.yml config/storage.yml
+            bundle exec rails db:create
+            bundle exec rails db:schema:load
+            bundle exec rails db:migrate
+            bundle exec rails test:prepare
+      - run:
+          name: Current revision
+          command: |
+            git rev-parse $(git rev-parse --abbrev-ref HEAD)
+      - run:
+          name: Test
+          command: |
+            bundle exec rails test:system
+      - store_test_results:
+          path: "~/qpixel/test/reports"
+      - store_artifacts:
+          path: "~/qpixel/tmp/screenshots"
+          when: on_fail
 
   rubocop:
     docker:
-      - image: cimg/ruby:2.7-node
+      - image: cimg/ruby:3.1-node
 
     working_directory: ~/qpixel
 
@@ -79,15 +279,19 @@ jobs:
       - checkout
       - restore_cache:
           keys:
-            - qpixel-{{ checksum "Gemfile" }}
-            - qpixel-
+            - qpixel-ruby31-{{ checksum "Gemfile.lock" }}
+            - qpixel-ruby31-
       - run:
           name: Install Bundler & gems
           command: |
             gem install bundler
             bundle install --path=~/gems
+      - run:
+          name: Clean unnecessary gems
+          command: |
+            bundle clean --force
       - save_cache:
-          key: qpixel-{{ checksum "Gemfile" }}
+          key: qpixel-ruby31-{{ checksum "Gemfile.lock" }}
           paths:
             - ~/gems
       - run:
@@ -97,7 +301,7 @@ jobs:
 
   deploy:
     docker:
-      - image: cimg/ruby:2.7-node
+      - image: cimg/ruby:3.1-node
 
     working_directory: ~/qpixel
 
@@ -115,11 +319,17 @@ jobs:
 workflows:
   test_lint:
     jobs:
-      - test
+      - test-ruby27
+      - test-ruby31
+      - system-test-ruby27
+      - system-test-ruby31
       - rubocop
       - deploy:
           requires:
-            - test
+            - test-ruby27
+            - test-ruby31
+            - system-test-ruby27
+            - system-test-ruby31
             - rubocop
           filters:
             branches:
diff --git a/.github/ISSUE_TEMPLATE/bug-feature-via-meta.md b/.github/ISSUE_TEMPLATE/bug-feature-via-meta.md
new file mode 100644
index 0000000000000000000000000000000000000000..9141bee85b88e0be14ec5274d01f22921d2a0fc7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-feature-via-meta.md
@@ -0,0 +1,16 @@
+---
+name: Bug/Feature via Meta
+about: Use when you're copying a bug/feature request here from Meta.
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+<!-- Meta posts are autolinked. Insert the post ID after meta: and a link will be generated for you. -->
+meta:123
+
+<!-- Provide a brief description of what the bug/feature is based on the Meta post. -->
+
+
+<!-- Add any discussion that's been had around the issue, either on Meta, Discord, or elsewhere. Include any suggested resolutions or suggestions for how we could address this. -->
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000000000000000000000000000000000..3d933dccfb0615ab20589c3359ed5376a964bf8a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,27 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Additional context**
+Add any other context about the problem here. Include device/browser/OS information if it's relevant.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000000000000000000000000000000000..bbcbbe7d61558adde3cbfd0c7a63a67c27ed6d30
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.gitignore b/.gitignore
index 004c052c28034065a537513964057539b6c3f9ce..d665bfb07a3a5d93d1c43b902d214ba456daefa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,13 +9,16 @@
 
 # Docker environment (production)
 docker/env
+# mount mysql volume so that its easy to interact with the database outside of the container. 
+# This also allows persistent database storage
+docker/mysql
+# allow custom docker-compose files as users might have different needs
+docker-compose*.yml
+!docker-compose.yml
 
 # Don't track changes to the docker-compose .env file only in project root
 /.env
 
-# mount mysql volume so that its easy to interact with the database outside of the container. This also allows persistent database storage
-docker/mysql
-
 # Ignore the default SQLite database.
 /db/*.sqlite3
 /db/*.sqlite3-journal
@@ -29,6 +32,7 @@ coverage/
 coverage/*
 
 .idea
+.vscode
 
 test/reports
 
@@ -51,4 +55,11 @@ qpixel-import.tar.gz
 # Ignore Vim stuff.
 *.swp
 
+# Ignore emacs stuff.
+*~
+
 dump.rdb
+
+# Ignore IRB files
+.irbrc
+.irb_history
diff --git a/.rubocop.yml b/.rubocop.yml
index 5e6705c20c0780b84a9ee94fa59cf0560d0488ac..edf12b0c084a844f74f025109c7a6805469aa882 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -4,7 +4,7 @@ require:
   - ./lib/rubocop/path_in_helpers.rb
 
 AllCops:
-  TargetRubyVersion: 2.6
+  TargetRubyVersion: 2.7
   Exclude:
     - 'config/**/*'
     - 'db/**/*'
@@ -43,13 +43,13 @@ Metrics/BlockLength:
 Metrics/BlockNesting:
   Max: 5
 Metrics/ClassLength:
-  Max: 300
+  Max: 350
 Metrics/CyclomaticComplexity:
   Max: 30
 Metrics/MethodLength:
   Max: 60
 Metrics/ModuleLength:
-  Max: 200
+  Max: 250
 Metrics/PerceivedComplexity:
   Enabled: false
 
diff --git a/.sample.irbrc b/.sample.irbrc
new file mode 100644
index 0000000000000000000000000000000000000000..998084f49a298ff40b3935cd8401bc5aa76b4274
--- /dev/null
+++ b/.sample.irbrc
@@ -0,0 +1 @@
+Qpixel.irb! if defined?(Qpixel)
diff --git a/CODE-STANDARDS.md b/CODE-STANDARDS.md
index ad30362a06a80a7ab072867d9db988c2ceca158f..35e2888a922ef5cf27b6683a963dab24870e565e 100644
--- a/CODE-STANDARDS.md
+++ b/CODE-STANDARDS.md
@@ -121,7 +121,7 @@ Pseudo-classes and pseudo-element selectors should appear *after* the main selec
 `@media` and other nested [*at-rules*](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule) should be added to
 the end of the document, preceded by an extra blank line.
 
-See [*landing-page/primary.css @1ca2f671*](https://github.com/codidact/landing-page/blob/1ca2f671/dist/assets/css/primary.css)
+See [*landing-page/dist/assets/css/primary.css @1ca2f671*](https://github.com/codidact/landing-page/blob/1ca2f671/dist/assets/css/primary.css)
 for an example of all of the above.
 
 ### Spacing
@@ -130,9 +130,9 @@ for an example of all of the above.
 - Do not write more than one statement per line.
 
 ### Line breaks
-Rules should be separated by a blank line, except for the two special cases provided in item
-[**#3**](#Order-of-selectors) - namely, an extra blank line is expected between universal selectors and other
-selectors, as well as before nested _at-rules_. As such, these rule groups should be separated by *two* spaces.
+Rules should be separated by a blank line, except for the two special cases provided in
+[Order of selectors](#order-of-selectors) - namely, an extra blank line is expected between universal selectors and
+other selectors, as well as before nested _at-rules_. As such, these rule groups should be separated by *two* spaces.
 
 All properties are written on their own line and end with a semicolon. The closing bracket must appear in its own
 line.
@@ -259,7 +259,7 @@ When referencing external resources (including those local to the domain), do no
 HTTPS access to resources if possible.
 
 Prefer retrieving resources by canonical URIs when possible, i.e. those that do not redirect upon request. Check
-with a command-line tool or a service such as [apitester.com](https://apitester.com/) to be sure.
+with a command-line tool or a service such as [apitester.org](https://apitester.org/app) to be sure.
 
 ```html
 <script type="application/javascript" src="https://codidact.org/assets/product.js"></script>
@@ -379,20 +379,23 @@ When adding an ID or class to reference an element from JavaScript, prefix the v
 
 #### `<a>`
 - If using `target="_blank"` to open links in a new tab, also include `rel="noopener noreferrer"`.
-- If a JS-enabled link is necessary (it normally shouldn't - see note below), prefer `href="#"` over `href="javascript:void(0)"` (and its equivalent `href="javascript:;"`). Please do combine this with `event.preventDefault()` in order to prevent unwanted scrolling and adding of pointless entries to the user's browsing history.
+- If a JS-enabled link is necessary (it normally shouldn't be - see note below), prefer `href="#"` over
+`href="javascript:void(0)"` (and its equivalent `href="javascript:;"`). Please do combine this with
+`event.preventDefault()` in order to prevent unwanted scrolling and adding of pointless entries to the user's browsing
+history.
 
     **Note:** Since the above directive still requires JavaScript to be enabled, the RECOMMENDED first-line
     approach is to either link to an actual page/resource that performs the same expected action, or use a
     `<button>` element styled as a link instead. The JS-enabled link (`<a>`) strategy MUST be reserved for the
     rare cases, if any, where these are not possible - and ideally, they SHOULD be added ("injected") to the page
-    using JavaScript.<sup>[\[1\]](https://stackoverflow.com/a/134957/3258851) [\[2\]](https://stackoverflow.com/a/20215524/3258851)</sup>
+    using JavaScript[^1][^2]
 
 #### `<img>`
 - Use a compressed image format or small file size where possible.
 - Make use of `<picture>`/`srcset` where possible.
 - Load images asynchronously where possible.
 
-#### <h1-6>`
+#### `<h1-6>`
 - Ensure all pages have a level 1 header (`<h1>`) that is not the website name.
 - Pages MUST NOT have more than one `<h1>` element.
 - Use headings in order; style via CSS rather than using a smaller heading level.
@@ -521,7 +524,7 @@ this.dataset = (Object.keys(data).length > 0) ? data : {};
 Note the use of parentheses around the conditional expression - it makes it more obvious at first glance that this
 is a conditional statement. **This is a requirement.**
 
-For very long or deeply indented expressions that exceed the 120-char line length limit ([item 8](#8-line-length)),
+For very long or deeply indented expressions that exceed the [120-char line length limit](#line-length),
 use the following line-break and indenting style:
 
 ```js
@@ -597,4 +600,7 @@ first and then developing features, it can be helpful to create a commit where t
 **Merges and commits to master** _must_ pass the tests every time. The master branch is considered the stable
 channel - anything on there should be suitable for production deployment. Commits should generally not be made
 directly to master - only organization and repository administrators have the ability to, and should avoid doing
-so if at all possible.
\ No newline at end of file
+so if at all possible.
+
+[^1]: [Which 'href' value should I use for JavaScript links, '#' or 'javascript:void(0)'?](https://stackoverflow.com/a/134957/3258851)
+[^2]: [Prevent href='#' link from changing the URL hash](https://stackoverflow.com/a/20215524/3258851)
diff --git a/Gemfile b/Gemfile
index f5bd290e37d02024b04504d730efff6ced73455b..b09b258fd0be445e8d937448b41d0d1193a11a69 100644
--- a/Gemfile
+++ b/Gemfile
@@ -9,18 +9,19 @@ gem 'image_processing', '~> 1.12'
 gem 'jquery-rails', '~> 4.5.0'
 gem 'mysql2', '~> 0.5.4'
 gem 'puma', '~> 5.6'
-gem 'rails', '~> 7.0.0'
-gem 'rails-html-sanitizer', '~> 1.4'
+gem 'rails', '~> 7.0.8'
+gem 'rails-html-sanitizer', '~> 1.6'
 gem 'redis', '~> 4.8'
 gem 'rotp', '~> 6.2'
 gem 'sass-rails', '~> 6.0'
-gem 'sprockets', '~> 4.1'
+gem 'sprockets', '~> 4.1.0'
 gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie'
 gem 'terser', '~> 1.1'
 gem 'tzinfo-data', '~> 1.2022.3'
 
 # Sign in
 gem 'devise', '~> 4.8'
+gem 'devise_saml_authenticatable', '~> 1.9'
 gem 'omniauth', '~> 2.1'
 
 # Markdown support in both directions.
@@ -40,6 +41,7 @@ gem 'will_paginate-bootstrap', '~> 1.0'
 
 # AWS for S3 (image storage) and SES (emails).
 gem 'aws-sdk-s3', '~> 1.61', require: false
+gem 'aws-sdk-sns', '~> 1.72'
 gem 'aws-ses-v4', require: 'aws/ses'
 
 # Task scheduler.
@@ -69,7 +71,7 @@ gem 'net-smtp', '~> 0.3'
 gem 'ruby-progressbar', '~> 1.11'
 
 # Image generation
-gem 'rmagick'
+gem 'rmagick', '~> 5.3'
 
 # Payments. Kinda important, y'know.
 gem 'stripe', '~> 5.55'
@@ -82,6 +84,10 @@ group :test do
   gem 'minitest-ci', '~> 3.4.0'
   gem 'rails-controller-testing', '~> 1.0'
   gem 'term-ansicolor', '~> 1.7'
+
+  gem 'capybara', '~> 3.38'
+  gem 'selenium-webdriver', '~> 4.7'
+  gem 'webdrivers', '~> 5.2'
 end
 
 group :development, :test do
@@ -94,3 +100,5 @@ group :development do
   gem 'spring', '~> 4.0'
   gem 'web-console', '~> 4.2'
 end
+
+gem 'maintenance_tasks', '~> 2.1.1'
diff --git a/Gemfile.lock b/Gemfile.lock
index 4bac246fe5d118dfdf86419a81abbaa128a4c627..c97b4b4aafad38a77a0624ae6388730332979201 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,81 +1,81 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (7.0.4)
-      actionpack (= 7.0.4)
-      activesupport (= 7.0.4)
+    actioncable (7.0.8.7)
+      actionpack (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailbox (7.0.4)
-      actionpack (= 7.0.4)
-      activejob (= 7.0.4)
-      activerecord (= 7.0.4)
-      activestorage (= 7.0.4)
-      activesupport (= 7.0.4)
+    actionmailbox (7.0.8.7)
+      actionpack (= 7.0.8.7)
+      activejob (= 7.0.8.7)
+      activerecord (= 7.0.8.7)
+      activestorage (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       mail (>= 2.7.1)
       net-imap
       net-pop
       net-smtp
-    actionmailer (7.0.4)
-      actionpack (= 7.0.4)
-      actionview (= 7.0.4)
-      activejob (= 7.0.4)
-      activesupport (= 7.0.4)
+    actionmailer (7.0.8.7)
+      actionpack (= 7.0.8.7)
+      actionview (= 7.0.8.7)
+      activejob (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       mail (~> 2.5, >= 2.5.4)
       net-imap
       net-pop
       net-smtp
       rails-dom-testing (~> 2.0)
-    actionpack (7.0.4)
-      actionview (= 7.0.4)
-      activesupport (= 7.0.4)
-      rack (~> 2.0, >= 2.2.0)
+    actionpack (7.0.8.7)
+      actionview (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
+      rack (~> 2.0, >= 2.2.4)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.2.0)
-    actiontext (7.0.4)
-      actionpack (= 7.0.4)
-      activerecord (= 7.0.4)
-      activestorage (= 7.0.4)
-      activesupport (= 7.0.4)
+    actiontext (7.0.8.7)
+      actionpack (= 7.0.8.7)
+      activerecord (= 7.0.8.7)
+      activestorage (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       globalid (>= 0.6.0)
       nokogiri (>= 1.8.5)
-    actionview (7.0.4)
-      activesupport (= 7.0.4)
+    actionview (7.0.8.7)
+      activesupport (= 7.0.8.7)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.1, >= 1.2.0)
-    activejob (7.0.4)
-      activesupport (= 7.0.4)
+    activejob (7.0.8.7)
+      activesupport (= 7.0.8.7)
       globalid (>= 0.3.6)
-    activemodel (7.0.4)
-      activesupport (= 7.0.4)
-    activerecord (7.0.4)
-      activemodel (= 7.0.4)
-      activesupport (= 7.0.4)
-    activestorage (7.0.4)
-      actionpack (= 7.0.4)
-      activejob (= 7.0.4)
-      activerecord (= 7.0.4)
-      activesupport (= 7.0.4)
+    activemodel (7.0.8.7)
+      activesupport (= 7.0.8.7)
+    activerecord (7.0.8.7)
+      activemodel (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
+    activestorage (7.0.8.7)
+      actionpack (= 7.0.8.7)
+      activejob (= 7.0.8.7)
+      activerecord (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       marcel (~> 1.0)
       mini_mime (>= 1.1.0)
-    activesupport (7.0.4)
+    activesupport (7.0.8.7)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
       tzinfo (~> 2.0)
-    addressable (2.8.1)
+    addressable (2.8.6)
       public_suffix (>= 2.0.2, < 6.0)
     ast (2.4.2)
     awesome_print (1.9.2)
-    aws-eventstream (1.2.0)
-    aws-partitions (1.628.0)
-    aws-sdk-core (3.145.0)
-      aws-eventstream (~> 1, >= 1.0.2)
-      aws-partitions (~> 1, >= 1.525.0)
-      aws-sigv4 (~> 1.1)
+    aws-eventstream (1.3.0)
+    aws-partitions (1.908.0)
+    aws-sdk-core (3.191.6)
+      aws-eventstream (~> 1, >= 1.3.0)
+      aws-partitions (~> 1, >= 1.651.0)
+      aws-sigv4 (~> 1.8)
       jmespath (~> 1, >= 1.6.1)
     aws-sdk-kms (1.58.0)
       aws-sdk-core (~> 3, >= 3.127.0)
@@ -84,17 +84,29 @@ GEM
       aws-sdk-core (~> 3, >= 3.127.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.4)
+    aws-sdk-sns (1.72.0)
+      aws-sdk-core (~> 3, >= 3.191.0)
+      aws-sigv4 (~> 1.1)
     aws-ses-v4 (0.8.1)
       builder
       mail (> 2.2.5)
       mime-types
       xml-simple
-    aws-sigv4 (1.5.1)
+    aws-sigv4 (1.8.0)
       aws-eventstream (~> 1, >= 1.0.2)
     bcrypt (3.1.18)
     bindex (0.8.1)
-    builder (3.2.4)
+    builder (3.3.0)
     byebug (11.1.3)
+    capybara (3.38.0)
+      addressable
+      matrix
+      mini_mime (>= 0.1.3)
+      nokogiri (~> 1.8)
+      rack (>= 1.6.0)
+      rack-test (>= 0.6.3)
+      regexp_parser (>= 1.5, < 3.0)
+      xpath (~> 3.2)
     chartkick (4.2.1)
     chronic (0.10.2)
     chunky_png (1.4.0)
@@ -105,8 +117,8 @@ GEM
       coffee-script-source
       execjs
     coffee-script-source (1.12.2)
-    commonmarker (0.23.5)
-    concurrent-ruby (1.1.10)
+    commonmarker (0.23.10)
+    concurrent-ruby (1.3.4)
     counter_culture (3.2.1)
       activerecord (>= 4.2)
       activesupport (>= 4.2)
@@ -117,30 +129,33 @@ GEM
       thor (>= 0.19.4, < 2.0)
       tins (~> 1.6)
     crass (1.0.6)
-    css_parser (1.11.0)
+    css_parser (1.16.0)
       addressable
+    date (3.4.1)
     devise (4.8.1)
       bcrypt (~> 3.0)
       orm_adapter (~> 0.1)
       railties (>= 4.1.0)
       responders
       warden (~> 1.2.3)
+    devise_saml_authenticatable (1.9.0)
+      devise (> 2.0.0)
+      ruby-saml (~> 1.7)
     diffy (3.4.2)
-    digest (3.1.0)
     docile (1.4.0)
     e2mmap (0.1.0)
-    erubi (1.11.0)
+    erubi (1.13.0)
     execjs (2.8.1)
     fastimage (2.2.6)
     ffi (1.15.5)
     flamegraph (0.9.5)
-    globalid (1.0.0)
-      activesupport (>= 5.0)
+    globalid (1.2.1)
+      activesupport (>= 6.1)
     groupdate (6.1.0)
       activesupport (>= 5.2)
     hashie (5.0.0)
     htmlentities (4.3.4)
-    i18n (1.12.0)
+    i18n (1.14.6)
       concurrent-ruby (~> 1.0)
     image_processing (1.12.2)
       mini_magick (>= 4.9.5, < 5)
@@ -149,6 +164,8 @@ GEM
       actionview (>= 5.0.0)
       activesupport (>= 5.0.0)
     jmespath (1.6.1)
+    job-iteration (1.3.6)
+      activejob (>= 5.2)
     jquery-rails (4.5.0)
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
@@ -166,39 +183,44 @@ GEM
     listen (3.7.1)
       rb-fsevent (~> 0.10, >= 0.10.3)
       rb-inotify (~> 0.9, >= 0.9.10)
-    loofah (2.18.0)
+    loofah (2.23.1)
       crass (~> 1.0.2)
-      nokogiri (>= 1.5.9)
-    mail (2.7.1)
+      nokogiri (>= 1.12.0)
+    mail (2.8.1)
       mini_mime (>= 0.1.1)
-    marcel (1.0.2)
+      net-imap
+      net-pop
+      net-smtp
+    maintenance_tasks (2.1.1)
+      actionpack (>= 6.0)
+      activejob (>= 6.0)
+      activerecord (>= 6.0)
+      job-iteration (~> 1.3.6)
+      railties (>= 6.0)
+    marcel (1.0.4)
+    matrix (0.4.2)
     memory_profiler (1.0.0)
-    method_source (1.0.0)
+    method_source (1.1.0)
     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.2)
+    mini_mime (1.1.5)
     minitest (5.16.3)
     minitest-ci (3.4.0)
       minitest (>= 5.0.6)
     mysql2 (0.5.4)
-    net-imap (0.2.3)
-      digest
+    net-imap (0.4.19)
+      date
       net-protocol
-      strscan
-    net-pop (0.1.1)
-      digest
+    net-pop (0.1.2)
       net-protocol
+    net-protocol (0.2.2)
       timeout
-    net-protocol (0.1.3)
-      timeout
-    net-smtp (0.3.1)
-      digest
+    net-smtp (0.4.0)
       net-protocol
-      timeout
-    nio4r (2.5.8)
-    nokogiri (1.13.8-x86_64-linux)
+    nio4r (2.7.3)
+    nokogiri (1.17.1-x86_64-linux)
       racc (~> 1.4)
     omniauth (2.1.0)
       hashie (>= 3.4.6)
@@ -208,6 +230,7 @@ GEM
     parallel (1.22.1)
     parser (3.1.2.1)
       ast (~> 2.4.1)
+    pkg-config (1.5.5)
     premailer (1.16.0)
       addressable
       css_parser (>= 1.6.0)
@@ -215,49 +238,51 @@ GEM
     premailer-rails (1.11.1)
       actionmailer (>= 3)
       premailer (~> 1.7, >= 1.7.9)
-    public_suffix (5.0.0)
-    puma (5.6.5)
+    public_suffix (5.0.4)
+    puma (5.6.9)
       nio4r (~> 2.0)
-    racc (1.6.0)
-    rack (2.2.4)
+    racc (1.8.1)
+    rack (2.2.10)
     rack-mini-profiler (3.0.0)
       rack (>= 1.2.0)
     rack-protection (2.2.2)
       rack
-    rack-test (2.0.2)
+    rack-test (2.1.0)
       rack (>= 1.3)
-    rails (7.0.4)
-      actioncable (= 7.0.4)
-      actionmailbox (= 7.0.4)
-      actionmailer (= 7.0.4)
-      actionpack (= 7.0.4)
-      actiontext (= 7.0.4)
-      actionview (= 7.0.4)
-      activejob (= 7.0.4)
-      activemodel (= 7.0.4)
-      activerecord (= 7.0.4)
-      activestorage (= 7.0.4)
-      activesupport (= 7.0.4)
+    rails (7.0.8.7)
+      actioncable (= 7.0.8.7)
+      actionmailbox (= 7.0.8.7)
+      actionmailer (= 7.0.8.7)
+      actionpack (= 7.0.8.7)
+      actiontext (= 7.0.8.7)
+      actionview (= 7.0.8.7)
+      activejob (= 7.0.8.7)
+      activemodel (= 7.0.8.7)
+      activerecord (= 7.0.8.7)
+      activestorage (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       bundler (>= 1.15.0)
-      railties (= 7.0.4)
+      railties (= 7.0.8.7)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
       actionview (>= 5.0.1.rc1)
       activesupport (>= 5.0.1.rc1)
-    rails-dom-testing (2.0.3)
-      activesupport (>= 4.2.0)
+    rails-dom-testing (2.2.0)
+      activesupport (>= 5.0.0)
+      minitest
       nokogiri (>= 1.6)
-    rails-html-sanitizer (1.4.3)
-      loofah (~> 2.3)
-    railties (7.0.4)
-      actionpack (= 7.0.4)
-      activesupport (= 7.0.4)
+    rails-html-sanitizer (1.6.1)
+      loofah (~> 2.21)
+      nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
+    railties (7.0.8.7)
+      actionpack (= 7.0.8.7)
+      activesupport (= 7.0.8.7)
       method_source
       rake (>= 12.2)
       thor (~> 1.0)
       zeitwerk (~> 2.5)
     rainbow (3.1.1)
-    rake (13.0.6)
+    rake (13.2.1)
     rb-fsevent (0.11.2)
     rb-inotify (0.10.1)
       ffi (~> 1.0)
@@ -268,8 +293,9 @@ GEM
       railties (>= 5.0)
     reverse_markdown (2.1.1)
       nokogiri
-    rexml (3.2.5)
-    rmagick (4.2.6)
+    rexml (3.3.9)
+    rmagick (5.3.0)
+      pkg-config (~> 1.4)
     rotp (6.2.0)
     rqrcode (2.1.2)
       chunky_png (~> 1.0)
@@ -292,8 +318,12 @@ GEM
       rack (>= 1.1)
       rubocop (>= 1.33.0, < 2.0)
     ruby-progressbar (1.11.0)
+    ruby-saml (1.17.0)
+      nokogiri (>= 1.13.10)
+      rexml
     ruby-vips (2.1.4)
       ffi (~> 1.12)
+    rubyzip (2.3.2)
     sass-rails (6.0.0)
       sassc-rails (~> 2.1, >= 2.1.1)
     sassc (2.4.0)
@@ -304,6 +334,10 @@ GEM
       sprockets (> 3.0)
       sprockets-rails
       tilt
+    selenium-webdriver (4.7.1)
+      rexml (~> 3.2, >= 3.2.5)
+      rubyzip (>= 1.2.2, < 3.0)
+      websocket (~> 1.0)
     simplecov (0.16.1)
       docile (~> 1.1)
       json (>= 1.8, < 3)
@@ -319,20 +353,19 @@ GEM
       sprockets (>= 3.0.0)
     stackprof (0.2.21)
     stripe (5.55.0)
-    strscan (3.0.4)
     sync (0.5.0)
     term-ansicolor (1.7.1)
       tins (~> 1.0)
     terser (1.1.12)
       execjs (>= 0.3.0, < 3)
-    thor (1.2.1)
+    thor (1.3.1)
     thwait (0.2.0)
       e2mmap
     tilt (2.0.11)
-    timeout (0.3.0)
+    timeout (0.4.3)
     tins (1.31.1)
       sync
-    tzinfo (2.0.5)
+    tzinfo (2.0.6)
       concurrent-ruby (~> 1.0)
     tzinfo-data (1.2022.3)
       tzinfo (>= 1.0.0)
@@ -344,7 +377,12 @@ GEM
       activemodel (>= 6.0.0)
       bindex (>= 0.4.0)
       railties (>= 6.0.0)
-    websocket-driver (0.7.5)
+    webdrivers (5.2.0)
+      nokogiri (~> 1.6)
+      rubyzip (>= 1.3.0)
+      selenium-webdriver (~> 4.0)
+    websocket (1.2.9)
+    websocket-driver (0.7.6)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.5)
     whenever (1.0.0)
@@ -354,7 +392,9 @@ GEM
       will_paginate (>= 3.0.3)
     xml-simple (1.1.9)
       rexml
-    zeitwerk (2.6.0)
+    xpath (3.2.0)
+      nokogiri (~> 1.8)
+    zeitwerk (2.6.17)
 
 PLATFORMS
   x86_64-linux
@@ -362,14 +402,17 @@ PLATFORMS
 DEPENDENCIES
   awesome_print (~> 1.9)
   aws-sdk-s3 (~> 1.61)
+  aws-sdk-sns (~> 1.72)
   aws-ses-v4
   byebug (~> 11.1)
+  capybara (~> 3.38)
   chartkick (~> 4.2)
   coffee-rails (~> 5.0.0)
   commonmarker (~> 0.23)
   counter_culture (~> 3.2)
   coveralls (~> 0.8)
   devise (~> 4.8)
+  devise_saml_authenticatable (~> 1.9)
   diffy (~> 3.4)
   e2mmap (~> 0.1)
   fastimage (~> 2.2)
@@ -380,6 +423,7 @@ DEPENDENCIES
   jquery-rails (~> 4.5.0)
   letter_opener_web (~> 2.0)
   listen (~> 3.7)
+  maintenance_tasks (~> 2.1.1)
   memory_profiler (~> 1.0)
   minitest (~> 5.16.0)
   minitest-ci (~> 3.4.0)
@@ -389,20 +433,21 @@ DEPENDENCIES
   premailer-rails (~> 1.11)
   puma (~> 5.6)
   rack-mini-profiler (~> 3.0)
-  rails (~> 7.0.0)
+  rails (~> 7.0.8)
   rails-controller-testing (~> 1.0)
-  rails-html-sanitizer (~> 1.4)
+  rails-html-sanitizer (~> 1.6)
   redis (~> 4.8)
   reverse_markdown (~> 2.1)
-  rmagick
+  rmagick (~> 5.3)
   rotp (~> 6.2)
   rqrcode (~> 2.1)
   rubocop (~> 1)
   rubocop-rails (~> 2.15)
   ruby-progressbar (~> 1.11)
   sass-rails (~> 6.0)
+  selenium-webdriver (~> 4.7)
   spring (~> 4.0)
-  sprockets (~> 4.1)
+  sprockets (~> 4.1.0)
   sprockets-rails (~> 3.4)
   stackprof (~> 0.2)
   stripe (~> 5.55)
@@ -411,6 +456,7 @@ DEPENDENCIES
   thwait (~> 0.2)
   tzinfo-data (~> 1.2022.3)
   web-console (~> 4.2)
+  webdrivers (~> 5.2)
   whenever (~> 1.0)
   will_paginate (~> 3.3)
   will_paginate-bootstrap (~> 1.0)
@@ -419,4 +465,4 @@ RUBY VERSION
    ruby 2.7.6p219
 
 BUNDLED WITH
-   2.3.21
+   2.4.13
diff --git a/INSTALLATION.md b/INSTALLATION.md
index 93e42a159ffaa3fad53c1fa1e4f649489e6f179a..c65ebd5e2b1e6011b1dfa7d31a21a2f7b58fb23a 100644
--- a/INSTALLATION.md
+++ b/INSTALLATION.md
@@ -4,7 +4,7 @@ These instructions are for setting up a development instance of QPixel. QPixel i
 built with Ruby on Rails.
 
 In that guide it is assumed that you already have a Unix environment available
-with Ruby  and Bundler installed. WSL works as well. Windows (core) has not been tested.
+with Ruby and Bundler installed. WSL works as well. Windows (core) has not been tested.
 
 For an installation with **Docker** see the README.md in the [docker](docker) folder
 for further instructions.
@@ -13,6 +13,8 @@ If you don't already have Ruby installed, use [RVM](https://rvm.io/) or
 [rbenv](https://github.com/rbenv/rbenv#installation) to install it before following
 these instructions.
 
+QPixel is tested with Ruby 3 (and works with Ruby 2.7 as of December 2022).
+
 ## Prerequisites
 
 For Debian-Based Linux:
@@ -43,7 +45,30 @@ brew install mysql bison openssl mysql-client
 bundle config --global build.mysql2 --with-opt-dir="$(brew --prefix openssl)"
 ```
 
-QPixel requires Ruby 2.7+.
+
+## Environment
+
+The following lists environment variables provided for QPixel customization
+(this section is best-effort, please check for `ENV['<variable name>']`) in source code for the full list of available variables (for Docker-specific variables, see [Docker README](/docker/README.md)):
+
+| Name                              | Value                                                  | Required? | Default                    | Description                                                                                                    |
+| --------------------------------- | ------------------------------------------------------ | --------- | -------------------------- | -------------------------------------------------------------------------------------------------------------- |
+| `BACKTRACE`                       | `<1>`                                                  | no        | -                          | Enables backtrace for libraries (see [backtrace_silencers.rb](/config/initializers/backtrace_silencers.rb))    |
+| `BUNDLE_GEMFILE`                  |                                                        | no        |                            |                                                                                                                |
+| `CONFIRMABLE_ALLOWED_ACCESS_DAYS` | `<number>`                                             | no        | `0`                        | Sets for how long (in days) an unconfirmed account can access the instance                                     |
+| `DRIVER`                          | `<headless_chrome\|chrome\|headless_firefox\|firefox>` | no        | `headless_firefox`         | Sets browser to use when running system tests                                                                  |
+| `MAILER_PROTOCOL`                 | `http\|https`                                          | no        | `https`                    | Sets default URL protocol to use with mailes (f.e., confirmation emails)                                       |
+| `PIDFILE`                         | `<string>`                                             | no        | `tmp/pids/server.pid`      | Sets pidfile (a file where the id of a process is written to) for Puma                                         |
+| `PORT`                            | `<number>`                                             | no        | `3000`                     | Sets the port on which the server will listen for incoming requests                                            |
+| `RAILS_ENV`                       | `<development\|production\|test>`                      | no        | `development`              | Sets the environment to use (see [config/environments](/config/environments/))                                 |
+| `RAILS_MAX_THREADS`               | `<number>`                                             | no        | `5`                        | Sets the maximum number of threads from the internal thread pool to use for requests                           |
+| `RAILS_MIN_THREADS`               | `<number>`                                             | no        | `5`                        | Sets the minimum number of threads from the internal pool to use for requests                                  |
+| `RAILS_SERVE_STATIC_FILES`        | `<boolean>`                                            | no        | -                          |                                                                                                                |
+| `REDIS_URL`                       | `<string>`                                             | no        | `redis://localhost:6379/1` |                                                                                                                |
+| `SECRET_KEY_BASE`                 | `<string>`                                             | yes       | -                          | Sets the secret key for signed cookie verification (can be generated with `rake secret`, used in `production`) |
+| `SEEDS`                           | `<seeds source name>`                                  | no        | -                          | Runs only a specified set of seeds from [db/seeds](/db/seeds/)                                                 |
+| `UPDATE_POSTS`                    | `<boolean>`                                            | no        | -                          | If set to `true`, updates seeded posts when running post seeds                                                 |
+| `WEB_CONCURRENCY`                 | `<number>`                                             | no        | `2`                        |                                                                                                                |
 
 ### Install JS runtime
 
@@ -51,11 +76,27 @@ If you already have Node.JS installed, you can skip this step. If not,
 [download and install it](https://nodejs.org/en/download/) or for example
 `sudo apt install nodejs`.
 
+On Mac with homebrew, `brew install node` .
+
 ### Install Redis
 
 If you haven't already got it, [download and install Redis](https://redis.io/download)
 or for example `sudo apt install redis-server`.
 
+For mac with homebrew, `brew install redis` .
+
+### Install Imagemagick
+
+If you haven't already installed Imagemagick, you'll need to
+[install it for your system](https://imagemagick.org/script/download.php).
+
+If you install Imagemagick from APT on a Debian-based system, you may need to
+also install the `libmagickwand-dev` package.
+
+`sudo apt install libmagick++-dev` should also work.
+
+For Mac with homebrew, `brew install imagemagick` .
+
 ### Install Libvips
 
 If you haven't already installed Libvips, you'll need to [install it for
@@ -64,6 +105,8 @@ your system](https://www.libvips.org/).
 To install libvips from APT on a Debian-based system, use
 `sudo apt install libvips`
 
+For Mac with homebrew, `brew install vips` .
+
 ## Install QPixel
 
 Clone the repository and `cd` into the directory:
@@ -78,7 +121,7 @@ After downloading QPixel, you need to install all the dependencies. For that, yo
 If Ruby complains, that the Bundler hasn't been installed yet, use `gem install bundler` and
 then re-run the above command.
 
-### Setting up the Database
+### Set up the Database
 
 If you weren't asked to set the root MySQL user password during `mysql-server` installation,
 the installation is likely to be using Unix authentication instead. You'll need to sign into
@@ -95,10 +138,12 @@ Copy `config/database.sample.yml` to `config/database.yml` and fill in the corre
 username, and password for your environment. If you've followed these instructions (i.e. you
 have installed MySQL locally), the correct host is `localhost` or `127.0.0.1`.
 
-You'll also need to fill in details for the Redis connection. If you've followed these instructions,
+You will need to set the Redis connection details there too. If you've followed these instructions,
 the sample file should already contain the correct values for you, but if you've customised your
 setup you'll need to correct them.
 
+You'll also need to copy the Active Storage configuration from `config/storage.sample.yml` to `config/storage.yml`.
+
 If you are using MariaDB instead of MySQL, you will need to replace all occurrences of
 `utf8mb4_0900_ai_ci` with `utf8mb4_unicode_ci` in `db/schema.rb`.
 
@@ -109,6 +154,10 @@ Set up the database:
     rails r db/scripts/create_tags_path_view.rb
     rails db:migrate
 
+We also recommend you load the QPixel console extensions for easier development:
+
+    cp .sample.irbrc .irbrc
+
 You'll need to create a Community record and purge the Rails cache before you can seed the database.
 In a Rails console (`rails c`), run:
 
@@ -117,7 +166,7 @@ Community.create(name: 'Dev Community', host: 'localhost:3000')
 Rails.cache.clear
 ```
 
-After that you can call `rails db:seed` to fill the database with necessary seed data, such as settings, help posts and default templates.  (If you are preparing a production deployment, you might choose to edit some of the help seeds first.  See "Help Topics" at the end of this guide.)
+After that you can run `rails db:seed` to fill the database with necessary seed data, such as settings, help posts and default templates. (If you are preparing a production deployment, you might choose to edit some of the help seeds first. The "policy" topics are not included in the initial seed. See "Help Topics" at the end of this guide.)
 
     $ rails db:seed
     Category: Created 2, skipped 0
@@ -129,6 +178,9 @@ Now comes the big moment: You can start the QPixel server for the first time. Ru
 
 Open a web browser and visit your server, which should be running under [http://localhost:3000](http://localhost:3000).
 
+![img/qpixel-dev.png](img/qpixel-dev.png)
+
+
 ### Create administrator account
 
 You can create the first user account in the application through the "Sign up" route.
@@ -150,53 +202,52 @@ While being logged into your administrator account, go to [http://localhost:3000
 Review the settings (if you want; you can change them later) and click "Save and continue" to complete
 setting up the dev server.
 
-### Configure Categories
+## Create a Post
 
-Before you try to create a post we need to configure categories!
-Go to `http://localhost:3000/categories/`
+You can now create your first post. There are character requirements for the
+body and title, and you are required to add at least one tag.
 
-![img/categories.png](img/categories.png)
+![img/create-post.png](img/create-post.png)
 
- Click "edit" for each category and scroll down to see the "Tag Set" field. This
- will be empty on first setup.
+When you've met the length requirements and added a tag, the "Save Post in Q&A" button is enabled and you can click it.
 
-![img/tagset.png](img/tagset.png)
+![img/post.png](img/post.png)
 
-You will need to select a tag set for each category! For example, the Meta category can be
-associated with the "Meta" tag set, and the Q&A category can be associated with "Main"
 
-![img/tagset-selected.png](img/tagset-selected.png)
+## Optional: Single Sign On
 
-Make sure to click save for each one.<br>
-<em>Note:</em> You may need to run `rails db:seed` again.
+Please see our wiki for [detailed instructions](https://github.com/codidact/qpixel/wiki/Setting-up-SAML-Single-Sign-On) on setting up SAML Single Sign-On.
 
-## Create a Post
 
-You should then be able to create a post! There are character requirements for the
-body and title, and you are required at least one tag.
+## Optional: Required Tags
 
-![img/create-post.png](img/create-post.png)
+The special Meta tags (discussion, bug, support, feature-request) are not seeded. (We do not assume that all deployments want to manage user feedback the same way.) You can create tags directly on the Meta Tags page:
 
-And then click to "Save Post in Q&A"
+![img/meta-tags.png](img/meta-tags.png)
+
+Next, edit the Meta category settings:
+
+![img/edit-category.png](img/edit-category.png)
+
+Add the tags to the "Required tags" section:
+
+![img/required-tags.png](img/required-tags.png)
 
-![img/post.png](img/post.png)
 
 ## Optional: Help Topics
 
-If you are running a development server, you might not care a lot about what's in the help.  If you are planning to deploy a server for actual use, however, note that the seeds have some placeholder text you'll want to edit.  We have provided starting points (to be edited) for the following topics:
+If you are running a development server, you might not care a lot about what's in the help. If you are planning to deploy a server for actual use, however, note that the seeds have some placeholder text you'll want to edit. We have provided starting points (to be edited) for the following topics:
 
-- Terms of service (TOS)  
-- Code of conduct (COC)  
-- Privacy policy  
-- Spam policy  
+- Terms of service (TOS)
+- Code of conduct (COC)
+- Privacy policy
+- Spam policy
 - Global (network) FAQ
 
-The corresponding posts in db/seeds/posts have some places marked with "$EDIT" where you will probably want to insert URLs, email addresses, and the like.  We recommend reviewing all of the content in these topics.  There are two ways to edit these topics: in the source files before adding to your database, or through the UI in your running instance.
+The corresponding posts in db/seeds/posts have some places marked with "$EDIT" where you will probably want to insert URLs, email addresses, and the like. We recommend reviewing all of the content in these topics. There are two ways to edit these topics: in the source files before adding to your database, or through the UI in your running instance.
 
 If you edit the seed files, use the following command to add them to your database:
 
 `UPDATE_POSTS=true rails db:seed`
 
-You can also edit the topics in the UI.  As an administrator, you'll see an edit button on help topics when you view them, and the editor provides an option to deploy changes across your network of communities.  Administrators can update help topics in this way at any time.
-
-
+You can also edit the topics in the UI. As an administrator, you'll see an edit button on help topics when you view them, and the editor provides an option to deploy changes across your network of communities. Administrators can update help topics in this way at any time.
diff --git a/app/assets/images/favicon.ico b/app/assets/images/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..07c724156d1b16222e5e433721795642616256f1
Binary files /dev/null and b/app/assets/images/favicon.ico differ
diff --git a/app/assets/images/scoring_table.png b/app/assets/images/scoring_table.png
index e3f703b1b9871144fb5f3d55e9f2abfc16052e75..42c001f31b6b0856589a55f2ba6149ea03cc0cce 100644
Binary files a/app/assets/images/scoring_table.png and b/app/assets/images/scoring_table.png differ
diff --git a/app/assets/images/scoring_table.svg b/app/assets/images/scoring_table.svg
new file mode 100644
index 0000000000000000000000000000000000000000..48835ef0fcaa05613f3c52794e52e40281d9ab49
--- /dev/null
+++ b/app/assets/images/scoring_table.svg
@@ -0,0 +1 @@
+<svg width="2128" height="629" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><defs><clipPath id="clip0"><rect x="536" y="586" width="2128" height="629"/></clipPath><image width="2128" height="629" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img1"></image></defs><g clip-path="url(#clip0)" transform="translate(-536 -586)"><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(536 586)"></use></g></svg>
\ No newline at end of file
diff --git a/app/assets/javascripts/character_count.js b/app/assets/javascripts/character_count.js
index 13287284b9fc1561a52a30c2e79a7dc0bf4a3ee3..d2f827c1ef63226956f230954fedeb1f2b743fbc 100644
--- a/app/assets/javascripts/character_count.js
+++ b/app/assets/javascripts/character_count.js
@@ -1,60 +1,89 @@
 $(() => {
-  const setIcon = (el, icon) => {
+  /**
+   * @typedef {'fa-ellipsis-h'|'fa-times'|'fa-exclamation-circle'|'fa-check'} CounterIcon
+   * @typedef {'info'|'warning'|'error'|'default'} CounterState
+   * @typedef {'valid'|'invalid'} InputValidationState
+   * @typedef {'disabled'|'enabled'} SubmitButtonDisabledState
+   */
+
+  /**
+   * Sets the icon to show before the counter, if any
+   * @param {CounterIcon} icon name of the icon to show
+   */
+  const setCounterIcon = (el, icon) => {
     const icons = ['fa-ellipsis-h', 'fa-check', 'fa-exclamation-circle', 'fa-times'];
     el.removeClass(icons.join(' ')).addClass(icon);
   };
 
-  $(document).on('keyup change paste', '[data-character-count]', ev => {
+  /**
+   * Sets the counter's state
+   * @param {CounterState} state the state to set
+   */
+  const setCounterState = (el, state) => {
+    if (state === 'info') {
+      el.removeClass('has-color-yellow-700 has-color-red-500').addClass('has-color-primary');
+    }
+    else if (state === 'warning') {
+      el.removeClass('has-color-red-500 has-color-primary').addClass('has-color-yellow-700');
+    }
+    else if (state === 'error') {
+      el.removeClass('has-color-yellow-700 has-color-primary').addClass('has-color-red-500');
+    }
+    else {
+      el.removeClass('has-color-red-500 has-color-yellow-700 has-color-primary');
+    }
+  };
+
+  /**
+   * Sets the input's validation state
+   * @param {InputValidationState} state the state to set
+   */
+  const setInputValidationState = (el, state) => {
+    const isInvalid = state === 'invalid';
+    el.toggleClass('failed-validation', isInvalid);
+  };
+
+  /**
+   * Sets the submit button's disabled state
+   * @param {SubmitButtonDisabledState} state the state to set
+   */
+  const setSubmitButtonDisabledState = (el, state) => {
+    const isDisabled = state === 'disabled';
+    el.attr('disabled', isDisabled).toggleClass('is-muted', isDisabled);
+  };
+
+  $(document).on('keyup change paste', '[data-character-count]', (ev) => {
     const $tgt = $(ev.target);
     const $counter = $($tgt.attr('data-character-count'));
-    const $button = $counter.parents('form').find('input[type="submit"]');
+    const $button = $counter.parents('form').find('input[type="submit"],.js-suggested-edit-approve');
     const $count = $counter.find('.js-character-count__count');
     const $icon = $counter.find('.js-character-count__icon');
 
-    const displayAt = parseFloat($counter.attr('data-display-at'));
+    const count = $tgt.val().length;
     const max = parseInt($counter.attr('data-max'), 10);
     const min = parseInt($counter.attr('data-min'), 10);
-    const count = $tgt.val().length;
-    const text = `${count} / ${max}`;
+    const threshold = parseFloat($counter.attr('data-threshold'));
 
-    if (displayAt) {
-      if (count >= displayAt * max) {
-        $counter.removeClass('hide');
-      }
-      else {
-        $counter.addClass('hide');
-      }
-    }
+    const gtnMax = count > max;
+    const ltnMin = count < min;
+    const gteThreshold = count >= threshold * max;
 
-    if (count > max) {
-      $counter.removeClass('has-color-yellow-700 has-color-primary').addClass('has-color-red-500');
-      setIcon($icon, 'fa-times');
-      if ($button) {
-        $button.attr('disabled', true).addClass('is-muted');
-      }
-    }
-    else if (count > 0.75 * max) {
-      $counter.removeClass('has-color-red-500 has-color-primary').addClass('has-color-yellow-700');
-      setIcon($icon, 'fa-exclamation-circle');
-      if ($button) {
-        $button.attr('disabled', false).removeClass('is-muted');
-      }
-    }
-    else if (min && count < min) {
-      $counter.removeClass('has-color-yellow-700 has-color-red-500').addClass('has-color-primary');
-      setIcon($icon, 'fa-ellipsis-h');
-      if ($button) {
-        $button.attr('disabled', true).addClass('is-muted');
-      }
-      $tgt.addClass('failed-validation');
-    }
-    else {
-      $counter.removeClass('has-color-red-500 has-color-yellow-700 has-color-primary');
-      setIcon($icon, 'fa-check');
-      if ($button) {
-        $button.attr('disabled', false).removeClass('is-muted');
-      }
-      $tgt.removeClass('failed-validation');
+    const text = `${count} / ${ltnMin ? min : max}`;
+    
+    if (gtnMax || ltnMin) {
+      setCounterState($counter, 'error');
+      setCounterIcon($icon, 'fa-times');
+      setSubmitButtonDisabledState($button, 'disabled');
+      setInputValidationState($tgt, 'invalid');
+    } else if (gteThreshold) {
+      setCounterState($counter, 'warning');
+      setCounterIcon($icon, 'fa-exclamation-circle');
+      setSubmitButtonDisabledState($button, 'enabled');
+    } else {
+      setCounterState($counter, 'default');
+      setCounterIcon($icon, 'fa-check');
+      setSubmitButtonDisabledState($button, 'enabled');
+      setInputValidationState($tgt, 'valid');
     }
 
     $count.text(text);
diff --git a/app/assets/javascripts/codeblocks.js b/app/assets/javascripts/codeblocks.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2f0db722a1e214bd74c1b6a869891a0d594e611
--- /dev/null
+++ b/app/assets/javascripts/codeblocks.js
@@ -0,0 +1,16 @@
+$(() => {
+  $(".post--content pre > code")
+    .parent()
+    .each(function() {
+      const content = $(this).text()
+      $(this)
+        .wrap('<div style="position:relative;"></div>')
+        .parent()
+        .prepend($('<button class="copy-button button is-muted is-outlined has-margin-2">Copy</button>')
+          .click(function () {
+            navigator.clipboard.writeText(content);
+            $(this).text('Copied!');
+            setTimeout(() => { $(this).text('Copy'); }, 2000);
+          }))
+  });
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/comments.js b/app/assets/javascripts/comments.js
index 508de72d6ca2e88ec2fa13c0be37c4344e71fa2d..b2af26bf78f71ee12acd2d0eeb5dcd365cd3aefd 100644
--- a/app/assets/javascripts/comments.js
+++ b/app/assets/javascripts/comments.js
@@ -77,7 +77,10 @@ $(() => {
     const $tgt = $(evt.target);
     const $comment = $tgt.parents('.comment');
     const $commentBody = $comment.find('.comment--body');
+    const $thread = $comment.parents('.thread');
     const commentId = $comment.attr('data-id');
+    const postId = $thread.attr('data-post');
+    const threadId = $thread.attr('data-thread');
     const originalComment = $commentBody.clone();
 
     const resp = await fetch(`/comments/${commentId}`, {
@@ -89,7 +92,7 @@ $(() => {
 
     const formTemplate = `<form action="/comments/${commentId}/edit" method="POST" class="comment-edit-form" data-remote="true">
       <label for="comment-content" class="form-element">Comment body:</label>
-      <textarea id="comment-content" rows="6" class="form-element is-small" data-character-count=".js-character-count-comment-body" name="comment[content]">${content}</textarea>
+      <textarea id="comment-content" rows="6" class="form-element is-small" data-thread="${threadId}" data-post="${postId}" data-character-count=".js-character-count-comment-body" name="comment[content]">${content}</textarea>
       <input type="submit" class="button is-muted is-filled" value="Update comment" />
       <input type="button" name="js-discard-edit" data-comment-id="${commentId}" value="Discard Edit" class="button is-danger is-outlined js-discard-edit" />
       <span class="has-float-right has-font-size-caption js-character-count-comment-body"
@@ -101,6 +104,8 @@ $(() => {
 
     $commentBody.html(formTemplate);
 
+    $commentBody.find(`#comment-content`).on('keyup', pingable_popup);
+
     $(`.js-discard-edit[data-comment-id="${commentId}"]`).click(() => {
       $commentBody.html(originalComment.html());
     });
@@ -195,7 +200,9 @@ $(() => {
   });
 
   const pingable = {};
-  $(document).on('keyup', '.js-comment-field', async ev => {
+  $(document).on('keyup', '.js-comment-field', pingable_popup);
+
+  async function pingable_popup(ev) {
     if (QPixel.Popup.isSpecialKey(ev.keyCode)) {
       return;
     }
@@ -242,7 +249,7 @@ $(() => {
     else {
       QPixel.Popup.destroyAll();
     }
-  });
+  }
 
   $('.js-new-thread-link').on('click', async ev => {
     ev.preventDefault();
diff --git a/app/assets/javascripts/embed.js b/app/assets/javascripts/embed.js
index f8a6547e1114bb0e28fbd63a4b9ac9c703d6ecf4..5797df56b5eec26c03946ec4f5f86dd36e1755d8 100644
--- a/app/assets/javascripts/embed.js
+++ b/app/assets/javascripts/embed.js
@@ -10,9 +10,11 @@ $(() => {
     // Only embed raw YT links, i.e. not [text](link), only [link](link)
     if ((href.startsWith('https://youtube.com') || href.startsWith('https://www.youtube.com')) && $tgt.text() === href) {
       const videoId = /v=([^$&]+)/.exec(href);
-      $tgt.after(`<iframe width="100%" height="380" src="https://www.youtube-nocookie.com/embed/${videoId[1]}" frameborder="0" allowfullscreen
-                          allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></iframe>`);
-      $tgt.remove();
+      if (videoId) {
+        $tgt.after(`<iframe width="100%" height="380" src="https://www.youtube-nocookie.com/embed/${videoId[1]}" frameborder="0" allowfullscreen
+                            allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></iframe>`);
+        $tgt.remove();
+      }
     }
 
     // Likewise, only raw Spotify links
diff --git a/app/assets/javascripts/filters.js b/app/assets/javascripts/filters.js
new file mode 100644
index 0000000000000000000000000000000000000000..b8b8d63e1145a59dd133b7196992738c805ff196
--- /dev/null
+++ b/app/assets/javascripts/filters.js
@@ -0,0 +1,148 @@
+$(() => {
+  $('.js-filter-select').each(async (_, el) => {
+    const $select = $(el);
+    const $form = $select.closest('form');
+    const $formFilters = $form.find('.form--filter');
+    const $saveButton = $form.find('.filter-save');
+    const $isDefaultCheckbox = $form.find('.filter-is-default');
+    const categoryId = $isDefaultCheckbox.val();
+    let defaultFilter = await QPixel.defaultFilter(categoryId);
+    const $deleteButton = $form.find('.filter-delete');
+
+    // Enables/Disables Save & Delete buttons programatically
+    async function computeEnables() {
+      const filters = await QPixel.filters();
+      const filterName = $select.val();
+
+      // Nothing set
+      if (!filterName) {
+        $saveButton.prop('disabled', true);
+        $deleteButton.prop('disabled', true);
+        return;
+      }
+
+      const filter = filters[filterName]
+
+      // New filter
+      if (!filter) {
+        $saveButton.prop('disabled', false);
+        $deleteButton.prop('disabled', true);
+        return;
+      }
+
+      // Not a new filter
+      $deleteButton.prop('disabled', filter.system);
+
+      const hasChanges = [...$formFilters].some(el => {
+        const filterValue = filter[el.dataset.name];
+        let elValue = $(el).val();
+        if (filterValue?.constructor == Array) {
+          elValue = elValue ?? [];
+          return filterValue.length != elValue.length || filterValue.some((v, i) => v[1] != elValue[i]);
+        }
+        else {
+          return filterValue ? filterValue != elValue : elValue;
+        }
+      });
+      const defaultStatusChanged = $isDefaultCheckbox.prop('checked') != (defaultFilter === $select.val());
+      $saveButton.prop('disabled', !defaultStatusChanged && (filter.system || !hasChanges));
+    }
+
+    async function initializeSelect() {
+      defaultFilter = await QPixel.defaultFilter(categoryId);
+      $isDefaultCheckbox.prop('checked', defaultFilter === $select.val());
+      const filters = await QPixel.filters();
+
+      function template(option) {
+        if (option.id == '') { return 'Default'; }
+
+        const filter = filters[option.id];
+        const name = `<span>${option.text}</span>`;
+        const systemIndicator = filter?.system
+          ? ' <span has-font-size-caption">(System)</span>'
+          : '';
+        const newIndicator = !filter
+          ? ' <span has-font-size-caption">(New)</span>'
+          : '';
+        return $(name + systemIndicator + newIndicator);
+      }
+
+      // Clear out any old options
+      $select.children().filter((_, option) => option.value && !filters[option.value]).detach();
+      $select.select2({
+        data: Object.keys(filters),
+        tags: true,
+
+        templateResult: template,
+        templateSelection: template
+      }).on('select2:select', async evt => {
+        const filterName = evt.params.data.id;
+        const preset = filters[filterName];
+
+        $isDefaultCheckbox.prop('checked', defaultFilter === $select.val());
+        computeEnables();
+
+        // Name is not one of the presets, i.e user is creating a new preset
+        if (!preset) {
+          return;
+        }
+
+        for (const [name, value] of Object.entries(preset)) {
+          const $el = $form.find(`.form--filter[data-name=${name}]`);
+          if (value?.constructor == Array) {
+            $el.val(null);
+            for (const val of value) {
+              $el.append(new Option(val[0], val[1], false, true));
+            }
+            $el.trigger('change');
+          } else {
+            $el.val(value).trigger('change');
+          }
+        }
+      });
+      computeEnables();
+    }
+
+    initializeSelect();
+
+    // Enable saving when the filter is changed
+    $formFilters.on('change', computeEnables);
+    $isDefaultCheckbox.on('change', computeEnables);
+
+    async function saveFilter() {
+      if (!$form[0].reportValidity()) { return; }
+
+      const filter = {};
+
+      for (const el of $formFilters) {
+        filter[el.dataset.name] = $(el).val();
+      }
+
+      await QPixel.setFilter($select.val(), filter, categoryId, $isDefaultCheckbox.prop('checked'));
+      defaultFilter = await QPixel.defaultFilter(categoryId);
+
+      // Reinitialize to get new options
+      await initializeSelect();
+    }
+
+    $saveButton.on('click', saveFilter);
+
+    function clear() {
+      $select.val(null).trigger('change');
+      $form.find('.form--filter').val(null).trigger('change');
+      $isDefaultCheckbox.prop('checked', false);
+      computeEnables();
+    }
+
+    $deleteButton?.on('click', async evt => {
+      if (confirm(`Are you sure you want to delete ${$select.val()}?`)) {
+        await QPixel.deleteFilter($select.val());
+        // Reinitialize to get new options
+        await initializeSelect();
+        clear();
+      }
+    });
+
+    $form.find('.filter-clear').on('click', clear);
+  });
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/flags.js b/app/assets/javascripts/flags.js
index 68ff6e14e3c20a378e034790707018bd6b99e2c8..dba93f7ec1d0a977a4bcbdc015174eb287410063 100644
--- a/app/assets/javascripts/flags.js
+++ b/app/assets/javascripts/flags.js
@@ -28,9 +28,9 @@ $(() => {
       'reason': $(`#flag-post-${postId}`).val()
     };
 
-    if (requiresDetails && data['reason'].length < 15) {
+    if (requiresDetails && data['reason'].length < 1) {
       QPixel.createNotification('danger',
-                                'Details are required for this flag type - please enter at least 15 characters.');
+                                'Details are required for this flag type - please enter a message.');
       return;
     }
 
@@ -50,7 +50,7 @@ $(() => {
           const messages = {
             comment: `<strong>Thanks!</strong> Your flag has been added as a comment for the author to review.`
           };
-          const defaultMessage = `<strong>Thanks!</strong> A moderator will review your flag.`;
+          const defaultMessage = `<strong>Thanks!</strong> We will review your flag.`;
           QPixel.createNotification('success', messages[responseType] || defaultMessage);
           $(`#flag-post-${postId}`).val('');
         }
diff --git a/app/assets/javascripts/keyboard_tools.js b/app/assets/javascripts/keyboard_tools.js
index 3ae4034cea8b14c70dd79cb516a15e9cd29751d8..5e7d08e99ac5e6ea5a4ba1d3a617b6ca4c665d32 100644
--- a/app/assets/javascripts/keyboard_tools.js
+++ b/app/assets/javascripts/keyboard_tools.js
@@ -77,8 +77,27 @@ $(() => {
       }
     });
 
+    /**
+     * Checks common modifier states on a given keyboard event
+     * @param {KeyboardEvent} e
+     * @returns {boolean}
+     */
+    const getModifierState = (e) => {
+      return !!e.altKey || !!e.ctrlKey || !!e.metaKey || !!e.shiftKey;
+    };
+
+    /**
+     * Handles the "home" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function homeMenu(e) {
-      if (e.key === "?") {
+      const isHelp = e.key === "?";
+
+      if (!isHelp && getModifierState(e)) {
+        return;
+      }
+
+      if (isHelp) {
         _CodidactKeyboard.dialog(
           'Codidact Keyboard Shortcuts\n' +
           '===========================\n' +
@@ -156,7 +175,15 @@ $(() => {
       }
     }
 
+    /**
+     * Handles "goto" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function gotoMenu(e) {
+      if (getModifierState(e)) {
+        return;
+      }
+
       if (e.key === 'm') {
         window.location.href = '/';
       } else if (e.key === 'u') {
@@ -208,7 +235,15 @@ $(() => {
       }
     }
 
+    /**
+     * Handles the "goto/category" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function categoryMenu(e) {
+      if (getModifierState(e)) {
+        return;
+      }
+
       const number = parseInt(e.key);
       if (!isNaN(number)) {
         const data = _CodidactKeyboard.categories();
@@ -219,7 +254,15 @@ $(() => {
       }
     }
 
+    /**
+     * Handles the "goto/category-tags" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function categoryTagsMenu(e) {
+      if (getModifierState(e)) {
+        return;
+      }
+
       const number = parseInt(e.key);
       if (!isNaN(number)) {
         const data = Object.entries(_CodidactKeyboard.categories());
@@ -229,7 +272,15 @@ $(() => {
       }
     }
 
+    /**
+     * Handles the "goto/category-edits" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function categorySuggestedEditsMenu(e) {
+      if (getModifierState(e)) {
+        return;
+      }
+
       const number = parseInt(e.key);
       if (!isNaN(number)) {
         const data = Object.entries(_CodidactKeyboard.categories());
@@ -239,7 +290,15 @@ $(() => {
       }
     }
 
+    /**
+     * Handles the "tools" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function toolsMenu(e) {
+      if (getModifierState(e)) {
+        return;
+      }
+
       if (e.key === 'e') {
         window.location.href = $(_CodidactKeyboard.selectedItem).find('.tools--item i.fa.fa-pencil-alt').parent().attr("href");
       } else if (e.key === 'h') {
@@ -276,7 +335,15 @@ $(() => {
 
     }
 
+    /**
+     * Handles the "tools/vote" keyboard state
+     * @param {KeyboardEvent} e
+     */
     function voteMenu(e) {
+      if (getModifierState(e)) {
+        return;
+      }
+
       if (e.key === 'u') {
         const cl = $(_CodidactKeyboard.selectedItem).find('.vote-button[data-vote-type="1"]');
         cl.click();
diff --git a/app/assets/javascripts/markdown.js b/app/assets/javascripts/markdown.js
index 1166a69767bd968ea2fd2645136b1a5df2d08615..c3173ec907d22d7e57e937673a5cfdbdb5dc362e 100644
--- a/app/assets/javascripts/markdown.js
+++ b/app/assets/javascripts/markdown.js
@@ -30,7 +30,8 @@ $(() => {
       numbered: ['\n 1. ', null],
       heading: ['\n# ', null],
       hr: ['\n\n-----\n\n', null],
-      table: ['\n\n| Title1 | Title2 |\n|- | - |\n| row1_1 | row1_2 |\n\n', null]
+      table: ['\n\n| Title1 | Title2 |\n|- | - |\n| row1_1 | row1_2 |\n\n', null],
+      mathjax: ['$', '$']
     };
 
     if (Object.keys(actions).indexOf(action) !== -1) {
@@ -117,7 +118,7 @@ $(() => {
 
   QPixel.addPrePostValidation(text => {
     // This regex catches Markdown images with no or default alt text.
-    const altRegex = /!\[(?:Image alt text)?\](?:\(.+(?!\\\))\)|\[.+(?!\\\])\])/gi;
+    const altRegex = /!\[(?:Image_alt_text)?\](?:\(.+(?!\\\))\)|\[.+(?!\\\])\])/gi;
     if (text.match(altRegex)) {
       const message = `It looks like you're posting an image with no alt text. Alt text is important for ` +
                       `accessibility. Consider adding alt text to the images in your post - ` +
diff --git a/app/assets/javascripts/notifications.js b/app/assets/javascripts/notifications.js
index 269a3ff5953268488ccea9c093fc132acca0ce51..db8c6dec2c71de54e5ea8cd77163f37a7c62b681 100644
--- a/app/assets/javascripts/notifications.js
+++ b/app/assets/javascripts/notifications.js
@@ -8,7 +8,7 @@ $(() => {
                 <span data-livestamp="${notification.created_at}">${notification.created_at}</span>
             </div>
             <p><a href="${notification.link}" data-id="${notification.id}"
-                  class="h-fw-bold is-not-underlined ${notification.is_read ? 'read' : ''}">${notification.content}</a></p>
+                  class="h-fw-bold is-not-underlined ${notification.is_read ? 'read' : ''} notification-link">${notification.content}</a></p>
             <p class="has-font-size-caption"><a href="javascript:void(0)" data-notif-id="${notification.id}" class="js-notification-toggle">
                 <i class="fas fa-${notification.is_read ? 'envelope' : 'envelope-open'}"></i>
                 mark ${notification.is_read ? 'unread' : 'read'}
@@ -67,8 +67,6 @@ $(() => {
         const item = $(makeNotification(notification));
         $inboxContainer.append(item);
       });
-  
-      $inboxContainer.append(`<a href="/users/me/notifications" class="button is-muted is-small">See all your notifications &raquo;</a>`);
     }
   });
 
@@ -122,4 +120,8 @@ $(() => {
     const change = data.notification.is_read ? -1 : +1;
     changeInboxCount(change);
   });
+
+  $(document).on('click', '.notification-link', async ev => {
+    $(ev.target).parents('.inbox').removeClass('is-active');
+  });
 });
\ No newline at end of file
diff --git a/app/assets/javascripts/post_histories.js b/app/assets/javascripts/post_histories.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d8c7d9855a7af12b1b8d0d68101f59ae4e73b50
--- /dev/null
+++ b/app/assets/javascripts/post_histories.js
@@ -0,0 +1,9 @@
+$(() => {
+  const openRelevantEditOnly = () => {
+    $("details.history-event").prop('open', false);
+    $(location.hash).prop('open', true);
+  }
+
+  window.addEventListener("hashchange", openRelevantEditOnly);
+  openRelevantEditOnly();
+});
diff --git a/app/assets/javascripts/posts.js b/app/assets/javascripts/posts.js
index 2bdc896ad4b9e20453fdb9f0e6ad62c8a96aa2f1..2b0210eede719be8b0147aee5a43f85ff57e7097 100644
--- a/app/assets/javascripts/posts.js
+++ b/app/assets/javascripts/posts.js
@@ -4,15 +4,30 @@ const ALLOWED_TAGS = ['a', 'p', 'span', 'b', 'i', 'em', 'strong', 'hr', 'h1', 'h
   'summary', 'ins', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 's'];
 const ALLOWED_ATTR = ['id', 'class', 'href', 'title', 'src', 'height', 'width', 'alt', 'rowspan', 'colspan', 'lang',
   'start', 'dir'];
+// this is a list of constructors to ignore even if they are removed by sanitizer (mostly comments & body)
+const IGNORE_UNSUPPORTED = [Comment, HTMLBodyElement];
 
 $(() => {
+  DOMPurify.addHook("uponSanitizeAttribute", (node, event) => {
+    const rowspan = node.getAttribute("rowspan");
+    const colspan = node.getAttribute("colspan");
+
+    if (rowspan && Number.isNaN(+rowspan)) {
+      event.keepAttr = false;
+    }
+
+    if (colspan && Number.isNaN(+colspan)) {
+      event.keepAttr = false;
+    }
+  });
+
   const $uploadForm = $('.js-upload-form');
 
   const stringInsert = (str, idx, insert) => str.slice(0, idx) + insert + str.slice(idx);
 
   const placeholder = "![Uploading, please wait...]()";
 
-  $uploadForm.find('input[type="file"]').on('change', async evt => {
+  $uploadForm.find('input[type="file"]').on('change', async (evt) => {
     const $postField = $('.js-post-field');
     const postText = $postField.val();
     const cursorPos = $postField[0].selectionStart;
@@ -24,7 +39,7 @@ $(() => {
     $form.submit();
   });
 
-  $uploadForm.on('submit', async evt => {
+  $uploadForm.on('submit', async (evt) => {
     evt.preventDefault();
 
     const $tgt = $(evt.target);
@@ -63,7 +78,7 @@ $(() => {
 
     const $postField = $('.js-post-field');
     const postText = $postField.val();
-    $postField.val(postText.replace(placeholder, `![Image alt text](${data.link})`));
+    $postField.val(postText.replace(placeholder, `![Image_alt_text](${data.link})`));
     $tgt.parents('.modal').removeClass('is-active');
   });
 
@@ -80,7 +95,24 @@ $(() => {
     tags: true
   });
 
-  const saveDraft = async (postText, $field, manual = false) => {
+  /**
+   * @typedef {{
+   *  body: string
+   *  comment?: string
+   *  excerpt?: string
+   *  license?: string
+   *  tag_name?: string
+   *  tags?: string[]
+   *  title?: string
+   * }} PostDraft
+   * 
+   * Attempts to save a post draft
+   * @param {PostDraft} draft post draft
+   * @param {JQuery<Element>} $field body input element
+   * @param {boolean} [manual] whether manual draft saving is enabled
+   * @returns {Promise<void>}
+   */
+  const saveDraft = async (draft, $field, manual = false) => {
     const autosavePref = await QPixel.preference('autosave', true);
     if (autosavePref !== 'on' && !manual) {
       return;
@@ -93,23 +125,63 @@ $(() => {
         'X-CSRF-Token': QPixel.csrfToken(),
         'Content-Type': 'application/json'
       },
-      body: JSON.stringify({
-        post: postText,
-        path: location.pathname
-      })
+      body: JSON.stringify({ ...draft, path: location.pathname })
     });
+
     if (resp.status === 200) {
-      const $el = $(`<span>&middot; <span class="has-color-green-600">draft saved</span></span>`);
-      $field.parents('.widget').find('.js-post-field-footer').append($el);
-      $el.fadeOut(1500, function () { $(this).remove() });
+      const $statusEl = $field.parents('.widget').find('.js-post-draft-status');
+
+      $statusEl.removeClass('transparent');
+
+      setTimeout(() => {
+        $statusEl.addClass('transparent');
+      }, 1500);
     }
   };
 
-  $('.js-save-draft').on('click', async ev => {
-    const $tgt = $(ev.target);
-    const $field = $tgt.parents('.widget').find('.js-post-field');
-    const postText = $field.val();
-    await saveDraft(postText, $field, true);
+  /**
+   * Extracts draft info from a given target
+   * @param {EventTarget} target post input field or "save draft" button
+   * @returns {{ draft: PostDraft, field: any }}
+   */
+  const parseDraft = (target) => {
+    const $tgt = $(target);
+    const $form = $tgt.parents('form');
+
+    const $bodyField = $form.find('.js-post-field');
+    const $licenseField = $form.find('.js-license-select');
+    const $excerptField = $form.find('.js-tag-excerpt');
+    
+    const $tagsField = $form.find('#post_tags_cache');
+    const $titleField = $form.find('#post_title');
+    const $commentField = $form.find('#edit_comment');
+    const $tagNameField = $form.find('#tag_name');
+
+    const bodyText = $bodyField.val();
+    const commentText = $commentField.val();
+    const excerptText = $excerptField.val();
+    const license = $licenseField.val();
+    const tags = $tagsField.val();
+    const titleText = $titleField.val();
+    const tagName = $tagNameField.val();
+
+    /** @type {PostDraft} */
+    const draft = {
+      body: bodyText,
+      comment: commentText,
+      excerpt: excerptText,
+      license: license,
+      tags: tags,
+      tag_name: tagName,
+      title: titleText,
+    };
+
+    return { draft, field: $bodyField };
+  };
+
+  $('.js-save-draft').on('click', async (ev) => {
+    const { draft, field } = parseDraft(ev.target);
+    await saveDraft(draft, field, true);
   });
 
   let featureTimeout = null;
@@ -117,7 +189,27 @@ $(() => {
 
   const postFields = $('.post-field');
 
-  postFields.on('paste', async evt => {
+  const draftFieldsSelectors = [
+    '.js-post-field',
+    '.js-license-select',
+    '.js-tag-excerpt',
+    '#edit_comment',
+    '#post_tags_cache',
+    '#post_title',
+    '#tag_parent_id',
+    '#tag_name',
+  ];
+
+  // TODO: consider merging with post fields
+  $(draftFieldsSelectors.join(', ')).on('keyup change', (ev) => {
+    clearTimeout(draftTimeout);
+    draftTimeout = setTimeout(() => {
+      const { draft, field } = parseDraft(ev.target);
+      saveDraft(draft, field);
+    }, 1000);
+  });
+
+  postFields.on('paste', async (evt) => {
     if (evt.originalEvent.clipboardData.files.length > 0) {
       const $fileInput = $uploadForm.find('input[type="file"]');
       $fileInput[0].files = evt.originalEvent.clipboardData.files;
@@ -125,52 +217,71 @@ $(() => {
     }
   });
 
-  postFields.on('focus keyup paste change markdown', evt => {
-    const $tgt = $(evt.target);
-
-    if (!window.converter) {
-      window.converter = window.markdownit({
-        html: true,
-        breaks: false,
-        linkify: true
-      });
-      window.converter.use(window.markdownitFootnote);
-      window.converter.use(window.latexEscape);
-    }
-    window.setTimeout(() => {
-      const converter = window.converter;
+  postFields.on('focus keyup paste change markdown', (() => {
+    let previous = null;
+    return evt => {
+      const $tgt = $(evt.target);
       const text = $(evt.target).val();
-      const unsafe_html = converter.render(text);
-      const html = DOMPurify.sanitize(unsafe_html, {
-        USE_PROFILES: { html: true },
-        ALLOWED_TAGS,
-        ALLOWED_ATTR
-      });
-      $tgt.parents('.form-group').siblings('.post-preview').html(html);
-      $tgt.parents('form').find('.js-post-html[name="__html"]').val(html + '<!-- g: js, mdit -->');
-    }, 0);
-
-    if (featureTimeout) {
-      clearTimeout(featureTimeout);
-    }
-
-    featureTimeout = setTimeout(() => {
-      if (window['MathJax']) {
-        MathJax.typeset();
+      // Don't bother re-rendering if nothing's changed
+      if (text === previous) { return; }
+      previous = text;
+      if (!window.converter) {
+        window.converter = window.markdownit({
+          html: true,
+          breaks: false,
+          linkify: true
+        });
+        window.converter.use(window.markdownitFootnote);
+        window.converter.use(window.latexEscape);
       }
-      if (window['hljs']) {
-        hljs.highlightAll();
+      window.setTimeout(() => {
+        const converter = window.converter;
+        const unsafe_html = converter.render(text);
+        const html = DOMPurify.sanitize(unsafe_html, {
+          ALLOWED_TAGS,
+          ALLOWED_ATTR
+        });
+
+        const removedElements = [...new Set(DOMPurify.removed
+          .filter(entry => entry.element && !IGNORE_UNSUPPORTED.some((ctor) => entry.element instanceof ctor))
+          .map(entry => entry.element.localName))];
+
+        const removedAttributes = [...new Set(DOMPurify.removed
+          .filter(entry => entry.attribute)
+          .map(entry => [
+            entry.attribute.name + (entry.attribute.value ? `='${entry.attribute.value}'` : ''),
+            entry.from.localName
+          ]))]
+
+        $tgt.parents('form')
+          .find('.rejected-elements')
+          .toggleClass('hide', removedElements.length === 0 && removedAttributes.length === 0)
+          .find('ul')
+          .empty()
+          .append(
+            removedElements.map(name => $(`<li><code>&lt;${name}&gt;</code></li>`)),
+            removedAttributes.map(([attr, elName]) => $(`<li><code>${attr}</code> (in <code>&lt;${elName}&gt;</code>)</li>`)));
+
+        $tgt.parents('.form-group').siblings('.post-preview').html(html);
+        $tgt.parents('form').find('.js-post-html[name="__html"]').val(html + '<!-- g: js, mdit -->');
+      }, 0);
+
+      if (featureTimeout) {
+        clearTimeout(featureTimeout);
       }
-    }, 1000);
-  }).on('keyup', ev => {
-    clearTimeout(draftTimeout);
-    const text = $(ev.target).val();
-    draftTimeout = setTimeout(() => {
-      saveDraft(text, $(ev.target));
-    }, 3000);
-  }).trigger('markdown');
 
-  postFields.parents('form').on('submit', async ev => {
+      featureTimeout = setTimeout(() => {
+        if (window['MathJax']) {
+          MathJax.typeset();
+        }
+        if (window['hljs']) {
+          hljs.highlightAll();
+        }
+      }, 1000);
+    };
+  })()).trigger('markdown');
+
+  postFields.parents('form').on('submit', async (ev) => {
     const $tgt = $(ev.target);
     const field = $tgt.find('.post-field');
 
@@ -252,24 +363,64 @@ $(() => {
   $('.js-draft-loaded').each((i, e) => {
     $(e).parents('.widget').after(`<div class="notice is-info has-font-size-caption">
       <i class="fas fa-exclamation-circle"></i> <strong>Draft loaded.</strong>
-      You've edited this post before but didn't save it. We loaded your edits here for you.
+      You had edited this before but haven't saved it. We loaded the edits for you.
     </div>`);
   });
 
-  $('.js-permalink > .js-text').text('Copy Link');
-  $('.js-permalink').on('click', ev => {
-    ev.preventDefault();
+  const setCopyButtonState = ($button, state) => {
+    const isSuccess = state === "success";
+    const buttonClass = isSuccess ? "is-green" : "is-danger";
+    const iconClass = isSuccess ? "fa-check" : "fa-times";
+
+    const $icon = $button.find(".fa");
+
+    $icon.removeClass("fa-copy");
+    $icon.addClass(iconClass);
+    $button.addClass(buttonClass);
 
-    const $tgt = $(ev.target).is('a') ? $(ev.target) : $(ev.target).parents('a');
-    const link = $tgt.attr('href');
-    navigator.clipboard.writeText(link);
-    $tgt.find('.js-text').text('Copied!');
     setTimeout(() => {
-      $tgt.find('.js-text').text('Copy Link');
-    }, 1000);
+      $icon.removeClass(iconClass);
+      $button.removeClass(buttonClass);
+      $icon.addClass("fa-copy");
+    }, 1e3);
+  };
+
+  $(".js-permalink-trigger").removeAttr("hidden");
+
+  $(".js-permalink-copy").on("click", async (ev) => {
+    ev.preventDefault();
+
+    const $tgt = $(ev.target);
+
+    const $button = $tgt.hasClass("js-permalink-copy")
+      ? $tgt
+      : $tgt.parents(".js-permalink-copy");
+
+    const postId = $button.data("post-id");
+    const linkType = $button.data("link-type");
+
+    if (!postId || !linkType) {
+      return;
+    }
+
+    const $input = $(`#permalink-${postId}-${linkType}`);
+
+    const url = $input.val();
+
+    if (!url) {
+      return;
+    }
+
+    try {
+      await navigator.clipboard.writeText(url);
+      setCopyButtonState($button, "success");
+    }
+    catch (_e) {
+      setCopyButtonState($button, "error");
+    }
   });
 
-  $('.js-nominate-promotion').on('click', async ev => {
+  $('.js-nominate-promotion').on('click', async (ev) => {
     ev.preventDefault();
 
     const $tgt = $(ev.target);
@@ -291,7 +442,7 @@ $(() => {
     $('.js-mod-tools').removeClass('is-active');
   });
 
-  $('.js-cancel-edit').on('click', async ev => {
+  $('.js-cancel-edit').on('click', async (ev) => {
     ev.preventDefault();
 
     let $btn = $(ev.target);
diff --git a/app/assets/javascripts/privileges.js b/app/assets/javascripts/privileges.js
index b61d17a0a43add81fed952f7b4f3b21cd9dd5ee3..f63feeb69d9f2b3839a397d4833d1c657bec295c 100644
--- a/app/assets/javascripts/privileges.js
+++ b/app/assets/javascripts/privileges.js
@@ -27,7 +27,11 @@ $(() => {
     const $input = $td.find('.js-privilege-edit');
     const name = $input.data('name');
     const type = $input.data('type');
-    const value = parseFloat($input.val() || '') || null;
+
+    // incorrect input values will cause rawValue to be NaN
+    const rawValue = parseFloat($input.val())
+
+    const value = Number.isNaN(rawValue) ? null : rawValue;
 
     const resp = await fetch(`/admin/privileges/${name}`, {
       method: 'POST',
diff --git a/app/assets/javascripts/qpixel_api.js b/app/assets/javascripts/qpixel_api.js
index df4236002fe159bff01762aa799f8eb793d5944c..d63f6bdf42743026dbc65cf81ba9e48eb190424f 100644
--- a/app/assets/javascripts/qpixel_api.js
+++ b/app/assets/javascripts/qpixel_api.js
@@ -3,6 +3,30 @@ const validators = [];
 /** Counts notifications popped up at any time. */
 let popped_modals_ct = 0;
 
+/**
+ * @typedef {{
+ *  min_score: number | null,
+ *  max_score: number | null,
+ *  min_answers: number | null,
+ *  max_answers: number | null,
+ *  include_tags: [string, number][],
+ *  exclude_tags: [string, number][],
+ *  status: 'any' | 'closed' | 'open',
+ *  system: boolean,
+ * }} Filter
+ *
+ * @typedef {{
+ *  id: number,
+ *  username: string,
+ *  is_moderator: boolean,
+ *  is_admin: boolean,
+ *  is_global_moderator: boolean,
+ *  is_global_admin: boolean,
+ *  trust_level: number,
+ *  se_acct_id: string | null,
+ * }} User
+ */
+
 window.QPixel = {
   /**
    * Get the current CSRF anti-forgery token. Should be passed as the X-CSRF-Token header when
@@ -20,7 +44,7 @@ window.QPixel = {
    * @param type the type to apply to the popup - warning, danger, etc.
    * @param message the message to show
    */
-  createNotification: function(type, message) {
+  createNotification: function (type, message) {
     // Some messages include a date stamp, `append_date` governs that.
     let append_date = false;
     let message_with_date = message;
@@ -42,26 +66,26 @@ window.QPixel = {
     }
     const span = '<span aria-hidden="true">&times;</span>';
     const button = ('<button type="button" class="button is-close-button" data-dismiss="alert" aria-label="Close">' +
-        span + '</button>');
-    $("<div></div>")
-    .addClass("notice has-shadow-3 is-" + type)
-    .html(button + '<p>' + message_with_date + '</p>')
-    .css({
-      'position': 'fixed',
-      'top': '50px',
-      'left': '50%',
-      'transform': 'translateX(-50%)',
-      'width': '100%',
-      'max-width': '800px',
-      'cursor': 'pointer'
-    })
-    .on('click', function(ev) {
-      $(this).fadeOut(200, function() {
-        $(this).remove();
-        popped_modals_ct = popped_modals_ct > 0 ? (popped_modals_ct - 1) : 0;
-      });
-    })
-    .appendTo(document.body);
+      span + '</button>');
+    $('<div></div>')
+      .addClass('notice has-shadow-3 is-' + type)
+      .html(button + '<p>' + message_with_date + '</p>')
+      .css({
+        'position': 'fixed',
+        'top': '50px',
+        'left': '50%',
+        'transform': 'translateX(-50%)',
+        'width': '100%',
+        'max-width': '800px',
+        'cursor': 'pointer'
+      })
+      .on('click', function (ev) {
+        $(this).fadeOut(200, function () {
+          $(this).remove();
+          popped_modals_ct = popped_modals_ct > 0 ? (popped_modals_ct - 1) : 0;
+        });
+      })
+      .appendTo(document.body);
     popped_modals_ct += 1;
   },
 
@@ -70,7 +94,7 @@ window.QPixel = {
    * @param el the element for which to find the offset.
    * @returns {{top: integer, left: integer, bottom: integer, right: integer}}
    */
-  offset: function(el) {
+  offset: function (el) {
     const topLeft = $(el).offset();
     return {
       top: topLeft.top,
@@ -151,21 +175,59 @@ window.QPixel = {
     $field.val(prev.substring(0, $field[0].selectionStart) + text + prev.substring($field[0].selectionEnd));
   },
 
+  /**
+   * Used to prevent launching multiple requests to /users/me
+   * @type {Promise<Response>|null}
+   */
+  _pendingUserResponse: null,
+
+  /**
+   * @type {User|null}
+   */
   _user: null,
 
   /**
-   * Get the user object for the current user.
-   * @returns {Promise<Object>} a JSON object containing user details
+   * FIFO-style fetch wrapper for /users/me requests
+   * @returns {Promise<Response>}
    */
-  user: async () => {
-    if (QPixel._user) return QPixel._user;
-    const resp = await fetch('/users/me', {
+  _fetchUser () {
+    if (QPixel._pendingUserResponse) {
+      return QPixel._pendingUserResponse;
+    }
+
+    const myselfPromise = fetch('/users/me', {
       credentials: 'include',
       headers: {
         'Accept': 'application/json'
       }
     });
-    QPixel._user = await resp.json();
+
+    QPixel._pendingUserResponse = myselfPromise;
+
+    return myselfPromise;
+  },
+
+  /**
+   * Get the user object for the current user.
+   * @returns {Promise<User>} a JSON object containing user details
+   */
+  user: async () => {
+    if (QPixel._user != null || document.body.dataset.userId === 'none') {
+      return QPixel._user;
+    }
+
+    try {
+      const resp = await QPixel._fetchUser();
+
+      if (!resp.bodyUsed) {
+        QPixel._user = await resp.json();
+      }
+    }
+    finally {
+      // ensures pending user is cleared regardless of network errors
+      QPixel._pendingUserResponse = null;
+    }
+
     return QPixel._user;
   },
 
@@ -176,30 +238,24 @@ window.QPixel = {
    * localStorage, or Redis via AJAX.
    * @returns {Promise<Object>} a JSON object containing user preferences
    */
-  preferences: async () => {
-    if (this._preferences == null && !!localStorage['qpixel.user_preferences']) {
-      this._preferences = JSON.parse(localStorage['qpixel.user_preferences']);
-
-      // If we don't have the global key, we're probably using an old preferences schema.
-      if (!this._preferences.global) {
-        delete localStorage['qpixel.user_preferences'];
-        this._preferences = null;
-      }
+  _getPreferences: async () => {
+    // Early return for the most frequent case (local variable already contains the preferences)
+    if (QPixel._preferences != null) {
+      return QPixel._preferences;
     }
-    else if (this._preferences == null) {
-      // If they're still null (or undefined) after loading from localStorage, we're probably on a site we haven't
-      // loaded them for yet. Load from Redis via AJAX.
-      const resp = await fetch('/users/me/preferences', {
-        credentials: 'include',
-        headers: {
-          'Accept': 'application/json'
-        }
-      });
-      const data = await resp.json();
-      localStorage['qpixel.user_preferences'] = JSON.stringify(data);
-      this._preferences = data;
+    // Early return the preferences from localStorage unless null or undefined
+    const key = QPixel._preferencesLocalStorageKey();
+    const localStoragePreferences = (key in localStorage)
+      ? JSON.parse(localStorage[key])
+      : null;
+    if (localStoragePreferences != null) {
+      QPixel._preferences = localStoragePreferences;
+      return QPixel._preferences;
     }
-    return this._preferences;
+    // Preferences are still null (or undefined) after loading from localStorage, so we're probably on a site we
+    // haven't loaded them for yet. Load from Redis via AJAX.
+    await QPixel._cachedFetchPreferences();
+    return QPixel._preferences;
   },
 
   /**
@@ -209,29 +265,25 @@ window.QPixel = {
    * @returns {Promise<*>} the value of the requested preference
    */
   preference: async (name, community = false) => {
-    let prefs = await QPixel.preferences();
-    let value = community ? prefs.community[name] : prefs.global[name];
-
-    // Deliberate === here: null is a valid value for a preference, but undefined means we haven't fetched it.
-    // If we haven't fetched a preference, that probably means it's new - run a full re-fetch.
-    if (value === undefined) {
-      const resp = await fetch('/users/me/preferences', {
-        credentials: 'include',
-        headers: {
-          'Accept': 'application/json'
-        }
-      });
-      const data = await resp.json();
-      localStorage['qpixel.user_preferences'] = JSON.stringify(data);
-      this._preferences = data;
+    const user = await QPixel.user();
 
-      prefs = await QPixel.preferences();
-      value = community ? prefs.community[name] : prefs.global[name];
-      return value;
+    if (!user) {
+      return null;
     }
-    else {
+
+    let prefs = await QPixel._getPreferences();
+    let value = community ? prefs.community[name] : prefs.global[name];
+
+    // Note that null is a valid value for a preference, but undefined means we haven't fetched it.
+    if (typeof (value) !== 'undefined') {
       return value;
     }
+    // If we haven't fetched a preference, that probably means it's new - run a full re-fetch.
+    await QPixel._cachedFetchPreferences();
+
+    prefs = await QPixel._getPreferences();
+    value = community ? prefs.community[name] : prefs.global[name];
+    return value;
   },
 
   /**
@@ -250,7 +302,7 @@ window.QPixel = {
         'Accept': 'application/json',
         'Content-Type': 'application/json'
       },
-      body: JSON.stringify({ name, value, community })
+      body: JSON.stringify({name, value, community})
     });
     const data = await resp.json();
     if (data.status !== 'success') {
@@ -258,11 +310,163 @@ window.QPixel = {
       console.error(resp);
     }
     else {
-      this._preferences = data.preferences;
-      localStorage['qpixel.user_preferences'] = JSON.stringify(this._preferences);
+      QPixel._updatePreferencesLocally(data.preferences);
+    }
+  },
+
+  /**
+   * @returns {Promise<Record<string, Filter>>}
+   */
+  filters: async () => {
+    if (this._filters == null) {
+      // If they're still null (or undefined) after loading from localStorage, we're probably on a site we haven't
+      // loaded them for yet. Load via AJAX.
+      const resp = await fetch('/users/me/filters', {
+        credentials: 'include',
+        headers: {
+          'Accept': 'application/json'
+        }
+      });
+      const data = await resp.json();
+      localStorage['qpixel.user_filters'] = JSON.stringify(data);
+      this._filters = data;
+    }
+
+    return this._filters;
+  },
+
+  /**
+   * Fetches default user filter for a given category
+   * @param categoryId id of the category to fetch
+   * @returns {Promise<string>}
+   */
+  defaultFilter: async (categoryId) => {
+    const user = await QPixel.user();
+
+    if (!user) {
+      return '';
+    }
+
+    const resp = await fetch(`/users/me/filters/default?category=${categoryId}`, {
+      credentials: 'include',
+      headers: {
+        'Accept': 'application/json'
+      }
+    });
+
+    const data = await resp.json();
+    return data.name;
+  },
+
+  setFilterAsDefault: async (categoryId, name) => {
+    const resp = await fetch(`/categories/${categoryId}/filters/default`, {
+      method: 'POST',
+      credentials: 'include',
+      headers: {
+        'X-CSRF-Token': QPixel.csrfToken(),
+        'Accept': 'application/json',
+        'Content-Type': 'application/json'
+      },
+      body: JSON.stringify({name})
+    });
+  },
+
+  setFilter: async (name, filter, category, isDefault) => {
+    const resp = await fetch('/users/me/filters', {
+      method: 'POST',
+      credentials: 'include',
+      headers: {
+        'X-CSRF-Token': QPixel.csrfToken(),
+        'Accept': 'application/json',
+        'Content-Type': 'application/json'
+      },
+      body: JSON.stringify(Object.assign(filter, {name, category, is_default: isDefault}))
+    });
+    const data = await resp.json();
+    if (data.status !== 'success') {
+      console.error(`Filter persist failed (${name})`);
+      console.error(resp);
+    }
+    else {
+      this._filters = data.filters;
+      localStorage['qpixel.user_filters'] = JSON.stringify(this._filters);
+    }
+  },
+
+  deleteFilter: async (name, system = false) => {
+    const resp = await fetch('/users/me/filters', {
+      method: 'DELETE',
+      credentials: 'include',
+      headers: {
+        'X-CSRF-Token': QPixel.csrfToken(),
+        'Accept': 'application/json',
+        'Content-Type': 'application/json'
+      },
+      body: JSON.stringify({name, system})
+    });
+    const data = await resp.json();
+    if (data.status !== 'success') {
+      console.error(`Filter deletion failed (${name})`);
+      console.error(resp);
+    }
+    else {
+      this._filters = data.filters;
+      localStorage['qpixel.user_filters'] = JSON.stringify(this._filters);
     }
   },
 
+  /**
+   * Get the key to use for storing user preferences in localStorage, to avoid conflating users
+   * @returns string the localStorage key
+   */
+  _preferencesLocalStorageKey: () => {
+    const id = document.body.dataset.userId;
+    const key = `qpixel.user_${id}_preferences`;
+    QPixel._preferencesLocalStorageKey = () => key;
+    return key;
+  },
+
+  /**
+   * Call _fetchPreferences but only the first time to prevent redundant HTTP requests
+   * @returns {Promise<void>}
+   */
+  _cachedFetchPreferences: async () => {
+    // No 'await' because we want the promise not its value
+    const cachedPromise = QPixel._fetchPreferences();
+    // Redefine this function to await this same initial promise on every subsequent call
+    // This prevents multiple calls from triggering multiple redundant '_fetchPreferences' calls
+    QPixel._cachedFetchPreferences = async () => {
+      await cachedPromise;
+    };
+    // Remember to await the promise so the very first call does not return before '_fetchPreferences' returns
+    await cachedPromise;
+  },
+
+  /**
+   * Update local variable _preferences and localStorage with an AJAX call for the user preferences
+   * @returns {Promise<void>}
+   */
+  _fetchPreferences: async () => {
+    const resp = await fetch('/users/me/preferences', {
+      credentials: 'include',
+      headers: {
+        'Accept': 'application/json'
+      }
+    });
+    const data = await resp.json();
+    QPixel._updatePreferencesLocally(data);
+  },
+
+  /**
+   * Set local variable _preferences and localStorage to new preferences data
+   * @param data an object, containing the new preferences data
+   */
+  _updatePreferencesLocally: data => {
+    QPixel._preferences = data;
+    const key = QPixel._preferencesLocalStorageKey();
+    localStorage[key] = JSON.stringify(QPixel._preferences);
+  },
+
   /**
    * Get the word in a string that the given position is in, and the position within that word.
    * @param splat an array, containing the string already split by however you define a "word"
diff --git a/app/assets/javascripts/suggested_edit.js b/app/assets/javascripts/suggested_edit.js
index b4aae89a4d701562397a7bdd89050860af8c8257..4763022ebdebf7e85a4940291d1cbfb549ee64fb 100644
--- a/app/assets/javascripts/suggested_edit.js
+++ b/app/assets/javascripts/suggested_edit.js
@@ -3,6 +3,7 @@ $(document).on('ready', function () {
     ev.preventDefault();
     const self = $(ev.target);
     const editId = self.attr('data-suggested-edit-approve');
+    const comment = $('#summary').val();
 
     const resp = await fetch(`/posts/suggested-edit/${editId}/approve`, {
       method: 'POST',
@@ -10,7 +11,8 @@ $(document).on('ready', function () {
       headers: {
         'Content-Type': 'application/json',
         'X-CSRF-Token': QPixel.csrfToken()
-      }
+      },
+      body: JSON.stringify({ comment })
     });
     const data = await resp.json();
 
diff --git a/app/assets/javascripts/tags.js b/app/assets/javascripts/tags.js
index a2d71685fd74bcd033f2cd12161048f675451f79..460c215b5a77d9ca033dd18d21fd22711daea645 100644
--- a/app/assets/javascripts/tags.js
+++ b/app/assets/javascripts/tags.js
@@ -14,7 +14,8 @@ $(() => {
   };
 
   const template = (tag) => {
-    const tagSpan = `<span>${tag.text}</span>`;
+    const tagSynonyms = !!tag.synonyms ? ` <i>(${tag.synonyms})</i>` : '';
+    const tagSpan = `<span>${tag.text}${tagSynonyms}</span>`;
     let desc = !!tag.desc ? splitWordsMaxLength(tag.desc, 120) : '';
     const descSpan = !!tag.desc ?
       `<br/><span class="has-color-tertiary-900 has-font-size-caption">${desc[0]}${desc.length > 1 ? '...' : ''}</span>` :
@@ -22,7 +23,7 @@ $(() => {
     return $(tagSpan + descSpan);
   }
 
-  $('.js-tag-select').each((i, el) => {
+  $('.js-tag-select').each((_i, el) => {
     const $tgt = $(el);
     let $this;
     const useIds = $tgt.attr('data-use-ids') === 'true';
@@ -38,16 +39,16 @@ $(() => {
         data: function (params) {
           $this = $(this);
           // (for the tour)
-          if ($this.data('tag-set') === '-1') {
-            return Object.assign(params, { tag_set: "1" });
+          if (Number($this.data('tag-set')) === -1) {
+            return Object.assign(params, { tag_set: '1' });
           }
           return Object.assign(params, { tag_set: $this.data('tag-set') });
         },
         headers: { 'Accept': 'application/json' },
         delay: 100,
-        processResults: data => {
+        processResults: (data) => {
           // (for the tour)
-          if ($this.data('tag-set') === '-1') {
+          if (Number($this.data('tag-set')) === -1) {
             return {
               results: [
                 { id: 1, text: 'hot-red-firebreather', desc: 'Very cute dragon' },
@@ -61,17 +62,66 @@ $(() => {
             results: data.map(t => ({
               id: useIds ? t.id : t.name,
               text: t.name.replace(/</g, '&#x3C;').replace(/>/g, '&#x3E;'),
+              synonyms: processSynonyms($this, t.tag_synonyms),
               desc: t.excerpt
             }))
           };
         },
       },
+      placeholder: '',
       templateResult: template,
       allowClear: true
     });
   });
 
-  $('.js-add-required-tag').on('click', ev => {
+  function processSynonyms($search, synonyms) {
+    if (!synonyms) return synonyms;
+
+    let displayedSynonyms;
+    if (synonyms.length > 3) {
+      const searchValue = $search.data('select2').selection.$search.val().toLowerCase();
+      displayedSynonyms = synonyms.filter(ts => ts.name.includes(searchValue)).slice(0, 3);
+    } else {
+      displayedSynonyms = synonyms;
+    }
+    let synonymsString = displayedSynonyms.map((ts) => `${ts.name.replace(/</g, '&#x3C;').replace(/>/g, '&#x3E;')}`).join(', ');
+    if (synonyms.length > displayedSynonyms.length) {
+      synonymsString += `, ${synonyms.length - displayedSynonyms.length} more synonyms`;
+    }
+    return synonymsString;
+  }
+
+  $('#add-tag-synonym').on('click', (ev) => {
+    const $wrapper = $('#tag-synonyms-wrapper');
+    const lastId = $wrapper.children('.tag-synonym').last().attr('data-id');
+    const newId = parseInt(lastId, 10) + 1;
+
+    //Duplicate the first element at the end of the wrapper
+    const newField = $wrapper.find('.tag-synonym[data-id="0"]')[0]
+                             .outerHTML
+                             .replace(/data-id="0"/g, 'data-id="' + newId + '"')
+                             .replace(/(?<connector>attributes(\]\[)|(_))0/g, '$<connector>' + newId)
+    $wrapper.append(newField);
+
+    //Alter the newly added tag synonym
+    const $newTagSynonym = $wrapper.children().last();
+    $newTagSynonym.find('.tag-synonym-name').removeAttr('value').removeAttr('readonly').removeAttr('disabled');
+    $newTagSynonym.find('.destroy-tag-synonym').attr('value', 'false');
+    $newTagSynonym.show();
+
+    //Add handler for removing an element
+    $newTagSynonym.find(`.remove-tag-synonym`).click(removeTagSynonym);
+  });
+
+  $('.remove-tag-synonym').click(removeTagSynonym);
+
+  function removeTagSynonym() {
+    const synonym = $(this).closest('.tag-synonym');
+    synonym.find('.destroy-tag-synonym').attr('value', 'true');
+    synonym.hide();
+  }
+
+  $('.js-add-required-tag').on('click', (ev) => {
     const $tgt = $(ev.target);
     const useIds = $tgt.attr('data-use-ids') === 'true';
     const tagId = $tgt.attr('data-tag-id');
@@ -87,7 +137,7 @@ $(() => {
     }
   });
 
-  $('.js-rename-tag').on('click', async ev => {
+  $('.js-rename-tag').on('click', async (ev) => {
     const $tgt = $(ev.target).is('a') ? $(ev.target) : $(ev.target).parents('a');
     const categoryId = $tgt.attr('data-category');
     const tagId = $tgt.attr('data-tag');
diff --git a/app/assets/javascripts/two_factor.js b/app/assets/javascripts/two_factor.js
new file mode 100644
index 0000000000000000000000000000000000000000..406dadc054d6945726c7f497a6ec3af3dad70cd7
--- /dev/null
+++ b/app/assets/javascripts/two_factor.js
@@ -0,0 +1,33 @@
+$(() => {
+   $('.js-backup-code-form').on('submit', async ev => {
+      ev.preventDefault();
+      const $tgt = $(ev.target);
+      const $input = $tgt.find('input[name="code"]');
+      const code = $input.val();
+      const req = await fetch('/users/two-factor/backup', {
+          method: 'POST',
+          headers: {
+              'X-CSRF-Token': QPixel.csrfToken(),
+              'Content-Type': 'application/json'
+          },
+          body: JSON.stringify({ code })
+      });
+      const res = await req.json();
+
+      if (res.status === 'error') {
+          const $label = $tgt.find('label[for="code"]');
+          $label.text(res.message);
+          $input.addClass('is-danger');
+          $tgt.find('input[type="submit"]').removeAttr('disabled');
+      }
+      else if (res.status === 'success') {
+        const codeForm = $(`<details>
+                              <summary>Show code</summary>
+                              <label for="backup-code" class="form-element">2FA backup code</label>
+                              <input class="form-element" type="text" readonly name="backup-code" id="backup-code" value="${res.code}" />
+                            </details>`);
+        $tgt.after(codeForm);
+        $tgt.remove();
+      }
+   });
+});
diff --git a/app/assets/javascripts/votes.js b/app/assets/javascripts/votes.js
index 611a78ffeaa5f666dad9887d5da8297aed7e2f9d..6dae33b0a1437d9b4667eb529f1a8f3354e3aec3 100644
--- a/app/assets/javascripts/votes.js
+++ b/app/assets/javascripts/votes.js
@@ -2,22 +2,29 @@ $(() => {
   $(document).on('click', '.vote-button', async evt => {
     const $tgt = $(evt.target).is('button') ? $(evt.target) : $(evt.target).parents('button');
     const $post = $tgt.parents('.post');
-    const $up = $post.find('.post--votes').find('.js-upvote-count');
-    const $down = $post.find('.post--votes').find('.js-downvote-count');
+
+    const $container = $post.find(".post--votes");
+
+    const $up = $container.find('.js-upvote-count');
+    const $down = $container.find('.js-downvote-count');
     const voteType = $tgt.data('vote-type');
     const voted = $tgt.hasClass('is-active');
 
     if (voted) {
       const voteId = $tgt.attr('data-vote-id');
+
       const resp = await fetch(`/votes/${voteId}`, {
         method: 'DELETE',
         credentials: 'include',
         headers: { 'X-CSRF-Token': QPixel.csrfToken() }
       });
+
       const data = await resp.json();
+
       if (data.status === 'OK') {
         $up.text(`+${data.upvotes}`);
         $down.html(`&minus;${data.downvotes}`);
+        $container.attr("title", `Score: ${data.score}`);
         $tgt.removeClass('is-active')
             .removeAttr('data-vote-id');
       }
@@ -34,10 +41,13 @@ $(() => {
         headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': QPixel.csrfToken() },
         body: JSON.stringify({post_id: $post.data('post-id'), vote_type: voteType})
       });
+
       const data = await resp.json();
+
       if (data.status === 'modified' || data.status === 'OK') {
         $up.text(`+${data.upvotes}`);
         $down.html(`&minus;${data.downvotes}`);
+        $container.attr("title", `Score: ${data.score}`);
         $tgt.addClass('is-active')
             .attr('data-vote-id', data.vote_id);
 
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index 2b105d33f3ee4bc059d779243cccf17c66ca5755..44a2e1d213f1f74e57eee82df2ad9015f735d629 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -145,22 +145,6 @@ hr {
   }
 }
 
-.footnote-ref a::before {
-  content: '[';
-}
-
-div.post-preview .footnote-ref a::before {
-  content: '';
-}
-
-.footnote-ref a::after {
-  content: ']';
-}
-
-div.post-preview .footnote-ref a::after {
-  content: '';
-}
-
 .footnotes-sep + .footnotes {
   border-top: 0;
 }
@@ -209,6 +193,10 @@ img {
   border-top: 1px solid #9daeb7;
 }
 
+.widget .widget--body .widget--body-extra {
+  margin-left: 0.75em;
+}
+
 pre {
   background: #f0f0f0;
   border: 0;
diff --git a/app/assets/stylesheets/categories.scss b/app/assets/stylesheets/categories.scss
index 93b1c4f891ddc669cd5577ff796d9087c6958a8f..6989a8781d8bf9060cb67221b9a9de02360dd514 100644
--- a/app/assets/stylesheets/categories.scss
+++ b/app/assets/stylesheets/categories.scss
@@ -16,6 +16,12 @@
     align-items: center;
     justify-content: space-between;
   }
+
+  & .category-meta--start {
+    display: flex;
+    align-items: center;
+    gap: 0.5em;
+  }
 }
 
 .category-header--nav {
diff --git a/app/assets/stylesheets/comments.scss b/app/assets/stylesheets/comments.scss
index df46861660f06483aaa7014b5a1ccf0e97385c6c..f803527585bd71a40c0765fb5f7a38b5851a1472 100644
--- a/app/assets/stylesheets/comments.scss
+++ b/app/assets/stylesheets/comments.scss
@@ -65,6 +65,17 @@
   font-style: italic;
 }
 
+.post--comments-header {
+  align-items: center;
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 0.75rem;
+}
+
+.post--comments-container {
+  margin-bottom: 1rem;
+}
+
 .post--comments-thread.is-inline {
   padding: 0.5rem 0.25rem;
   display: flex;
@@ -139,7 +150,7 @@
 .new-thread-modal {
   box-shadow: 0 3px 5px -2px #eee;
   border: 1px solid #d0d9dd;
-  margin-top: 10px;
+  margin-top: 1rem;
   padding: 0.7em;
   display: none;
 }
diff --git a/app/assets/stylesheets/forms.scss b/app/assets/stylesheets/forms.scss
index baa824c4de7ce8d52f0ee9667a71a090d69d01e1..284c3418e6818240188af6360742eec146c745f1 100644
--- a/app/assets/stylesheets/forms.scss
+++ b/app/assets/stylesheets/forms.scss
@@ -17,14 +17,6 @@ select.form-element {
 
   @media screen and (min-width: $screen-md) {
     flex-direction: row;
-
-    & > :first-child {
-      margin: 0 0.5em 0 0 !important;
-    }
-
-    & > :last-child {
-      margin: 0 0 0 0.5em !important;
-    }
   }
 
   & > .form-group {
diff --git a/app/assets/stylesheets/post_history.scss b/app/assets/stylesheets/post_history.scss
index 55d9411b29aa85b39dd9e144c7be36063e1fccb2..12cfdcaf9f01d8a8b88e5de1a1c999d342e26a37 100644
--- a/app/assets/stylesheets/post_history.scss
+++ b/app/assets/stylesheets/post_history.scss
@@ -13,6 +13,10 @@
     display: unset;
     font-weight: unset;
     color: unset;
+
+    & .droppanel {
+      position: fixed;
+    }
   }
 
   &:last-of-type {
diff --git a/app/assets/stylesheets/posts.scss b/app/assets/stylesheets/posts.scss
index a1a548af67f875059905cafb91cdd8a75e29d319..67e911056d76113f137d14d367b3b662a96d7ae4 100644
--- a/app/assets/stylesheets/posts.scss
+++ b/app/assets/stylesheets/posts.scss
@@ -89,7 +89,25 @@ h1 .badge.is-tag.is-master-tag {
   width: calc(100% + 2px);
 
   + .widget--footer {
-    margin-bottom: 0;
+    border-top: none;
+    align-items: center;
+    margin: 0;
+
+    &.mdhint {
+      display: flex;
+      flex-wrap: wrap;
+      gap: 1em 0;
+      justify-content: space-between;
+
+      & > * {
+        padding: 0;
+      }
+    }
+
+    & > .draft-status {
+      text-align: center;
+      transition: opacity 0.5s ease-in-out;
+    }
   }
 }
 
diff --git a/app/assets/stylesheets/site_settings.scss b/app/assets/stylesheets/site_settings.scss
index f9a52d4d044a9dbb788ad8fdb9500bba644d1acd..9cdec80291ef7baa04ea9c2d8b1795fa3b02a44c 100644
--- a/app/assets/stylesheets/site_settings.scss
+++ b/app/assets/stylesheets/site_settings.scss
@@ -1,4 +1,5 @@
 .site-setting--value {
   min-height: 1em;
   min-width: 2em;
+  overflow-wrap: anywhere;
 }
\ No newline at end of file
diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss
index a79c0662adb0074366eeffaf7f508102a2ef6bf8..867e962e3b2f68747466fefea9a9e8a4758a1a2e 100644
--- a/app/assets/stylesheets/users.scss
+++ b/app/assets/stylesheets/users.scss
@@ -43,6 +43,7 @@
   }
 }
 
+
 .profile-text {
   padding: 0.125em;
   line-height: 1.5;
@@ -50,17 +51,35 @@
   overflow: auto;
 }
 
-.user-profile-heading {
-  padding: 0.5em;
+.user-profile-heading-container {
+  align-items: center;
   border-bottom: 1px solid #ddd;
-  margin-bottom: 0;
-}
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  gap: 0.5em;
+
+  & > .user-profile-heading {
+    flex-grow: 1;
+    margin-bottom: 0;
+    margin-top: 0;
+    padding: 0.5em;
 
+    &:not(:last-child) {
+      padding-right: 0;
+    }
+  }
+
+  & > .button:last-child {
+    margin-right: 0;
+  }
+}
 .user-profile--image {
   text-align: center;
 
   img {
     width: 100%;
+    object-fit: contain;
   }
 }
 
diff --git a/app/assets/stylesheets/utilities.scss b/app/assets/stylesheets/utilities.scss
index be684f5f986693de8f37296b656ef8f6e5bb7638..2ed9f314baf533c846415dffe0e67a69cd5574ab 100644
--- a/app/assets/stylesheets/utilities.scss
+++ b/app/assets/stylesheets/utilities.scss
@@ -95,6 +95,16 @@ pre.pre-wrap {
   white-space: pre-wrap !important;
 }
 
+.copy-button {
+  display: none;
+  position: absolute;
+  right: 0;
+}
+
+div:hover > .copy-button {
+  display: block;
+}
+
 .stat-panel {
   flex: 1;
   border: 1px solid $muted-graphic;
@@ -271,3 +281,11 @@ span.spoiler {
     color: $key;
   }
 }
+
+.clearfix {
+  overflow: hidden;
+}
+
+.transparent {
+  opacity: 0;
+}
diff --git a/app/controllers/active_storage/base_controller.rb b/app/controllers/active_storage/base_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..63cf547088a94e25669b86410d72203a2bb31416
--- /dev/null
+++ b/app/controllers/active_storage/base_controller.rb
@@ -0,0 +1,17 @@
+class ActiveStorage::BaseController < ActionController::Base
+  before_action :enforce_signed_in
+  include ActiveStorage::SetCurrent
+  protect_from_forgery with: :exception
+
+  self.etag_with_template_digest = false
+
+  protected
+
+  def enforce_signed_in
+    # If not restricted, the user is signed in or the environment is test, allow all content.
+    return true if !SiteSetting['RestrictedAccess'] || user_signed_in? || Rails.env.test?
+
+    redirect_to '/', status: :forbidden
+    false
+  end
+end
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index b7453e9ced6ede292529bfbb136b34e3020de811..5d13f6d3b8fa99e65a503dd86fec4d4d7af763fe 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -3,7 +3,7 @@ class AdminController < ApplicationController
   before_action :verify_admin, except: [:change_back, :verify_elevation]
   before_action :verify_global_admin, only: [:admin_email, :send_admin_email, :new_site, :create_site, :setup,
                                              :setup_save, :hellban]
-  before_action :verify_developer, only: [:change_users, :impersonate]
+  before_action :verify_developer, only: [:change_users, :impersonate, :all_email, :send_all_email]
 
   def index; end
 
@@ -52,6 +52,18 @@ class AdminController < ApplicationController
     redirect_to admin_path
   end
 
+  def all_email; end
+
+  def send_all_email
+    Thread.new do
+      AdminMailer.with(body_markdown: params[:body_markdown], subject: params[:subject]).to_all_users.deliver_now
+    end
+    AuditLog.admin_audit(event_type: 'send_all_email', user: current_user,
+                         comment: "Subject: #{params[:subject]}")
+    flash[:success] = t 'admin.email_being_sent'
+    redirect_to admin_path
+  end
+
   def audit_log
     @logs = if current_user.is_global_admin
               AuditLog.unscoped.where.not(log_type: ['user_annotation', 'user_history'])
@@ -170,7 +182,12 @@ class AdminController < ApplicationController
     return not_found unless session[:impersonator_id].present?
 
     @impersonator = User.find session[:impersonator_id]
-    if @impersonator&.valid_password? params[:password]
+    if @impersonator&.sso_profile.present?
+      session.delete :impersonator_id
+      AuditLog.admin_audit(event_type: 'impersonation_end', related: current_user, user: @impersonator)
+      sign_out @impersonator
+      redirect_to new_saml_user_session_path
+    elsif @impersonator&.valid_password? params[:password]
       session.delete :impersonator_id
       AuditLog.admin_audit(event_type: 'impersonation_end', related: current_user, user: @impersonator)
       sign_in @impersonator
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index ce8c81040301ea46cc73e07d5a4da8535819618b..efa5963cad640b000329fd45a6249e7fe40cb9ba 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -7,9 +7,15 @@ class ApplicationController < ActionController::Base
   protect_from_forgery with: :exception
   before_action :configure_permitted_parameters, if: :devise_controller?
   before_action :set_globals
+  before_action :enforce_signed_in, unless: :devise_controller?
   before_action :check_if_warning_or_suspension_pending
   before_action :distinguish_fake_community
   before_action :stop_the_awful_troll
+
+  # Before checking 2fa enforcing or access, store the location that the user is trying to access.
+  # In case re-authentication is necessary / the user signs in, we can direct back to this location directly.
+  before_action :store_user_location!, if: :storable_location?
+
   before_action :enforce_2fa
   before_action :block_write_request, if: :read_only_mode?
 
@@ -17,15 +23,19 @@ class ApplicationController < ActionController::Base
 
   def upload
     if ActiveStorage::Blob.service.class.name.end_with?('S3Service')
-      redirect_to helpers.upload_remote_url(params[:key]), status: 301
+      redirect_to helpers.upload_remote_url(params[:key]), status: 301, allow_other_host: true
     else
       blob = params[:key]
-      redirect_to url_for(ActiveStorage::Blob.find_by(key: blob.is_a?(String) ? blob : blob.key))
+      redirect_to url_for(ActiveStorage::Blob.find_by(key: blob.is_a?(String) ? blob : blob.key)),
+                  allow_other_host: true
     end
   end
 
   def dashboard
     @communities = Community.all
+    @edits = Post.unscoped do
+      SuggestedEdit.unscoped.joins(:post).where(active: true).group(Arel.sql('posts.category_id')).count
+    end
     render layout: 'without_sidebar'
   end
 
@@ -309,7 +319,8 @@ class ApplicationController < ActionController::Base
        # Enable users to log out even if 2fa is enforced
        !request.fullpath.end_with?('/users/sign_out') &&
        (current_user.is_global_admin ||
-         current_user.is_global_moderator)
+         current_user.is_global_moderator) &&
+       (current_user.sso_profile.blank? || SiteSetting['Enable2FAForSsoUsers'])
       redirect_path = '/users/two-factor'
       unless request.fullpath.end_with?(redirect_path)
         flash[:notice] = 'All global admins and global moderators must enable two-factor authentication to continue' \
@@ -319,6 +330,39 @@ class ApplicationController < ActionController::Base
     end
   end
 
+  # Ensure that the user is signed in before showing any content. If the user is not signed in, display the main page.
+  #
+  # Exceptions:
+  # - 4** and 500 error pages
+  # - stylesheets and javascript
+  # - assets
+  # - /help, /policy, /help/* and /policy/*
+  def enforce_signed_in
+    # If not restricted, the user is signed in or the environment is test, allow all content.
+    return true if !SiteSetting['RestrictedAccess'] || user_signed_in? || Rails.env.test?
+
+    # Allow error pages and assets
+    path = request.fullpath
+    return true if path.start_with?('/4') || path == '/500' ||
+                   path.start_with?('/assets/') ||
+                   path.end_with?('.css') || path.end_with?('.js')
+
+    # Make available to controller that the we should not leak posts in the sidebar
+    @prevent_sidebar = true
+
+    # Allow /help (help center), /help/* and /policy/* depending on settings
+    help = SiteSetting['RestrictedAccessHelpPagesPublic']
+    policy = SiteSetting['RestrictedAccessPolicyPagesPublic']
+    return true if (help && path.start_with?('/help/')) ||
+                   (policy && path.start_with?('/policy/')) ||
+                   (path == '/help' && (help || policy))
+
+    store_location_for(:user, request.fullpath) if storable_location?
+
+    render 'errors/restricted_content', layout: 'without_sidebar', status: :forbidden
+    false
+  end
+
   def block_write_request(**add)
     respond_to do |format|
       format.html do
@@ -342,12 +386,24 @@ class ApplicationController < ActionController::Base
     helpers.user_signed_in?
   end
 
+  def sso_sign_in_enabled?
+    helpers.sso_sign_in_enabled?
+  end
+
+  def devise_sign_in_enabled?
+    helpers.devise_sign_in_enabled?
+  end
+
   def authenticate_user!(_fav = nil, **_opts)
     unless user_signed_in?
       respond_to do |format|
         format.html do
           flash[:error] = 'You need to sign in or sign up to continue.'
-          redirect_to new_user_session_path
+          if devise_sign_in_enabled?
+            redirect_to new_user_session_path
+          else
+            redirect_to new_saml_user_session_path
+          end
         end
         format.json do
           render json: { error: 'You need to sign in or sign up to continue.' }, status: 401
@@ -355,4 +411,27 @@ class ApplicationController < ActionController::Base
       end
     end
   end
+
+  # Checks if the requested location should be stored.
+  #
+  # Its important that the location is NOT stored if:
+  # - The request method is not GET (non idempotent)
+  # - The request is handled by a Devise controller such as Devise::SessionsController as that could cause an
+  #    infinite redirect loop.
+  # - The request is an Ajax request as this can lead to very unexpected behaviour.
+  # - The request is to a location we dont want to store, such as:
+  #   - Anything trying to fetch for the current user (filters, preferences, etc) as it is not the actual page
+  #   - The mobile login, as it would redirect to the code url after the sign in
+  #   - Uploaded files, as these appear in posts and are not the main route we would want to store
+  def storable_location?
+    request.get? && is_navigational_format? && !devise_controller? && !request.xhr? &&
+      !request.path.start_with?('/users/me') &&
+      !request.path.start_with?('/users/mobile-login') &&
+      !request.path.start_with?('/uploads/')
+  end
+
+  # Stores the location in the system for the current session, such that after login we send them back to the same page.
+  def store_user_location!
+    store_location_for(:user, request.fullpath)
+  end
 end
diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb
index b8076e3663ad653d57acd3f3b090a6e6d0980618..c319160f35ceb2e4f9125b1d4280b8cc2453f9a6 100644
--- a/app/controllers/categories_controller.rb
+++ b/app/controllers/categories_controller.rb
@@ -144,6 +144,7 @@ class CategoriesController < ApplicationController
                                      :color_code, :min_view_trust_level, :license_id, :sequence,
                                      :asking_guidance_override, :answering_guidance_override,
                                      :use_for_hot_posts, :use_for_advertisement,
+                                     :min_title_length, :min_body_length, :default_filter_id,
                                      display_post_types: [], post_type_ids: [], required_tag_ids: [],
                                      topic_tag_ids: [], moderator_tag_ids: [])
   end
@@ -161,8 +162,41 @@ class CategoriesController < ApplicationController
                     native: Arel.sql('att_source IS NULL DESC, last_activity DESC') }
     sort_param = sort_params[params[:sort]&.to_sym] || { last_activity: :desc }
     @posts = @category.posts.undeleted.where(post_type_id: @category.display_post_types)
-                      .includes(:post_type, :tags).list_includes.paginate(page: params[:page], per_page: 50)
-                      .order(sort_param)
+                      .includes(:post_type, :tags).list_includes
+    filter_qualifiers = helpers.params_to_qualifiers
+    @active_filter = helpers.active_filter
+
+    if filter_qualifiers.blank? && @active_filter[:name].blank?
+      if user_signed_in?
+        default_filter_id = helpers.default_filter(current_user.id, @category.id)
+        default_filter = Filter.find_by(id: default_filter_id)
+        default = :user if default_filter.present?
+      end
+
+      if default_filter.nil?
+        default_filter = @category.default_filter
+        default = :category if default_filter.present?
+      end
+
+      unless default_filter.nil?
+        filter_qualifiers = helpers.filter_to_qualifiers default_filter
+        @active_filter = {
+          default: default,
+          name: default_filter.name,
+          min_score: default_filter.min_score,
+          max_score: default_filter.max_score,
+          min_answers: default_filter.min_answers,
+          max_answers: default_filter.max_answers,
+          include_tags: default_filter.include_tags,
+          exclude_tags: default_filter.exclude_tags,
+          status: default_filter.status
+        }
+      end
+    end
+
+    @posts = helpers.qualifiers_to_sql(filter_qualifiers, @posts)
+    @filtered = filter_qualifiers.any?
+    @posts = @posts.paginate(page: params[:page], per_page: 50).order(sort_param)
   end
 
   def update_last_visit(category)
diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb
index 57894f2975b0c1d682fcaecaecfee7398ab11188..607d391a8983497cf492202cc3c268f40e4c285e 100644
--- a/app/controllers/comments_controller.rb
+++ b/app/controllers/comments_controller.rb
@@ -101,12 +101,19 @@ class CommentsController < ApplicationController
   end
 
   def update
+    @post = @comment.post
+    @comment_thread = @comment.comment_thread
     before = @comment.content
+    before_pings = check_for_pings @comment_thread, before
     if @comment.update comment_params
       unless current_user.id == @comment.user_id
         AuditLog.moderator_audit(event_type: 'comment_update', related: @comment, user: current_user,
                                  comment: "from <<#{before}>>\nto <<#{@comment.content}>>")
       end
+
+      after_pings = check_for_pings @comment_thread, @comment.content
+      apply_pings(after_pings - before_pings - @comment_thread.thread_follower.to_a)
+
       render json: { status: 'success',
                      comment: render_to_string(partial: 'comments/comment', locals: { comment: @comment }) }
     else
diff --git a/app/controllers/email_logs_controller.rb b/app/controllers/email_logs_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..40cded41f6fcc5804d5ee0d463c079a40c532802
--- /dev/null
+++ b/app/controllers/email_logs_controller.rb
@@ -0,0 +1,28 @@
+class EmailLogsController < ApplicationController
+  skip_forgery_protection only: [:log]
+  skip_before_action :set_globals, only: [:log]
+  skip_before_action :distinguish_fake_community, only: [:log]
+  skip_before_action :enforce_signed_in, only: [:log]
+
+  def log
+    message_type = request.headers['X-Amz-SNS-Message-Type']
+    if ['SubscriptionConfirmation', 'Notification'].include? message_type
+      verifier = Aws::SNS::MessageVerifier.new
+      body = request.body.read
+      if verifier.authentic? body
+        aws_data = JSON.parse body
+        if message_type == 'SubscriptionConfirmation'
+          EmailLog.create(log_type: 'SubscriptionConfirmation', data: aws_data)
+        else
+          message_data = JSON.parse aws_data['Message']
+          log_type = message_data['notificationType']
+          destination = message_data['mail']['destination'].join(', ')
+          EmailLog.create(log_type: log_type, destination: destination, data: aws_data['Message'])
+        end
+        render plain: 'OK'
+      else
+        render plain: "You're not AWS. Go away.", status: 401
+      end
+    end
+  end
+end
diff --git a/app/controllers/flags_controller.rb b/app/controllers/flags_controller.rb
index a83947d37731ceae94f15c78d3efc61b425ac80c..f505f08fc4e50f4adde8e7bc5bdabc3d96503904 100644
--- a/app/controllers/flags_controller.rb
+++ b/app/controllers/flags_controller.rb
@@ -41,7 +41,7 @@ class FlagsController < ApplicationController
   end
 
   def history
-    @user = User.find(params[:id])
+    @user = helpers.user_with_me params[:id]
     unless @user == current_user || (current_user.is_admin || current_user.is_moderator)
       not_found
       return
diff --git a/app/controllers/moderator_controller.rb b/app/controllers/moderator_controller.rb
index ae482cd4f0e9e33197c17e0e2e7365b76327e1af..04d2a94b5419ffe482b60bc7007d47429b389f4c 100644
--- a/app/controllers/moderator_controller.rb
+++ b/app/controllers/moderator_controller.rb
@@ -48,8 +48,8 @@ class ModeratorController < ApplicationController
     render json: { status: 'success', success: true }
   end
 
-  VoteData = Struct.new(:cast, :received)
-  VoteSummary = Struct.new(:breakdown, :types, :total)
+  VoteData = Struct.new(:cast, :received, keyword_init: true)
+  VoteSummary = Struct.new(:breakdown, :types, :total, keyword_init: true)
 
   def user_vote_summary
     @user = User.find params[:id]
diff --git a/app/controllers/notifications_controller.rb b/app/controllers/notifications_controller.rb
index 02477f56a6d9e46a32a5d6f8d9677349a3d03ec0..b47d7fcfcebc26fab7bacc5a3da0ea0793de982a 100644
--- a/app/controllers/notifications_controller.rb
+++ b/app/controllers/notifications_controller.rb
@@ -6,7 +6,7 @@ class NotificationsController < ApplicationController
     @notifications = Notification.unscoped.where(user: current_user).paginate(page: params[:page], per_page: 100)
                                  .order(Arel.sql('is_read ASC, created_at DESC'))
     respond_to do |format|
-      format.html { render :index }
+      format.html { render :index, layout: 'without_sidebar' }
       format.json { render json: @notifications, methods: :community_name }
     end
   end
diff --git a/app/controllers/post_history_controller.rb b/app/controllers/post_history_controller.rb
index 050c4ba38a3c3f210a8af9c5f060f28f57bfc4d7..543771e027a6caabf50e3c2a42f477b2fed988c9 100644
--- a/app/controllers/post_history_controller.rb
+++ b/app/controllers/post_history_controller.rb
@@ -6,8 +6,30 @@ class PostHistoryController < ApplicationController
       return not_found
     end
 
-    @history = PostHistory.where(post_id: params[:id]).includes(:post_history_type, :user, post_history_tags: [:tag])
-                          .order(created_at: :desc).paginate(per_page: 20, page: params[:page])
-    render layout: 'without_sidebar'
+    @history = PostHistory.where(post_id: params[:id])
+                          .includes(:post_history_type, :user, post_history_tags: [:tag])
+                          .order(created_at: :desc, id: :desc)
+                          .paginate(per_page: 20, page: params[:page])
+
+    if @post&.help_category.nil?
+      render layout: 'without_sidebar'
+    else
+      render 'post_history/post', layout: 'without_sidebar', locals: { show_content: false }
+    end
+  end
+
+  def slug_post
+    @post = Post.by_slug(params[:slug], current_user)
+
+    if @post.nil?
+      return not_found
+    end
+
+    @history = PostHistory.where(post_id: @post.id)
+                          .includes(:post_history_type, :user)
+                          .order(created_at: :desc, id: :desc)
+                          .paginate(per_page: 20, page: params[:page])
+
+    render 'post_history/post', layout: 'without_sidebar', locals: { show_content: false }
   end
 end
diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb
index d3295ea7729f0c1aec73d4ad2b55e99031e2be46..5e8b293a8811b13fe2e7ec074c4b24d2e2b2d5a3 100644
--- a/app/controllers/posts_controller.rb
+++ b/app/controllers/posts_controller.rb
@@ -26,7 +26,7 @@ class PostsController < ApplicationController
       return
     end
 
-    if ['HelpDoc', 'PolicyDoc'].include?(@post_type.name)
+    if @post_type.system?
       check_permissions
       # return # uncomment if you add more code after this
     end
@@ -73,7 +73,7 @@ class PostsController < ApplicationController
       return
     end
 
-    if ['HelpDoc', 'PolicyDoc'].include?(@post_type.name) && !check_permissions
+    if @post_type.system? && !check_permissions
       return
     end
 
@@ -144,12 +144,13 @@ class PostsController < ApplicationController
       return not_found
     end
 
+    # @post = @post.includes(:flags, flags: :post_flag_type)
     @children = if current_user&.privilege?('flag_curate')
                   Post.where(parent_id: @post.id)
                 else
                   Post.where(parent_id: @post.id).undeleted
                       .or(Post.where(parent_id: @post.id, user_id: current_user&.id).where.not(user_id: nil))
-                end.includes(:votes, :user, :comments, :license, :post_type)
+                end.includes(:votes, :user, :comments, :license, :post_type, :flags, flags: :post_flag_type)
                 .order(Post.arel_table[:id].not_eq(params[:answer]))
                 .user_sort({ term: params[:sort], default: Arel.sql('deleted ASC, score DESC, RAND()') },
                            score: Arel.sql('deleted ASC, score DESC, RAND()'), active: :last_activity,
@@ -159,6 +160,49 @@ class PostsController < ApplicationController
 
   def edit; end
 
+  # Attempts to update a given post
+  # @param post [Post] post the user is attempting to update
+  # @param user [User] user attempting to update the post
+  # @param body_rendered [String] new post body
+  # @param edit_post_params [ActionController::Parameters] edit parameters
+  # @return [Boolean] status of the operation
+  def do_update(post, user, body_rendered, **edit_post_params)
+    post.update(edit_post_params.merge(body: body_rendered,
+                                       last_edited_at: DateTime.now,
+                                       last_edited_by: user,
+                                       last_activity: DateTime.now,
+                                       last_activity_by: user))
+  end
+
+  # Attempts to update a given post network-wide. The update is manual to avoid
+  # skipping validations and fail early if at least one validation fails.
+  # @param post [Post] post from which the network push is initiated
+  # @param posts [ActiveRecord::Result] network posts to be updated
+  # @param user [User] user attempting to push updates to network
+  # @param body_rendered [String] new post body
+  # @param edit_post_params [ActionController::Parameters] edit parameters
+  # @return [Boolean] status of the operation
+  def do_update_network(post, posts, user, body_rendered, **edit_post_params)
+    update_status = true
+
+    posts.each do |network_post|
+      network_post.update(edit_post_params.merge(body: body_rendered,
+                                                 last_edited_at: DateTime.now,
+                                                 last_edited_by_id: user.id,
+                                                 last_activity: DateTime.now,
+                                                 last_activity_by_id: user.id))
+
+      if network_post.errors.any?
+        post.errors.merge!(network_post.errors)
+        update_status = false
+      end
+
+      next if update_status == true
+    end
+
+    update_status
+  end
+
   def update
     before = { body: @post.body_markdown, title: @post.title, tags: @post.tags.to_a }
     body_rendered = helpers.post_markdown(:post, :body_markdown)
@@ -169,39 +213,67 @@ class PostsController < ApplicationController
       return redirect_to post_path(@post)
     end
 
-    if current_user.privilege?('edit_posts') || current_user.is_moderator || current_user == @post.user || \
-       (@post_type.is_freely_editable && current_user.privilege?('unrestricted'))
-      if ['HelpDoc', 'PolicyDoc'].include?(@post_type.name) && (current_user.is_global_moderator || \
-         current_user.is_global_admin) && params[:network_push] == 'true'
-        posts = Post.unscoped.where(post_type_id: [PolicyDoc.post_type_id, HelpDoc.post_type_id],
-                                    doc_slug: @post.doc_slug, body: @post.body)
-        update_params = edit_post_params.to_h.merge(body: body_rendered, last_edited_at: DateTime.now,
-                                                    last_edited_by_id: current_user.id, last_activity: DateTime.now,
-                                                    last_activity_by_id: current_user.id)
-        posts.update_all(**update_params.symbolize_keys)
-        posts.each do |post|
-          PostHistory.post_edited(post, current_user, before: before[:body],
-                                  after: @post.body_markdown, comment: params[:edit_comment],
-                                  before_title: before[:title], after_title: @post.title,
-                                  before_tags: before[:tags], after_tags: @post.tags)
+    if current_user.can_update(@post, @post_type)
+      if current_user.can_push_to_network(@post_type) && params[:network_push] == 'true'
+        # post network push & post histories creation must be atomic to prevent sync issues on error
+        @post.transaction do
+          posts = Post.unscoped.where(post_type_id: [PolicyDoc.post_type_id, HelpDoc.post_type_id],
+                                      doc_slug: @post.doc_slug,
+                                      body: @post.body)
+
+          update_status = do_update_network(@post, posts, current_user, body_rendered, **edit_post_params)
+
+          if update_status
+            posts.each do |post|
+              history_entry = PostHistory.post_edited(post, current_user, before: before[:body],
+                                      after: @post.body_markdown, comment: params[:edit_comment],
+                                      before_title: before[:title], after_title: @post.title,
+                                      before_tags: before[:tags], after_tags: @post.tags)
+
+              if history_entry&.errors&.any?
+                @post.errors.merge!(history_entry.errors)
+                raise ActiveRecord::Rollback
+              end
+            end
+
+            flash[:success] = "#{helpers.pluralize(posts.to_a.size, 'post')} updated."
+            redirect_to help_path(slug: @post.doc_slug)
+          end
+
+          next
         end
-        flash[:success] = "#{helpers.pluralize(posts.to_a.size, 'post')} updated."
-        redirect_to help_path(slug: @post.doc_slug)
       else
-        if @post.update(edit_post_params.merge(body: body_rendered,
-                                               last_edited_at: DateTime.now, last_edited_by: current_user,
-                                               last_activity: DateTime.now, last_activity_by: current_user))
-          PostHistory.post_edited(@post, current_user, before: before[:body],
-                                  after: @post.body_markdown, comment: params[:edit_comment],
-                                  before_title: before[:title], after_title: @post.title,
-                                  before_tags: before[:tags], after_tags: @post.tags)
-          Rails.cache.delete "community_user/#{current_user.community_user.id}/metric/E"
-          do_draft_delete(URI(request.referer || '').path)
-          redirect_to post_path(@post)
-        else
-          render :edit, status: :bad_request
+        # post update & post history creation must be atomic to prevent sync issues on error
+        @post.transaction do
+          update_status = do_update(@post, current_user, body_rendered, **edit_post_params)
+
+          if update_status
+            history_entry = PostHistory.post_edited(@post, current_user, before: before[:body],
+                                    after: @post.body_markdown, comment: params[:edit_comment],
+                                    before_title: before[:title], after_title: @post.title,
+                                    before_tags: before[:tags], after_tags: @post.tags)
+
+            if history_entry&.errors&.any?
+              @post.errors.merge!(history_entry.errors)
+              raise ActiveRecord::Rollback
+            end
+
+            if params[:redact]
+              PostHistory.redact(@post, current_user)
+            end
+            Rails.cache.delete "community_user/#{current_user.community_user.id}/metric/E"
+            do_draft_delete(URI(request.referer || '').path)
+            redirect_to post_path(@post)
+          end
+
+          next
         end
       end
+
+      # this is only reached if we rollback the transaction or fail validations
+      if @post.errors.any?
+        render :edit, status: :bad_request
+      end
     else
       new_user = !current_user.privilege?('unrestricted')
       rate_limit = SiteSetting["RL_#{new_user ? 'NewUser' : ''}SuggestedEdits"]
@@ -232,7 +304,7 @@ class PostsController < ApplicationController
           do_draft_delete(URI(request.referer || '').path)
           redirect_to post_path(@post)
         else
-          @post.errors = edit.errors
+          @post.errors.copy!(edit.errors)
           render :edit, status: :bad_request
         end
       end
@@ -315,6 +387,12 @@ class PostsController < ApplicationController
       return
     end
 
+    if @post.post_type.is_freely_editable && !current_user&.is_moderator
+      flash[:danger] = helpers.i18ns('posts.cant_delete_community')
+      redirect_to post_path(@post)
+      return
+    end
+
     if @post.children.any? { |a| !a.deleted? && a.score >= 0.5 } && !current_user&.is_moderator
       flash[:danger] = helpers.i18ns('posts.cant_delete_responded')
       redirect_to post_path(@post)
@@ -386,15 +464,14 @@ class PostsController < ApplicationController
   end
 
   def document
-    @post = Post.unscoped.where(doc_slug: params[:slug], community_id: [RequestContext.community_id, nil]).first
-    not_found && return if @post.nil?
+    @post = Post.by_slug(params[:slug], current_user)
 
-    if @post&.help_category == '$Disabled'
-      not_found
-    end
-    if @post&.help_category == '$Moderator' && !current_user&.is_moderator
+    if @post.nil?
       not_found
     end
+
+    # Make sure we don't leak featured posts in the sidebar
+    render layout: 'without_sidebar' if @prevent_sidebar
   end
 
   def upload
@@ -417,6 +494,9 @@ class PostsController < ApplicationController
                  .order(:help_ordering, :title)
                  .group_by(&:post_type_id)
                  .transform_values { |posts| posts.group_by { |p| p.help_category.presence } }
+
+    # Make sure we don't leak featured posts in the sidebar
+    render layout: 'without_sidebar' if @prevent_sidebar
   end
 
   def change_category
@@ -506,14 +586,37 @@ class PostsController < ApplicationController
     render json: { status: 'success', success: true }
   end
 
+  # saving by-field is kept for backwards compatibility with old drafts
   def save_draft
-    key = "saved_post.#{current_user.id}.#{params[:path]}"
-    saved_at = "saved_post_at.#{current_user.id}.#{params[:path]}"
-    RequestContext.redis.set key, params[:post]
-    RequestContext.redis.set saved_at, DateTime.now.iso8601
-    RequestContext.redis.expire key, 86_400 * 7
-    RequestContext.redis.expire saved_at, 86_400 * 7
-    render json: { status: 'success', success: true, key: key }
+    expiration_time = 86_400 * 7
+
+    base_key = "saved_post.#{current_user.id}.#{params[:path]}"
+
+    [:body, :comment, :excerpt, :license, :tag_name, :tags, :title].each do |key|
+      next unless params.key?(key)
+
+      key_name = [:body, :saved_at].include?(key) ? base_key : "#{base_key}.#{key}"
+
+      if key == :tags
+        valid_tags = params[key]&.select(&:present?)
+
+        RequestContext.redis.del(key_name)
+
+        if valid_tags.present?
+          RequestContext.redis.sadd(key_name, valid_tags)
+        end
+      else
+        RequestContext.redis.set(key_name, params[key])
+      end
+
+      RequestContext.redis.expire(key_name, expiration_time)
+    end
+
+    saved_at_key = "saved_post_at.#{current_user.id}.#{params[:path]}"
+    RequestContext.redis.set(saved_at_key, DateTime.now.iso8601)
+    RequestContext.redis.expire(saved_at_key, expiration_time)
+
+    render json: { status: 'success', success: true, key: base_key }
   end
 
   def delete_draft
@@ -580,9 +683,13 @@ class PostsController < ApplicationController
   end
 
   def do_draft_delete(path)
-    key = "saved_post.#{current_user.id}.#{path}"
-    saved_at = "saved_post_at.#{current_user.id}.#{path}"
-    RequestContext.redis.del key, saved_at
+    keys = [:body, :comment, :excerpt, :license, :saved_at, :tags, :tag_name, :title].map do |key|
+      pfx = key == :saved_at ? 'saved_post_at' : 'saved_post'
+      base = "#{pfx}.#{current_user.id}.#{path}"
+      [:body, :saved_at].include?(key) ? base : "#{base}.#{key}"
+    end
+
+    RequestContext.redis.del(*keys)
   end
 end
 # rubocop:enable Metrics/MethodLength
diff --git a/app/controllers/reactions_controller.rb b/app/controllers/reactions_controller.rb
index 8899d8fa44979fc6d0eb82843b8c799774d6cd0d..23acd23110de3349c5c7868962ed3d50285d2c97 100644
--- a/app/controllers/reactions_controller.rb
+++ b/app/controllers/reactions_controller.rb
@@ -33,13 +33,20 @@ class ReactionsController < ApplicationController
 
     reaction = Reaction.new(user: current_user, post: @post, reaction_type: reaction_type, comment: comment)
 
-    ActiveRecord::Base.transaction do
-      thread&.save!
-      comment&.save!
-      reaction.save!
-    end
+    begin
+      ActiveRecord::Base.transaction do
+        thread&.save!
+        comment&.save!
+        reaction.save!
+      end
 
-    render json: { status: 'success' }
+      render json: { status: 'success' }
+    rescue
+      render json: { status: 'failed',
+                     message: "Could not create comment thread: #{(thread&.errors&.full_messages.to_a \
+                                                        + comment&.errors&.full_messages.to_a \
+                                                        + reaction&.errors&.full_messages.to_a).join(', ')}" }
+    end
   end
 
   def retract
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index f2e6673efbd5c18db8fe41d4424d267e1a915483..202a3636bd45cb9dfa4267d5c99636b318553a1c 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -1,20 +1,11 @@
 class SearchController < ApplicationController
   def search
-    @posts = if params[:search].present?
-               search_data = helpers.parse_search(params[:search])
-               posts = (current_user&.is_moderator || current_user&.is_admin ? Post : Post.undeleted)
-                       .qa_only.list_includes
-               posts = helpers.qualifiers_to_sql(search_data[:qualifiers], posts)
-               posts = posts.paginate(page: params[:page], per_page: 25)
+    @posts, @qualifiers = helpers.search_posts
+
+    @signed_out_me = @qualifiers.any? { |q| q[:param] == :user && q[:user_id].nil? }
+
+    @active_filter = helpers.active_filter
 
-               if search_data[:search].present?
-                 posts.search(search_data[:search]).user_sort({ term: params[:sort], default: :search_score },
-                                                              relevance: :search_score, score: :score, age: :created_at)
-               else
-                 posts.user_sort({ term: params[:sort], default: :score },
-                                 score: :score, age: :created_at)
-               end
-             end
     @count = begin
       @posts&.count
     rescue
diff --git a/app/controllers/site_settings_controller.rb b/app/controllers/site_settings_controller.rb
index 9134f8da7cfd2171dfce1143231b5505c5164a6d..256b54ecc0d17f803291dffc451b7a167a2c9b12 100644
--- a/app/controllers/site_settings_controller.rb
+++ b/app/controllers/site_settings_controller.rb
@@ -4,6 +4,14 @@ class SiteSettingsController < ApplicationController
   before_action :verify_admin
   before_action :verify_global_admin, only: [:global]
 
+  # Checks if a given user has access to site settings on a given community
+  # @param [User] user user to check access for
+  # @param [String, nil] community_id id of the community to check access on
+  # @return [Boolean]
+  def access?(user, community_id)
+    community_id.present? || user.is_global_admin
+  end
+
   def index
     # The weird argument to sort_by here sorts without throwing errors on nil values -
     # see https://stackoverflow.com/a/35539062/3160466. 0:1,c sorts nil last, to switch
@@ -26,8 +34,41 @@ class SiteSettingsController < ApplicationController
     render json: @setting&.as_json&.merge(typed: @setting.typed)
   end
 
+  # Adds an audit log for a given site setting update event
+  # @param [User] user initiating user
+  # @param [SiteSetting] before current site setting
+  # @param [SiteSetting] after updated site setting
+  # @return [void]
+  def audit_update(user, before, after)
+    AuditLog.admin_audit(event_type: 'setting_update',
+                         related: after,
+                         user: user,
+                         comment: "from <<SiteSetting #{before}>>\nto <<SiteSetting #{after.attributes_print}>>")
+  end
+
+  # Deletes cache for a given site setting for a given community
+  # @param [SiteSetting] setting site setting to clear cache for
+  # @param [String, nil] community_id community id to clear cache for
+  # @return [Boolean]
+  def clear_cache(setting, community_id)
+    Rails.cache.delete("SiteSettings/#{community_id}/#{setting.name}", include_community: false)
+  end
+
+  # Actually creates a given site setting
+  # @param [SiteSetting] setting site setting to create
+  # @param [String, nil] community_id community id to create a setting for
+  # @return [SiteSetting]
+  def do_create(setting, community_id)
+    SiteSetting.create(name: setting.name,
+                       community_id: community_id,
+                       value: '',
+                       value_type: setting.value_type,
+                       category: setting.category,
+                       description: setting.description)
+  end
+
   def update
-    if params[:community_id].blank? && !current_user.is_global_admin
+    unless access?(current_user, params[:community_id])
       not_found
       return
     end
@@ -36,20 +77,28 @@ class SiteSettingsController < ApplicationController
                  matches = SiteSetting.unscoped.where(community_id: RequestContext.community_id, name: params[:name])
                  if matches.count.zero?
                    global = SiteSetting.unscoped.where(community_id: nil, name: params[:name]).first
-                   SiteSetting.create(name: global.name, community_id: RequestContext.community_id, value: '',
-                                      value_type: global.value_type, category: global.category,
-                                      description: global.description)
+                   do_create(global, RequestContext.community_id)
                  else
                    matches.first
                  end
                else
                  SiteSetting.unscoped.where(community_id: nil, name: params[:name]).first
                end
+
     before = @setting.attributes_print
+
     @setting.update(setting_params)
-    AuditLog.admin_audit(event_type: 'setting_update', related: @setting, user: current_user,
-                         comment: "from <<SiteSetting #{before}>>\nto <<SiteSetting #{@setting.attributes_print}>>")
-    Rails.cache.delete "SiteSettings/#{RequestContext.community_id}/#{@setting.name}"
+
+    audit_update(current_user, before, @setting)
+
+    if @setting.global?
+      Community.all.each do |c|
+        clear_cache(@setting, c.id)
+      end
+    else
+      clear_cache(@setting, RequestContext.community_id)
+    end
+
     render json: { status: 'OK', setting: @setting&.as_json&.merge(typed: @setting.typed) }
   end
 
diff --git a/app/controllers/suggested_edit_controller.rb b/app/controllers/suggested_edit_controller.rb
index 34e0bbc7bcbb10875d90623dab04c7d0e58cf6f8..c724df4a5af3e997dc4c9eaeaeafeb2ea1a548b9 100644
--- a/app/controllers/suggested_edit_controller.rb
+++ b/app/controllers/suggested_edit_controller.rb
@@ -30,21 +30,56 @@ class SuggestedEditController < ApplicationController
       return
     end
 
-    opts = { before: @post.body_markdown, after: @edit.body_markdown, comment: @edit.comment,
-             before_title: @post.title, after_title: @edit.title, before_tags: @post.tags, after_tags: @edit.tags }
-
-    before = { before_body: @post.body, before_body_markdown: @post.body_markdown, before_tags_cache: @post.tags_cache,
-               before_tags: @post.tags.to_a, before_title: @post.title }
+    comment = params[:comment].present? && !params[:comment].empty? ? params[:comment] : @edit.comment
+
+    # The to_a / dup methods called on the tags for `opts` and `before` are necessary.
+    # We need to work on a copy of them, because we update the post before the edit, which will change their values.
+    # (We would otherwise be pointing to the same instance, and only see the updated version).
+    opts = { before: @post.body_markdown,
+             after: @edit.body_markdown,
+             comment: comment,
+             before_title: @post.title,
+             after_title: @edit.title,
+             before_tags: @post.tags.to_a,
+             after_tags: @edit.tags }
+
+    before = { before_body: @post.body,
+               before_body_markdown: @post.body_markdown,
+               before_tags_cache: @post.tags_cache.dup,
+               before_tags: @post.tags.to_a,
+               before_title: @post.title }
+
+    @post.transaction do
+      post_update_status = @post.update(applied_details)
+
+      if post_update_status
+        edit_update_status = @edit.update(before.merge(active: false,
+                                                       accepted: true,
+                                                       comment: comment,
+                                                       rejected_comment: '',
+                                                       decided_at: DateTime.now,
+                                                       decided_by: current_user,
+                                                       updated_at: DateTime.now))
+
+        if @edit.errors.any?
+          @post.errors.merge!(@edit.errors)
+          raise ActiveRecord::Rollback
+        end
+
+        if edit_update_status
+          PostHistory.post_edited(@post, @edit.user, **opts)
+          AbilityQueue.add(@edit.user, "Suggested Edit Approved ##{@edit.id}")
+        end
+      end
+
+      next
+    end
 
-    if @post.update(applied_details)
-      @edit.update(before.merge(active: false, accepted: true, rejected_comment: '', decided_at: DateTime.now,
-                                decided_by: current_user, updated_at: DateTime.now))
-      PostHistory.post_edited(@post, @edit.user, **opts)
+    if @post.errors.any?
+      render json: { status: 'error', message: @post.errors.full_messages.join(', ') }, status: :bad_request
+    else
       flash[:success] = 'Edit approved successfully.'
-      AbilityQueue.add(@edit.user, "Suggested Edit Approved ##{@edit.id}")
       render json: { status: 'success', redirect_url: post_path(@post) }
-    else
-      render json: { status: 'error', message: @post.errors.full_messages.join(', ') }, status: :bad_request
     end
   end
 
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index f1e6dac20a06345642f6d5b5e0b0f7e923afe973..98f1333294cebb405d223c71a3b2f4cc996559ac 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -2,7 +2,8 @@ class TagsController < ApplicationController
   before_action :authenticate_user!, only: [:new, :create, :edit, :update, :rename, :merge, :select_merge]
   before_action :set_category, except: [:index]
   before_action :set_tag, only: [:show, :edit, :update, :children, :rename, :merge, :select_merge, :nuke, :nuke_warning]
-  before_action :verify_moderator, only: [:new, :create, :rename, :merge, :select_merge]
+  before_action :verify_tag_editor, only: [:new, :create]
+  before_action :verify_moderator, only: [:rename, :merge, :select_merge]
   before_action :verify_admin, only: [:nuke, :nuke_warning]
 
   def index
@@ -13,10 +14,10 @@ class TagsController < ApplicationController
               (@tag_set&.tags || Tag).search(params[:term])
             else
               (@tag_set&.tags || Tag.all).order(:name)
-            end.paginate(page: params[:page], per_page: 50)
+            end.includes(:tag_synonyms).paginate(page: params[:page], per_page: 50)
     respond_to do |format|
       format.json do
-        render json: @tags
+        render json: @tags.to_json(include: { tag_synonyms: { only: :name } })
       end
     end
   end
@@ -26,18 +27,27 @@ class TagsController < ApplicationController
     @tags = if params[:q].present?
               @tag_set.tags.search(params[:q])
             elsif params[:hierarchical].present?
-              @tag_set.tags_with_paths.order(:path)
+              @tag_set.with_paths(params[:no_excerpt])
             elsif params[:no_excerpt].present?
-              @tag_set.tags.where(excerpt: '').or(@tag_set.tags.where(excerpt: nil))
-                      .order(Arel.sql('COUNT(posts.id) DESC'))
+              @tag_set.tags.where(excerpt: ['', nil])
             else
-              @tag_set.tags.order(Arel.sql('COUNT(posts.id) DESC'))
+              @tag_set&.tags
             end
-    @count = @tags.count
+
     table = params[:hierarchical].present? ? 'tags_paths' : 'tags'
-    @tags = @tags.left_joins(:posts).group(Arel.sql("#{table}.id"))
-                 .select(Arel.sql("#{table}.*, COUNT(posts.id) AS post_count"))
-                 .paginate(per_page: 96, page: params[:page])
+
+    @tags = @tags&.left_joins(:posts)
+                 &.group(Arel.sql("#{table}.id"))
+                 &.select(Arel.sql("#{table}.*, COUNT(DISTINCT IF(posts.deleted = 0, posts.id, NULL)) AS post_count"))
+                 &.paginate(per_page: 96, page: params[:page])
+
+    @tags = if params[:hierarchical].present?
+              @tags&.order(:path)
+            else
+              @tags&.order(Arel.sql('COUNT(posts.id) DESC'))
+            end
+
+    @count = @tags&.length || 0
   end
 
   def show
@@ -49,8 +59,9 @@ class TagsController < ApplicationController
               else
                 @tag.all_children + [@tag.id]
               end
-    post_ids = helpers.post_ids_for_tags(tag_ids)
-    @posts = Post.where(id: post_ids).undeleted.where(post_type_id: @category.display_post_types)
+    displayed_post_types = @tag.tag_set.categories.map(&:display_post_types).flatten
+    @posts = Post.joins(:tags).where(id: PostsTag.select(:post_id).distinct.where(tag_id: tag_ids))
+                 .undeleted.where(post_type_id: displayed_post_types)
                  .includes(:post_type, :tags).list_includes.paginate(page: params[:page], per_page: 50)
                  .order(sort_param)
     respond_to do |format|
@@ -61,6 +72,7 @@ class TagsController < ApplicationController
 
   def new
     @tag = Tag.new
+    @tag.tag_synonyms.build
   end
 
   def create
@@ -76,6 +88,7 @@ class TagsController < ApplicationController
 
   def edit
     check_your_privilege('edit_tags', nil, true)
+    @tag.tag_synonyms.build
   end
 
   def update
@@ -123,57 +136,68 @@ class TagsController < ApplicationController
 
     @subordinate = Tag.find params[:merge_with_id]
 
-    AuditLog.moderator_audit event_type: 'tag_merge', related: @primary, user: current_user,
-                             comment: "#{@subordinate.name} (#{@subordinate.id}) into #{@primary.name} (#{@primary.id})"
-
-    # Take the tag off posts
-    posts_sql = 'UPDATE posts INNER JOIN posts_tags ON posts.id = posts_tags.post_id ' \
-                'SET posts.tags_cache = REPLACE(posts.tags_cache, ?, ?) ' \
-                'WHERE posts_tags.tag_id = ?'
-    exec([posts_sql, "\n- #{@subordinate.name}", "\n- #{@primary.name}", @subordinate.id])
-
-    # Break hierarchies
-    tags_sql = 'UPDATE tags SET parent_id = NULL WHERE parent_id = ?'
-    exec([tags_sql, @subordinate.id])
-
-    # Remove references to the tag
-    sql = 'UPDATE IGNORE $TABLENAME SET tag_id = ? WHERE tag_id = ?'
-    exec([sql.gsub('$TABLENAME', 'posts_tags'), @primary.id, @subordinate.id])
-    exec([sql.gsub('$TABLENAME', 'categories_moderator_tags'), @primary.id, @subordinate.id])
-    exec([sql.gsub('$TABLENAME', 'categories_required_tags'), @primary.id, @subordinate.id])
-    exec([sql.gsub('$TABLENAME', 'categories_topic_tags'), @primary.id, @subordinate.id])
-    exec([sql.gsub('$TABLENAME', 'post_history_tags'), @primary.id, @subordinate.id])
-    exec([sql.gsub('$TABLENAME', 'suggested_edits_tags'), @primary.id, @subordinate.id])
-    exec([sql.gsub('$TABLENAME', 'suggested_edits_before_tags'), @primary.id, @subordinate.id])
-
-    # Nuke it from orbit
-    @subordinate.destroy
+    Post.transaction do
+      AuditLog.moderator_audit event_type: 'tag_merge', related: @primary, user: current_user, comment:
+        "#{@subordinate.name} (#{@subordinate.id}) into #{@primary.name} (#{@primary.id})"
+
+      # Replace subordinate with primary, except when a post already has primary (to avoid giving them a duplicate tag)
+      posts_sql = 'UPDATE posts INNER JOIN posts_tags ON posts.id = posts_tags.post_id ' \
+                  'SET posts.tags_cache = REPLACE(posts.tags_cache, ?, ?) ' \
+                  'WHERE posts_tags.tag_id = ? ' \
+                  'AND posts_tags.post_id NOT IN (SELECT post_id FROM posts_tags WHERE tag_id = ?)'
+      exec_sql([posts_sql, "\n- #{@subordinate.name}\n", "\n- #{@primary.name}\n", @subordinate.id, @primary.id])
+
+      # Remove the subordinate tag from posts that still have it (the ones that were excluded from our previous query)
+      posts2_sql = 'UPDATE posts INNER JOIN posts_tags ON posts.id = posts_tags.post_id ' \
+                   'SET posts.tags_cache = REPLACE(posts.tags_cache, ?, ?) ' \
+                   'WHERE posts_tags.tag_id = ?'
+      exec_sql([posts2_sql, "\n- #{@subordinate.name}\n", "\n", @subordinate.id])
+
+      # Break hierarchies
+      tags_sql = 'UPDATE tags SET parent_id = NULL WHERE parent_id = ?'
+      exec_sql([tags_sql, @subordinate.id])
+
+      # Remove references to the tag
+      sql = 'UPDATE IGNORE $TABLENAME SET tag_id = ? WHERE tag_id = ?'
+      exec_sql([sql.gsub('$TABLENAME', 'posts_tags'), @primary.id, @subordinate.id])
+      exec_sql([sql.gsub('$TABLENAME', 'categories_moderator_tags'), @primary.id, @subordinate.id])
+      exec_sql([sql.gsub('$TABLENAME', 'categories_required_tags'), @primary.id, @subordinate.id])
+      exec_sql([sql.gsub('$TABLENAME', 'categories_topic_tags'), @primary.id, @subordinate.id])
+      exec_sql([sql.gsub('$TABLENAME', 'post_history_tags'), @primary.id, @subordinate.id])
+      exec_sql([sql.gsub('$TABLENAME', 'suggested_edits_tags'), @primary.id, @subordinate.id])
+      exec_sql([sql.gsub('$TABLENAME', 'suggested_edits_before_tags'), @primary.id, @subordinate.id])
+
+      # Nuke it from orbit
+      @subordinate.destroy
+    end
 
     flash[:success] = "Merged #{@subordinate.name} into #{@primary.name}."
     redirect_to tag_path(id: @category.id, tag_id: @primary.id)
   end
 
   def nuke
-    AuditLog.admin_audit event_type: 'tag_nuke', related: @tag, user: current_user,
-                         comment: "#{@tag.name} (#{@tag.id})"
-
-    tables = ['posts_tags', 'categories_moderator_tags', 'categories_required_tags', 'categories_topic_tags',
-              'post_history_tags', 'suggested_edits_tags', 'suggested_edits_before_tags']
-
-    # Remove tag from caches
-    caches_sql = 'UPDATE posts INNER JOIN posts_tags ON posts.id = posts_tags.post_id ' \
-                 'SET posts.tags_cache = REPLACE(posts.tags_cache, ?, ?) ' \
-                 'WHERE posts_tags.tag_id = ?'
-    exec([caches_sql, "\n- #{@tag.name}", '', @tag.id])
-
-    # Delete all references to the tag
-    tables.each do |tbl|
-      sql = "DELETE FROM #{tbl} WHERE tag_id = ?"
-      exec([sql, @tag.id])
-    end
+    Post.transaction do
+      AuditLog.admin_audit event_type: 'tag_nuke', related: @tag, user: current_user,
+                           comment: "#{@tag.name} (#{@tag.id})"
+
+      tables = ['posts_tags', 'categories_moderator_tags', 'categories_required_tags', 'categories_topic_tags',
+                'post_history_tags', 'suggested_edits_tags', 'suggested_edits_before_tags']
+
+      # Remove tag from caches
+      caches_sql = 'UPDATE posts INNER JOIN posts_tags ON posts.id = posts_tags.post_id ' \
+                   'SET posts.tags_cache = REPLACE(posts.tags_cache, ?, ?) ' \
+                   'WHERE posts_tags.tag_id = ?'
+      exec_sql([caches_sql, "\n- #{@tag.name}\n", "\n", @tag.id])
+
+      # Delete all references to the tag
+      tables.each do |tbl|
+        sql = "DELETE FROM #{tbl} WHERE tag_id = ?"
+        exec_sql([sql, @tag.id])
+      end
 
-    # Nuke it
-    @tag.destroy
+      # Nuke it
+      @tag.destroy
+    end
 
     flash[:success] = "Deleted #{@tag.name}"
     redirect_to category_tags_path(@category)
@@ -192,10 +216,29 @@ class TagsController < ApplicationController
   end
 
   def tag_params
-    params.require(:tag).permit(:excerpt, :wiki_markdown, :parent_id, :name)
+    params.require(:tag).permit(:excerpt, :wiki_markdown, :parent_id, :name,
+                                tag_synonyms_attributes: [:id, :name, :_destroy])
   end
 
-  def exec(sql_array)
+  def exec_sql(sql_array)
     ApplicationRecord.connection.execute(ActiveRecord::Base.sanitize_sql_array(sql_array))
   end
+
+  def verify_tag_editor
+    unless user_signed_in? && (current_user.privilege?(:edit_tags) ||
+      current_user.is_moderator ||
+      current_user.is_admin)
+      respond_to do |format|
+        format.html do
+          render 'errors/not_found', layout: 'without_sidebar', status: :not_found
+        end
+        format.json do
+          render json: { status: 'failed', success: false, errors: ['not_found'] }, status: :not_found
+        end
+      end
+
+      return false
+    end
+    true
+  end
 end
diff --git a/app/controllers/tour_controller.rb b/app/controllers/tour_controller.rb
index b7101473dfa66aade9a2fe6ed23568341b9aa56b..13ea7f27efe8c9135645c43e07a964d860e20a98 100644
--- a/app/controllers/tour_controller.rb
+++ b/app/controllers/tour_controller.rb
@@ -5,7 +5,9 @@ class TourController < ApplicationController
 
   def question1; end
 
-  def question2; end
+  def question2
+    @tagset_id = TagSet.find_by(name: 'Tour')&.id || -1
+  end
 
   def question3; end
 
diff --git a/app/controllers/two_factor_controller.rb b/app/controllers/two_factor_controller.rb
index 4d85ecba2d78761f3a73c238f5fbbc1bcba3c423..fea0dc9c66cf0308372000b42efaf43855849f0a 100644
--- a/app/controllers/two_factor_controller.rb
+++ b/app/controllers/two_factor_controller.rb
@@ -5,11 +5,18 @@ class TwoFactorController < ApplicationController
   def tf_status; end
 
   def enable_2fa
+    if current_user.sso_profile.present? && !SiteSetting['Enable2FAForSsoUsers']
+      flash[:danger] = 'You cannot enable 2FA because you sign in through SSO.'
+      redirect_to two_factor_status_path
+      return
+    end
+
     case params[:method]
     when 'app'
-      secret = ROTP::Base32.random
-      current_user.update(two_factor_token: secret, two_factor_method: 'app')
-      totp = ROTP::TOTP.new(secret, issuer: 'codidact.com')
+      @secret = ROTP::Base32.random
+      current_user.update(two_factor_token: @secret, two_factor_method: 'app',
+                          backup_2fa_code: SecureRandom.alphanumeric(24))
+      totp = ROTP::TOTP.new(@secret, issuer: 'codidact.com')
       uri = totp.provisioning_uri("#{current_user.id}@users-2fa.codidact.com")
       qr_svg = RQRCode::QRCode.new(uri).as_svg
       @qr_uri = "data:image/svg+xml;base64,#{Base64.encode64(qr_svg)}"
@@ -52,7 +59,7 @@ class TwoFactorController < ApplicationController
 
     totp = ROTP::TOTP.new(current_user.two_factor_token)
     if totp.verify(params[:code], drift_behind: 15, drift_ahead: 15)
-      current_user.update(two_factor_token: nil, enabled_2fa: false)
+      current_user.update(two_factor_token: nil, enabled_2fa: false, backup_2fa_code: nil)
       AuditLog.user_history(event_type: 'two_factor_disabled', related: current_user)
       flash[:success] = 'Success! 2FA has been disabled on your account.'
       redirect_to two_factor_status_path
@@ -81,4 +88,13 @@ class TwoFactorController < ApplicationController
     flash[:success] = 'Success! 2FA has been disabled on your account.'
     redirect_to two_factor_status_path
   end
+
+  def show_backup_code
+    totp = ROTP::TOTP.new(current_user.two_factor_token)
+    if totp.verify(params[:code], drift_behind: 15, drift_ahead: 15)
+      render json: { status: 'success', code: current_user.backup_2fa_code }
+    else
+      render json: { status: 'error', message: 'Wrong code - please try again.' }, status: 401
+    end
+  end
 end
diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb
index 72e61c7b50c798735a9c9d6ba66da90e912f46b6..00f0722b8d9fec5a4402c1986a1b8a6be58cd075 100644
--- a/app/controllers/users/registrations_controller.rb
+++ b/app/controllers/users/registrations_controller.rb
@@ -1,7 +1,18 @@
 class Users::RegistrationsController < Devise::RegistrationsController
   protected
 
+  layout 'without_sidebar', only: :edit
+
+  before_action :check_sso, only: :update
+
   def after_update_path_for(resource)
     edit_user_registration_path(resource)
   end
+
+  def check_sso
+    if current_user && current_user.sso_profile.present?
+      flash['danger'] = 'You sign in with SSO, so updating your email/password is not possible.'
+      redirect_to edit_user_registration_path
+    end
+  end
 end
diff --git a/app/controllers/users/saml_sessions_controller.rb b/app/controllers/users/saml_sessions_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ff0ca3e58f7452f814ea666f11cd8c68a3e12fa4
--- /dev/null
+++ b/app/controllers/users/saml_sessions_controller.rb
@@ -0,0 +1,200 @@
+class Users::SamlSessionsController < Devise::SamlSessionsController
+  # Called when someone is redirected to sign into the application using SSO/SAML.
+  def new
+    # If this is not the base community, then redirect them there for the sign in
+    base = base_community
+    if base.id != RequestContext.community_id
+      redirect_to "//#{base.host}#{sign_in_request_from_other_path(RequestContext.community_id)}",
+                  allow_other_host: true
+      return
+    end
+
+    # If we are the base community, use normal behavior
+    super
+  end
+
+  # This method is almost the same code as the Users::SessionsController#create, and any changes
+  # made here should probably also be applied over there.
+  def create
+    super do |user|
+      return unless post_sign_in(user, false)
+
+      # SSO Only - Redirect to filler endpoint to actually get the clients cookie values (not sent to us here).
+      # We need to check cookies because we may be signing in for another community.
+      redirect_to after_sign_in_check_path
+      return
+    end
+  end
+
+  # On the initial return from the SSO the client does not send along its cookies (CORS/CSRF/XSS protections).
+  # Instead, we redirect the user after the sign-in to this endpoint, such that we get their cookies.
+  # Then we can check whether we were supposed to sign them in for a different community.
+  def after_sign_in_check
+    if cookies.encrypted[:signing_in_for].present? &&
+       cookies.encrypted[:signing_in_for] != RequestContext.community_id
+      handle_sign_in_for_other_community(current_user)
+      return
+    end
+
+    return unless post_sign_in(current_user, true)
+
+    redirect_to after_sign_in_path_for(current_user)
+  end
+
+  # Another community requests to sign in via this community.
+  def sign_in_request_from_other
+    # Check whether the requested community actually exists
+    unless Community.exists?(params[:id])
+      raise ArgumentError, 'User is trying to sign in to non-existing community'
+    end
+
+    # Store in a cookie which community we are signing in for such that we can redirect back after the sign in.
+    cookies.encrypted[:signing_in_for] = {
+      value: params[:id],
+      httponly: true,
+      expires: 15.minutes.from_now
+    }
+
+    # If already signed in, sign them in in the other community as well. Otherwise redirect to SAML sign in.
+    if user_signed_in?
+      handle_sign_in_for_other_community(current_user)
+    else
+      redirect_to new_saml_user_session_path
+    end
+  end
+
+  # User was signed in at the base community, now sign in here.
+  def sign_in_return_from_base
+    # Figure out which user was signed in.
+    # If we get a blank result then the message is either too old or the user messed with it.
+    user_info = decrypt_user_info(params[:message])
+    if user_info.blank?
+      flash[:notice] = nil
+      flash[:danger] = 'Something went wrong signing in, please try again.'
+      redirect_to root_path
+    end
+
+    # Determine the user we are trying to sign in as and report error if we can't
+    user = User.find(user_info)
+    if user.nil?
+      flash[:notice] = nil
+      flash[:danger] = 'Something went wrong signing in, please contact support.'
+      redirect_to root_path
+    end
+
+    # Actually sign in the user and handle the post-sign-in behavior
+    sign_in(user)
+    return unless post_sign_in(user, true)
+
+    # Finish with default devise behavior for sign ins
+    redirect_to after_sign_in_path_for(user)
+  end
+
+  private
+
+  # After a sign in, this method is called to check whether special conditions apply to the user.
+  # The user may be signed out by this method.
+  #
+  # In general, this method should have similar behavior to the Users::SessionsController#post_sign_in method.
+  # If you make changes here, you may also have to update that method.
+  #
+  # @param user [User]
+  # @param final_destination [Boolean] whether the current community is the one the user is trying to sign into
+  # @return [Boolean] false if the user was redirected by this
+  def post_sign_in(user, final_destination = false)
+    # If the user was banished, let them know non-specifically.
+    if user.deleted? || user.community_user&.deleted?
+      # The IDP already confirmed the sign in, so we can't fool the user any more that their credentials were incorrect.
+      sign_out user
+      flash[:notice] = nil
+      flash[:danger] = 'We could not sign you in because of an issue with your account.'
+      redirect_to root_path
+      return false
+    end
+
+    # Enforce 2fa if enabled for SSO users
+    if SiteSetting['Enable2FAForSsoUsers'] && user.enabled_2fa
+      if final_destination
+        handle_2fa_login(user)
+        return false
+      else
+        # User needs to do 2FA, but we are (potentially) signing in for a different community.
+        # Sign them out and continue the sign in process, when they reach the final destination we will do 2FA there.
+        sign_out user
+        return true
+      end
+    end
+
+    true
+  end
+
+  def handle_2fa_login(user, host = nil)
+    host ||= request.hostname
+    sign_out user
+    case user.two_factor_method
+    when 'app'
+      id = user.id
+      Users::SessionsController.first_factor << id
+      redirect_to login_verify_2fa_path(uid: id)
+    when 'email'
+      TwoFactorMailer.with(user: user, host: host).login_email.deliver_now
+      flash[:notice] = nil
+      flash[:info] = 'Please check your email inbox for a link to sign in.'
+      redirect_to after_sign_in_path_for(user)
+    end
+  end
+
+  # Handles a successful sign in at the base community when it was requested to do from another community.
+  # @param user [User]
+  def handle_sign_in_for_other_community(user)
+    # Determine which community we are signing in for, log out if not found (user messed with encrypted cookie/expired)
+    community = Community.find(cookies.encrypted[:signing_in_for])
+    if community.nil?
+      sign_out(user)
+      flash[:notice] = nil
+      flash[:danger] = 'Something went wrong trying to sign you in.'
+      redirect_to root_path
+      return
+    end
+
+    # Clear the cookie to prevent future issues
+    cookies.delete(:signing_in_for)
+
+    # We signed in for a different community, we need to send them back to the original community with encrypted
+    # info about who signed in.
+    encrypted_user_info = encrypt_user_info(user)
+    redirect_to "//#{community.host}#{sign_in_return_from_base_path}?message=#{CGI.escape(encrypted_user_info)}",
+                allow_other_host: true
+  end
+
+  # Encrypts user information for sending them to a different community.
+  # @param user [User]
+  def encrypt_user_info(user)
+    len = ActiveSupport::MessageEncryptor.key_len - 1
+    key = Rails.application.secrets.secret_key_base || Rails.application.credentials.secret_key_base
+    crypt = ActiveSupport::MessageEncryptor.new(key[0..len])
+    crypt.encrypt_and_sign(user.id, expires_in: 1.minute)
+  end
+
+  # Decrypts the user information when received at a different community.
+  # @param data
+  def decrypt_user_info(data)
+    len = ActiveSupport::MessageEncryptor.key_len - 1
+    key = Rails.application.secrets.secret_key_base || Rails.application.credentials.secret_key_base
+    crypt = ActiveSupport::MessageEncryptor.new(key[0..len])
+    crypt.decrypt_and_verify(data)
+  end
+
+  # @return [Community] the community to which the SSO is connected, and which must be used to sign in via.
+  def base_community
+    uri = URI.parse(Devise.saml_config.assertion_consumer_service_url)
+    host = if uri.port != 80 && uri.port != 443 && !uri.port.nil?
+             "#{uri.hostname}:#{uri.port}"
+           else
+             uri.hostname
+           end
+    Community.find_by(host: host) || Community.first
+  rescue
+    Community.first
+  end
+end
diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb
index da34a1d181ed2726c122e22b898b219794613cb6..9719fd7452d9af744fcf45953b56494857a84682 100644
--- a/app/controllers/users/sessions_controller.rb
+++ b/app/controllers/users/sessions_controller.rb
@@ -1,42 +1,12 @@
 class Users::SessionsController < Devise::SessionsController
   protect_from_forgery except: [:create]
 
-  @@first_factor = []
+  mattr_accessor :first_factor, default: [], instance_writer: false, instance_reader: false
 
+  # Any changes made here may also require changes to Users::SamlSessionsController#create.
   def create
     super do |user|
-      if user.deleted?
-        sign_out user
-        flash[:notice] = nil
-        flash[:danger] = 'Invalid Email or password.'
-        render :new
-        return
-      end
-
-      if user.community_user&.deleted?
-        sign_out user
-        flash[:notice] = nil
-        flash[:danger] = 'Your profile on this community has been deleted.'
-        render :new
-        return
-      end
-
-      if user.present? && user.enabled_2fa
-        sign_out user
-        case user.two_factor_method
-        when 'app'
-          id = user.id
-          @@first_factor << id
-          redirect_to login_verify_2fa_path(uid: id)
-          return
-        when 'email'
-          TwoFactorMailer.with(user: user, host: request.hostname).login_email.deliver_now
-          flash[:notice] = nil
-          flash[:info] = 'Please check your email inbox for a link to sign in.'
-          redirect_to root_path
-          return
-        end
-      end
+      return unless post_sign_in(user)
     end
   end
 
@@ -51,16 +21,26 @@ class Users::SessionsController < Devise::SessionsController
     end
 
     totp = ROTP::TOTP.new(target_user.two_factor_token)
-    if totp.verify(params[:code], drift_ahead: 15, drift_behind: 15)
+    if totp.verify(params[:code], drift_ahead: 15, drift_behind: 15) || params[:code] == target_user.backup_2fa_code
       if @@first_factor.include? params[:uid].to_i
+        if params[:code] == target_user.backup_2fa_code
+          target_user.update(enabled_2fa: false, two_factor_token: nil, backup_2fa_code: nil)
+          flash[:warning] = 'Two-factor authentication has been disabled for your account because you signed in with ' \
+                            'a backup code. Please re-configure two-factor authentication via your profile.'
+        end
+
         AuditLog.user_history(event_type: 'two_factor_success', related: target_user)
         @@first_factor.delete params[:uid].to_i
         flash[:info] = 'Signed in successfully.'
-        sign_in_and_redirect User.find(params[:uid])
+        sign_in_and_redirect target_user
       else
         AuditLog.user_history(event_type: 'two_factor_fail', related: target_user, comment: 'first factor not present')
         flash[:danger] = "You haven't entered your password yet."
-        redirect_to new_session_path(target_user)
+        if devise_sign_in_enabled?
+          redirect_to new_session_path(target_user)
+        else
+          redirect_to new_saml_user_session_path(target_user)
+        end
       end
     else
       AuditLog.user_history(event_type: 'two_factor_fail', related: target_user, comment: 'wrong code')
@@ -68,4 +48,65 @@ class Users::SessionsController < Devise::SessionsController
       redirect_to login_verify_2fa_path(uid: params[:uid])
     end
   end
+
+  private
+
+  # After a sign in, this method is called to check whether special conditions apply to the user.
+  # The user may be signed out by this method.
+  #
+  # In general, this method should have similar behavior to the Users::SamlSessionsController#post_sign_in method.
+  # If you make changes here, you may also have to update that method.
+  # @param user [User]
+  # @return [Boolean] false if the handling by the calling method should be stopped
+  def post_sign_in(user)
+    # For a deleted user (banished), tell them non-specifically that there was a mistake with their credentials.
+    if user.deleted?
+      sign_out user
+      flash[:notice] = nil
+      flash[:danger] = 'Invalid Email or password.'
+      render :new
+      return false
+    end
+
+    # If profile is deleted, the user was banished. Inform them and send them back to the sign in page.
+    if user.community_user&.deleted?
+      sign_out user
+      flash[:notice] = nil
+      flash[:danger] = 'Your profile on this community has been deleted.'
+      render :new
+      return false
+    end
+
+    # For users who are linked to an SSO Profile, disallow normal login and let them sign in through SSO instead.
+    if user.sso_profile.present?
+      sign_out user
+      flash[:notice] = nil
+      flash[:danger] = 'Please sign in using the Single Sign-On service of your institution.'
+      redirect_to new_saml_user_session_path
+      return false
+    end
+
+    # Enforce 2FA
+    if user.enabled_2fa
+      handle_2fa_login(user)
+      return false
+    end
+
+    true
+  end
+
+  def handle_2fa_login(user)
+    sign_out user
+    case user.two_factor_method
+    when 'app'
+      id = user.id
+      @@first_factor << id
+      redirect_to login_verify_2fa_path(uid: id)
+    when 'email'
+      TwoFactorMailer.with(user: user, host: request.hostname).login_email.deliver_now
+      flash[:notice] = nil
+      flash[:info] = 'Please check your email inbox for a link to sign in.'
+      redirect_to after_sign_in_path_for(user)
+    end
+  end
 end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 11e95df0dec4419ffe76b4588bc8aef48caa959e..1b4aec6f0c2d168789e5f5b87e0e5ac2529c60b7 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -5,12 +5,13 @@ class UsersController < ApplicationController
   include Devise::Controllers::Rememberable
 
   before_action :authenticate_user!, only: [:edit_profile, :update_profile, :stack_redirect, :transfer_se_content,
-                                            :qr_login_code, :me, :preferences, :set_preference, :my_vote_summary]
+                                            :qr_login_code, :me, :preferences, :set_preference, :my_vote_summary,
+                                            :disconnect_sso, :confirm_disconnect_sso, :filters]
   before_action :verify_moderator, only: [:mod, :destroy, :soft_delete, :role_toggle, :full_log,
                                           :annotate, :annotations, :mod_privileges, :mod_privilege_action]
   before_action :set_user, only: [:show, :mod, :destroy, :soft_delete, :posts, :role_toggle, :full_log, :activity,
                                   :annotate, :annotations, :mod_privileges, :mod_privilege_action,
-                                  :vote_summary, :avatar]
+                                  :vote_summary, :network, :avatar]
   before_action :check_deleted, only: [:show, :posts, :activity]
 
   def index
@@ -26,13 +27,20 @@ class UsersController < ApplicationController
 
   def show
     @abilities = Ability.on_user(@user)
-    @posts = if current_user&.privilege?('flag_curate')
-               @user.posts
-             else
-               @user.posts.undeleted
-             end.list_includes.joins(:category)
-             .where('IFNULL(categories.min_view_trust_level, 0) <= ?', current_user&.trust_level || 0)
-             .order(score: :desc).first(15)
+
+    all_posts = if current_user&.privilege?('flag_curate') || @user == current_user
+                  @user.posts
+                else
+                  @user.posts.undeleted
+                end
+                .list_includes
+                .joins(:category)
+                .where('IFNULL(categories.min_view_trust_level, 0) <= ?', current_user&.trust_level || 0)
+                .user_sort({ term: params[:sort], default: :score },
+                           age: :created_at, score: :score)
+
+    @posts = all_posts.first(15)
+    @total_post_count = all_posts.count
     render layout: 'without_sidebar'
   end
 
@@ -57,6 +65,7 @@ class UsersController < ApplicationController
         prefs = current_user.preferences
         @preferences = prefs[:global]
         @community_prefs = prefs[:community]
+        render layout: 'without_sidebar'
       end
       format.json do
         render json: current_user.preferences
@@ -64,6 +73,99 @@ class UsersController < ApplicationController
     end
   end
 
+  # Helper method to convert it to the form expected by the client
+  def filter_json(filter)
+    {
+      min_score: filter.min_score,
+      max_score: filter.max_score,
+      min_answers: filter.min_answers,
+      max_answers: filter.max_answers,
+      include_tags: Tag.where(id: filter.include_tags).map { |tag| [tag.name, tag.id] },
+      exclude_tags: Tag.where(id: filter.exclude_tags).map { |tag| [tag.name, tag.id] },
+      status: filter.status,
+      system: filter.user_id == -1
+    }
+  end
+
+  def filters_json
+    system_filters = Rails.cache.fetch 'default_system_filters', expires_in: 1.day do
+      User.find(-1).filters.to_h { |filter| [filter.name, filter_json(filter)] }
+    end
+
+    if user_signed_in?
+      current_user.filters.to_h { |filter| [filter.name, filter_json(filter)] }
+                  .merge(system_filters)
+    else
+      system_filters
+    end
+  end
+
+  def filters
+    respond_to do |format|
+      format.html do
+        render layout: 'without_sidebar'
+      end
+      format.json do
+        render json: filters_json
+      end
+    end
+  end
+
+  def set_filter
+    if user_signed_in? && params[:name]
+      filter = Filter.find_or_create_by(user: current_user, name: params[:name])
+
+      filter.update(filter_params)
+
+      unless params[:category].nil? || params[:is_default].nil?
+        helpers.set_filter_default(current_user.id, filter.id, params[:category].to_i, params[:is_default])
+      end
+
+      render json: { status: 'success', success: true, filters: filters_json },
+             status: 200
+    else
+      render json: { status: 'failed', success: false, errors: ['Filter name is required'] },
+             status: 400
+    end
+  end
+
+  def delete_filter
+    unless params[:name]
+      return render json: { status: 'failed', success: false, errors: ['Filter name is required'] },
+                    status: 400
+    end
+
+    as_user = current_user
+
+    if params[:system] == true
+      if current_user&.is_global_admin
+        as_user = User.find(-1)
+      else
+        return render json: { status: 'failed', success: false, errors: ['You do not have permission to delete'] },
+                      status: 400
+      end
+    end
+
+    filter = Filter.find_by(user: as_user, name: params[:name])
+    if filter.destroy
+      render json: { status: 'success', success: true, filters: filters_json }
+    else
+      render json: { status: 'failed', success: false, errors: ['Failed to delete'] },
+             status: 400
+    end
+  end
+
+  def default_filter
+    if user_signed_in? && params[:category]
+      default_filter = helpers.default_filter(current_user.id, params[:category].to_i)
+      render json: { status: 'success', success: true, name: default_filter&.name },
+             status: 200
+    else
+      render json: { status: 'failed', success: false },
+             status: 400
+    end
+  end
+
   def set_preference
     if !params[:name].nil? && !params[:value].nil?
       global_key = "prefs.#{current_user.id}"
@@ -80,7 +182,7 @@ class UsersController < ApplicationController
   end
 
   def posts
-    @posts = if current_user&.privilege?('flag_curate')
+    @posts = if current_user&.privilege?('flag_curate') || @user == current_user
                Post.all
              else
                Post.undeleted
@@ -99,12 +201,22 @@ class UsersController < ApplicationController
     end
   end
 
+  def my_network
+    redirect_to network_path(current_user)
+  end
+
+  def network
+    @communities = Community.all
+    render layout: 'without_sidebar'
+  end
+
   def activity
     @posts = Post.undeleted.where(user: @user).count
     @comments = Comment.joins(:comment_thread, :post).undeleted.where(user: @user, comment_threads: { deleted: false },
                                                                       posts: { deleted: false }).count
     @suggested_edits = SuggestedEdit.where(user: @user).count
-    @edits = PostHistory.joins(:post).where(user: @user, posts: { deleted: false }).count
+    @edits = PostHistory.joins(:post, :post_history_type).where(user: @user, posts: { deleted: false },
+                                                                post_history_types: { name: 'post_edited' }).count
 
     @all_edits = @suggested_edits + @edits
 
@@ -116,16 +228,17 @@ class UsersController < ApplicationController
                                                                     posts: { deleted: false })
             when 'edits'
               SuggestedEdit.where(user: @user) + \
-              PostHistory.joins(:post).where(user: @user, posts: { deleted: false })
+              PostHistory.joins(:post, :post_history_type).where(user: @user, posts: { deleted: false },
+                                                                 post_history_types: { name: 'post_edited' })
             else
               Post.undeleted.where(user: @user) + \
               Comment.joins(:comment_thread, :post).undeleted.where(user: @user, comment_threads: { deleted: false },
                                                                     posts: { deleted: false }) + \
               SuggestedEdit.where(user: @user).all + \
-              PostHistory.joins(:post).where(user: @user, posts: { deleted: false })
+              PostHistory.joins(:post).where(user: @user, posts: { deleted: false }).all
             end
 
-    @items = items.sort_by(&:created_at).reverse
+    @items = items.sort_by(&:created_at).reverse.paginate(page: params[:page], per_page: 50)
     render layout: 'without_sidebar'
   end
 
@@ -168,7 +281,7 @@ class UsersController < ApplicationController
                 Post.where(user: @user).all + Comment.where(user: @user).all + Flag.where(user: @user).all + \
                   SuggestedEdit.where(user: @user).all + PostHistory.where(user: @user).all + \
                   ModWarning.where(community_user: @user.community_user).all
-              end).sort_by(&:created_at).reverse
+              end).sort_by(&:created_at).reverse.paginate(page: params[:page], per_page: 50)
 
     render layout: 'without_sidebar'
   end
@@ -229,13 +342,7 @@ class UsersController < ApplicationController
         return
       end
 
-      AuditLog.moderator_audit(event_type: 'user_delete', related: @user, user: current_user,
-                               comment: @user.attributes_print(join: "\n"))
-      @user.assign_attributes(deleted: true, deleted_by_id: current_user.id, deleted_at: DateTime.now,
-                              username: "user#{@user.id}", email: "#{@user.id}@deleted.localhost",
-                              password: SecureRandom.hex(32))
-      @user.skip_reconfirmation!
-      @user.save
+      @user.do_soft_delete(current_user)
     else
       render json: { status: 'failed', message: 'Unrecognised deletion type.' }, status: 400
       return
@@ -248,14 +355,24 @@ class UsersController < ApplicationController
     render layout: 'without_sidebar'
   end
 
-  def update_profile
-    profile_params = params.require(:user).permit(:username, :profile_markdown, :website, :twitter, :discord)
-    profile_params[:twitter] = profile_params[:twitter].delete('@')
+  def cleaned_profile_websites(profile_params)
+    sites = profile_params[:user_websites_attributes]
 
-    if profile_params[:website].present? && URI.parse(profile_params[:website]).instance_of?(URI::Generic)
-      # URI::Generic indicates the user didn't include a protocol, so we'll add one now so that it can be
-      # parsed correctly in the view later on.
-      profile_params[:website] = "https://#{profile_params[:website]}"
+    sites.transform_values do |w|
+      w.merge({ label: w[:label].presence, url: w[:url].presence })
+    end
+  end
+
+  def update_profile
+    profile_params = params.require(:user).permit(:username,
+                                                  :profile_markdown,
+                                                  :website,
+                                                  :discord,
+                                                  :twitter,
+                                                  user_websites_attributes: [:id, :label, :url])
+
+    if profile_params[:user_websites_attributes].present?
+      profile_params[:user_websites_attributes] = cleaned_profile_websites(profile_params)
     end
 
     @user = current_user
@@ -271,8 +388,14 @@ class UsersController < ApplicationController
       end
     end
 
-    profile_rendered = helpers.post_markdown(:user, :profile_markdown)
-    if @user.update(profile_params.merge(profile: profile_rendered))
+    if params[:user][:profile_markdown].present?
+      profile_rendered = helpers.post_markdown(:user, :profile_markdown)
+      profile_params = profile_params.merge(profile: profile_rendered)
+    end
+
+    status = @user.update(profile_params)
+
+    if status
       flash[:success] = 'Your profile details were updated.'
       redirect_to user_path(current_user)
     else
@@ -301,7 +424,7 @@ class UsersController < ApplicationController
 
       # Set/update ability
       if new_value
-        @user.community_user.grant_privilege 'mod'
+        @user.community_user.grant_privilege! 'mod'
       else
         @user.community_user.privilege('mod').destroy
       end
@@ -330,7 +453,7 @@ class UsersController < ApplicationController
     case params[:do]
     when 'grant'
       if ua.nil?
-        @user.community_user.grant_privilege(ability.internal_id)
+        @user.community_user.grant_privilege!(ability.internal_id)
         AuditLog.admin_audit(event_type: 'ability_grant', related: @user, user: current_user,
                              comment: ability.internal_id.to_s)
       elsif ua.is_suspended
@@ -426,7 +549,7 @@ class UsersController < ApplicationController
       sign_in user
       remember_me user
       AuditLog.user_history(event_type: 'mobile_login', related: user)
-      redirect_to root_path
+      redirect_to after_sign_in_path_for(user)
     else
       flash[:danger] = "That login link isn't valid. Codes expire after 5 minutes - if it's been longer than that, " \
                        'get a new code and try again.'
@@ -456,21 +579,27 @@ class UsersController < ApplicationController
   end
 
   def vote_summary
-    @votes = Vote.where(recv_user: @user) \
-                 .includes(:post).group(:date_of, :post_id, :vote_type)
-    @votes = @votes.select(:post_id, :vote_type) \
-                   .select('count(*) as vote_count') \
-                   .select('date(created_at) as date_of')
+    @votes = Vote.where(recv_user: @user)
+                 .includes(:post)
+                 .group(:date_of, :post_id, :vote_type)
+
+    @votes = @votes.select(:post_id, :vote_type)
+                   .select('count(*) as vote_count')
+                   .select('date(votes.created_at) as date_of')
+
     @votes = @votes.order(date_of: :desc, post_id: :desc).all \
-                   .group_by(&:date_of).map { |k, vl| [k, vl.group_by(&:post) ] } \
+                   .group_by(&:date_of).map do |k, vl|
+                     [k, vl.group_by(&:post), vl.sum { |v| v.vote_type * v.vote_count }]
+                   end \
                    .paginate(page: params[:page], per_page: 15)
-    @votes
+
+    render layout: 'without_sidebar'
   end
 
   def avatar
     respond_to do |format|
       format.png do
-        size = params[:size]&.to_i&.positive? ? params[:size]&.to_i : 64
+        size = params[:size]&.to_i&.positive? ? [params[:size]&.to_i, 256].min : 64
         send_data helpers.user_auto_avatar(size, user: @user).to_blob, type: 'image/png', disposition: 'inline'
       end
     end
@@ -486,10 +615,41 @@ class UsersController < ApplicationController
     end
   end
 
+  def disconnect_sso
+    render layout: 'without_sidebar'
+  end
+
+  def confirm_disconnect_sso
+    if current_user.sso_profile.blank? || !helpers.devise_sign_in_enabled? || !SiteSetting['AllowSsoDisconnect']
+      flash[:danger] = 'You cannot disable Single Sign-On.'
+      redirect_to edit_user_registration_path
+      return
+    end
+
+    if current_user.sso_profile.destroy
+      current_user.send_reset_password_instructions
+      flash[:success] = 'Successfully disconnected from Single Sign-On. Please see your email to set your password.'
+      redirect_to edit_user_registration_path
+    else
+      flash[:danger] = 'Failed to disconnect from Single Sign-On.'
+      redirect_to user_disconnect_sso_path
+    end
+  end
+
   private
 
+  def filter_params
+    params.permit(:min_score, :max_score, :min_answers, :max_answers, :status, :include_tags, :exclude_tags,
+                  include_tags: [], exclude_tags: [])
+  end
+
   def set_user
-    @user = user_scope.find_by(id: params[:id])
+    user_id = if params[:id] == 'me' && user_signed_in?
+                current_user.id
+              else
+                params[:id]
+              end
+    @user = user_scope.find_by(id: user_id)
     not_found if @user.nil?
   end
 
diff --git a/app/controllers/votes_controller.rb b/app/controllers/votes_controller.rb
index 84b57ce79d869f1e86640a06e47312d021e47043..f39a98b4413cf0bccf8ae0637d3efcff90f2d8b0 100644
--- a/app/controllers/votes_controller.rb
+++ b/app/controllers/votes_controller.rb
@@ -42,8 +42,11 @@ class VotesController < ApplicationController
     AbilityQueue.add(post.user, "Vote Change on ##{post.id}")
 
     modified = !destroyed.empty?
-    state = { status: (modified ? 'modified' : 'OK'), vote_id: vote.id, upvotes: post.upvote_count,
-              downvotes: post.downvote_count }
+    state = { status: (modified ? 'modified' : 'OK'),
+              vote_id: vote.id,
+              upvotes: post.upvote_count,
+              downvotes: post.downvote_count,
+              score: post.score }
 
     render json: state
   end
@@ -59,7 +62,10 @@ class VotesController < ApplicationController
 
     if vote.destroy
       AbilityQueue.add(post.user, "Vote Change on ##{post.id}")
-      render json: { status: 'OK', upvotes: post.upvote_count, downvotes: post.downvote_count }
+      render json: { status: 'OK',
+                     upvotes: post.upvote_count,
+                     downvotes: post.downvote_count,
+                     score: post.score }
     else
       render json: { status: 'failed', message: vote.errors.full_messages.join('. ') }, status: :forbidden
     end
diff --git a/app/helpers/advertisements/article_helper.rb b/app/helpers/advertisements/article_helper.rb
index 80a425c75c0fe1e83e0b0726834b8bda2205fb58..fc1dc9d619ea914e2e60affab3f6d539a410f90a 100644
--- a/app/helpers/advertisements/article_helper.rb
+++ b/app/helpers/advertisements/article_helper.rb
@@ -21,8 +21,8 @@ module Advertisements::ArticleHelper
       answer.font = './app/assets/imgfonts/Roboto-Bold.ttf'
       answer.pointsize = 40
       answer.gravity = CenterGravity
-      answer.annotate ad, 600, 120, 0, 10, 'Check out this article' do
-        self.fill = 'white'
+      answer.annotate ad, 600, 120, 0, 10, 'Check out this article' do |s|
+        s.fill = 'white'
       end
 
       icon_path = SiteSetting.find_by(name: 'SiteLogoPath', community: article.community).typed
@@ -37,8 +37,8 @@ module Advertisements::ArticleHelper
         community_name.font = './app/assets/imgfonts/Roboto-Bold.ttf'
         community_name.pointsize = 25
         community_name.gravity = SouthWestGravity
-        community_name.annotate ad, 0, 0, 20, 20, article.community.name do
-          self.fill = '#4B68FF'
+        community_name.annotate ad, 0, 0, 20, 20, article.community.name do |s|
+          s.fill = '#4B68FF'
         end
       end
 
@@ -48,8 +48,8 @@ module Advertisements::ArticleHelper
       community_url.font = './app/assets/imgfonts/Roboto-Bold.ttf'
       community_url.pointsize = 20
       community_url.gravity = SouthEastGravity
-      community_url.annotate ad, 0, 0, 20, 20, article.community.host do
-        self.fill = '#666666'
+      community_url.annotate ad, 0, 0, 20, 20, article.community.host do |s|
+        s.fill = '#666666'
       end
 
       title = Draw.new
@@ -62,15 +62,15 @@ module Advertisements::ArticleHelper
       if article.title.length > 60
         title.pointsize = 35
         wrap_text(do_rtl_witchcraft(article.title), 500, 35).split("\n").each do |line|
-          title.annotate ad, 500, 100, 50, 135 + (position * 55), line do
-            self.fill = '#333333'
+          title.annotate ad, 500, 100, 50, 135 + (position * 55), line do |s|
+            s.fill = '#333333'
           end
           position += 1
         end
       else
         wrap_text(do_rtl_witchcraft(article.title), 500, 55).split("\n").each do |line|
-          title.annotate ad, 500, 100, 50, 160 + (position * 70), line do
-            self.fill = '#333333'
+          title.annotate ad, 500, 100, 50, 160 + (position * 70), line do |s|
+            s.fill = '#333333'
           end
           position += 1
         end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 175469b04e4b9625388ac2e90fb7463f91109fe6..ac3009673883e3bee76d968a9bd9461031c1bc07 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -34,6 +34,10 @@ module ApplicationHelper
     uri.to_s
   end
 
+  def sign_in_link(title)
+    link_to title, new_user_session_url
+  end
+
   def license_link
     link_to SiteSetting['ContentLicenseName'], SiteSetting['ContentLicenseLink']
   end
@@ -91,6 +95,19 @@ module ApplicationHelper
     end
   end
 
+  def generic_share_link_md(post)
+    "[#{post.title}](#{generic_share_link(post)})"
+  end
+
+  def post_history_share_link(post, history, index)
+    post_history_url(post, anchor: history.size - index)
+  end
+
+  def post_history_share_link_md(post, history, index)
+    rev_num = history.size - index
+    "[Revision #{rev_num} — #{post.title}](#{post_history_share_link(post, history, index)})"
+  end
+
   def generic_edit_link(post)
     edit_post_url(post)
   end
@@ -177,4 +194,19 @@ module ApplicationHelper
       false
     end
   end
+
+  def current_commit
+    commit_info = Rails.cache.persistent('current_commit')
+    shasum, timestamp = commit_info
+
+    begin
+      date = DateTime.iso8601(timestamp)
+    rescue
+      date = DateTime.parse(timestamp)
+    end
+
+    [shasum, date]
+  rescue
+    [nil, nil]
+  end
 end
diff --git a/app/helpers/categories_helper.rb b/app/helpers/categories_helper.rb
index 68c77d120ccdf6e1727a082688b7706d9544babf..7efbc16177af38fe867cc23d921e407d40e13f3f 100644
--- a/app/helpers/categories_helper.rb
+++ b/app/helpers/categories_helper.rb
@@ -23,4 +23,10 @@ module CategoriesHelper
                             @article.category
                           end
   end
+
+  def pending_suggestions?
+    Rails.cache.fetch "pending_suggestions/#{current_category.id}" do
+      SuggestedEdit.where(post: Post.undeleted.where(category: current_category), active: true).any?
+    end
+  end
 end
diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb
index 636d0a95da83d71b995fae6886611a473b5596c2..548a269c958099487fa6609a140fddefa90238b8 100644
--- a/app/helpers/comments_helper.rb
+++ b/app/helpers/comments_helper.rb
@@ -81,8 +81,8 @@ end
 class CommentScrubber < Rails::Html::PermitScrubber
   def initialize
     super
-    self.tags = %w[a b i em strong s strike del pre code p blockquote span sup sub br]
-    self.attributes = %w[href title lang dir id class]
+    self.tags = %w[a b i em strong s strike del pre code p blockquote span sup sub br ul ol li]
+    self.attributes = %w[href title lang dir id class start]
   end
 
   def skip_node?(node)
diff --git a/app/helpers/edit_helper.rb b/app/helpers/edit_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..db4b05ad4a53b2c185c6fd076f82ac51d8ffcda7
--- /dev/null
+++ b/app/helpers/edit_helper.rb
@@ -0,0 +1,5 @@
+module EditHelper
+  def max_edit_comment_length
+    [SiteSetting['MaxEditCommentLength'] || 255, 255].min
+  end
+end
diff --git a/app/helpers/email_logs_helper.rb b/app/helpers/email_logs_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9b08eeb7ab077f6893d11dcab32b86e2d5241380
--- /dev/null
+++ b/app/helpers/email_logs_helper.rb
@@ -0,0 +1,2 @@
+module EmailLogsHelper
+end
diff --git a/app/helpers/markdown_tools_helper.rb b/app/helpers/markdown_tools_helper.rb
index 0c4f44c75a4379faff4cefa51b659da86fbc8c8d..9dbcaa85d210a920faeadf155ebd08575cdadca7 100644
--- a/app/helpers/markdown_tools_helper.rb
+++ b/app/helpers/markdown_tools_helper.rb
@@ -4,7 +4,8 @@ module MarkdownToolsHelper
                    class: "#{attribs[:class] || ''} button is-muted is-outlined js-markdown-tool",
                    data_action: action,
                    aria_label: label,
-                   title: label
+                   title: label,
+                   role: 'button'
     attribs.transform_keys! { |k| k.to_s.tr('_', '-') }.symbolize_keys!
     if name.nil? && block_given?
       tag.a(**attribs, &block)
@@ -18,7 +19,8 @@ module MarkdownToolsHelper
                    class: "#{attribs[:class] || ''}js-markdown-tool",
                    data_action: action,
                    aria_label: label,
-                   title: label
+                   title: label,
+                   role: 'button'
     attribs.transform_keys! { |k| k.to_s.tr('_', '-') }.symbolize_keys!
     if name.nil? && block_given?
       tag.a(**attribs, &block)
diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb
index 2c9e19ab61dd5932eb06a33f755709bc1798b72f..9fb810fd52b14927be5ba3cca663cd7ee1a479b3 100644
--- a/app/helpers/posts_helper.rb
+++ b/app/helpers/posts_helper.rb
@@ -15,6 +15,35 @@ module PostsHelper
     end
   end
 
+  # @param category [Category, Nil]
+  # @return [Integer] the minimum length for post bodies
+  def min_body_length(category)
+    category&.min_body_length || 30
+  end
+
+  # @param _category [Category, Nil]
+  # @return [Integer] the maximum length for post bodies
+  def max_body_length(_category)
+    30_000
+  end
+
+  # @param category [Category, Nil] post category, if any
+  # @param post_type [PostType] type of the post (system limits are relaxed)
+  # @return [Integer] the minimum length for post titles
+  def min_title_length(category, post_type)
+    if post_type.system?
+      1
+    else
+      category&.min_title_length || 15
+    end
+  end
+
+  # @param _category [Category, Nil]
+  # @return [Integer] the maximum length for post titles
+  def max_title_length(_category)
+    [SiteSetting['MaxTitleLength'] || 255, 255].min
+  end
+
   class PostScrubber < Rails::Html::PermitScrubber
     def initialize
       super
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index f5786839acd0e703e059e6668ebcb5f73769d051..fe21b7d3533db78d788ba611a86323b7596e2a8a 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -1,4 +1,104 @@
 module SearchHelper
+  def check_posts_permissions
+    (current_user&.is_moderator || current_user&.is_admin ? Post : Post.undeleted)
+      .qa_only.list_includes
+  end
+
+  def search_posts
+    posts = check_posts_permissions
+
+    qualifiers = params_to_qualifiers
+    search_string = params[:search]
+
+    # Filter based on search string qualifiers
+    if search_string.present?
+      search_data = parse_search(search_string)
+      qualifiers += parse_qualifier_strings search_data[:qualifiers]
+      search_string = search_data[:search]
+    end
+
+    posts = qualifiers_to_sql(qualifiers, posts)
+    posts = posts.paginate(page: params[:page], per_page: 25)
+
+    posts = if search_string.present?
+              posts.search(search_data[:search]).user_sort({ term: params[:sort], default: :search_score },
+                                                           relevance: :search_score, score: :score, age: :created_at)
+            else
+              posts.user_sort({ term: params[:sort], default: :score },
+                              score: :score, age: :created_at)
+            end
+
+    [posts, qualifiers]
+  end
+
+  # Convert a Filter record into a form parseable by the search function
+  def filter_to_qualifiers(filter)
+    qualifiers = []
+    qualifiers.append({ param: :score, operator: '>=', value: filter.min_score }) unless filter.min_score.nil?
+    qualifiers.append({ param: :score, operator: '<=', value: filter.max_score }) unless filter.max_score.nil?
+    qualifiers.append({ param: :answers, operator: '>=', value: filter.min_answers }) unless filter.min_answers.nil?
+    qualifiers.append({ param: :answers, operator: '<=', value: filter.max_answers }) unless filter.max_answers.nil?
+    qualifiers.append({ param: :include_tags, tag_ids: filter.include_tags }) unless filter.include_tags.nil?
+    qualifiers.append({ param: :exclude_tags, tag_ids: filter.exclude_tags }) unless filter.exclude_tags.nil?
+    qualifiers.append({ param: :status, value: filter.status }) unless filter.status.nil?
+    qualifiers
+  end
+
+  def active_filter
+    {
+      default: nil,
+      name: params[:predefined_filter],
+      min_score: params[:min_score],
+      max_score: params[:max_score],
+      min_answers: params[:min_answers],
+      max_answers: params[:max_answers],
+      include_tags: params[:include_tags],
+      exclude_tags: params[:exclude_tags],
+      status: params[:status]
+    }
+  end
+
+  def params_to_qualifiers
+    valid_value = {
+      date: /^[\d.]+(?:s|m|h|d|w|mo|y)?$/,
+      status: /any|open|closed/,
+      numeric: /^[\d.]+$/,
+      integer: /^\d+$/
+    }
+
+    filter_qualifiers = []
+
+    if params[:min_score]&.match?(valid_value[:numeric])
+      filter_qualifiers.append({ param: :score, operator: '>=', value: params[:min_score].to_f })
+    end
+
+    if params[:max_score]&.match?(valid_value[:numeric])
+      filter_qualifiers.append({ param: :score, operator: '<=', value: params[:max_score].to_f })
+    end
+
+    if params[:min_answers]&.match?(valid_value[:numeric])
+      filter_qualifiers.append({ param: :answers, operator: '>=', value: params[:min_answers].to_i })
+    end
+
+    if params[:max_answers]&.match?(valid_value[:numeric])
+      filter_qualifiers.append({ param: :answers, operator: '<=', value: params[:max_answers].to_i })
+    end
+
+    if params[:status]&.match?(valid_value[:status])
+      filter_qualifiers.append({ param: :status, value: params[:status] })
+    end
+
+    if params[:include_tags]&.all? { |id| id.match? valid_value[:integer] }
+      filter_qualifiers.append({ param: :include_tags, tag_ids: params[:include_tags] })
+    end
+
+    if params[:exclude_tags]&.all? { |id| id.match? valid_value[:integer] }
+      filter_qualifiers.append({ param: :exclude_tags, tag_ids: params[:exclude_tags] })
+    end
+
+    filter_qualifiers
+  end
+
   def parse_search(raw_search)
     qualifiers_regex = /([\w\-_]+(?<!\\):[^ ]+)/
     qualifiers = raw_search.scan(qualifiers_regex).flatten
@@ -11,13 +111,14 @@ module SearchHelper
   end
 
   # rubocop:disable Metrics/CyclomaticComplexity
-  def qualifiers_to_sql(qualifiers, query)
+  def parse_qualifier_strings(qualifiers)
     valid_value = {
       date: /^[<>=]{0,2}[\d.]+(?:s|m|h|d|w|mo|y)?$/,
+      status: /any|open|closed/,
       numeric: /^[<>=]{0,2}[\d.]+$/
     }
 
-    qualifiers.each do |qualifier| # rubocop:disable Metrics/BlockLength
+    qualifiers.map do |qualifier| # rubocop:disable Metrics/BlockLength
       splat = qualifier.split ':'
       parameter = splat[0]
       value = splat[1]
@@ -27,59 +128,111 @@ module SearchHelper
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
-        query = query.where("score #{operator.presence || '='} ?", val.to_f)
+        { param: :score, operator: operator.presence || '=', value: val.to_f }
       when 'created'
         next unless value.match?(valid_value[:date])
 
         operator, val, timeframe = date_value_sql value
-        query = query.where("created_at #{operator.presence || '='} DATE_SUB(CURRENT_TIMESTAMP, " \
-                            "INTERVAL ? #{timeframe})",
-                            val.to_i)
+        { param: :created, operator: operator.presence || '=', timeframe: timeframe, value: val.to_i }
       when 'user'
-        next unless value.match?(valid_value[:numeric])
+        operator, val = if value.match?(valid_value[:numeric])
+                          numeric_value_sql value
+                        elsif value == 'me'
+                          ['=', current_user&.id&.to_i]
+                        else
+                          next
+                        end
 
-        operator, val = numeric_value_sql value
-        query = query.where("user_id #{operator.presence || '='} ?", val.to_i)
+        { param: :user, operator: operator.presence || '=', user_id: val }
       when 'upvotes'
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
-        query = query.where("upvotes #{operator.presence || '='} ?", val.to_i)
+        { param: :upvotes, operator: operator.presence || '=', value: val.to_i }
       when 'downvotes'
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
-        query = query.where("downvotes #{operator.presence || '='} ?", val.to_i)
+        { param: :downvotes, operator: operator.presence || '=', value: val.to_i }
       when 'votes'
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
-        query = query.where("(upvotes - downvotes) #{operator.presence || '='}", val.to_i)
+        { param: :net_votes, operator: operator.presence || '=', value: val.to_i }
       when 'tag'
-        query = query.where(posts: { id: PostsTag.where(tag_id: Tag.where(name: value).select(:id)).select(:post_id) })
+        { param: :include_tag, tag_id: Tag.where(name: value).select(:id) }
       when '-tag'
-        query = query.where.not(posts: { id: PostsTag.where(tag_id: Tag.where(name: value).select(:id))
-                                                     .select(:post_id) })
+        { param: :exclude_tag, tag_id: Tag.where(name: value).select(:id) }
       when 'category'
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
-        trust_level = current_user&.trust_level || 0
-        allowed_categories = Category.where('IFNULL(min_view_trust_level, -1) <= ?', trust_level)
-        query = query.where("category_id #{operator.presence || '='} ?", val.to_i)
-                     .where(category_id: allowed_categories)
+        { param: :category, operator: operator.presence || '=', category_id: val.to_i }
       when 'post_type'
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
-        query = query.where("post_type_id #{operator.presence || '='} ?", val.to_i)
+        { param: :post_type, operator: operator.presence || '=', post_type_id: val.to_i }
       when 'answers'
         next unless value.match?(valid_value[:numeric])
 
         operator, val = numeric_value_sql value
+        { param: :answers, operator: operator.presence || '=', value: val.to_i }
+      when 'status'
+        next unless value.match?(valid_value[:status])
+
+        { param: :status, value: value }
+      end
+    end.compact
+    # Consider partitioning and telling the user which filters were invalid
+  end
+
+  def qualifiers_to_sql(qualifiers, query)
+    trust_level = current_user&.trust_level || 0
+    allowed_categories = Category.where('IFNULL(min_view_trust_level, -1) <= ?', trust_level)
+    query = query.where(category_id: allowed_categories)
+
+    qualifiers.each do |qualifier| # rubocop:disable Metrics/BlockLength
+      case qualifier[:param]
+      when :score
+        query = query.where("score #{qualifier[:operator]} ?", qualifier[:value])
+      when :created
+        query = query.where("created_at #{qualifier[:operator]} DATE_SUB(CURRENT_TIMESTAMP, " \
+                            "INTERVAL ? #{qualifier[:timeframe]})",
+                            qualifier[:value])
+      when :user
+        query = query.where("user_id #{qualifier[:operator]} ?", qualifier[:user_id])
+      when :upvotes
+        query = query.where("upvote_count #{qualifier[:operator]} ?", qualifier[:value])
+      when :downvotes
+        query = query.where("downvote_count #{qualifier[:operator]} ?", qualifier[:value])
+      when :net_votes
+        query = query.where("(upvote_count - downvote_count) #{qualifier[:operator]} ?", qualifier[:value])
+      when :include_tag
+        query = query.where(posts: { id: PostsTag.where(tag_id: qualifier[:tag_id]).select(:post_id) })
+      when :include_tags
+        qualifier[:tag_ids].each do |id|
+          query = query.where(id: PostsTag.where(tag_id: id).select(:post_id))
+        end
+      when :exclude_tag
+        query = query.where.not(posts: { id: PostsTag.where(tag_id: qualifier[:tag_id]).select(:post_id) })
+      when :exclude_tags
+        query = query.where.not(id: PostsTag.where(tag_id: qualifier[:tag_ids]).select(:post_id))
+      when :category
+        query = query.where("category_id #{qualifier[:operator]} ?", qualifier[:category_id])
+      when :post_type
+        query = query.where("post_type_id #{qualifier[:operator]} ?", qualifier[:post_type_id])
+      when :answers
         post_types_with_answers = PostType.where(has_answers: true)
-        query = query.where("answer_count #{operator.presence || '='} ?", val.to_i)
+        query = query.where("answer_count #{qualifier[:operator]} ?", qualifier[:value])
                      .where(post_type_id: post_types_with_answers)
+      when :status
+        case qualifier[:value]
+        when 'open'
+          query = query.where(closed: false)
+        when 'closed'
+          query = query.where(closed: true)
+        end
       end
     end
 
diff --git a/app/helpers/users/avatar_helper.rb b/app/helpers/users/avatar_helper.rb
index af86fc68950bf2e957ab8d3abfdd1615cd064c59..6a6686f2785c8d4f4f1801ac08d04d7231b41452 100644
--- a/app/helpers/users/avatar_helper.rb
+++ b/app/helpers/users/avatar_helper.rb
@@ -35,8 +35,8 @@ module Users::AvatarHelper
       let.font = './app/assets/imgfonts/Roboto.ttf'
       let.pointsize = size * 0.75
       let.gravity = CenterGravity
-      let.annotate ava, size, size * 1.16, 0, 0, letter.upcase do
-        self.fill = text_color
+      let.annotate ava, size, size * 1.16, 0, 0, letter.upcase do |s|
+        s.fill = text_color
       end
 
       ava.format = 'PNG'
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index 2ebc8c27cacda0954185d3f31676527881ec197d..a689060d0dff293d0379c67f84e8905327d8e0f1 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -30,6 +30,21 @@ module UsersHelper
     end
   end
 
+  def default_filter(user_id, category_id)
+    CategoryFilterDefault.find_by(user_id: user_id, category_id: category_id)&.filter
+  end
+
+  def set_filter_default(user_id, filter_id, category_id, keep)
+    if keep
+      CategoryFilterDefault.create_with(filter_id: filter_id)
+                           .find_or_create_by(user_id: user_id, category_id: category_id)
+                           .update(filter_id: filter_id)
+    else
+      CategoryFilterDefault.where(user_id: user_id, category_id: category_id)
+                           .destroy_all
+    end
+  end
+
   def user_preference(name, community: false)
     return nil if current_user.nil?
 
@@ -44,11 +59,37 @@ module UsersHelper
     deleted_user?(user) ? 'deleted user' : user.rtl_safe_username
   end
 
-  def user_link(user, **link_opts)
-    if deleted_user?(user)
-      link_to 'deleted user', '#', { dir: 'ltr' }.merge(link_opts)
+  def user_link(user, url_opts = nil, **link_opts)
+    url_opts ||= {}
+    anchortext = link_opts[:anchortext]
+    link_opts_reduced = { dir: 'ltr' }.merge(link_opts).except(:anchortext)
+    if !anchortext.nil?
+      link_to anchortext, user_url(user, **url_opts), { dir: 'ltr' }.merge(link_opts)
+    elsif deleted_user?(user)
+      link_to 'deleted user', '#', link_opts_reduced
+    else
+      link_to user.rtl_safe_username, user_url(user, **url_opts), link_opts_reduced
+    end
+  end
+
+  def sso_sign_in_enabled?
+    SiteSetting['SsoSignIn']
+  end
+
+  def devise_sign_in_enabled?
+    SiteSetting['MixedSignIn'] || !sso_sign_in_enabled?
+  end
+
+  ##
+  # Returns a user corresponding to the ID provided, with the caveat that if +user_id+ is 'me' and there is a user
+  # signed in, the signed in user will be returned. Use for /users/me links.
+  # @param [String] user_id The user ID to find, from +params+
+  # @return [User] The User object
+  def user_with_me(user_id)
+    if user_id == 'me' && user_signed_in?
+      current_user
     else
-      link_to user.rtl_safe_username, user_url(user), { dir: 'ltr' }.merge(link_opts)
+      User.find(user_id)
     end
   end
 end
diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb
new file mode 100644
index 0000000000000000000000000000000000000000..d394c3d106230849e4ff6f4020d41b3e62589061
--- /dev/null
+++ b/app/jobs/application_job.rb
@@ -0,0 +1,7 @@
+class ApplicationJob < ActiveJob::Base
+  # Automatically retry jobs that encountered a deadlock
+  # retry_on ActiveRecord::Deadlocked
+
+  # Most jobs are safe to ignore if the underlying records are no longer available
+  # discard_on ActiveJob::DeserializationError
+end
diff --git a/app/jobs/clean_up_spammy_users_job.rb b/app/jobs/clean_up_spammy_users_job.rb
new file mode 100644
index 0000000000000000000000000000000000000000..001afda5f5678ca4e0654e68a544a330afb7abec
--- /dev/null
+++ b/app/jobs/clean_up_spammy_users_job.rb
@@ -0,0 +1,22 @@
+class CleanUpSpammyUsersJob < ApplicationJob
+  queue_as :default
+
+  def perform(created_after: 1.month.ago)
+    # Select potential spammers: users created within timeframe, who are not deleted, who have posted but all posts have
+    # since been deleted (no live posts).
+    possible_spammers = User.joins('inner join posts on users.id = posts.user_id')
+                            .where('users.created_at >= ?', created_after)
+                            .where(users: { deleted: false }).group('users.id').having('count(posts.id) > 0')
+                            .having('count(distinct if(posts.deleted = true, null, posts.id)) = 0')
+    possible_spammers.each do |spammer|
+      all_posts_spam = spammer.posts.all? do |post|
+        # A post is considered spam if there are any helpful spam flags on it.
+        post.flags.any? { |flag| flag.post_flag_type.name == "it's spam" && flag.status == 'helpful' }
+      end
+      if all_posts_spam
+        spammer.block('automatic block from spam cleanup job', length: 2.years)
+        spammer.do_soft_delete(User.find(-1))
+      end
+    end
+  end
+end
diff --git a/app/jobs/cleanup_votes_job.rb b/app/jobs/cleanup_votes_job.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b54b26be7c2f817056474af7ae57c09cbfe91a1a
--- /dev/null
+++ b/app/jobs/cleanup_votes_job.rb
@@ -0,0 +1,32 @@
+class CleanupVotesJob < ApplicationJob
+  queue_as :default
+
+  def perform
+    Community.all.each do |c|
+      RequestContext.community = c
+      orphan_votes = Vote.all.reject { |v| v.post.present? }
+
+      puts "[#{c.name}] destroying #{orphan_votes.length} #{'orphan vote'.pluralize(orphan_votes.length)}"
+
+      system_user = User.find(-1)
+
+      orphan_votes.each do |v|
+        result = v.destroy
+
+        if result
+          AuditLog.admin_audit(
+            comment: "Deleted orphaned vote for user ##{v.recv_user_id} " \
+                     "on post ##{v.post_id} " \
+                     "in community ##{c.id} (#{c.name})",
+            event_type: 'vote_delete',
+            related: v,
+            user: system_user
+          )
+        else
+          puts "[#{c.name}] failed to destroy vote \"#{v.id}\""
+          v.errors.each { |e| puts e.full_message }
+        end
+      end
+    end
+  end
+end
diff --git a/app/mailers/admin_mailer.rb b/app/mailers/admin_mailer.rb
index a68f9c55c2c0aa6026a96efeeeab838cdf961377..f4f0d2606bb89bb3652405e637620e2e370013f5 100644
--- a/app/mailers/admin_mailer.rb
+++ b/app/mailers/admin_mailer.rb
@@ -1,5 +1,8 @@
 class AdminMailer < ApplicationMailer
-  default from: 'Codidact Admins <moderators-noreply@codidact.com>'
+  default from: lambda {
+                  "#{SiteSetting['ModeratorDistributionListSenderName']} " \
+                    "<#{SiteSetting['ModeratorDistributionListSenderEmail']}>"
+                }
 
   def to_moderators
     @subject = params[:subject]
@@ -8,6 +11,19 @@ class AdminMailer < ApplicationMailer
             "INNER JOIN community_users cu ON cu.user_id = u.id WHERE s.type = 'moderators' AND " \
             '(u.is_global_admin = 1 OR u.is_global_moderator = 1 OR cu.is_admin = 1 OR cu.is_moderator = 1)'
     emails = ActiveRecord::Base.connection.execute(query).to_a.flatten
-    mail subject: "Codidact Moderators: #{@subject}", to: 'moderators-noreply@codidact.org', bcc: emails
+    from = "#{SiteSetting['ModeratorDistributionListSenderName']} " \
+           "<#{SiteSetting['ModeratorDistributionListSenderEmail']}>"
+    to = SiteSetting['ModeratorDistributionListSenderEmail']
+    mail subject: "Codidact Moderators: #{@subject}", to: to, from: from, bcc: emails
+  end
+
+  def to_all_users
+    @subject = params[:subject]
+    @body_markdown = params[:body_markdown]
+    @users = User.where('email NOT LIKE ?', '%localhost').select(:email).map(&:email)
+    to = SiteSetting['AllUsersSenderEmail']
+    from = "#{SiteSetting['AllUsersSenderName']} <#{SiteSetting['AllUsersSenderEmail']}>"
+    reply_to = SiteSetting['AllUsersReplyToEmail']
+    mail subject: @subject, to: to, from: from, reply_to: reply_to, bcc: @users
   end
 end
diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb
index 59f7ed59f28d7fa1dda12bea2986ad23fdba3c37..45f5f0f87aaf4248d7cb606a8d0c8d313a52f0c4 100644
--- a/app/mailers/application_mailer.rb
+++ b/app/mailers/application_mailer.rb
@@ -1,4 +1,4 @@
 class ApplicationMailer < ActionMailer::Base
-  default from: 'Codidact <noreply@codidact.com>'
+  default from: -> { "#{SiteSetting['NoReplySenderName']} <#{SiteSetting['NoReplySenderEmail']}>" }
   layout 'mailer'
 end
diff --git a/app/mailers/donation_mailer.rb b/app/mailers/donation_mailer.rb
index ee6b79854b0007e56d6b2c22ac876981ddce1a9a..587ae6009b5aef75e1b21d65b591d046e0374327 100644
--- a/app/mailers/donation_mailer.rb
+++ b/app/mailers/donation_mailer.rb
@@ -4,9 +4,9 @@ class DonationMailer < ApplicationMailer
     @amount = params[:amount]
     @email = params[:email]
     @name = params[:name]
-    mail from: 'Codidact Donations <donations-support@codidact.com>',
-         reply_to: 'Codidact Support <support@codidact.com>',
-         to: @email, subject: 'Thanks for your donation!'
+    from = "#{SiteSetting['DonationSenderName']} <#{SiteSetting['DonationSenderEmail']}>"
+    reply_to = "#{SiteSetting['DonationSupportReceiverName']} <#{SiteSetting['DonationSupportReceiverEmail']}>"
+    mail from: from, reply_to: reply_to, to: @email, subject: 'Thanks for your donation!'
   end
 
   def donation_uncaptured
@@ -15,8 +15,8 @@ class DonationMailer < ApplicationMailer
     @email = params[:email]
     @name = params[:name]
     @intent = params[:intent]
-    mail from: 'Codidact Donations <donations-support@codidact.com>',
-         reply_to: 'Codidact Support <support@codidact.com>',
-         to: @email, subject: 'Your donation is unfinished - was everything okay?'
+    from = "#{SiteSetting['DonationSenderName']} <#{SiteSetting['DonationSenderEmail']}>"
+    reply_to = "#{SiteSetting['DonationSupportReceiverName']} <#{SiteSetting['DonationSupportReceiverEmail']}>"
+    mail from: from, reply_to: reply_to, to: @email, subject: 'Your donation is unfinished - was everything okay?'
   end
 end
diff --git a/app/mailers/flag_mailer.rb b/app/mailers/flag_mailer.rb
index 9eb0f716815b41f80690fc33be168dd9e0cfe19e..b43d60310562ddfaddb92c0e9b93b62fa3cb0d77 100644
--- a/app/mailers/flag_mailer.rb
+++ b/app/mailers/flag_mailer.rb
@@ -7,7 +7,8 @@ class FlagMailer < ApplicationMailer
                  .or(User.joins(:community_user)
                          .where(community_users: { is_admin: true, community_id: @flag.community_id }))
                  .select(:email).map(&:email)
-    mail from: 'Codidact <noreply@codidact.com>', to: 'noreply@codidact.com', bcc: emails,
-         subject: "New flag escalation on #{@flag.community.name}"
+    from = "#{SiteSetting['NoReplySenderName']} <#{SiteSetting['NoReplySenderEmail']}>"
+    to = SiteSetting['NoReplySenderEmail']
+    mail from: from, to: to, bcc: emails, subject: "New flag escalation on #{@flag.community.name}"
   end
 end
diff --git a/app/mailers/subscription_mailer.rb b/app/mailers/subscription_mailer.rb
index 2c6687890c4dbe19d11644f1b4136fa730b0482d..6261e13bf365b2f7fd2183c43ae307a2b97e004c 100644
--- a/app/mailers/subscription_mailer.rb
+++ b/app/mailers/subscription_mailer.rb
@@ -1,4 +1,6 @@
 class SubscriptionMailer < ApplicationMailer
+  helper UsersHelper
+
   def subscription
     @subscription = params[:subscription]
     @questions = @subscription.questions&.includes(:user) || []
@@ -9,14 +11,20 @@ class SubscriptionMailer < ApplicationMailer
       return
     end
 
+    # Load request community to ensure we can access the settings/posts of the correct community
+    RequestContext.community = @subscription.community
+    name = @subscription.name
     site_name = @subscription.community.name
-    subject = if @subscription.name.present?
-                "Latest questions from your '#{@subscription.name}' subscription on #{site_name}"
+    subject = if name.present?
+                "Latest questions from your '#{name}' subscription on #{site_name}"
               else
                 "Latest questions from your subscription on #{site_name}"
               end
 
     @subscription.update(last_sent_at: DateTime.now)
-    mail from: 'Codidact Subscriptions <subscriptions@codidact.com>', to: @subscription.user.email, subject: subject
+    from = "#{SiteSetting['SubscriptionSenderName']} <#{SiteSetting['SubscriptionSenderEmail']}>"
+    to = @subscription.user.email
+    mail from: from, to: to, subject: subject
+    Rails.logger.info "Sent subscription mail (sub ID ##{@subscription.id}, to: '#{to}', name: '#{name}'"
   end
 end
diff --git a/app/mailers/two_factor_mailer.rb b/app/mailers/two_factor_mailer.rb
index de656dd7c5731846ca80d4f9684d0791fe2201e8..2784ab9be7961c16c4053ded1785b97a703fc4b1 100644
--- a/app/mailers/two_factor_mailer.rb
+++ b/app/mailers/two_factor_mailer.rb
@@ -1,5 +1,5 @@
 class TwoFactorMailer < ApplicationMailer
-  default from: 'Codidact <noreply@codidact.com>'
+  default from: -> { "#{SiteSetting['NoReplySenderName']} <#{SiteSetting['NoReplySenderEmail']}>" }
 
   def disable_email
     user = params[:user]
@@ -16,4 +16,10 @@ class TwoFactorMailer < ApplicationMailer
     user.update(login_token: @token, login_token_expires_at: 5.minutes.from_now)
     mail to: user.email, subject: 'Your sign in link for Codidact'
   end
+
+  def backup_code
+    @user = params[:user]
+    @host = params[:host]
+    mail to: @user.email, subject: 'Your 2FA backup code for Codidact'
+  end
 end
diff --git a/app/models/application_record.rb b/app/models/application_record.rb
index 0e552701f6f5cd9c2a9182f716b16f79ad79b75f..2f0d184b0756bfaa7c6d3d36babadfdc66a17114 100644
--- a/app/models/application_record.rb
+++ b/app/models/application_record.rb
@@ -107,11 +107,11 @@ module UserSortable
   end
 end
 
-klasses = [::ActiveRecord::Relation]
-klasses << if defined? ::ActiveRecord::Associations::CollectionProxy
-             ::ActiveRecord::Associations::CollectionProxy
+klasses = [ActiveRecord::Relation]
+klasses << if defined? ActiveRecord::Associations::CollectionProxy
+             ActiveRecord::Associations::CollectionProxy
            else
-             ::ActiveRecord::Associations::AssociationCollection
+             ActiveRecord::Associations::AssociationCollection
            end
 
 ActiveRecord::Base.extend UserSortable
diff --git a/app/models/category.rb b/app/models/category.rb
index 9cdaea7650374ce3646ce8240c7c98569511aa67..f5951519cd7ded62a96323dd016169eba8632578 100644
--- a/app/models/category.rb
+++ b/app/models/category.rb
@@ -9,6 +9,7 @@ class Category < ApplicationRecord
   has_many :posts
   belongs_to :tag_set
   belongs_to :license
+  belongs_to :default_filter, class_name: 'Filter', optional: true
 
   serialize :display_post_types, Array
 
diff --git a/app/models/category_filter_default.rb b/app/models/category_filter_default.rb
new file mode 100644
index 0000000000000000000000000000000000000000..540f1cf789ba384dff21a266e47f15282d89426f
--- /dev/null
+++ b/app/models/category_filter_default.rb
@@ -0,0 +1,5 @@
+class CategoryFilterDefault < ApplicationRecord
+  belongs_to :user
+  belongs_to :filter
+  belongs_to :category
+end
diff --git a/app/models/community_user.rb b/app/models/community_user.rb
index a62926dcc7b8e55872e1f63f3dd5fb7ad404b753..f0a80e60fc035ca7e38489593e46f3a8a0076b88 100644
--- a/app/models/community_user.rb
+++ b/app/models/community_user.rb
@@ -14,6 +14,12 @@ class CommunityUser < ApplicationRecord
 
   after_create :prevent_ulysses_case
 
+  delegate :url_helpers, to: 'Rails.application.routes'
+
+  def system?
+    user_id == -1
+  end
+
   def suspended?
     return true if is_suspended && !suspension_end.past?
 
@@ -24,6 +30,10 @@ class CommunityUser < ApplicationRecord
     false
   end
 
+  def latest_warning
+    mod_warnings&.order(created_at: 'desc')&.first&.created_at
+  end
+
   # Calculation functions for privilege scores
   # These are quite expensive, so we'll cache them for a while
   def post_score
@@ -54,8 +64,6 @@ class CommunityUser < ApplicationRecord
     end
   end
 
-  ## Privilege functions
-
   def privilege?(internal_id, ignore_suspension: false, ignore_mod: false)
     if internal_id != 'mod' && !ignore_mod && user.is_moderator
       return true # includes: privilege? 'mod'
@@ -73,11 +81,26 @@ class CommunityUser < ApplicationRecord
     UserAbility.joins(:ability).where(community_user_id: id, abilities: { internal_id: internal_id }).first
   end
 
-  def grant_privilege(internal_id)
+  ##
+  # Grant a specified ability to this CommunityUser.
+  # @param internal_id [String] The +internal_id+ of the ability to grant.
+  # @param notify [Boolean] Whether to send a notification to the user.
+  def grant_privilege!(internal_id, notify: true)
     priv = Ability.where(internal_id: internal_id).first
     UserAbility.create community_user_id: id, ability: priv
+    if notify
+      community_host = priv.community.host
+      user.create_notification("You've earned the #{priv.name} ability! Learn more.",
+                               url_helpers.ability_url(priv.internal_id, host: community_host))
+    end
   end
 
+  ##
+  # Recalculate a specified ability for this CommunityUser. Will not revoke abilities that have already been granted.
+  # @param internal_id [String] The +internal_id+ of the ability to be recalculated.
+  # @param sandbox [Boolean] Whether to run in sandbox mode - if sandboxed, the ability will not be granted but the
+  #   return value indicates whether it would have been.
+  # @return [Boolean] Whether or not the ability was granted.
   def recalc_privilege(internal_id, sandbox: false)
     # Do not recalculate privileges already granted
     return true if privilege?(internal_id, ignore_suspension: true, ignore_mod: false)
@@ -96,17 +119,27 @@ class CommunityUser < ApplicationRecord
     end
 
     # If not sandbox mode, create new privilege entry
-    grant_privilege(internal_id) unless sandbox
+    grant_privilege!(internal_id) unless sandbox
     recalc_trust_level unless sandbox
     true
   end
 
+  ##
+  # Recalculate a list of standard abilities for this CommunityUser.
+  # @param sandbox [Boolean] Whether to run in sandbox mode - see {#recalc_privilege}.
+  # @return [Array<Boolean>]
   def recalc_privileges(sandbox: false)
     [:everyone, :unrestricted, :edit_posts, :edit_tags, :flag_close, :flag_curate].map do |ability|
       recalc_privilege(ability, sandbox: sandbox)
     end
   end
 
+  alias ability? privilege?
+  alias ability privilege
+  alias grant_ability! grant_privilege!
+  alias recalc_ability recalc_privilege
+  alias recalc_abilities recalc_privileges
+
   # This check makes sure that every user gets the
   # 'everyone' permission upon creation. We do not want
   # to create a no permissions user by accident.
diff --git a/app/models/concerns/edits_validations.rb b/app/models/concerns/edits_validations.rb
new file mode 100644
index 0000000000000000000000000000000000000000..11b4b98fd5b46305584d3173c4bcf5e1e51a412f
--- /dev/null
+++ b/app/models/concerns/edits_validations.rb
@@ -0,0 +1,21 @@
+# Common validations for unilateral & suggested edits
+module EditsValidations
+  extend ActiveSupport::Concern
+
+  included do
+    validate :max_edit_comment_length
+  end
+
+  def max_edit_comment_length
+    if comment.nil?
+      return
+    end
+
+    max_edit_comment_length = SiteSetting['MaxEditCommentLength']
+    max_length = [(max_edit_comment_length || 255), 255].min
+    if comment.length > max_length
+      msg = I18n.t('edits.max_edit_comment_length', { count: max_length }).gsub(':length', max_length.to_s)
+      errors.add(:base, msg)
+    end
+  end
+end
diff --git a/app/models/concerns/post_validations.rb b/app/models/concerns/post_validations.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a0986b345f9da939744c7702a0d73094d11e8b29
--- /dev/null
+++ b/app/models/concerns/post_validations.rb
@@ -0,0 +1,84 @@
+# Validations for posts which are shared between posts and suggested edits.
+module PostValidations
+  extend ActiveSupport::Concern
+
+  included do
+    validate :tags_in_tag_set, if: -> { post_type.has_tags }
+    validate :maximum_tags, if: -> { post_type.has_tags }
+    validate :maximum_tag_length, if: -> { post_type.has_tags }
+    validate :no_spaces_in_tags, if: -> { post_type.has_tags }
+    validate :stripped_minimum_body, if: -> { !body_markdown.nil? }
+    validate :stripped_minimum_title, if: -> { !title.nil? }
+    validate :maximum_title_length, if: -> { !title.nil? }
+    validate :required_tags?, if: -> { post_type.has_tags && post_type.has_category }
+  end
+
+  def maximum_tags
+    if tags_cache.length > 5
+      errors.add(:base, "Post can't have more than 5 tags.")
+    elsif tags_cache.empty?
+      errors.add(:base, 'Post must have at least one tag.')
+    end
+  end
+
+  def maximum_tag_length
+    tags_cache.each do |tag|
+      max_len = SiteSetting['MaxTagLength']
+      if tag.length > max_len
+        errors.add(:tags, "can't be more than #{max_len} characters long each")
+      end
+    end
+  end
+
+  def no_spaces_in_tags
+    tags_cache.each do |tag|
+      if tag.include?(' ') || tag.include?('_')
+        errors.add(:tags, 'may not include spaces or underscores - use hyphens for multiple-word tags')
+      end
+    end
+  end
+
+  def stripped_minimum_body
+    min_body = category.nil? ? 30 : category.min_body_length
+    if (body_markdown&.gsub(/(?:^[\s\t\u2000-\u200F]+|[\s\t\u2000-\u200F]+$)/, '')&.length || 0) < min_body
+      errors.add(:body, "must be more than #{min_body} non-whitespace characters long")
+    end
+  end
+
+  def stripped_minimum_title
+    min_title = if ['HelpDoc', 'PolicyDoc'].include?(post_type.name)
+                  1
+                elsif category.nil?
+                  15
+                else
+                  category.min_title_length
+                end
+
+    if (title&.gsub(/(?:^[\s\t\u2000-\u200F]+|[\s\t\u2000-\u200F]+$)/, '')&.length || 0) < min_title
+      errors.add(:title, "must be more than #{min_title} non-whitespace characters long")
+    end
+  end
+
+  def maximum_title_length
+    max_title_len = SiteSetting['MaxTitleLength']
+    if title.length > [(max_title_len || 255), 255].min
+      errors.add(:title, "can't be more than #{max_title_len} characters")
+    end
+  end
+
+  def tags_in_tag_set
+    tag_set = category.tag_set
+    unless tags.all? { |t| t.tag_set_id == tag_set.id }
+      errors.add(:base, "Not all of this question's tags are in the correct tag set.")
+    end
+  end
+
+  def required_tags?
+    required = category&.required_tag_ids
+    return unless required.present? && !required.empty?
+
+    unless tag_ids.any? { |t| required.include? t }
+      errors.add(:tags, "must contain at least one required tag (#{category.required_tags.pluck(:name).join(', ')})")
+    end
+  end
+end
diff --git a/app/models/concerns/saml_init.rb b/app/models/concerns/saml_init.rb
new file mode 100644
index 0000000000000000000000000000000000000000..3709b87ecc559c5716bf3c0355ebee26514805a9
--- /dev/null
+++ b/app/models/concerns/saml_init.rb
@@ -0,0 +1,128 @@
+# Module for saml based initalization.
+#
+# The saml_init_email method is used to initialize the email address after a successful SSO sign in.
+# The saml_init_identifier method is used to
+module SamlInit
+  extend ActiveSupport::Concern
+
+  included do
+    has_one :sso_profile, required: false, autosave: true, dependent: :destroy
+
+    before_validation :prepare_from_saml, if: -> { saml_identifier.present? }
+  end
+
+  # -----------------------------------------------------------------------------------------------
+  # Identifier
+  # -----------------------------------------------------------------------------------------------
+
+  # @return [String, Nil] the saml_identifier of this user, or nil if the user is not from SSO
+  def saml_identifier
+    sso_profile&.saml_identifier
+  end
+
+  # @param saml_identifier [String, Nil] sets (or clears) the saml_identifier of this user
+  def saml_identifier=(saml_identifier)
+    if saml_identifier.nil?
+      sso_profile&.destroy
+    else
+      build_sso_profile if sso_profile.nil?
+      sso_profile.saml_identifier = saml_identifier
+    end
+  end
+
+  # This method is added as a fallback to support the Single Logout Service.
+  #
+  # @return [String, Nil] the saml_identifier of this user, or nil if the user is not from SSO
+  # @see #saml_identifier
+  def saml_init_identifier
+    saml_identifier
+  end
+
+  # Sets the saml_identifier to the given saml_identifier upon initialization. In contrast to
+  # #saml_identifier=, this method does not delete the SSO profile in case the saml_identifier is
+  # not present (safety in case of SSO issues).
+  #
+  # @param saml_identifier [String, Nil] the saml_identifier
+  # @return [String, Nil] the saml_identifier of this user, should never be nil
+  def saml_init_identifier=(saml_identifier)
+    build_sso_profile if sso_profile.nil?
+
+    # Only update if non-empty
+    sso_profile.saml_identifier = saml_identifier if saml_identifier.present?
+  end
+
+  # -----------------------------------------------------------------------------------------------
+  # Email
+  # -----------------------------------------------------------------------------------------------
+
+  # This method is added as a fallback to support the Single Logout Service.
+  # @return [String, Nil] the email address of this user, or nil if the user is not from SSO
+  def saml_init_email
+    return nil if sso_profile.nil?
+
+    email
+  end
+
+  # Initializes email address, and prevents (re)confirmation in case it is changed.
+  #
+  # @param email [String] the email address
+  def saml_init_email=(email)
+    self.email = email
+    skip_confirmation!
+    skip_reconfirmation!
+  end
+
+  # -----------------------------------------------------------------------------------------------
+  # Email is identifier
+  # -----------------------------------------------------------------------------------------------
+
+  # Used in the case that email is the unique identifier from saml.
+  # @return [String, Nil] the email address of the user, or nil in the case the user is not from SSO
+  def saml_init_email_and_identifier
+    return nil if sso_profile.nil?
+
+    email
+  end
+
+  # Used in the case that email is the unique identifier from saml.
+  #
+  # @param email [String] the email address (and saml identifier)
+  def saml_init_email_and_identifier=(email)
+    self.saml_init_email = email
+    self.saml_init_identifier = email
+  end
+
+  # -----------------------------------------------------------------------------------------------
+  # Username
+  # -----------------------------------------------------------------------------------------------
+
+  # This method is added as fallback to support the Single Logout Service.
+  # @return [String] the username
+  def saml_init_username_no_update
+    username
+  end
+
+  # Sets the username from SAML in case it was not already set.
+  # This prevents overriding the user set username with the one from SAML all the time, while
+  # allowing for email updates to be applied.
+  #
+  # @param username [String] the username to set
+  def saml_init_username_no_update=(username)
+    self.username = username unless self.username.present?
+  end
+
+  # -----------------------------------------------------------------------------------------------
+  # Creation
+  # -----------------------------------------------------------------------------------------------
+
+  protected
+
+  # Prepare a (potentially) new user from saml for creation. If the user is actually new, a random
+  # password is created for them and email confirmation is skipped.
+  def prepare_from_saml
+    return unless new_record?
+
+    self.password = SecureRandom.hex
+    skip_confirmation!
+  end
+end
diff --git a/app/models/email_log.rb b/app/models/email_log.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9b171ddbc28ab47d54c5a038ccc3b32cff38a25b
--- /dev/null
+++ b/app/models/email_log.rb
@@ -0,0 +1,2 @@
+class EmailLog < ApplicationRecord
+end
diff --git a/app/models/filter.rb b/app/models/filter.rb
new file mode 100644
index 0000000000000000000000000000000000000000..fb11e1d47779ab658d296eb0e5752903446afbaf
--- /dev/null
+++ b/app/models/filter.rb
@@ -0,0 +1,7 @@
+class Filter < ApplicationRecord
+  belongs_to :user
+  has_many :category_filter_defaults, dependent: :destroy
+  validates :name, uniqueness: { scope: :user }
+  serialize :include_tags, Array
+  serialize :exclude_tags, Array
+end
diff --git a/app/models/post.rb b/app/models/post.rb
index 458b91df77669d4f2798a1c314f407d5a6c880cf..4a1d1ba9943e6daed4a472c68f22afdae6a942f9 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -1,5 +1,6 @@
 class Post < ApplicationRecord
   include CommunityRelated
+  include PostValidations
 
   belongs_to :user, optional: true
   belongs_to :post_type
@@ -24,22 +25,20 @@ class Post < ApplicationRecord
   has_many :reactions
 
   counter_culture :parent, column_name: proc { |model| model.deleted? ? nil : 'answer_count' }
+  counter_culture [:user, :community_user], column_name: proc { |model| model.deleted? ? nil : 'post_count' }
 
   serialize :tags_cache, Array
 
-  validates :body, presence: true, length: { minimum: 30, maximum: 30_000 }
+  validates :body, presence: true, length: { maximum: 30_000 }
   validates :doc_slug, uniqueness: { scope: [:community_id], case_sensitive: false }, if: -> { doc_slug.present? }
-  validates :title, :body, :tags_cache, presence: true, if: -> { post_type.has_tags }
-  validate :tags_in_tag_set, if: -> { post_type.has_tags }
-  validate :maximum_tags, if: -> { post_type.has_tags }
-  validate :maximum_tag_length, if: -> { post_type.has_tags }
-  validate :no_spaces_in_tags, if: -> { post_type.has_tags }
-  validate :stripped_minimum, if: -> { post_type.has_tags }
-  validate :maximum_title_length, if: -> { post_type.has_tags }
+  validates :title, presence: true, if: -> { post_type.is_top_level? }
+  validates :tags_cache, presence: true, if: -> { post_type.has_tags }
+
   validate :category_allows_post_type, if: -> { category_id.present? }
   validate :license_valid, if: -> { post_type.has_license }
-  validate :required_tags?, if: -> { post_type.has_tags && post_type.has_category }
-  validate :moderator_tags, if: -> { post_type.has_tags && post_type.has_category }
+  validate :moderator_tags, if: -> { post_type.has_tags && post_type.has_category && tags_cache_changed? }
+
+  # Other validations (shared with suggested edits) are in concerns/PostValidations
 
   scope :undeleted, -> { where(deleted: false) }
   scope :deleted, -> { where(deleted: true) }
@@ -55,13 +54,32 @@ class Post < ApplicationRecord
   after_save :modify_author_reputation
   after_save :copy_last_activity_to_parent
   after_save :break_description_cache
-  after_save :update_category_activity, if: -> { post_type.has_category }
+  after_save :update_category_activity, if: -> { post_type.has_category && !destroyed? }
   after_save :recalc_score
 
+  # @param term [String] the search term
+  # @return [ActiveRecord::Relation<Post>]
   def self.search(term)
     match_search term, posts: :body_markdown
   end
 
+  def self.by_slug(slug, user)
+    post = Post.unscoped.where(
+      doc_slug: slug,
+      community_id: [RequestContext.community_id, nil]
+    ).first
+
+    if post&.help_category == '$Disabled'
+      return nil
+    end
+
+    if post&.help_category == '$Moderator' && !user&.is_moderator
+      return nil
+    end
+
+    post
+  end
+
   # Double-define: initial definitions are less efficient, so if we have a record of the post type we'll
   # override them later with more efficient methods.
   ['Question', 'Answer', 'PolicyDoc', 'HelpDoc', 'Article'].each do |pt|
@@ -76,14 +94,18 @@ class Post < ApplicationRecord
     end
   end
 
+  # @return [TagSet]
   def tag_set
     parent.nil? ? category.tag_set : parent.category.tag_set
   end
 
+  # @return [Boolean]
   def meta?
     false
   end
 
+  # Used in the transfer of content from SE to reassign the owner of a post to the given user.
+  # @param new_user [User]
   def reassign_user(new_user)
     new_user.ensure_community_user!
 
@@ -94,10 +116,13 @@ class Post < ApplicationRecord
     update!(deleted: false, deleted_at: nil, deleted_by: nil)
   end
 
+  # Removes the attribution notice from this post
+  # @return [Boolean] whether the action was successful
   def remove_attribution_notice!
     update(att_source: nil, att_license_link: nil, att_license_name: nil)
   end
 
+  # @return [String] the type of the last activity on this post
   def last_activity_type
     case last_activity
     when closed_at
@@ -121,37 +146,51 @@ class Post < ApplicationRecord
     end
   end
 
+  # @return [String] the body with all markdown stripped
   def body_plain
     ApplicationController.helpers.strip_markdown(body_markdown)
   end
 
+  # @return [Boolean] whether this post is a question
   def question?
     post_type_id == Question.post_type_id
   end
 
+  # @return [Boolean] whether this post is an answer
   def answer?
     post_type_id == Answer.post_type_id
   end
 
+  # @return [Boolean] whether this post is an article
   def article?
     post_type_id == Article.post_type_id
   end
 
+  # @return [Boolean] whether there is a suggested edit pending for this post
   def pending_suggested_edit?
     SuggestedEdit.where(post_id: id, active: true).any?
   end
 
+  # @return [SuggestedEdit, Nil] the suggested edit pending for this post (if any)
   def pending_suggested_edit
     SuggestedEdit.where(post_id: id, active: true).last
   end
 
+  # Recalculates the score of this post based on its up and downvotes
   def recalc_score
     variable = SiteSetting['ScoringVariable'] || 2
     sql = 'UPDATE posts SET score = (upvote_count + ?) / (upvote_count + downvote_count + (2 * ?)) WHERE id = ?'
     sanitized = ActiveRecord::Base.sanitize_sql_array([sql, variable, variable, id])
     ActiveRecord::Base.connection.execute sanitized
+
+    # ensures the updated score is immediately available
+    self.score = (upvote_count + variable).to_f / (upvote_count + downvote_count + (2 * variable))
+    # prevents AR from accidentally saving the dirty state
+    clear_attribute_changes([:score])
   end
 
+  # This method will update the locked status of this post if locked_until is in the past.
+  # @return [Boolean] whether this post is locked
   def locked?
     return true if locked && locked_until.nil? # permanent lock
     return true if locked && !locked_until.past?
@@ -159,14 +198,27 @@ class Post < ApplicationRecord
     if locked
       update(locked: false, locked_by: nil, locked_at: nil, locked_until: nil)
     end
+
+    false
+  end
+
+  # The test here is for flags that are pending (no status). A spam flag
+  # could be marked helpful but the post wouldn't be deleted, and
+  # we don't necessarily want the post to be treated like it's a spam risk
+  # if that happens.
+  def spam_flag_pending?
+    flags.any? { |flag| flag.post_flag_type&.name == "it's spam" && !flag.status }
   end
 
+  # @param user [User, Nil]
+  # @return [Boolean] whether the given user can view this post
   def can_access?(user)
     (!deleted? || user&.has_post_privilege?('flag_curate', self)) &&
       (!category.present? || !category.min_view_trust_level.present? ||
         category.min_view_trust_level <= (user&.trust_level || 0))
   end
 
+  # @return [Hash] a hash with as key the reaction type and value the amount of reactions for that type
   def reaction_list
     reactions.includes(:reaction_type).group_by(&:reaction_type_id)
              .to_h { |_k, v| [v.first.reaction_type, v] }
@@ -174,12 +226,21 @@ class Post < ApplicationRecord
 
   private
 
+  ##
+  # Before-validation callback. Update the tags association from the tags_cache.
   def update_tag_associations
     tags_cache.each do |tag_name|
-      tag = Tag.find_or_create_by name: tag_name, tag_set: category.tag_set
+      tag, name_used = Tag.find_or_create_synonymized name: tag_name, tag_set: category.tag_set
       unless tags.include? tag
         tags << tag
       end
+
+      # If the tags_cache doesn't include name_used then tag_name was a synonym - remove the synonym from tags_cache
+      # and add the primary for it instead.
+      unless tags_cache.include? name_used
+        tags_cache.delete tag_name
+        tags_cache << name_used
+      end
     end
     tags.each do |tag|
       unless tags_cache.include? tag.name
@@ -188,11 +249,20 @@ class Post < ApplicationRecord
     end
   end
 
+  ##
+  # Helper method for #check_attribution_notice validator. Produces a text-only attribution notice either based on
+  # values given or the current state of the post for use in post histories.
+  # @param source [String, Nil] where the post originally came from
+  # @param name [String, Nil] the name of the license
+  # @param url [String, Nil] the url of the license
+  # @return [String] an attribution notice corresponding to this post
   def attribution_text(source = nil, name = nil, url = nil)
     "Source: #{source || att_source}\nLicense name: #{name || att_license_name}\n" \
       "License URL: #{url || att_license_link}"
   end
 
+  # Intended to be called as callback after a save.
+  # If changes were made to the licensing of this post, this will insert the correct history items.
   def check_attribution_notice
     sc = saved_changes
     attributes = ['att_source', 'att_license_name', 'att_license_link']
@@ -210,6 +280,8 @@ class Post < ApplicationRecord
     end
   end
 
+  # Intended to be called as callback after a save.
+  # If the last activity of this post was changed and it has a parent, also updates the parent activity
   def copy_last_activity_to_parent
     sc = saved_changes
     if parent.present? && (sc.include?('last_activity') || sc.include?('last_activity_by_id')) \
@@ -218,22 +290,28 @@ class Post < ApplicationRecord
     end
   end
 
+  # Intended to be called as callback after a save.
+  # If this deletion status of this post was changed, then remove or re-add the reputation.
   def modify_author_reputation
     sc = saved_changes
     if sc.include?('deleted') && sc['deleted'][0] != sc['deleted'][1] && created_at >= 60.days.ago
       deleted = !!saved_changes['deleted']&.last
       if deleted
-        user.update(reputation: user.reputation - Vote.total_rep_change(votes))
+        user&.update(reputation: (user&.reputation || 1) - Vote.total_rep_change(votes))
       else
-        user.update(reputation: user.reputation + Vote.total_rep_change(votes))
+        user&.update(reputation: (user&.reputation || 1) + Vote.total_rep_change(votes))
       end
     end
   end
 
+  # Intended to be called as callback after a save.
+  # @return [PostHistory] creates an initial revision for this post
   def create_initial_revision
     PostHistory.initial_revision(self, user, after: body_markdown, after_title: title, after_tags: tags)
   end
 
+  # Intended to be used as validation.
+  # Will add an error if this post's post type is not allowed in the associated category.
   def category_allows_post_type
     return if category.nil?
 
@@ -242,6 +320,8 @@ class Post < ApplicationRecord
     end
   end
 
+  # Intended to be called as callback after a save.
+  # Deletes this posts description from the cache such that it will be regenerated next time it is needed.
   def break_description_cache
     Rails.cache.delete "posts/#{id}/description"
     if parent_id.present?
@@ -249,6 +329,8 @@ class Post < ApplicationRecord
     end
   end
 
+  # Intended to be used as a validation.
+  # Checks whether the associated license is present and enabled.
   def license_valid
     # Don't validate license on edits
     return unless id.nil?
@@ -263,63 +345,9 @@ class Post < ApplicationRecord
     end
   end
 
-  def maximum_tags
-    if tags_cache.length > 5
-      errors.add(:base, "Post can't have more than 5 tags.")
-    elsif tags_cache.empty?
-      errors.add(:base, 'Post must have at least one tag.')
-    end
-  end
-
-  def maximum_tag_length
-    tags_cache.each do |tag|
-      max_len = SiteSetting['MaxTagLength']
-      if tag.length > max_len
-        errors.add(:tags, "can't be more than #{max_len} characters long each")
-      end
-    end
-  end
-
-  def no_spaces_in_tags
-    tags_cache.each do |tag|
-      if tag.include?(' ') || tag.include?('_')
-        errors.add(:tags, 'may not include spaces or underscores - use hyphens for multiple-word tags')
-      end
-    end
-  end
-
-  def stripped_minimum
-    if (body&.gsub(/(?:^[\s\t\u2000-\u200F]+|[\s\t\u2000-\u200F]+$)/, '')&.length || 0) < 30
-      errors.add(:body, 'must be more than 30 non-whitespace characters long')
-    end
-    if (title&.gsub(/(?:^[\s\t\u2000-\u200F]+|[\s\t\u2000-\u200F]+$)/, '')&.length || 0) < 15
-      errors.add(:title, 'must be more than 15 non-whitespace characters long')
-    end
-  end
-
-  def maximum_title_length
-    max_title_len = SiteSetting['MaxTitleLength']
-    if title.length > [(max_title_len || 255), 255].min
-      errors.add(:title, "can't be more than #{max_title_len} characters")
-    end
-  end
-
-  def tags_in_tag_set
-    tag_set = category.tag_set
-    unless tags.all? { |t| t.tag_set_id == tag_set.id }
-      errors.add(:base, "Not all of this question's tags are in the correct tag set.")
-    end
-  end
-
-  def required_tags?
-    required = category&.required_tag_ids
-    return unless required.present? && !required.empty?
-
-    unless tag_ids.any? { |t| required.include? t }
-      errors.add(:tags, "must contain at least one required tag (#{category.required_tags.pluck(:name).join(', ')})")
-    end
-  end
-
+  # Intended to be used as validation.
+  # Checks whether there are any moderator tags present added, and if so whether the current user is allowed to add
+  # those.
   def moderator_tags
     mod_tags = category&.moderator_tags&.map(&:name)
     return unless mod_tags.present? && !mod_tags.empty?
@@ -333,6 +361,8 @@ class Post < ApplicationRecord
     end
   end
 
+  # Intended to be used as callback after a save.
+  # Updates the category activity indicator if the last activity of this post changed.
   def update_category_activity
     if saved_changes.include? 'last_activity'
       category.update_activity(last_activity)
diff --git a/app/models/post_history.rb b/app/models/post_history.rb
index 2a742a99f2a4e8578f210a60d2da333e5bbbe1b0..990518da28a1db62a8d75fe7ba75f1f5bf461ddc 100644
--- a/app/models/post_history.rb
+++ b/app/models/post_history.rb
@@ -1,5 +1,7 @@
 class PostHistory < ApplicationRecord
   include PostRelated
+  include EditsValidations
+
   belongs_to :post_history_type
   belongs_to :user
   has_many :post_history_tags
@@ -13,13 +15,30 @@ class PostHistory < ApplicationRecord
     tags.where(post_history_tags: { relationship: 'after' })
   end
 
+  # @param user [User]
+  # @return [Boolean] whether the given user is allowed to see the details of this history item
+  def allowed_to_see_details?(user)
+    !hidden || user&.is_admin || user_id == user&.id || post.user_id == user&.id
+  end
+
+  # Hides all previous history
+  # @param post [Post]
+  # @param user [User]
+  def self.redact(post, user)
+    where(post: post).update_all(hidden: true)
+    history_hidden(post, user, after: post.body_markdown,
+                                    after_title: post.title,
+                                    after_tags: post.tags,
+                                    comment: 'Detailed history before this event is hidden because of a redaction.')
+  end
+
   def self.method_missing(name, *args, **opts)
     unless args.length >= 2
       raise NoMethodError
     end
 
     object, user = args
-    fields = [:before, :after, :comment, :before_title, :after_title, :before_tags, :after_tags]
+    fields = [:before, :after, :comment, :before_title, :after_title, :before_tags, :after_tags, :hidden]
     values = fields.to_h { |f| [f, nil] }.merge(opts)
 
     history_type_name = name.to_s
@@ -31,7 +50,7 @@ class PostHistory < ApplicationRecord
 
     params = { post_history_type: history_type, user: user, post: object, community_id: object.community_id }
     { before: :before_state, after: :after_state, comment: :comment, before_title: :before_title,
-      after_title: :after_title }.each do |arg, attr|
+      after_title: :after_title, hidden: :hidden }.each do |arg, attr|
       next if values[arg].nil?
 
       params = params.merge(attr => values[arg])
@@ -47,7 +66,10 @@ class PostHistory < ApplicationRecord
       end
     end.values.compact.flatten
 
-    history.post_history_tags = PostHistoryTag.create(post_history_tags)
+    # do not create post history tags if post history validations failed
+    unless history.errors.any?
+      history.post_history_tags = PostHistoryTag.create(post_history_tags)
+    end
 
     history
   end
diff --git a/app/models/post_type.rb b/app/models/post_type.rb
index 7f3e7570b3fc372bf027820ce6d903a7c0a1d1de..2cf37fdfda9d7b74af0f62bad21d99f6129ded13 100644
--- a/app/models/post_type.rb
+++ b/app/models/post_type.rb
@@ -19,6 +19,11 @@ class PostType < ApplicationRecord
     end
   end
 
+  # @return [Boolean] whether the post type is a system type
+  def system?
+    ['HelpDoc', 'PolicyDoc'].include?(name)
+  end
+
   def self.mapping
     Rails.cache.fetch 'network/post_types/post_type_ids', include_community: false do
       PostType.all.to_h { |pt| [pt.name, pt.id] }
diff --git a/app/models/site_setting.rb b/app/models/site_setting.rb
index ab5c9504b75538d42a1c38b675afbb82eb4b6791..160bbd05b1a224e4bcf46c6b370ff3619ca5cd50 100644
--- a/app/models/site_setting.rb
+++ b/app/models/site_setting.rb
@@ -11,14 +11,14 @@ class SiteSetting < ApplicationRecord
 
   def self.[](name)
     key = "SiteSettings/#{RequestContext.community_id}/#{name}"
-    cached = Rails.cache.fetch key do
+    cached = Rails.cache.fetch key, include_community: false do
       SiteSetting.applied_setting(name)&.typed
     end
 
     if cached.nil?
-      Rails.cache.delete key
+      Rails.cache.delete key, include_community: false
       value = SiteSetting.applied_setting(name)&.typed
-      Rails.cache.write key, value
+      Rails.cache.write key, value, include_community: false
       value
     else
       cached
@@ -26,10 +26,16 @@ class SiteSetting < ApplicationRecord
   end
 
   def self.exist?(name)
-    Rails.cache.exist?("SiteSettings/#{RequestContext.community_id}/#{name}") ||
+    Rails.cache.exist?("SiteSettings/#{RequestContext.community_id}/#{name}", include_community: false) ||
       SiteSetting.where(name: name).count.positive?
   end
 
+  # Checks whether the setting is a global site setting
+  # @return [Boolean]
+  def global?
+    community_id.nil?
+  end
+
   def typed
     SettingConverter.new(value).send("as_#{value_type.downcase}")
   end
@@ -45,14 +51,14 @@ class SiteSetting < ApplicationRecord
   def self.all_communities(name)
     communities = Community.all
     keys = (communities.map { |c| [c.id, "SiteSetting/#{c.id}/#{name}"] } + [[nil, "SiteSetting//#{name}"]]).to_h
-    cached = Rails.cache.read_multi(*keys.values)
+    cached = Rails.cache.read_multi(*keys.values, include_community: false)
     missing = keys.reject { |_k, v| cached.include?(v) }.map { |k, _v| k }
     settings = if missing.empty?
                  {}
                else
                  SiteSetting.where(name: name, community_id: missing).to_h { |s| [s.community_id, s] }
                end
-    Rails.cache.write_multi(missing.to_h { |cid| [keys[cid], settings[cid]&.typed] })
+    Rails.cache.write_multi(missing.to_h { |cid| [keys[cid], settings[cid]&.typed] }, include_community: false)
     communities.to_h do |c|
       [
         c.id,
diff --git a/app/models/sso_profile.rb b/app/models/sso_profile.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0559a0f0f2b9fc30de0f6a03d325091ad8f9c16e
--- /dev/null
+++ b/app/models/sso_profile.rb
@@ -0,0 +1,5 @@
+class SsoProfile < ApplicationRecord
+  belongs_to :user, inverse_of: :sso_profile
+
+  validates :saml_identifier, uniqueness: true, presence: true
+end
diff --git a/app/models/suggested_edit.rb b/app/models/suggested_edit.rb
index 7730bbc61d8d643fce3667ac9095ad4cd5d72778..0afbe4d906bc85d12d4414288423f38187712c12 100644
--- a/app/models/suggested_edit.rb
+++ b/app/models/suggested_edit.rb
@@ -1,5 +1,7 @@
 class SuggestedEdit < ApplicationRecord
   include PostRelated
+  include PostValidations
+  include EditsValidations
 
   belongs_to :user
 
@@ -10,6 +12,15 @@ class SuggestedEdit < ApplicationRecord
   has_and_belongs_to_many :tags
   has_and_belongs_to_many :before_tags, class_name: 'Tag', join_table: 'suggested_edits_before_tags'
 
+  has_one :post_type, through: :post
+  has_one :category, through: :post
+
+  after_save :clear_pending_cache, if: proc { saved_change_to_attribute?(:active) }
+
+  def clear_pending_cache
+    Rails.cache.delete "pending_suggestions/#{post.category_id}"
+  end
+
   def pending?
     active
   end
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 1b78a95fe534ac04448e7b86570e3df5995fdf04..873a0ea9525717e1cc1187106b16ab9f66a87dff 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -5,6 +5,8 @@ class Tag < ApplicationRecord
   has_many :children, class_name: 'Tag', foreign_key: :parent_id
   has_many :children_with_paths, class_name: 'TagWithPath', foreign_key: :parent_id
   has_many :post_history_tags
+  has_many :tag_synonyms, dependent: :destroy
+  accepts_nested_attributes_for :tag_synonyms, allow_destroy: true
   belongs_to :tag_set
   belongs_to :parent, class_name: 'Tag', optional: true
 
@@ -13,12 +15,57 @@ class Tag < ApplicationRecord
   validates :name, presence: true, format: { with: /[^ \t]+/, message: 'Tag names may not include spaces' }
   validate :parent_not_self
   validate :parent_not_own_child
+  validate :synonym_unique
   validates :name, uniqueness: { scope: [:tag_set_id], case_sensitive: false }
 
   def self.search(term)
-    where('name LIKE ?', "%#{sanitize_sql_like(term)}%")
-      .or(where('excerpt LIKE ?', "%#{sanitize_sql_like(term)}%"))
-      .order(Arel.sql(sanitize_sql_array(['name LIKE ? DESC, name', "#{sanitize_sql_like(term)}%"])))
+    stripped = term.strip
+    # Query to search on tags, the name is used for sorting.
+    q1 = where('tags.name LIKE ?', "%#{sanitize_sql_like(stripped)}%")
+         .or(where('tags.excerpt LIKE ?', "%#{sanitize_sql_like(stripped)}%"))
+         .select(Arel.sql('name AS sortname, tags.*'))
+
+    # Query to search on synonyms, the synonym name is used for sorting.
+    # The order clause here actually applies to the union of q1 and q2 (so not just q2).
+    q2 = joins(:tag_synonyms)
+         .where('tag_synonyms.name LIKE ?', "%#{sanitize_sql_like(stripped)}%")
+         .select(Arel.sql('tag_synonyms.name AS sortname, tags.*'))
+         .order(Arel.sql(sanitize_sql_array(['sortname LIKE ? DESC, sortname', "#{sanitize_sql_like(stripped)}%"])))
+
+    # Select from the union of the above queries, select only the tag columns such that we can distinct them
+    from(Arel.sql("(#{q1.to_sql} UNION #{q2.to_sql}) tags"))
+      .select(Tag.column_names.map { |c| "tags.#{c}" })
+      .distinct
+  end
+
+  ##
+  # Find or create a tag within a given tag set, considering synonyms. If a synonym is given as +name+ then the primary
+  # tag for it is returned instead.
+  # @param name [String] A tag name to find or create.
+  # @param tag_set [TagSet] The tag set within which to search for or create the tag.
+  # @return [Array(Tag, String)] The found or created tag, and the final name used. If a synonymized name was given as
+  #   +name+ then this will be the primary tag name.
+  #
+  # @example +name+ does not yet exist: a new Tag is created
+  #   Tag.find_or_create_synonymized name: 'new-tag', tag_set: ...
+  #   # => [Tag, 'new-tag']
+  #
+  # @example +name+ already exists: the existing Tag is returned
+  #   Tag.find_or_create_synonymized name: 'existing-tag', tag_set: ...
+  #   # => [Tag, 'existing-tag']
+  #
+  # @example +name+ is a synonym of 'other-tag': the Tag for 'other-tag' is returned
+  #   Tag.find_or_create_synonymized name: 'synonym', tag_set: ...
+  #   # => [Tag, 'other-tag']
+  def self.find_or_create_synonymized(name:, tag_set:)
+    existing = Tag.find_by(name: name, tag_set: tag_set)
+    if existing.nil?
+      synonyms = TagSynonym.joins(:tag).where(name: name, tags: { tag_set: tag_set })
+      synonymized_name = synonyms.exists? ? synonyms.first.tag.name : name
+      [Tag.find_or_create_by(name: synonymized_name, tag_set: tag_set), synonymized_name]
+    else
+      [existing, name]
+    end
   end
 
   def all_children
@@ -54,4 +101,10 @@ class Tag < ApplicationRecord
       errors.add(:base, "The #{parent.name} tag is already a child of this tag.")
     end
   end
+
+  def synonym_unique
+    if TagSynonym.joins(:tag).where(tags: { community_id: community_id }).exists?(name: name)
+      errors.add(:base, "A tag synonym with the name #{name} already exists.")
+    end
+  end
 end
diff --git a/app/models/tag_set.rb b/app/models/tag_set.rb
index e71e33c89923e0366f39940f3e3e9eee39d280e7..150dab46a8ccef93d8f87ba8f5c5dd11fa1cbd75 100644
--- a/app/models/tag_set.rb
+++ b/app/models/tag_set.rb
@@ -13,4 +13,12 @@ class TagSet < ApplicationRecord
   def self.main
     where(name: 'Main').first
   end
+
+  def with_paths(no_excerpt = false)
+    if no_excerpt
+      tags_with_paths.where(excerpt: ['', nil])
+    else
+      tags_with_paths
+    end
+  end
 end
diff --git a/app/models/tag_synonym.rb b/app/models/tag_synonym.rb
new file mode 100644
index 0000000000000000000000000000000000000000..da0aec259157325a836e0a429eda17e261a2b6d9
--- /dev/null
+++ b/app/models/tag_synonym.rb
@@ -0,0 +1,18 @@
+class TagSynonym < ApplicationRecord
+  belongs_to :tag
+  has_one :community, through: :tag
+
+  validates :name, presence: true, format: { with: /[^ \t]+/, message: 'Tag names may not include spaces' }
+  validate :name_unique
+
+  private
+
+  # Checks whether the name of this synonym is not already taken by a tag or synonym in the same community.
+  def name_unique
+    if TagSynonym.joins(:tag).where(tags: { community_id: tag.community_id }).exists?(name: name)
+      errors.add(:base, "A tag synonym with the name #{name} already exists.")
+    elsif Tag.unscoped.where(community_id: tag.community_id).exists?(name: name)
+      errors.add(:base, "A tag with the name #{name} already exists.")
+    end
+  end
+end
diff --git a/app/models/user.rb b/app/models/user.rb
index 84d79db011cd7b4b5fa01166e390f893027c31eb..04e1219f786f5e535612a64f7cd665250dd6631b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -2,10 +2,11 @@
 # application code (i.e. excluding Devise) is concerned, has many questions, answers, and votes.
 class User < ApplicationRecord
   include ::UserMerge
+  include ::SamlInit
 
   devise :database_authenticatable, :registerable, :confirmable,
          :recoverable, :rememberable, :trackable, :validatable,
-         :lockable, :omniauthable
+         :lockable, :omniauthable, :saml_authenticatable
 
   has_many :posts, dependent: :nullify
   has_many :votes, dependent: :destroy
@@ -24,6 +25,10 @@ class User < ApplicationRecord
   has_many :comments, dependent: :nullify
   has_many :comment_threads_deleted, class_name: 'CommentThread', foreign_key: :deleted_by_id, dependent: :nullify
   has_many :comment_threads_locked, class_name: 'CommentThread', foreign_key: :locked_by_id, dependent: :nullify
+  has_many :category_filter_defaults, dependent: :destroy
+  has_many :filters, dependent: :destroy
+  has_many :user_websites, dependent: :destroy
+  accepts_nested_attributes_for :user_websites
   belongs_to :deleted_by, required: false, class_name: 'User'
 
   validates :username, presence: true, length: { minimum: 3, maximum: 50 }
@@ -40,7 +45,7 @@ class User < ApplicationRecord
   scope :active, -> { where(deleted: false) }
   scope :deleted, -> { where(deleted: true) }
 
-  after_create :send_welcome_tour_message
+  after_create :send_welcome_tour_message, :ensure_websites
 
   def self.list_includes
     includes(:posts, :avatar_attachment)
@@ -58,6 +63,12 @@ class User < ApplicationRecord
     community_user.trust_level
   end
 
+  # Checks whether this user is the same as a given user
+  # @param [User] user user to compare with
+  def same_as?(user)
+    id == user.id
+  end
+
   # This class makes heavy use of predicate names, and their use is prevalent throughout the codebase
   # because of the importance of these methods.
   # rubocop:disable Naming/PredicateName
@@ -69,6 +80,22 @@ class User < ApplicationRecord
     end
   end
 
+  # Checks if the user can push a given post type to network
+  # @param post_type [PostType] type of the post to be pushed
+  # @return [Boolean]
+  def can_push_to_network(post_type)
+    post_type.system? && (is_global_moderator || is_global_admin)
+  end
+
+  # Checks if the user can directly update a given post
+  # @param post [Post] updated post (owners can unilaterally update)
+  # @param post_type [PostType] type of the post (some are freely editable)
+  # @return [Boolean]
+  def can_update(post, post_type)
+    privilege?('edit_posts') || is_moderator || self == post.user || \
+      (post_type.is_freely_editable && privilege?('unrestricted'))
+  end
+
   def metric(key)
     Rails.cache.fetch("community_user/#{community_user.id}/metric/#{key}", expires_in: 24.hours) do
       case key
@@ -111,6 +138,18 @@ class User < ApplicationRecord
     website.nil? ? website : URI.parse(website).hostname
   end
 
+  def valid_websites_for
+    user_websites.where.not(url: [nil, '']).order(position: :asc)
+  end
+
+  def ensure_websites
+    pos = user_websites.size
+    while pos < UserWebsite::MAX_ROWS
+      pos += 1
+      UserWebsite.create(user_id: id, position: pos)
+    end
+  end
+
   def is_moderator
     is_global_moderator || community_user&.is_moderator || is_admin || community_user&.privilege?('mod') || false
   end
@@ -119,6 +158,42 @@ class User < ApplicationRecord
     is_global_admin || community_user&.is_admin || false
   end
 
+  # Used by network profile: does this user have a profile on that other comm?
+  def has_profile_on(community_id)
+    cu = community_users.where(community_id: community_id).first
+    !cu&.user_id.nil? || false
+  end
+
+  def reputation_on(community_id)
+    cu = community_users.where(community_id: community_id).first
+    cu&.reputation || 1
+  end
+
+  def post_count_on(community_id)
+    cu = community_users.where(community_id: community_id).first
+    cu&.post_count || 0
+  end
+
+  def is_moderator_on(community_id)
+    cu = community_users.where(community_id: community_id).first
+    # is_moderator is a DB check, not a call to is_moderator()
+    is_global_moderator || is_admin || cu&.is_moderator || cu&.privilege?('mod') || false
+  end
+
+  def has_ability_on(community_id, ability_internal_id)
+    cu = community_users.where(community_id: community_id).first
+    if cu&.is_moderator || cu&.is_admin || is_global_moderator || is_global_admin || cu&.privilege?('mod')
+      true
+    elsif cu.nil?
+      false
+    else
+      Ability.unscoped do
+        UserAbility.joins(:ability).where(community_user_id: cu&.id, is_suspended: false,
+                                          ability: { internal_id: ability_internal_id }).exists?
+      end
+    end
+  end
+
   def rtl_safe_username
     "#{username}\u202D"
   end
@@ -177,7 +252,7 @@ class User < ApplicationRecord
 
   def email_not_bad_pattern
     return unless File.exist?(Rails.root.join('../.qpixel-email-patterns.txt'))
-    return unless saved_changes.include? 'email'
+    return unless changes.include? 'email'
 
     patterns = File.read(Rails.root.join('../.qpixel-email-patterns.txt')).split("\n")
     matched = patterns.select { |p| email.match? Regexp.new(p) }
@@ -214,7 +289,7 @@ class User < ApplicationRecord
                         'how this site works.', '/tour')
   end
 
-  def block(reason)
+  def block(reason, length: 180.days)
     user_email = email
     user_ip = [last_sign_in_ip]
 
@@ -222,10 +297,10 @@ class User < ApplicationRecord
       user_ip << current_sign_in_ip
     end
 
-    BlockedItem.create(item_type: 'email', value: user_email, expires: DateTime.now + 180.days,
+    BlockedItem.create(item_type: 'email', value: user_email, expires: length.from_now,
                        automatic: true, reason: "#{reason}: #" + id.to_s)
     user_ip.compact.uniq.each do |ip|
-      BlockedItem.create(item_type: 'ip', value: ip, expires: 180.days.from_now,
+      BlockedItem.create(item_type: 'ip', value: ip, expires: length.from_now,
                          automatic: true, reason: "#{reason}: #" + id.to_s)
     end
   end
@@ -234,13 +309,19 @@ class User < ApplicationRecord
     global_key = "prefs.#{id}"
     community_key = "prefs.#{id}.community.#{RequestContext.community_id}"
     {
-      global: AppConfig.preferences.reject { |_, v| v['community'] }.transform_values { |v| v['default'] }
+      global: AppConfig.preferences.select { |_, v| v['global'] }.transform_values { |v| v['default'] }
                        .merge(RequestContext.redis.hgetall(global_key)),
       community: AppConfig.preferences.select { |_, v| v['community'] }.transform_values { |v| v['default'] }
                           .merge(RequestContext.redis.hgetall(community_key))
     }
   end
 
+  def category_preference(category_id)
+    category_key = "prefs.#{id}.category.#{RequestContext.community_id}.category.#{category_id}"
+    AppConfig.preferences.select { |_, v| v['category'] }.transform_values { |v| v['default'] }
+             .merge(RequestContext.redis.hgetall(category_key))
+  end
+
   def validate_prefs!
     global_key = "prefs.#{id}"
     community_key = "prefs.#{id}.community.#{RequestContext.community_id}"
@@ -260,5 +341,24 @@ class User < ApplicationRecord
   def preference(name, community: false)
     preferences[community ? :community : :global][name]
   end
+
+  def has_active_flags?(post)
+    !post.flags.where(user: self, status: nil).empty?
+  end
+
+  def active_flags(post)
+    post.flags.where(user: self, status: nil)
+  end
+
+  def do_soft_delete(attribute_to)
+    AuditLog.moderator_audit(event_type: 'user_delete', related: self, user: attribute_to,
+                             comment: attributes_print(join: "\n"))
+    assign_attributes(deleted: true, deleted_by_id: attribute_to.id, deleted_at: DateTime.now,
+                      username: "user#{id}", email: "#{id}@deleted.localhost",
+                      password: SecureRandom.hex(32))
+    skip_reconfirmation!
+    save
+  end
+
   # rubocop:enable Naming/PredicateName
 end
diff --git a/app/models/user_website.rb b/app/models/user_website.rb
new file mode 100644
index 0000000000000000000000000000000000000000..6b50d909f50dce78f3c31653597d2c277411baeb
--- /dev/null
+++ b/app/models/user_website.rb
@@ -0,0 +1,6 @@
+class UserWebsite < ApplicationRecord
+  belongs_to :user
+  default_scope { order(:position) }
+
+  MAX_ROWS = 3
+end
diff --git a/app/models/vote.rb b/app/models/vote.rb
index a7a3505ab4474cafe34ec05de066661c2ee0bb1c..a7c42dcb3dea0128eb63503938d171b0a291bd01 100644
--- a/app/models/vote.rb
+++ b/app/models/vote.rb
@@ -34,37 +34,45 @@ class Vote < ApplicationRecord
   end
 
   def rep_change(direction)
+    return unless post.present?
+
     change = CategoryPostType.rep_changes[[post.category_id, post.post_type_id]][vote_type] || 0
     recv_user.update!(reputation: recv_user.reputation + (direction * change))
   end
 
   def post_not_deleted
-    if post.deleted?
+    if post&.deleted?
       errors.add(:base, 'Votes are locked on deleted posts')
     end
   end
 
   def check_valid
-    throw :abort unless valid?
+    throw :abort unless valid? || post.blank?
   end
 
   def add_counter
+    return unless post.present?
+
     case vote_type
     when 1
       post.update(upvote_count: post.upvote_count + 1)
     when -1
       post.update(downvote_count: post.downvote_count + 1)
     end
+
     post.recalc_score
   end
 
   def remove_counter
+    return unless post.present?
+
     case vote_type
     when 1
       post.update(upvote_count: [post.upvote_count - 1, 0].max)
     when -1
       post.update(downvote_count: [post.downvote_count - 1, 0].max)
     end
+
     post.recalc_score
   end
 end
diff --git a/app/tasks/maintenance/initialize_user_websites_task.rb b/app/tasks/maintenance/initialize_user_websites_task.rb
new file mode 100644
index 0000000000000000000000000000000000000000..80a91b9483f0a45db59489138f6752dbad332f26
--- /dev/null
+++ b/app/tasks/maintenance/initialize_user_websites_task.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Maintenance
+  class InitializeUserWebsitesTask < MaintenanceTasks::Task
+    def collection
+      User.all
+    end
+
+    def process(user)
+      unless user.user_websites.exists?(position: 1)
+        if user.website.present?
+          UserWebsite.create!(user_id: user.id, position: 1, label: 'website', url: user.website)
+        else
+          UserWebsite.create!(user_id: user.id, position: 1)
+        end
+      end
+
+      unless user.user_websites.exists?(position: 2)
+        if user.twitter.present?
+          UserWebsite.create!(user_id: user.id, position: 2, label: 'Twitter',
+                              url: "https://twitter.com/#{user.twitter}")
+        else
+          UserWebsite.create!(user_id: user.id, position: 2)
+        end
+      end
+
+      # This check *should* be superfluous, but just in case...
+      unless user.user_websites.exists?(position: 3)
+        UserWebsite.create!(user_id: user.id, position: 3)
+      end
+    end
+  end
+end
diff --git a/app/views/abilities/show.html.erb b/app/views/abilities/show.html.erb
index c06d2131e89cc79782752fb7d4ca4913747a7995..a34e29ca211e8b25abc4fac31b85889ab10d5118 100644
--- a/app/views/abilities/show.html.erb
+++ b/app/views/abilities/show.html.erb
@@ -49,20 +49,23 @@
     <% unless @ability.manual? %>
       <% unless params[:thresholds].nil? %>
         <div class="widget--body">
-          <p>You need to reach these thresholds to earn the ability:</p>
-
+          <% if @user.id == current_user&.id %>
+            <p>You need to reach these thresholds to earn the ability:</p>
+	  <% else %>
+            <p><%= @user.username %> needs to reach these thresholds to earn the ability:</p>
+	  <% end %>
           <% unless @ability.post_score_threshold.nil? %>
             <% post_score_percent = (linearize_progress(@user.community_user.post_score) / linearize_progress(@ability.post_score_threshold) * 100).to_i %>
 
             <p><strong>Post score threshold</strong></p>
             <% if post_score_percent < 100 %>
-              <p>You need to have more well-received posts.</p>
+              <p>Need to have more well-received posts.</p>
               <div class="meter is-progress">
                 <div class="meter--bar is-<%= post_score_percent %>%"></div>
                 <div class="meter--label"><%= post_score_percent %>%</div>
               </div>
             <% else %>
-              <p>You need to have many well-received posts.</p>
+              <p>Need to have many well-received posts.</p>
               <div class="meter is-progress">
                 <div class="meter--bar is-100%"></div>
                 <div class="meter--label">100%</div>
@@ -75,13 +78,13 @@
 
             <p><strong>Edit score threshold</strong></p>
             <% if edit_score_percent < 100 %>
-              <p>You need to have more accepted suggested edits.</p>
+              <p>Need to have more accepted suggested edits.</p>
               <div class="meter is-progress">
                 <div class="meter--bar is-<%= edit_score_percent %>%"></div>
                 <div class="meter--label"><%= edit_score_percent %>%</div>
               </div>
             <% else %>
-              <p>You need to have many accepted suggested edits.</p>
+              <p>Need to have many accepted suggested edits.</p>
               <div class="meter is-progress">
                 <div class="meter--bar is-100%"></div>
                 <div class="meter--label">100%</div>
@@ -94,13 +97,13 @@
 
             <p><strong>Flag score threshold</strong></p>
             <% if flag_score_percent < 100 %>
-              <p>You need to have more helpful flags.</p>
+              <p>Need to have more helpful flags.</p>
               <div class="meter is-progress">
                 <div class="meter--bar is-<%= flag_score_percent %>%"></div>
                 <div class="meter--label"><%= flag_score_percent %>%</div>
               </div>
             <% else %>
-              <p>You need to have many helpful flags.</p>
+              <p>Need to have many helpful flags.</p>
               <div class="meter is-progress">
                 <div class="meter--bar is-100%"></div>
                 <div class="meter--label">100%</div>
diff --git a/app/views/admin/all_email.html.erb b/app/views/admin/all_email.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..ade37ea360fde04cf36635ebb9e681f32ee1c48a
--- /dev/null
+++ b/app/views/admin/all_email.html.erb
@@ -0,0 +1,24 @@
+<%= render 'posts/markdown_script' %>
+
+<div class="notice is-danger">
+  <p>
+    <i class="fas fa-exclamation-triangle"></i> Please be careful, as this tool sends a lot of emails.
+  </p>
+</div>
+
+<h1><%= t 'admin.tools.email_all' %></h1>
+<p><%= t 'admin.email_all_blurb' %></p>
+
+<%= form_with url: send_all_email_path do |f| %>
+  <div class="form-group">
+    <%= f.label :subject, t('g.subject').capitalize, class: 'form-element' %>
+    <%= f.text_field :subject,  class: 'form-element', required: true %>
+  </div>
+
+  <%= render 'shared/body_field', f: f, field_name: :body_markdown, field_label: t('g.body').capitalize, post: nil %>
+
+  <div class="post-preview"></div>
+
+  <%= f.submit t('g.send').capitalize, class: 'button is-filled',
+               onclick: "return confirm('Are you sure you want to send this email to all users?')" %>
+<% end %>
diff --git a/app/views/admin/audit_log.html.erb b/app/views/admin/audit_log.html.erb
index cb6003e1b8e8cc19d8e3a1587dd24947442032db..ea2b467af21ea95148d42fec5bd04225d5e1c5e8 100644
--- a/app/views/admin/audit_log.html.erb
+++ b/app/views/admin/audit_log.html.erb
@@ -4,15 +4,15 @@
   <h3><%= pluralize(@logs.count, t('g.log')) %></h3>
   <div class="button-list is-gutterless">
     <% classes = 'button is-outlined is-muted' %>
-    <%= link_to t('g.age'), query_url(sort: 'age'),
+    <%= link_to t('g.age'), request.params.merge(sort: 'age'),
                 class: "#{classes} #{params[:sort] == 'age' || params[:sort].nil? ? 'is-active' : ''}" %>
-    <%= link_to t('g.type'), query_url(sort: 'type'),
+    <%= link_to t('g.type'), request.params.merge(sort: 'type'),
                 class: "#{classes} #{params[:sort] == 'type' ? 'is-active' : ''}" %>
-    <%= link_to t('g.event'), query_url(sort: 'event'),
+    <%= link_to t('g.event'), request.params.merge(sort: 'event'),
                 class: "#{classes} #{params[:sort] == 'event' ? 'is-active' : ''}" %>
-    <%= link_to t('g.related'), query_url(sort: 'related'),
+    <%= link_to t('g.related'), request.params.merge(sort: 'related'),
                 class: "#{classes} #{params[:sort] == 'related' ? 'is-active' : ''}" %>
-    <%= link_to t('g.user'), query_url(sort: 'user'),
+    <%= link_to t('g.user'), request.params.merge(sort: 'user'),
                 class: "#{classes} #{params[:sort] == 'user' ? 'is-active' : ''}" %>
   </div>
 </div>
diff --git a/app/views/admin/change_back.html.erb b/app/views/admin/change_back.html.erb
index 26e9e77c047fcb4d2f63810ab4cf9d40e903e2e6..33cf3c7ea89ca61a2a247844b0bc85ba02891b7c 100644
--- a/app/views/admin/change_back.html.erb
+++ b/app/views/admin/change_back.html.erb
@@ -1,14 +1,20 @@
 <h1>Stop impersonating</h1>
 <p>
-  You (<%= @impersonator.username %>) are currently impersonating <%= current_user.username %>. To stop
-  impersonating them, verify your password below
+  You (<%= @impersonator.username %>) are currently impersonating <%= current_user.username %>.
+  <% if @impersonator.sso_profile.present? %>
+    You can stop impersonating them with the button below, after which you will have to sign in again.
+  <% else %>
+    To stop impersonating them, verify your password below.
+  <% end %>
 </p>
 
 <%= form_tag stop_impersonating_path, class: 'form-horizontal' do %>
-  <div class="form-group">
-    <%= label_tag :password, 'Password', class: 'form-element' %>
-    <%= password_field_tag :password, '', class: 'form-element' %>
-  </div>
+  <% unless @impersonator.sso_profile.present? %>
+    <div class="form-group">
+      <%= label_tag :password, 'Password', class: 'form-element' %>
+      <%= password_field_tag :password, '', class: 'form-element' %>
+    </div>
+  <% end %>
 
   <div class="actions">
     <%= submit_tag 'Verify & Stop Impersonating', class: 'button is-primary is-filled' %>
diff --git a/app/views/admin/index.html.erb b/app/views/admin/index.html.erb
index 89f299e13a479f06417ae798746467c71ec5c5fc..2f4c5266dcef59f0b3290f2402247c5b3fbebd2b 100644
--- a/app/views/admin/index.html.erb
+++ b/app/views/admin/index.html.erb
@@ -30,17 +30,28 @@
     <div class="grid--cell is-4-lg is-6-md is-12-sm" data-ckb-list-item data-ckb-item-type="link">
       <div class="widget">
         <div class="widget--body">
-          <i class="fas fa-globe has-color-red-700"></i> <i class="fas fa-envelope"></i>
-          <%= link_to t('admin.tools.email_moderators'), moderator_email_path, 'data-ckb-item-link' => '' %>
+          <i class="fas fa-globe has-color-red-700"></i> <i class="fas fa-mail-bulk"></i>
+          <%= link_to t('admin.tools.post_types'), post_types_path, 'data-ckb-item-link' => '' %>
         </div>
       </div>
     </div>
 
+    <% if current_user.developer? %>
+      <div class="grid--cell is-4-lg is-6-md is-12-sm" data-ckb-list-item data-ckb-item-type="link">
+        <div class="widget">
+          <div class="widget--body">
+            <i class="fas fa-globe has-color-red-700"></i> <i class="fas fa-folder-plus"></i>
+            <%= link_to 'Email All Users', email_all_path, 'data-ckb-item-link' => '' %>
+          </div>
+        </div>
+      </div>
+    <% end %>
+
     <div class="grid--cell is-4-lg is-6-md is-12-sm" data-ckb-list-item data-ckb-item-type="link">
       <div class="widget">
         <div class="widget--body">
-          <i class="fas fa-globe has-color-red-700"></i> <i class="fas fa-mail-bulk"></i>
-          <%= link_to t('admin.tools.post_types'), post_types_path, 'data-ckb-item-link' => '' %>
+          <i class="fas fa-globe has-color-red-700"></i> <i class="fas fa-envelope"></i>
+          <%= link_to t('admin.tools.email_moderators'), moderator_email_path, 'data-ckb-item-link' => '' %>
         </div>
       </div>
     </div>
@@ -108,6 +119,7 @@
       </div>
     </div>
   </div>
+
   <div class="grid--cell is-4-lg is-6-md is-12-sm" data-ckb-list-item data-ckb-item-type="link">
     <div class="widget">
       <div class="widget--body">
@@ -116,6 +128,7 @@
       </div>
     </div>
   </div>
+
   <% if current_user.is_global_admin %>
     <div class="grid--cell is-4-lg is-6-md is-12-sm" data-ckb-list-item data-ckb-item-type="link">
       <div class="widget">
diff --git a/app/views/admin_mailer/to_all_users.html.erb b/app/views/admin_mailer/to_all_users.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..790db26894d6f6ad18862d9ab03dc0a09ceaae9f
--- /dev/null
+++ b/app/views/admin_mailer/to_all_users.html.erb
@@ -0,0 +1,2 @@
+<%= raw(sanitize(ApplicationController.helpers.render_markdown(@body_markdown),
+                 scrubber: ApplicationController.helpers.scrubber)) %>
diff --git a/app/views/admin_mailer/to_all_users.text.erb b/app/views/admin_mailer/to_all_users.text.erb
new file mode 100644
index 0000000000000000000000000000000000000000..636df4adf321037939e0b66a42c0ceb83fa92d8a
--- /dev/null
+++ b/app/views/admin_mailer/to_all_users.text.erb
@@ -0,0 +1 @@
+<%= ApplicationController.helpers.strip_markdown @body_markdown %>
diff --git a/app/views/application/dashboard.html.erb b/app/views/application/dashboard.html.erb
index f818dfaba71c5d2854b70a89687dd316a50da735..397e020fcc092571cd5fe638b14c7137e7ca7058 100644
--- a/app/views/application/dashboard.html.erb
+++ b/app/views/application/dashboard.html.erb
@@ -1,6 +1,7 @@
 <%= content_for :title, 'Dashboard' %>
 
 <h1>Dashboard</h1>
+<p>All communities, with their categories. You can also see the communities from the dropdown arrow at the top right of each page.</p>
 <div class="grid community-list">
   <% @communities.each do |c| %>
     <% categories = Category.unscoped.where(community: c).order(sequence: :asc, id: :asc) %>
@@ -19,7 +20,6 @@
             <% end %>
           </div>
         </div>
-        <div class="widget--body h-fw-bold h-bg-tertiary-050"><i class="fa fa-file-alt"></i> Posts</div>
         <% categories.each do |cat| %>
           <% next if (cat.min_view_trust_level || -1) > (current_user&.trust_level || 0) %>
           <div class="widget--body">
@@ -29,6 +29,15 @@
                 <span class="badge is-status" title="unread activity in category"></span>
               <% end %>
             <% end %>
+
+            <% if current_user&.has_ability_on(c.id, 'edit_posts') %>
+              <% sug_edits = @edits[cat.id] || 0 %>
+              <% if sug_edits > 0 %>
+                <%= link_to suggested_edits_queue_url(cat, host: c.host), class: 'widget--body-extra' do %>
+                (<%= sug_edits %> pending <%= "edit".pluralize(sug_edits) %>)
+                <% end %>
+              <% end %>
+            <% end %>
           </div>
         <% end %>
         <% if current_user&.is_global_moderator || current_user&.is_global_admin %>
diff --git a/app/views/categories/_form.html.erb b/app/views/categories/_form.html.erb
index 7b172c7ebc7b46932efc668c09be8415860b8f3a..55e04b314cb8c52a2c51d0be6505eb25c09c2d23 100644
--- a/app/views/categories/_form.html.erb
+++ b/app/views/categories/_form.html.erb
@@ -1,4 +1,14 @@
 <%= form_for @category, url: submit_path, method: :post do |f| %>
+  <% if @category.errors.any? %>
+    <div class="notice is-danger">
+      <ul>
+        <% @category.errors.full_messages.each do |m| %>
+          <li><%= m %></li>
+        <% end %>
+      </ul>
+    </div>
+  <% end %>
+
   <details open>
     <summary>
       Basic Information
@@ -51,6 +61,18 @@
       <%= f.select :tag_set_id, options_for_select(TagSet.all.map { |ts|  [ts.name, ts.id] }, selected: @category.tag_set_id),
                    { include_blank: true }, class: 'form-element js-category-tag-set-select' %>
     </div>
+
+    <div class="form-group">
+      <%= f.label :min_title_length, 'Minimum title length', class: 'form-element' %>
+      <span class="form-caption">Titles of posts in this category must be at least this many characters long.</span>
+      <%= f.number_field :min_title_length, class: 'form-element' %>
+    </div>
+
+    <div class="form-group">
+      <%= f.label :min_body_length, 'Minimum body length', class: 'form-element' %>
+      <span class="form-caption">Posts in this category must be at least this many characters long.</span>
+      <%= f.number_field :min_body_length, class: 'form-element' %>
+    </div>
   </details>
 
   <details>
@@ -123,6 +145,13 @@
     </span>
       <%= f.number_field :sequence, class: 'form-element' %>
     </div>
+
+    <div class="form-group">
+      <%= f.label :default_filter_id, class: 'form-element' %>
+      <span class="form-caption">The default filter for this category, used for anonymous users.</span>
+      <% system_filters = User.find(-1).filters.to_h { |filter| [filter.name, filter.id] } %>
+      <%= f.select :default_filter_id, options_for_select(system_filters, selected: @category.default_filter_id), { include_blank: "No default" } %>
+    </div>
   </details>
 
   <details>
@@ -192,7 +221,7 @@
       <% disabled = @category.tag_set.nil? %>
       <%= f.select :required_tag_ids, options_for_select(@category.required_tags.map { |t| [t.name, t.id] },
                                                          selected: @category.required_tag_ids),
-                   { include_blank: true }, multiple: true, class: 'form-element js-tag-select js-required-tags',
+                   {}, multiple: true, class: 'form-element js-tag-select js-required-tags',
                    data: { tag_set: @category.tag_set&.id, create: 'false', use_ids: 'true' }, disabled: disabled %>
     </div>
 
@@ -210,7 +239,7 @@
 
       <%= f.select :topic_tag_ids, options_for_select(@category.topic_tags.map { |t| [t.name, t.id] },
                                                       selected: @category.topic_tag_ids),
-                   { include_blank: true }, multiple: true, class: 'form-element js-tag-select js-topic-tags',
+                   {}, multiple: true, class: 'form-element js-tag-select js-topic-tags',
                    data: { tag_set: @category.tag_set&.id, create: 'false', use_ids: 'true' }, disabled: disabled %>
     </div>
 
@@ -227,7 +256,7 @@
 
       <%= f.select :moderator_tag_ids, options_for_select(@category.moderator_tags.map { |t| [t.name, t.id] },
                                                           selected: @category.moderator_tag_ids),
-                   { include_blank: true }, multiple: true, class: 'form-element js-tag-select js-moderator-tags',
+                   {}, multiple: true, class: 'form-element js-tag-select js-moderator-tags',
                    data: { tag_set: @category.tag_set&.id, create: 'false', use_ids: 'true' }, disabled: disabled %>
     </div>
   </details>
diff --git a/app/views/categories/show.html.erb b/app/views/categories/show.html.erb
index c5bfcce11cc560fe104cec1289f402d164693b0c..62a18a3162b77caba85de4a0880970ed6884ea11 100644
--- a/app/views/categories/show.html.erb
+++ b/app/views/categories/show.html.erb
@@ -11,45 +11,62 @@
 <% end %>
 
 <% post_count = @posts.count %>
-<div class="has-color-tertiary-500 category-meta" title="<%= post_count %>">
-  <div>
-    <%= short_number_to_human post_count, precision: 1, significant: false %>
-    <%= 'post'.pluralize(post_count) %> &middot;
-
-    <% if current_user&.is_admin %>
-      <%= link_to 'Edit Category', edit_category_path(@category) %>
-      &middot;
-    <% end %>
-
-    <%= link_to 'Subscribe',
-                new_subscription_path(type: 'category', qualifier: @category.id, return_to: request.path),
-                class: 'button is-outlined' %>
-  </div>
+<div class="has-color-tertiary-500 category-meta">
+  <span class=category-meta--start>
+    <span title="<%= post_count %> posts">
+      <%= short_number_to_human post_count, precision: 1, significant: false %>
+      <%= 'post'.pluralize(post_count) %>
+    </span>
+    <%= render 'shared/rss_link', url: category_feed_path(@category, format: 'rss') %>
+    <span class="has-margin-4">
+      <% if current_user&.is_admin %>
+        <%= link_to 'Edit Category', edit_category_path(@category) %>
+      <% end %>
+    </span>
+  </span>
 
   <div class="button-list is-gutterless has-margin-2">
-    <%= link_to 'Activity', query_url(sort: 'activity'),
+    <%= link_to 'Activity', request.params.merge(sort: 'activity'),
                 class: "button is-muted is-outlined #{(params[:sort].nil?) && !current_page?(questions_lottery_path) ||
                     params[:sort] == 'activity' ? 'is-active' : ''}",
                 title: 'most recent changes: new posts, edits, close/open, delete/undelete' %>
-    <%= link_to 'Age', query_url(sort: 'age'),
+    <%= link_to 'Age', request.params.merge(sort: 'age'),
                 class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
                 title: 'newest posts (ignores other activity)' %>
-    <%= link_to 'Score', query_url(sort: 'score'),
+    <%= link_to 'Score', request.params.merge(sort: 'score'),
                 class: "button is-muted is-outlined #{params[:sort] == 'score' ? 'is-active' : ''}",
                 title: 'highest score first (not the same as net votes)' %>
     <% if SiteSetting['AllowContentTransfer'] %>
-      <%= link_to 'Native', query_url(sort: 'native'),
+      <%= link_to 'Native', request.params.merge(sort: 'native'),
                   class: "button is-muted is-outlined #{params[:sort] == 'native' ? 'is-active' : ''}",
                   title: 'exclude imported posts' %>
     <% end %>
-    <% if @category.name == 'Q&A' %>
-      <%= link_to 'Random', query_url(sort: 'lottery'),
-                  class: "button is-muted is-outlined #{params[:sort] == 'lottery' ? 'is-active' : ''}",
-                  title: 'random set of questions, usually older ones' %>
-    <% end %>
+    <%= link_to 'Random', request.params.merge(sort: 'lottery'),
+        class: "button is-muted is-outlined #{params[:sort] == 'lottery' ? 'is-active' : ''}",
+        title: 'random set of questions, usually older ones' %>
   </div>
 </div>
 
+<details>
+  <summary>Filters (<%= @filtered ? @active_filter[:name].empty? ? 'Custom' : @active_filter[:name] : 'None' %>)</summary>
+  <% if @active_filter[:default] == :user %>
+    <div class="notice is-info">
+      You are currently filtering by <strong><%= @active_filter[:name] %></strong> because it is set as your default for this category
+    </div>
+  <% elsif @active_filter[:default] == :category and not user_signed_in? %>
+    <div class="notice is-info">
+      You are currently filtering by <strong><%= @active_filter[:name] %></strong> because it is the default for this category
+    </div>
+  <% elsif @active_filter[:default] == :category and user_signed_in? %>
+    <div class="notice is-info">
+      You are currently filtering by <strong><%= @active_filter[:name] %></strong> because it is the default for this category and you do not have a personal default set
+    </div>
+  <% end %>
+  <%= form_tag request.original_url, method: :get do %>
+    <%= render 'search/filters' %>
+  <% end %>
+</details>
+
 <div class="item-list">
   <% @posts.each do |post| %>
     <%= render 'posts/type_agnostic', post: post %>
@@ -61,7 +78,5 @@
 </div>
 
 <div class="has-padding-top-4">
-  <%= link_to category_feed_path(@category, format: 'rss') do %>
-    <i class="fas fa-rss"></i> Category RSS feed
-  <% end %>
-</div>
\ No newline at end of file
+  <%= render 'shared/rss_link', url: category_feed_path(@category, format: 'rss'), text: 'Category RSS feed' %>
+</div>
diff --git a/app/views/close_reasons/_form.html.erb b/app/views/close_reasons/_form.html.erb
index e691772a650ec8225028dea02a19d44e86541567..03522077dc1d246ec94b77c6f298594526e89ff9 100644
--- a/app/views/close_reasons/_form.html.erb
+++ b/app/views/close_reasons/_form.html.erb
@@ -42,5 +42,5 @@
   </div>
 
   <%= f.submit 'Save', class: 'button is-filled' %>
-  <%= link_to 'Cancel', close_reasons_path(global: @close_reason.community.nil? ? 1 : 0), class: 'button' %>
+  <%= link_to 'Cancel', close_reasons_path(global: @close_reason.community.nil? ? 1 : 0), class: 'button', role: 'button' %>
 <% end %>
diff --git a/app/views/close_reasons/index.html.erb b/app/views/close_reasons/index.html.erb
index 324b7ecbc7d91af904b2f6175980f62e1a4c42f6..1297a027970954504c60a4235f20be17c94d06ae 100644
--- a/app/views/close_reasons/index.html.erb
+++ b/app/views/close_reasons/index.html.erb
@@ -33,7 +33,7 @@
       <td><%= reason.requires_other_post ? "yes" : "no" %></td>
       <td><%= reason.active ? "yes" : "no" %></td>
       <td>
-        <%= link_to "edit", close_reason_path(id: reason.id), class: "button is-outlined" %>
+        <%= link_to "edit", close_reason_path(id: reason.id), class: "button is-outlined", 'aria-label': "Edit close reason #{reason.name}" %>
       </td>
     </tr>
   <% end %>
@@ -46,5 +46,5 @@
     Do not add reasons where you're not sure that your community needs or wants them.
   </p>
   <p>It's not possible to remove reasons, once created. They can only be deactivated.</p>
-  <%= link_to "add reason", new_close_reason_path(global: params[:global]), class: "button is-outlined" %>
+  <%= link_to "add reason", new_close_reason_path(global: params[:global]), class: "button is-outlined", 'aria-label': 'Add new close reason' %>
 </div>
diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb
index 7dc7caad9e7ca6f856b5368c6a2f7351375fda11..4d8e4f2c2b1aad65b379fea1e5b458e8e2e1bf44 100644
--- a/app/views/comments/_comment.html.erb
+++ b/app/views/comments/_comment.html.erb
@@ -45,27 +45,27 @@
       <% end %>
     </div>
     <div class="comment--links">
-      <%= link_to comment_link(comment), class: 'js-comment-permalink' do %>
+      <%= link_to comment_link(comment), class: 'js-comment-permalink', role: 'button' do %>
         <span class="js-text">copy link</span>
       <% end %>
       <% if with_post_link %>
         <%= link_to 'post', generic_share_link(comment.post) %>
       <% end %>
       <% if user_signed_in? && (comment.user == current_user || current_user.is_moderator) && params[:inline] != 'true' %>
-        <a href="#" class="js-comment-edit">edit</a>
+        <a href="#" class="js-comment-edit" role="button" aria-label="Edit comment">edit</a>
         <% if comment.deleted %>
-          <a href="#" class="is-red js-comment-undelete">undelete</a>
+          <a href="#" class="is-red js-comment-undelete" role="button" aria-label="Undelete comment">undelete</a>
         <% else %>
-          <a href="#" class="is-red js-comment-delete">delete</a>
+          <a href="#" class="is-red js-comment-delete" role="button" aria-label="Delete comment">delete</a>
         <% end %>
       <% end %>
       <% if user_signed_in? && params[:inline] != 'true' %>
-        <a href="javascript:void(0)" data-drop="#flag-comment-<%= comment.id %>">flag</a>
+        <a href="javascript:void(0)" data-drop="#flag-comment-<%= comment.id %>" role="button" aria-label="Flag comment">flag</a>
         <div class="droppanel is-large h-c-black" id="flag-comment-<%= comment.id %>">
           <label for="flag-post-<%= comment.id %>">Flag reason</label>
           <input type="text" id="flag-post-<%= comment.id %>" class="form-element" />
           <a href="javascript:void(0)" class="flag-link js-comment-flag button is-danger" data-post-id="<%= comment.id %>"
-             data-requires-details="true">Flag</a>
+             data-requires-details="true" role="button" aria-label="Flag comment">Flag</a>
         </div>
       <% end %>
     </div>
diff --git a/app/views/comments/_new_thread_modal.html.erb b/app/views/comments/_new_thread_modal.html.erb
index 5ba122f28671e033001b1d6854f98f2bfc558359..8ea24575f81b375e68688951f91bb26c61183916 100644
--- a/app/views/comments/_new_thread_modal.html.erb
+++ b/app/views/comments/_new_thread_modal.html.erb
@@ -20,11 +20,7 @@
       <div class="form-caption">Start the thread with a comment.</div>
       <%= text_area_tag :body, '', class: 'form-element js-comment-field', required: true,
                         data: { post: post.id, thread: '-1', character_count: ".js-character-count-#{post.id}" } %>
-      <span class="has-float-right has-font-size-caption js-character-count-<%= post.id %>"
-            data-max="1000" data-min="15">
-        <i class="fas fa-ellipsis-h js-character-count__icon"></i>
-        <span class="js-character-count__count">0 / 1000</span>
-      </span>
+      <%= render 'shared/char_count', type: post.id, min: 15, max: 1000 %>
 
       <%= label_tag :title, 'Comment thread title (optional)', class: 'form-element' %>
       <span class="form-caption">
@@ -32,12 +28,7 @@
         be shown.
       </span>
       <%= text_field_tag :title, '', class: 'form-element', data: { character_count: ".js-character-count-thread-title" } %>
-
-      <span class="has-float-right has-font-size-caption js-character-count-thread-title hide"
-            data-max="255" data-min="0" data-display-at="0.75">
-        <i class="fas fa-ellipsis-h js-character-count__icon"></i>
-        <span class="js-character-count__count">0 / 255</span>
-      </span>
+      <%= render 'shared/char_count', type: 'thread-title' %>
 
       <%= submit_tag 'Create thread', class: 'button is-filled', id: "create_thread_button_#{post.id}", disabled: true %>
     <% end %>
diff --git a/app/views/comments/_post.html.erb b/app/views/comments/_post.html.erb
index 4949f50123b0157af420da191e0fd5263ba10dc0..4d7c00fcfcf4718ac3c554adb38153096c237c3c 100644
--- a/app/views/comments/_post.html.erb
+++ b/app/views/comments/_post.html.erb
@@ -3,14 +3,14 @@
 %>
 
 <% comment_threads.each do |thread| %>
-  <div class="post--comments-thread-wrapper">
+  <div class="post--comments-thread-wrapper" role="listitem">
     <div class="post--comments-thread is-inline <%= thread.deleted ? 'is-deleted' : '' %> <%= thread.archived ? 'is-archived' : '' %>">
       <% if thread.deleted %>
         <i class="fas fa-trash h-c-red-600 fa-fw" title="Deleted thread" aria-label="Deleted thread"></i>
       <% elsif thread.archived %>
         <i class="fas fa-archive fa-fw" title="Archived thread" aria-label="Archived thread"></i>
       <% end %>
-      <%= link_to thread.title, comment_thread_path(thread), class: 'js--comment-link', data: { thread: thread.id } %>
+      <%= link_to thread.title, comment_thread_path(thread), class: 'js--comment-link', data: { thread: thread.id }, role: 'button' %>
       (<%= pluralize(thread.reply_count, 'comment') %>)
     </div>
   </div>
diff --git a/app/views/comments/thread.html.erb b/app/views/comments/thread.html.erb
index dda35581cfc144bbaa1e2526b7d2cbb91f7cb693..98aa32ebdc4ebd28d05fab944f08e93b5cc36db2 100644
--- a/app/views/comments/thread.html.erb
+++ b/app/views/comments/thread.html.erb
@@ -24,9 +24,9 @@
 <!-- THREAD STARTS BELOW -->
 <div class="<%= @comment_thread.deleted ? 'h-bg-red-050' : '' %> <%= params[:inline] == 'true' ? 'post--comments-thread is-embedded' : '' %>">
 
-<div class="widget <%= @comment_thread.deleted ? 'is-red' : '' %>" data-deleted="<%= @comment_thread.deleted %>"
+<div class="widget thread <%= @comment_thread.deleted ? 'is-red' : '' %>" data-deleted="<%= @comment_thread.deleted %>"
      data-archived="<%= @comment_thread.archived %>" data-thread="<%= @comment_thread.id %>"
-     data-comments="<%= @comment_thread.reply_count %>">
+     data-comments="<%= @comment_thread.reply_count %>" data-post="<%= @post.id %>">
   <div class="widget--header">
     <% if params[:inline] == 'true' %>
       <a href="<%= comment_thread_path(@comment_thread.id) %>" class="widget--header-link">
@@ -37,18 +37,23 @@
       </a>
     <% else %>
       <% if current_user&.privilege? 'flag_curate' %>
-        <a href="#" class="widget--header-link" data-drop=".js--tools-thread-<%= @comment_thread.id %>"><i class="fa fa-cog fa-fw"></i>tools</a>
+        <a href="#" class="widget--header-link" data-drop=".js--tools-thread-<%= @comment_thread.id %>"
+          role="button" aria-label="Show more thread tools">
+          <i class="fa fa-cog fa-fw"></i>tools
+        </a>
       <% end %>
       <% unless current_user.nil? %>
         <% if @comment_thread.followed_by? current_user %>
           <a href="#" class="widget--header-link js--unrestrict-thread" data-action="follow"
-            data-thread="<%= @comment_thread.id %>" title="You are following this thread and will be notified of every response. You can unfollow at any time.">
-            <i class="fa fa-minus fa-fw"></i>unfollow
+            data-thread="<%= @comment_thread.id %>" title="You are following this thread and will be notified of every response. You can unfollow at any time."
+            role="button" aria-label="Unfollow this thread">
+            <i class="fas fa-fw fa-bell-slash"></i> unfollow
           </a>
         <% else %>
           <a href="#" class="widget--header-link js--restrict-thread" data-action="follow"
-            data-thread="<%= @comment_thread.id %>" title="Follow this thread to be notified of every response.">
-            <i class="fa fa-plus fa-fw"></i>follow
+            data-thread="<%= @comment_thread.id %>" title="Follow this thread to be notified of every response."
+            role="button" aria-label="Follow this thread">
+            <i class="fas fa-fw fa-bell"></i> follow
           </a>
         <% end %>
       <% end %>
@@ -71,26 +76,28 @@
       <% count <= 5 %>
     <% end %>
   <% end %>
-  <% comments.each do |comment| %>
-    <% if comment.deleted && !(current_user&.is_moderator && params[:show_deleted_comments] == "1") %>
-      <% skipped_deleted += 1%>
-      <% next %>
-    <% elsif skipped_deleted > 0 %>
-      <div class="widget--body">
+  <div role="list">
+    <% comments.each do |comment| %>
+      <% if comment.deleted && !(current_user&.is_moderator && params[:show_deleted_comments] == "1") %>
+        <% skipped_deleted += 1%>
+        <% next %>
+      <% elsif skipped_deleted > 0 %>
+        <div class="widget--body" role="listitem">
+          <%= render 'comments/skip_deleted', skipped_deleted: skipped_deleted%>
+        </div>
+        <% skipped_deleted = 0 %>
+      <% end %>
+      <div class="widget--body" role="listitem">
+        <%= render 'comments/comment', comment: comment, pingable: pingable %>
+      </div>
+    <% end %>
+    <% if skipped_deleted > 0 %>
+      <div class="widget--body" role="listitem">
         <%= render 'comments/skip_deleted', skipped_deleted: skipped_deleted%>
       </div>
       <% skipped_deleted = 0 %>
     <% end %>
-    <div class="widget--body">
-      <%= render 'comments/comment', comment: comment, pingable: pingable %>
-    </div>
-  <% end %>
-  <% if skipped_deleted > 0 %>
-    <div class="widget--body">
-      <%= render 'comments/skip_deleted', skipped_deleted: skipped_deleted%>
-    </div>
-    <% skipped_deleted = 0 %>
-  <% end %>
+  </div>
   <% unless current_user.nil? || params[:inline] == 'true' %>
     <div class="widget--footer">
       <% if !@comment_thread.read_only? %>
@@ -114,12 +121,8 @@
             <%= text_area_tag :content, '', class: 'form-element js-comment-field',
                               data: { thread: @comment_thread.id, post: @comment_thread.post_id,
                                       character_count: ".js-character-count-#{@post.id}" } %>
-            <span class="has-float-right has-font-size-caption js-character-count-<%= @post.id %>"
-                  data-max="1000" data-min="15">
-              <i class="fas fa-ellipsis-h js-character-count__icon"></i>
-              <span class="js-character-count__count">0 / 1000</span>
-            </span>
-            
+            <%= render 'shared/char_count', type: @post.id, min: 15, max: 1000 %>
+
             <%= submit_tag 'Add reply', class: 'button is-muted is-filled', disabled:true %>
           <% end %>
         <% end %>
@@ -149,36 +152,50 @@
     <div class="droppanel--header">thread options</div>
     <div class="droppanel--menu">
       <% if current_user.is_moderator || !@comment_thread.read_only? %>
-        <a href="#" data-modal=".js--rename-thread-<%= @comment_thread.id %>" data-drop=".js--tools-thread-<%= @comment_thread.id %>"><i class="fas fa-pen fa-fw"></i> rename</a>
+        <a href="#" data-modal=".js--rename-thread-<%= @comment_thread.id %>" role="button" aria-label="Rename thread">
+          <i class="fas fa-pen fa-fw"></i> rename
+        </a>
       <% end %>
 
       <% unless @comment_thread.archived || @comment_thread.deleted %>
         <% if @comment_thread.locked? %>
-          <a href="#" class="js--unrestrict-thread" data-action="lock" data-drop=".js--tools-thread-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>"><i class="fas fa-lock fa-fw"></i> unlock</a>
+          <a href="#" class="js--unrestrict-thread" data-action="lock" data-thread="<%= @comment_thread.id %>" role="button" aria-label="Unlock thread">
+            <i class="fas fa-lock fa-fw"></i> unlock
+          </a>
         <% else %>
-          <a href="#" data-modal=".js--lock-thread-<%= @comment_thread.id %>" data-drop=".js--tools-thread-<%= @comment_thread.id %>"><i class="fas fa-lock fa-fw"></i> lock</a>
+          <a href="#" data-modal=".js--lock-thread-<%= @comment_thread.id %>" role="button" aria-label="Lock thread">
+            <i class="fas fa-lock fa-fw"></i> lock
+          </a>
         <% end %>
       <% end %>
       
       <% unless @comment_thread.locked? || @comment_thread.deleted %>
         <% if @comment_thread.archived %>
-          <a href="#" class="js--unrestrict-thread" data-action="archive" data-drop=".js--tools-thread-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>"><i class="fas fa-archive fa-fw"></i> restore</a>
+          <a href="#" class="js--unrestrict-thread" data-action="archive" data-thread="<%= @comment_thread.id %>" role="button" aria-label="Restore thread">
+            <i class="fas fa-archive fa-fw"></i> restore
+          </a>
         <% else %>
-          <a href="#" class="js--restrict-thread" data-action="archive" data-drop=".js--tools-thread-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>"><i class="fas fa-archive fa-fw"></i> archive</a>
+          <a href="#" class="js--restrict-thread" data-action="archive" data-thread="<%= @comment_thread.id %>" role="button" aria-label="Archive thread">
+            <i class="fas fa-archive fa-fw"></i> archive
+          </a>
         <% end %>
       <% end %>
 
       <% unless @comment_thread.locked? || @comment_thread.archived %>
         <% if @comment_thread.deleted %>
-          <a href="#" class="js--unrestrict-thread" data-action="delete" data-drop=".js--tools-thread-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>"><i class="fas fa-trash fa-fw"></i> undelete</a>
+          <a href="#" class="js--unrestrict-thread" data-action="delete" data-thread="<%= @comment_thread.id %>" role="button" aria-label="Undelete thread">
+            <i class="fas fa-trash fa-fw"></i> undelete
+          </a>
         <% else %>
-          <a href="#" class="js--restrict-thread" data-action="delete" data-drop=".js--tools-thread-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>"><i class="fas fa-trash fa-fw"></i> delete</a>
+          <a href="#" class="js--restrict-thread" data-action="delete" data-thread="<%= @comment_thread.id %>" role="button" aria-label="Delete thread">
+            <i class="fas fa-trash fa-fw"></i> delete
+          </a>
         <% end %>
       <% end %>
 
       <% if current_user&.is_moderator || current_user&.is_admin %>
-        <a href="#" class="js--show-followers" data-modal="#js-followers-<%= @comment_thread.id %>"
-           data-drop=".js--tools-thread-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>">
+        <a href="#" class="js--show-followers" data-modal="#js-followers-<%= @comment_thread.id %>" data-thread="<%= @comment_thread.id %>"
+           role="button" aria-label="Show thread followers">
           <i class="fas fa-users"></i> followers
         </a>
       <% end %>
diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb
index b1d1216f22bfca5661e432e18e49936bd6f18ad9..644611675a422c29e8c1524f4910791bb9d9661e 100644
--- a/app/views/devise/registrations/edit.html.erb
+++ b/app/views/devise/registrations/edit.html.erb
@@ -6,12 +6,27 @@
   Two-factor authentication &raquo;
 <% end %>
 
+<% sso = current_user.sso_profile.present? %>
+<% if sso %>
+  <% if devise_sign_in_enabled? && SiteSetting['AllowSsoDisconnect'] %>
+    <%= link_to user_disconnect_sso_path, class: 'button is-outlined is-danger' do %>
+      Disconnect Single Sign-On &raquo;
+    <% end %>
+  <% end %>
+
+  <div class="notice is-warning">
+    You sign in through a Single Sign-On provider.
+    Because of that, you cannot change your email address or password here.
+    Please contact your system administrator if you would like to change these.
+  </div>
+<% end %>
+
 <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
   <%= render "devise/shared/error_messages", resource: resource %>
 
   <div class="form-group">
     <%= f.label :email, class: "form-element" %>
-    <%= f.email_field :email, class: 'form-element', autofocus: true, autocomplete: "email" %>
+    <%= f.email_field :email, class: 'form-element', autofocus: true, autocomplete: "email", disabled: sso %>
   </div>
 
   <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
@@ -19,26 +34,27 @@
   <% end %>
 
   <div class="form-group">
-    <%= f.label :password, class: "form-element" %>
+    <%= f.label :current_password, class: "form-element" %>
+    <div class="form-caption">We need your current password to confirm your changes.</div>
+    <%= f.password_field :current_password, class: 'form-element', autocomplete: "current-password", required: true,
+                         disabled: sso %>
+  </div>
+
+  <div class="form-group">
+    <%= f.label :password, "New password", class: "form-element" %>
     <div class="form-caption">
       Leave blank if you don't want to change it.
       <% if @minimum_password_length %>
         <em>(<%= @minimum_password_length %> characters minimum)</em>
       <% end %>
     </div>
-    <%= f.password_field :password, class: 'form-element', autocomplete: "new-password" %>
+    <%= f.password_field :password, class: 'form-element', autocomplete: "new-password", disabled: sso %>
   </div>
 
   <div class="form-group">
-    <%= f.label :password_confirmation, class: "form-element" %>
-    <%= f.password_field :password_confirmation, class: 'form-element', autocomplete: "new-password" %>
-  </div>
-
-  <div class="form-group">
-    <%= f.label :current_password, class: "form-element" %>
-    <div class="form-caption">We need your current password to confirm your changes.</div>
-    <%= f.password_field :current_password, class: 'form-element', autocomplete: "current-password", required: true %>
+    <%= f.label :password_confirmation, "Confirm new password", class: "form-element" %>
+    <%= f.password_field :password_confirmation, class: 'form-element', autocomplete: "new-password", disabled: sso %>
   </div>
 
-  <%= f.submit "Update", class: 'button is-filled is-very-large' %>
+  <%= f.submit "Update", class: 'button is-filled is-very-large', disabled: sso %>
 <% end %><br/>
diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb
index 1679be35b260b43e0c21ee7e9ac0fd5f19d5d905..8fc1a62a7946e6a7065098fdca8862cbc8d199a4 100644
--- a/app/views/devise/registrations/new.html.erb
+++ b/app/views/devise/registrations/new.html.erb
@@ -1,5 +1,12 @@
 <h1>Sign up</h1>
 
+<% if sso_sign_in_enabled? %>
+  <div class="notice is-info has-margin-bottom-4">
+    <i class="fas fa-info-circle"></i> You can also sign in with your Single Sign-On provider.
+    <%= link_to "SSO Sign in", new_saml_user_session_path(resource_name), class: 'button is-primary is-filled' %>
+  </div>
+<% end %>
+
 <div class="notice is-info">
   <i class="fas fa-info-circle"></i> If you have an account on another <a href="https://codidact.com/">Codidact site</a>,
   don't create a new account here - <%= link_to 'sign in', new_user_session_path %> with your existing details instead.
diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb
index a15f722062c8f2e9735ff88bb57b9dedb38868e4..b6a4569664d54cf3976969f718e21e8716645dde 100644
--- a/app/views/devise/sessions/new.html.erb
+++ b/app/views/devise/sessions/new.html.erb
@@ -1,8 +1,15 @@
 <h1>Sign in</h1>
 
+<% if sso_sign_in_enabled? %>
+  <div class="notice is-info has-margin-bottom-4">
+    <i class="fas fa-info-circle"></i> You can also sign in with your Single Sign-On provider.
+    <%= link_to "SSO Sign in", new_saml_user_session_path(resource_name), class: 'button is-primary is-filled' %>
+  </div>
+<% end %>
+
 <div class="notice is-info has-margin-bottom-4">
-  <i class="fas fa-info-circle"></i> Your sign-in information is the same on all
-  <a href="https://codidact.com/">Codidact communities</a>.
+  <p><i class="fas fa-info-circle"></i> Your sign-in information is the same on all communities on this network.</p>
+  <p>By signing in, you agree to abide by our <a href="/help/tos">Terms of Service</a>, <a href="/help/code-of-conduct">Code of Conduct</a>, <a href="/help/spam">Guidelines for promotional content</a>, and any other policies listed in the <a href="/help">Help Center</a>.</p>
 </div>
 
 <%= form_for(resource, as: resource_name, url: session_path(resource_name), method: :post) do |f| %>
@@ -18,7 +25,7 @@
 
   <% if devise_mapping.rememberable? %>
     <div class="form-group">
-      <%= f.label :remember_me, class: "form-element" %>
+      <%= f.label :remember_me, 'Stay signed in on this device', class: "form-element" %>
       <%= f.check_box :remember_me, class: "form-radio-element" %>
     </div>
   <% end %>
diff --git a/app/views/devise/shared/_links.html.erb b/app/views/devise/shared/_links.html.erb
index 18fdcd6ab2d31659fa02c1dff05351dd735a6af3..15b79838a6d9e2d1385c445f4128809f29d652d5 100644
--- a/app/views/devise/shared/_links.html.erb
+++ b/app/views/devise/shared/_links.html.erb
@@ -1,20 +1,24 @@
-<%- if controller_name != 'sessions' %>
+<%- if controller_name != 'sessions' && devise_sign_in_enabled? %>
   <%= link_to "Sign in", new_session_path(resource_name) %><br />
 <% end %>
 
-<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
+<%- if controller_name != 'saml_sessions' && sso_sign_in_enabled? %>
+  <%= link_to "SSO Sign in", new_saml_user_session_path(resource_name) %><br />
+<% end %>
+
+<%- if devise_mapping.registerable? && controller_name != 'registrations' && devise_sign_in_enabled? %>
   <%= link_to "Sign up", new_registration_path(resource_name) %><br />
 <% end %>
 
-<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
+<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' && devise_sign_in_enabled? %>
   <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
 <% end %>
 
-<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
+<%- if devise_mapping.confirmable? && controller_name != 'confirmations' && devise_sign_in_enabled? %>
   <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
 <% end %>
 
-<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
+<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' && devise_sign_in_enabled? %>
   <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
 <% end %>
 
diff --git a/app/views/donation_mailer/donation_uncaptured.html.erb b/app/views/donation_mailer/donation_uncaptured.html.erb
index a37cfaaaffdc5b56af63730df9aa6788ba473139..4e7a89d57eb893edf65a939adb0a1902f4f7b5e4 100644
--- a/app/views/donation_mailer/donation_uncaptured.html.erb
+++ b/app/views/donation_mailer/donation_uncaptured.html.erb
@@ -12,7 +12,7 @@
 <p>
   We want to make sure that everything's okay. If you just changed your mind, that's absolutely fine! We're not here
   to push. If you ran into problems, however, please let us know if we can help &mdash; you can reply to this email to
-  reach us at <a href="mailto:support@codidact.org">support@codidact.org</a>, or you can post on our
+  reach us at <a href="mailto:<%= message.reply_to %>"><%= message.reply_to %></a>, or you can post on our
   <a href="https://meta.codidact.com/">Meta</a> site, and someone will lend a hand.
 </p>
 
diff --git a/app/views/donation_mailer/donation_uncaptured.text.erb b/app/views/donation_mailer/donation_uncaptured.text.erb
index 463355f7849b3914556146baad26a58f82d70f43..0b29da4f887ee10853729addd9d8f26322c18f73 100644
--- a/app/views/donation_mailer/donation_uncaptured.text.erb
+++ b/app/views/donation_mailer/donation_uncaptured.text.erb
@@ -10,7 +10,7 @@ You started the process to make a donation of <%= number_to_currency(@amount, un
 
 We want to make sure that everything's okay. If you just changed your mind, that's absolutely fine! We're not here
 to push. If you ran into problems, however, please let us know if we can help — you can reply to this email to
-reach us at support@codidact.org, or you can post on our Meta site (https://meta.codidact.com/), and someone will
+reach us at <%= message.reply_to %>, or you can post on our Meta site (https://meta.codidact.com/), and someone will
 lend a hand.
 
 Whatever happened, thanks for thinking of us!
diff --git a/app/views/errors/restricted_content.html.erb b/app/views/errors/restricted_content.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..1b9c5f2eab81424c50f6b2d848184a99114e1894
--- /dev/null
+++ b/app/views/errors/restricted_content.html.erb
@@ -0,0 +1,20 @@
+<%= content_for :title, "Welcome to #{SiteSetting['SiteName']}" %>
+
+<%- if request.fullpath != '/' %>
+  <div class="notice is-danger">
+    <div class="container">
+      <p>You need to sign in before you can access this site.</p>
+    </div>
+  </div>
+<% end %>
+
+<%= raw(sanitize(render_markdown(SiteSetting['RestrictedAccessFrontPageText']), scrubber: scrubber)) %>
+
+<%- if sso_sign_in_enabled? %>
+  <%= link_to "SSO Sign in", new_saml_user_session_path, class: 'button is-extremely-large is-filled' %><br />
+<% end %>
+
+<%- if devise_sign_in_enabled? %>
+  <%= link_to "Sign in", new_user_session_path, class: 'button is-extremely-large is-muted is-outlined' %><br />
+  <%= link_to "Sign up", new_user_registration_path, class: 'button is-extremely-large is-muted is-filled' %><br />
+<% end %>
\ No newline at end of file
diff --git a/app/views/flags/_flag.html.erb b/app/views/flags/_flag.html.erb
index 3ce6aea42a26d635866d7de8b46eea31ed3af9db..d3fb85779c8456224a5c1baa47a2023ee3685e81 100644
--- a/app/views/flags/_flag.html.erb
+++ b/app/views/flags/_flag.html.erb
@@ -21,7 +21,12 @@
   <div class="widget--body">
     <p>
       <strong><%= flag.post_flag_type&.name || 'Flag reason' %></strong>: <%= flag.reason %> &mdash;
-      <%= user_link flag.user %>
+      <%= user_link flag.user %> at <%= flag.created_at.iso8601 %>
+      <% if flag.post_type == 'Post' && flag.post.updated_at > flag.created_at %>
+      <%= link_to post_history_path(flag.post) do %>
+	(post modified after flag)
+      <% end %>
+      <% end %>
     </p>
   </div>
   <% if escalation %>
@@ -30,6 +35,9 @@
         <strong>Escalation reason</strong>: <%= flag.escalation_comment %> &mdash;
         <%= user_link flag.escalated_by %> <%= flag.escalated_at.iso8601 %>
       </p>
+      <p>
+	<strong>Attention</strong>: The reply to the flag will be shown to the flagger, not the mod escalating this flag. Do not share sensitive, mod-only information.
+      </p>
     </div>
   <% end %>
   <% if controls %>
@@ -50,4 +58,4 @@
       </div>
     </div>
   <% end %>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/flags/_handled.html.erb b/app/views/flags/_handled.html.erb
index 8922132267986e92c5a912cfcad7a984f4026b41..e9e65c75ceeaa0637d4bd9444aa5d30eafdee8a4 100644
--- a/app/views/flags/_handled.html.erb
+++ b/app/views/flags/_handled.html.erb
@@ -9,7 +9,7 @@
   <div class="widget--body">
     <p>
       <strong><%= flag.post_flag_type&.name || 'Flag reason' %>: </strong><%= flag.reason %> &mdash;
-      <%= user_link flag.user %>
+      <%= user_link flag.user %>  at <%= flag.created_at.iso8601 %>
       (<%= link_to 'history', flag_history_path(flag.user) %>)
     </p>
     <p>
@@ -20,12 +20,13 @@
       <% if flag.message.present? %>
         <strong>response:</strong> <%= flag.message %>
       <% end %>
-      <% if flag.handled_by_id.present? %>
+      <% if flag.handled_by_id.present? && current_user.is_moderator %>
         &mdash;
         <%= link_to user_path(flag.handled_by) do %>
           <span dir="ltr"><%= rtl_safe_username(flag.handled_by) %></span>
-        <% end %>
+          <% end %>
+	  handled at <%= flag.handled_at.iso8601 %>
       <% end %>
     </p>
   </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/flags/handled.html.erb b/app/views/flags/handled.html.erb
index 320ac30ddaa1d7523ceb917e8cb36950719fcdcb..9e0c3d0ed793df56dde3bb828220a8a72e368483 100644
--- a/app/views/flags/handled.html.erb
+++ b/app/views/flags/handled.html.erb
@@ -13,4 +13,6 @@
 
 <% @flags.each do |flag| %>
   <%= render 'handled', flag: flag %>
-<% end %>
\ No newline at end of file
+<% end %>
+
+<%= will_paginate @flags, renderer: BootstrapPagination::Rails %>
diff --git a/app/views/flags/queue.html.erb b/app/views/flags/queue.html.erb
index 9939b4d7db9361855af278150cc5b99f7aca730a..3cee195918a574216a26255ac9ad31154bfcbbdd 100644
--- a/app/views/flags/queue.html.erb
+++ b/app/views/flags/queue.html.erb
@@ -6,6 +6,7 @@
 <h1>Moderator Flag Queue</h1>
 <p>Below is a list of posts that users have flagged. Users are asked to provide a reason when flagging posts for
   moderator attention; use that to help you determine what needs to be done.</p>
+<p>You can mark a flag helpful even if you take no action. If a post was edited after the flag was raised, for example, the problem might already be fixed.</p>
 
 <div class="button-list is-gutterless">
   <%= link_to 'Active', flag_queue_path,
diff --git a/app/views/layouts/_footer.html.erb b/app/views/layouts/_footer.html.erb
index b00c2c03f59917f8c5e2b720153b422c4e2435a3..909be8b490ae25f937927e1d19329386fdb3ef7c 100644
--- a/app/views/layouts/_footer.html.erb
+++ b/app/views/layouts/_footer.html.erb
@@ -2,28 +2,23 @@
   <div class="footer--container container">
     <div class="grid">
       <div class="grid--cell is-6 is-12-md is-12-sm">
-        <h3>The Codidact Project</h3>
         <ul>
-          <li><%= link_to 'Terms of Service', '/policy/tos' %></li>
-          <li><%= link_to 'Privacy Policy', '/policy/privacy-policy' %></li>
-          <li><%= link_to 'Code of Conduct', '/policy/code-of-conduct' %></li>
-          <li><%= link_to 'About us', 'https://codidact.org/' %></li>
-          <li><%= link_to 'Contact us', 'https://codidact.com/contact' %></li>
-          <li><%= link_to 'Other communities', 'https://codidact.com/' %></li>
+          <li><%= link_to 'Our Communities', '/dashboard' %></li>
+          <li><%= link_to 'About Us', '/policy/network-faq' %></li>
         </ul>
       </div>
       <div class="grid--cell is-6 is-12-md is-12-sm">
-        <h3>Other Codidact Communities</h3>
         <ul>
-          <% Rails.cache.persistent('codidact_sites').each do |site| %>
-            <li><%= link_to site['name'], site['canonical_url'] %></li>
-          <% end %>
+          <li><%= link_to 'Terms of Service', '/policy/tos' %></li>
+          <li><%= link_to 'Privacy Policy', '/policy/privacy-policy' %></li>
+          <li><%= link_to 'Code of Conduct', '/policy/code-of-conduct' %></li>
         </ul>
       </div>
     </div>
-    <% commit = Rails.cache.persistent('current_commit') %>
-    <p>
-      Version <%= link_to commit[0][0..7], "https://github.com/codidact/qpixel/commit/#{commit[0]}" %> (<%= commit[1] %>)
+    <% sha, date = current_commit %>
+    <p>Powered by <%= link_to 'Codidact', 'https://codidact.org/' %>. <% if sha&.present? %>Version <%= 
+      link_to sha[0..7], "https://github.com/codidact/qpixel/commit/#{sha}" 
+    %> (<%= date.to_time.utc.strftime('%F %TZ') %>)<% end %>
     </p>
   </div>
 </footer>
diff --git a/app/views/layouts/_head.html.erb b/app/views/layouts/_head.html.erb
index c9bf20abdb269627aadabdb8a082736c8d9053f6..8a88d427ac3425bd93c55f6122763d5cf2510678 100644
--- a/app/views/layouts/_head.html.erb
+++ b/app/views/layouts/_head.html.erb
@@ -19,7 +19,7 @@
 <link rel="preconnect" href="https://cdnjs.cloudflare.com" />
 
 <%= stylesheet_link_tag "https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.11.2/css/all.min.css" %>
-<%= stylesheet_link_tag "https://cdn.jsdelivr.net/npm/@codidact/co-design@0.12.5/dist/codidact.css" %>
+<%= stylesheet_link_tag "https://cdn.jsdelivr.net/npm/@codidact/co-design@latest/dist/codidact.css" %>
 <%= stylesheet_link_tag "https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/css/select2.min.css" %>
 <%= stylesheet_link_tag "/assets/community/#{@community.host.split('.')[0]}.css" %>
 <%= stylesheet_link_tag 'application', media: 'all' %>
@@ -27,13 +27,13 @@
 <%= javascript_include_tag "https://cdn.jsdelivr.net/npm/jquery@2.2.2/dist/jquery.min.js" %>
 <%= javascript_include_tag "https://cdn.jsdelivr.net/npm/moment@2.13.0/min/moment.min.js" %>
 <%= javascript_include_tag "https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/js/select2.min.js" %>
-<% if SiteSetting['DonationsEnabled'] %>
+<% if SiteSetting['DonationsEnabled'] && (SiteSetting['LoadStripeEverywhere'] || controller_name == 'donations') %>
   <%= javascript_include_tag "https://js.stripe.com/v3/" %>
 <% end %>
 <%= javascript_include_tag "https://cdn.jsdelivr.net/npm/dompurify@2.2.9/dist/purify.min.js" %>
 <%= javascript_include_tag "/assets/community/#{@community.host.split('.')[0]}.js" %>
 <%= javascript_include_tag 'application' %>
-<script src="https://cdn.jsdelivr.net/npm/@codidact/co-design@0.12.5/js/co-design.js" defer></script>
+<script src="https://cdn.jsdelivr.net/npm/@codidact/co-design@latest/js/co-design.js" defer></script>
 
 <% if SiteSetting['SyntaxHighlightingEnabled'] %>
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.0.1/styles/default.min.css">
@@ -49,7 +49,7 @@
       }
     };
   </script>
-  <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+  <script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?version=3.27.4&features=es7%2Ces6%2Ces5%2Ces2018%2Ces2017%2Ces2016%2Ces2015%2Cdefault"></script>
   <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
 <% end %>
 
diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb
index 0de78a20deae4ac1e5c3f840a012af3b2a49d596..bf3f6c612d9f553d95b3aa37e14900365f0effc9 100644
--- a/app/views/layouts/_header.html.erb
+++ b/app/views/layouts/_header.html.erb
@@ -2,6 +2,23 @@
 <% mobile_logo_path = SiteSetting['MobileLogoPath'] %>
 <% sticky_header = user_preference('sticky_header', community: false) == 'true' %>
 
+<script>
+const toggleSearchFocus = () => {
+  const $input = $('#search');
+
+  if ($input.is(':focus')) {
+    $input.blur();
+  }
+  else {
+      $input.focus();
+  }
+};
+
+$(() => {
+  $('a[data-header-slide="#search-slide"]').on('click', toggleSearchFocus);
+});
+</script>
+
 <header class="header is-small has-margin-0<%=' is-dark' if SiteSetting['SiteHeaderIsDark'] %><%= ' sticky' if sticky_header %>">
   <div class="container header--container">
     <div class="header--brand">
@@ -22,10 +39,12 @@
     </div>
     <nav class="header--menu">
       <% unless @community.is_fake %>
-        <%= link_to users_path, class: 'header--item' do %>
+        <%= link_to users_path, class: 'header--item', title: 'Open users list' do %>
           <i class="fas fa-fw fa-users"></i> Users
         <% end %>
-        <%= link_to search_path, class: 'header--item', data: { 'header-slide' => '#search-slide' } do %>
+        <%= link_to search_path, class: 'header--item', 
+                                 data: { 'header-slide' => '#search-slide' },
+                                 title: 'Show search' do %>
           <i class="fas fa-fw fa-search"></i> Search
         <% end %>
       <% end %>
@@ -33,7 +52,9 @@
       <% if user_signed_in? %>
         <% unless @community.is_fake %>
           <% if current_user.is_moderator %>
-            <%= link_to (@open_flags > 0) ? flag_queue_path : moderator_path, class: 'header--item' do %>
+            <%= link_to (@open_flags > 0) ? flag_queue_path : moderator_path, 
+                class: 'header--item',
+                title: 'Open moderator dashboard' do %>
               <i class="fas fa-fw fa-wrench"></i> Mod
               <% if @open_flags > 0 %>
                 <span class="header--alert"><%= @open_flags %></span>
@@ -43,34 +64,47 @@
         <% end %>
       <% end %>
       <% unless @community.is_fake %>
-        <%= link_to help_center_path, class: 'header--item' do %>
+        <%= link_to help_center_path, class: 'header--item', title: 'Open Help Center' do %>
           <i class="fas fa-fw fa-question-circle"></i> Help
         <% end %>
-        <%= link_to dashboard_path, class: 'header--item' do %>
-          <i class="fas fa-fw fa-th" title='Dashboard'></i>
+        <%= link_to dashboard_path, class: 'header--item', title: 'Open dashboard' do %>
+          <i class="fas fa-fw fa-th"></i>
         <% end %>
       <% end %>
       <% if user_signed_in? %>
-        <a href="#" class="header--item inbox-toggle is-visible-on-mobile" data-header-slide="#js-inbox">
+        <a href="#" class="header--item inbox-toggle is-visible-on-mobile" 
+                    data-header-slide="#js-inbox"
+                    title='Open notifications'
+                    >
           <% unread = current_user.unread_count %>
           <% if unread > 0 %>
             <span class="header--alert inbox-count"><%= unread %></span>
           <% end %>
-          <i class='fas fa-fw fa-inbox' title='Notifications'></i>
+          <i class='fas fa-fw fa-inbox'></i>
         </a>
-        <%= link_to qr_login_code_path, class: 'header--item' do %>
-          <i class="fas fa-fw fa-mobile-alt" aria-label="Mobile Sign In" title="Mobile Sign In"></i>
-        <% end %>
-        <%= link_to user_path(current_user), class: 'header--item is-complex is-visible-on-mobile' do %>
+        <%= link_to user_path(current_user), class: 'header--item is-complex is-visible-on-mobile',
+                                             title: 'Manage profile' do %>
           <img alt="user avatar" src="<%= avatar_url(current_user, 40) %>" class="header--item-image avatar-40">&nbsp;&nbsp;
           <span class="<%= SiteSetting['SiteHeaderIsDark'] ? 'has-color-white' : 'has-color-tertiary-600' %>"><%= current_user.reputation %></span>
         <% end %>
       <% end %>
-      <a href="#" class="header--item is-visible-on-mobile" aria-label="Show Communities" data-header-slide="#communities-slide"><i class="far fa-fw fa-caret-square-down"></i></a>
+      <a href="#" 
+         class="header--item is-visible-on-mobile" 
+         aria-label="Show Communities" 
+         data-header-slide="#communities-slide"
+         title="Show Communities"
+         >
+          <i class="far fa-fw fa-caret-square-down"></i>
+      </a>
       <% unless user_signed_in? %>
         <div class="header--item">
-          <%= link_to 'Sign Up', new_user_registration_path, class: 'button is-muted is-filled' %>
-          <%= link_to 'Sign In', new_user_session_path, class: 'button is-muted is-outlined' %>
+          <% if devise_sign_in_enabled? %>
+            <%= link_to 'Sign Up', new_user_registration_path, class: 'button is-muted is-filled' %>
+            <%= link_to 'Sign In', new_user_session_path, class: 'button is-muted is-outlined' %>
+          <% end %>
+          <% if sso_sign_in_enabled? %>
+            <%= link_to 'SSO Sign In', new_saml_user_session_path, class: 'button is-muted is-outlined' %>
+          <% end %>
         </div>
       <% end %>
       <% unless @community.is_fake %>
@@ -88,7 +122,11 @@
 
 <div class="header-slide" id="communities-slide">
   <% if user_signed_in? %>
-    <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-muted has-float-right' %>
+    <% if devise_sign_in_enabled? %>
+      <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-muted has-float-right', role: 'button' %>
+    <% else %>
+      <%= link_to 'Sign Out', destroy_saml_user_session_path, method: :delete, class: 'button is-muted has-float-right', role: 'button' %>
+    <% end %>
   <% end %>
   <h3 class="h-m-t-1">Communities</h3>
   <div class="community-header-list">
@@ -139,9 +177,9 @@
     </div>
   </div>
 
-  <%= form_tag search_path, method: :get do %>
+  <%= form_tag search_path, method: :get, role: 'search' do %>
     <div class="grid is-nowrap">
-        <%= text_field_tag :search, params[:search], class: 'form-element' %>
+        <%= search_field_tag :search, params[:search], class: 'form-element' %>
         <div class="h-m-1">
           <%= button_tag type: :submit, class: 'button is-filled is-outlined', name: nil do %>
             <i class="fa fa-search"></i>
@@ -158,6 +196,7 @@
   <div class="h-p-2 h-bg-tertiary-050 h-fw-bold">Notifications</div>
   <div class="h-p-2 h-bg-tertiary-050 h-fw-bold">
     <a class="no-unread js-read-all-notifs" href="#"><i class="fas fa-envelope-open"></i> Mark all as read</a>
+    <a href="/users/me/notifications" class="button is-muted is-small">See all your notifications &raquo;</a>
   </div>
   <div class="inbox--container h-p-2"></div>
 </div>
@@ -182,10 +221,19 @@
           <% end %>
         <% end %>
       <% end %>
-      <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'menu--item' %>
+      <% if devise_sign_in_enabled? %>
+        <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'menu--item', role: 'button' %>
+      <% else %>
+        <%= link_to 'Sign Out', destroy_saml_user_session_path, method: :delete, class: 'menu--item', role: 'button' %>
+      <% end %>
     <% else %>
-      <%= link_to 'Sign In', new_user_session_path, class: 'menu--item' %>
-      <%= link_to 'Sign Up', new_user_registration_path, class: 'menu--item' %>
+      <% if sso_sign_in_enabled? %>
+        <%= link_to 'SSO Sign In', new_saml_user_session_path, class: 'menu--item' %>
+      <% end %>
+      <% if devise_sign_in_enabled? %>
+        <%= link_to 'Sign In', new_user_session_path, class: 'menu--item' %>
+        <%= link_to 'Sign Up', new_user_registration_path, class: 'menu--item' %>
+      <% end %>
     <% end %>
   </div>
 </div>
@@ -226,8 +274,13 @@
                       class: "category-header--nav-item #{active?(current_cat) && !['tags', 'suggested_edit'].include?(controller_name) ? 'is-active' : ''}" %>
           <%= link_to 'Tags', category_tags_path(current_cat),
                       class: "category-header--nav-item #{active?(current_cat) && controller_name == 'tags' ? 'is-active' : ''}" %>
-          <%= link_to 'Edits', suggested_edits_queue_path(current_cat),
-                      class: "category-header--nav-item #{active?(current_cat) && controller_name == 'suggested_edit' ? 'is-active' : ''}" %>
+          <%= link_to suggested_edits_queue_path(current_cat),
+                      class: "category-header--nav-item #{active?(current_cat) && controller_name == 'suggested_edit' ? 'is-active' : ''}" do %>
+            Edits
+            <% if pending_suggestions?  && check_your_privilege('edit_posts') %>
+              <span class="badge is-status" title="Suggested edits pending"></span>
+            <% end %>
+          <% end %>
           <div class="category-header--nav-separator"></div>
           <%= link_to category_post_types_path(current_cat.id),
                       class: 'category-header--nav-item is-button' do %>
diff --git a/app/views/layouts/_matomo.html.erb b/app/views/layouts/_matomo.html.erb
index 8198772326ff64f2210e10abdbeb8cb929e21bf7..8ef62a3b08e5277cf7b97df3a54c1905172e437e 100644
--- a/app/views/layouts/_matomo.html.erb
+++ b/app/views/layouts/_matomo.html.erb
@@ -1,28 +1,28 @@
 <% unless SiteSetting['AnalyticsURL'].blank? || SiteSetting['AnalyticsSiteId'].blank? %>
-  <% cache [RequestContext.community, SiteSetting['AnalyticsURL'], SiteSetting['AnalyticsSiteId']] do %>
-    <script defer type="text/javascript">
-        var _paq = window._paq = window._paq || [];
-        /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  <script defer type="text/javascript">
+    (async () => {
+      var _paq = window._paq = window._paq || [];
+      /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 
-        const user = await QPixel.user();
-        if (user) {
-          _paq.push(['setUserId', `${user.id}`]);
-        } else {
-          _paq.push(['resetUserId']);
-        }
+      const user = await QPixel.user();
+      if (user) {
+        _paq.push(['setUserId', `${user.id}`]);
+      } else {
+        _paq.push(['resetUserId']);
+      }
 
-        _paq.push(['trackPageView']);
-        _paq.push(['enableLinkTracking']);
-        (function() {
-          var u="<%= SiteSetting['AnalyticsURL'] %>";
-          _paq.push(['setTrackerUrl', u+'matomo.php']);
-          _paq.push(['setSiteId', '<%= SiteSetting['AnalyticsSiteId'] %>']);
-          var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-          g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-        })();
-    </script>
-    <noscript><p>
-      <img referrerpolicy="no-referrer-when-downgrade" src="<%= SiteSetting['AnalyticsURL'] %>matomo.php?idsite=<%= SiteSetting['AnalyticsSiteId'] %>&amp;rec=1" style="border:0" alt="" />
-    </p></noscript>
-  <% end %>
+      _paq.push(['trackPageView']);
+      _paq.push(['enableLinkTracking']);
+      (function() {
+        var u="<%= SiteSetting['AnalyticsURL'] %>";
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '<%= SiteSetting['AnalyticsSiteId'] %>']);
+        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+      })();
+    })();
+  </script>
+  <noscript><p>
+    <img referrerpolicy="no-referrer-when-downgrade" src="<%= SiteSetting['AnalyticsURL'] %>matomo.php?idsite=<%= SiteSetting['AnalyticsSiteId'] %>&amp;rec=1" style="border:0" alt="" />
+  </p></noscript>
 <% end %>
diff --git a/app/views/layouts/_sidebar.html.erb b/app/views/layouts/_sidebar.html.erb
index 33a713a42dd3289ecf05bd99af8a2a79894d2215..9f608f5f859f92002e71500fb939186c8c85ef43 100644
--- a/app/views/layouts/_sidebar.html.erb
+++ b/app/views/layouts/_sidebar.html.erb
@@ -1,4 +1,4 @@
-<div class="grid--cell is-4-lg is-12">
+<div class="grid--cell is-4-lg is-12" role="complementary">
   <%= yield(:sidebar) %>
 
   <% notice_text = SiteSetting['SidebarNoticeText'] %>
@@ -92,10 +92,10 @@
       <div class="widget has-margin-4">
         <div class="widget--header">
           <%= link_to 'edit', subscriptions_path, class: 'widget--header-link' %>
-          Subscribe to Questions
+          Subscribe by Email
         </div>
         <div class="widget--body">
-          <p>You can subscribe to
+          <p>You can subscribe by email to
             <%= link_to 'all new questions', new_subscription_path(type: 'all', return_to: request.path) %>
             (from all categories) or to
             <%= link_to 'interesting questions', new_subscription_path(type: 'interesting', return_to: request.path) %>.</p>
@@ -109,11 +109,11 @@
       <img src="/assets/codidact.png" alt="Codidact logo" class="codidact-logo" />
     </div>
     <div class="widget--body">
+      <% pitch = SiteSetting['NetworkPitch'] %>
       <% chat = SiteSetting['ChatLink'] %>
-      <p>
-        This community is part of the <a href="https://codidact.com">Codidact network</a>.
-        We have other communities too &mdash; take a look!
-      </p>
+      <% if pitch.present? %>
+        <%= raw(sanitize(render_markdown(pitch), scrubber: scrubber)) %>
+      <% end %>
       <% if chat.present? %>
         <p>
           You can also <%= link_to 'join us in chat', chat %>!
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index c259af3ea187f26a35ff862472f5bd2d4a8bc418..d4b6dd5c60312b81ec808cf5126069b48f3503bc 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -3,7 +3,9 @@
 <head>
   <%= render 'layouts/head' %>
 </head>
-<body class="<%= Rails.env.development? ? 'development' : '' %>">
+<body class="<%= Rails.env.development? ? 'development' : '' %>"
+      data-user-id="<%= user_signed_in? ? current_user.id : 'none' %>"
+      data-mathjax="<%= SiteSetting['MathJaxEnabled'] %>">
   <%= render 'layouts/header' %>
 
   <main class="container">
diff --git a/app/views/layouts/devise_mailer.html.erb b/app/views/layouts/devise_mailer.html.erb
index b3a260e52eef16986f15dbea5ea47367c3d23fde..9f8e4a39c567c923c1b5cafb8f71f003b6aeda21 100644
--- a/app/views/layouts/devise_mailer.html.erb
+++ b/app/views/layouts/devise_mailer.html.erb
@@ -3,7 +3,7 @@
 <head>
   <meta charset="utf-8" />
   <title><%= message.subject %></title>
-  <%= stylesheet_link_tag 'https://cdn.jsdelivr.net/npm/@codidact/co-design@0.12.5/dist/codidact.css' %>
+  <%= stylesheet_link_tag 'https://cdn.jsdelivr.net/npm/@codidact/co-design@latest/dist/codidact.css' %>
   <%= stylesheet_link_tag 'application', media: 'all' %>
 </head>
 <body>
@@ -26,7 +26,11 @@
         London, UK<br/>
         WC2H 9JQ
       </p>
-      <p><a href="mailto:info@codidact.org">info@codidact.org</a></p>
+      <p>
+        <a href="mailto:<%= SiteSetting['SupportReceiverEmail'] || 'info@codidact.org' %>">
+          <%= SiteSetting['SupportReceiverEmail'] || 'info@codidact.org' %>
+        </a>
+      </p>
     </div>
   </div>
 </body>
diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb
index bdf01890b14b0945a932e0c771490e211cc4899a..fe13b1f7d17d500269a87010144c9b773b659258 100644
--- a/app/views/layouts/mailer.html.erb
+++ b/app/views/layouts/mailer.html.erb
@@ -3,7 +3,7 @@
 <head>
   <meta charset="utf-8" />
   <title><%= message.subject %></title>
-  <%= stylesheet_link_tag 'https://cdn.jsdelivr.net/npm/@codidact/co-design@0.12.5/dist/codidact.css' %>
+  <%= stylesheet_link_tag 'https://cdn.jsdelivr.net/npm/@codidact/co-design@latest/dist/codidact.css' %>
   <%= stylesheet_link_tag 'application', media: 'all' %>
 </head>
 <body>
@@ -26,7 +26,11 @@
       London, UK<br/>
       WC2H 9JQ
     </p>
-    <p><a href="mailto:info@codidact.org">info@codidact.org</a></p>
+    <p>
+      <a href="mailto:<%= SiteSetting['SupportReceiverEmail'] || 'info@codidact.org' %>">
+        <%= SiteSetting['SupportReceiverEmail'] || 'info@codidact.org' %>
+      </a>
+    </p>
   </div>
 </div>
 </body>
diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb
index 37c98dc48b42e895f59282a2a6ad92515511aa0b..8b0a6ed004f254b3bc6a5e91326a605433d7b89c 100644
--- a/app/views/layouts/mailer.text.erb
+++ b/app/views/layouts/mailer.text.erb
@@ -6,4 +6,4 @@
 71-75 Shelton Street
 London, UK
 WC2H 9JQ
-info@codidact.org
+<%= SiteSetting['SupportReceiverEmail'] || 'info@codidact.org' %>
diff --git a/app/views/licenses/_form.html.erb b/app/views/licenses/_form.html.erb
index 3633062856ec617d18fc828d5d15f38869a5d1b9..e0a18295735221dd8becc53e0f5ea28a67792f87 100644
--- a/app/views/licenses/_form.html.erb
+++ b/app/views/licenses/_form.html.erb
@@ -20,9 +20,9 @@
     <%= f.check_box :default, class: 'form-checkbox-element' %>
     <%= f.label :default, 'Default license?' %>
     <span class="form-caption">
-      Set this license as the site-default license. A site can only have one default license.
+      Set this license as the community-default license. A community can only have one default license.
     </span>
   </div>
 
   <%= f.submit 'Save', class: 'button is-filled' %>
-<% end %>
\ No newline at end of file
+<% end %>
diff --git a/app/views/licenses/_license.html.erb b/app/views/licenses/_license.html.erb
index 616015f802ccd4843bfd120ac64960ae674e1cae..57544538fc7326d1d5e2176e71c0e5c543d0699e 100644
--- a/app/views/licenses/_license.html.erb
+++ b/app/views/licenses/_license.html.erb
@@ -15,7 +15,7 @@
     <p>
       <%= link_to 'Edit', edit_license_path(license), class: 'button is-outlined' %>
       <%= link_to license.enabled? ? 'Disable' : 'Enable', toggle_license_path(license), class: 'button is-outlined',
-                  method: :post %>
+                  method: :post, role: 'button' %>
     </p>
   </div>
 </div>
\ No newline at end of file
diff --git a/app/views/micro_auth/apps/index.html.erb b/app/views/micro_auth/apps/index.html.erb
index 8f9984adcd50dd463dcec96180827af4c6f66736..5e19d56f3ac09820827aaa20175ad764363f0060 100644
--- a/app/views/micro_auth/apps/index.html.erb
+++ b/app/views/micro_auth/apps/index.html.erb
@@ -3,7 +3,7 @@
 <h1>Your OAuth Apps</h1>
 
 <div class="flex-row jc-sb">
-  <%= link_to new_oauth_app_path, class: 'button is-filled' do %>
+  <%= link_to new_oauth_app_path, class: 'button is-filled', 'aria-label': 'Create new OAuth App' do %>
     <i class="fas fa-plus-circle"></i> Create
   <% end %>
 
@@ -11,9 +11,9 @@
     <div class="button-list is-gutterless">
       <% classes = 'button is-outlined is-muted' %>
       <%= link_to 'yours', oauth_apps_path(request.query_parameters.except(:admin)),
-                  class: "#{classes} #{params[:admin].nil? ? 'is-active' : ''}" %>
+                  class: "#{classes} #{params[:admin].nil? ? 'is-active' : ''}", 'aria-label': 'View your OAuth Apps' %>
       <%= link_to 'admin', oauth_apps_path(request.query_parameters.merge(admin: true)),
-                  class: "#{classes} #{params[:admin].present? ? 'is-active' : ''}" %>
+                  class: "#{classes} #{params[:admin].present? ? 'is-active' : ''}", 'aria-label': 'View Admin OAuth Apps' %>
     </div>
   <% end %>
 </div>
@@ -29,7 +29,9 @@
       <%= text_field_tag :search, params[:search], class: 'form-element' %>
     </div>
     <div class="actions has-padding-bottom-1">
-      <%= submit_tag 'Search', class: 'button' %>
+     <%= button_tag type: :submit, class: 'button is-medium is-filled is-outlined', name: nil do %>
+        <i class="fa fa-search"></i>
+      <% end %>
     </div>
   </div>
 <% end %>
diff --git a/app/views/micro_auth/authentication/initiate.html.erb b/app/views/micro_auth/authentication/initiate.html.erb
index ff4f9222c643b54bbaebee42bc9d7a763b54002e..bc1e9bebb0d83a7d76f53f1740328016a0031531 100644
--- a/app/views/micro_auth/authentication/initiate.html.erb
+++ b/app/views/micro_auth/authentication/initiate.html.erb
@@ -24,5 +24,5 @@
 
 <p>You can choose to allow or deny this request.</p>
 
-<%= link_to 'Allow', approve_oauth_path(request.query_parameters), method: :post, class: 'button is-green is-filled' %>
-<%= link_to 'Deny', reject_oauth_path, class: 'button is-danger is-outlined' %>
+<%= link_to 'Allow', approve_oauth_path(request.query_parameters), method: :post, class: 'button is-green is-filled', role: 'button' %>
+<%= link_to 'Deny', reject_oauth_path, class: 'button is-danger is-outlined', role: 'button' %>
diff --git a/app/views/mod_warning/current.html.erb b/app/views/mod_warning/current.html.erb
index c98f4bf9384c76d98b504413b118d67a1d51d0c5..f5f7eb3e92f6ef5328a7d24111967a5a308f5350 100644
--- a/app/views/mod_warning/current.html.erb
+++ b/app/views/mod_warning/current.html.erb
@@ -10,7 +10,11 @@
             <%= raw(sanitize(@warning.body_as_html, scrubber: scrubber)) %>
             <p>Your account has been <strong>temporarily suspended</strong> (ends <span title="<%= current_user.community_user.suspension_end.iso8601 %>">in <%= time_ago_in_words(current_user.community_user.suspension_end) %></span>). We look forward to your return and continued contributions to the site after this period. In the event of continued rule violations after this period, your account may be suspended for longer periods. If you have any questions about this suspension or would like to dispute it, <a href="mailto:<%= SiteSetting['AdministratorContactEmail'] %>">contact us</a>.</p>
 
-            <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-danger is-outlined' %>
+            <% if devise_sign_in_enabled? %>
+                <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-danger is-outlined', role: 'button' %>
+            <% else %>
+                <%= link_to 'Sign Out', destroy_saml_user_session_path, method: :delete, class: 'button is-danger is-outlined', role: 'button' %>
+            <% end %>
         </div>
     <% else %>
         <div class="notice is-danger">
@@ -27,7 +31,11 @@
                 </label>
 
                 <%= submit_tag 'Continue', class: 'button is-filled' %>
-                <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-danger is-outlined' %>
+                <% if devise_sign_in_enabled? %>
+                    <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-danger is-outlined', role: 'button' %>
+                <% else %>
+                    <%= link_to 'Sign Out', destroy_saml_user_session_path, method: :delete, class: 'button is-danger is-outlined', role: 'button' %>
+                <% end %>
             <% end %>
         </div>
     <% end %>
@@ -46,7 +54,11 @@
             </label>
 
             <%= submit_tag 'Continue', class: 'button is-filled' %>
-            <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-danger is-outlined' %>
+            <% if devise_sign_in_enabled? %>
+                <%= link_to 'Sign Out', destroy_user_session_path, method: :delete, class: 'button is-danger is-outlined', role: 'button' %>
+            <% else %>
+                <%= link_to 'Sign Out', destroy_saml_user_session_path, method: :delete, class: 'button is-danger is-outlined', role: 'button' %>
+            <% end %>
         <% end %>
     </div>
 <% end %>
\ No newline at end of file
diff --git a/app/views/notifications/index.html.erb b/app/views/notifications/index.html.erb
index 0672c4558c74b5a65afaf9846b60f0fe28a01810..33c2be2fbeef1853a3268278c139d0cb200f010c 100644
--- a/app/views/notifications/index.html.erb
+++ b/app/views/notifications/index.html.erb
@@ -1,3 +1,5 @@
+<%= render 'users/tabs', user: current_user %>
+
 <h1>Your Inbox</h1>
 <p>You'll find all your inbox messages here, as far back as your account goes.</p>
 
diff --git a/app/views/pinned_links/_form.html.erb b/app/views/pinned_links/_form.html.erb
index a69f010bbaf5f43c325cbec03d10074089acafb4..80a3191e6d31ac42c89482e8d897b557d21af403 100644
--- a/app/views/pinned_links/_form.html.erb
+++ b/app/views/pinned_links/_form.html.erb
@@ -48,5 +48,5 @@
   </div>
 
   <%= f.submit "Update", class: "button is-filled" %>
-  <%= link_to "Cancel", pinned_links_path(global: params[:global]), class: "button" %>
+  <%= link_to "Cancel", pinned_links_path(global: params[:global]), class: "button", role: 'button' %>
 <% end %>
\ No newline at end of file
diff --git a/app/views/post_history/post.html.erb b/app/views/post_history/post.html.erb
index 5e2b284d614e2a660617840da9db31091a1d0e70..c31b586ea6fc94e7efbfbd49a8f305e470dfd99c 100644
--- a/app/views/post_history/post.html.erb
+++ b/app/views/post_history/post.html.erb
@@ -1,11 +1,15 @@
+<% @show_content = !!defined?(show_content) ? show_content : true %>
+
 <h1>Post History</h1>
 
+<% if @show_content %>
 <div class="item-list">
   <%= render 'posts/type_agnostic', post: @post, show_category_tag: true, show_type_tag: true, last_activity: false %>
 </div>
+<% end %>
 
 <% @history.each.with_index do |event, index| %>
-  <details class="history-event">
+  <details class="history-event" id="<%= @history.size - index %>">
     <summary>
       <strong>#<%= @history.size - index %>: <%= event.post_history_type.name.humanize %></strong>
       <span class="has-color-tertiary-600 history-meta">
@@ -24,15 +28,45 @@
           <br/><em><%= event.comment %></em>
         <% end %>
       </span>
+      <%= render 'shared/copy_link', classes: ["button", "is-small", "is-muted", "is-outlined"],
+                                     desc: "Copy a permanent link to revision #{@history.size - index}",
+                                     id: "#{@post.id}-#{@history.size - index}", 
+                                     md: post_history_share_link_md(@post, @history, index), 
+                                     raw: post_history_share_link(@post, @history, index) 
+                                     %>
     </summary>
-    <% if (event.before_title.present? || event.after_title.present?) && event.before_title != event.after_title %>
-      <%= render 'diff', before: event.before_title, after: event.after_title, post: @post %>
-    <% end %>
-    <% if (event.before_state.present? || event.after_state.present?) && event.before_state != event.after_state %>
-      <%= render 'diff', before: event.before_state, after: event.after_state, post: @post %>
-    <% end %>
-    <% if (event.before_tags.present? || event.after_tags.present?) && event.before_tags != event.after_tags %>
-      <%= render 'diff', before: event.before_tags, after: event.after_tags, post: @post %>
+    <% if event.allowed_to_see_details?(current_user) %>
+      <% if event.hidden? %>
+        <div class="notice is-warning is-filled">
+          <p><i class="fas fa-info-circle"></i> <strong>Hidden revision</strong></p>
+          <p>
+            This revision is hidden because of a redaction. You have access to the details because
+            <% if current_user == event.user %>
+              you performed the redaction,
+            <% elsif current_user == @post.user %>
+              you are the post author,
+            <% elsif current_user&.is_admin %>
+              you are an administrator,
+            <% end %>
+            but you should not share this revision with others.
+          </p>
+        </div>
+      <% end %>
+      <% if (event.before_title.present? || event.after_title.present?) && event.before_title != event.after_title %>
+        <%= render 'diff', before: event.before_title, after: event.after_title, post: @post %>
+      <% end %>
+      <% if (event.before_state.present? || event.after_state.present?) && event.before_state != event.after_state %>
+        <%= render 'diff', before: event.before_state, after: event.after_state, post: @post %>
+      <% end %>
+      <% if (event.before_tags.present? || event.after_tags.present?) && event.before_tags != event.after_tags %>
+        <%= render 'diff', before: event.before_tags, after: event.after_tags, post: @post %>
+      <% end %>
+    <% elsif [event.before_title, event.after_title,
+              event.before_state, event.after_state,
+              event.before_tags, event.after_tags].any?(&:present?) %>
+      <p>
+        <em>The detailed changes of this event are hidden because of a redaction.</em>
+      </p>
     <% end %>
   </details>
 <% end %>
diff --git a/app/views/posts/_article_list.html.erb b/app/views/posts/_article_list.html.erb
index d8deeaf561080a87ff044f6133d2283310110cdf..fb48d014d17a1148fadc47b5f7a702b2494063eb 100644
--- a/app/views/posts/_article_list.html.erb
+++ b/app/views/posts/_article_list.html.erb
@@ -3,7 +3,7 @@
 <% @show_category_tag = !!defined?(show_category_tag) ? show_category_tag : false %>
 <% @last_activity = !!defined?(last_activity) ? last_activity : true %>
 <div class="item-list--item <%= post.deleted ? 'deleted-content' : '' %>" data-ckb-list-item data-ckb-item-type="link">
-  <div class="item-list--number-value">
+  <div class="item-list--number-value" title="Score: <%= post.score %>">
     <div class="meter is-question-score">
       <div class="meter--bar is-<%= (post.score * 100).to_i %>%"><%= (post.score * 100).to_i %>%</div>
     </div>
@@ -17,7 +17,7 @@
   <div class="item-list--text-value is-primary">
     <div class="post-list--title">
       <% if @show_category_tag %>
-        <span class="badge is-tag is-filled"><%= defined?(@category) ? @category.name : post.category.name %></span>
+        <span class="badge is-tag is-filled"><%= post.category.name %></span>
       <% end %>
       <%= link_to post.title, generic_share_link(post), 'data-ckb-item-link' => '' %>
     </div>
diff --git a/app/views/posts/_edit_comment.html.erb b/app/views/posts/_edit_comment.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..80a952ccd6a17e1f2d98c702d131aa2f06017378
--- /dev/null
+++ b/app/views/posts/_edit_comment.html.erb
@@ -0,0 +1,39 @@
+<%#
+  Edit comment reusable partial.
+  Variables:
+    comment       : [String, Nil] optional, initial value of the field (default '')
+    cur_length    : [Integer, Nil] optional, current character length (default 0)
+    min_length    : [Integer, Nil] optional, the minimum allowed length (default 0)
+    max_length    : [Integer, Nil] optional, the maximum allowed length (default 255)
+%>
+
+<%
+  # Defaults
+  comment = (defined?(comment) ? comment : nil) || ''
+  cur_length = (defined?(cur_length) ? cur_length : nil) || 0
+  min_length = (defined?(min_length) ? min_length : nil) || 0
+  max_length = (defined?(max_length) ? max_length : nil) || 255
+%>
+
+<div class="form-group">
+  <%= label_tag :edit_comment, t('posts.edit_comment_label'), class: 'form-element' %>
+  <%= text_field_tag :edit_comment,
+                     nil,
+                     class: 'form-element',
+                     value: comment,
+                     data: { character_count: ".js-character-count-edit-comment" } %>
+  <div class="clearfix">
+    <%= render 'shared/char_count', type: 'edit-comment', cur: cur_length, min: min_length, max: max_length %>
+  </div>
+</div>
+<div class="form-group">
+  <div class="checkbox-setting">
+    <div class="checkbox-setting--desc">
+      <%= label_tag :redact, t('posts.redact_label'), class: 'form-element' %>
+      <span class="form-caption"><%= t('posts.redact_explanation') %></span>
+    </div>
+    <div class="checkbox-setting--value">
+      <%= check_box_tag :redact, true, false, class: 'form-checkbox-element' %>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/app/views/posts/_expanded.html.erb b/app/views/posts/_expanded.html.erb
index 82733701ff6fe23351d0afc933a5368438a71292..5f28e9d234df08f43cd2258f40d05e917bb3d647 100644
--- a/app/views/posts/_expanded.html.erb
+++ b/app/views/posts/_expanded.html.erb
@@ -18,7 +18,7 @@
       <% title = post.title +
                  (post.closed && !post.duplicate_post ? " [closed]" : "") +
                  (post.duplicate_post ? " [duplicate]" : "") %>
-      <span class="post--title-text"><%= title %></span>
+      <a href="<%= generic_share_link(post) %>" class="post--title-text"><%= title %></a>
       <% if category.display_post_types.reject { |e| e.to_s.empty? }.size > 1 %>
         <%= post_type_badge(post_type) %>
       <% end %>
@@ -36,33 +36,35 @@
   <% end %>
 
   <div class="post--container <%= 'deleted-content' if post.deleted? %> grid is-nowrap">
-    <% if post_type.has_votes %>
+    <% if post_type.has_votes || (user_signed_in? && post.post_type.has_reactions && post.post_type.reactions.any?) %>
       <div>
-        <div class="post--votes has-text-align-center" title="Score : <%= post.score %>">
-          <% existing_vote = my_vote(post) %>
-          <% unless post.locked? %>
-            <button class="vote-button button is-icon-only-button <%= (existing_vote&.vote_type == 1) ? 'is-active' : '' %>"
-                    data-vote-type="1" data-vote-id="<%= existing_vote&.id %>" id="post-<%= post.id %>-up" aria-label="Upvote">
-                <svg width="2em" height="1.33em" viewbox="0 0 100 50">
-                  <path d="M50,0 L100,50 L0,50 Z" fill="currentColor" />
-                </svg>
-            </button>
-          <% end %>
-          <div class="score has-font-size-subheading js-upvote-count">
-            +<%= post.upvote_count %>
-          </div>
-          <div class="score has-font-size-subheading js-downvote-count">
-            &minus;<%= post.downvote_count %>
+        <% if post_type.has_votes %>
+          <div class="post--votes has-text-align-center" title="Score: <%= post.score %>">
+            <% existing_vote = my_vote(post) %>
+            <% unless post.locked? %>
+              <button class="vote-button button is-icon-only-button <%= (existing_vote&.vote_type == 1) ? 'is-active' : '' %>"
+                      data-vote-type="1" data-vote-id="<%= existing_vote&.id %>" id="post-<%= post.id %>-up" aria-label="Upvote">
+                  <svg width="2em" height="1.33em" viewbox="0 0 100 50">
+                    <path d="M50,0 L100,50 L0,50 Z" fill="currentColor" />
+                  </svg>
+              </button>
+            <% end %>
+            <div class="score has-font-size-subheading js-upvote-count">
+              +<%= post.upvote_count %>
+            </div>
+            <div class="score has-font-size-subheading js-downvote-count">
+              &minus;<%= post.downvote_count %>
+            </div>
+            <% unless post.locked? %>
+              <button class="vote-button button is-icon-only-button <%= (existing_vote&.vote_type == -1) ? 'is-active' : '' %>"
+                      data-vote-type="-1" data-vote-id="<%= existing_vote&.id %>" id="post-<%= post.id %>-up" aria-label="Downvote">
+                  <svg width="2em" height="1.33em" viewbox="0 0 100 50">
+                    <path d="M0,0 L100,0 L50,50 Z" fill="currentColor" />
+                  </svg>
+              </button>
+            <% end %>
           </div>
-          <% unless post.locked? %>
-            <button class="vote-button button is-icon-only-button <%= (existing_vote&.vote_type == -1) ? 'is-active' : '' %>"
-                    data-vote-type="-1" data-vote-id="<%= existing_vote&.id %>" id="post-<%= post.id %>-up" aria-label="Downvote">
-                <svg width="2em" height="1.33em" viewbox="0 0 100 50">
-                  <path d="M0,0 L100,0 L50,50 Z" fill="currentColor" />
-                </svg>
-            </button>
-          <% end %>
-        </div>
+        <% end %>
         <% if user_signed_in? && post.post_type.has_reactions && post.post_type.reactions.any? %>
           <div class="post--react has-text-align-center">
             <% unless post.locked? %>
@@ -83,6 +85,15 @@
       <%= render('reactions/list', post: post) if post.reactions %>
 
       <% if post_type.is_closeable && post.closed %>
+        <% if current_user == post.user %>
+          <div class="notice is-info has-margin-2">
+            <p>
+              <i class="fas fa-info-circle"></i>
+              <%= t 'posts.post_closed_guidance' %>
+            </p>
+          </div>
+        <% end %>
+
         <div class="notice has-margin-2">
           <p class="has-font-weight-normal">
             <strong>Closed</strong>
@@ -123,7 +134,7 @@
             </p>
           <% end %>
 
-          <p>Users with the Curate privilege may vote to undelete this post if it has been deleted incorrectly.</p>
+          <p>Users with the Curate privilege may vote to restore this post if it has been deleted incorrectly.</p>
         </div>
       <% end %>
 
@@ -134,22 +145,42 @@
             on <%= post.locked_at.strftime('%b %e, %Y at %H:%M') %>.
           </p>
         </div>
-      <% end %>
+	<% end %>
 
+	<% if post.spam_flag_pending? && user_signed_in? %>
+	<div class="notice has-margin-2">
+	  <% if post.user == current_user %>
+	  <p>Your post has been flagged by members of our community. Please review our <a href="/help/spam">guidelines for promotional content</a>.</p>
+	  <% else %>
+	  <p><strong>Possible spam:</strong> this post has pending flags for spam.  Be careful when following links.</p>
+	  <% end %>
+	</div>
+	<% end %>
       <% if post_type.is_public_editable && post.pending_suggested_edit? %>
         <% if check_your_post_privilege(post, 'edit_posts') %>
           <div class="notice h-p-2">
-            <p class="h-m-0"><i class="fa fa-pencil-alt h-m-l-2 h-c-red-600"></i> There is a <strong>pending suggested edit</strong> on this post. <a href="<%= suggested_edit_url(post.pending_suggested_edit.id) %>" class="button is-outlined is-muted is-small">Review changes</a></p>
+            <p class="h-m-0">
+              <i class="fa fa-pencil-alt h-m-l-2 h-c-red-600"></i>
+              There is a <strong>pending suggested edit</strong> on this post.
+              <a href="<%= suggested_edit_url(post.pending_suggested_edit.id) %>" class="button is-outlined is-muted is-small" role="button" aria-label="Review changes of suggested edit">Review changes</a></p>
           </div>
-        <% elsif post.pending_suggested_edit.user.id == current_user&.id %>
+        <% elsif post.pending_suggested_edit.user&.id == current_user&.id %>
           <div class="notice h-p-2">
-            <p class="h-m-0"><i class="fa fa-pencil-alt h-m-l-2 h-c-tertiary-600"></i> Your suggested edit on this post is <strong><%= link_to 'pending review', suggested_edit_url(post.pending_suggested_edit.id) %></strong>.</p>
+            <p class="h-m-0">
+              <i class="fa fa-pencil-alt h-m-l-2 h-c-tertiary-600"></i>
+              Your suggested edit on this post is <strong>
+              <%= link_to 'pending review', suggested_edit_url(post.pending_suggested_edit.id) %></strong>.</p>
           </div>
         <% end %>
-      <% end %>
+	<% end %>
 
-      <div class="post--body">
-        <%= raw(sanitize(post.body, scrubber: scrubber)) %>
+	<div class="post--body">
+	  <% effective_post = raw(sanitize(post.body, scrubber: scrubber)) %>
+	  <% if post.spam_flag_pending? && !user_signed_in? %>
+	    <%= sanitize(effective_post, attributes: %w()) %>
+	  <% else %>
+            <%= effective_post %>
+	  <% end %>
 
         <% been_edited = post.last_edited_by_id != nil %>
         <% if been_edited then last_edited_by_self = post.user_id == post.last_edited_by_id end %>
@@ -200,11 +231,12 @@
 
         <div class="post--actions">
           <div class="tools">
-            <%= link_to generic_share_link(post), class: 'tools--item js-permalink' do %>
-              <i class="fa fa-link"></i>
-              <span class="js-text">Permalink</span>
-            <% end %>
-            <%= link_to post_history_path(post), class: 'tools--item' do %>
+            <%= render "shared/copy_link", classes: ["tools--item"],
+                                           desc: "Copy a permanent link to this post",
+                                           id: post.id, 
+                                           md: generic_share_link_md(post), 
+                                           raw: generic_share_link(post) %>
+            <%= link_to post_history_path(post), class: 'tools--item', 'aria-label': 'View history of this post' do %>
               <i class="fa fa-history"></i>
               History
             <% end %>
@@ -216,7 +248,7 @@
                     Review suggested edit
                   <% end %>
                 <% else %>
-                  <%= link_to edit_post_path(post), class: 'tools--item' do %>
+                  <%= link_to edit_post_path(post), class: 'tools--item', 'aria-label': 'Edit this post' do %>
                     <i class="fa fa-pencil-alt"></i>
                     Edit
                   <% end %>
@@ -224,8 +256,13 @@
               <% elsif !current_user.nil? %>
                 <% if post.pending_suggested_edit? %>
                   <span class="tools--item">suggested edit pending...</span>
+		<% elsif post_type.is_freely_editable %>
+                  <%= link_to edit_post_path(post), class: 'tools--item', 'aria-label': 'Edit this post' do %>
+                    <i class="fa fa-pencil-alt"></i>
+                    Edit
+		  <% end %>
                 <% else %>
-                  <%= link_to edit_post_path(post), class: 'tools--item' do %>
+                  <%= link_to edit_post_path(post), class: 'tools--item', 'aria-label': 'Suggest edit to this post' do %>
                     <i class="fa fa-pencil-alt"></i>
                     Suggest edit
                   <% end %>
@@ -233,7 +270,7 @@
               <% end %>
             <% end %>
             <% if user_signed_in? %>
-              <a href="#" class="flag-dialog-link tools--item">
+              <a href="#" class="flag-dialog-link tools--item" role="button" aria-label="Flag this post">
                 <i class="fa fa-flag"></i>
                 Flag
               </a>
@@ -241,12 +278,12 @@
             <% unless post.locked? || !post_type.is_closeable %>
               <% if check_your_privilege('flag_close') || (post.user_id === current_user&.id)%>
                 <% if !post.closed %>
-                  <a href="#" class="close-dialog-link tools--item">
+                  <a href="#" class="close-dialog-link tools--item" role="button" aria-label="Close this post">
                     <i class="fa fa-lock"></i>
                     Close
                   </a>
                 <% elsif post.closed %>
-                  <%= link_to reopen_post_path(post), method: :post, class: 'reopen-question tools--item' do %>
+                  <%= link_to reopen_post_path(post), method: :post, class: 'reopen-question tools--item', role: 'button', 'aria-label': 'Reopen this post' do %>
                     <i class="fa fa-unlock"></i>
                     Reopen
                   <% end %>
@@ -257,13 +294,15 @@
               <% unless post.locked? %>
                 <% if !post.deleted %>
                   <%= link_to delete_post_path(post), method: :post,
-                              data: { confirm: 'Are you sure you want to delete this post?' }, class: "tools--item is-danger" do %>
+                              data: { confirm: 'Are you sure you want to delete this post?' }, class: "tools--item is-danger",
+                              role: 'button', 'aria-label': 'Delete this post' do %>
                     <i class="fa fa-trash"></i>
                     Delete
                   <% end %>
                 <% else %>
                   <%= link_to restore_post_path(post), method: :post,
-                              data: { confirm: 'Restore this post, making it visible to regular users?' }, class: "tools--item is-danger is-filled" do %>
+                              data: { confirm: 'Restore this post, making it visible to regular users?' }, class: "tools--item is-danger is-filled",
+                              role: 'button', 'aria-label': 'Restore this post' do %>
                     <i class="fa fa-undo"></i>
                     Restore
                   <% end %>
@@ -271,7 +310,7 @@
               <% end %>
             <% end %>
             <% if check_your_privilege('flag_curate') %>
-              <a href="javascript:void(0);" data-modal="#mod-tools-<%= post.id %>" class="tools--item">
+              <a href="javascript:void(0);" data-modal="#mod-tools-<%= post.id %>" class="tools--item" role="button" aria-label="Open Moderator Tools">
                 <i class="fa fa-wrench"></i>
                 Tools
               </a>
@@ -288,7 +327,7 @@
                                    end %>
 
               <% if flags_count > 0 %>
-                <a href="#" class="show-all-flags-dialog-link tools--item">
+                <a href="#" class="show-all-flags-dialog-link tools--item" role="button">
                   <i class="fa fa-exclamation-triangle"></i>
                   Show <%= pluralize(flags_count - own_flags_count, 'flag') %>
                 </a>
@@ -299,9 +338,26 @@
 
         <div class="post--action-dialog js-flag-box">
           <div class="widget">
-            <div class="widget--header">Why does this post require moderator attention?</div>
+            <div class="widget--header">Why does this post require attention from curators or moderators?</div>
+            <% if current_user&.has_active_flags?(post) %>
+              <div class="widget--body">
+                <div class="notice is-warning">
+                  You already have active flags on this post:
+                  <ul>
+                    <% current_user.active_flags(post).each do |flag| %>
+                      <li>
+                        <strong><%= flag.post_flag_type&.name || 'other' %></strong>
+                        <% unless flag.reason.nil? %>
+                          <span class="has-color-tertiary-600"><%= flag.reason %></span>
+                        <% end %>
+                      </li>
+                    <% end %>
+                  </ul>
+                </div>
+              </div>
+            <% end %>
             <% unless post.locked? %>
-              <% PostFlagType.where(post_type_id: post.post_type.id).or(PostFlagType.where(post_type_id: nil)).each do |reason| %>
+	            <% PostFlagType.where(post_type_id: [post.post_type.id, nil]).where(active: 1).each do |reason| %>
                 <div class="widget--body">
                   <div class="grid">
                     <div class="grid--cell">
@@ -330,22 +386,38 @@
                 </div>
               <% end %>
             <% end %>
-              <div class="widget--body">
-                <div class="grid">
-                  <div class="grid--cell">
-                    <input class="form-radio-element" type="radio" name="flag-reason" value="-1" id="flag-reason-other_<%= post.id  %>"
-                           data-requires-details="true" />
-                  </div>
-                  <div class="grid--cell is-flexible">
-                    <label class="form-element has-margin-0" for="flag-reason-other_<%= post.id  %>">
-                      other reason
-                      <span class="form-caption">
-                        Please elaborate in the details field below.
-                      </span>
-                    </label>
-                  </div>
+            <div class="widget--body">
+              <div class="grid">
+                <div class="grid--cell">
+                  <input class="form-radio-element" type="radio" name="flag-reason" value="-1" id="flag-reason-curator_<%= post.id  %>"
+                         data-requires-details="true" />
+                </div>
+                <div class="grid--cell is-flexible">
+                  <label class="form-element has-margin-0" for="flag-reason-curator_<%= post.id  %>">
+                    change post status <br/>
+                    <span class="form-caption">
+		      This post should be reopened/closed, locked/unlocked, or deleted/undeleted. Please elaborate in the details field below.
+                    </span>
+                  </label>
                 </div>
               </div>
+            </div>
+            <div class="widget--body">
+              <div class="grid">
+                <div class="grid--cell">
+                  <input class="form-radio-element" type="radio" name="flag-reason" value="-1" id="flag-reason-other_<%= post.id  %>"
+                         data-requires-details="true" />
+                </div>
+                <div class="grid--cell is-flexible">
+                  <label class="form-element has-margin-0" for="flag-reason-other_<%= post.id  %>">
+                    moderator attention <br/>
+                    <span class="form-caption">
+                      Please elaborate in the details field below. This flag will be seen only by moderators and administrators, not curators.
+                    </span>
+                  </label>
+                </div>
+              </div>
+            </div>
             <div class="widget--body">
               <label class="form-element" for="flag-post-<%= post.id %>">
                 Details?
@@ -355,7 +427,7 @@
             </div>
             <div class="widget--footer">
               <button class="flag-link button is-filled is-muted" data-post-type="<%= is_question ? 'Question' : 'Answer' %>" data-post-id="<%= post.id %>">
-                Flag for moderator attention
+                Flag for attention
               </button>
             </div>
           </div>
@@ -424,7 +496,7 @@
           </div>
         <% end %>
 
-        <% if is_top_level && post.children.length >= SiteSetting["TableOfContentsThreshold"] && SiteSetting["TableOfContentsThreshold"] != -1 %>
+        <% if is_top_level && post.children.undeleted.length >= SiteSetting["TableOfContentsThreshold"] && SiteSetting["TableOfContentsThreshold"] != -1 %>
           <div class="toc has-margin-left-4" id="toc-toggle">
             <button class="toc--header" data-toggle="#toc-toggle" data-toggle-property="class" data-toggle-value="is-active">Table of Contents</button>
             <% sorted_answers = post.children.sort_by { |answer| answer.score }.reverse! %>
@@ -452,30 +524,36 @@
           <% public_count = comment_threads.count %>
           <% available_count = current_user&.has_post_privilege?('flag_curate', post) ?
                                  post.comment_threads.count : post.comment_threads.publicly_available.count %>
+          <div class="post--comments-header">
           <h4 class="has-margin-0">
             <%= pluralize(public_count, 'comment thread') %>
           </h4>
           <% if user_signed_in? %>
-            <p class="has-font-size-caption">
-              <% if CommentThread.post_followed?(post, current_user) %>
-                <%= link_to follow_post_comments_path(post_id: post.id), method: :post,
-                            title: 'Don\'t follow new comment threads on this post' do %>
-                  <i class="fas fa-fw fa-minus"></i> unfollow new
-                <% end %>
-              <% else %>
-                <%= link_to follow_post_comments_path(post_id: post.id), method: :post,
-                            title: 'Follow all new comment threads on this post' do %>
-                  <i class="fas fa-fw fa-plus"></i> follow new
-                <% end %>
+            <% if CommentThread.post_followed?(post, current_user) %>
+              <%= link_to follow_post_comments_path(post_id: post.id), method: :post,
+                          class: "button is-muted is-outlined is-small",
+                          title: 'Don\'t follow new comment threads on this post',
+                          role: 'button',
+                          'aria-label': 'Unfollow new comment threads on this post' do %>
+                  <i class="fas fa-fw fa-bell-slash"></i> Unfollow new
               <% end %>
-            </p>
+            <% else %>
+              <%= link_to follow_post_comments_path(post_id: post.id), method: :post,
+                          class: "button is-muted is-outlined is-small",
+                          title: 'Follow all new comment threads on this post',
+                          role: 'button',
+                          'aria-label': 'Follow all new comment threads on this post' do %>
+                <i class="fas fa-fw fa-bell"></i> Follow new
+              <% end %>
+            <% end %>
           <% end %>
-          <div class="post--comments-container">
+          </div>
+          <div class="post--comments-container" role="list">
             <%= render 'comments/post', comment_threads: comment_threads.first(5) %>
           </div>
           <div class="post--comments-links has-margin-top-1">
             <% if available_count > [comment_threads.count, 5].min %>
-              <a href="#" class="js-more-comments button is-muted is-small" data-post-id="<%= post.id %>">
+              <a href="#" class="js-more-comments button is-muted is-small" data-post-id="<%= post.id %>" role="button" aria-label="Show more comment threads">
                 Show more
               </a>
             <% end %>
@@ -492,8 +570,10 @@
                 <% elsif post.comments_disabled %>
                   <p class="has-color-red-500"><i class="fa fa-lock"></i> Comments have been disabled on this post, but as a moderator you are exempt from that block.</p>
                 <% end %>
-                <a class="button is-muted is-small js-new-thread-link" data-post="<%= post.id %>">Start new comment thread</a>
               <% end %>
+                <a class="button is-outlined is-small js-new-thread-link" data-post="<%= post.id %>" role="button">
+                  <i class="fas fa-fw fa-plus"></i> Start new comment thread
+                </a>
                 <%= render 'comments/new_thread_modal', post: post %>
             <% end %>
           </div>
diff --git a/app/views/posts/_form.html.erb b/app/views/posts/_form.html.erb
index 97c7a2d9d029c41e2f82516c3a42f40e848e4492..6002284bd71e3d3dd7de04fca72a3497db1b3617 100644
--- a/app/views/posts/_form.html.erb
+++ b/app/views/posts/_form.html.erb
@@ -54,21 +54,46 @@
     </p>
   <% end %>
 
-  <%= render 'shared/body_field', f: f, field_name: :body_markdown, field_label: t('posts.body_label'), post: post %>
+  <%= render 'shared/body_field', f: f, field_name: :body_markdown, field_label: t('posts.body_label'), post: post,
+            cur_length: post.body_markdown&.length, min_length: min_body_length(category), max_length: max_body_length(category) %>
 
+  <div class="rejected-elements notice is-warning hide">
+    <h3>Unsupported HTML detected</h3>
+    <p>The following HTML tags and attributes are unsupported and will be removed from the final post:</p>
+    <ul>
+    </ul>
+    <p>For a list of allowed HTML, see <a href="/help/advanced-formatting">this help article</a>.
+    If you meant to display the tags as code in the post, please enclose them in a code block.</p>
+  </div>
   <div class="post-preview"></div>
 
   <% unless post_type.has_parent? %>
+    <% value = {} %>
+    <% key = "saved_post.#{current_user&.id}.#{request.path}.title" %>
+    <% saved_at_key = "saved_post_at.#{current_user&.id}.#{request.path}" %>
+    <% saved_at = DateTime.parse(RequestContext.redis.get(saved_at_key) || '') rescue Date.new(2000, 1, 1) %>
+    <%
+      # Find the most recent between post-create, post-update, and draft-saved, and use the value corresponding to that.
+      value = [
+        [post.created_at || Date.new(2000, 1, 1), {}],
+        [post.updated_at || Date.new(2000, 1, 1), {}],
+        [saved_at || Date.new(2001, 1, 1), { value: RequestContext.redis.get(key) }]
+      ].max_by do |x|
+        x[0]
+      end[1]
+    %>
     <div class="form-group">
       <%= f.label :title, t('posts.post_title_label'), class: 'form-element' %>
-      <%= f.text_field :title, class: 'form-element post_title', data: { character_count: ".js-character-count-post-title" } %>
-    </div>
-    <div>
-      <span class="has-float-right has-font-size-caption js-character-count-post-title hide"
-            data-max="255" data-min="15" data-display-at="0.75">
-        <i class="fas fa-ellipsis-h js-character-count__icon"></i>
-        <span class="js-character-count__count">0 / 255</span>
-      </span>
+      <%= f.text_field :title,
+                        **({ class: 'form-element post_title' }).merge(value),
+                        data: { character_count: ".js-character-count-post-title" }
+      %>
+      <div class="clearfix">
+        <%= render 'shared/char_count', type: 'post-title',
+                                        cur: value[:value]&.length || post.title&.length,
+                                        max: max_title_length(category),
+                                        min: min_title_length(category, post_type) %>
+      </div>
     </div>
   <% end %>
 
@@ -87,8 +112,26 @@
           <% end %>
         </span>
       <% end %>
-      <%= f.select :tags_cache, options_for_select(post.tags_cache.map { |t| [t, t] }, selected: post.tags_cache),
-                   { include_blank: true }, multiple: true, class: "form-element js-tag-select",
+      <% tags = post.tags_cache %>
+      <% key = "saved_post.#{current_user&.id}.#{request.path}.tags" %>
+      <% saved_at_key = "saved_post_at.#{current_user&.id}.#{request.path}" %>
+      <% saved_at = DateTime.parse(RequestContext.redis.get(saved_at_key) || '') rescue Date.new(2000, 1, 1) %>
+      <%
+        # Find the most recent between post-create, post-update, and draft-saved, and use the value corresponding to that.
+        tags = [
+          [post.created_at || Date.new(2000, 1, 1), post.tags_cache],
+          [post.updated_at || Date.new(2000, 1, 1), post.tags_cache],
+          [saved_at || Date.new(2001, 1, 1), RequestContext.redis.smembers(key)]
+        ].max_by do |x|
+          x[0]
+        end[1]
+      %>
+      <%= f.select :tags_cache, options_for_select(
+                                  (tags || post.tags_cache).map { |t| [t, t] },
+                                  selected: tags || post.tags_cache),
+                   {},
+                   multiple: true,
+                   class: "form-element js-tag-select",
                    data: { tag_set: category.tag_set_id } %>
     </div>
   <% end %>
@@ -101,7 +144,7 @@
         <% category_default = category.license %>
         <% user_default = user_preference('default_license', community: true) %>
         <% if site_default.present? %>
-          site default: <a href="javascript:void(0)" class="js-license-autofill" data-license-id="<%= site_default.id %>">
+          community default: <a href="javascript:void(0)" class="js-license-autofill" data-license-id="<%= site_default.id %>">
             <%= site_default.name %>
           </a>
         <% end %>
@@ -122,9 +165,23 @@
           </a>
         <% end %>
       </span>
+      <% license = post.license_id %>
+      <% key = "saved_post.#{current_user&.id}.#{request.path}.license" %>
+      <% saved_at_key = "saved_post_at.#{current_user&.id}.#{request.path}" %>
+      <% saved_at = DateTime.parse(RequestContext.redis.get(saved_at_key) || '') rescue Date.new(2000, 1, 1) %>
+      <%
+        # Find the most recent between post-create, post-update, and draft-saved, and use the value corresponding to that.
+        license = [
+          [post.created_at || Date.new(2000, 1, 1), post.license_id],
+          [post.updated_at || Date.new(2000, 1, 1), post.license_id],
+          [saved_at || Date.new(2001, 1, 1), RequestContext.redis.get(key)]
+        ].max_by do |x|
+          x[0]
+        end[1]
+      %>
       <%= f.select :license_id, options_for_select(License.enabled.default_order(category, user_default)
                                                           .map { |l| [l.name, l.id, { 'data-title': l.description }] },
-                                                   selected: post.license_id),
+                                                   selected: license || post.license_id),
                    { include_blank: user_default == 'No default (make me choose)' },
                    class: 'form-element js-license-select' %>
     </div>
@@ -171,11 +228,25 @@
   <% end %>
 
   <% if edit_comment %>
+    <% comment = '' %>
+    <% key = "saved_post.#{current_user&.id}.#{request.path}.comment" %>
+    <% saved_at_key = "saved_post_at.#{current_user&.id}.#{request.path}" %>
+    <% saved_at = DateTime.parse(RequestContext.redis.get(saved_at_key) || '') rescue Date.new(2000, 1, 1) %>
+    <%
+      # Find the most recent between post-create, post-update, and draft-saved, and use the value corresponding to that.
+      comment = [
+        [post.created_at || Date.new(2000, 1, 1), ''],
+        [post.updated_at || Date.new(2000, 1, 1), ''],
+        [saved_at || Date.new(2001, 1, 1), RequestContext.redis.get(key)]
+      ].max_by do |x|
+        x[0]
+      end[1]
+    %>
     <hr/>
-    <div class="form-group">
-      <%= label_tag :edit_comment, t('posts.edit_comment_label'), class: 'form-element' %>
-      <%= text_field_tag :edit_comment, nil, class: 'form-element' %>
-    </div>
+    <%= render 'edit_comment', comment: comment,
+                               cur_length: comment&.length || 0,
+                               max_length: max_edit_comment_length
+    %>
   <% end %>
 
   <div class="actions">
diff --git a/app/views/posts/_list.html.erb b/app/views/posts/_list.html.erb
index 9caf81526bd137ceff01370a6e1ff7fe6363b545..456e75360f367f8953d9d46dc6552bce4da24002 100644
--- a/app/views/posts/_list.html.erb
+++ b/app/views/posts/_list.html.erb
@@ -8,7 +8,7 @@
 
 <div class="item-list--item <%= post.deleted ? 'deleted-content' : '' %>" data-ckb-list-item data-ckb-item-type="link">
   <% if post.post_type.has_votes %>
-    <div class="item-list--number-value">
+    <div class="item-list--number-value" title="Score: <%= post.score %>">
       <div class="meter is-question-score">
         <div class="meter--bar is-<%= (post.score * 100).to_i %>%"><%= (post.score * 100).to_i %>%</div>
       </div>
@@ -28,7 +28,7 @@
     <div class="post-list--title">
       <%= link_to generic_share_link(post), 'data-ckb-item-link' => '' do %>
         <% if @show_category_tag && post.post_type.has_category %>
-          <span class="badge is-tag is-filled"><%= defined?(@category) ? @category.name : post.category.name %></span>
+          <span class="badge is-tag is-filled"><%= post.category.name %></span>
         <% end %>
         <%= post.post_type.is_top_level ? post.title : post.parent.title %>
         <%= post.post_type.is_closeable && post.closed && !post.duplicate_post  ? "[closed]" : "" %>
@@ -37,7 +37,7 @@
     </div>
     <% if (SiteSetting['PostBodyListTruncateLength'] || 0) > 0 %>
       <p class="post-list--content">
-        <%= strip_tags(post.body).truncate(SiteSetting['PostBodyListTruncateLength'] || 200) %>
+        <%= sanitize(strip_tags(post.body).truncate(SiteSetting['PostBodyListTruncateLength'] || 200), scrubber: scrubber) %>
       </p>
     <% end %>
     <p class="has-color-tertiary-600 has-float-right post-list--meta">
diff --git a/app/views/posts/_mdhint.html.erb b/app/views/posts/_mdhint.html.erb
index 5f9536ca79aebbecf58802faf930faea85fc9add..27c264ddd7fa059f73b2613a8b3fc516966d73f9 100644
--- a/app/views/posts/_mdhint.html.erb
+++ b/app/views/posts/_mdhint.html.erb
@@ -1,9 +1,25 @@
-<div class="form-caption widget--footer js-post-field-footer">
-  We <a href="/help/formatting">support Markdown</a> for posts:
-  <strong>**bold**</strong>, <em>*italics*</em>, <code>`code`</code>, two newlines for paragraphs
-  <span class="has-float-right has-font-size-caption js-character-count-post-body hide"
-        data-max="30000" data-min="30" data-display-at="0.75">
-    <i class="fas fa-ellipsis-h js-character-count__icon"></i>
-    <span class="js-character-count__count">0 / 30000</span>
-  </span>
+<%#
+  Widget displaying that we support markdown, linking to the help article. This also applies the min/max length for the
+  post body.
+
+  Variables:
+    cur_length    : [Integer, Nil] optional, current character length (default 0)
+    min_length    : [Integer, Nil] optional, the minimum allowed length (default 30)
+    max_length    : [Integer, Nil] optional, the maximum allowed length (default 30_000)
+%>
+
+<%
+  # Defaults
+  cur_length = (defined?(cur_length) ? cur_length : nil) || 0
+  min_length = (defined?(min_length) ? min_length : nil) || 30
+  max_length = (defined?(max_length) ? max_length : nil) || 30_000
+%>
+
+<div class="mdhint form-caption widget--footer js-post-field-footer">
+  <span>Markdown <a href="/help/formatting">support</a> for posts:
+  <strong>**bold**</strong>, <em>*italics*</em>, <code>`code`</code>, 2 newlines for paragraphs</span>
+  <span class="draft-status transparent has-color-green-600 js-post-draft-status">draft saved</span>
+  <div class="clearfix">
+    <%= render 'shared/char_count', type: 'post-body', cur: cur_length, min: min_length, max: max_length %>
+  </div>
 </div>
diff --git a/app/views/posts/document.html.erb b/app/views/posts/document.html.erb
index a5cb84a167ba3c82b7ae75a9110be610f0b9a887..e08d748ab463574d8e861492bfc8e7cdcdf351a0 100644
--- a/app/views/posts/document.html.erb
+++ b/app/views/posts/document.html.erb
@@ -2,9 +2,15 @@
   &laquo; Back to help center
 <% end %>
 <% unless @post.nil? %>
-  <% if (moderator? && @post.post_type_id == HelpDoc.post_type_id) || (admin? && @post.post_type_id == PolicyDoc.post_type_id) %>
+  <% 
+    is_hc = @post.post_type_id == HelpDoc.post_type_id
+    is_policy = @post.post_type_id == PolicyDoc.post_type_id
+    history_path = is_hc ? help_post_history_path(@post.doc_slug) : policy_post_history_path(@post.doc_slug)
+  %>
+  <% if (moderator? && is_hc) || (admin? && is_policy) %>
     <%= link_to 'edit', edit_post_path(@post), class: "button is-outlined is-muted" %>
   <% end %>
+  <%= link_to 'history', history_path,  class: "button is-outlined is-muted" %>
 <% end %>
 
 <% if @post.help_category == '$Moderator' %>
diff --git a/app/views/posts/help_center.html.erb b/app/views/posts/help_center.html.erb
index 49fa62614adc74229c816fce8008a4f32f85b887..35dce5d6c342952263d7deb8164b0ff079185c64 100644
--- a/app/views/posts/help_center.html.erb
+++ b/app/views/posts/help_center.html.erb
@@ -1,7 +1,7 @@
 <% content_for :title, 'Help Center' %>
 
 <h1>Help Center</h1>
-
+<p>Community moderators can edit, reorganize, and create topics in the Help section. Topics in the Policy section are managed by the network administrators.</p>
 <div class="grid">
   <div class="grid--cell is-6 is-12-sm">
     <h2>Help</h2>
diff --git a/app/views/posts/new.html.erb b/app/views/posts/new.html.erb
index 94baae739b457f7282cd1776dd372ff673cadba2..b81569e90dcdea32820b7c30d8422dabdaecc981 100644
--- a/app/views/posts/new.html.erb
+++ b/app/views/posts/new.html.erb
@@ -34,4 +34,6 @@
   <div class="notice is-danger is-filled">
       You don't have a high enough trust level to post in the <%= @category.name %> category.
   </div>
+  <p>Not where you meant to post? See <%= link_to 'Categories', categories_path %></p>
+
 <% end %>
diff --git a/app/views/posts/show.html.erb b/app/views/posts/show.html.erb
index c25a17c035b2386a55a7f5e3c69879f860bdb56c..5846533fdb642ece56b39df260ce5914b0f2c897 100644
--- a/app/views/posts/show.html.erb
+++ b/app/views/posts/show.html.erb
@@ -1,4 +1,4 @@
-<% content_for :title, @post.title.truncate(50) %>
+<% content_for :title, @post.title.truncate(max_title_length(@post.category)) %>
 <% content_for :description do %>
   <% Rails.cache.fetch "posts/#{@post.id}/description" do %>
     <%= @post.body_plain[0..74].strip %>...
@@ -23,8 +23,15 @@
   <h2><%= pluralize(@post.children.where(deleted: false).count, 'answer') %></h2>
 
   <div class="button-list is-gutterless has-float-right">
-    <a href="<%= query_url(sort: 'score') %>" class="button is-muted is-outlined <%= params[:sort].nil? || params[:sort] == 'score' ? 'is-active' : '' %>">Score</a>
-    <a href="<%= query_url(sort: 'active') %>" class="button is-muted is-outlined <%= params[:sort] == 'active' ? 'is-active' : '' %>">Active</a>
+    <%= link_to 'Score', request.params.merge(sort: 'score'),
+        class: "button is-muted is-outlined #{params[:sort].nil? || params[:sort] == 'score' ? 'is-active' : ''}",
+	title: 'highest score first (not the same as net votes)' %>
+    <%= link_to 'Active', request.params.merge(sort: 'active'),
+        class: "button is-muted is-outlined #{params[:sort] == 'active' ? 'is-active' : ''}",
+	title: 'most recent changes first: new answers, edits, delete/undelete' %>
+    <%= link_to 'Age', request.params.merge(sort: 'age'),
+	class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
+	title: 'newest posts first (ignores other activity)' %>
   </div>
 
   <div class="has-clear-clear"></div>
diff --git a/app/views/questions/_list.html.erb b/app/views/questions/_list.html.erb
index 7e387ee6d6220ddb345b0b0faaed1314ba684922..046ce39bc08a07abfa7ad6a4666d3af8301a1488 100644
--- a/app/views/questions/_list.html.erb
+++ b/app/views/questions/_list.html.erb
@@ -1,10 +1,14 @@
 <div class="button-list is-gutterless has-float-right has-margin-2">
   <%= link_to 'Activity', query_url(root_url, sort: 'activity'),
               class: "button is-muted is-outlined #{(params[:sort].nil?) && !current_page?(questions_lottery_path) || params[:sort] == 'activity' ?
-                                      'is-active' : ''}" %>
-  <%= link_to 'Age', query_url(root_url, sort: 'age'), class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}" %>
-  <%= link_to 'Score', query_url(root_url, sort: 'score'), class: "button is-muted is-outlined #{params[:sort] == 'score' ? 'is-active' : ''}" %>
-  <%= link_to 'Random', questions_lottery_path, class: "button is-muted is-outlined #{current_page?(questions_lottery_path) ? 'is-active' : ''}" %>
+                                      'is-active' : ''}",
+              role: 'button', 'aria-label': 'Sort by activity' %>
+  <%= link_to 'Age', query_url(root_url, sort: 'age'), class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
+              role: 'button', 'aria-label': 'Sort by age' %>
+  <%= link_to 'Score', query_url(root_url, sort: 'score'), class: "button is-muted is-outlined #{params[:sort] == 'score' ? 'is-active' : ''}",
+              role: 'button', 'aria-label': 'Sort by score' %>
+  <%= link_to 'Random', questions_lottery_path, class: "button is-muted is-outlined #{current_page?(questions_lottery_path) ? 'is-active' : ''}",
+              role: 'button', 'aria-label': 'Order randomly' %>
 </div>
 <div class="has-clear-clear">&nbsp;</div>
 
diff --git a/app/views/reactions/_dialog.html.erb b/app/views/reactions/_dialog.html.erb
index d6e75d5330a736a99849e56777f27506ee4e0dc7..64bedbde1a3754ce98d080cd45d1f5f280954e29 100644
--- a/app/views/reactions/_dialog.html.erb
+++ b/app/views/reactions/_dialog.html.erb
@@ -37,6 +37,7 @@
   <% end %>
   <label for="reaction-type-comment-<%= post.id %>">Explain in comment?</label>
   <textarea class="form-element reaction-comment-field is-small"
+            placeholder="Enter comment (minimum 15 characters)"
             id="reaction-type-comment-<%= post.id %>"></textarea>
   <button type="button" class="button is-filled reaction-submit" data-post-id="<%= post.id %>">
     Add reaction
diff --git a/app/views/reactions/_form.html.erb b/app/views/reactions/_form.html.erb
index ee8d82cf05cc14cd77590c3fca69589c1dba5c10..2341ba15e067b71f1aba61b74724039607b3aba7 100644
--- a/app/views/reactions/_form.html.erb
+++ b/app/views/reactions/_form.html.erb
@@ -84,5 +84,5 @@
   </div>
 
   <%= f.submit 'Save', class: 'button is-filled' %>
-  <%= link_to 'Cancel', reactions_path, class: 'button' %>
+  <%= link_to 'Cancel', reactions_path, class: 'button', role: 'button' %>
 <% end %>
\ No newline at end of file
diff --git a/app/views/reactions/index.html.erb b/app/views/reactions/index.html.erb
index b0fd6a4ee5c74148f1e60e2e70561dc6fb09ca95..bef08dc66967fccd8dbce2779a0467ebaceb6f70 100644
--- a/app/views/reactions/index.html.erb
+++ b/app/views/reactions/index.html.erb
@@ -37,7 +37,7 @@
         </td>
         <td>
             <div class="h-d-flex">
-                <%= link_to "edit", edit_reaction_path(rt.id), class: "button is-outlined" %>
+                <%= link_to "edit", edit_reaction_path(rt.id), class: "button is-outlined", 'aria-label': "Edit #{rt.name}" %>
             </div>
         </td>
     </tr>
diff --git a/app/views/search/_filters.html.erb b/app/views/search/_filters.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..a282f1303a88503b73c1ecee6b81c9387a5d451f
--- /dev/null
+++ b/app/views/search/_filters.html.erb
@@ -0,0 +1,78 @@
+<% allow_delete ||= false %>
+<% allow_apply = true if allow_apply.nil? %>
+<% @active_filter ||= {} %>
+
+<div class="form-group">
+  <div class="form-group-horizontal">
+    <div class="form-group">
+      <%= label_tag :predefined_filter, 'Predefined Filters', class: "form-element" %>
+      <%= select_tag :predefined_filter, options_for_select([@active_filter[:name]],
+                                                            selected: @active_filter[:name]),
+          include_blank: true, class: "form-element js-filter-select", id: nil,
+          data: { placeholder: "" } %>
+    </div>
+    <button type="button" class="filter-clear button is-medium is-danger">Clear</button>
+    <% if allow_apply %>
+      <%= submit_tag 'Apply', class: 'button is-medium is-outlined', name: nil %>
+    <% end %>
+    <% if user_signed_in? %>
+      <button type="button" class="filter-save button is-medium is-filled">Save</button>
+    <% end %>
+    <% if allow_delete %>
+      <button type="button" class="filter-delete button is-medium is-filled is-danger has-margin-left-2">Delete</button>
+    <% end %>
+  </div>
+  <% if user_signed_in? && defined? @category %>
+    <%= label_tag :save_as_default, 'Is default for this category?' %>
+    <%= check_box_tag :save_as_default, @category.id, false, { class: 'filter-is-default form-checkbox-element' } %>
+  <% end %>
+  <div class="form-group-horizontal">
+    <div class="form-group">
+      <%= label_tag :min_score, 'Min Score (0-1)', class: "form-element" %>
+      <%= number_field_tag :min_score, @active_filter[:min_score],
+          min: 0, max: 1, step: 0.01, class: 'form-element form--filter',
+          data: { name: 'min_score' } %>
+    </div>
+    <div class="form-group">
+      <%= label_tag :max_score, 'Max Score (0-1)', class: "form-element" %>
+      <%= number_field_tag :max_score, @active_filter[:max_score],
+          min: 0, max: 1, step: 0.01, class: 'form-element form--filter',
+          data: { name: 'max_score' } %>
+    </div>
+    <div class="form-group">
+      <%= label_tag :min_answers, 'Min Answers', class: "form-element" %>
+      <%= number_field_tag :min_answers, @active_filter[:min_answers],
+          min: 0, step: 1, class: 'form-element form--filter',
+          data: { name: 'min_answers' } %>
+    </div>
+    <div class="form-group">
+      <%= label_tag :max_answers, 'Max Answers', class: "form-element" %>
+      <%= number_field_tag :max_answers, @active_filter[:max_answers],
+          min: 0, step: 1, class: 'form-element form--filter',
+          data: { name: 'max_answers' } %>
+    </div>
+    <div class="form-group">
+      <%= label_tag :status, 'Status', class: "form-element" %>
+      <%= select_tag :status, options_for_select(['any', 'open', 'closed'], selected: @active_filter[:status] || 'any'),
+        min: 0, step: 1, class: 'form-element form--filter',
+        data: { name: 'status' } %>
+    </div>
+  </div>
+  <div>
+    <a href="/help/scoring">How scores are computed</a>
+  </div>
+  <div class="form-group-horizontal">
+    <div class="form-group">
+      <%= label_tag :include_tags, 'Include Tags', class: "form-element" %>
+      <%= select_tag :include_tags, options_for_select(Tag.where(id: @active_filter[:include_tags]).map { |tag| [tag.name, tag.id] },
+                   selected: @active_filter[:include_tags] || []), multiple: true, class: 'form-element form--filter js-tag-select',
+                   data: { name: 'include_tags', tag_set: @category&.tag_set_id, create: 'false', use_ids: 'true', placeholder: '' } %>
+    </div>
+    <div class="form-group">
+      <%= label_tag :exclude_tags, 'Exclude Tags', class: "form-element" %>
+      <%= select_tag :exclude_tags, options_for_select(Tag.where(id: @active_filter[:exclude_tags]).map { |tag| [tag.name, tag.id] },
+                   selected: @active_filter[:exclude_tags]|| []), multiple: true, class: 'form-element form--filter js-tag-select',
+                   data: { name: 'exclude_tags', tag_set: @category&.tag_set_id, create: 'false', use_ids: 'true', placeholder: '' } %>
+    </div>
+  </div>
+</div>
diff --git a/app/views/search/_widget.html.erb b/app/views/search/_widget.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..0c7231a7ca0c22433467a35ca976c2dd30748aab
--- /dev/null
+++ b/app/views/search/_widget.html.erb
@@ -0,0 +1,39 @@
+<%= form_tag search_path, method: :get, role: 'search' do %>
+  <div class="form-group-horizontal">
+    <div class="form-group">
+      <%= label_tag :search, 'Search term', class: "form-element" %>
+      <%= search_field_tag :search, params[:search], class: 'form-element' %>
+    </div>
+    <div class="actions has-padding-bottom-1">
+      <%= submit_tag 'Search', class: 'button is-medium is-outlined', name: nil %>
+    </div>
+  </div>
+
+  <% if @signed_out_me %>
+  <div class="widget is-red">
+    <div class="widget--body">
+      <p>
+        Search results for <code>user:me</code> can only be displayed when signed in. 
+        Please <%= sign_in_link 'sign in' %> and try again.
+      </p>
+    </div>
+  </div>
+  <% end %>
+
+  <div class="widget is-teal">
+    <div class="widget--header">
+      Advanced Search Options
+    </div>
+    <div class="widget--body">
+      <%= raw(sanitize(render_markdown(SiteSetting['JITAdvancedSearchHelp']), scrubber: scrubber)) %>
+      <p>Further help with searching is available <%= link_to 'in the help center', help_path('search') %>.</p>
+      <p>Quick hints: <code>tag:tagname</code>, <code>user:xxx</code>, <code>"exact phrase"</code>, <code>post_type:xxx</code>, <code>created:&lt;N{d,w,mo,y}</code>, <code>score:&gt;=0.5</code></p>
+    </div>
+  </div>
+
+  <details>
+    <summary>Filters</summary>
+    <%= render 'filters' %>
+  </details>
+
+<% end %>
diff --git a/app/views/search/search.html.erb b/app/views/search/search.html.erb
index 3e91baa9c16c080a33dca177d3d46f14df4e78a5..5e4794cdb2f23e054a314b4dcab1c18f896ee337 100644
--- a/app/views/search/search.html.erb
+++ b/app/views/search/search.html.erb
@@ -2,35 +2,25 @@
 
 <h1>Search</h1>
 
-<%= form_tag search_path, method: :get do %>
-  <div class="form-group-horizontal">
-    <div class="form-group">
-      <%= label_tag :search, 'Search term', class: "form-element" %>
-      <%= text_field_tag :search, params[:search], class: 'form-element' %>
-    </div>
-    <div class="actions has-padding-bottom-1">
-      <%= submit_tag 'Search', class: 'button is-medium is-outlined', name: nil %>
-    </div>
-  </div>
-<% end %>
-
-<div class="widget is-teal">
-  <div class="widget--header">
-    Advanced Search Options
-  </div>
-  <div class="widget--body">
-    <%= raw(sanitize(render_markdown(SiteSetting['JITAdvancedSearchHelp']), scrubber: scrubber)) %>
-    <p>Further help with searching is available <%= link_to 'in the help center', help_path('search') %>.</p>
-  </div>
-</div>
+<%= render 'widget' %>
 
 <% unless @posts.nil? %>
-  <div class="button-list is-gutterless has-float-right">
-    <%= link_to 'Relevance', query_url(sort: 'relevance'),
-                class: "button is-outlined is-muted #{params[:sort] == 'relevance' || params[:sort].nil? ? 'is-active' : ''}" %>
-    <%= link_to 'Score', query_url(sort: 'score'), class: "button is-outlined is-muted #{params[:sort] == 'score' ? 'is-active' : ''}" %>
-    <%= link_to 'Age', query_url(sort: 'age'), class: "button is-outlined is-muted #{params[:sort] == 'age' ? 'is-active' : ''}" %>
+  <% post_count = @posts.count %>
+  <div class="has-color-tertiary-500 flex-row jc-sb ai-c">
+    <span  title="<%= post_count %> posts">
+     <%= short_number_to_human post_count, precision: 1, significant: false %>
+     <%= 'post'.pluralize(post_count) %>
+    </span>
+    <div class="button-list is-gutterless has-margin-2">
+      <%= link_to 'Relevance', request.params.merge(sort: 'relevance'), class: "button is-outlined is-muted #{params[:sort] == 'relevance' || params[:sort].nil? ? 'is-active' : ''}",
+                  role: 'button', 'aria-label': 'Sort by relevance' %>
+      <%= link_to 'Score', request.params.merge(sort: 'score'), class: "button is-outlined is-muted #{params[:sort] == 'score' ? 'is-active' : ''}",
+                  role: 'button', 'aria-label': 'Sort by score' %>
+      <%= link_to 'Age', request.params.merge(sort: 'age'), class: "button is-outlined is-muted #{params[:sort] == 'age' ? 'is-active' : ''}",
+                  role: 'button', 'aria-label': 'Sort by age' %>
+    </div>
   </div>
+
   <div class="has-clear-clear">&nbsp;</div>
 
   <% if @posts.size == 0 %>
diff --git a/app/views/shared/_body_field.html.erb b/app/views/shared/_body_field.html.erb
index 8812a680461f1ee3602163c17f488eae035a9414..2552d739da9f3df44bb9694f50eb66f29b8a93d1 100644
--- a/app/views/shared/_body_field.html.erb
+++ b/app/views/shared/_body_field.html.erb
@@ -1,3 +1,20 @@
+<%#
+  Adds a markdown body form textarea.
+  Variables:
+    post          : [ApplicationRecord, Nil] the entity to which this body field belongs (a post, a tag, a user, ...)
+    field_name    : [Symbol] the name of the body field (for the given entity)
+    field_label   : [String] the label for the field
+    min_length    : [Integer, Nil] optional, the minimum allowed length
+    max_length    : [Integer, Nil] optional, the maximum allowed length
+%>
+
+<%
+  # Defaults
+  cur_length = defined?(cur_length) ? cur_length : nil
+  min_length = defined?(min_length) ? min_length : nil
+  max_length = defined?(max_length) ? max_length : nil
+%>
+
 <div class="form-group">
   <%= f.label field_name, field_label, class: "form-element" %>
   <% if block_given? %>
@@ -22,7 +39,9 @@
     <%= render 'shared/markdown_tools' %>
     <%= f.text_area field_name, **({ class: classes, rows: 15, placeholder: 'Start typing your post...' }).merge(value), 
                                 data: { character_count: ".js-character-count-post-body" } %>
-    <%= render 'posts/mdhint' %>
+    <%= render 'posts/mdhint', cur_length: value[:value]&.length || cur_length, 
+                               min_length: min_length, 
+                               max_length: max_length %>
   </div>
   <%= hidden_field_tag "__html", nil, class: 'js-post-html' %>
 </div>
diff --git a/app/views/shared/_char_count.html.erb b/app/views/shared/_char_count.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..985dec3f89c1d5d122deda6e8c7963def5dfd5cb
--- /dev/null
+++ b/app/views/shared/_char_count.html.erb
@@ -0,0 +1,28 @@
+<%# 
+  Reusable helper view for character count requirements.
+
+  Variables:
+    cur : current number of characters (default 0)
+    max : maximum number of characters allowed (default 255)
+    min : minimum number of characters allowed (default 0)
+    threshold : fraction of max to show the count at (default 0.75)
+    type : character count type (e.g.: post-title)
+%>
+
+<%
+  # defaults & normalization
+  cur ||= defined?(cur) && !cur.nil? ? cur.to_i : 0
+  max ||= defined?(max) && !max.nil? ? max.to_i : 255
+  min ||= defined?(min) && !min.nil? ? min.to_i : 0
+  threshold ||= defined?(threshold) && !threshold.nil? ? threshold.to_f : 0.75
+%>
+
+<span class="has-float-right has-font-size-caption js-character-count-<%= type %>"
+  data-max="<%= max %>"
+  data-min="<%= min %>"
+  data-threshold="<%= threshold %>">
+    <i class="fas fa-ellipsis-h js-character-count__icon"></i>
+    <span class="js-character-count__count">
+      <%= cur %> / <%= cur < min ? min : max %>
+    </span>
+</span>
\ No newline at end of file
diff --git a/app/views/shared/_copy_link.html.erb b/app/views/shared/_copy_link.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..6932d72ab19edda7576b241544e5d7742607ebc0
--- /dev/null
+++ b/app/views/shared/_copy_link.html.erb
@@ -0,0 +1,66 @@
+<%#
+  Adds a copy link button and drop panel.
+  Variables:
+    classes : a CSS string representing class names for the trigger button
+    desc  : short description of what clicking on the button does
+    id    : id of the entity to link to
+    md    : Markdown-formatted link to copy
+    raw   : raw URL of the link to copy
+%>
+
+<%
+  # Defaults
+  classes = defined?(classes) ? classes : []
+%>
+
+<noscript>
+<%= link_to raw, 'aria-label': desc, class: classes, role: "button" do %>
+  <i class="fa fa-link"></i>
+  <span>Copy Link</span>
+<% end %>
+</noscript>
+<%= tag.button 'aria-label': desc,
+               class: classes + ["js-permalink-trigger"],
+               data: { 
+                       drop: "#permalink-#{id}", 
+                       drop_force_dir: "down", 
+                       drop_self_class_toggle: "is-active" 
+                     },
+               hidden: true,
+               type: "button" do %>
+  <i class="fa fa-link"></i>
+  <span>Copy Link</span>
+<% end %>
+<div id="permalink-<%= id %>" class="droppanel has-padding-top-0 has-padding-right-1">
+  <label for="permalink-<%= id %>-raw" class="form-element">Raw</label>
+  <div class="flex-row-always">
+    <input class="form-element" 
+           id="permalink-<%= id %>-raw" 
+           value="<%= raw %>"
+           >
+    <button class="button is-icon-only-button js-permalink-copy" 
+            data-post-id="<%= id %>" 
+            data-link-type="raw" 
+            title="Copy raw URL" 
+            type="button"
+            >
+      <i class="fa fa-copy"></i>
+    </button>
+  </div>
+  <label for="permalink-<%= id %>-raw" class="form-element">Markdown</label>
+  <div class="flex-row-always">
+    <input class="form-element" 
+           id="permalink-<%= id %>-md" 
+           value="<%= md %>"
+           >
+    <button class="button is-icon-only-button js-permalink-copy" 
+            data-post-id="<%= id %>" 
+            data-link-type="md" 
+            title="Copy Markdown Link" 
+            type="button"
+            >
+      <i class="fa fa-copy"></i>
+    </button>
+  </div>
+</div>
+<a class="js-permalink" href="<%= raw %>" hidden aria-hidden></a>
\ No newline at end of file
diff --git a/app/views/shared/_markdown_tools.html.erb b/app/views/shared/_markdown_tools.html.erb
index 1bc846dca2279e4709568cb20ef4c290d32a251c..daa3ea3d39d5df2ba3cab2c0fa91ca1d395944da 100644
--- a/app/views/shared/_markdown_tools.html.erb
+++ b/app/views/shared/_markdown_tools.html.erb
@@ -32,6 +32,11 @@
     <%= md_button action: 'code', label: 'Monospace font', class: 'is-icon-only' do %>
       <i class="fas fa-fw fa-code"></i>
     <% end %>
+    <% if SiteSetting['MathJaxEnabled'] %>
+      <%= md_button action: 'mathjax', label: 'MathJax', class: 'is-icon-only' do %>
+        $
+      <% end %>
+    <% end %>
   </div>
 
   <div class="button-list is-gutterless">
@@ -48,7 +53,7 @@
 
   <div class="button-list is-gutterless">
     <a href="javascript:void(0)" class="button is-outlined is-muted is-icon-only" data-drop="#markdown-tools"
-       data-drop-self-class-toggle="is-active" aria-label="Tools" title="Tools">
+       data-drop-self-class-toggle="is-active" aria-label="Tools" title="Tools" role="button">
       <i class="fas fa-tools"></i>
     </a>
 
@@ -75,7 +80,7 @@
 
   <div class="button-list is-gutterless">
     <a href="javascript:void(0)" class="button is-muted is-outlined is-icon-only js-save-draft" aria-label="Save draft"
-       title="Save draft">
+       title="Save draft" role="button">
       <i class="fas fa-save"></i>
     </a>
   </div>
diff --git a/app/views/shared/_rss_link.html.erb b/app/views/shared/_rss_link.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..c3f144f9b69386a7f00bbc53bc8dc1719ba43773
--- /dev/null
+++ b/app/views/shared/_rss_link.html.erb
@@ -0,0 +1,20 @@
+<%# 
+   'Adds an RSS link.
+    Variables:
+      url     : [String] URL to the feed
+      text    : [String, Nil] text to visibly show
+      tooltip : [String, Nil] text to show in the tooltip
+   '
+ %>
+
+<%
+  # Defaults
+  text = defined?(text) ? text : 'RSS'
+  tooltip = defined?(tooltip) ? tooltip : 'RSS Feed'
+%>
+
+<span title="<%= tooltip %>">
+  <%= link_to url, class: 'has-display-inline-block' do %>
+    <i class="fas fa-rss"></i> RSS
+  <% end %>
+</span>
\ No newline at end of file
diff --git a/app/views/site_settings/index.html.erb b/app/views/site_settings/index.html.erb
index 2d5117582e6bda358dcd3af8255eb1f93a84b498..9562d314c657dad6f03b8539cdc4069dd0e2ebc4 100644
--- a/app/views/site_settings/index.html.erb
+++ b/app/views/site_settings/index.html.erb
@@ -17,15 +17,13 @@
         <% settings.each do |setting| %>
           <tr>
             <td>
-              <h4>
-                <%= setting.name %>
-                <% if setting.community_id.nil? %>
-                  <span class="badge is-tag is-master-tag">global</span>
-                <% else %>
-                  <span class="badge is-tag">site</span>
-                <% end %>
-                <span class="badge is-tag"><%= setting.value_type %></span>
-              </h4>
+              <% if setting.global? %>
+                <span class="badge is-tag is-master-tag">global</span>
+              <% else %>
+                <span class="badge is-tag">site</span>
+              <% end %>
+              <span class="badge is-tag"><%= setting.value_type %></span>
+              <h4><%= setting.name %></h4>
               <div class="form-caption"><%= setting.description %></div>
             </td>
             <td class="site-setting--value js-setting-value" data-type="<%= setting.value_type %>" data-name="<%= setting.name %>"
diff --git a/app/views/subscription_mailer/subscription.html.erb b/app/views/subscription_mailer/subscription.html.erb
index 2bc7213fb4b42b1ee786d7f2ca4a9056237c8287..e1724b5d0484e59c48eb7fad7dc9ff3495e8d5b3 100644
--- a/app/views/subscription_mailer/subscription.html.erb
+++ b/app/views/subscription_mailer/subscription.html.erb
@@ -19,7 +19,7 @@
     <%= question.body.length > 150 ? '...' : '' %>
   </p>
   <p>
-    &mdash; <%= link_to question.user.rtl_safe_username, user_url(question.user, host: @subscription.community.host), dir: 'ltr'%>
+    &mdash; <%= user_link question.user, { host: @subscription.community.host }  %>
     <%= time_ago_in_words(question.created_at) %> ago
   </p>
 <% end %>
@@ -29,4 +29,4 @@
 <br/>
 
 <small><%= link_to 'Change your email settings or unsubscribe here',
-                   subscriptions_url(host: @subscription.community.host) %></small>
\ No newline at end of file
+                   subscriptions_url(host: @subscription.community.host) %></small>
diff --git a/app/views/subscriptions/index.html.erb b/app/views/subscriptions/index.html.erb
index 774017ba6f1ef0e5093ffffaeacda6d85aa043c1..8c8561f2a074e29cb09f6e8a2ff0dbb8460766d5 100644
--- a/app/views/subscriptions/index.html.erb
+++ b/app/views/subscriptions/index.html.erb
@@ -3,10 +3,19 @@
 <h1>Your Subscriptions</h1>
 <p>These are all the email subscriptions you're currently signed up for. You can turn them off or remove them entirely from here.</p>
 
-<% @subscriptions.each do |sub| %>
-  <details data-sub-id="<%= sub.id %>">
-    <summary><%= sub.name %></summary>
-    <p>Subscription to <%= phrase_for sub.type, sub.qualifier %>, emailed every <%= pluralize(sub.frequency, 'day') %>.</p>
+<% @subscriptions.group_by(&:type).flat_map do |type, subs|
+  subs.each_with_index.map do |sub, index|
+    [
+      sub.created_at, 
+      [sub.name.present? ? sub.name : "#{type.capitalize} subscription #{index + 1}",sub]
+    ] 
+  end
+end.sort_by { |a| a }.map { |_, v| v }.each do |name, sub| %>
+  <details data-sub-id="<%= sub %>">
+    <summary><%= name %></summary>
+    <p>Subscription to <%= phrase_for sub.type, sub.qualifier %>, emailed every <%= 
+      pluralize(sub.frequency, 'day') 
+    %>.</p>
     <%= check_box_tag :enabled, 1, sub.enabled, class: 'js-enable-subscription' %>
     <%= label_tag :enabled, 'Enabled?' %> &middot;
     <a href="#" class="js-remove-subscription text-danger">Remove</a>
diff --git a/app/views/suggested_edit/category_index.html.erb b/app/views/suggested_edit/category_index.html.erb
index 462cae1f14043000546cdc9a92dcd6b01fb729b0..f9c6b126c9cfde6a7ad9ece23ec9d896ee2e5c1c 100644
--- a/app/views/suggested_edit/category_index.html.erb
+++ b/app/views/suggested_edit/category_index.html.erb
@@ -1,5 +1,8 @@
 <h1>Suggested Edits</h1>
-<p class="is-lead">This is a list of suggested edits on posts in this category.</p>
+<p class="is-lead">Suggested edits for review.</p>
+
+<% categories = Category.unscoped.where(community: @community).order(sequence: :asc, id: :asc) %>
+<% current_cat = current_category %>
 
 <div class="button-list is-gutterless">
   <%= link_to 'Pending', query_url(show_decided: 0),
@@ -10,11 +13,46 @@
 
 <% if params[:show_decided] != '1' && !current_user&.privilege?('edit_posts') %>
   <div class="notice is-info has-color-teal-800">
-    <i class="fas fa-info-circle"></i> You can't approve or reject suggested edits because you haven't
-    yet earned the <%= link_to 'Edit Posts', ability_path('edit_posts') %> ability.
+    <i class="fas fa-info-circle"></i> You can't approve or reject suggested edits (except on your own posts) 
+    because you haven't yet earned the <%= link_to 'Edit Posts', ability_path('edit_posts') %> ability.
   </div>
 <% end %>
 
+<% if params[:show_decided] != '1' %>
+  <h3>All categories</h3>
+  <table>
+    <tr>
+      <th>category</th>
+      <th>pending edits</th>
+    </tr>
+  <% categories.each do |cat| %>
+      <% next if (cat.min_view_trust_level || -1) > (current_user&.trust_level || 0) %>
+      <% sug_edits = SuggestedEdit.where(post: Post.undeleted.where(category: cat), active: true).count %>
+    <tr>
+      <td>
+      <% if cat == current_cat %>
+        <%= cat.name %>
+      <% else %>
+        <%= link_to suggested_edits_queue_url(cat) do %>
+        <%= cat.name %>
+	<% end %>
+      <% end %>
+      </td>
+      <td>
+      <% if cat == current_cat %>
+        <%= sug_edits %>
+      <% else %>
+        <%= link_to suggested_edits_queue_url(cat) do %>
+        <%= sug_edits %>
+	<% end %>
+      <% end %>
+      </td>
+    </tr>
+    <% end %>
+  </table>
+<% end %>
+
+
 <% if @edits.any? %>
   <div class="widget">
     <% @edits.each do |edit| %>
@@ -35,4 +73,4 @@
   </div>
 <% else %>
 <p>There are no suggested edits in this category.</p>
-<% end %>
\ No newline at end of file
+<% end %>
diff --git a/app/views/suggested_edit/show.html.erb b/app/views/suggested_edit/show.html.erb
index 8a35f3c5a0f239f1892bc3773549a4064f3fb0f5..535a2daa67236abc8e10b32645f8c95c28093ca5 100644
--- a/app/views/suggested_edit/show.html.erb
+++ b/app/views/suggested_edit/show.html.erb
@@ -1,10 +1,17 @@
 <% content_for :title, "Suggested Edit #" + @edit.id.to_s %>
 <% post = @edit.post %>
 <% is_question_or_article = @edit.on_question? || @edit.on_article? %>
-<% may_decide = check_your_post_privilege(post, 'edit_posts') && @edit.user.id != current_user.id %>
+<% may_decide = check_your_post_privilege(post, 'edit_posts') %>
 
 <h1>Review Suggested Edit</h1>
 
+<% if params[:show_decided] != '1' && !may_decide %>
+  <div class="notice is-info has-color-teal-800">
+    <i class="fas fa-info-circle"></i> You can't approve or reject suggested edits because you haven't
+    yet earned the <%= link_to 'Edit Posts', ability_path('edit_posts') %> ability.
+  </div>
+<% end %>
+
 <% if @edit.active? && may_decide %>
   <div class="notice is-info">
     <p>This edit was suggested by another user. Good edits: </p>
@@ -16,10 +23,10 @@
   </div>
 <% end %>
 
-<div class="widget">
+<form class="widget">
   <div class="widget--body h-bg-tertiary-050">
     <div class="h-f-r">
-      <a class="button is-muted is-outlined" href="<%= generic_share_link(post)  %>">Return to post</a>
+      <a class="button is-muted is-outlined" href="<%= generic_share_link(post)  %>">View post</a>
     </div>
     <% if @edit.pending? %>
       <p class="h-m-0"><strong class="h-c-tertiary-700">Pending.</strong><br>This suggested edit is pending review.</p>
@@ -42,7 +49,11 @@
   </div>
   <div class="widget--body">
     <label for="summary" class="form-element">Suggested edit summary:</label>
-    <input id="summary" class="form-element" readonly value="<%= @edit.comment %>">
+    <%= text_field_tag :summary, @edit.comment, class: 'form-element',
+                                                data: { character_count: ".js-character-count-#{@edit.id}" } %>
+    <div class="clearfix">
+      <%= render 'shared/char_count', type: @edit.id, cur: @edit.comment&.length, max: max_edit_comment_length %>
+    </div>
   </div>
   <div class="widget--body">
     <div class="diff">
@@ -63,21 +74,22 @@
     </div>
   </div>
   <div class="widget--body">
-    <p class="h-m-0">Suggested <%= time_ago_in_words(@edit.created_at) %> ago by
-      <%= user_link @edit.user %></p>
+    <p class="h-m-0">Suggested
+      <span title="<%= @edit.created_at.iso8601 %>" ><%= time_ago_in_words(@edit.created_at) %> ago</span>
+      by <%= user_link @edit.user %></p>
   </div>
   <% if @edit.active? && may_decide %>
     <div class="widget--footer">
-      <button class="button is-filled is-medium" data-suggested-edit-approve="<%= @edit.id %>">Approve</button>
+      <button class="button is-filled is-medium js-suggested-edit-approve" data-suggested-edit-approve="<%= @edit.id %>">Approve</button>
       <button class="button is-filled is-medium js-suggested-edit-reject">Reject (with optional reason)</button>
 
       <div class="widget js-suggested-edit-reject-dialog is-hidden">
         <div class="widget--header">Rejecting this suggested edit</div>
         <div class="widget--body">
           <input class="js-rejection-reason form-element" placeholder="Why are you rejecting this edit?">
-          <button class="button is-outlined is-medium " data-suggested-edit-reject="<%= @edit.id %>">Reject</button>
+          <button class="button is-outlined is-medium" data-suggested-edit-reject="<%= @edit.id %>">Reject</button>
         </div>
       </div>
     </div>
   <% end %>
-</div>
+</form>
diff --git a/app/views/tags/_form.html.erb b/app/views/tags/_form.html.erb
index f88e1d6d4ec6d83d59d6ffc398ba75858b4e8de3..43202c83c3ecb28a1f18a05e3bd8d85f821dcb05 100644
--- a/app/views/tags/_form.html.erb
+++ b/app/views/tags/_form.html.erb
@@ -14,15 +14,51 @@
 
 <%= form_for @tag, url: submit_path do |f| %>
   <% if submit_path == create_tag_path %>
+    <% tag_name = @tag.name %>
+    <% key = "saved_post.#{current_user&.id}.#{request.path}.tag_name" %>
+    <% saved_at_key = "saved_post_at.#{current_user&.id}.#{request.path}" %>
+    <% saved_at = DateTime.parse(RequestContext.redis.get(saved_at_key) || '') rescue Date.new(2000, 1, 1) %>
+    <%
+      # Find the most recent between post-create, post-update, and draft-saved, and use the value corresponding to that.
+      tag_name = [
+        [@tag.created_at || Date.new(2000, 1, 1), @tag.name],
+        [@tag.updated_at || Date.new(2000, 1, 1), @tag.name],
+        [saved_at || Date.new(2001, 1, 1), RequestContext.redis.get(key)]
+      ].max_by do |x|
+        x[0]
+      end[1]
+    %>
     <div class="form-group">
       <%= f.label :name, 'Name', class: 'form-element' %>
       <span class="form-caption">
         Name of the tag
       </span>
-      <%= f.text_field :name, class: 'form-element' %>
+      <%= f.text_field :name, value: tag_name, class: 'form-element' %>
     </div>
   <% end %>
 
+  <div class="form-group">
+    <%= f.label :tag_synonyms, 'Tag Synonyms', class: 'form-element' %>
+    <span class="form-caption">
+      Alternative names for this tag
+    </span>
+    <div id="tag-synonyms-wrapper">
+      <% i = -1 %>
+      <%= f.fields_for :tag_synonyms do |tsf| %>
+        <div class="grid tag-synonym" data-id="<%= i+=1 %>" style="<%= 'display: none;' if tsf.object&.name.blank? %>">
+          <div class="grid--cell is-11">
+            <%= tsf.text_field :name, class: 'form-element tag-synonym-name', readonly: tsf.object&.name.present?, disabled: tsf.object&.name.blank? %>
+          </div>
+          <div class="grid--cell is-1">
+            <button type="button" class="button is-outlined remove-tag-synonym has-float-right">X</button>
+          </div>
+          <%= tsf.hidden_field :_destroy, value: tsf.object&.name.blank?, class: 'destroy-tag-synonym' %>
+        </div>
+      <% end %>
+    </div>
+  </div>
+  <button id="add-tag-synonym" type="button" class="button is-outlined">Add synonym</button>
+
   <div class="form-group">
     <%= f.label :parent_id, 'Parent tag', class: 'form-element' %>
     <span class="form-caption">
@@ -31,21 +67,39 @@
     <%= f.select :parent_id, options_for_select(@tag.parent.present? ? [[@tag.parent.name, @tag.parent_id]] : [],
                                                 selected: @tag.parent.present? ? @tag.parent_id : nil),
                  { include_blank: true }, class: "form-element js-tag-select",
-                 data: { tag_set: @category.tag_set_id, use_ids: true, placeholder: "None" } %>
+                 data: { tag_set: @category.tag_set_id, create: false, use_ids: true, placeholder: "None" } %>
   </div>
 
   <div class="form-group">
+    <% excerpt = @tag.excerpt %>
+    <% key = "saved_post.#{current_user&.id}.#{request.path}.excerpt" %>
+    <% saved_at_key = "saved_post_at.#{current_user&.id}.#{request.path}" %>
+    <% saved_at = DateTime.parse(RequestContext.redis.get(saved_at_key) || '') rescue Date.new(2000, 1, 1) %>
+    <%
+      # Find the most recent between post-create, post-update, and draft-saved, and use the value corresponding to that.
+      excerpt = [
+        [@tag.created_at || Date.new(2000, 1, 1), @tag.excerpt],
+        [@tag.updated_at || Date.new(2000, 1, 1), @tag.excerpt],
+        [saved_at || Date.new(2001, 1, 1), RequestContext.redis.get(key)]
+      ].max_by do |x|
+        x[0]
+      end[1]
+    %>
     <%= f.label :excerpt, 'Usage guidance', class: 'form-element' %>
     <span class="form-caption">
       Short usage guidance for this tag. Will be cut off at 120 characters in the tags list, but displayed in full on
       the tag page.
     </span>
-    <%= f.text_area :excerpt, class: 'form-element js-tag-excerpt', rows: 3 %>
-    <span class="has-float-right has-font-size-caption js-character-count"
-          data-target=".js-tag-excerpt" data-max="600">0 / 600</span>
+    <%= f.text_area :excerpt, class: 'form-element js-tag-excerpt',
+                              value: excerpt,
+                              rows: 3,
+                              data: { character_count: '.js-character-count-tag-excerpt' }
+    %>
+    <%= render 'shared/char_count', type: 'tag-excerpt', cur: excerpt&.length || @tag.excerpt&.length, min: 0, max: 600 %>
   </div>
 
-  <%= render 'shared/body_field', f: f, field_name: :wiki_markdown, field_label: 'Wiki', post: @tag do %>
+  <%= render 'shared/body_field', f: f, min_length: 0, max_length: 30_000, cur_length: @tag.wiki_markdown&.length, 
+                                  field_name: :wiki_markdown, field_label: 'Wiki', post: @tag do %>
     Full usage guidance and any other information you want people to know about this tag.
   <% end %>
   <div class="post-preview"></div>
diff --git a/app/views/tags/_list.html.erb b/app/views/tags/_list.html.erb
index cc7e4ea91d0ff381483c94768663366c39b2e4b3..fb46962bab92850f4792228b073d83f42f47c945 100644
--- a/app/views/tags/_list.html.erb
+++ b/app/views/tags/_list.html.erb
@@ -4,7 +4,7 @@
   <% topic_ids = @category&.topic_tag_ids %>
 
   <% ApplicationRecord.with_lax_group_rules do %>
-    <% @tags.each do |tag| %>
+    <% @tags&.each do |tag| %>
       <% required = required_ids&.include?(tag.id) ? 'is-filled' : '' %>
       <% topic = topic_ids&.include?(tag.id) ? 'is-outlined' : '' %>
       <% moderator = moderator_ids&.include?(tag.id) ? 'is-red is-outlined' : '' %>
@@ -12,4 +12,4 @@
       <%= render 'tag', category: @category, tag: tag, classes: classes %>
     <% end %>
   <% end %>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/tags/_tag.html.erb b/app/views/tags/_tag.html.erb
index ccb2d56441b9d25af2439c7edcb2fdc86307d82f..c0beafbb01ebefd095ebdd076c76555be7b6aff3 100644
--- a/app/views/tags/_tag.html.erb
+++ b/app/views/tags/_tag.html.erb
@@ -8,6 +8,13 @@
   <% end %>
   <%= link_to tag.name, tag_path(id: category.id, tag_id: tag.id), class: classes, 'data-ckb-item-link' => '' %>
   <span class="has-color-tertiary-900">&times;&nbsp;<%= tag.post_count %></span>
+  <% if tag.tag_synonyms.present? %>
+    <p>
+    <% tag.tag_synonyms.each do |synonym| %>
+      <span class="badge is-tag is-small is-teal"><%= synonym.name %></span>
+    <% end %>
+    </p>
+  <% end %>
   <% if tag.excerpt.present? %>
     <p class="has-font-size-caption has-color-tertiary-900">
       <% splat = split_words_max_length(tag.excerpt, 120) %>
diff --git a/app/views/tags/category.html.erb b/app/views/tags/category.html.erb
index a3119f65f319489ff6a1b513d9b2826e7fb56a03..7f1c553076aef5b62fc29629a6bd60d6dd8b6d7b 100644
--- a/app/views/tags/category.html.erb
+++ b/app/views/tags/category.html.erb
@@ -2,8 +2,16 @@
 
 <h1>Tags used in <%= @category.name %></h1>
 
-<% if current_user&.is_moderator %>
-  <%= link_to 'New', new_tag_path(id: @category.id), class: 'button is-muted is-outlined' %>
+<% ApplicationRecord.with_lax_group_rules do %>
+
+<% if @tags == nil %>
+<p>This category is missing its tag set. Set this in the Category settings (admin).</p>
+<% end %>
+
+<% unless @tags == nil %>
+
+<% if current_user&.is_moderator || check_your_privilege('edit_tags') %>
+<%= link_to 'New', new_tag_path(id: @category.id), class: 'button is-muted is-outlined', 'aria-label': 'Create new tag' %>
 <% end %>
 
 <%= form_tag category_tags_path(@category), method: :get, class: 'form-inline' do %>
@@ -23,15 +31,33 @@
     <h3><%= pluralize(@count, 'tag') %></h3>
     <div class="button-list is-gutterless has-margin-2">
       <%= link_to 'Usage', category_tags_path(@category),
-                  class: "button is-muted is-outlined #{request.query_parameters.size == 0 ? 'is-active' : ''}" %>
+                  class: "button is-muted is-outlined #{request.query_parameters.size == 0 ? 'is-active' : ''}",
+                  'aria-label': 'Show tag usage for this category' %>
       <%= link_to 'Hierarchy', query_url(hierarchical: '1'),
-                  class: "button is-muted is-outlined #{params[:hierarchical].present? ? 'is-active' : ''}" %>
+                  class: "button is-muted is-outlined #{params[:hierarchical].present? ? 'is-active' : ''}",
+                  'aria-label': 'Show tag hierarchies' %>
       <%= link_to 'Missing Excerpt', query_url(no_excerpt: '1'),
-                  class: "button is-muted is-outlined #{params[:no_excerpt].present? ? 'is-active' : ''}" %>
+                  class: "button is-muted is-outlined #{params[:no_excerpt].present? ? 'is-active' : ''}",
+                  'aria-label': 'Show tags without excerpts' %>
     </div>
   </div>
 <% end %>
 
 <%= render 'list' %>
 
+<% if @tags&.size == 0 %>
+  <% if params[:q].present? %>
+    <p class="has-color-tertiary"><em>No results for <strong><%= params[:q] %></strong></em></p>
+  <% else %>
+    <p class="has-color-tertiary"><em>There are no tags in <%= @category.name %></em></p>
+  <% end %>
+<% end %>
+
+<% if @tags&.size > 0 %>
 <%= will_paginate @tags, renderer: BootstrapPagination::Rails %>
+<% end %>
+
+<% end %> <%# unless @tags == nil %>
+
+<% end %> <%# ApplicationRecord.with_lax_group_rules %>
+
diff --git a/app/views/tags/nuke_warning.html.erb b/app/views/tags/nuke_warning.html.erb
index 677c2d10c5276026c09779290a6e31f7cc551776..5813fc82018d0d745e45897046b5bdc1c8f050f4 100644
--- a/app/views/tags/nuke_warning.html.erb
+++ b/app/views/tags/nuke_warning.html.erb
@@ -23,6 +23,7 @@
   <p>This action will be logged.</p>
 </div>
 
-<%= link_to nuke_tag_path(id: @category.id, tag_id: @tag.id), class: 'button is-danger is-filled', method: :delete do %>
+<%= link_to nuke_tag_path(id: @category.id, tag_id: @tag.id), class: 'button is-danger is-filled', method: :delete,
+            role: 'button' do %>
   I understand, delete <%= @tag.name %>
 <% end %>
diff --git a/app/views/tags/show.html.erb b/app/views/tags/show.html.erb
index b2350de223adc09ede337dcc0ed0aa2a457088de..341c5329256dcf221f6647e5caf37e3095864ded 100644
--- a/app/views/tags/show.html.erb
+++ b/app/views/tags/show.html.erb
@@ -4,22 +4,35 @@
   Posts tagged <span class="<%= tag_classes(@tag, @category) %> is-large"><%= @tag.name %></span>
   <% if moderator? %>
     <a href="#" class="has-font-size-caption js-rename-tag h-m-r-2"
-       data-category="<%= @category.id %>" data-tag="<%= @tag.id %>" data-name="<%= @tag.name %>">
+       data-category="<%= @category.id %>" data-tag="<%= @tag.id %>" data-name="<%= @tag.name %>"
+       aria-label="Rename this tag">
       <i class="fas fa-pencil-alt" aria-label="Rename" title="Rename"></i>
     </a>
-    <%= link_to select_tag_merge_path(id: @category.id, tag_id: @tag.id), class: 'has-font-size-caption h-m-r-2' do %>
+    <%= link_to select_tag_merge_path(id: @category.id, tag_id: @tag.id), class: 'has-font-size-caption h-m-r-2',
+                'aria-label': 'Merge this tag with other tags' do %>
       <i class="fas fa-project-diagram" aria-label="Merge" title="Merge"></i>
     <% end %>
   <% end %>
   <% if admin? %>
-    <%= link_to nuke_tag_warning_path(id: @category.id, tag_id: @tag.id), class: 'has-font-size-caption h-m-r-2 is-red' do %>
+    <%= link_to nuke_tag_warning_path(id: @category.id, tag_id: @tag.id), class: 'has-font-size-caption h-m-r-2 is-red',
+                'aria-label': 'Nuke this tag' do %>
       <i class="fas fa-trash" aria-label="Nuke" title="Nuke"></i>
     <% end %>
   <% end %>
 </h1>
+
+<% if @tag.tag_synonyms.any? %>
+  <h3 class="has-margin-0" role="list">
+    Synonyms:
+    <% @tag.tag_synonyms.each do |synonym| %>
+      <span class="badge is-tag is-teal" role="listitem"><%= synonym.name %></span>
+    <% end %>
+  </h3>
+<% end %>
+
 <p class="has-color-tertiary-900 has-font-weight-normal has-margin-0 has-font-family-brand">
   <% if @tag.parent_id.present? %>
-      Subtag of <%= link_to @tag.parent.name, tag_path(id: @category.id, tag_id: @tag.parent_id),
+    Subtag of <%= link_to @tag.parent.name, tag_path(id: @category.id, tag_id: @tag.parent_id),
                             class: tag_classes(@tag.parent, @category) %>
   <% end %>
   <% child_count = @tag.children.count %>
@@ -39,7 +52,8 @@
         <em>
           This tag doesn't have any usage information yet.
           <% if current_user&.privilege?('edit_tags') %>
-            <%= link_to 'Help us create it', edit_tag_path(id: @category.id, tag_id: @tag.id) %>.
+            <%= link_to 'Help us create it', edit_tag_path(id: @category.id, tag_id: @tag.id),
+                        'aria-label': 'Help us create usage information for this tag' %>.
           <% end %>
         </em>
       </p>
@@ -48,12 +62,12 @@
   <div class="widget--body">
     <% if @tag.wiki.present? %>
       <% if @tag.wiki.length < 600 %>
-      <%= raw(sanitize(@tag.wiki, scrubber: scrubber)) %>
-      <% else %>
-      <details>
-        <summary>Tag Wiki</summary>
         <%= raw(sanitize(@tag.wiki, scrubber: scrubber)) %>
-      </details>
+      <% else %>
+        <details>
+          <summary>Tag Wiki</summary>
+          <%= raw(sanitize(@tag.wiki, scrubber: scrubber)) %>
+        </details>
       <% end %>
     <% end %>
     <% unless @tag.wiki.present? %>
@@ -61,7 +75,8 @@
         <em>
           This tag doesn't have a detailed wiki yet.
           <% if current_user&.privilege?('edit_tags') %>
-            <%= link_to 'Help us create it', edit_tag_path(id: @category.id, tag_id: @tag.id) %>.
+            <%= link_to 'Help us create it', edit_tag_path(id: @category.id, tag_id: @tag.id),
+                        'aria-label': 'Help us create a detailed wiki for this tag' %>.
           <% end %>
         </em>
       </p>
@@ -70,24 +85,39 @@
 </div>
 
 <% if current_user&.privilege?('edit_tags') %>
-  <%= link_to 'Edit', edit_tag_path(id: @category.id, tag_id: @tag.id), class: 'button is-muted is-outlined' %>
+  <%= link_to 'Edit', edit_tag_path(id: @category.id, tag_id: @tag.id), class: 'button is-muted is-outlined',
+              'aria-label': "Edit tag #{@tag.name}" %>
 <% end %>
 
 <% post_count = @posts.count %>
 <div class="has-color-tertiary-500 category-meta" title="<%= post_count %>">
-  <div>
-    <%= short_number_to_human post_count, precision: 1, significant: false %>
-    <%= 'post'.pluralize(post_count) %>
-    <%= link_to 'Subscribe',
-                new_subscription_path(type: 'tag', qualifier: @tag.name, return_to: request.path),
-                class: 'button is-outlined' %>
+  <div class="category-meta--start">
+    <span title="<%= post_count %> posts with this tag">
+      <%= short_number_to_human post_count, precision: 1, significant: false %>
+      <%= 'post'.pluralize(post_count) %>
+    </span>
+    <%= render 'shared/rss_link', url: tag_path(id: @category.id, tag_id: @tag.id, format: 'rss'), tooltip: 'RSS feed for this tag' %>
+    <% if user_signed_in? && current_user&.subscriptions.where(type: 'tag', qualifier: @tag.name).exists? %>
+      <span class="has-margin-4" title="Subscribed: manage email subscriptions">
+        <%= link_to 'Subscribed', subscriptions_path(current_user),
+          class: 'button is-outlined', 'aria-label': "Subscribed to tag #{@tag.name}" %>
+      </span>
+    <% else %>
+      <span title="Create email subscription">
+        <%= link_to 'Subscribe',
+          new_subscription_path(type: 'tag', qualifier: @tag.name, return_to: request.path),
+          class: 'button is-outlined', 'aria-label': "Subscribe to tag #{@tag.name}" %>
+      </span>
+    <% end %>
   </div>
 
   <div class="button-list is-gutterless has-margin-2">
     <%= link_to 'Tag Only', query_url(self: 1),
-                class: "button is-muted is-outlined #{params[:self].present? ? 'is-active' : ''}" %>
+                class: "button is-muted is-outlined #{params[:self].present? ? 'is-active' : ''}",
+                role: 'button', 'aria-label': 'View this tag only, without showing its children' %>
     <%= link_to 'Tag + Children', tag_path(id: @category.id, tag_id: @tag.id),
-                class: "button is-muted is-outlined #{params[:self].nil? ? 'is-active' : ''}" %>
+                class: "button is-muted is-outlined #{params[:self].nil? ? 'is-active' : ''}",
+                role: 'button', 'aria-label': 'View this tag and its children'%>
   </div>
 </div>
 
@@ -102,7 +132,5 @@
 </div>
 
 <div class="has-padding-top-4">
-  <%= link_to tag_path(id: @category.id, tag_id: @tag.id, format: 'rss') do %>
-    <i class="fas fa-rss"></i> Tag RSS feed
-  <% end %>
+  <%= render 'shared/rss_link', url: tag_path(id: @category.id, tag_id: @tag.id, format: 'rss'), text: 'Tag RSS feed' %>
 </div>
diff --git a/app/views/tour/question2.html.erb b/app/views/tour/question2.html.erb
index 008550ba3292f1893736aeffa25a293337fff1d6..b2da72932366386ec09f3876d0913603444348d4 100644
--- a/app/views/tour/question2.html.erb
+++ b/app/views/tour/question2.html.erb
@@ -43,7 +43,13 @@
 
     <div class="form-group">
       <label class="form-element" for="post_tags_cache">Tags (at least one):</label>
-      <input name="post[tags_cache][]" type="hidden" value="" /><select multiple="multiple" class="form-element js-tag-select" data-tag-set="-1" name="post[tags_cache][]" id="post_tags_cache"><option value=""></option></select>
+      <input name="post[tags_cache][]" type="hidden" value="" />
+      <select multiple="multiple" 
+              class="form-element js-tag-select" 
+              data-tag-set="<%= @tagset_id %>" 
+              name="post[tags_cache][]" 
+              id="post_tags_cache">
+      </select>
     </div>
 
   </div>
diff --git a/app/views/tour/question3.html.erb b/app/views/tour/question3.html.erb
index eeb62f939ba9332acbc449554992829b71370fd2..0c783c16a14922a364f49a00593de8bf050a64bf 100644
--- a/app/views/tour/question3.html.erb
+++ b/app/views/tour/question3.html.erb
@@ -339,7 +339,7 @@
           <p>Voting also helps good content be more visible. Good answers are promoted to the top, while bad ones sink to the bottom. Please help curate the community by voting responsibly.</p>
           <p>Do so by clicking the <svg class="h-c-tertiary-400" width="2em" height="1.33em" viewbox="0 0 100 50">
             <path d="M50,0 L100,50 L0,50 Z" fill="currentColor" />
-          </svg> icon next to the post.</p>
+          </svg> icon next to the post. After you vote, the tour will continue.</p>
         </div>
         <div class="widget--footer">
           <button class="button"  data-step-from=".step-2" data-step-to=".step-3">Back</button>
diff --git a/app/views/two_factor/disable_link.html.erb b/app/views/two_factor/disable_link.html.erb
index e4f9a5eb800db520f8f7ba1e525ec491fa573eec..e6b98aaecf8fb5328c4cc4a07763f2ae21434890 100644
--- a/app/views/two_factor/disable_link.html.erb
+++ b/app/views/two_factor/disable_link.html.erb
@@ -2,4 +2,4 @@
 
 <p>Please click the button below to confirm you want to disable two-factor authentication on your account.</p>
 
-<p><%= link_to 'Disable 2FA', two_factor_confirm_disable_link_path, method: :post, class: 'button is-filled is-danger' %></p>
\ No newline at end of file
+<p><%= link_to 'Disable 2FA', two_factor_confirm_disable_link_path, method: :post, class: 'button is-filled is-danger', role: 'button' %></p>
\ No newline at end of file
diff --git a/app/views/two_factor/enable_2fa.html.erb b/app/views/two_factor/enable_2fa.html.erb
index 1b82c7df27283c2a25ed45d36bb6398150ccc01e..a92ca2ebe3dfccf8483286708212df6db1d7851f 100644
--- a/app/views/two_factor/enable_2fa.html.erb
+++ b/app/views/two_factor/enable_2fa.html.erb
@@ -4,6 +4,9 @@
   your mobile authenticator. Scan the QR code below with your authenticator app and you should be set to go.
 </p>
 
-<div class="has-text-align-center"><img alt src="<%= @qr_uri %>" width="300" /></div>
+<div class="has-text-align-center">
+  <img alt src="<%= @qr_uri %>" width="300" />
+  <div class="has-color-tertiary-600 has-font-size-caption"><%= @secret %></div>
+</div>
 
-<%= link_to 'Done, next step', two_factor_enable_code_path, class: 'button is-filled' %>
\ No newline at end of file
+<%= link_to 'Done, next step', two_factor_enable_code_path, class: 'button is-filled', role: 'button' %>
diff --git a/app/views/two_factor/enable_code.html.erb b/app/views/two_factor/enable_code.html.erb
index e458ede38737579a7c9be07e91230ccb654c4982..28a05ebdad1963125713dde32e8e18f9f186de18 100644
--- a/app/views/two_factor/enable_code.html.erb
+++ b/app/views/two_factor/enable_code.html.erb
@@ -1,5 +1,16 @@
 <h1>Confirm your code</h1>
-<p>Last step: to confirm that you're all correctly set up, enter the code shown in your mobile authenticator below.</p>
+<p>
+  First, save your two-factor <strong>backup code</strong> somewhere safe. You can use it to log in and reset
+  two-factor authentication if you lose access to your app.
+</p>
+
+<details>
+  <summary>Show code</summary>
+  <label for="backup-code" class="form-element">2FA backup code</label>
+  <input class="form-element" type="text" readonly name="backup-code" id="backup-code" value="<%= current_user.backup_2fa_code %>" />
+</details>
+
+<p>Last step: to confirm that you're all correctly set up, enter the code shown in your authenticator app below.</p>
 
 <%= form_tag two_factor_confirm_enable_path, autocomplete: 'off' do %>
   <div class="field">
diff --git a/app/views/two_factor/tf_status.html.erb b/app/views/two_factor/tf_status.html.erb
index 3c67000a46e862e22effa472d058dbffe0a8d149..c309c379ef94811e57f1517f1da7166427025ff9 100644
--- a/app/views/two_factor/tf_status.html.erb
+++ b/app/views/two_factor/tf_status.html.erb
@@ -21,22 +21,43 @@
 <% if current_user.enabled_2fa %>
   <p>
     <% if current_user.two_factor_method == 'app' %>
-      <%= link_to 'Turn off', two_factor_disable_code_path, class: 'button is-outlined' %>
+      <%= link_to 'Turn off', two_factor_disable_code_path, class: 'button is-outlined', 'aria-label': 'Turn off 2FA using an app' %>
     <% elsif current_user.two_factor_method == 'email' %>
-      <%= link_to 'Turn off', two_factor_send_disable_email_path, method: :post, class: 'button is-outlined' %>
+      <%= link_to 'Turn off', two_factor_send_disable_email_path, method: :post, class: 'button is-outlined', 'aria-label': 'Turn off 2FA using email' %>
     <% end %>
   </p>
 <% else %>
   <div>
     <h3>Enable two-factor authentication</h3>
-    <%= form_tag two_factor_enable_path do %>
-      <div class="form-group">
-        <%= select_tag :method, options_for_select([['Get codes from an app on your phone', 'app'],
-                                                    ['Get a sign-in link emailed to you', 'email']]),
-                       { class: 'form-element' } %>
-      </div>
+    <% if current_user.sso_profile.present? && !SiteSetting['Enable2FAForSsoUsers'] %>
+      <p>
+        Because you sign in with Single Sign-On, you cannot enable two-factor authentication.
+      </p>
+    <% else %>
+      <%= form_tag two_factor_enable_path do %>
+        <div class="form-group">
+          <%= select_tag :method, options_for_select([['Get codes from an app on your phone', 'app'],
+                                                      ['Get a sign-in link emailed to you', 'email']]),
+                         { class: 'form-element' } %>
+        </div>
 
-      <%= submit_tag 'Enable', class: 'button is-filled' %>
+        <%= submit_tag 'Enable', class: 'button is-filled', 'aria-label': 'Enable 2FA' %>
+      <% end %>
     <% end %>
   </div>
-<% end %>
\ No newline at end of file
+<% end %>
+
+<% if current_user.enabled_2fa && current_user.two_factor_method == 'app' %>
+  <h3>Recovery</h3>
+  <p>
+    Your <strong>backup code</strong> for two-factor authentication can be found below. You should save this somewhere
+    safe &mdash; if you lose access to your authenticator app, you can sign in using this code to get back into your
+    account and reconfigure 2FA.
+  </p>
+
+  <%= form_tag two_factor_backup_code_path, class: 'js-backup-code-form' do %>
+    <%= label_tag :code, 'Enter a 2FA code to access your backup code', class: 'form-element' %>
+    <%= text_field_tag :code, nil, class: 'form-element' %>
+    <%= submit_tag 'Show backup code', class: 'button is-filled' %>
+  <% end %>
+<% end %>
diff --git a/app/views/two_factor_mailer/backup_code.html.erb b/app/views/two_factor_mailer/backup_code.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..9b8d9882594111728c98c8969c9aa6b301a784ed
--- /dev/null
+++ b/app/views/two_factor_mailer/backup_code.html.erb
@@ -0,0 +1,21 @@
+<p>Hi <%= @user&.username %>,</p>
+
+<h3>Your two-factor authentication backup code</h3>
+
+<p>
+  You're receiving this email because you have two-factor authentication enabled on your Codidact network account. We've
+  recently added backup codes for every account using 2FA, so that you can still log in if you lose access to your
+  authenticator app.
+</p>
+
+<p>
+  Your backup code can be found in your user account settings, under
+  <a href="<%= two_factor_status_url %>">Two-Factor Authentication settings</a>. Please save it somewhere safe.
+  Please note that logging in using this backup code will disable 2FA on your account so that you can reconfigure it
+  using a new app or device &mdash; this will also reset your backup code.
+</p>
+
+<p>
+  Thanks,<br/>
+  The Codidact Team
+</p>
diff --git a/app/views/two_factor_mailer/backup_code.text.erb b/app/views/two_factor_mailer/backup_code.text.erb
new file mode 100644
index 0000000000000000000000000000000000000000..6ae44eed54a082e70465959b2030a01ab9972d23
--- /dev/null
+++ b/app/views/two_factor_mailer/backup_code.text.erb
@@ -0,0 +1,15 @@
+Hi <%= @user&.username %>,
+
+Re: Your two-factor authentication backup code
+
+
+You're receiving this email because you have two-factor authentication enabled on your Codidact network account. We've
+recently added backup codes for every account using 2FA, so that you can still log in if you lose access to your
+authenticator app.
+
+Your backup code can be found in your user account settings, under Two-Factor Authentication settings. Please save it
+somewhere safe. Please note that logging in using this backup code will disable 2FA on your account so that you can
+reconfigure it using a new app or device &mdash; this will also reset your backup code.
+
+Thanks,
+The Codidact Team
diff --git a/app/views/users/_activity_items.html.erb b/app/views/users/_activity_items.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..f31a1c5522a0860298050467d3cde413fd7b08ea
--- /dev/null
+++ b/app/views/users/_activity_items.html.erb
@@ -0,0 +1,108 @@
+<table class="table is-with-hover is-full-width">
+  <tr>
+    <th>Type</th>
+    <th>On...</th>
+    <th>Excerpt</th>
+    <th>Status</th>
+    <th>Date</th>
+  </tr>
+  <% @items.each do |i| %>
+    <tr class="<%= deleted_item?(i) ? 'deleted-content' : '' %>">
+      <% if i.class == Post %>
+        <% type_name = (i.question? ? 'Question' : (i.article? ? 'Article' : 'Answer')) %>
+        <td>
+          <span class="h-fw-bold">
+            <%= type_name %>
+          </span>
+        </td>
+        <td>&mdash;</td>
+        <td class="h-fs-caption">
+          <% working_title = i.answer? ? "A: #{i.parent.title}" : i.title %>
+          <strong><%= working_title %></strong><br>
+          <%= i.body_plain[0..300] + ((i.body_plain.length > 300) ? "..." : "") %><br>
+          <%= link_to '(more)', generic_share_link(i), 'aria-label': "More information about #{type_name} #{working_title}" %>
+        </td>
+        <td>&mdash;</td>
+      <% elsif i.class == Comment %>
+        <td>
+          Comment
+        </td>
+        <td>
+          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post) %>
+        </td>
+        <td class="h-fs-caption">
+          <%= i.content[0..300] + ((i.content.length > 300) ? "..." : "") %><br>
+          <%= link_to '(more)', comment_link(i), 'aria-label': 'More information about comment' %>
+        </td>
+        <td>&mdash;</td>
+      <% elsif i.class == PostHistory %>
+        <td>
+          Edit
+        </td>
+        <td>
+          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post) %>
+        </td>
+        <td class="h-fs-caption">
+          <% if i.comment %>
+            <em><%= i.post_history_type.name.gsub("_", " ").capitalize %></em>:<br><%= i.comment %>
+          <% else %>
+            <em><%= i.post_history_type.name.gsub("_", " ").capitalize %></em>
+          <% end %>
+        </td>
+        <td>&mdash;</td>
+      <% elsif i.class == SuggestedEdit %>
+        <td>
+          Suggested Edit
+        </td>
+        <td>
+          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post) %>
+        </td>
+        <td class="h-fs-caption">
+          <em>Suggested edit</em>:<br><%= i.comment %><br>
+          <%= link_to '(more)', suggested_edit_url(i.id), 'aria-label': "More information about suggested edit #{i.comment}" %>
+        </td>
+        <td>
+          <%= (i.pending? ? "pending" : (i.approved? ? "helpful" : "declined")) %>
+        </td>
+      <% elsif mod && i.class == ModWarning %>
+        <td>
+          <span class="h-fw-bold h-c-red-700">Warning</span>
+        </td>
+        <td>&mdash;</td>
+        <td class="h-fs-caption">
+          <%= i.body[0..300] + ((i.body.length > 300) ? "..." : "") %>
+        </td>
+        <td>&mdash;</td>
+      <% elsif mod && i.class == Flag %>
+        <td>
+          Flag
+        </td>
+        <td>
+	  <% if i.post_type == 'Post' %>
+          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post)%>
+	  <% elsif i.post_type == 'Comment' %>
+	  <%= link_to "Comment thread: " + i.post.comment_thread.title, comment_link(i.post) %>
+	  <% end %>
+        </td>
+        <td class="h-fs-caption">
+          <%= i.reason[0..300] + ((i.reason.length > 300) ? "..." : "") %><br>
+        </td>
+        <td>
+          <%= i.status || "pending" %>
+        </td>
+      <% else %>
+        <td>
+          <span class="badge is-tag is-muted">Unknown</span>
+        </td>
+        <td>&mdash;</td>
+        <td><%= i.class %></td>
+        <td>&mdash;</td>
+      <% end %>
+      <td>
+        <span title="<%= i.created_at.iso8601 %>"><%= time_ago_in_words(i.created_at) %> ago</span>
+      </td>
+    </tr>
+  <% end %>
+</table>
+
+<%= will_paginate @items, renderer: BootstrapPagination::Rails %>
diff --git a/app/views/users/_network.html.erb b/app/views/users/_network.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..a1f9258aad1312c374953fa553cfddce9c9f206d
--- /dev/null
+++ b/app/views/users/_network.html.erb
@@ -0,0 +1,22 @@
+<table class="table is-with-hover is-full-width">
+  <tr>
+    <th>Profile on Community</th>
+    <th>Posts</th>
+    <th>Reputation</th>
+  </tr>
+
+  <% @communities.each do |c| %>
+    <% if @user.has_profile_on(c) %>
+    <tr>
+      <td><%= user_link @user, { host: c.host}, anchortext: c.name %>
+	<% if @user.is_moderator_on(c) %>
+	(moderator)
+	<% end %>
+      </td>
+      <td><%= @user.post_count_on(c) %> </td>
+      <td><%= @user.reputation_on(c) %> </td>
+    </tr>
+    <% end %>
+  <% end %>
+
+</table>
diff --git a/app/views/users/_tabs.html.erb b/app/views/users/_tabs.html.erb
index 0c4713fef3d009b39f3145f2d5c22e1a34627169..fb2c9d191fe7f60c06067c65e123446ace06750d 100644
--- a/app/views/users/_tabs.html.erb
+++ b/app/views/users/_tabs.html.erb
@@ -18,5 +18,14 @@
     <%= link_to user_preferences_path, class: "tabs--item #{current_page?(user_preferences_path) ? 'is-active' : ''}" do %>
       Preferences
     <% end %>
+    <%= link_to user_filters_path, class: "tabs--item #{current_page?(user_filters_path) ? 'is-active' : ''}" do %>
+      Filters
+    <% end %>
+    <%= link_to notifications_path, class: "tabs--item #{current_page?(notifications_path) ? 'is-active' : ''}" do %>
+      Notifications
+    <% end %>
+  <% end %>
+  <%= link_to network_path(user), class: "tabs--item #{current_page?(network_path(user)) ? 'is-active' : ''}" do %>
+  All Communities
   <% end %>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/users/activity.html.erb b/app/views/users/activity.html.erb
index d9afc9b57441325b3440057dafe84442f2e451bc..e86b14425762cbc9f6f85e65fed0136433cdd2c6 100644
--- a/app/views/users/activity.html.erb
+++ b/app/views/users/activity.html.erb
@@ -7,104 +7,24 @@
 <h1>Activity for <%= user_link @user %></h1>
 
 <div class="button-list is-gutterless h-m-v-4">
-  <a class="button is-muted is-outlined" href="?">
+  <a class="button is-muted is-outlined" href="?" role="button">
     Show all events
   </a>
-  <a class="button is-muted is-outlined <%= params[:filter] == 'posts' ? 'is-active' : '' %>" href="?filter=posts">
+  <a class="button is-muted is-outlined <%= params[:filter] == 'posts' ? 'is-active' : '' %>" href="?filter=posts" role="button">
     Posts
     <% if @posts > 0 %><span class="badge is-status"><%= @posts %></span>
     <% end %>
   </a>
-  <a class="button is-muted is-outlined <%= params[:filter] == 'comments' ? 'is-active' : '' %>" href="?filter=comments">
+  <a class="button is-muted is-outlined <%= params[:filter] == 'comments' ? 'is-active' : '' %>" href="?filter=comments" role="button">
     Comments
     <% if @comments > 0 %><span class="badge is-status"><%= @comments %></span>
     <% end %>
   </a>
-  <a class="button is-muted is-outlined <%= params[:filter] == 'edits' ? 'is-active' : '' %>" href="?filter=edits">
+  <a class="button is-muted is-outlined <%= params[:filter] == 'edits' ? 'is-active' : '' %>" href="?filter=edits" role="button">
     Edits
     <% if @all_edits > 0 %><span class="badge is-status"><%= @all_edits %></span>
     <% end %>
   </a>
 </div>
 
-<table class="table is-with-hover is-full-width">
-  <tr>
-    <th>Type</th>
-    <th>On...</th>
-    <th>Excerpt</th>
-    <th>Status</th>
-    <th>Date</th>
-  </tr>
-  <% @items.each do |i| %>
-    <tr class="<%= deleted_item?(i) ? 'deleted-content' : '' %>">
-      <% if i.class == Post %>
-        <td>
-                    <span class="h-fw-bold">
-                        <%= (i.question? ? "Question" : (i.article? ? "Article" : "Answer")) %>
-                    </span>
-        </td>
-        <td>&mdash;</td>
-        <td class="h-fs-caption">
-          <% if !i.answer? %>
-            <strong><%= i.title %></strong><br>
-          <% else %>
-            <strong>A: <%= i.parent.title %></strong><br>
-          <% end %>
-          <%= i.body_plain[0..300] + ((i.body_plain.length > 300) ? "..." : "") %><br>
-          <%= link_to '(more)', generic_share_link(i) %>
-        </td>
-        <td>&mdash;</td>
-      <% elsif i.class == Comment %>
-        <td>
-          Comment
-        </td>
-        <td>
-          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post) %>
-        </td>
-        <td class="h-fs-caption">
-          <%= i.content[0..300] + ((i.content.length > 300) ? "..." : "") %><br>
-          <%= link_to '(more)', comment_link(i) %>
-        </td>
-        <td>&mdash;</td>
-      <% elsif i.class == PostHistory %>
-        <td>
-          Edit
-        </td>
-        <td>
-          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post) %>
-        </td>
-        <td class="h-fs-caption">
-          <% if i.comment %>
-            <em><%= i.post_history_type.name.gsub("_", " ").capitalize %></em>:<br><%= i.comment %>
-          <% else %>
-            <em><%= i.post_history_type.name.gsub("_", " ").capitalize %></em>
-          <% end %>
-        </td>
-        <td>&mdash;</td>
-      <% elsif i.class == SuggestedEdit %>
-        <td>
-          Suggested Edit
-        </td>
-        <td>
-          <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post) %>
-        </td>
-        <td class="h-fs-caption">
-          <em>Suggested edit</em>:<br><%= i.comment %><br><%= link_to '(more)', suggested_edit_url(i.id) %>
-        </td>
-        <td>
-          <%= (i.pending? ? "pending" : (i.approved? ? "helpful" : "declined")) %>
-        </td>
-      <% else %>
-        <td>
-          <span class="badge is-tag is-muted">Unknown</span>
-        </td>
-        <td>&mdash;</td>
-        <td><%= i.class %></td>
-        <td>&mdash;</td>
-      <% end %>
-      <td>
-        <span title="<%= i.created_at.iso8601 %>"><%= time_ago_in_words(i.created_at) %> ago</span>
-      </td>
-    </tr>
-  <% end %>
-</table>
\ No newline at end of file
+<%= render 'activity_items', mod: false %>
diff --git a/app/views/users/disconnect_sso.html.erb b/app/views/users/disconnect_sso.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..b55f669fb21dcddb929d369fc6c46a7c61ed79a5
--- /dev/null
+++ b/app/views/users/disconnect_sso.html.erb
@@ -0,0 +1,12 @@
+<h1>Disconnect from Single Sign-On</h1>
+<p>
+  You currently sign in using your institutions Single Sign-On service.
+  It is possible to switch to signing in with a normal email address and password by disconnecting your account from
+  the Single Sign-On service.
+  After disconnecting your account, you will be sent an email to set the password for your account.
+</p>
+
+<%= link_to 'Disconnect my account from SSO',
+            user_confirm_disconnect_sso_path,
+            method: :post,
+            class: 'button is-filled is-danger' %>
\ No newline at end of file
diff --git a/app/views/users/edit_profile.html.erb b/app/views/users/edit_profile.html.erb
index 330bdbbb93af42a6ec4352dd49ad541f17f7c565..654a2ef29e13238c48c4619437e5e426be1ec812 100644
--- a/app/views/users/edit_profile.html.erb
+++ b/app/views/users/edit_profile.html.erb
@@ -34,33 +34,41 @@
   <div class="form-group has-padding-2">
     <%= f.label :username, class: "form-element" %>
     <div class="form-caption">What other people call you.</div>
-    <%= f.text_field :username, class: 'form-element', autocomplete: 'off' %>
+    <%= f.text_field :username, class: 'form-element', autocomplete: 'off', data: { character_count: '.js-character-count-user-name' } %>
+    <%= render 'shared/char_count', type: 'user-name', cur: current_user.username&.length, min: 3, max: 50 %>
   </div>
 
-  <%= render 'shared/body_field', f: f, field_name: :profile_markdown, field_label: 'Profile', post: current_user %>
+  <%= render 'shared/body_field', f: f, field_name: :profile_markdown, field_label: 'Profile', post: current_user,
+            cur_length: current_user.profile_markdown&.length, min_length: 0 %>
 
+  <% unless current_user.community_user.privilege?('unrestricted') %>
+    <p>Note: Links are not shown publicly until you have earned the Participate Everywhere ability.</p>
+  <% end %>
   <div class="post-preview"></div>
 
-  <div class="grid">
-    <div class="grid--cell is-4 is-12-sm form-group">
-      <%= f.label :website, class: "form-element" %>
-      <span class="form-caption">A link to anywhere on the internet for your stuff.</span>
-      <%= f.text_field :website, class: 'form-element', autocomplete: 'off', placeholder: 'https://...' %>
-    </div>
-
-    <div class="grid--cell is-4 is-12-sm form-group">
-      <%= f.label :twitter, class: "form-element" %>
-      <span class="form-caption">Your Twitter username, if you've got one you want to share.</span>
-      <%= f.text_field :twitter, class: 'form-element', autocomplete: 'off', placeholder: '@username' %>
-    </div>
-
-    <div class="grid--cell is-4 is-12-sm form-group">
-      <%= f.label :discord, class: 'form-element' %>
-      <span class="form-caption">Your Discord user tag, in the format <code>username#1234</code>.</span>
-      <%= f.text_field :discord, class: 'form-element', autocomplete: 'off', placeholder: 'username#1234' %>
+  <div>
+    <p>Extra fields -- your web site, GitHub profile, social-media usernames, whatever you want. Only values that begin with "http" are rendered as links.</p>
+    <div class="grid">
+      <%= f.fields_for :user_websites do |w| %>
+      <div class="grid grid--cell is-12 is-12-sm">
+        <div class="grid grid--cell is-3 is-3-sm">
+          <div class="grid--cell is-12"><%= w.text_field :label, class: 'form-element', autocomplete: 'off', placeholder: 'label' %></div>
+        </div>
+        <div class="grid grid--cell is-6 is-9-sm">
+          <div class="grid--cell is-12"><%= w.text_field :url, class: 'form-element', autocomplete: 'off', placeholder: 'https://...' %></div>
+        </div>
+      </div>
+      <% end %>
     </div>
   </div>
 
+  <div class="form-group has-padding-2">
+    <%= f.label :discord, class: 'form-element' %>
+    <span class="form-caption">Your Discord user tag, <code>username</code> or <code>username#1234</code>.</span>
+    <%= f.text_field :discord, class: 'form-element', autocomplete: 'off', placeholder: 'username#1234' %>
+  </div>
+    
+  
   <%= f.submit 'Save', class: 'button is-filled' %>
 <% end %>
 
@@ -72,7 +80,7 @@
       you'll be able to request that any content you created on Stack Exchange that has been copied across here is
       transferred to you.
     </p>
-    <%= link_to stack_oauth_url, class: 'button is-outlined' do %>
+    <%= link_to stack_oauth_url, class: 'button is-outlined', 'aria-label': 'Authenticate Stack Exchange account' do %>
       <i class="fab fa-stack-exchange"></i> Authenticate
     <% end %>
   </div>
@@ -101,4 +109,4 @@
       <%= submit_tag 'Claim Content', name: nil, class: 'button is-outlined' %>
     <% end %>
   </div>
-<% end %>
\ No newline at end of file
+<% end %>
diff --git a/app/views/users/filters.html.erb b/app/views/users/filters.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..95a83c71f84d6f3fb455ef65cc799f114c0fae32
--- /dev/null
+++ b/app/views/users/filters.html.erb
@@ -0,0 +1,11 @@
+<%= render 'tabs', user: current_user %>
+
+<h1>Filters</h1>
+<p>
+  Manage your filters here
+</p>
+
+<%# Just a nominal form so that stuff like validation works %>
+<form>
+  <%= render 'search/filters', allow_apply: false, allow_delete: true %>
+<form>
\ No newline at end of file
diff --git a/app/views/users/full_log.html.erb b/app/views/users/full_log.html.erb
index 3bb5c826a2776ec47269601d0ce0dd562a029a3f..bbd01e8350985e768a049f85c0890b1007b3f22a 100644
--- a/app/views/users/full_log.html.erb
+++ b/app/views/users/full_log.html.erb
@@ -1,4 +1,4 @@
-<% content_for :title, "Moderator Tools: #{rtl_safe_username(@user)}" %>
+<% content_for :title, "Full Activity Log: #{rtl_safe_username(@user)}" %>
 
 <h1>Full activity log for <%= user_link @user %></h1>
 
@@ -9,137 +9,36 @@
 <% end %>
 
 <div class="button-list is-gutterless h-m-v-4">
-    <a class="button is-muted is-outlined" href="?">
+    <a class="button is-muted is-outlined" href="?" role="button">
         Show all events
     </a>
     <% if @interesting > 0 %>
-    <a class="button is-muted is-outlined <%= params[:filter] == 'interesting' ? 'is-active' : '' %>" href="?filter=interesting">
+    <a class="button is-muted is-outlined <%= params[:filter] == 'interesting' ? 'is-active' : '' %>" href="?filter=interesting" role="button">
         Negative
         <span class="badge is-status"><%= @interesting %></span>
     </a>
     <% end %>
-    <a class="button is-muted is-outlined <%= params[:filter] == 'posts' ? 'is-active' : '' %>" href="?filter=posts">
+    <a class="button is-muted is-outlined <%= params[:filter] == 'posts' ? 'is-active' : '' %>" href="?filter=posts" role="button">
         Posts
         <% if @posts > 0 %><span class="badge is-status"><%= @posts %></span><% end %>
     </a>
-    <a class="button is-muted is-outlined <%= params[:filter] == 'comments' ? 'is-active' : '' %>" href="?filter=comments">
+    <a class="button is-muted is-outlined <%= params[:filter] == 'comments' ? 'is-active' : '' %>" href="?filter=comments" role="button">
         Comments
         <% if @comments > 0 %><span class="badge is-status"><%= @comments %></span><% end %>
     </a>
-    <a class="button is-muted is-outlined <%= params[:filter] == 'flags' ? 'is-active' : '' %>" href="?filter=flags">
+    <a class="button is-muted is-outlined <%= params[:filter] == 'flags' ? 'is-active' : '' %>" href="?filter=flags" role="button">
         Flags
         <% if @flags > 0 %><span class="badge is-status"><%= @flags %></span><% end %>
     </a>
-    <a class="button is-muted is-outlined <%= params[:filter] == 'edits' ? 'is-active' : '' %>" href="?filter=edits">
+    <a class="button is-muted is-outlined <%= params[:filter] == 'edits' ? 'is-active' : '' %>" href="?filter=edits" role="button">
         Edits
         <% if @all_edits > 0 %><span class="badge is-status"><%= @all_edits %></span><% end %>
     </a>
-    <a class="button is-muted is-outlined <%= params[:filter] == 'warnings' ? 'is-active' : '' %>" href="?filter=warnings">
+    <a class="button is-muted is-outlined <%= params[:filter] == 'warnings' ? 'is-active' : '' %>" href="?filter=warnings" role="button">
         Warnings
         <% if @mod_warnings_received > 0 %><span class="badge is-status"><%= @mod_warnings_received %></span><% end %>
     </a>
 </div>
 
-<table class="table is-with-hover is-full-width">
-    <tr>
-        <th>Type</th>
-        <th>On...</th>
-        <th>Excerpt</th>
-        <th>Status</th>
-        <th>Date</th>
-    </tr>
-    <% @items.each do |i| %>
-        <tr class="<%= deleted_item?(i) ? 'deleted-content' : '' %>">
-            <% if i.class == Post %>
-                <td>
-                    <span class="h-fw-bold">
-                        <%= (i.question? ? "Question" : (i.article? ? "Article" : "Answer")) %>
-                    </span>
-                </td>
-                <td>&mdash;</td>
-                <td class="h-fs-caption">
-                    <% if !i.answer? %>
-                    <strong><%= i.title %></strong><br>
-                    <% else %>
-                    <strong>A: <%= i.parent.title %></strong><br>
-                    <% end %>
-                    <%= i.body_plain[0..300] + ((i.body_plain.length > 300) ? "..." : "") %><br>
-                    <%= link_to '(more)', generic_share_link(i)%>
-                </td>
-                <td>&mdash;</td>
-            <% elsif i.class == Comment %>
-                <td>
-                    Comment
-                </td>
-                <td>
-                    <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post)%>
-                </td>
-                <td class="h-fs-caption">
-                    <%= i.content[0..300] + ((i.content.length > 300) ? "..." : "") %><br>
-                    <%= link_to '(more)', generic_share_link(i.post) + "#comment-" + i.id.to_s %>
-                </td>
-                <td>&mdash;</td>
-            <% elsif i.class == PostHistory %>
-                <td>
-                    Edit
-                </td>
-                <td>
-                    <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post)%>
-                </td>
-                <td class="h-fs-caption">
-                    <% if i.comment %>
-                    <em><%= i.post_history_type.name.gsub("_", " ").capitalize %></em>:<br><%= i.comment %>
-                    <% else %>
-                    <em><%= i.post_history_type.name.gsub("_", " ").capitalize %></em>
-                    <% end %>
-                </td>
-                <td>&mdash;</td>
-            <% elsif i.class == SuggestedEdit %>
-                <td>
-                    Suggested Edit
-                </td>
-                <td>
-                    <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post)%>
-                </td>
-                <td class="h-fs-caption">
-                    <em>Suggested edit</em>:<br><%= i.comment %><br><%= link_to '(more)', suggested_edit_url(i.id) %>
-                </td>
-                <td>
-                    <%= (i.pending? ? "pending" : (i.approved? ? "helpful" : "declined")) %>
-                </td>
-            <% elsif i.class == ModWarning %>
-                <td>
-                    <span class="h-fw-bold h-c-red-700">Warning</span>
-                </td>
-                <td>&mdash;</td>
-                <td class="h-fs-caption">
-                    <%= i.body[0..300] + ((i.body.length > 300) ? "..." : "") %>
-                </td>
-                <td>&mdash;</td>
-            <% elsif i.class == Flag %>
-                <td>
-                    Flag
-                </td>
-                <td>
-                    <%= link_to "Post #" + i.post.id.to_s, generic_share_link(i.post)%>
-                </td>
-                <td class="h-fs-caption">
-                    <%= i.reason[0..300] + ((i.reason.length > 300) ? "..." : "") %><br>
-                </td>
-                <td>
-                    <%= i.status || "pending" %>
-                </td>
-            <% else %>
-                <td>
-                    <span class="badge is-tag is-muted">Unknown</span>
-                </td>
-                <td>&mdash;</td>
-                <td><%= i.class %></td>
-                <td>&mdash;</td>
-            <% end %>
-            <td>
-                <span title="<%= i.created_at.iso8601 %>"><%= time_ago_in_words(i.created_at) %> ago</span>
-            </td>
-        </tr>
-    <% end %>
-</table>
+<%= render 'activity_items', mod: true %>
+
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb
index aeea59d5c0901da1b4aacb4231462fbfad1d161a..f0ada48e54367dd7415b5a04755395492cecbeed 100644
--- a/app/views/users/index.html.erb
+++ b/app/views/users/index.html.erb
@@ -15,15 +15,21 @@
 <% end %>
 
 <div class="button-list is-gutterless has-margin-bottom-4">
-  <%= link_to 'Reputation', query_url(sort: 'reputation'),
-      class: "button is-muted is-outlined #{params[:sort] == 'reputation' || (params[:sort].nil? && params[:search].nil?) ? 'is-active' : ''}" %>
-  <%= link_to 'Age', query_url(sort: 'age'), class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}" %>
+  <%= link_to 'Reputation', request.params.merge(sort: 'reputation'),
+      class: "button is-muted is-outlined #{params[:sort] == 'reputation' || (params[:sort].nil? && params[:search].nil?) ? 'is-active' : ''}",
+      role: 'button', 'aria-label': 'Sort by reputation' %>
+  <%= link_to 'Age', request.params.merge(sort: 'age'), class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
+              role: 'button', 'aria-label': 'Sort by age' %>
 </div>
 
-<div class="user-list">
-  <% @users.each do |user| %>
-    <%= render 'user', user: user %>
-  <% end %>
-</div>
+<% if @users.count == 0 %>
+  <p><%= I18n.t('search.no_users') %></p>
+<% else %>
+  <div class="user-list">
+    <% @users.each do |user| %>
+      <%= render 'user', user: user %>
+    <% end %>
+  </div>
+<% end %>
 
 <%= will_paginate @users, renderer: BootstrapPagination::Rails %>
diff --git a/app/views/users/mod.html.erb b/app/views/users/mod.html.erb
index 54761db71c0eddebb94bc217aea311818a26d54c..4f4cd80501558eff6ffe057b0e63fd3717b634ea 100644
--- a/app/views/users/mod.html.erb
+++ b/app/views/users/mod.html.erb
@@ -26,15 +26,15 @@
       after initiating an action.</p>
     <div class="delete-actions">
       <%= link_to 'Destroy user', destroy_user_path(@user.id), remote: true,
-                  method: :delete, class: 'js-destroy-user button is-danger is-filled' %>
+                  method: :delete, class: 'js-destroy-user button is-danger is-filled', role: 'button' %>
       <%= link_to 'Delete community profile', soft_delete_user_path(@user.id, type: 'profile'), remote: true,
-                  method: :delete, class: 'js-soft-delete button is-danger is-filled' %>
+                  method: :delete, class: 'js-soft-delete button is-danger is-filled', role: 'button' %>
       <% if current_user.is_global_moderator || current_user.is_global_admin %>
         <%= link_to 'Delete user network-wide', soft_delete_user_path(@user.id, type: 'user'), remote: true,
-                    method: :delete, class: 'js-soft-delete button is-danger is-filled' %>
+                    method: :delete, class: 'js-soft-delete button is-danger is-filled', role: 'button' %>
       <% end %>
       <% if current_user.is_global_admin %>
-        <%= link_to 'Feed to STAT (180 days)', hellban_user_path(@user), method: :post, class: 'button is-danger is-filled' %>
+        <%= link_to 'Feed to STAT (180 days)', hellban_user_path(@user), method: :post, class: 'button is-danger is-filled', role: 'button' %>
       <% end %>
     </div>
   </div>
diff --git a/app/views/users/network.html.erb b/app/views/users/network.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..cb520a24e30eb8752c81e6238552e9e8c760f485
--- /dev/null
+++ b/app/views/users/network.html.erb
@@ -0,0 +1,10 @@
+<%= render 'tabs', user: @user %>
+
+<h1>Profiles for <%= user_link @user %></h1>
+
+<p>
+  Links to profiles on other communities on this network.
+</p>
+
+<%= render 'network' %>
+
diff --git a/app/views/users/posts.html.erb b/app/views/users/posts.html.erb
index ee63d1bc6601df9d0a3d5ce0cd0342b46c10fb3d..83f02b24e35109b1173bbd057b644bc5b5a1528a 100644
--- a/app/views/users/posts.html.erb
+++ b/app/views/users/posts.html.erb
@@ -6,9 +6,19 @@
 
 <h1>Posts by <%= user_link @user %></h1>
 
-<div class="button-list is-gutterless">
-  <%= link_to 'Score', query_url(sort: 'score'), class: 'button is-muted is-outlined ' + (active_search?('score') ? 'is-active' : '') %>
-  <%= link_to 'Age', query_url(sort: 'age'), class: 'button is-muted is-outlined ' + (active_search?('created_at') ? 'is-active' : '') %>
+<% post_count = @posts.count %>
+<div class="has-color-tertiary-500 category-meta">
+  <span title="<%= post_count %> posts">
+    <%= short_number_to_human post_count, precision: 1, significant: false %>
+    <%= 'post'.pluralize(post_count) %> 
+  </span>
+
+  <div class="button-list is-gutterless has-margin-2">
+    <%= link_to 'Score', request.params.merge(sort: 'score'), class: 'button is-muted is-outlined ' + (active_search?('score') ? 'is-active' : ''),
+                role: 'button', 'aria-label': 'Sort by score' %>
+    <%= link_to 'Age', request.params.merge(sort: 'age'), class: 'button is-muted is-outlined ' + (active_search?('created_at') ? 'is-active' : ''),
+                role: 'button', 'aria-label': 'Sort by age' %>
+  </div>
 </div>
 
 <div class="item-list">
@@ -17,4 +27,4 @@
   <% end %>
 </div>
 
-<%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
\ No newline at end of file
+<%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
diff --git a/app/views/users/preferences.html.erb b/app/views/users/preferences.html.erb
index 6d9825d4109777ed44e8ecc214d7a98452418c73..e02038ffd82aa83e47fe7ddacd03a8dcf4f6576f 100644
--- a/app/views/users/preferences.html.erb
+++ b/app/views/users/preferences.html.erb
@@ -2,7 +2,7 @@
 
 <h1>Preferences</h1>
 <p>
-  Manage your user preferences here. Changes are automatically saved once you move away from the input field.
+  Manage your user preferences here. Changes are automatically saved.
 </p>
 
 <p><%= link_to 'Manage Email Subscriptions', subscriptions_path %></p>
diff --git a/app/views/users/qr_login_code.html.erb b/app/views/users/qr_login_code.html.erb
index 9a02d5a896ac8846bac4ca6b0c6c70086cbeb428..3ad98fd75291e939aac04a044a69fa7502d64dee 100644
--- a/app/views/users/qr_login_code.html.erb
+++ b/app/views/users/qr_login_code.html.erb
@@ -4,8 +4,20 @@
   follow the URL to log in there.
 </p>
 
-<div class="has-text-align-center">
-  <svg height="<%= @qr_code.qrcode.module_count * 4 %>" width="<%= @qr_code.qrcode.module_count * 4 %>">
-    <%= raw(@qr_code.as_svg(standalone: false, module_size: 4)) %>
-  </svg>
-</div>
\ No newline at end of file
+<div class="notice is-warning">
+  <p><i class="fas fa-exclamation-triangle"></i> <strong>Caution</strong></p>
+  <p>
+    The QR code below, when scanned, provides immediate access to your <%= t 'platform.network_name' %> account,
+    without asking for your password again. This makes it easier to sign in on your phone, but make sure nobody's
+    looking over your shoulder! Take extra care in public places.
+  </p>
+</div>
+
+<details>
+  <summary>Show QR code</summary>
+  <div class="has-text-align-center">
+    <svg height="<%= @qr_code.qrcode.module_count * 4 %>" width="<%= @qr_code.qrcode.module_count * 4 %>">
+      <%= raw(@qr_code.as_svg(standalone: false, module_size: 4)) %>
+    </svg>
+  </div>
+</details>
diff --git a/app/views/users/sessions/verify_2fa.html.erb b/app/views/users/sessions/verify_2fa.html.erb
index 999ec617acb00f80af01303e7687207a68ee701c..88deb61f2f46c22003944fe2192c1495e9c31921 100644
--- a/app/views/users/sessions/verify_2fa.html.erb
+++ b/app/views/users/sessions/verify_2fa.html.erb
@@ -1,4 +1,5 @@
 <h1>Two-factor authentication</h1>
+
 <p>
   Your account has two-factor authentication enabled. Enter a code from your authenticator app here.
 </p>
@@ -8,7 +9,7 @@
 
   <div class="form-group">
     <%= label_tag 'code', 'Code', class: 'form-element' %>
-    <%= number_field_tag 'code', '', class: 'form-element', autocomplete: 'one-time-code' %>
+    <%= text_field_tag 'code', '', class: 'form-element', autocomplete: 'one-time-code', autofocus: 'true' %>
   </div>
 
   <div class="actions">
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index 9545ef8c154cece8bcadd498774ed9da4e0874ca..1ce3f9975a0ad04587cf86e7344b13a4f7091bee 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -1,3 +1,5 @@
+<%= render 'tabs', user: @user %>
+
 <% content_for :title, "User #{rtl_safe_username(@user)}" %>
 
 <% if moderator? && deleted_user?(@user) %>
@@ -18,23 +20,44 @@
   </div>
 <% end %>
 
-<%= render 'tabs', user: @user %>
-
 <div class="grid <%= deleted_user?(@user) ? 'deleted-content' : '' %>">
   <div class="grid--cell is-9-lg is-12">
-    <div class="h-p-6 h-p-t-2">
+    <div class="h-p-0 h-p-t-0">
       <div class="profile-text">
-      <p>
-        <% if @user.website.present? %>
-          <span class="h-m-r-4">
-            <i class="fas fa-link"></i> <%= link_to @user.website_domain, @user.website, rel: 'nofollow' %>
-          </span>
-        <% end %>
-        <% if @user.twitter.present? %>
-          <span class="h-m-r-4">
-            <i class="fab fa-twitter"></i> <%= link_to @user.twitter, "https://twitter.com/#{@user.twitter}" %>
-          </span>
+
+      <% effective_profile = raw(sanitize(@user.profile&.strip || '', scrubber: scrubber)) %>
+      <% if effective_profile.blank? %>
+        <p class="is-lead">A quiet enigma. We don't know anything about <span dir="ltr"><%= rtl_safe_username(@user) %></span> yet.</p>
+      <% elsif !user_signed_in? && !@user.community_user.privilege?('unrestricted') %>
+        <%= sanitize(effective_profile, attributes: %w()) %>
+      <% else %>
+        <%= effective_profile %>
+      <% end %>
+      </div>
+
+      <% unless !user_signed_in? && !@user.community_user.privilege?('unrestricted') %>
+        <% if @user.valid_websites_for.size.positive? %>
+        <div>
+          <p><strong>Extra fields</strong></p>
+          <table class="table is-with-hover">
+            <% @user.valid_websites_for.each do |w| %>
+            <tr>
+              <td><%= w.label %></td>
+              <td>
+              <% if w.url[0,4] == 'http' %>
+                <%= link_to w.url, w.url, rel: 'nofollow' %>
+              <% else %>
+              <%= w.url %>
+              <% end %>
+              </td>
+            </tr>
+            <% end %>
+          </table>
+        </div>
         <% end %>
+      <% end %>
+     
+      <p>
         <% if @user.discord.present? %>
           <span class="h-m-r-4">
             <i class="fab fa-discord h-m-r-1"></i> <%= @user.discord %>
@@ -42,13 +65,6 @@
         <% end %>
       </p>
 
-      <% if @user.profile.nil? || @user.profile.blank? %>
-        <p class="is-lead">A quiet enigma. We don't know anything about <span dir="ltr"><%= rtl_safe_username(@user) %></span> yet.</p>
-      <% else %>
-        <%= raw(sanitize(@user.profile, scrubber: scrubber)) %>
-      <% end %>
-      </div>
-
       <div class="button-list h-p-2">
         <% if user_signed_in? %>
           <%= link_to new_subscription_path(type: 'user', qualifier: @user.id, return_to: request.path), class: "button is-outlined is-small" do %>
@@ -56,14 +72,18 @@
           <% end %>
         <% end %>
         <% if current_user&.is_moderator %>
-          <a href="<%= mod_user_path(@user) %>" class="button is-danger is-outlined is-small" data-drop="#mod-tools-drop"><i class="fas fa-shield-alt"></i> Moderator Tools</a>
+          <a href="<%= mod_user_path(@user) %>" class="button is-danger is-outlined is-small" data-drop="#mod-tools-drop"><i class="fas fa-shield-alt"></i> Moderator Tools <% if @user.community_user.mod_warnings&.size.positive? %> (<%= pluralize(@user.community_user.mod_warnings.count, 'message') %>) <% end %></a> 
           <div class="droppanel" id="mod-tools-drop">
             <div class="droppanel--header">quick actions</div>
             <div class="droppanel--menu">
               <a href="/users/<%= @user.id %>/mod/activity-log">full activity log</a>
               <a href="/users/<%= @user.id %>/mod/annotations">annotations on user</a>
               <a href="/users/<%= @user.id %>/mod/privileges">privileges</a>
-              <a href="/warning/log/<%= @user.id %>">warnings and suspensions sent to user <% if @user.community_user.suspended? %><em>(includes lifting the suspension)</em><% end %></a>
+              <a href="/warning/log/<%= @user.id %>">warnings and suspensions sent to user
+		<% if @user.community_user.suspended? %><em>(includes lifting the suspension)</em>
+		<% elsif @user.community_user.mod_warnings&.size.positive? %>
+		(latest <%= time_ago_in_words(@user.community_user.latest_warning) %> ago)
+		<% end %></a>
               <a href="/warning/new/<%= @user.id %>">warn or suspend user</a>
             </div>
             <div class="h-m-t-6">
@@ -71,14 +91,21 @@
             </div>
           </div>
         <% end %>
-        <% if current_user&.id == @user.id %>
+        <% if current_user&.same_as?(@user) %>
           <%= link_to qr_login_code_path, class: 'button is-outlined is-small' do %>
             <i class="fas fa-mobile-alt"></i> Mobile Sign In
           <% end %>
         <% end %>
       </div>
 
-      <h2 class="user-profile-heading">Posts</h2>
+      <div class="user-profile-heading-container">
+        <h2 class="user-profile-heading">Posts</h2>
+        <% if @posts.size > 0 %>
+          <%= link_to user_posts_path(@user), class: "button is-muted", 'aria-label': "View all posts by #{rtl_safe_username(@user)}" do %>
+            See all <%= @total_post_count %> &raquo;
+          <% end %>
+        <% end %>
+      </div>
       <% if @posts.size == 0 %>
         <p><span dir="ltr"><%= rtl_safe_username(@user) %></span> hasn't posted anything yet.</p>
       <% else %>
@@ -87,8 +114,8 @@
             <%= render 'posts/type_agnostic', post: a, show_type_tag: true, show_category_tag: true %>
           <% end %>
         </div>
-        <%= link_to user_posts_path(@user), class: "button is-muted" do %>
-          See all &raquo;
+        <%= link_to user_posts_path(@user), class: "button is-muted", 'aria-label': "View all posts by #{rtl_safe_username(@user)}" do %>
+          See all <%= @total_post_count %> &raquo;
         <% end %>
       <% end %>
     </div>
@@ -137,12 +164,21 @@
         <td><%= @user.metric 'E' %></td>
       </tr>
     </table>
+    
+    <% if current_user&.id == @user.id || current_user&.is_moderator %>
+    <table class="table is-full-width">
+      <tr>
+        <td>User since <%= @user.created_at %></td>
+      </tr>
+    </table>
+    <% end %>
 
     <% unless @abilities.empty? %>
       <h2>Earned Abilities</h2>
 
       <div class="widget">
         <% @abilities.each do |a| %>
+        <% if @user.privilege?(a.internal_id) %>
           <div class="widget--body" title="<%= a.summary %>">
             <i class="fa-fw fas fa-<%= a.icon %>"></i>
             <a href="<%= ability_url(a.internal_id, for: @user.id) %>">
@@ -150,13 +186,14 @@
             </a>
           </div>
         <% end %>
+        <% end %>
         <div class="widget--footer">
           <% if current_user&.id == @user.id %>
-           <%= link_to abilities_path, class: 'has-font-weight-bold' do %>
+           <%= link_to abilities_path, class: 'has-font-weight-bold', 'aria-label': 'View your abilities' do %>
              Abilities &raquo;
            <% end %>
           <% else %>
-           <%= link_to abilities_path(for: @user.id), class: 'has-font-weight-bold' do %>
+           <%= link_to abilities_path(for: @user.id), class: 'has-font-weight-bold', 'aria-label': "View abilities of #{rtl_safe_username(@user)}" do %>
              Abilities &raquo;
            <% end %>
           <% end %>
@@ -259,7 +296,8 @@
         <td colspan="2">Count</td>
         <td>
           <% if current_user&.id == @user.id || moderator? %>
-            <%= link_to @user.flags.count, flag_history_path(@user.id), class: 'is-muted' %>
+            <%= link_to @user.flags.count, flag_history_path(@user.id), class: 'is-muted',
+                        'aria-label': "View flag history for #{@user.flags.count} flags" %>
           <% else %>
             <%= @user.flags.count %>
           <% end %>
diff --git a/app/views/users/vote_summary.html.erb b/app/views/users/vote_summary.html.erb
index e6115fa7961e561e8eab285074ef56525164bc60..d1cf7dcaa616baea9c4419a60499a877c5d89166 100644
--- a/app/views/users/vote_summary.html.erb
+++ b/app/views/users/vote_summary.html.erb
@@ -2,12 +2,19 @@
 
 <h1>Vote summary for <%= user_link @user %></h1>
 
-<p class="is-lead">A daily summary of votes you have received for your posts.</p>
+<p class="is-lead">A daily summary of votes received for posts.</p>
 
-<% @votes.each do |day, vote_list| %>
+<% @votes.each do |day, vote_list, net_votes| %>
 <details class="user-vote-summary" <%= 'open' unless day < SiteSetting['VoteSummaryAutoExpandLastNrOfDays'].days.ago%>>
 <summary>
-<h2><%= day.strftime('%b %e, %Y') %></h2>
+<h2><%= day.strftime('%b %e, %Y') %>:
+<% if net_votes > 0 %>
+  <span class="has-color-green-800 has-font-weight-bold">+<%= net_votes %></span>
+<% elsif net_votes < 0 %>
+  <span class="has-color-red-800 has-font-weight-bold"><%= net_votes %></span>
+<% else %>
+  <span class="has-color-tertiary-600">0</span>
+<% end %></h2>
 </summary>
 <div class="item-list">
     <% vote_list.each do |post, vote_data| %>
@@ -33,15 +40,21 @@
         </div>
         <div class="item-list--text-value is-primary grid">
             <div class="grid grid--cell is-12">
-                <div class="grid--cell is-flexible">
-                    <%= link_to generic_share_link(post) do %>
-                        <%= post.post_type.is_top_level ? post.title : post.parent.title %>
-                    <% end %>
-                </div>
-                <div class="grid--cell">
-                    <span class="badge is-tag is-muted is-filled"><%= post.post_type.name %></span>
-                    <a href="<%= category_path(post.category) %>" class="badge is-tag is-muted"><%= post.category.name %></a>
-                </div>
+                <% if post.present? %>
+                    <div class="grid--cell is-flexible">
+                            <%= link_to generic_share_link(post) do %>
+                                <%= post.post_type.is_top_level ? post.title : post.parent.title %>
+                            <% end %>
+                    </div>
+                    <div class="grid--cell">
+                        <span class="badge is-tag is-muted is-filled"><%= post.post_type.name %></span>
+                        <a href="<%= category_path(post.category) %>" class="badge is-tag is-muted"><%= post.category.name %></a>
+                    </div>
+                <% else %>
+                    <div class="grid--cell">
+                        <%= I18n.t('votes.summary.post_missing') %>
+                    </div>
+                <% end %>
             </div>
         </div>
     </div>
diff --git a/config/application.rb b/config/application.rb
index e5c0a400456e88b8e230f8430e880e50a73f7a14..39ebcb6800c92d11265762a22a588e42ad359d85 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -39,5 +39,10 @@ module Qpixel
       Devise::Mailer.helper :users
       Devise::Mailer.layout 'devise_mailer'
     end
+
+    console do
+      require 'console_extension'
+      include ConsoleExtension
+    end
   end
 end
diff --git a/config/attribute-map.yml b/config/attribute-map.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1f3bc4eea22adc13374e448e6d192943aa8625cc
--- /dev/null
+++ b/config/attribute-map.yml
@@ -0,0 +1,18 @@
+# Add your SAML attribute mapping here.
+#
+# Required:
+#   '<email attribute>': 'saml_init_email'
+#   '<uid attribute>': 'saml_init_identifier'
+#   '<full name attribute>': 'username' (user cannot change it) OR 'saml_init_username_no_update' (only set on first login, user can change)
+#
+# If email is the unique identifier, map the email attribute to 'saml_init_email_and_identifier' instead of the above.
+# In that case you also need to update devise.rb and set `config.saml_default_user_key = :'saml_init_email_and_identifier'`.
+#
+'uid': 'saml_init_identifier'
+'urn:mace:dir:attribute-def:uid': 'saml_init_identifier'
+'mail': 'saml_init_email'
+'urn:mace:dir:attribute-def:mail': 'saml_init_email'
+'email': 'saml_init_email'
+'urn:mace:dir:attribute-def:email': 'saml_init_email'
+'displayName': 'saml_init_username_no_update'
+'urn:mace:dir:attribute-def:displayName': 'saml_init_username_no_update'
diff --git a/config/config/preferences.yml b/config/config/preferences.yml
index 36be0760ac0f11a14ff96504e1c22f091ac8fbb0..5d72b1204b6bebdde2d1b8c2ad78a3a188c745ce 100644
--- a/config/config/preferences.yml
+++ b/config/config/preferences.yml
@@ -10,13 +10,17 @@
 #     - if
 #     - type is choice
 #   default: string default value | ~
-#   community: true | false  # optional, default false (global)
+##  Either community, global or category should be set to true, all default to false
+#   community: true | false
+#   global: true | false
+#   category: true | false
 
 keyboard_tools:
   type: boolean
   description: >
     Enable keyboard shortcuts. Press ? for a list of shortcuts.
   default: 'true'
+  global: true
 
 autosave:
   type: choice
@@ -67,9 +71,16 @@ auto_follow_comment_threads:
   description: >
     Automatically follow any comment thread you participate in.
   default: 'true'
+  global: true
 
 sticky_header:
   type: boolean
   description: >
     Make the top navigation bar sticky.
-  default: false
\ No newline at end of file
+  default: 'false'
+  global: true
+
+default_filter_name:
+  type: ~
+  default: none
+  category: true
\ No newline at end of file
diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc
index 8fe95183b851389459dd8da0a9b2a19c25dd55a7..fc62796fcc8e63c53d74510fe7b843992bc002fd 100644
--- a/config/credentials.yml.enc
+++ b/config/credentials.yml.enc
@@ -1 +1 @@
-7h9/PUnrx1KYHkSB0ye+1GWX4RHzJoc7XbutJDscZv6hISSAO/wjQBTvTGXEJ2yoJ3nWeJw2ePHmEy6Rexw2ycLvglexAJ5PAdO3jdh2d43k1+zUd50Mntz+vuUxCiRJ1lYogKZ0/iyn7i2cf1Xy1ZW05lNlgluzVo8dHvd7gH9A2Xsdd2kouKp2MvU7Kxxd4vnNor7PF53MhfxDOsEgQfmrcBU4fRbQQCTDx7SOXIiTLyvA3EgC7i+ECagetwSKyrvvUuYXyFfsgtXZLzn3w5VtzWBGULVVKy0uMvh3RlPkdzgrDW+sGQtHCi7YwM5CJPz6wah9ypjDnhlQXbcMg9qjcnatMF6YYDg8Jf4NkO0gSHSpzBZweTydb1kWWql5m40bqtrOM6yxkyBeGA2jQRfQ+zSsltOxwGa6ZeDfKD76z+5fFGtl3apIPG91KkFpVZrm8LOJdsKV9P/JFFzXTAMyIRkBHAiacwY/qVFPxzI4exEJUI0R3H2RFgD6tADJOSHAcVDUbkxt56ARUk0DpKq/7/azLdM+1NOwmITO/Nn6d1pjB7/rKjHEjSCu7hAtvXL+Ou9adKDRdxAnM+tOCwc5olQcPzepeiVNuO6lBqhSVE/huu8hQVemBlNIjWhqC1TjSN/dvgUdve6rap/d3Y66T5MEmKFsPzV/iLVkEKZQ7/lHRgZMidOHoemg0FWbShhdDjZWFR8Q2K9d7vhPuZj7DSW0inTgCMayHf/ULR8QGRxCySusCK9rU3BsxKmWHiX+6F0EN0CFQRGEXzIKIi6U7RNh86b8apskPFFgtPUWsCufP1Z1NWnxJU/8hb9+ZhEYbs3z54+ssR9jw+yHvEFg63R6THGwcF/kXhXomRAjNYt/bJV2aAuC4w39YMQakctrgWYcA8PuBXc8tDpBZjA8+yHcxDTOUb0veaZnLNfj0+D54Q6zwO6iV+DdTeOL8JWKh52erhPyh8u6mYRS88CP9R1Ep/LqbtG1om4nPmAsVfuMBbyih9XJxvGwknZEmgUo8w+pGhff2JXCsACnKq66cy6VKWQqiUDTZKo+hSXEc/dRqSTOSTq26ZN5ctbbXE57WNydvQ==--PEsrFqN16qSIVkzT--nvIHvNPjy9ZEHA3g3EuNjg==
\ No newline at end of file
+SA7h7Xm7xF3AEvje/xZiPMzem0wh2CysuvvB+iM6R0Epkg+z+vZG2oxI/9tVzDGELWtwoNDPeqNa0bUbGjo6gt7xyEpmQbivEVKnwcbVK+1bxPHKke+hveVEUhmY/axFIIpty+VTnZVnrJkZ35/rW9egcRr5O2HikuAuBz8KrYLvB2w3h8EdmcIbbfjMvKWlUVvc8D9t3v+k56B1CbTghTmGeG0NLijWAA+U+pDmErPOR9JUAVY/nbF2/T8aQ5Szameuoj88Pk5P6alFDHwlWUSHhuEY5Z7A5LKM1NtzlTGc+CAcTVzKvx6DCg8WUJugy3uS7Bpp6uNj9TvJoZzrb0i5G1nDmIl7tK2GCNclp3JFEklrUJIrF4asRuDQUzdvuPeTEXNyi2cc5d6hSBG+MwEvG90P6n0td5+gv+rr1FCKuzP5ftyxqPsnvZuBKRxNSw0+VTTXhTO73jcwttHYrD9Jwc9tVbCVqegwsEO0dB0sNL6M89rudDMbpPnz7rJXr6lXD4Az3qJ/0N3ubYDwiuGOk7UHDntm4Id4BFDm5qeLeOUg1n2PDhsQUWh2Lfnk7ADvjQMinfXhdAQkYVim9sDtNO/Grn9xSXfCn3vs1xOdTtKLb23+EIxO2STtkHTsJG5XvxC2jmzL5/zQx/vO/zepHom7POdso4Ygoqw9oEttm/KPG85lcX0edXv/l1i5JBMMbzaQgd1PL4uWwrv+3LoSq+vQORijR50OiLdlMZ5IFn+QagJEdeVtUiCbYA3AhUK/FcH3L5QtSGNObEUrUJ4fVuWP6X8E34vd+DoY++D6PtG89SFIGBRmQ23cT111uIw3p2A9HP4N9B/uNKwxAnr4S1he6EkoA5CtDE0NZufy25s0IVf//FDWXS8FDg3ZhtOUeMWB0dew9VeCCWwr8RrLu4jP46IvVqfFeiVWf7gJcenEJ0QuqPlBeukSpgNxckDjwijRz5obzeS9ZAWYgCZg2kg/6CmuIM2VjkWMJ13uKYkFgpheoNsk1jZwH4+0fdm+Zc+fE4KQFcSkkazea/qEanN2/tDo6pRowSlRpi/nWJqHxcu87QMm7cBq5/E9DNjwyKOPmgr7c2NzDrlPYMRgzdcauPz6Y4qfcg9C6lKwJIo18VQhrqwh7wW+nNTov3Shw/yclkVrxnHTQbyH3mOstJsVPpYeYewxOQj/gikvvkx/lUeUnyo2/Ebff2nJCbnLmJ8/7Vwz9c/yvg==--d1HPd+AnhFU1woqD--z2ikkRr6d5WTzC7X5xOVPA==
\ No newline at end of file
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 3586b8d5134d4a77bb0f3c2d3726bd809e9e480a..f6fa52367be15d0883e854f127feb676e468bfb7 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -34,6 +34,9 @@ Rails.application.configure do
   # Store uploaded files on the local file system (see config/storage.yml for options).
   config.active_storage.service = :local
 
+  # Allow ngrok connections to dev server
+  config.hosts << /[a-z0-9\-.]+\.ngrok-free\.app/
+
   # Don't care if the mailer can't send.
   config.action_mailer.raise_delivery_errors = false
   config.action_mailer.delivery_method = :ses
@@ -77,12 +80,15 @@ Rails.application.configure do
   config.i18n.raise_on_missing_translations = true
 
   config.action_mailer.delivery_method = :letter_opener_web
-  config.action_mailer.default_url_options = { host: 'meta.codidact.com', protocol: 'https' }
+
+  config.action_mailer.default_url_options = { 
+    host: 'meta.codidact.com', protocol: ENV['MAILER_PROTOCOL'] || 'https'
+  }
 
   # Ensure docker ip added to allowed, given that we are in container
   if File.file?('/.dockerenv') == true
     host_ip = `/sbin/ip route|awk '/default/ { print $3 }'`.strip
-    config.web_console.allowed_ips << host_ip
+    config.web_console.permissions = host_ip
 
     # ==> Configuration for :confirmable
     # A period that the user is allowed to access the website even without
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 7a7b6d2d4a42de6a8afcc240e99c9e218c257c81..8884d9834a0ccfed27d538a22cb28d8d3dfbaaa0 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -93,9 +93,14 @@ Rails.application.configure do
   # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
 
   config.action_mailer.delivery_method = :ses
-  config.action_mailer.default_url_options = { host: 'meta.codidact.com', protocol: 'https' }
+  config.action_mailer.default_url_options = { 
+    host: 'meta.codidact.com',
+    protocol: ENV['MAILER_PROTOCOL'] || 'https'
+  }
   config.action_mailer.asset_host = 'https://meta.codidact.com'
 
   # Do not dump schema after migrations.
   config.active_record.dump_schema_after_migration = false
+
+  config.active_job.queue_adapter = :async
 end
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 8bd2cfad8a20dcb3ba63cd1efd3196a7fb39695c..8212caac092de614c6d2fd409ad9ee9bea295245 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -56,7 +56,10 @@ Rails.application.configure do
   # ActionMailer::Base.deliveries array.
   config.action_mailer.delivery_method = :test
 
-  config.action_mailer.default_url_options = { host: 'test.host' }
+  config.action_mailer.default_url_options = { 
+    host: 'test.host',
+    protocol: ENV['MAILER_PROTOCOL'] || 'https'
+  }
 
   # Print deprecation notices to the stderr.
   config.active_support.deprecation = :stderr
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index 2b2af4c0525ddbe9bc004152b68618bc1f65d1d7..9eadc984e403b79d0afd1838b2eebb349f018983 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -270,4 +270,78 @@ Devise.setup do |config|
   # When using OmniAuth, Devise cannot automatically set OmniAuth path,
   # so you need to do it manually. For the users scope, it would be:
   # config.omniauth_path_prefix = '/my_engine/users/auth'
+
+  # Reference https://github.com/apokalipto/devise_saml_authenticatable
+  # ==> Configuration for :saml_authenticatable
+
+  # Add prefix to saml routes
+  config.saml_route_helper_prefix = 'saml'
+
+  # Create user if the user does not exist.
+  config.saml_create_user = true
+
+  # Update the attributes of the user after a successful login. Set this to
+  # false if you don't want to update the users email address from saml when it
+  # is changed.
+  config.saml_update_user = true
+
+  # Set the default user key. The user will be looked up by this key. Make
+  # sure that the (mapped) Authentication Response includes the attribute.
+  #
+  # In the attribute map we register this as saml_init_identifier
+  # (the method to call), so this is also how we have to refer to it here.
+  config.saml_default_user_key = :'saml_init_identifier'
+
+  # Load by sso_profile instead of by email address.
+  config.saml_resource_locator = Proc.new do |model, saml_response, auth_value|
+    # You can use saml_response here to access other attributes than the saml_default_user_key indicated above if need be.
+    SsoProfile.includes(:user).find_by(saml_identifier: auth_value)&.user
+  end
+
+  # Optional. This stores the session index defined by the IDP during login.  If provided it will be used as a salt
+  # for the user's session to facilitate an IDP initiated logout request.
+  config.saml_session_index_key = :session_index
+
+  # You can set this value to use Subject or SAML assertation as info to which email will be compared.
+  # If you don't set it then email will be extracted from SAML assertation attributes.
+  config.saml_use_subject = false
+
+  # You can support multiple IdPs by setting this value to a class that implements a #settings method which takes
+  # an IdP entity id as an argument and returns a hash of idp settings for the corresponding IdP.
+  config.idp_settings_adapter = nil
+
+  # You provide you own method to find the idp_entity_id in a SAML message in the case of multiple IdPs
+  # by setting this to a custom reader class, or use the default.
+  # config.idp_entity_id_reader = DeviseSamlAuthenticatable::DefaultIdpEntityIdReader
+
+  # You can set a handler object that takes the response for a failed SAML request and the strategy,
+  # and implements a #handle method. This method can then redirect the user, return error messages, etc.
+  # config.saml_failed_callback = nil
+
+  # Add your SAML configuration from your IDP here.
+  #
+  # Attributes must be mapped in the attribute-map.yml
+  #
+  # For certificates and keys, you can use
+  #   File.read('path/to/certificate')
+  # instead of providing the certificate/key in a string.
+  #
+  # config.saml_configure do |settings|
+  #   settings.assertion_consumer_service_url     = '<http(s)-site-address-here>/users/saml/auth'
+  #   settings.assertion_consumer_service_binding = 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'
+  #   settings.name_identifier_format             = 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
+  #   settings.security[:want_assertions_signed]  = true
+  #   settings.security[:metadata_signed]         = true
+  #   settings.security[:authn_requests_signed]   = true
+  #   settings.force_authn                        = !Rails.env.production?
+  #   settings.protocol_binding                   = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
+  #   settings.passive                            = false
+  #   settings.issuer                             = '<http(s)-site-address-here>/users/saml/metadata'
+  #   settings.idp_slo_target_url                 = '<single logout service url of IDP>'
+  #   settings.idp_sso_target_url                 = '<single sign on service url of IDP>'
+  #   settings.idp_entity_id                      = '<metadata url of IDP>'
+  #   settings.idp_cert                           = '<certificate of IDP>'
+  #   settings.certificate                        = '<your (self-signed) certificate>'
+  #   settings.private_key                        = '<your key (for your certificate)>'
+  # end
 end
diff --git a/config/initializers/devise_example.rb b/config/initializers/devise_example.rb
index ef47ca5e195da06cd0f44f3f26e7166f4663de3d..f8863061bb2474ff900c563d27cc8490f100d777 100644
--- a/config/initializers/devise_example.rb
+++ b/config/initializers/devise_example.rb
@@ -265,4 +265,75 @@ Devise.setup do |config|
   # When using OmniAuth, Devise cannot automatically set OmniAuth path,
   # so you need to do it manually. For the users scope, it would be:
   # config.omniauth_path_prefix = '/my_engine/users/auth'
+
+  # Reference https://github.com/apokalipto/devise_saml_authenticatable
+  # ==> Configuration for :saml_authenticatable
+
+  # Add prefix to saml routes
+  config.saml_route_helper_prefix = 'saml'
+
+  # Create user if the user does not exist.
+  config.saml_create_user = true
+
+  # Update the attributes of the user after a successful login.
+  config.saml_update_user = true
+
+  # Set the default user key. The user will be looked up by this key. Make
+  # sure that the Authentication Response includes the attribute.
+  #
+  # In the attribute map we register this as saml_init_identifier (the method to call), so this is also how we have to refer to it here.
+  config.saml_default_user_key = :'saml_init_identifier'
+
+  # Load by sso_profile instead of by email address.
+  config.saml_resource_locator = Proc.new do |model, saml_response, auth_value|
+    # You can use saml_response here to access other attributes than the saml_default_user_key indicated above if need be.
+    SsoProfile.includes(:user).find_by(saml_identifier: auth_value)&.user
+  end
+
+  # Optional. This stores the session index defined by the IDP during login.  If provided it will be used as a salt
+  # for the user's session to facilitate an IDP initiated logout request.
+  config.saml_session_index_key = :session_index
+
+  # You can set this value to use Subject or SAML assertation as info to which email will be compared.
+  # If you don't set it then email will be extracted from SAML assertation attributes.
+  config.saml_use_subject = false
+
+  # You can support multiple IdPs by setting this value to a class that implements a #settings method which takes
+  # an IdP entity id as an argument and returns a hash of idp settings for the corresponding IdP.
+  config.idp_settings_adapter = nil
+
+  # You provide you own method to find the idp_entity_id in a SAML message in the case of multiple IdPs
+  # by setting this to a custom reader class, or use the default.
+  # config.idp_entity_id_reader = DeviseSamlAuthenticatable::DefaultIdpEntityIdReader
+
+  # You can set a handler object that takes the response for a failed SAML request and the strategy,
+  # and implements a #handle method. This method can then redirect the user, return error messages, etc.
+  # config.saml_failed_callback = nil
+
+  # Add your SAML configuration from your IDP here.
+  #
+  # Attributes must be mapped in the attribute-map.yml
+  #
+  # For certificates and keys, you can use
+  #   File.read('path/to/certificate')
+  # instead of providing the certificate/key in a string.
+  #
+  # config.saml_configure do |settings|
+  #   settings.assertion_consumer_service_url     = '<http(s)-site-address-here>/users/saml/auth'
+  #   settings.assertion_consumer_service_binding = 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'
+  #   settings.name_identifier_format             = 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
+  #   settings.security[:want_assertions_signed]  = true
+  #   settings.security[:metadata_signed]         = true
+  #   settings.security[:authn_requests_signed]   = true
+  #   settings.force_authn                        = !Rails.env.production?
+  #   settings.protocol_binding                   = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
+  #   settings.passive                            = false
+  #   settings.issuer                             = '<http(s)-site-address-here>/users/saml/metadata'
+  #   settings.idp_slo_target_url                 = '<single logout service url of IDP>'
+  #   settings.idp_sso_target_url                 = '<single sign on service url of IDP>'
+  #   settings.idp_entity_id                      = '<metadata url of IDP>'
+  #   settings.idp_cert                           = '<certificate of IDP>'
+  #   settings.certificate                        = '<your (self-signed) certificate>'
+  #   settings.private_key                        = '<your key (for your certificate)>'
+  # end
 end
diff --git a/config/initializers/zz_cache_setup.rb b/config/initializers/zz_cache_setup.rb
index d7a9fe5f0e2429eae562ceba5bf04494d657f869..ae1e14a404a90107425bf15c0d3ab9800192cbcd 100644
--- a/config/initializers/zz_cache_setup.rb
+++ b/config/initializers/zz_cache_setup.rb
@@ -1,3 +1,5 @@
 Rails.cache.persistent 'current_commit', clear: true do
-  [`git rev-parse HEAD`.strip, `git log -1 --date=iso --pretty=format:%cd`.strip]
+  commit_sha = `git rev-parse HEAD`.strip
+  commit_date = `git log -1 --date=iso-strict --pretty=format:%cd`.strip
+  [commit_sha, commit_date]
 end
diff --git a/config/initializers/zz_codidact_sites.rb b/config/initializers/zz_codidact_sites.rb
index b745b63de8f4d4c3529444aa00df82f851535d3b..ac4511296cb61b36f94edcfbf37d3b31aa73cb67 100644
--- a/config/initializers/zz_codidact_sites.rb
+++ b/config/initializers/zz_codidact_sites.rb
@@ -4,12 +4,18 @@ Rails.cache.persistent 'codidact_sites', clear: true do
   if Rails.env.development? || Rails.env.test?
     []
   else
-    response = Net::HTTP.get_response(URI('https://codidact.com/communities.json'))
+    uri = URI('https://codidact.com/communities.json')
+    req = Net::HTTP::Get.new(uri)
+    req['Authorization'] = "Bearer #{Rails.application.credentials.cf_bot_key}"
+    response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
+      http.request(req)
+    end
+
     if response.code == '200'
       JSON.parse(response.body)
     else
-      Rails.logger.fatal "Couldn't fetch Codidact sites: response code #{response.code}"
-      exit 255
+      Rails.logger.error "Couldn't fetch Codidact sites: response code #{response.code}"
+      []
     end
   end
 end
diff --git a/config/locales/strings/en.admin.yml b/config/locales/strings/en.admin.yml
index 08115e4dd03aa9bc8892f60de3941082beac0515..ac389d08a8ef79f23ae23d21f6d699836f6c366d 100644
--- a/config/locales/strings/en.admin.yml
+++ b/config/locales/strings/en.admin.yml
@@ -11,6 +11,10 @@ en:
       This tool allows you to send to the moderators' email distribution list, which will reach any current moderator
       who is subscribed to it. Use sparingly and non-spammily. Your email will be sent in both HTML (formatted)
       and plain text (unformatted) forms, so format in a way that will be legible when Markdown is removed.
+    email_all_blurb: >
+      This tool sends email to ALL registered users with a valid email address. Use very very rarely, usually only for
+      organisation-wide changes like privacy policy or TOS changes. Format in a way that will be legible when Markdown
+      is removed.
     error_search_uuid: 'Search for an error UUID'
     privileges_blurb: >
       Here you can define the reputation required to gain each available privilege. Click on a value to edit it.
@@ -18,6 +22,7 @@ en:
       g_site_settings: 'Global Site Settings'
       g_tag_sets: 'Global Tag Sets'
       email_moderators: 'Email Moderators'
+      email_all: 'Email All Users'
       error_reports: 'Error Reports'
       site_settings: 'Site Settings'
       tag_sets: 'Tag Sets'
diff --git a/config/locales/strings/en.edits.yml b/config/locales/strings/en.edits.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a34799dd68756c77c74f442b1024190069f35ce2
--- /dev/null
+++ b/config/locales/strings/en.edits.yml
@@ -0,0 +1,6 @@
+en:
+  edits:
+    # validation error messages
+    max_edit_comment_length:
+      one: Edit comment can't be more than 1 character long.
+      other: Edit comment can't be more than :length characters long.
\ No newline at end of file
diff --git a/config/locales/strings/en.g.yml b/config/locales/strings/en.g.yml
index 53590fa2f32a4013a241e421fccf74693496e52b..1fdf073ccc1e59fb4d4d5e8363d6e3bdcd40b1f8 100644
--- a/config/locales/strings/en.g.yml
+++ b/config/locales/strings/en.g.yml
@@ -22,4 +22,7 @@ en:
     subject: 'subject'
     threshold: 'threshold'
     type: 'type'
-    user: 'user'
\ No newline at end of file
+    user: 'user'
+
+  platform:
+    network_name: 'Codidact network'
diff --git a/config/locales/strings/en.posts.yml b/config/locales/strings/en.posts.yml
index 93fba33ff18e46cb46163bdf941a5e4fc1750ac6..e866d0e8e93519a7cc840f1c99d9f3dc4e9829dd 100644
--- a/config/locales/strings/en.posts.yml
+++ b/config/locales/strings/en.posts.yml
@@ -25,10 +25,12 @@ en:
       Can't delete a deleted post.
     cant_delete_responded: >
       This post cannot be deleted because it has responses.
+    cant_delete_community: >
+      This post cannot be deleted because it is owned by the community (freely editable).
     cant_restore_post: >
       Can't restore this post right now. Try again later.
     cant_restore_undeleted: >
-      Can't restore an undeleted post..
+      Can't restore a post that isn't deleted.
     cant_restore_deleted_by_moderator: >
       You cannot restore this post deleted by a moderator.
     cant_change_category: >
@@ -46,6 +48,10 @@ en:
       Requires at least one of
     edit_comment_label: >
       Edit Comment
+    redact_label: >
+      Redact
+    redact_explanation: >
+      Redact original content by hiding the previous versions from history? Use only for private information such as passwords or personally identifiable information.
     licence_label: >
       License
     unsaved_changes_confirmation: >
@@ -66,3 +72,8 @@ en:
       Responding to:
     no_block_mathjax_title: >
       Title cannot contain block-level MathJax.
+
+    post_closed_guidance: >
+      Your post has been closed and is not accepting new answers. You should read the reason for closure listed below and check for any comments left by others about
+      why your post has been closed and what it needs, then edit your post to improve it to a state where it can be reopened. If you need help, reply to comments to
+      clarify any requests, or join us in chat for more guidance.
diff --git a/config/locales/strings/en.rate_limit.yml b/config/locales/strings/en.rate_limit.yml
index 8510b148e75e1062399f054044a38af85680ff67..e073f705a0f86f5ee8a405e8d475eabc720ce973 100644
--- a/config/locales/strings/en.rate_limit.yml
+++ b/config/locales/strings/en.rate_limit.yml
@@ -1,10 +1,11 @@
-rate_limit:
-  new_user_posts: >
-    You may only post :count :level posts per day. Once you have some well-received posts, your limit will increase.
-  posts: >
-    You may only post :count :level posts per day.
-  new_user_suggested_edits: >
-    You may only suggest :count edits per day. Once you have some well-received contributions, your limit will increase.
-  suggested_edits: >
-    You may only suggest :count edits per day. Once you have enough well-received suggestions, you will earn the ability
-    to edit without review.
+en:
+  rate_limit:
+    new_user_posts: >
+      You may only post :count :level posts per day. Once you have some well-received posts, your limit will increase.
+    posts: >
+      You may only post :count :level posts per day.
+    new_user_suggested_edits: >
+      You may only suggest :count edits per day. Once you have some well-received contributions, your limit will increase.
+    suggested_edits: >
+      You may only suggest :count edits per day. Once you have enough well-received suggestions, you will earn the ability
+      to edit without review.
diff --git a/config/locales/strings/en.search.yml b/config/locales/strings/en.search.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9358256b204f66bb69caaad6ae551ac1ecae53f0
--- /dev/null
+++ b/config/locales/strings/en.search.yml
@@ -0,0 +1,5 @@
+en:
+  search:
+    # used on the users page (not the main search)
+    no_users:
+      No users found.
diff --git a/config/locales/strings/en.votes.yml b/config/locales/strings/en.votes.yml
new file mode 100644
index 0000000000000000000000000000000000000000..485ef2f6f4f199be625f1592e912cdad32d4d95a
--- /dev/null
+++ b/config/locales/strings/en.votes.yml
@@ -0,0 +1,4 @@
+en:
+  votes:
+    summary:
+      post_missing: 'Post not found'
\ No newline at end of file
diff --git a/config/locales/strings/es.posts.yml b/config/locales/strings/es.posts.yml
index ccd7f24203781b386a5631f4f91b1aa36c86c713..d59bb2d56ed962c0763fcac94fd663601bbad28f 100644
--- a/config/locales/strings/es.posts.yml
+++ b/config/locales/strings/es.posts.yml
@@ -46,6 +46,10 @@ es:
       Requiere al menos un/a de
     edit_comment_label: >
       Editar comentario
+    redact_label: >
+      Redactar
+    redact_explanation: >
+      Redactar el contenido original ocultando las versiones anteriores del historial
     licence_label: >
       Licencia
     unsaved_changes_confirmation: >
diff --git a/config/locales/strings/es.rate_limit.yml b/config/locales/strings/es.rate_limit.yml
index a79963a9ec52a2ff601eabe8d6b76159faf2135d..430931763b8608b4409fe040e1d3f658c7375f3c 100644
--- a/config/locales/strings/es.rate_limit.yml
+++ b/config/locales/strings/es.rate_limit.yml
@@ -1,10 +1,11 @@
-rate_limit:
-  new_user_posts: >
-    Usted sólo debería publicar :count :level publicaciones por día. Cuando usted haya publicado varias publicaciones bien recibidas, su límite será incrementado.
-  posts: >
-    Usted sĂłlo deberĂ­a publicar :count :level publicaciones por dĂ­a.
-  new_user_suggested_edits: >
-    Usted sólo debería sugerir :count ediciones por día. Cuando usted haya propuesto varias contribuciones bien recibidas, su límite será incrementado.
-  suggested_edits: >
-    Usted sólo debería sugerir :count ediciones por día. Cuando usted haya propuesto las suficientes sugerencias bien recibidas, usted conseguirá la habilidad
-    de editar sin ser revisado.
+es:
+  rate_limit:
+    new_user_posts: >
+      Usted sólo debería publicar :count :level publicaciones por día. Cuando usted haya publicado varias publicaciones bien recibidas, su límite será incrementado.
+    posts: >
+      Usted sĂłlo deberĂ­a publicar :count :level publicaciones por dĂ­a.
+    new_user_suggested_edits: >
+      Usted sólo debería sugerir :count ediciones por día. Cuando usted haya propuesto varias contribuciones bien recibidas, su límite será incrementado.
+    suggested_edits: >
+      Usted sólo debería sugerir :count ediciones por día. Cuando usted haya propuesto las suficientes sugerencias bien recibidas, usted conseguirá la habilidad
+      de editar sin ser revisado.
diff --git a/config/routes.rb b/config/routes.rb
index 1619878ee6deb23be1a87ae8baa0a443e36fddaf..8b8b6b37bb6ab3a21b7029ff93de215478e17f9d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,8 +1,20 @@
 Rails.application.routes.draw do
-  devise_for :users, controllers: { sessions: 'users/sessions', registrations: 'users/registrations' }
+  # Add normal sign in/sign up, confirmations, registrations, unlocking and password editing routes only if no SSO or mixed sign in.
+  devise_for :users, only: %i[sessions registrations confirmations unlock passwords],
+             controllers: { sessions: 'users/sessions', registrations: 'users/registrations' },
+             constraints: { url: lambda { |_url| SiteSetting['MixedSignIn'] || !SiteSetting['SsoSignIn'] } }
+  # Add SAML routes only when SAML enabled
+  devise_for :users, only: :saml_authenticatable,
+             controllers: { saml_sessions: 'users/saml_sessions' },
+             constraints: { url: lambda { |_url| SiteSetting['SsoSignIn'] } }
+  # Add any other devise routes that may exist that we did not add yet
+  devise_for :users, skip: %i[sessions registrations confirmations unlock passwords saml_authenticatable]
   devise_scope :user do
     get  'users/2fa/login',                to: 'users/sessions#verify_2fa', as: :login_verify_2fa
     post 'users/2fa/login',                to: 'users/sessions#verify_code', as: :login_verify_code
+    get  'users/saml/sign_in_request_from_other/:id', to: 'users/saml_sessions#sign_in_request_from_other', as: :sign_in_request_from_other
+    get  'users/saml/sign_in_return_from_base',       to: 'users/saml_sessions#sign_in_return_from_base', as: :sign_in_return_from_base
+    get  'users/saml/after_sign_in_check',            to: 'users/saml_sessions#after_sign_in_check', as: :after_sign_in_check
   end
 
   root                                     to: 'categories#homepage'
@@ -26,6 +38,8 @@ Rails.application.routes.draw do
 
     get    'mod-email',                    to: 'admin#admin_email', as: :moderator_email
     post   'mod-email',                    to: 'admin#send_admin_email', as: :send_moderator_email
+    get    'email-all',                    to: 'admin#all_email', as: :email_all
+    post   'email-all',                    to: 'admin#send_all_email', as: :send_all_email
 
     get    'audits',                       to: 'admin#audit_log', as: :audit_log
 
@@ -144,8 +158,10 @@ Rails.application.routes.draw do
     get    ':id/:answer',                  to: 'posts#show', as: :answer_post
   end
 
-  get    'policy/:slug',                   to: 'posts#document', as: :policy
-  get    'help/:slug',                     to: 'posts#document', as: :help
+  get    'policy/:slug/history',           to: 'post_history#slug_post', as: :policy_post_history, constraints: { slug: /.*/ }
+  get    'policy/:slug',                   to: 'posts#document', as: :policy, constraints: { slug: /.*/ }
+  get    'help/:slug/history',             to: 'post_history#slug_post', as: :help_post_history, constraints: { slug: /.*/ }
+  get    'help/:slug',                     to: 'posts#document', as: :help, constraints: { slug: /.*/ }
 
   get    'tags',                           to: 'tags#index', as: :tags
 
@@ -159,6 +175,7 @@ Rails.application.routes.draw do
     post 'disable/link-email',             to: 'two_factor#send_disable_email', as: :two_factor_send_disable_email
     get  'disable/link/:token',            to: 'two_factor#disable_link', as: :two_factor_disable_link
     post 'disable/link',                   to: 'two_factor#confirm_disable_link', as: :two_factor_confirm_disable_link
+    post 'backup',                         to: 'two_factor#show_backup_code', as: :two_factor_backup_code
   end
 
   scope  'users' do
@@ -170,17 +187,25 @@ Rails.application.routes.draw do
     get    '/me',                       to: 'users#me', as: :users_me
     get    '/me/preferences',           to: 'users#preferences', as: :user_preferences
     post   '/me/preferences',           to: 'users#set_preference', as: :set_user_preference
+    get    '/me/filters',               to: 'users#filters', as: :user_filters
+    get    '/me/filters/default/',      to: 'users#default_filter', as: :default_filter
+    post   '/me/filters',               to: 'users#set_filter', as: :set_user_filter
+    delete '/me/filters',               to: 'users#delete_filter', as: :delete_user_filter
     get    '/me/notifications',         to: 'notifications#index', as: :notifications
     get    '/edit/profile',             to: 'users#edit_profile', as: :edit_user_profile
     patch  '/edit/profile',             to: 'users#update_profile', as: :update_user_profile
     get    '/me/vote-summary',          to: 'users#my_vote_summary', as: :my_vote_summary
+    get    '/me/network',               to: 'users#my_network', as: :my_network
     get    '/avatar/:letter/:color/:size', to: 'users#specific_avatar', as: :specific_auto_avatar
+    get    '/disconnect-sso',           to: 'users#disconnect_sso', as: :user_disconnect_sso
+    post   '/disconnect-sso',           to: 'users#confirm_disconnect_sso', as: :user_confirm_disconnect_sso
     get    '/:id',                      to: 'users#show', as: :user
     get    '/:id/flags',                to: 'flags#history', as: :flag_history
     get    '/:id/activity',             to: 'users#activity', as: :user_activity
     get    '/:id/mod',                  to: 'users#mod', as: :mod_user
     get    '/:id/posts',                to: 'users#posts', as: :user_posts
     get    '/:id/vote-summary',         to: 'users#vote_summary', as: :vote_summary
+    get    '/:id/network',              to: 'users#network', as: :network
     get    '/:id/mod/privileges',       to: 'users#mod_privileges', as: :user_privileges
     post   '/:id/mod/privileges',       to: 'users#mod_privilege_action', as: :user_privilege_action
     post   '/:id/mod/toggle-role',      to: 'users#role_toggle', as: :toggle_user_role
@@ -237,6 +262,7 @@ Rails.application.routes.draw do
     root                                   to: 'categories#index', as: :categories
     get    'new',                          to: 'categories#new', as: :new_category
     post   'new',                          to: 'categories#create', as: :create_category
+    post   ':id/filters/default',          to: 'categories#default_filter', as: :set_default_filter
     get    ':id',                          to: 'categories#show', as: :category
     get    ':id/edit',                     to: 'categories#edit', as: :edit_category
     post   ':id/edit',                     to: 'categories#update', as: :update_category
@@ -326,6 +352,10 @@ Rails.application.routes.draw do
     end
   end
 
+  scope 'emails' do
+    post   'log', to: 'email_logs#log', as: :create_email_log
+  end
+
   get   '403',                             to: 'errors#forbidden'
   get   '404',                             to: 'errors#not_found'
   get   '409',                             to: 'errors#conflict'
@@ -339,4 +369,8 @@ Rails.application.routes.draw do
   scope 'network' do
     root                                   to: 'fake_community#communities', as: :fc_communities
   end
+
+  # Communities can have custom js or css defined (placed in public/assets/community).
+  # If these are not defined for a community, respond with 204 (ok but empty)
+  get '/assets/community/*path', to: ->(env) { [204, {}, ['']] }
 end
diff --git a/config/schedule.rb b/config/schedule.rb
index a9dd5e5aa61da74bcd9dc33cd10550a14ada587c..1b1c9c343a695e45dbc65fe383df8fc075f7decf 100644
--- a/config/schedule.rb
+++ b/config/schedule.rb
@@ -6,6 +6,22 @@ every 1.day, at: '02:05' do
   runner 'scripts/mail_uncaptured_donations.rb'
 end
 
+every 1.day, at: '02:10' do
+  runner 'scripts/prune_email_logs.rb'
+end
+
+every 1.day, at: '02:15' do
+  runner 'scripts/run_spam_cleanup.rb'
+end
+
+every 1.day, at: '02:20' do
+  runner 'scripts/cleanup_drafts.rb'
+end
+
+every 1.day, at: '02:25' do
+  runner 'scripts/cleanup_votes.rb'
+end
+
 every 6.hours do
   runner 'scripts/recalc_abilities.rb'
 end
diff --git a/config/storage.docker.yml b/config/storage.docker.yml
new file mode 100644
index 0000000000000000000000000000000000000000..88649a3fb37afc606d8d28be062a2d8e600fb2f2
--- /dev/null
+++ b/config/storage.docker.yml
@@ -0,0 +1,14 @@
+test:
+  service: Disk
+  root: <%= Rails.root.join('tmp/storage') %>
+
+local:
+  service: Disk
+  root: <%= Rails.root.join('storage') %>
+
+s3:
+  service: S3
+  access_key_id: ""
+  secret_access_key: ""
+  region: us-east-1
+  bucket: ""
diff --git a/config/storage.sample.yml b/config/storage.sample.yml
index 88649a3fb37afc606d8d28be062a2d8e600fb2f2..8d0ce74389e1b28e39396c26ef6cb4a2bb19bc6f 100644
--- a/config/storage.sample.yml
+++ b/config/storage.sample.yml
@@ -1,3 +1,8 @@
+# To use external files (such as image upload), you need a storage.yml file.
+# If you are using only the local disk (such as in a development environment),
+# you can just copy this file. If you are using an S3 bucket, copy this
+# file and then edit the settings.
+
 test:
   service: Disk
   root: <%= Rails.root.join('tmp/storage') %>
diff --git a/db/migrate/20200813132829_enforce_concurrence_of_is_moderator_and_mod_ability.rb b/db/migrate/20200813132829_enforce_concurrence_of_is_moderator_and_mod_ability.rb
index d84fdcc334d2dec68e775f9712d011e227bf9c9a..606f724a910a6d39a787927fd3e15d75f5e2c678 100644
--- a/db/migrate/20200813132829_enforce_concurrence_of_is_moderator_and_mod_ability.rb
+++ b/db/migrate/20200813132829_enforce_concurrence_of_is_moderator_and_mod_ability.rb
@@ -2,7 +2,7 @@ class EnforceConcurrenceOfIsModeratorAndModAbility < ActiveRecord::Migration[5.2
   def up
     CommunityUser.unscoped.where(is_moderator: true).all.map do |cu|
       RequestContext.community = cu.community
-      cu.grant_privilege  'mod'
+      cu.grant_privilege! 'mod'
     end
   end
 
diff --git a/db/migrate/20220811131155_create_sso_profile.rb b/db/migrate/20220811131155_create_sso_profile.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1ef086211c30db1a2678a9a3c21df6c8ee3896da
--- /dev/null
+++ b/db/migrate/20220811131155_create_sso_profile.rb
@@ -0,0 +1,8 @@
+class CreateSsoProfile < ActiveRecord::Migration[5.2]
+  def change
+    create_table :sso_profiles do |t|
+      t.string :saml_identifier, null: false
+      t.references :user, null: false, foreign_key: true
+    end
+  end
+end
\ No newline at end of file
diff --git a/db/migrate/20220915181608_create_tag_synonyms.rb b/db/migrate/20220915181608_create_tag_synonyms.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2bf629601682b543202522438ab2d6e840b6e37f
--- /dev/null
+++ b/db/migrate/20220915181608_create_tag_synonyms.rb
@@ -0,0 +1,9 @@
+class CreateTagSynonyms < ActiveRecord::Migration[7.0]
+  def change
+    create_table :tag_synonyms do |t|
+      t.belongs_to :tag, foreign_key: true
+      t.string :name, null: false
+      t.timestamps
+    end
+  end
+end
diff --git a/db/migrate/20220916075849_create_filters.rb b/db/migrate/20220916075849_create_filters.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ffb41db6afe1fb84a7aaf2b861ca1d2d77886dd4
--- /dev/null
+++ b/db/migrate/20220916075849_create_filters.rb
@@ -0,0 +1,17 @@
+class CreateFilters < ActiveRecord::Migration[7.0]
+  def change
+    create_table :filters do |t|
+      t.references :user, null: false, foreign_key: true
+      t.string :name, null: false
+      t.float :min_score
+      t.float :max_score
+      t.integer :min_answers
+      t.integer :max_answers
+      t.string :status
+      t.string :include_tags
+      t.string :exclude_tags
+
+      t.timestamps
+    end
+  end
+end
diff --git a/db/migrate/20221002043021_create_category_filter_defaults.rb b/db/migrate/20221002043021_create_category_filter_defaults.rb
new file mode 100644
index 0000000000000000000000000000000000000000..81e5dfa178f680e2211d023d9915b20edd48dbfc
--- /dev/null
+++ b/db/migrate/20221002043021_create_category_filter_defaults.rb
@@ -0,0 +1,9 @@
+class CreateCategoryFilterDefaults < ActiveRecord::Migration[7.0]
+  def change
+    create_table :category_filter_defaults do |t|
+      t.references :user, null: false, foreign_key: true
+      t.references :filter, null: false, foreign_key: true
+      t.references :category, null: false, foreign_key: true
+    end
+  end
+end
diff --git a/db/migrate/20230613205236_add_min_title_length_to_categories.rb b/db/migrate/20230613205236_add_min_title_length_to_categories.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9c5b752feb1e3dc9dbc1569b091fe06e590b3757
--- /dev/null
+++ b/db/migrate/20230613205236_add_min_title_length_to_categories.rb
@@ -0,0 +1,6 @@
+class AddMinTitleLengthToCategories < ActiveRecord::Migration[7.0]
+  def change
+    add_column :categories, :min_title_length, :integer, null: false, default: 15
+    add_column :categories, :min_body_length, :integer, null: false, default: 30
+  end
+end
diff --git a/db/migrate/20230627035349_add_default_filter_to_category.rb b/db/migrate/20230627035349_add_default_filter_to_category.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b6f49a4b499c109f959c2b625cc173399206aecd
--- /dev/null
+++ b/db/migrate/20230627035349_add_default_filter_to_category.rb
@@ -0,0 +1,5 @@
+class AddDefaultFilterToCategory < ActiveRecord::Migration[7.0]
+  def change
+    add_reference :categories, :default_filter, foreign_key: { to_table: :filters }, null: true
+  end
+end
diff --git a/db/migrate/20230726143348_add_hidden_to_post_history.rb b/db/migrate/20230726143348_add_hidden_to_post_history.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c1ba982023a9070cc89eac834cc5dc0de211fb56
--- /dev/null
+++ b/db/migrate/20230726143348_add_hidden_to_post_history.rb
@@ -0,0 +1,5 @@
+class AddHiddenToPostHistory < ActiveRecord::Migration[7.0]
+  def change
+    add_column :post_histories, :hidden, :boolean, null: false, default: false
+  end
+end
diff --git a/db/migrate/20230803191600_add_backup_2fa_code_to_users.rb b/db/migrate/20230803191600_add_backup_2fa_code_to_users.rb
new file mode 100644
index 0000000000000000000000000000000000000000..781ae8712ec4e3a69facc49cb49da622299392d1
--- /dev/null
+++ b/db/migrate/20230803191600_add_backup_2fa_code_to_users.rb
@@ -0,0 +1,5 @@
+class AddBackup2faCodeToUsers < ActiveRecord::Migration[7.0]
+  def change
+    add_column :users, :backup_2fa_code, :string
+  end
+end
diff --git a/db/migrate/20230817213150_rename_site_setting_category_email_subscriptions.rb b/db/migrate/20230817213150_rename_site_setting_category_email_subscriptions.rb
new file mode 100644
index 0000000000000000000000000000000000000000..60382394c51025d72a58a5e7d2f66c3eafb11b57
--- /dev/null
+++ b/db/migrate/20230817213150_rename_site_setting_category_email_subscriptions.rb
@@ -0,0 +1,5 @@
+class RenameSiteSettingCategoryEmailSubscriptions < ActiveRecord::Migration[7.0]
+  def change
+    SiteSetting.where(category: 'EmailSubscriptions').update_all(category: 'Email')
+  end
+end
diff --git a/db/migrate/202309141441_disable_needs_author_attention_flag.rb b/db/migrate/202309141441_disable_needs_author_attention_flag.rb
new file mode 100644
index 0000000000000000000000000000000000000000..917c84dcac0193ec8ff2d09bbf902d622dcc6507
--- /dev/null
+++ b/db/migrate/202309141441_disable_needs_author_attention_flag.rb
@@ -0,0 +1,9 @@
+class DisableNeedsAuthorAttentionFlag < ActiveRecord::Migration[7.0]
+  def up
+    PostFlagType.unscoped.where(name: "needs author's attention").update_all(active: false)
+  end
+
+  def down
+    PostFlagType.unscoped.where(name: "needs author's attention").update_all(active: true)
+  end
+end
diff --git a/db/migrate/20240405113618_create_email_logs.rb b/db/migrate/20240405113618_create_email_logs.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ecea1a21dae273ebc2727181b583983c5eebdaca
--- /dev/null
+++ b/db/migrate/20240405113618_create_email_logs.rb
@@ -0,0 +1,11 @@
+class CreateEmailLogs < ActiveRecord::Migration[7.0]
+  def change
+    create_table :email_logs do |t|
+      t.string :log_type
+      t.string :destination
+      t.text :data
+
+      t.timestamps
+    end
+  end
+end
diff --git a/db/migrate/20241020193053_add_post_count_to_community_users.rb b/db/migrate/20241020193053_add_post_count_to_community_users.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a6c54aa17c11e058c4bab74469aecb5036ee92c0
--- /dev/null
+++ b/db/migrate/20241020193053_add_post_count_to_community_users.rb
@@ -0,0 +1,5 @@
+class AddPostCountToCommunityUsers < ActiveRecord::Migration[7.0]
+  def change
+    add_column :community_users, :post_count, :integer, default: 0, null: false
+  end
+end
diff --git a/db/migrate/20250123141400_create_user_websites.rb b/db/migrate/20250123141400_create_user_websites.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ec77b2d17a97cf4e496cceec13d1c42f1203e52b
--- /dev/null
+++ b/db/migrate/20250123141400_create_user_websites.rb
@@ -0,0 +1,11 @@
+class CreateUserWebsites < ActiveRecord::Migration[7.0]
+  def change
+    create_table :user_websites do |t|
+      t.column :label, :string, limit:80
+      t.string :url
+      t.integer :position
+    end
+    add_reference :user_websites, :user, null: false, foreign_key: true
+    add_index(:user_websites, [:user_id, :url], unique: true)
+  end
+end
diff --git a/db/migrate/20250128030354_create_maintenance_tasks_runs.maintenance_tasks.rb b/db/migrate/20250128030354_create_maintenance_tasks_runs.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c9b215d687074236510e2d3114d15f510f8396cf
--- /dev/null
+++ b/db/migrate/20250128030354_create_maintenance_tasks_runs.maintenance_tasks.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20201211151756)
+class CreateMaintenanceTasksRuns < ActiveRecord::Migration[6.0]
+  def change
+    create_table(:maintenance_tasks_runs) do |t|
+      t.string(:task_name, null: false)
+      t.datetime(:started_at)
+      t.datetime(:ended_at)
+      t.float(:time_running, default: 0.0, null: false)
+      t.integer(:tick_count, default: 0, null: false)
+      t.integer(:tick_total)
+      t.string(:job_id)
+      t.bigint(:cursor)
+      t.string(:status, default: :enqueued, null: false)
+      t.string(:error_class)
+      t.string(:error_message)
+      t.text(:backtrace)
+      t.timestamps
+      t.index(:task_name)
+      t.index([:task_name, :created_at], order: { created_at: :desc })
+    end
+  end
+end
diff --git a/db/migrate/20250128030355_change_cursor_to_string.maintenance_tasks.rb b/db/migrate/20250128030355_change_cursor_to_string.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..4e414cad3ab30ce9e381cc685333fe910ebdd791
--- /dev/null
+++ b/db/migrate/20250128030355_change_cursor_to_string.maintenance_tasks.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20210219212931)
+class ChangeCursorToString < ActiveRecord::Migration[6.0]
+  # This migration will clear all existing data in the cursor column with MySQL.
+  # Ensure no Tasks are paused when this migration is deployed, or they will be resumed from the start.
+  # Running tasks are able to gracefully handle this change, even if interrupted.
+  def up
+    change_table(:maintenance_tasks_runs) do |t|
+      t.change(:cursor, :string)
+    end
+  end
+
+  def down
+    change_table(:maintenance_tasks_runs) do |t|
+      t.change(:cursor, :bigint)
+    end
+  end
+end
diff --git a/db/migrate/20250128030356_remove_index_on_task_name.maintenance_tasks.rb b/db/migrate/20250128030356_remove_index_on_task_name.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1b5cadf8dfaa78a36e1913b4bef9ebe22b8cbcd5
--- /dev/null
+++ b/db/migrate/20250128030356_remove_index_on_task_name.maintenance_tasks.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20210225152418)
+class RemoveIndexOnTaskName < ActiveRecord::Migration[6.0]
+  def up
+    change_table(:maintenance_tasks_runs) do |t|
+      t.remove_index(:task_name)
+    end
+  end
+
+  def down
+    change_table(:maintenance_tasks_runs) do |t|
+      t.index(:task_name)
+    end
+  end
+end
diff --git a/db/migrate/20250128030357_add_arguments_to_maintenance_tasks_runs.maintenance_tasks.rb b/db/migrate/20250128030357_add_arguments_to_maintenance_tasks_runs.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8478268eba9ef048aa17cccfde5d32e89a405a39
--- /dev/null
+++ b/db/migrate/20250128030357_add_arguments_to_maintenance_tasks_runs.maintenance_tasks.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20210517131953)
+class AddArgumentsToMaintenanceTasksRuns < ActiveRecord::Migration[6.0]
+  def change
+    add_column(:maintenance_tasks_runs, :arguments, :text)
+  end
+end
diff --git a/db/migrate/20250128030358_add_lock_version_to_maintenance_tasks_runs.maintenance_tasks.rb b/db/migrate/20250128030358_add_lock_version_to_maintenance_tasks_runs.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b302565af387a4608bbb2f028cf2b621cadad33b
--- /dev/null
+++ b/db/migrate/20250128030358_add_lock_version_to_maintenance_tasks_runs.maintenance_tasks.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20211210152329)
+class AddLockVersionToMaintenanceTasksRuns < ActiveRecord::Migration[6.0]
+  def change
+    add_column(
+      :maintenance_tasks_runs,
+      :lock_version,
+      :integer,
+      default: 0,
+      null: false,
+    )
+  end
+end
diff --git a/db/migrate/20250128030359_change_runs_tick_columns_to_bigints.maintenance_tasks.rb b/db/migrate/20250128030359_change_runs_tick_columns_to_bigints.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..064b07705736382731c14914e36124b65d18f1c4
--- /dev/null
+++ b/db/migrate/20250128030359_change_runs_tick_columns_to_bigints.maintenance_tasks.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20220706101937)
+class ChangeRunsTickColumnsToBigints < ActiveRecord::Migration[6.0]
+  def up
+    change_table(:maintenance_tasks_runs, bulk: true) do |t|
+      t.change(:tick_count, :bigint)
+      t.change(:tick_total, :bigint)
+    end
+  end
+
+  def down
+    change_table(:maintenance_tasks_runs, bulk: true) do |t|
+      t.change(:tick_count, :integer)
+      t.change(:tick_total, :integer)
+    end
+  end
+end
diff --git a/db/migrate/20250128030360_add_index_on_task_name_and_status_to_runs.maintenance_tasks.rb b/db/migrate/20250128030360_add_index_on_task_name_and_status_to_runs.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..74d77e6bef74b226916e54d38e956497aaa6d22a
--- /dev/null
+++ b/db/migrate/20250128030360_add_index_on_task_name_and_status_to_runs.maintenance_tasks.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20220713131925)
+class AddIndexOnTaskNameAndStatusToRuns < ActiveRecord::Migration[6.0]
+  def change
+    remove_index(
+      :maintenance_tasks_runs,
+      column: [:task_name, :created_at],
+      order: { created_at: :desc },
+      name: :index_maintenance_tasks_runs_on_task_name_and_created_at,
+    )
+
+    add_index(
+      :maintenance_tasks_runs,
+      [:task_name, :status, :created_at],
+      name: :index_maintenance_tasks_runs,
+      order: { created_at: :desc },
+    )
+  end
+end
diff --git a/db/migrate/20250128030361_add_metadata_to_runs.maintenance_tasks.rb b/db/migrate/20250128030361_add_metadata_to_runs.maintenance_tasks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..054ef0e2a976724eabe7a6b9126eed61d8efe280
--- /dev/null
+++ b/db/migrate/20250128030361_add_metadata_to_runs.maintenance_tasks.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# This migration comes from maintenance_tasks (originally 20230622035229)
+class AddMetadataToRuns < ActiveRecord::Migration[6.0]
+  def change
+    add_column(:maintenance_tasks_runs, :metadata, :text)
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 9cc021c6d809687d863c2571e039cb81160d2a2f..97e097dbace5e8724a3be08dd2b560f59e5e1e8b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
+ActiveRecord::Schema[7.0].define(version: 2025_01_28_030361) do
   create_table "abilities", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
     t.bigint "community_id"
     t.string "name"
@@ -109,7 +109,11 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.integer "sequence"
     t.boolean "use_for_hot_posts", default: true
     t.boolean "use_for_advertisement", default: true
+    t.integer "min_title_length", default: 15, null: false
+    t.integer "min_body_length", default: 30, null: false
+    t.bigint "default_filter_id"
     t.index ["community_id"], name: "index_categories_on_community_id"
+    t.index ["default_filter_id"], name: "index_categories_on_default_filter_id"
     t.index ["license_id"], name: "index_categories_on_license_id"
     t.index ["sequence"], name: "index_categories_on_sequence"
     t.index ["tag_set_id"], name: "index_categories_on_tag_set_id"
@@ -138,6 +142,15 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.bigint "tag_id"
   end
 
+  create_table "category_filter_defaults", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.bigint "user_id", null: false
+    t.bigint "filter_id", null: false
+    t.bigint "category_id", null: false
+    t.index ["category_id"], name: "index_category_filter_defaults_on_category_id"
+    t.index ["filter_id"], name: "index_category_filter_defaults_on_filter_id"
+    t.index ["user_id"], name: "index_category_filter_defaults_on_user_id"
+  end
+
   create_table "close_reasons", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.string "name"
     t.text "description", size: :medium
@@ -213,11 +226,20 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.boolean "deleted", default: false, null: false
     t.datetime "deleted_at", precision: nil
     t.bigint "deleted_by_id"
+    t.integer "post_count", default: 0, null: false
     t.index ["community_id"], name: "index_community_users_on_community_id"
     t.index ["deleted_by_id"], name: "index_community_users_on_deleted_by_id"
     t.index ["user_id"], name: "index_community_users_on_user_id"
   end
 
+  create_table "email_logs", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.string "log_type"
+    t.string "destination"
+    t.text "data"
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
+  end
+
   create_table "error_logs", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.bigint "community_id"
     t.bigint "user_id"
@@ -234,6 +256,21 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.index ["user_id"], name: "index_error_logs_on_user_id"
   end
 
+  create_table "filters", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.bigint "user_id", null: false
+    t.string "name", null: false
+    t.float "min_score"
+    t.float "max_score"
+    t.integer "min_answers"
+    t.integer "max_answers"
+    t.string "status"
+    t.string "include_tags"
+    t.string "exclude_tags"
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
+    t.index ["user_id"], name: "index_filters_on_user_id"
+  end
+
   create_table "flags", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.text "reason"
     t.datetime "created_at", precision: nil, null: false
@@ -272,6 +309,27 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.index ["name"], name: "index_licenses_on_name"
   end
 
+  create_table "maintenance_tasks_runs", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.string "task_name", null: false
+    t.datetime "started_at", precision: nil
+    t.datetime "ended_at", precision: nil
+    t.float "time_running", default: 0.0, null: false
+    t.bigint "tick_count", default: 0, null: false
+    t.bigint "tick_total"
+    t.string "job_id"
+    t.string "cursor"
+    t.string "status", default: "enqueued", null: false
+    t.string "error_class"
+    t.string "error_message"
+    t.text "backtrace"
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
+    t.text "arguments"
+    t.integer "lock_version", default: 0, null: false
+    t.text "metadata"
+    t.index ["task_name", "status", "created_at"], name: "index_maintenance_tasks_runs", order: { created_at: :desc }
+  end
+
   create_table "micro_auth_apps", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.string "name"
     t.string "app_id"
@@ -360,6 +418,7 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.bigint "community_id"
     t.string "before_title"
     t.string "after_title"
+    t.boolean "hidden", default: false, null: false
     t.index ["community_id"], name: "index_post_histories_on_community_id"
     t.index ["post_history_type_id"], name: "index_post_histories_on_post_history_type_id"
     t.index ["post_id"], name: "index_post_histories_on_post_type_and_post_id"
@@ -398,8 +457,8 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.boolean "is_top_level", default: false, null: false
     t.boolean "is_freely_editable", default: false, null: false
     t.string "icon_name"
-    t.bigint "answer_type_id"
     t.boolean "has_reactions"
+    t.bigint "answer_type_id"
     t.boolean "has_only_specific_reactions"
     t.index ["answer_type_id"], name: "index_post_types_on_answer_type_id"
     t.index ["name"], name: "index_post_types_on_name"
@@ -535,6 +594,12 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.index ["name"], name: "index_site_settings_on_name"
   end
 
+  create_table "sso_profiles", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.string "saml_identifier", null: false
+    t.bigint "user_id", null: false
+    t.index ["user_id"], name: "index_sso_profiles_on_user_id"
+  end
+
   create_table "subscriptions", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.string "type", null: false
     t.string "qualifier"
@@ -594,6 +659,14 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.index ["community_id"], name: "index_tag_sets_on_community_id"
   end
 
+  create_table "tag_synonyms", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.bigint "tag_id"
+    t.string "name", null: false
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
+    t.index ["tag_id"], name: "index_tag_synonyms_on_tag_id"
+  end
+
   create_table "tags", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.string "name"
     t.datetime "created_at", precision: nil, null: false
@@ -632,6 +705,15 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.index ["community_user_id"], name: "index_user_abilities_on_community_user_id"
   end
 
+  create_table "user_websites", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
+    t.string "label", limit: 80
+    t.string "url"
+    t.integer "position"
+    t.bigint "user_id", null: false
+    t.index ["user_id", "url"], name: "index_user_websites_on_user_id_and_url", unique: true
+    t.index ["user_id"], name: "index_user_websites_on_user_id"
+  end
+
   create_table "users", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
     t.string "email"
     t.string "encrypted_password"
@@ -674,6 +756,7 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.boolean "deleted", default: false, null: false
     t.datetime "deleted_at", precision: nil
     t.bigint "deleted_by_id"
+    t.string "backup_2fa_code"
     t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
     t.index ["deleted_by_id"], name: "index_users_on_deleted_by_id"
     t.index ["email"], name: "index_users_on_email", unique: true
@@ -714,8 +797,8 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
     t.datetime "created_at", precision: nil, null: false
     t.datetime "updated_at", precision: nil, null: false
     t.boolean "read", default: false
-    t.index ["author_id"], name: "index_mod_messages_on_author_id"
-    t.index ["community_user_id"], name: "index_mod_messages_on_community_user_id"
+    t.index ["author_id"], name: "index_warnings_on_author_id"
+    t.index ["community_user_id"], name: "index_warnings_on_community_user_id"
   end
 
   add_foreign_key "abilities", "communities"
@@ -723,8 +806,12 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
   add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
   add_foreign_key "audit_logs", "communities"
   add_foreign_key "audit_logs", "users"
+  add_foreign_key "categories", "filters", column: "default_filter_id"
   add_foreign_key "categories", "licenses"
   add_foreign_key "categories", "tag_sets"
+  add_foreign_key "category_filter_defaults", "categories"
+  add_foreign_key "category_filter_defaults", "filters"
+  add_foreign_key "category_filter_defaults", "users"
   add_foreign_key "comment_threads", "users", column: "archived_by_id"
   add_foreign_key "comment_threads", "users", column: "deleted_by_id"
   add_foreign_key "comment_threads", "users", column: "locked_by_id"
@@ -735,6 +822,7 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
   add_foreign_key "community_users", "users", column: "deleted_by_id"
   add_foreign_key "error_logs", "communities"
   add_foreign_key "error_logs", "users"
+  add_foreign_key "filters", "users"
   add_foreign_key "flags", "communities"
   add_foreign_key "flags", "users", column: "escalated_by_id"
   add_foreign_key "micro_auth_apps", "users"
@@ -755,17 +843,20 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_13_183826) do
   add_foreign_key "posts", "users", column: "locked_by_id"
   add_foreign_key "privileges", "communities"
   add_foreign_key "site_settings", "communities"
+  add_foreign_key "sso_profiles", "users"
   add_foreign_key "subscriptions", "communities"
   add_foreign_key "subscriptions", "users"
   add_foreign_key "suggested_edits", "communities"
   add_foreign_key "suggested_edits", "posts"
   add_foreign_key "suggested_edits", "users"
   add_foreign_key "suggested_edits", "users", column: "decided_by_id"
+  add_foreign_key "tag_synonyms", "tags"
   add_foreign_key "tags", "communities"
   add_foreign_key "tags", "tags", column: "parent_id"
   add_foreign_key "thread_followers", "posts"
   add_foreign_key "user_abilities", "abilities"
   add_foreign_key "user_abilities", "community_users"
+  add_foreign_key "user_websites", "users"
   add_foreign_key "users", "users", column: "deleted_by_id"
   add_foreign_key "votes", "communities"
   add_foreign_key "warning_templates", "communities"
diff --git a/db/scripts/create_tags_path_view.sql b/db/scripts/create_tags_path_view.sql
index 92708f38b2f27e1ab369542c522404cbac7ae882..6752f67343e12ac3237ff292bc23cf05dfa6d87c 100644
--- a/db/scripts/create_tags_path_view.sql
+++ b/db/scripts/create_tags_path_view.sql
@@ -1,4 +1,4 @@
-create view tags_paths as
+CREATE OR REPLACE VIEW tags_paths AS
 WITH RECURSIVE tag_path (id, created_at, updated_at, community_id, tag_set_id, wiki_markdown,
                          wiki, excerpt, parent_id, name, path) AS
                    (
diff --git a/db/seeds.rb b/db/seeds.rb
index c116c94c36aaaca729481cf0a52ed2b020d8fff9..11cb350a060cb89777dbbcc9442663b7dde79f12 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -16,16 +16,81 @@ types = files.map do |f|
 end
 
 # Prioritize the following models (in this order) such that models depending on them get created after
-priority = [PostType, CloseReason, License, TagSet, PostHistoryType]
+priority = [PostType, CloseReason, License, TagSet, PostHistoryType, User, Ability, CommunityUser, Filter]
 sorted = files.zip(types).to_h.sort do |a, b|
   (priority.index(a.second) || 999) <=> (priority.index(b.second) || 999)
 end.to_h
 
+def expand_communities(type, seed)
+  if type.column_names.include?('community_id') && !seed.include?('community_id')
+    # if model includes a community_id, create the seed for every community
+    Community.all.map { |c| seed.deep_symbolize_keys.merge(community_id: c.id) }
+  else
+    # otherwise, no need to worry, just create it
+    [seed]
+  end
+end
+
+def expand_ids(type, seeds)
+  # Transform all _id relations into the actual rails objects to pass validations
+  seeds.map do |seed|
+    columns = type.column_names.select { |name| name.match(/^.*_id$/) }
+    new_seed = seed.deep_symbolize_keys
+    columns.each do |column|
+      begin
+        column_type_name = column.chomp('_id')
+        column_type = column_type_name.classify.constantize
+        new_seed = new_seed.except(column.to_sym)
+                           .merge(column_type_name.to_sym => column_type.unscoped.find(seed[column.to_sym]))
+      rescue StandardError
+        # Either the type does not exist or the value specified as the id is not valid, ignore.
+        next
+      end
+    end
+    new_seed
+  end
+end
+
+def create_objects(type, seed)
+  seeds = expand_communities(type, seed)
+  seeds = expand_ids(type, seeds)
+
+  # Actually create the objects and count successes
+  objs = type.create seeds
+
+  skipped = objs.select { |o| o.errors.any? }.size
+  created = objs.select { |o| !o.errors.any? }.size
+
+  [created, skipped]
+end
+
+def ensure_system_user_abilities
+  system_users = CommunityUser.unscoped.where(user_id: -1)
+
+  system_users.each do |su|
+    abilities = Ability.unscoped
+      .where(internal_id: ['everyone', 'mod', 'unrestricted'])
+      .where(community_id: su.community_id)
+
+    user_abilities = UserAbility.unscoped.where(community_user_id: su.id)
+
+    abilities.each do |ab|
+      unless user_abilities.any? { |ua| ua.ability_id == ab.id }
+        UserAbility.create community_user_id: su.id, ability: ab
+      end
+    rescue => e
+      puts "#{type}: failed to add \"#{ab.name}\" to system user \"#{su.id}\" on \"#{su.community.name}\""
+      puts e
+    end
+  end
+end
+
 sorted.each do |f, type|
   begin
     processed = ERB.new(File.read(f)).result(binding)
     data = YAML.load(processed)
     created = 0
+    errored = 0
     skipped = 0
     updated = 0
     data.each do |seed|
@@ -39,57 +104,60 @@ sorted.each do |f, type|
         puts "Running full Posts update..."
 
         seed['body'] = ApplicationController.helpers.render_markdown(seed['body_markdown'])
+
+        system_usr = User.find(-1)
+
         Community.all.each do |c|
           RequestContext.community = c
           post = Post.find_by doc_slug: seed['doc_slug']
-          if post.present? && PostHistory.where(post: post).count <= 1
+          if post.present? && PostHistory.where(post: post)
+                                         .where.not(post_history_type:
+                                                      PostHistoryType.find_by(name: 'initial_revision'))
+                                         .count.zero?
+
             # post exists, still original version: update post
             post.update(seed.merge('community_id' => c.id))
+
+            no_initial = PostHistory.where(post: post)
+                       .where(post_history_type: PostHistoryType.find_by(name: 'initial_revision'))
+                       .count.zero?
+
+            if no_initial
+              puts "[#{c.name}:#{seed['doc_slug']}] missing initial revision, creating..."
+              PostHistory.initial_revision(post, system_usr)
+            end
+
             updated += 1
           elsif post.nil?
             # post doesn't exist: create post
-            Post.create seed.merge('community_id' => c.id)
-            created += 1
+            status = Post.create seed.merge('community_id' => c.id, 'user' => system_usr)
+
+            if status.errors.size
+              status.errors.full_messages.each do |msg|
+                puts "[#{c.name}:#{seed['doc_slug']}] invalid: #{msg}"
+              end
+
+              errored += 1
+            else
+              created += 1
+            end
           else
             # post exists, versions diverged: skip
             skipped += 1
           end
         end
       else
-        seeds = if type.column_names.include?('community_id') && !seed.include?('community_id')
-                 # if model includes a community_id, create the seed for every community
-                 Community.all.map { |c| seed.deep_symbolize_keys.merge(community_id: c.id) }
-               else
-                 # otherwise, no need to worry, just create it
-                 [seed]
-                end
-
-        # Transform all _id relations into the actual rails objects to pass validations
-        seeds = seeds.map do |seed|
-          columns = type.column_names.select { |name| name.match(/^.*_id$/) }
-          new_seed = seed.deep_symbolize_keys
-          columns.each do |column|
-            begin
-              column_type_name = column.chomp('_id')
-              column_type = column_type_name.classify.constantize
-              new_seed = new_seed.except(column.to_sym)
-                                 .merge(column_type_name.to_sym => column_type.unscoped.find(seed[column.to_sym]))
-            rescue StandardError
-              # Either the type does not exist or the value specified as the id is not valid, ignore.
-              next
-            end
-          end
-          new_seed
-        end
+        new_created, new_skipped = create_objects(type, seed)
+        created += new_created
+        skipped += new_skipped
 
-        # Actually create the objects and count successes
-        objs = type.create seeds
-        skipped += objs.select { |o| o.errors.any? }.size
-        created += objs.select { |o| !o.errors.any? }.size
+        if type == CommunityUser
+          ensure_system_user_abilities
+        end
       end
     end
     unless Rails.env.test?
-      puts "#{type}: Created #{created}, #{updated > 0 ? "updated #{updated}, " : ''}skipped #{skipped}"
+      puts "#{type}: errored #{errored}, created #{created}, #{updated > 0 ? "updated #{updated}, " : ''}skipped #{skipped}"
     end
   rescue StandardError => e
     puts "Got error #{e}. Continuing..."
diff --git a/db/seeds/abilities/edit_posts.html b/db/seeds/abilities/edit_posts.html
index ecb1741a4501e88f641001e85cd84a11b2a2d072..ff0fdff8387c91cd7f1e003cfdbe103597ec4dcb 100644
--- a/db/seeds/abilities/edit_posts.html
+++ b/db/seeds/abilities/edit_posts.html
@@ -1,9 +1,9 @@
 <h2>What does this ability allow me to do?</h2>
 <p>This ability allows you to unilaterally edit posts, as well as review suggested edits from other users.</p>
 
-<p>Edits should be used to improve posts, including edits improving spelling, grammar, and formatting, as well as fixes for missing <a href="/help/alt-text">alt text</a>, broken images and links, and other improvements. Edits should, however, respect the goal of the original poster.</p>
+<p>Edits should be used to improve posts, including edits improving spelling, grammar, and formatting, as well as fixes for missing <a href="/help/alt-text">alt text</a>, broken images and links, and other improvements. Edits should, however, preserve the meaning of the post.</p>
 
 <img src="/assets/ability-help/edit-link.png" alt="Edit post button">
 
 <h2>How do I earn this ability?</h2>
-<p>To earn this ability, you need to have at least a 95% approval rate for your suggested edits, with a hard minimum of 30 approved suggested edits (these numbers may vary from site to site).</p>
\ No newline at end of file
+<p>To earn this ability, you need to have at least a 95% approval rate for your suggested edits, with a hard minimum of 30 approved suggested edits (these numbers may vary from community to community).</p>
diff --git a/db/seeds/abilities/everyone.html b/db/seeds/abilities/everyone.html
index be547ccca9097de73471566354d1c1392f5a318e..8f112ef81f4a2d45a247a26001cfb88c90521fb1 100644
--- a/db/seeds/abilities/everyone.html
+++ b/db/seeds/abilities/everyone.html
@@ -1,9 +1,9 @@
 <h2>What does this ability allow me to do?</h2>
 
-<p>This ability allows you to posts 3 top-level posts (questions and articles) a day, and to post 20 answers a day.</p>
+<p>This ability allows you to post 3 top-level posts (questions and articles) per day, and to post 20 answers per day.</p>
 
-<p>This ability also allows you to raise 15 flags on posts a day.</p>
+<p>This ability also allows you to raise 15 flags on posts per day.</p>
 
 <h2>How do I earn this ability?</h2>
 
-<p>This ability is automatically granted to you when you create an account.</p>
\ No newline at end of file
+<p>This ability is automatically granted to you when you create an account.</p>
diff --git a/db/seeds/abilities/unrestricted.html b/db/seeds/abilities/unrestricted.html
index cce29e0e1857833cded28985820d66501eef6259..d10050344609d642d1a247812a47a9ce675d9522 100644
--- a/db/seeds/abilities/unrestricted.html
+++ b/db/seeds/abilities/unrestricted.html
@@ -2,4 +2,6 @@
 <p>This ability allows you to post questions, articles, and answers without limit, as well as being able to vote and leave comments on any post. You can see guidance on <a href="/help/how-to-ask">asking questions</a> and <a href="/help/voting">how to vote</a> in the Help Center.</p>
 
 <h2>How do I earn this ability?</h2>
-<p>To earn this ability, you need to have roughly 75% of your posts be positively received, with a minimum of 5 positively-recieved posts (these numbers may vary from site to site).</p>
+<p>To earn this ability, you need to have roughly 75% of your posts be positively received, with a minimum of 5 positively-received posts (these numbers may vary from site to site).</p>
+<p>If a site is in "new site" mode, all users start with this ability.</p>
+
diff --git a/db/seeds/community_users.yml b/db/seeds/community_users.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4935d657d83ca0ce5cb36543677564f680448099
--- /dev/null
+++ b/db/seeds/community_users.yml
@@ -0,0 +1,7 @@
+- deleted: false
+  is_admin: true
+  is_moderator: true
+  is_suspended: false
+  post_count: 0
+  reputation: 1
+  user_id: -1
\ No newline at end of file
diff --git a/db/seeds/filters.yml b/db/seeds/filters.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d23f91b9e7e885354501d47d127552f92052d140
--- /dev/null
+++ b/db/seeds/filters.yml
@@ -0,0 +1,14 @@
+- name: None
+  user_id: -1
+
+- name: Positive
+  user_id: -1
+  min_score: 0.5
+  max_score: 1
+  status: 'open'
+
+- name: Unanswered
+  user_id: -1
+  min_answers: 0
+  max_answers: 0
+  status: 'open'
\ No newline at end of file
diff --git a/db/seeds/post_flag_types.yml b/db/seeds/post_flag_types.yml
index 618f76e4e798e632c340f484175613c7ebd88066..5c3204aca5feb02b1d4b5fb67b080ba5d4bd001a 100644
--- a/db/seeds/post_flag_types.yml
+++ b/db/seeds/post_flag_types.yml
@@ -16,7 +16,7 @@
   description: >
     This question is off-topic or cannot be reasonably answered in its current form and needs revision by its author.
   confidential: false
-  active: true
+  active: false
   post_type_id: <%= Question.post_type_id %>
 
 - name: is a duplicate
@@ -24,4 +24,11 @@
     This question has been asked before and has already been answered. It should be marked as a duplicate.
   confidential: false
   active: true
-  post_type_id: <%= Question.post_type_id %>
\ No newline at end of file
+  post_type_id: <%= Question.post_type_id %>
+
+- name: generated by AI
+  description: >
+    This post appears to contain AI-generated content (such as ChatGPT) without [attribution](/help/referencing).
+  confidential: false
+  active: true
+  post_type_id: null
diff --git a/db/seeds/post_history_types.yml b/db/seeds/post_history_types.yml
index 9ed649d142ed676b7c4b4d9d60a78a11aa2b16ec..d12b6e28c0140913425be4812c1ef8a014c1fe87 100644
--- a/db/seeds/post_history_types.yml
+++ b/db/seeds/post_history_types.yml
@@ -9,4 +9,5 @@
 - name: attribution_notice_changed
 - name: imported_from_external_source
 - name: nominated_for_promotion
-- name: promotion_removed
\ No newline at end of file
+- name: promotion_removed
+- name: history_hidden
\ No newline at end of file
diff --git a/db/seeds/posts.yml b/db/seeds/posts.yml
index 8930150271ce32580b99c36aa24a47df30ff5fc1..f345061269d080262fd22ad481254e09bf8cf6de 100644
--- a/db/seeds/posts.yml
+++ b/db/seeds/posts.yml
@@ -38,6 +38,14 @@
   help_category: About the Network
   community_id: ~
 
+- post_type_id: <%= PolicyDoc.post_type_id %>
+  title: Accessibility Statement
+  body_markdown: $FILE posts/accessibility-policy.html
+  body: $FILE posts/accessibility-policy.html
+  doc_slug: accessibility-policy
+  help_category: About the Network
+  community_id: ~
+
 - post_type_id: <%= HelpDoc.post_type_id %>
   title: FAQ
   body_markdown: $FILE posts/local_faq.html
@@ -101,6 +109,13 @@
   doc_slug: licenses
   help_category: Guidance
 
+- post_type_id: <%= HelpDoc.post_type_id %>
+  title: Accessibility
+  body_markdown: $FILE posts/accessibility.html
+  body: $FILE posts/accessibility.html
+  doc_slug: accessibility
+  help_category: Guidance
+
 - post_type_id: <%= HelpDoc.post_type_id %>
   title: Search options
   body_markdown: $FILE posts/search.html
@@ -142,3 +157,11 @@
   body: $FILE posts/deleted.html
   doc_slug: deleted
   help_category: Site Information
+
+- post_type_id: <%= HelpDoc.post_type_id %>
+  title: Advanced formatting help
+  body_markdown: $FILE posts/advanced-formatting.html
+  body: $FILE posts/advanced-formatting.html
+  doc_slug: advanced-formatting
+  help_category: Site Information
+
diff --git a/db/seeds/posts/accessibility-policy.html b/db/seeds/posts/accessibility-policy.html
new file mode 100644
index 0000000000000000000000000000000000000000..b3f9eebf3d9de8ece4bd0996899fdc201de4b456
--- /dev/null
+++ b/db/seeds/posts/accessibility-policy.html
@@ -0,0 +1,41 @@
+| URL slug | Category |
+|:--------:|:--------:|
+| accessibility-policy | About the Network |
+
+<h1>$EDIT-Organization-Name Accessibility Statement</h1>
+
+<!--- Edit as applicable for your organization -->
+
+Sharing information and being part of a community are the two fundamental goals of the Codidact Project. Everyone deserves access to information and to be a part of a community, and with that in mind,  the Codidact Foundation is committed to accessibility in all areas of the Codidact Project.
+
+<h2>Who is responsible for accessibility?</h2>
+
+Accessibility is the responsibility of everyone, from the people writing posts to the people working on the website. However, the chief person responsible for accessibility in the $EDIT-Organization-Name is $Edit-Accessibility-Officer. Questions about $EDIT-Organization-Name's accessibility can be directed to $EDIT-email.
+
+<h2>I'm encountering an accessibility problem with the QPixel software, what do I do?</h2>
+
+Please report any accessibility problems you have on <a href="https://meta.codidact.com">Codidact Meta</a>, using the [bug] and [accessibility] tags. That makes sure that the Codidact developers are aware of the problem, and they'll do their best to fix it as soon as reasonably possible with their available resources.
+
+<h2>Technical details: QPixel Accessibility Policy</h2>
+
+This Accessibility Policy outlines the technical details of the commitment to accessibility for sites running the QPixel software and sets expectations for what is in scope of that commitment.
+
+<h3>The $EDIT-Organization-Name Network</h3>
+
+<!--- edit with your specific details --->
+
+The platform that the Network runs on, known as QPixel, should meet both the Web Content Accessibility Guidelines (WCAG) 2.2 and the Authoring Tool Accessibility Guidelines (ATAG) 2.0 standards at the AA conformance level.
+
+Since the platform is open-source and volunteer operated, setting strict timetables isn't realistic. However, new changes to the platform should be made with these standards in mind, including using Accessible Rich Internet Applications (WAI-ARIA) features.
+
+<h3>User-contributed content</h3>
+
+The $EDIT-Organization-Name encourages all people contributing posts, such as questions, answers, and articles, to make their posts accessible. This is done via system reminders, such as a warning when posting images without alt text, and via other users editing those posts to be more accessible.
+
+An in-depth guide to creating accessible posts is available in the help center.
+
+<h3>$EDIT other sites</h3>
+
+<!-- edit with any other sites controlled by your organization -->
+
+This document was last updated on [date].
diff --git a/db/seeds/posts/accessibility.html b/db/seeds/posts/accessibility.html
new file mode 100644
index 0000000000000000000000000000000000000000..d8d1b556eeaec7ad57a729834292da980b25797d
--- /dev/null
+++ b/db/seeds/posts/accessibility.html
@@ -0,0 +1,255 @@
+<p>This short guide goes over several aspects of accessibility to keep in mind when writing or editing posts on the Codidact network. There are many different disabilities out there, and these tips cover accessibility for many of them, such as people using screen readers, keyboard users, colorblind users, and people with cognitive disabilities.</p>
+<hr>
+<h2>Table of Contents</h2>
+<ul>
+<li>
+<a href="#Formatting">Formatting</a>
+<ul>
+<li>
+<a href="#Headings">Headings</a>
+<ul>
+<li><a href="#Headings-Examples">Examples</a></li>
+</ul>
+</li>
+<li><a href="#Emphasis">Emphasized text</a></li>
+<li><a href="#Code">Code markup</a></li>
+<li><a href="#Text-size">Text size</a></li>
+<li><a href="#Tables">Tables</a></li>
+</ul>
+</li>
+<li>
+<a href="#Images">Images</a>
+<ul>
+<li><a href="#Alt-text">Alternative (alt) text</a></li>
+<li><a href="#Decorative-images">Decorative images</a></li>
+<li>
+<a href="#Local-images">Stable resource (local images)</a>
+<ul>
+<li><a href="#Images-examples">Examples</a></li>
+</ul>
+</li>
+<li><a href="#Color">Color</a></li>
+<li><a href="#Contrast">Contrast</a></li>
+<li><a href="#Animations">Animations</a></li>
+<li>
+<a href="#Text-images">Images of text</a>
+<ul>
+<li><a href="#Quotes">Quoting</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Links">Links</a>
+<ul>
+<li><a href="#Link-text">Link text</a></li>
+<li><a href="#Web-Archive">Stable resource (Web Archive)</a></li>
+</ul>
+</li>
+<li>
+<a href="#Understandable">Making your posts understandable</a>
+<ul>
+<li><a href="#Vocabulary">Vocabulary</a></li>
+<li><a href="#Jargon">Define acronyms and specialized terms</a></li>
+<li><a href="#Paragraphs">Paragraph and sentence breaks</a></li>
+</ul>
+</li>
+</ul>
+<hr>
+<h2 id="Formatting">Formatting</h2>
+<h3 id="Headings">Headings</h3>
+<p>Headings are used to separate sections of information. Each heading should give you a decent indication of what you can expect in that section. (As an example, the heading "headings" before this section is a good hint that this section is about headings.)</p>
+<ul>
+<li>
+<p>Follow an intuitive header order.</p>
+<p>Don't jump from an <code>&lt;h2&gt;</code> to an <code>&lt;h5&gt;</code>; follow a consistent, intuitive order for headings, where top-level sections have a higher-level header and sub-sections have a lower-level header. You shouldn't skip levels of headings (for instance, moving from an <code>&lt;h2&gt;</code> to an <code>&lt;h4&gt;</code> without an <code>&lt;h3&gt;</code> in between)<br>
+However, when you are ending a sub-section and moving back to a higher-level section, you can move from a low-level header (such as <code>&lt;h4&gt;</code>) back up to a higher-level header (such as <code>&lt;h2&gt;</code>) without including a mid-level header.</p>
+</li>
+<li>
+<p>There should generally only be one top-level header (which can be formatted using <code>&lt;h1&gt;</code> or <code>#</code>) per-page.</p>
+<p>Posts on the Codidact network have a top-level heading as the question or article title.<br>
+Whether or not using another top-level header is appropriate depends on the type of post you're writing, as well as on how the question and answers are structured. Posts covering a large number of topics or that are split up into multiple, entirely distinct sections sometimes might need to include more than one top-level heading, but consider carefully if it's actually necessary.</p>
+</li>
+<li>
+<p>Only use headings for actual headings, and don't use headings for non-header content.</p>
+<p>If something acts as a heading, it should be properly marked up as a heading, using either the appropriate Markdown or HTML tags. The opposite holds true as well; if something is not acting as a heading, it should not be formatted as a heading. If you want to emphasize something, don't use headings to do that.</p>
+</li>
+</ul>
+<p>Screen readers and similar can jump from heading to heading (including describing what level of heading), so keep that in mind when choosing headings for your posts.</p>
+<hr>
+<h4 id="Headings-Examples">Examples</h4>
+<p>A good heading order follows the logical layout of the page, without skipping over levels, consistently uses the same level headings for sections at the same level, and only uses headings for actual heading content.</p>
+<pre>// Example of a good heading order
+&lt;h1&gt;Question title (automatically provided)&lt;h1&gt;
+&lt;h2&gt;Answer section 1&lt;/h2&gt;
+&lt;h3&gt;Answer sub-section 1a&lt;/h3&gt;
+&lt;h3&gt;Answer sub-section 1b&lt;/h3&gt;
+&lt;h2&gt;Answer section 2&lt;/h2&gt;
+&lt;h3&gt;Answer sub-section 2a&lt;/h3&gt;
+&lt;h3&gt;Answer sub-section 2b&lt;/h3&gt;
+&lt;h4&gt;Answer sub-sub-section 2b.1&lt;/h4&gt;
+&lt;h4&gt;Answer sub-sub-section 2b.2&lt;/h4&gt;
+&lt;h2&gt;Answer section 3&lt;/h2&gt;
+</pre>
+<p>The heading order above shows an answer that doesn't use a top-level heading (<code>&lt;h1&gt;</code>), since there's already one on the page - the question title. It uses <code>&lt;h2&gt;</code> to differentiate its high-level sections. It then uses <code>&lt;h3&gt;</code> for the sub-sections, and when it's necessary to have a sub-sub-section, it uses <code>&lt;h4&gt;</code>.</p>
+<p>A bad heading order would skip levels, use headings for non-heading content, or unnecessarily over-use top-level headings.</p>
+<pre>// Example of a bad heading order
+&lt;h1&gt;Question title (automatically provided)&lt;/h1&gt;
+&lt;h1&gt;Answer summary (actual content)&lt;/h1&gt;
+&lt;h3&gt;Answer section 1&lt;/h3&gt;
+&lt;h5&gt;Answer sub-section 1a&lt;/h5&gt;
+&lt;h4&gt;Answer sub-section 1b&lt;/h4&gt;
+&lt;h2&gt;Answer section 2&lt;/h2&gt;
+&lt;h4&gt;Notes&lt;/h4&gt;
+&lt;h1&gt;Thank you for reading!&lt;/h1&gt;
+</pre>
+<p>This bad example uses <code>&lt;h1&gt;</code> twice in the answer, despite there already being a top-level heading as the question title. It uses an <code>&lt;h1&gt;</code> heading for the answer summary, using a heading for non-heading content. It then uses wildly inconsistent heading levels for its different sections and sub-sections, and skips levels of headings (such as moving directly from <code>&lt;h3&gt;</code> to <code>&lt;h5&gt;</code>).</p>
+<hr>
+<h3 id="Emphasis">Emphasized text</h3>
+<p>Emphasized text, such as bold or italics, is good for calling attention to key words or sentences. However, if it's overused, it ends up defeating its own purpose and making a post more difficult to read instead of clearer.</p>
+<ul>
+<li>
+<p>Bold text should be used sparingly.</p>
+<p>Only use it to highlight words or sentences that actually need special attention called to them.</p>
+</li>
+<li>
+<p>Italics should only be used when it is appropriate to use italics.</p>
+<p>Italics are used for emphasizing stress on a certain word, italicizing the names of works, indicating words in foreign languages, and other standard uses of italics. Don't over-use italics on text that doesn't need to be italicized; remember that italics can make it harder to read the text for certain people, including some people with dyslexia.</p>
+</li>
+<li>
+<p>Avoid bolding or italicizing entire paragraphs.</p>
+</li>
+</ul>
+<h3 id="Code">Code markup</h3>
+<ul>
+<li>
+<p>Code markup should be used for code, including variable names and other code elements that may be found in non-code lines.</p>
+<p>This allows for code highlighting to work, and makes it clear when a code element is being referred to.</p>
+</li>
+<li>
+<p>Code markup should not be used for any non-code elements.</p>
+<p>This includes using it for emphasis, for tables, or other non-code usage. Instead, use the <a href="https://meta.codidact.com/help/formatting">dedicated formatting</a> for those elements. Misusing code markup can cause issues for assistive technology such as screen readers.</p>
+</li>
+</ul>
+<h3 id="Text-size">Text size</h3>
+<ul>
+<li>
+<p>Don't stack subscripts or superscripts to make your text tiny.</p>
+<p>Using superscript or subscript once is enough, and only use it when necessary. Screen readers may not differentiate between sub- or superscript and regular text, so keep that in mind.</p>
+</li>
+</ul>
+<p>Codidact has integrated footnotes available, so you should avoid using sub- and superscript for footnotes; use the dedicated Markdown instead.</p>
+<h3 id="Tables">Tables</h3>
+<ul>
+<li>
+<p>If possible, avoid putting ambiguous data into tables - i.e., having data that you can't tell which column of the table it would be associated with without checking, such as having two columns containing plain numbers.</p>
+</li>
+<li>
+<p>Avoid blank header rows in tables, and don't use table formatting for data that doesn't actually belong in a table.</p>
+</li>
+</ul>
+<h2 id="Images">Images</h2>
+<h3 id="Alt-text">Alternative (alt) text</h3>
+<ul>
+<li>
+<p>Whenever you include an image in a post, you should include alternative text (commonly called "alt text") that serves the same purpose as the image.</p>
+<p>This replaces the default text of "Image_alt_text". This is used by screen readers, search engines, and when images can't be displayed (such as images being blocked in certain countries or by school/business networks).</p>
+</li>
+<li>
+<p>The alt text should be short, succinct, and serve the exact same purpose as the image - it shouldn't contain more or less information than the image itself.</p>
+</li>
+</ul>
+<p>As a general way of making sure your alt text is appropriate, consider if the information present in the post would change at all if the image was replaced entirely with the alt text. If the information would stay the same, you're good to go.</p>
+<h3 id="Decorative-images">Decorative images</h3>
+<ul>
+<li>A decorative image, which serves no purpose other than visual, should have its alt text be entirely blank.</li>
+</ul>
+<p>Note that this is <em>blank</em>, not <em>missing</em>. From a coding perspective, this means setting its <code>alt</code> attribute to <code>=""</code>, not leaving out the <code>alt</code> attribute.</p>
+<p>In general, you should avoid including images that don't serve any specific purpose or that are just decorative in your post.<br>
+If you find yourself including a decorative image, make sure that it's not formatted as a link, leaving only the embedded image, and to set the alt text to be blank.</p>
+<h3 id="Local-images">Stable resource (local images)</h3>
+<p>In order to avoid the possibility of dead images, and ensure that that post remains stable for as long as possible, you should avoid using an external image hosting service. Instead, use the built-in image uploader for the Codidact Network. This means that the image is stored on our own servers instead of depending on someone else.</p>
+<hr>
+<h4 id="Images-examples">Examples</h4>
+<p>Let's take the following snippet of a post for our example:</p>
+<blockquote>
+<p>When you go to edit a post, you now have the option to check the "redact" button:</p>
+<p><img alt="Checkbox to select &quot;redact&quot;: Redact original content by hiding the previous versions from history?" src="https://meta.codidact.com/uploads/qwvy25mvolpdjabhknuujzjncbpm"><br>
+<sub>(Source: "<a href="https://meta.codidact.com/posts/289192/289193#answer-289193">What should I do when I come across PII in a post?</a>" by Mithical on Codidact Meta, licensed under CC BY-SA-NC 4.0)</sub></p>
+</blockquote>
+<p>In this example, the image is being used to illustrate the new button and what it does. That information needs to be presented in the alt text as well, which the current alt text does:</p>
+  <pre>![Checkbox to select "redact": Redact original content by hiding the previous versions from history?](https://meta.codidact.com/uploads/qwvy25mvolpdjabhknuujzjncbpm)
+</pre>
+<p>This is short and to the point. It tells anybody who can't see the image what information is shown with the checkbox, which is why the screenshot was included.</p>
+<p>A bad example would be leaving out the alt text, having overly long alt text, or relying on an external image hosting service:</p>
+  <pre>![](https://i.imgur.com/XtjJxjF.jpg) 
+
+![A screenshot of two different sections that you see when editing a post. One says "Edit Comment" with a blank text box, where you can input an edit comment that will show up in the revision history for that post. The other says "Redact", and it has text with an unchecked checkbox. It has the text "Redact original content by hiding the previous revisions from history?" Below those are two buttons. One is blue and says "Save Post in Q&amp;A". The other is gray and says "Cancel".](https://meta.codidact.com/uploads/qwvy25mvolpdjabhknuujzjncbpm)
+</pre>
+<p>In the first bad example, there is both no alt text and it relies on an external image service. There is no information presented to anyone who can't see the image, and there's the risk that the image will go dead even for people who can see it.<br>
+In the second bad example, the alt text is too long. It has information that's not present in the image itself, such as information about the edit comment appearing in the revision history, and describes information that's not relevant to the purpose of the screenshot - which is simply to show what you're presented with when you go to redact a post.</p>
+<hr>
+<h3 id="Color">Don't rely solely on color</h3>
+<p>When your image uses colors to indicate a difference between things - such as on a chart or graph - you should also use a different method of differentiating, such as an icon or different shape. Also avoid using colors that are known to be a problem for colorblind users (such as red/green).</p>
+<h3 id="Contrast">Contrast</h3>
+<p>Avoid colors that are too close to each other, especially for text on a background color. As a simple way of testing, take a glance at the image in sunlight - can you still make it out?</p>
+<h3 id="Animations">Animations</h3>
+<p>We don't currently support any way to disable or pause animations in posts, so avoid using animations where possible. In particular, make sure to avoid flashing content (especially anything flashing more than three times a second - don't do that!). Flashing content can cause seizures, and looping animations can be distracting for everyone, but especially for people with some cognitive disabilities.</p>
+<h3 id="Text-images">Images of text</h3>
+<ul>
+<li>
+<p>Avoid images of text.</p>
+<p>Images of text can't have the text selected, be read by screen readers, indexed by search engines, have the text adjust in a responsive design, or have the font changed. This includes images of code; instead, put the actual code in your post and format it using the dedicated code formatting Markdown.</p>
+</li>
+</ul>
+<h4 id="Quotes">Quoting</h4>
+<ul>
+<li>
+<p>If you are quoting from somewhere, don't provide an image of the text; use text, formatted as a blockquote (which can be done by putting a <code>&gt;</code> at the beginning of a paragraph), and cite your source.</p>
+<p>This applies to both online and offline resources, such as Wikipedia or a physical book.</p>
+</li>
+<li>
+<p>Do not use code formatting for quotes.</p>
+</li>
+</ul>
+<h2 id="Links">Links</h2>
+<h3 id="Link-text">Link text</h3>
+<ul>
+<li>
+<p>Avoid link text such as "Here" or "Read more".</p>
+<p>The link should explain its purpose through the text itself. Remember that screen readers and similar tools can jump to specific links, but if they're named something like "this", navigating to the correct link is much harder.<br>
+Don't go too far in the other direction, though; there's no need to make an entire sentence a link as long as the link text is descriptive and distinct.</p>
+</li>
+<li>
+<p>In general, link text should be unique - don't use the same link text twice in one post if those links go to different places.</p>
+</li>
+</ul>
+<h3 id="Web-Archive">Stable resource (Web Archive)</h3>
+<p>While not required by any standard that I'm aware of, I'd encourage you to take steps to make sure that any resource you link to remains stable by archiving it in the Web Archive when you link to it. (This is similar to what Wikipedia does; sources used in articles are almost always archived so that a backup exists.)</p>
+<h2 id="Understandable">Making your posts understandable</h2>
+<h3 id="Vocabulary">Vocabulary</h3>
+<ul>
+<li>
+<p>In general, try to keep your vocabulary simple.</p>
+<p>This doesn't mean avoiding all technical terms, or not using the correct terms for things, but don't use jargon or fancy words when it's not necessary. This makes it easier for people who don't speak English as their first language, or people with cognitive disabilities, to understand your post.</p>
+</li>
+</ul>
+<p>This should not come at the expense of precision or accuracy, though; keep your audience in mind. If you are writing for a highly specialized or technical audience, you shouldn't necessary shy away from using the relevant terminology; but if you're writing for everyone, using relatively simple terms is often a good idea.</p>
+<h3 id="Jargon">Define acronyms and specialized terms</h3>
+<ul>
+<li>
+<p>The first time you use an acronym, you should fully spell out what you're referring to.</p>
+<p>A common example found on Codidact (CD) is just that - the acronym CD. However, that acronym can also refer to the terminal command <code>cd</code>, or the physical medium of Compact Discs, as well as other meanings. Once you've defined what CD stands for in your specific post, you can continue to use the acronym.</p>
+</li>
+</ul>
+<p>This applies to specialized terms, jargon, and words in other languages as well. The first time you use a specialized term, define what it means or translate it.</p>
+<h3 id="Paragraphs">Paragraph and sentence breaks</h3>
+<ul>
+<li>
+<p>Avoid walls of text.</p>
+<p>Make sure to break up your posts into sections, paragraphs, and sentences. When something runs on for too long, or is too dense, it can be very hard for people to get through, especially people who don't speak the language well or people with certain cognitive disabilities.</p>
+</li>
+</ul>
+<hr>
+<p>And those are the top tips for making your post accessible! Remember that accessibility is an ongoing process, so don't feel too bad if not all of your posts meet these guidelines. They can always be edited later, and the important thing is to keep accessibility in mind as you go forwards writing and editing posts.</p>
+
diff --git a/db/seeds/posts/advanced-formatting.html b/db/seeds/posts/advanced-formatting.html
new file mode 100644
index 0000000000000000000000000000000000000000..6373aa4261847b07482e905b8bcc2d43c1d34df0
--- /dev/null
+++ b/db/seeds/posts/advanced-formatting.html
@@ -0,0 +1,86 @@
+<p
+    >Posts on Codidact, including questions, answers, articles, tag wikis, help pages, and user
+    profiles, support the use of the following HTML tags:</p
+>
+<ul>
+    <li><code>a</code></li>
+    <li><code>p</code></li>
+    <li><code>span</code></li>
+    <li><code>b</code></li>
+    <li><code>i</code></li>
+    <li><code>em</code></li>
+    <li><code>s</code></li>
+    <li><code>strong</code></li>
+    <li><code>hr</code></li>
+    <li
+        ><code>h1</code>, <code>h2</code>, <code>h3</code>, <code>h4</code>, <code>h5</code>,
+        <code>h6</code></li
+    >
+    <li><code>blockquote</code></li>
+    <li><code>img</code></li>
+    <li><code>strike</code></li>
+    <li><code>del</code>, <code>ins</code></li>
+    <li><code>code</code></li>
+    <li><code>pre</code></li>
+    <li><code>br</code></li>
+    <li><code>ul</code>, <code>ol</code>, <code>li</code></li>
+    <li><code>sup</code>, <code>sub</code></li>
+    <li><code>section</code></li>
+    <li><code>details</code>, <code>summary</code></li>
+    <li
+        ><code>table</code>, <code>thead</code>, <code>tbody</code>, <code>tr</code>,
+        <code>th</code>, <code>td</code></li
+    >
+</ul>
+<p>These tags may have the following attributes:</p>
+<ul>
+    <li><code>id</code></li>
+    <li><code>class</code></li>
+    <li><code>href</code></li>
+    <li><code>title</code></li>
+    <li><code>src</code></li>
+    <li><code>height</code></li>
+    <li><code>width</code></li>
+    <li><code>alt</code></li>
+    <li><code>dir</code></li>
+    <li><code>lang</code></li>
+    <li><code>start</code></li>
+    <li><code>rowspan</code></li>
+    <li><code>colspan</code></li>
+</ul>
+<p>Shorter text forms, such as comments, support the following HTML tags:</p>
+<ul>
+    <li><code>a</code></li>
+    <li><code>b</code></li>
+    <li><code>i</code></li>
+    <li><code>em</code></li>
+    <li><code>strong</code></li>
+    <li><code>strike</code></li>
+    <li><code>del</code></li>
+    <li><code>code</code></li>
+</ul>
+<p>These tags may have the following attributes:</p>
+<ul>
+    <li><code>href</code></li>
+    <li><code>title</code></li>
+</ul>
+<hr />
+<p
+    >HTML tags that do not appear on this list will be stripped out and not displayed if they are
+    included in posts or comments. The source code for supported tags in posts can be found in
+    <a href="https://github.com/codidact/qpixel/blob/develop/app/helpers/posts_helper.rb#L46"
+        ><code>posts_helper.rb</code></a
+    >, and for comments in
+    <a href="https://github.com/codidact/qpixel/blob/develop/app/helpers/comments_helper.rb#L81"
+        ><code>comments_helper.rb</code></a
+    >.</p
+>
+<hr />
+<p
+    ><sub
+        >Much of the content of this page came from
+        <a href="https://meta.codidact.com/posts/277420/277424#answer-277424"
+            >this answer by luap42</a
+        >.</sub
+    ></p
+>
diff --git a/db/seeds/posts/category-permissions.html b/db/seeds/posts/category-permissions.html
index 922970152264536ff445f2e1bcacfe6df3dec6d9..8bc18a9b410b82f46dfe21a4739f77446d076225 100644
--- a/db/seeds/posts/category-permissions.html
+++ b/db/seeds/posts/category-permissions.html
@@ -6,7 +6,7 @@
 <p>Please note that trust levels are hierarchical, so that anyone who has one trust level has also all lower trust levels by default.</p>
 
 <h3>1. Everyone</h3>
-<p>As the name says, **absolutely everyone** has this trust level. This includes anonymous (unregistered) and new users.</p>
+<p>As the name says, <strong>absolutely everyone</strong> has this trust level. This includes anonymous (unregistered) and new users.</p>
 <p>Most write actions will require a registered user account, though, even if the trust level "everyone" has been selected.</p>
 
 <h3>2. Anyone with a user account</h3>
@@ -19,7 +19,7 @@
 <p>For the sake of this trust level, every user with either the <a href="/abilities/edit_posts">Edit Posts</a> or the <a href="/abilities/flag_close">Vote on Hold</a> is considered "veteran".</p>
 
 <h3>5. Moderators only</h3>
-<p>Moderators, Adminis and the global variants thereof are the users that have this trust level.</p>
+<p>Moderators, Admins, and the global variants thereof are the users that have this trust level.</p>
 
 <h3>6. Staff only</h3>
-<p>This trust level is only reached by users with the staff mark.</p>
\ No newline at end of file
+<p>This trust level is only reached by users with the staff mark.</p>
diff --git a/db/seeds/posts/formatting.html b/db/seeds/posts/formatting.html
index e9ad8a39dd21e426762a0cb35418db632e059f14..4e4e966b4dd5580cd8cb4a1a1d42d561f7368e2a 100644
--- a/db/seeds/posts/formatting.html
+++ b/db/seeds/posts/formatting.html
@@ -64,3 +64,26 @@
 </blockquote>
 <h3 id="-footnotes-"><strong>Footnotes</strong></h3>
 <p>  To include a footnote in your post, you can use the syntax <code>[^1]</code>. In your main text, include <code>Text[^1] and more text</code>, and at the bottom (where you want to include your footnote), place a line resembling <code>[^1]: footnote text</code>.</p>
+
+<h3 id="-details-"><strong>Hidden Sections</strong></h3>
+<p>CommonMark does not support collapsible sections (sometimes called "spoiler blocks"), but you can use the HTML <code>details</code> and <code>summary</code> tags, like this:</p>
+<pre>&lt;details&gt;
+    &lt;summary&gt;Spoiler! Click here to reveal&lt;/summary&gt;
+    Secret details
+&lt;/details&gt;</pre>
+<p>Which renders like this:</p>
+<details>
+<summary>Spoiler! Click here to reveal</summary>
+Secret details
+</details>
+<p>If the details text uses any Markdown, you must add a blank line between the summary and the text:</p>
+<pre>&lt;details&gt;
+    &lt;summary&gt;Spoiler! Click here to reveal&lt;/summary&gt;
+
+    *Secret* details 
+&lt;/details&gt;</pre>
+<p>Renders:</p>
+<details>
+<summary>Spoiler! Click here to reveal</summary>
+<i>Secret</i> details
+</details>
diff --git a/db/seeds/posts/global_faq.html b/db/seeds/posts/global_faq.html
index 3830f2a4f5075f9dea92dbb9d04ebfa710b1486f..6fb50d0684ad2ac8691331ab911206ca9f1e3c2d 100644
--- a/db/seeds/posts/global_faq.html
+++ b/db/seeds/posts/global_faq.html
@@ -1,4 +1,5 @@
-<!-- This section appears under a "Global FAQ" heading in the help.  Insert something about your network here. We've provided some other sections as starting points.  The section about the Codidact software and project is meant to go at the end, after the stuff about *your* network and communities. -->
+<!-- This section appears under a "Global FAQ" heading in the help.  Insert something about your network here. We've provided some other sections as starting points.  Please ADD A SUPPORT CONTACT METHOD in the support section! -->
+<!-- The section about the Codidact software and project is meant to go at the end, after the stuff about *your* network and communities. -->
 
 <h2 id="how-do-i-ask-a-question-">How do I ask a question?</h2>
 <p>You will need to register an account. Make sure you are logged into the appropriate topic-related site for your question and click the &quot;Ask Question&quot; button at the top of the page. A template should appear with helpful guidelines on how to ask a quality question. Check out the local FAQ page for important information about each community.</p>
@@ -7,7 +8,9 @@
 <h2 id="what-license-do-my-posts-fall-under-">What license do my posts fall under?</h2>
 <p>Most posts fall under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>. Some communities or contributors may use a license that more closely aligns with the content posted or their ideological position. Check a community&#39;s local FAQ page and Terms of Service for site-specific details. </p>
 
+<!-- uncomment and populate: -->
+<!-- <h2 id="support">Where can I get support?</h2> -->
 
 <h2 id="what-is-codidact-">What is Codidact?</h2>
-<p>This community is built using the <a href="https://github.com/codidact/qpixel">open-source QPixel software</a> provided by <a href="https://codidact.org">The Codidact Foundation</a>. The software is free, open-source, and customizable.</p>
+<p>This community is built with the <a href="https://github.com/codidact/qpixel">QPixel engine</a> provided by <a href="https://codidact.org">The Codidact Foundation</a>. The software is free, open-source, and highly customizable.</p>
   
diff --git a/db/seeds/posts/scoring.html b/db/seeds/posts/scoring.html
index 20aeb6e4c3b892904277e2a65a1f80e3c7b06767..ed1795d5c358c88f31ea0754bee1430fea0fdf21 100644
--- a/db/seeds/posts/scoring.html
+++ b/db/seeds/posts/scoring.html
@@ -4,7 +4,7 @@
 <p>The actual score of a particular post is calculated as</p>
 <img src="/assets/scoring_formula.png" alt="(upvote_count + z^2/2)/(upvote_count + downvote_count + z^2)">
 <p>This uses a modified form of a <a href="https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval">Wilson Score</a>, assuming a binomial distribution. By default the weighting constant <em>z</em> is two, but each community can change this to another value as they see fit. Several charts and graphs showing the default weighting distribution are shown below. </p>
-<img src="/assets/scoring_table.png" alt="table of scores with the values for all upvote and downvote combinations from one to ten">
+<img src="/assets/scoring_table.svg" alt="table of scores with the values for all upvote and downvote combinations from one to ten">
 <img src="/assets/scoring_distribution.png" alt="lines in a cartesian coordinate plane sloping from upper left to lower right and converging as z increases">
 <p>Diagram showing the distribution in scores where upvotes less downvotes = 3 for different values of z</p>
 <img src="/assets/scoring_3d.png" alt="a 3D diagram showing the score distribution for upvotes and downvotes">
diff --git a/db/seeds/posts/search.html b/db/seeds/posts/search.html
index 8215a42c619f43524a4931e39cbd309cd3f6390c..e21de8a20c0b7f5efe0afdd67b9f1a39c4cbed30 100644
--- a/db/seeds/posts/search.html
+++ b/db/seeds/posts/search.html
@@ -17,20 +17,39 @@
 </ul>
 <p><strong>Filtering by score and age</strong></p>
 <p>It&#39;s possible to filter your search to only include results that have been posted within a certain timeframe, or match certain score requirements.</p>
+<p>You can use <code>&gt;</code>, <code>&gt;=</code>, <code>&lt;</code>, and <code>&lt;=</code> with these options to search for ranges. By default, a value without an operator looks for an exact match. For example, <code>upvotes:4</code> searches for exactly 4; <code>upvotes:&gt;=4</code> searches for at least 4.</p>
 <ul>
     <li><p>filtering by post score</p>
-        <p>Codidact uses Wilson scoring to help in sorting posts. (To learn more about how this works, see <a href="/help/scoring">/help/scoring</a> for a detailed explanation.) Every post has a score between 0.0 and 1.0. To use this in search, you can use <code>score:0.5</code> to filter your search to only include posts with a score of at least 0.5.</p>
+        <p>Codidact uses Wilson scoring to help in sorting posts. (To learn more about how this works, see <a href="/help/scoring">/help/scoring</a> for a detailed explanation.) Every post has a score between 0.0 and 1.0. To use this in search, you can use <code>score:&gt;=0.5</code> to filter your search to only include posts with a score of at least 0.5.</p>
     </li>
     <li><p>filtering by votes</p>
-        <p>If you want to filter by the raw votes that a post has, you can use <code>votes:5</code> to find posts where the net votes (upvotes minus downvotes) of a post equals 5 or higher.</p>
+        <p>If you want to filter by the raw votes that a post has, you can use <code>votes:5</code> to find posts where the net votes (upvotes minus downvotes) of a post equals 5 or <code>votes:&gt;=5</code> for votes of 5 or more.</p>
     </li>
     <li><p>filtering by upvotes and downvotes</p>
-        <p>If you search for <code>upvotes:4</code>, Codidact will find posts that have received at least 4 upvotes, irrespective of how many downvotes the post has. Likewise, if you search for <code>downvotes:4</code>, Codidact will find posts that have received at least 4 downvotes without taking upvotes into consideration. You can also use a less than (<code>&lt;</code>) symbol to filter for posts that have received no more than a certain number of votes (for instance, <code>downvotes:&lt;4</code> will find posts that have received less than four downvotes total).</p>
+      <p>If you search for <code>upvotes:4</code>, Codidact will find posts that have received exactly 4 upvotes, irrespective of how many downvotes the post has. Likewise, if you search for <code>downvotes:4</code>, Codidact will find posts that have received exactly 4 downvotes without taking upvotes into consideration. <code>downvotes:&lt;4</code> will find posts that have received fewer than four downvotes total).</p>
+    </li>
+    <li><p>filtering by number of answers</p>
+      <p>If you want to find posts with <code>n</code> answers, use <code>answers:n</code>. This is particularly helpful to find unanswered questions: <code>answers:0</code>. <code>answers:&lt;5</code> shows posts with fewer than five answers.</p>
     </li>
     <li><p>filtering by creation date</p>
         <p>If you want to only find posts that have been written within a certain timeframe, you can use the <code>created:</code> search operator. <code>created:&lt;1w</code> will find all posts created less than a week ago, where <code>created:&gt;1w</code> will find only posts older than a week. You can use <code>m</code> for minute, <code>h</code> for hour, <code>d</code> for day, <code>w</code> for week, <code>mo</code> for month, and <code>y</code> for year. </p>
     </li>
 </ul>
+<p><strong>Filtering by tag, user, category, or post type</strong></p>
+<ul>
+  <li><p>filtering by tag</p>
+    <p>To filter for all posts with the tag <code>snake</code>, use the <code>tag:snake</code> operator. To exclude all posts with the tag <code>oil</code>, use <code>-tag:oil</code>.</p>
+  </li>
+  <li><p>filtering by user</p>
+    <p>If you want to search for posts written by a particular user you will need to know their unique user number for the community. This can be found by looking at their profile URL. You can then use <code>user:xxxx</code> where <code>xxxx</code> is the unique user number you are interested in.</p>
+  </li>
+  <li><p>filtering by category</p>
+    <p>To filter by category, you will need to know the unique numeric ID for that category. This can be found by looking at the URL shown when you click to view all posts in a particular category. Use the formatting <code>category:xxxx</code> to apply this filter.</p>
+  </li>
+  <li><p>filtering by post type</p>
+    <p>If you want to restrict your search to a particular post type, type <code>post_type:</code> into the search bar, and a dropdown menu should show the available post types to search. Note that not all communities may use all post types.</p>
+  </li>
+</ul>
 <p><strong>Advanced</strong></p>
 <ul>
     <li><p>wildcard</p>
diff --git a/db/seeds/site_settings.yml b/db/seeds/site_settings.yml
index cb91ffc3be4b49cf972ef57b10defbe1b2337491..48a1ca475eb6e492aca5e4c9ed43ab01a9aea032 100644
--- a/db/seeds/site_settings.yml
+++ b/db/seeds/site_settings.yml
@@ -150,14 +150,21 @@
   description: >
     The maximum characters a single tag name may contain. Default is 35 for compatibility with Stack Exchange; going lower
     may introduce validation issues with content imported from SE.
-    
+
 - name: MaxTitleLength
   value: 150
   value_type: integer
   category: SiteDetails
   description: >
     The maximum characters a post title may contain. Default is 150 for compatibility with Stack Exchange; going lower
-    may introduce validation issues with content imported from SE.    
+    may introduce validation issues with content imported from SE.
+
+- name: MaxEditCommentLength
+  value: 255
+  value_type: integer
+  category: SiteDetails
+  description: >
+    The maximum number of characters an edit comment may contain. Defaults to 255.
 
 - name: MaxUploadSize
   value: 2MB
@@ -178,10 +185,122 @@
 - name: InterestingSubscriptionScoreThreshold
   value: 1
   value_type: integer
-  category: EmailSubscriptions
+  category: Email
   description: >
     The minimum score a question must have to qualify for selection for the Interesting email subscription.
 
+- name: SubscriptionSenderName
+  value: Codidact Subscriptions
+  value_type: string
+  category: Email
+  description: >
+    The name of the sender of subscription emails.
+
+- name: SubscriptionSenderEmail
+  value: subscriptions@codidact.com
+  value_type: string
+  category: Email
+  description: >
+    The address to send subscription emails from (can be a fake address).
+    Make sure your server is allowed to send email from this address, or your mails will not be received.
+
+- name: ModeratorDistributionListSenderName
+  value: Codidact Admins
+  value_type: string
+  category: Email
+  description: >
+    The name of the sender of the moderator distribution list.
+
+- name: ModeratorDistributionListSenderEmail
+  value: moderators-noreply@codidact.com
+  value_type: string
+  category: Email
+  description: >
+    The address to send moderator distribution list emails from (can be a fake address).
+    Make sure your server is allowed to send email from this address, or your mails will not be received.
+
+- name: NoReplySenderName
+  value: Codidact
+  value_type: string
+  category: Email
+  description: >
+    The name of the sender of no-reply emails.
+
+- name: NoReplySenderEmail
+  value: noreply@codidact.com
+  value_type: string
+  category: Email
+  description: >
+    The address to send no-reply emails from (can be a fake address).
+    Example uses of this address are 2FA emails, flag notifications, account emails, and more.
+    Make sure your server is allowed to send email from this address, or your mails will not be received.
+
+- name: DonationSupportReceiverName
+  value: Codidact Support
+  value_type: string
+  category: Email
+  description: >
+    The name of the donation support email address.
+
+- name: DonationSupportReceiverEmail
+  value: support@codidact.com
+  value_type: string
+  category: Email
+  description: >
+    The (real) address to receive donation support emails on. Used for users who want to reply to donation emails.
+
+- name: DonationSenderName
+  value: Codidact Donations
+  value_type: string
+  category: Email
+  description: >
+    The name of the sender of donation related emails.
+
+- name: DonationSenderEmail
+  value: donations-support@codidact.com
+  value_type: string
+  category: Email
+  description: >
+    The address to send donation related emails from (can be a fake address).
+    Make sure your server is allowed to send email from this address, or your mails will not be received.
+
+- name: SupportReceiverName
+  value: Codidact Support
+  value_type: string
+  category: Email
+  description: >
+    The name of the donation support email address.
+
+- name: SupportReceiverEmail
+  value: info@codidact.org
+  value_type: string
+  category: Email
+  description: >
+    The (real) address to receive support emails on.
+
+- name: AllUsersSenderName
+  value: Codidact Team
+  value_type: string
+  category: Email
+  description: >
+    The name of the sender of emails sent to all users of the network via the admin tools.
+
+- name: AllUsersSenderEmail
+  value: allusers-noreply@codidact.org
+  value_type: string
+  category: Email
+  description: >
+    The address to use as sender for emails sent to all users of the network via the admin tools (can be a fake address).
+    Make sure your server is allowed to send email from this address, or your mails will not be received.
+
+- name: AllUsersReplyToEmail
+  value: info@codidact.org
+  value_type: string
+  category: Email
+  description: >
+    The (real) address to use as reply-to for emails sent to all users of the network via the admin tools.
+
+
 - name: LotteryAgeDeprecationSpeed
   value: 0.002
   value_type: float
@@ -515,3 +634,86 @@
   description: >
     The content of a post is shown in short in lists (e.g. category post overview or in search).
     This setting controls how many characters of a post are shown.
+
+- name: NetworkPitch
+  value: $FILE site_settings/widgets_network_pitch.html
+  value_type: text
+  community_id: ~
+  category: Widgets
+  description: >
+    Sidebar text to promote the rest of the network.
+  
+- name: SsoSignIn
+  value: false
+  value_type: boolean
+  community_id: ~
+  category: SignInAndSignUp
+  description: >
+    Whether to enable SSO Sign in. If enabled, this replaces normal Sign In and Sign Up unless if Mixed Sign In is enabled.
+    NOTE: This requires a SAML provider to be configured and set up.
+
+- name: MixedSignIn
+  value: false
+  value_type: boolean
+  community_id: ~
+  category: SignInAndSignUp
+  description: >
+    This setting only has an effect when SSO Sign In is enabled. Enables mixed sign in: both signing in and signing up as well as SSO sign in are enabled.
+    If disabled, only one sign in method is enabled.
+
+- name: Enable2FAForSsoUsers
+  value: false
+  value_type: boolean
+  community_id: ~
+  category: SignInAndSignUp
+  description: >
+    This setting only has an effect when SSO Sign In is enabled. Enables 2FA options (and enforces 2FA for global mods and admins if configured) also for SSO users.
+    When the authentication is outsourced to a Single Sign-On provider (which may already require 2FA), it often does not make sense to have an additional 2FA check on top of that.
+
+- name: AllowSsoDisconnect
+  value: false
+  value_type: boolean
+  community_id: ~
+  category: SignInAndSignUp
+  description: >
+    This setting only has an effect when SSO Sign In and Mixed Sign In are enabled. Allows users to disconnect their account from SSO and switch over to normal login.
+
+- name: LoadStripeEverywhere
+  value: false
+  value_type: boolean
+  category: Integrations
+  description: >
+    Load Stripe JS API on all pages instead of just donation pages. May improve security and fraud detection.
+
+- name: RestrictedAccess
+  value: false
+  value_type: boolean
+  category: SiteDetails
+  description: >
+    Whether the content of this community should be visible only to users who are signed in.
+
+- name: RestrictedAccessFrontPageText
+  value: >
+    <h1>Welcome to our community!</h1>
+    <p>Please sign in to continue</p>
+  value_type: text
+  category: SiteDetails
+  description: >
+    This setting only has an effect when RestrictedAccess is enabled.
+    This is the text that will be displayed on the front page for users who are not signed in. Markdown allowed.
+
+- name: RestrictedAccessHelpPagesPublic
+  value: true
+  value_type: boolean
+  category: SiteDetails
+  description: >
+    This setting only has an effect when RestrictedAccess is enabled.
+    Whether the help pages are publicly accessible.
+
+- name: RestrictedAccessPolicyPagesPublic
+  value: true
+  value_type: boolean
+  category: SiteDetails
+  description: >
+    This setting only has an effect when RestrictedAccess is enabled.
+    Whether the policy pages are publicly accessible (Terms of Service, Privacy Policy, etc.).
diff --git a/db/seeds/site_settings/widgets_network_pitch.html b/db/seeds/site_settings/widgets_network_pitch.html
new file mode 100644
index 0000000000000000000000000000000000000000..4038bfe1f18a81ef92f0954c557d8213757aa810
--- /dev/null
+++ b/db/seeds/site_settings/widgets_network_pitch.html
@@ -0,0 +1 @@
+<p>This community is part of a <a href="/dashboard">network of communities</a> &#8212; take a look!</p>
diff --git a/db/seeds/tag_sets.yml b/db/seeds/tag_sets.yml
index d675cb51a7fb2a9d26dcb8ce0c52b245f92dfeea..8320d8bf57f8d734cd354e874e842f54b87d4d91 100644
--- a/db/seeds/tag_sets.yml
+++ b/db/seeds/tag_sets.yml
@@ -1,5 +1,2 @@
 - name: Main
 - name: Meta
-- name: Tour
-  id: -1
-  community_id: 1
\ No newline at end of file
diff --git a/db/seeds/warning_templates/off-topic.md b/db/seeds/warning_templates/off-topic.md
index f682b8589a4b01431fcc6359cece45d858d11d99..f4f205c5fd9e62e11bc7ba781e697c73bc1c6765 100644
--- a/db/seeds/warning_templates/off-topic.md
+++ b/db/seeds/warning_templates/off-topic.md
@@ -3,7 +3,9 @@ We've noticed that you've written a number of posts about topics that are beyond
 You can find out about what's on-topic and what's off-topic on $SiteName in the [help center](/help/faq).
 
 This is just a gentle reminder that we expect posts on this site to stay focused on the topic on-hand.
-We have a [Network of communities](https://codidact.com/) that you are free to use; you may find one of our other communities more suitable to some of your posts. If you would like to talk about the possibility of creating a site for a subject not currently covered, please write a post on [meta](https://meta.codidact.com/categories/10) with your request.
+We have a [Network of communities](/dashboard) that you are free to use; you may find one of our other communities more suitable to some of your posts.
+If you would like to explore creating a site for a subject not currently covered, see [the Proposals process on codidact.com](https://proposals.codidact.com/help/proposals).
+
 Additionally, we have a $ChatLink available for more free-form discussion.
 
 While we appreciate your continued contributions within the scope of this site, we do ask that you make sure that the topic of your posts remain in scope.
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index 201795be7e0718c573126e20aca666cd5d7a89e2..556c4b8185ff6d90dae9e5b213d748d7919772b2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,6 +1,6 @@
-version: "3.8"
 services:
   db:
+    restart: on-failure:3
     build:
       context: "."
       dockerfile: docker/Dockerfile.db
@@ -8,20 +8,31 @@ services:
       - ./docker/mysql:/var/lib/mysql
     env_file:
       - ${ENV_FILE_LOCATION}
-    command: mysqld --default-authentication-plugin=mysql_native_password --skip-mysqlx
+    command: mysqld --mysql-native-password=on --skip-mysqlx
     cap_add:
       - SYS_NICE
+    healthcheck:
+      test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
+      start_period: 5s
+      interval: 5s
+      timeout: 5s
+      retries: 12
+
 
   uwsgi:
-    restart: always
+    restart: on-failure:3
     build:
       context: "."
-      dockerfile: docker/Dockerfile
+      dockerfile: ${CLIENT_DOCKERFILE}
     depends_on:
-      - db
+      db:
+        condition: service_healthy
+      redis:
+        condition: service_healthy
     environment:
       - COMMUNITY_NAME=${COMMUNITY_NAME}
       - RAILS_ENV=${RAILS_ENV}
+      - MAILER_PROTOCOL=${MAILER_PROTOCOL}
       - CONFIRMABLE_ALLOWED_ACCESS_DAYS=${CONFIRMABLE_ALLOWED_ACCESS_DAYS}
       - LOCAL_DEV_PORT=${LOCAL_DEV_PORT}
     env_file:
@@ -37,7 +48,7 @@ services:
       - db
 
   redis:
-    restart: always
+    restart: on-failure:3
     image: redis:latest
-    depends_on:
-      - db
+    healthcheck:
+      test: ["CMD", "redis-cli","ping"]
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 06fe360ac4de170284d79d3f730e7766f005866c..8944ffb63c993aec69f476667253f2233dc1e501 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,41 +1,53 @@
-FROM ruby:2.7.6
+FROM ruby:3.1.2-bullseye AS ruby
+FROM node:12.18.3-slim AS node
 
-# docker build -f docker/Dockerfile -t qpixel_uwsgi .
+FROM ruby AS build
 
+# Set all encoding to UTF-8
 ENV RUBYOPT="-KU -E utf-8:utf-8"
+
+# Install additional dependencies not present in the base image
 RUN apt-get update && \
-    apt-get install -y gcc && \
-    apt-get install -y make && \
-    apt-get install -y \
-        default-libmysqlclient-dev \
-        autoconf \ 
-        bison \
-        build-essential \
-        libssl-dev \
-        libyaml-dev \
-        libreadline-dev \
-        zlib1g-dev \
-        libncurses5-dev \
-        libffi-dev \
-        libgdbm-dev && \
-   apt-get install -y default-mysql-server
-
-# Install nodejs and imagemagick
-WORKDIR /opt
-RUN wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz && \
-    tar xf node-v12.18.3-linux-x64.tar.xz && \
-    wget https://imagemagick.org/archive/binaries/magick && \
-    chmod +x magick && \
-    mv magick /usr/local/bin/magick
+    apt-get install -y bison \
+    build-essential \
+    libxslt-dev \
+    default-mysql-server
+
+# Add core code to container
+WORKDIR /code
+COPY . /code
+
+RUN gem install bundler:2.4.13
+RUN bundle install
 
+# cherry pick only what we really need to run Node.js
+COPY --from=node /usr/local/bin/node /usr/local/bin
+COPY --from=node /usr/local/bin/nodejs /usr/local/bin
+COPY --from=node /usr/local/bin/npm /usr/local/bin
+COPY --from=node /usr/local/bin/npx /usr/local/bin
+COPY --from=node /usr/local/bin/yarn /usr/local/bin
+COPY --from=node /usr/local/bin/yarnpkg /usr/local/bin
+COPY --from=node /usr/local/include/node /usr/local/include
+COPY --from=node /usr/local/lib/node_modules /usr/local/lib
+COPY --from=node /usr/local/share/doc/node /usr/local/share/doc
+COPY --from=node /usr/local/share/man/man1/node.1 /usr/local/share/man/man1
+COPY --from=node /usr/local/share/systemtap/tapset/node.stp /usr/local/share/systemtap/tapset
+COPY --from=node /opt/yarn-v1.22.4 /opt/yarn-v1.22.4
+
+FROM build
+
+# setup a dedicated user for Node.js
+RUN groupadd --gid 1000 node 
+RUN useradd --uid 1000 \
+            --gid node \
+            --shell /bin/bash \
+            --create-home node
+
+# setup Node.js environment
 ENV NODEJS_HOME=/opt/node-v12.18.3-linux-x64/bin
 ENV PATH=$NODEJS_HOME:$PATH
 
-# Add core code to container
 WORKDIR /code
-COPY . /code
-RUN gem install bundler && \
-    bundle install
 
 EXPOSE 80 443 3000
 ENTRYPOINT ["/bin/bash"]
diff --git a/docker/Dockerfile.arm b/docker/Dockerfile.arm
new file mode 100644
index 0000000000000000000000000000000000000000..b6790b416c55660b8b580f2ad73286b29d8b9821
--- /dev/null
+++ b/docker/Dockerfile.arm
@@ -0,0 +1,55 @@
+FROM ruby:3.1.2-bullseye AS ruby
+FROM node:12.18.3-slim AS node
+
+FROM ruby AS build
+
+# Set all encoding to UTF-8
+ENV RUBYOPT="-KU -E utf-8:utf-8"
+
+# Install additional dependencies not present in the base image
+RUN apt-get update && \
+    apt-get install -y bison \
+    build-essential \
+    libxslt-dev \
+    default-mysql-server
+
+# Add core code to container
+WORKDIR /code
+COPY . /code
+
+RUN gem install bundler:2.4.13
+RUN bundle install
+
+# cherry pick only what we really need to run Node.js
+COPY --from=node /usr/local/bin/node /usr/local/bin
+COPY --from=node /usr/local/bin/nodejs /usr/local/bin
+COPY --from=node /usr/local/bin/npm /usr/local/bin
+COPY --from=node /usr/local/bin/npx /usr/local/bin
+COPY --from=node /usr/local/bin/yarn /usr/local/bin
+COPY --from=node /usr/local/bin/yarnpkg /usr/local/bin
+COPY --from=node /usr/local/include/node /usr/local/include
+COPY --from=node /usr/local/lib/node_modules /usr/local/lib
+COPY --from=node /usr/local/share/doc/node /usr/local/share/doc
+COPY --from=node /usr/local/share/man/man1/node.1 /usr/local/share/man/man1
+COPY --from=node /usr/local/share/systemtap/tapset/node.stp /usr/local/share/systemtap/tapset
+COPY --from=node /opt/yarn-v1.22.4 /opt/yarn-v1.22.4
+
+FROM build
+
+# setup a dedicated user for Node.js
+RUN groupadd --gid 1000 node 
+RUN useradd --uid 1000 \
+            --gid node \
+            --shell /bin/bash \
+            --create-home node
+
+# setup Node.js environment
+ENV NODEJS_HOME=/usr/local/bin/node
+ENV PATH=$NODEJS_HOME:$PATH
+
+WORKDIR /code
+
+EXPOSE 80 443 3000
+ENTRYPOINT ["/bin/bash"]
+CMD ["/code/docker/entrypoint.sh"]
+
diff --git a/docker/Dockerfile.db b/docker/Dockerfile.db
index bf43b19dff3f7b454384f220c18a1f4ff75b5358..41875ec298a1bc8df1a15fe84c3e1178c577b904 100644
--- a/docker/Dockerfile.db
+++ b/docker/Dockerfile.db
@@ -1,4 +1,4 @@
-FROM mysql
+FROM mysql:8.4.2
 
 # docker build -t qpixel_db -f docker/Dockerfile.db .
 
diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev
new file mode 100644
index 0000000000000000000000000000000000000000..994452878a0b89f93b1a86e917a4da1fc9e577a7
--- /dev/null
+++ b/docker/Dockerfile.dev
@@ -0,0 +1,60 @@
+FROM ruby:3.1.2-bullseye AS ruby
+FROM node:12.18.3-slim AS node
+
+FROM ruby AS build
+
+# Set all encoding to UTF-8
+ENV RUBYOPT="-KU -E utf-8:utf-8"
+
+# Install additional dependencies not present in the base image
+RUN apt-get update && \
+    apt-get install -y bison \
+    build-essential \
+    libxslt-dev \
+    default-mysql-server
+
+# Add core code to container
+WORKDIR /code
+COPY . /code
+
+RUN gem install bundler:2.4.13
+RUN bundle install
+
+# cherry pick only what we really need to run Node.js
+COPY --from=node /usr/local/bin/node /usr/local/bin
+COPY --from=node /usr/local/bin/nodejs /usr/local/bin
+COPY --from=node /usr/local/bin/npm /usr/local/bin
+COPY --from=node /usr/local/bin/npx /usr/local/bin
+COPY --from=node /usr/local/bin/yarn /usr/local/bin
+COPY --from=node /usr/local/bin/yarnpkg /usr/local/bin
+COPY --from=node /usr/local/include/node /usr/local/include
+COPY --from=node /usr/local/lib/node_modules /usr/local/lib
+COPY --from=node /usr/local/share/doc/node /usr/local/share/doc
+COPY --from=node /usr/local/share/man/man1/node.1 /usr/local/share/man/man1
+COPY --from=node /usr/local/share/systemtap/tapset/node.stp /usr/local/share/systemtap/tapset
+COPY --from=node /opt/yarn-v1.22.4 /opt/yarn-v1.22.4
+
+FROM build
+
+# setup a dedicated user for Node.js
+RUN groupadd --gid 1000 node 
+RUN useradd --uid 1000 \
+            --gid node \
+            --shell /bin/bash \
+            --create-home node
+
+# setup Node.js environment
+ENV NODEJS_HOME=/usr/local/bin/node
+ENV PATH=$NODEJS_HOME:$PATH
+
+WORKDIR /code
+
+EXPOSE 80 443 3000
+
+RUN ls -1 /
+RUN [ ! -f "/db-created" ] && echo 1 || echo 2
+
+RUN /code/docker/entrypoint.sh dev
+
+# ensures continued running of the container
+CMD sleep 7d
diff --git a/docker/README.md b/docker/README.md
index f7e1a33ba13d1b7a55d9a54e912b42eca67482f5..18e1af18c7293fffcf5a571c4b33d73397a27b92 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,13 +1,22 @@
 # Docker Installation
 
-A [docker-compose.yml](../docker-compose.yml) file is provided for deployment with Docker compose, if you choose.
+A [docker-compose.yml](../docker-compose.yml) file is provided for deployment with Docker Compose. If you want to use a custom one, simply override the `COMPOSE_FILE` predefined environment variable in the `.env` file in project root ([local-setup.sh](./local-setup.sh) script creates one automatically from [compose-env](./compose-env). By default, `COMPOSE_FILE` is set to [docker-compose.yml](../docker-compose.yml)).
 
-To use docker compose, you need to install the docker-compose-plugin. For a system like debian or ubuntu, you can use the following command.
+To use Docker Compose, you need to install the docker-compose-plugin. 
+You can check if it's already installed via the following command:
+
+```bash
+sudo docker compose version
+```
+
+If the version is 2.x or higher, you are all set. If not, you should install the plugin. On a Debian-based Linux distro, you can run the following:
 
 ```bash
 sudo apt-get install docker-compose-plugin
 ```
 
+For Mac OS, you can install Docker Desktop by downloading it from the Docker website. After starting the application, the docker compose command becomes available in your terminal.
+
 Depending on your setup, you may need to prefix every docker command with sudo.
 
 ## 1. Setup and Secrets
@@ -24,7 +33,14 @@ chmod +x docker/local-setup.sh
 docker/local-setup.sh
 ```
 
-Editing the `./.env` file will modify the corresponding variables used in the docker-compose.yml file but **NOT** the environment variables in the container. Editing the `./docker/env` file will change environment variables only in the running container.
+Editing the `./.env` file will modify the corresponding variables used in the docker-compose.yml file but **NOT** the environment variables in the container. 
+Editing the `./docker/env` file will change environment variables only in the running container.
+
+### Custom build config
+
+Our Docker setup supports custom build configurations for the uwsgi contianer via the `CLIENT_DOCKERFILE` environment variable (see [compose-env](/docker/compose-env)). The default is `docker/Dockerfile`, which points to a preconfigured [production-like setup](/docker/Dockerfile). For developers who need more control over their setup, we also provide a [configuration](/docker/Dockerfile.dev) that is tailored for local development.
+
+To use a custom build config, change the `CLIENT_DOCKERFILE` variable in the .env file that is automatically created by [local-setup.sh](/docker/local-setup.sh) in the project root.
 
 ## 2. Database File
 Ensure `config/database.yml` has the username and password as defined in [docker/env](docker/env) file. The `config/database.yml` should already be gitignored.
@@ -49,30 +65,30 @@ docker compose build db
 docker compose build redis
 ```
 
+NOTE: If you get an error like "Cannot connect to the Docker daemon at ...", you need to ensure you start docker. Depending on your system, this can be done with `sudo service docker start` (Ubuntu) or by opening the Docker Desktop application and waiting for it to start (Mac OS).
+
 ## 4. Start Containers
 
-Then start your containers! 
+Then start your containers:
 
 ```bash
-docker compose up # append -d if you want to detach the processes, although it can be useful to see output into the terminal
-Creating qpixel_redis_1 ... done
-Creating qpixel_db_1    ... done
-Creating qpixel_uwsgi_1 ... done
+docker compose up # append -d (--detach) if you don't want to see output in the terminal
 ```
 
-The uwsgi container has a sleep command for 15 seconds to give the database a chance to start,
-so don't expect to see output right away. After about 20 seconds, check to make sure the server is running (and verify port 3000, note that you can change this mapping in the `.env` file)
+After about 20 seconds, check to make sure the server is running (and verify port 3000, note that you can change this mapping in the `.env` file)
 
 ```
-uwsgi_1  | => Booting Puma
-uwsgi_1  | => Rails 5.2.4.3 application starting in development 
-uwsgi_1  | => Run `rails server -h` for more startup options
-uwsgi_1  | Puma starting in single mode...
-uwsgi_1  | * Version 3.12.6 (ruby 2.6.5-p114), codename: Llamas in Pajamas
-uwsgi_1  | * Min threads: 0, max threads: 16
-uwsgi_1  | * Environment: development
-uwsgi_1  | * Listening on tcp://localhost:3000
-uwsgi_1  | Use Ctrl-C to stop
+qpixel_uwsgi_1  | => Booting Puma
+qpixel_uwsgi_1  | => Rails 7.0.4 application starting in development 
+qpixel_uwsgi_1  | => Run `rails server -h` for more startup options
+qpixel_uwsgi_1  | Puma starting in single mode...
+qpixel_uwsgi_1  | * Puma version: 5.6.5 (ruby 2.7.6-p219) ("Birdie's Version")
+qpixel_uwsgi_1  | * Min threads: 5
+qpixel_uwsgi_1  | * Max threads: 5
+qpixel_uwsgi_1  | * Environment: development
+qpixel_uwsgi_1  | *         PID: 49
+qpixel_uwsgi_1  | * Listening on http://0.0.0.0:3000
+qpixel_uwsgi_1  | Use Ctrl-C to stop
 ```
 
 You should then be able to open your browser to [http://localhost:3000](http://localhost:3000)
@@ -82,6 +98,22 @@ and see the interface.
 
 You can then click "Sign in" to login with what you defined for `$COMMUNITY_ADMIN_EMAIL` and `$COMMUNITY_ADMIN_PASSWORD`. Importantly, your password must be 6 characters or longer, otherwise the user won't be created.
 
+### Custom build configs
+
+If you are using a custom build config that doesn't automatically start Rails or our [config for local development](/docker/Dockerfile.dev), you will also have to manually start the server.
+
+After the containers have started, connect to the uwsgi container (if you are using Docker Desktop, you can connect directly from the application):
+
+```bash
+docker exec -it qpixel-uwsgi-1 bash
+```
+
+And run the following command to start Rails (starting the server is intentionally disabled to allow for live debugging):
+
+```bash
+rails server -b 0.0.0.0
+```
+
 ## 5. Login
 
 Once you are logged in, you should see your icon in the top right:
diff --git a/docker/compose-env b/docker/compose-env
index 162e3169b4c5745f535533d9b190a9640fe25928..5374e1ad40b5189acfef1335247ebde51cd082d5 100644
--- a/docker/compose-env
+++ b/docker/compose-env
@@ -1,5 +1,8 @@
+COMPOSE_FILE=./docker-compose.yml
 LOCAL_DEV_PORT=3000
 COMMUNITY_NAME=Dev Community
+MAILER_PROTOCOL=https
 RAILS_ENV=development
 CONFIRMABLE_ALLOWED_ACCESS_DAYS=2
 ENV_FILE_LOCATION=./docker/env
+CLIENT_DOCKERFILE=docker/Dockerfile
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
old mode 100644
new mode 100755
index 145b478c6637feee46303b694e7817bf209b98bf..b6fbc730eacf987e9ded4257b4e0d912a06dc51a
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -1,8 +1,5 @@
 #!/bin/bash
 
-# Give database chance to finish creation
-sleep 15
-
 # If not created yet
 if [ ! -f "/db-created" ]; then
     rails db:create
@@ -18,5 +15,7 @@ fi
 # If this isn't done again, there is a 500 error on the first page about posts
 rails db:seed
 
-# defaults to port 3000
-rails server -b 0.0.0.0
+# we don't start the server immediately in dev mode
+if [[ "$1" != 'dev' ]]; then
+    rails server -b 0.0.0.0
+fi
diff --git a/docker/local-setup.sh b/docker/local-setup.sh
index 0b2674eebe3e9b5b8f94ef6e534518244f7dd4f0..9426b7cbc282ca73a2d0a50e6e5bde0191494076 100755
--- a/docker/local-setup.sh
+++ b/docker/local-setup.sh
@@ -3,3 +3,5 @@
 cp ./docker/dummy.env ./docker/env
 cp ./docker/compose-env .env
 cp config/database.docker.yml config/database.yml
+cp config/storage.docker.yml config/storage.yml
+cp ./.sample.irbrc ./.irbrc
diff --git a/docker/mysql-init.sql b/docker/mysql-init.sql
index 2996693ece05af97f3bb5ead90cef2fcb418e88c..510059bb9d7d8ed66b594cb6935b7755c914f17a 100644
--- a/docker/mysql-init.sql
+++ b/docker/mysql-init.sql
@@ -1,8 +1,6 @@
 
 /* database qpixel and user are already created *
    if you change your environment file, you need to update database names here */
-CREATE DATABASE qpixel_dev;
-CREATE DATABASE qpixel_test;
 GRANT ALL ON qpixel_dev.* TO qpixel;
 GRANT ALL ON qpixel_test.* TO qpixel;
 GRANT ALL ON qpixel.* TO qpixel;
diff --git a/img/edit-category.png b/img/edit-category.png
new file mode 100644
index 0000000000000000000000000000000000000000..fefd5c760eb4207a09bac93fa48aa89d2279b05c
Binary files /dev/null and b/img/edit-category.png differ
diff --git a/img/meta-tags.png b/img/meta-tags.png
new file mode 100644
index 0000000000000000000000000000000000000000..0de519f729babc281ece1c808da991b9aebf26ac
Binary files /dev/null and b/img/meta-tags.png differ
diff --git a/img/qpixel-dev.png b/img/qpixel-dev.png
new file mode 100644
index 0000000000000000000000000000000000000000..242818e36e250d9cd0b323a614fadeeb83aaa2cc
Binary files /dev/null and b/img/qpixel-dev.png differ
diff --git a/img/required-tags.png b/img/required-tags.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e8fa4bd71d7945d5622ba50604d28a1e43600d5
Binary files /dev/null and b/img/required-tags.png differ
diff --git a/lib/console_extension.rb b/lib/console_extension.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ce7cd5c0bc60b1f6db0713cf589a7a5aa92f5798
--- /dev/null
+++ b/lib/console_extension.rb
@@ -0,0 +1,106 @@
+module ConsoleExtension
+  extend ActiveSupport::Concern
+
+  included do
+    console do
+      Rails.logger.silence do
+        console_init_community
+      end
+    end
+  end
+
+  def console_init_community
+    community_count = Community.count
+    if community_count.zero?
+      puts "\e[31m(!) You have not yet created any communities.\e[0m"
+      puts 'Create a community by entering:'
+      puts ''
+      puts "  Community.create(name: 'my community name', host: 'my.site.com')"
+      puts '  Rails.cache.clear'
+      puts ''
+
+      if Rails.env.development?
+        begin
+          port = Rails::Server::Options.new.parse!(ARGV)[:Port] || 3000
+        rescue
+          port = 3000
+        end
+        puts "Since you are running in development mode, you probably want to set host to localhost:#{port}"
+        puts ''
+      elsif Rails.env.production?
+        puts 'Since you are running in production mode, set host to your fully qualified domain name without http(s).'
+        puts 'For example, if you host your site at https://meta.codidact.org, set host to meta.codidact.org'
+        puts ''
+      end
+      puts 'For more information, see the set up instructions.'
+    elsif community_count == 1
+      community = Community.first
+      RequestContext.community = community
+      puts "\e[32m(!) Found one community, set current community to #{community.name} @ #{community.host}\e[0m"
+    else
+      community = Community.find_by(host: 'localhost:3000') if Rails.env.development?
+      community ||= Community.first
+      RequestContext.community = community
+      puts "\e[32m(!) Found multiple communities, set current community to #{community.name} @ #{community.host}\e[0m"
+      puts ''
+      puts 'You can change your current community by entering:'
+      puts ''
+      puts '  RequestContext.community = Community.find_by(...)'
+      puts ''
+      puts "You can use `host: 'my.host'` or `name: 'community name'` in place of the dots"
+    end
+    puts ''
+  rescue
+    puts "\e[31m(!) Unable to load communities. Is your database configuration correct?\e[0m"
+  end
+end
+
+# Create module that can be included in the .irbrc:
+#
+#   Qpixel.irb! if defined?(Qpixel)
+module Qpixel
+  def self.irb!
+    IRB::Irb.class_eval do
+      private
+
+      def self.rails_environment
+        case Rails.env
+        when 'development'
+          "\e[32mdev\e[0m"
+        when 'production'
+          "\e[31mprod\e[0m"
+        when 'test'
+          "\e[32mtest\e[0m"
+        when 'staging'
+          "\e[32mstag\e[0m"
+        else
+          "\e[31m#{Rails.env}\e[0m"
+        end
+      end
+
+      def self.qpixel_prompt
+        c = RequestContext.community
+        "[#{rails_environment}] [\e[34m#{c&.name || '-'} @ #{c&.host || '-'}\e[0m]"
+      end
+    end
+
+    IRB::Irb.class_eval do
+      # Define an alternative string dup method which will redetermine the prompt part if community changes
+      qpixel_block = proc do |s|
+        def s.dup
+          IRB::Irb.qpixel_prompt + self
+        end
+      end
+
+      IRB.conf[:PROMPT][:QPIXEL] = {
+        PROMPT_I: ':%03n> '.tap(&qpixel_block),
+        PROMPT_N: ':%03n> '.tap(&qpixel_block),
+        PROMPT_S: ':%03n%l '.tap(&qpixel_block),
+        PROMPT_C: ':%03n* '.tap(&qpixel_block),
+        RETURN: IRB.conf[:PROMPT][:DEFAULT][:RETURN]
+      }
+
+      IRB.conf[:PROMPT_MODE] = :QPIXEL
+    end
+  end
+end
diff --git a/lib/namespaced_env_cache.rb b/lib/namespaced_env_cache.rb
index af5130e70f6fae819ba0450ea592005b341ac455..093c9a90aa27e91538770756657eecc8985565ff 100644
--- a/lib/namespaced_env_cache.rb
+++ b/lib/namespaced_env_cache.rb
@@ -5,10 +5,16 @@ module QPixel
       @getters = {}
     end
 
+    def include_community(opts)
+      include = opts.delete(:include_community)
+      include.nil? ? true : include
+    end
+
     # These methods need the cache key name updating before we pass it to the underlying cache.
     [:decrement, :delete, :exist?, :fetch, :increment, :read, :write, :delete_matched].each do |method|
       define_method method do |name, *args, **opts, &block|
-        @underlying.send(method, construct_ns_key(name, include_community: opts.delete(:include_community) || true),
+        include_community = include_community(opts)
+        @underlying.send(method, construct_ns_key(name, include_community: include_community),
                          *args, **opts, &block)
       end
     end
@@ -16,7 +22,8 @@ module QPixel
     # These methods need a hash of cache keys updating before we pass it to the underlying cache.
     [:write_multi].each do |method|
       define_method method do |hash, *args, **opts, &block|
-        hash = hash.map { |k, v| [construct_ns_key(k), v] }.to_h
+        include_community = include_community(opts)
+        hash = hash.map { |k, v| [construct_ns_key(k, include_community: include_community), v] }.to_h
         @underlying.send(method, hash, *args, **opts, &block)
       end
     end
@@ -29,14 +36,16 @@ module QPixel
     end
 
     def read_multi(*keys, **opts)
-      keys = keys.map { |k| [construct_ns_key(k), k] }.to_h
-      results = @underlying.read_multi *keys.keys, **opts
+      include_community = include_community(opts)
+      keys = keys.map { |k| [construct_ns_key(k, include_community: include_community), k] }.to_h
+      results = @underlying.read_multi(*keys.keys, **opts)
       results.map { |k, v| [keys[k], v] }.to_h
     end
 
     def fetch_multi(*keys, **opts, &block)
-      keys = keys.map { |k| construct_ns_key(k) }
-      @underlying.fetch_multi *keys, **opts, &block
+      include_community = include_community(opts)
+      keys = keys.map { |k| construct_ns_key(k, include_community: include_community) }
+      @underlying.fetch_multi(*keys, **opts, &block)
     end
 
     def persistent(name, **opts, &block)
diff --git a/public/assets/scoring_table.png b/public/assets/scoring_table.png
index 6f818f6ce18a0e8c947ff4c3b771e2adc44e479c..42c001f31b6b0856589a55f2ba6149ea03cc0cce 100644
Binary files a/public/assets/scoring_table.png and b/public/assets/scoring_table.png differ
diff --git a/public/assets/scoring_table.svg b/public/assets/scoring_table.svg
new file mode 100644
index 0000000000000000000000000000000000000000..48835ef0fcaa05613f3c52794e52e40281d9ab49
--- /dev/null
+++ b/public/assets/scoring_table.svg
@@ -0,0 +1 @@
+<svg width="2128" height="629" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><defs><clipPath id="clip0"><rect x="536" y="586" width="2128" height="629"/></clipPath><image width="2128" height="629" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img1"></image></defs><g clip-path="url(#clip0)" transform="translate(-536 -586)"><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(536 586)"></use></g></svg>
\ No newline at end of file
diff --git a/scripts/cleanup_drafts.rb b/scripts/cleanup_drafts.rb
new file mode 100644
index 0000000000000000000000000000000000000000..27ef4eb63c210d5abc598b61c8552041b4aeece1
--- /dev/null
+++ b/scripts/cleanup_drafts.rb
@@ -0,0 +1,5 @@
+redis = RequestContext.redis
+
+redis.scan_each(:match => "saved_post.*.*.tags") do |key| 
+  redis.srem?(key, '')
+end
\ No newline at end of file
diff --git a/scripts/cleanup_votes.rb b/scripts/cleanup_votes.rb
new file mode 100644
index 0000000000000000000000000000000000000000..67707824ee676c7f630b43d2faf5f872e328c11e
--- /dev/null
+++ b/scripts/cleanup_votes.rb
@@ -0,0 +1 @@
+CleanupVotesJob.perform_later
\ No newline at end of file
diff --git a/scripts/create_backup_2fa_codes.rb b/scripts/create_backup_2fa_codes.rb
new file mode 100644
index 0000000000000000000000000000000000000000..ddeac6793a2a1c7320705f02b9c168966d82401b
--- /dev/null
+++ b/scripts/create_backup_2fa_codes.rb
@@ -0,0 +1,4 @@
+User.where(enabled_2fa: true).each do |user|
+  user.update(backup_2fa_code: SecureRandom.alphanumeric(24))
+  TwoFactorMailer.with(user: user, host: 'meta.codidact.com').backup_code.deliver_now
+end
diff --git a/scripts/prune_email_logs.rb b/scripts/prune_email_logs.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0336c9e0cdcaea503f488cd9deeb6f5cf4182c1c
--- /dev/null
+++ b/scripts/prune_email_logs.rb
@@ -0,0 +1 @@
+EmailLog.where('created_at < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 MONTH)').destroy_all
diff --git a/scripts/recalc_abilities.rb b/scripts/recalc_abilities.rb
index eeda78688153578d971cf87228c942c7ab37d06f..17c99d4fd56e15a52cded50f4d7ac8f36d95067d 100644
--- a/scripts/recalc_abilities.rb
+++ b/scripts/recalc_abilities.rb
@@ -36,11 +36,11 @@ all.each do |q|
       puts "Scope: CommunityUser : #{cu.id}"
     end
 
-    cu.recalc_privileges
+    cu.recalc_abilities
 
     # Grant mod ability if mod status is given
-    if (cu.is_moderator || cu.is_admin || u.is_global_moderator || u.is_global_admin) && !cu.privilege?('mod')
-      cu.grant_privilege('mod')
+    if (cu.is_moderator || cu.is_admin || u.is_global_moderator || u.is_global_admin) && !cu.ability?('mod')
+      cu.grant_ability!('mod')
     end
 
     resolved << q.id
diff --git a/scripts/recalc_abilities_upon_first_migration.rb b/scripts/recalc_abilities_upon_first_migration.rb
index 520144e650cf80d395ae4b9c73e97524381f1d19..32b3c48e4116647c528fab813741afe93f910948 100644
--- a/scripts/recalc_abilities_upon_first_migration.rb
+++ b/scripts/recalc_abilities_upon_first_migration.rb
@@ -9,7 +9,7 @@ User.unscoped.all.map do |u|
     cu.recalc_privileges
 
     if (cu.is_moderator || cu.is_admin || u.is_global_moderator || u.is_global_admin) && !cu.privilege?('mod')
-      cu.grant_privilege('mod')
+      cu.grant_privilege!('mod')
     end
   rescue
     puts "    !!! Error recalcing for CommunityUser.Id=#{cu.id}"
diff --git a/scripts/run_spam_cleanup.rb b/scripts/run_spam_cleanup.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2b2a6853de882864e4c0f63fd37fb7f1dc006631
--- /dev/null
+++ b/scripts/run_spam_cleanup.rb
@@ -0,0 +1 @@
+CleanUpSpammyUsersJob.perform_later
diff --git a/scripts/wipe_everything.rb b/scripts/wipe_everything.rb
index 98da394d96683964ada80e25092b1f2be9f7b4ed..b5311f9a1d021e8dc4f31fef7ee14b8da93ad26f 100644
--- a/scripts/wipe_everything.rb
+++ b/scripts/wipe_everything.rb
@@ -3,17 +3,21 @@ unless Rails.env.development?
   exit 255
 end
 
-def exec(sql)
+def exec_sql(sql)
   ActiveRecord::Base.connection.execute sql
 end
 
 conn = ActiveRecord::Base.connection
 leave_tables = ['ar_internal_metadata', 'schema_migrations']
+
+exec_sql 'SET FOREIGN_KEY_CHECKS = 0'
 (conn.tables - leave_tables).each do |t|
-  exec "DELETE FROM `#{t}`"
-  exec "ALTER TABLE `#{t}` AUTO_INCREMENT=1"
+  exec_sql "DELETE FROM `#{t}`"
+  exec_sql "ALTER TABLE `#{t}` AUTO_INCREMENT=1"
 end
+exec_sql 'SET FOREIGN_KEY_CHECKS = 1'
 
+Community.create(name: 'Dev Community', host: 'localhost:3000')
 Rails.cache.clear
 
-`bundle exec rails db:seed`
\ No newline at end of file
+`rails db:seed`
diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb
new file mode 100644
index 0000000000000000000000000000000000000000..da6f04b0020ef37e3048ae2c01ecef66a3930c89
--- /dev/null
+++ b/test/application_system_test_case.rb
@@ -0,0 +1,103 @@
+require 'test_helper'
+
+# This class serves as the base for all system test cases.
+#
+# The DRIVER environment variable is used to determine the browser that is used. Possible options are:
+# - headless_chrome
+# - chrome
+# - headless_firefox (default)
+# - firefox
+class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
+  DRIVER = if ENV['DRIVER']
+             ENV['DRIVER'].to_sym
+           else
+             :headless_firefox
+           end
+
+  driven_by :selenium, using: DRIVER, screen_size: [1920, 1080]
+
+  setup do
+    Community.first.update(host: root_url.gsub(/https?:\/\//, '').gsub('/', ''))
+  end
+
+  # Logs in as the specified user
+  #
+  # @param user_or_fixture [User, Symbol] either a user or a symbol referring to a user from the fixtures
+  # @param password [String] the password to sign in with
+  def log_in(user_or_fixture, password = 'test123')
+    @user = user(user_or_fixture)
+    visit new_user_session_url
+    fill_in 'Email', with: @user.email
+    fill_in 'Password', with: password
+
+    click_button 'Sign in'
+  end
+
+  # Attempts to log out using the buttons in the top menu bar.
+  def log_out
+    within :css, '.header' do
+      find(:css, 'i.far.fa-caret-square-down').find(:xpath, '..').click
+    end
+
+    find_link('Sign Out').click
+  end
+
+  # Pretends the user has clicked the confirmation link in the email they received.
+  #
+  # @param user_or_fixture [User, Symbol] the user or a symbol referring to the user fixture to use
+  def confirm_email(user_or_fixture)
+    u = user(user_or_fixture)
+    visit user_confirmation_url(
+      params: { confirmation_token: u.confirmation_token }
+    )
+  end
+
+  # Translates the given parameter to a proper user.
+  #
+  # @param user_or_fixture [User, Symbol] either a user or a symbol referring to a fixture
+  def user(user_or_fixture)
+    if user_or_fixture.is_a? User
+      user_or_fixture
+    else
+      users(user_or_fixture)
+    end
+  end
+
+  # In the post form, this method will select the given tag.
+  #
+  # @param tag_name [String] the name of the tag
+  # @param create_new [Boolean] whether creating a new tag is allowed (default false)
+  def post_form_select_tag(tag_name, create_new = false)
+    # First enter the tag name into the select2 search field for the tag
+    within find_field('Tags (at least one):').find(:xpath, '..') do
+      find('.select2-search__field').fill_in(with: tag_name)
+    end
+
+    # Get the first item listed that is not the "Searching..." item
+    first_option = find('#select2-post_tags_cache-results li:first-child') { |el| el.text != 'Searching…' }
+
+    if first_option.first('span').text == tag_name
+      # If the text matches the tag name, first check whether we are creating a new tag.
+      # If so, confirm that we are allowed to. If all is good, actually click on the item.
+      if create_new || !first_option.text.include?('Create new tag')
+        first_option.click
+      else
+        raise "Expected to find tag with the name #{tag_name}, " \
+              'but could not select it from options without creating a new tag.'
+      end
+    elsif create_new
+      # The first item returned is not the tag we were looking for (another tag partial match + not existing)
+      # If we are allowed to create a tag, select the last option from the list, which is always the tag creation.
+      last_option = find('#select2-post_tags_cache-results li:last-child')
+      if last_option.first('span').text == tag_name
+        last_option.click
+      else
+        raise "Tried to select tag #{tag_name} for creation, but it does not seem to be a presented option."
+      end
+    else
+      # The first item returned is not the tag we were looking for, and we are not allowed to create a tag.
+      raise "Expected to find tag with the name #{tag_name}, " \
+            'but could not select it from options without creating a new tag.'
+    end
+  end
+end
diff --git a/test/controllers/donations_controller_test.rb b/test/controllers/donations_controller_test.rb
index 81105d8ed4857e7fba99b3e1fb7de15041c18603..c2ed31624b7c91162f9568b0b8aa13da63ffd121 100644
--- a/test/controllers/donations_controller_test.rb
+++ b/test/controllers/donations_controller_test.rb
@@ -9,6 +9,7 @@ class DonationsControllerTest < ActionController::TestCase
   end
 
   test 'should create PaymentIntent' do
+    skip unless Stripe.api_key
     post :intent, params: { currency: 'EUR', amount: '24.99', desc: 'Created from Rails test' }
     assert_response 200
     assert_not_nil assigns(:intent)&.id
diff --git a/test/controllers/email_logs_controller_test.rb b/test/controllers/email_logs_controller_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9addb0be163bd4e1988f3edc4af259e7cd354f98
--- /dev/null
+++ b/test/controllers/email_logs_controller_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class EmailLogsControllerTest < ActionDispatch::IntegrationTest
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/controllers/posts/drafts_test.rb b/test/controllers/posts/drafts_test.rb
index 21f629cb696fce1467ac59a7313cdeb165fae44e..bc7c9603b792105b9a5d8aaa355806bd177d2805 100644
--- a/test/controllers/posts/drafts_test.rb
+++ b/test/controllers/posts/drafts_test.rb
@@ -5,13 +5,31 @@ class PostsControllerTest < ActionController::TestCase
 
   test 'can save draft' do
     sign_in users(:standard_user)
-    post :save_draft, params: { path: 'test', post: 'test' }
+    post :save_draft, params: {
+      body: 'test_body',
+      comment: 'test_comment',
+      excerpt: 'test_excerpt',
+      license: '4',
+      path: 'test_path',
+      tag_name: 'test_tag_name',
+      tags: ['tag1', 'tag2'],
+      title: 'test_title'
+    }
     assert_response 200
     assert_nothing_raised do
       JSON.parse(response.body)
     end
-    assert_equal "saved_post.#{users(:standard_user).id}.test", JSON.parse(response.body)['key']
-    assert_equal 'test', RequestContext.redis.get(JSON.parse(response.body)['key'])
+
+    base_key = JSON.parse(response.body)['key']
+
+    assert_equal "saved_post.#{users(:standard_user).id}.test_path", base_key
+    assert_equal 'test_body', RequestContext.redis.get(base_key)
+    assert_equal 'test_comment', RequestContext.redis.get("#{base_key}.comment")
+    assert_equal 'test_excerpt', RequestContext.redis.get("#{base_key}.excerpt")
+    assert_equal 'test_tag_name', RequestContext.redis.get("#{base_key}.tag_name")
+    assert_equal '4', RequestContext.redis.get("#{base_key}.license")
+    assert_empty ['tag1', 'tag2'].difference(RequestContext.redis.smembers("#{base_key}.tags"))
+    assert_equal 'test_title', RequestContext.redis.get("#{base_key}.title")
   end
 
   test 'can delete draft' do
diff --git a/test/controllers/posts/help_test.rb b/test/controllers/posts/help_test.rb
index 48ba059abe5be0614c0ba8fb0d523f72db5b8802..db3e59f4d10b93e0feacff8b03dd44a0da140c43 100644
--- a/test/controllers/posts/help_test.rb
+++ b/test/controllers/posts/help_test.rb
@@ -25,20 +25,20 @@ class PostsControllerTest < ActionController::TestCase
   test 'moderator help requires authentication' do
     get :document, params: { slug: posts(:mod_help_article).doc_slug }
     assert_response 404
-    assert_not_nil assigns(:post)
+    assert_nil assigns(:post)
   end
 
   test 'regular user cannot get mod help' do
     sign_in users(:standard_user)
     get :document, params: { slug: posts(:mod_help_article).doc_slug }
     assert_response 404
-    assert_not_nil assigns(:post)
+    assert_nil assigns(:post)
   end
 
   test 'cannot get disabled help article' do
     sign_in users(:moderator)
     get :document, params: { slug: posts(:disabled_help_article).doc_slug }
     assert_response 404
-    assert_not_nil assigns(:post)
+    assert_nil assigns(:post)
   end
 end
diff --git a/test/controllers/posts/lock_test.rb b/test/controllers/posts/lock_test.rb
index 95a30470b1ce526b0803a3c767aa4269a9c6e5a7..cfb7b2ddc0b71518fb698ac74960de5af281df3f 100644
--- a/test/controllers/posts/lock_test.rb
+++ b/test/controllers/posts/lock_test.rb
@@ -79,4 +79,15 @@ class PostsControllerTest < ActionController::TestCase
     end
     assert_equal 'success', JSON.parse(response.body)['status']
   end
+
+  test 'Locks on posts expire' do
+    sign_in users(:moderator)
+    post :lock, params: { id: posts(:question_one).id, length: 1, format: :json }
+    assert_response 200
+
+    # Change the locked_until to have already passed
+    assigns(:post).update(locked_until: 1.second.ago)
+
+    assert_not assigns(:post).locked?
+  end
 end
diff --git a/test/controllers/search_controller_test.rb b/test/controllers/search_controller_test.rb
index 00792a96e546902667c800efb9a5033fd8f16635..9beba194c8c7a4073a1d6f411adfdf3fd75bf7ef 100644
--- a/test/controllers/search_controller_test.rb
+++ b/test/controllers/search_controller_test.rb
@@ -3,10 +3,10 @@ require 'test_helper'
 class SearchControllerTest < ActionController::TestCase
   include Devise::Test::ControllerHelpers
 
-  test 'get without a search term should result in nil' do
+  test 'get without a search term should result in all posts' do
     get :search
     assert_response 200
-    assert_nil assigns(:posts)
+    assert_not_nil assigns(:posts)
   end
 
   test 'get with a search term should have results' do
diff --git a/test/controllers/tags_controller_test.rb b/test/controllers/tags_controller_test.rb
index 176beff95889f389e0f5e9c6d670ad2553566e64..cdb3983d91c65a191c88be491d0b39fcebeedabf 100644
--- a/test/controllers/tags_controller_test.rb
+++ b/test/controllers/tags_controller_test.rb
@@ -12,7 +12,7 @@ class TagsControllerTest < ActionController::TestCase
     assert_not_nil assigns(:tags)
   end
 
-  test 'index with search params should return tags starting with search' do
+  test 'index with search params should return tags including search term' do
     get :index, params: { format: 'json', term: 'dis' }
     assert_response 200
     assert_nothing_raised do
@@ -20,7 +20,19 @@ class TagsControllerTest < ActionController::TestCase
     end
     assert_not_nil assigns(:tags)
     JSON.parse(response.body).each do |tag|
-      assert_equal true, tag['name'].start_with?('dis')
+      assert_equal true, tag['name'].include?('dis') || tag['tag_synonyms'].any? { |ts| ts['name'].include?('syn') }
+    end
+  end
+
+  test 'index with search params should return tags whose synonyms include search term' do
+    get :index, params: { format: 'json', term: 'syn' }
+    assert_response 200
+    assert_nothing_raised do
+      JSON.parse(response.body)
+    end
+    assert_not_nil assigns(:tags)
+    JSON.parse(response.body).each do |tag|
+      assert_equal true, tag['name'].include?('syn') || tag['tag_synonyms'].any? { |ts| ts['name'].include?('syn') }
     end
   end
 
@@ -125,6 +137,26 @@ class TagsControllerTest < ActionController::TestCase
     assert_equal 'things', assigns(:tag).excerpt
   end
 
+  test 'should update tag with synonym addition' do
+    sign_in users(:deleter)
+    patch :update, params: { id: categories(:main).id, tag_id: tags(:topic).id,
+                             tag: { tag_synonyms_attributes: { '1': { name: 'conversation' } } } }
+    assert_response 302
+    assert_redirected_to tag_path(id: categories(:main).id, tag_id: tags(:topic).id)
+    assert_not_nil assigns(:tag)
+    assert_equal 'conversation', assigns(:tag).tag_synonyms.first&.name
+  end
+
+  test 'should update tag with synonym removal' do
+    sign_in users(:deleter)
+    patch :update, params: { id: categories(:main).id, tag_id: tags(:base).id,
+                             tag: { tag_synonyms_attributes: { '1': { id: tag_synonyms(:base_synonym).id, _destroy: 'true' } } } }
+    assert_response 302
+    assert_redirected_to tag_path(id: categories(:main).id, tag_id: tags(:base).id)
+    assert_not_nil assigns(:tag)
+    assert_equal true, (assigns(:tag).tag_synonyms.none? { |ts| ts.name == 'synonym' })
+  end
+
   test 'should prevent a tag being its own parent' do
     sign_in users(:deleter)
     patch :update, params: { id: categories(:main).id, tag_id: tags(:topic).id,
diff --git a/test/controllers/users/sessions_controller_test.rb b/test/controllers/users/sessions_controller_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b06e1b602c05eceef740f5b1cca6b82f4edf4e1b
--- /dev/null
+++ b/test/controllers/users/sessions_controller_test.rb
@@ -0,0 +1,17 @@
+require 'test_helper'
+
+class Users::SessionsControllerTest < ActionController::TestCase
+  include Devise::Test::ControllerHelpers
+  include ApplicationHelper
+
+  test 'should sign in with 2fa backup code' do
+    @request.env['devise.mapping'] = Devise.mappings[:user]
+    Users::SessionsController.first_factor << users(:enabled_2fa).id
+    post :verify_code, params: { uid: users(:enabled_2fa).id, code: 'M8lENyehyCvo9F9MbyTl1aOL' }
+    assert_response 302
+    assert_not_nil flash[:warning]
+    assert_not_nil current_user
+    assert_nil current_user.backup_2fa_code
+    assert_not current_user.enabled_2fa
+  end
+end
diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb
index 17a18c257f006a6440b8bef65b7ceafe03255ad5..0aa5d08633d57e9b7556807f9b9cea9638159184 100644
--- a/test/controllers/users_controller_test.rb
+++ b/test/controllers/users_controller_test.rb
@@ -113,16 +113,41 @@ class UsersControllerTest < ActionController::TestCase
     assert_response 200
   end
 
-  test 'should update profile text' do
+  test 'should redirect & show success notice on profile update' do
     sign_in users(:standard_user)
-    patch :update_profile, params: { user: { profile_markdown: 'ABCDEF GHIJKL', website: 'https://example.com/user',
-                                             twitter: '@standard_user' } }
+    patch :update_profile, params: { user: { username: 'std' } }
     assert_response 302
     assert_not_nil flash[:success]
     assert_not_nil assigns(:user)
     assert_equal users(:standard_user).id, assigns(:user).id
-    assert_not_nil assigns(:user).profile
-    assert_equal 'standard_user', assigns(:user).twitter
+  end
+
+  test 'should update profile text' do
+    sign_in users(:standard_user)
+    patch :update_profile, params: {
+      user: { profile_markdown: 'ABCDEF GHIJKL' }
+    }
+    assert_equal assigns(:user).profile.strip, '<p>ABCDEF GHIJKL</p>'
+  end
+
+  test 'should update websites' do
+    sign_in users(:standard_user)
+    patch :update_profile, params: {
+      user: { user_websites_attributes: {
+        '0': { label: 'web', url: 'example.com' }
+      } }
+    }
+    assert_not_nil assigns(:user).user_websites
+    assert_equal 'web', assigns(:user).user_websites.first.label
+    assert_equal 'example.com', assigns(:user).user_websites.first.url
+  end
+
+  test 'should update user discord link' do
+    sign_in users(:standard_user)
+    patch :update_profile, params: {
+      user: { discord: 'example_user#1234' }
+    }
+    assert_equal 'example_user#1234', assigns(:user).discord
   end
 
   test 'should get full posts list for a user' do
diff --git a/test/fixtures/category_filter_defaults.yml b/test/fixtures/category_filter_defaults.yml
new file mode 100644
index 0000000000000000000000000000000000000000..697b14ee7c7510bbb4a9103c3419463b70d9a4b0
--- /dev/null
+++ b/test/fixtures/category_filter_defaults.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+main_default_filter:
+  user: standard_user
+  filter: one
+  category: main
+
+meta_default_filter:
+  user: standard_user
+  filter: one
+  category: meta
diff --git a/test/fixtures/community_users.yml b/test/fixtures/community_users.yml
index 31d28a04fa272cf2274e1b41de05fa721c2ab043..4d7ac69639e34698622803a8ad1409eb1a08d0ef 100644
--- a/test/fixtures/community_users.yml
+++ b/test/fixtures/community_users.yml
@@ -1,3 +1,10 @@
+sample_basic_user:
+  user: basic_user
+  community: sample
+  is_admin: false
+  is_moderator: false
+  reputation: 1
+
 sample_standard_user:
   user: standard_user
   community: sample
diff --git a/test/fixtures/email_logs.yml b/test/fixtures/email_logs.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7ca782a8cb4b8c4b06b52c5fb157df93ee087daa
--- /dev/null
+++ b/test/fixtures/email_logs.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+  log_type: MyString
+  destination: MyString
+  data: MyText
+
+two:
+  log_type: MyString
+  destination: MyString
+  data: MyText
diff --git a/test/fixtures/filters.yml b/test/fixtures/filters.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f47aa1e3150f70f81172ee51e494e6d6291d006f
--- /dev/null
+++ b/test/fixtures/filters.yml
@@ -0,0 +1,19 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+  name: MyFilterOne
+  user: standard_user
+  min_score: 1.5
+  max_score: 1.5
+  min_answers: 1
+  max_answers: 1
+  status: MyString
+
+two:
+  name: MyFilterTwo
+  user: standard_user
+  min_score: 1.5
+  max_score: 1.5
+  min_answers: 1
+  max_answers: 1
+  status: MyString
diff --git a/test/fixtures/posts.yml b/test/fixtures/posts.yml
index bd4c76383cb81d2101989a582feb4979711d253c..c3597fb96896631d447eb8c2c3c8e26b0f75ce34 100644
--- a/test/fixtures/posts.yml
+++ b/test/fixtures/posts.yml
@@ -1,8 +1,8 @@
 question_one:
   post_type: question
-  title: Q1 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: Q1 - This is test question number one
+  body: This is the body of test question one. Note that we did not include any markdown or HTML in here.
+  body_markdown: This is the body of test question one. Note that we did not include any markdown or HTML in here.
   tags_cache:
     - discussion
     - support
@@ -21,9 +21,9 @@ question_one:
 
 question_two:
   post_type: question
-  title: Q2 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  title: Q2 - This is test question number two
+  body: This is the body of test question two. Note that we did not include any markdown or HTML in here.
+  body_markdown: This is the body of test question two. Note that we did not include any markdown or HTML in here.
   tags_cache:
     - discussion
     - support
@@ -42,9 +42,9 @@ question_two:
 
 bad_answers:
   post_type: question
-  title: Q1 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: Q3B - This question has bad answers
+  body: Q3B - This question is in the category main, posted by standard_user. It has bad answers.
+  body_markdown: Q3B - This question is in the category main, posted by standard_user. It has bad answers.
   tags_cache:
     - discussion
     - support
@@ -63,9 +63,9 @@ bad_answers:
 
 deleted:
   post_type: question
-  title: Q3D ZY XWVUTS RQPONM LKJIHG FEDCBA
-  body: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  title: Q3D - This question is deleted
+  body: Q3D - This question is in the category main, posted by standard_user. It has been deleted by deleter.
+  body_markdown: Q3D - This question is in the category main, posted by standard_user. It has been deleted by deleter.
   tags_cache:
     - discussion
     - support
@@ -87,9 +87,9 @@ deleted:
 
 deleted_mod:
   post_type: question
-  title: Q3D ZY XWVUTS RQPONM LKJIHG FEDCBA
-  body: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  title: Q3DM - This question is deleted by a moderator
+  body: Q3DM - This question is in category main, posted by standard_user. It has been deleted by moderator.
+  body_markdown: Q3DM - This question is in category main, posted by standard_user. It has been deleted by moderator.
   tags_cache:
     - discussion
     - support
@@ -111,9 +111,9 @@ deleted_mod:
 
 closed:
   post_type: question
-  title: Q4C ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  title: Q4C - This question is closed
+  body: Q4C - This question is in the category main, posted by standard_user. It has been closed by closer.
+  body_markdown: Q4C - This question is in the category main, posted by standard_user. It has been closed by closer.
   tags_cache:
     - discussion
     - support
@@ -135,9 +135,9 @@ closed:
 
 locked:
   post_type: question
-  title: Q4C ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  title: Q4L - This question is locked
+  body: Q4L - This question is in the category main, posted by standard_user. It has been locked by deleter.
+  body_markdown: Q4L - This question is in the category main, posted by standard_user. It has been locked by deleter.
   tags_cache:
     - discussion
     - support
@@ -150,7 +150,6 @@ locked:
   locked: true
   locked_by: deleter
   locked_at: 2019-01-01T00:00:00.000000Z
-  locked_until: 2020-01-01T00:00:00.000000Z
   user: standard_user
   community: sample
   category: main
@@ -160,9 +159,9 @@ locked:
 
 locked_mod:
   post_type: question
-  title: LM ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  title: Q4LM - This question is locked by a moderator
+  body: Q4LM - This question is in the category main, posted by standard_user. It has been locked by moderator.
+  body_markdown: Q4LM - This question is in the category main, posted by standard_user. It has been locked by moderator.
   tags_cache:
     - discussion
     - support
@@ -175,7 +174,6 @@ locked_mod:
   locked: true
   locked_by: moderator
   locked_at: 2019-01-01T00:00:00.000000Z
-  locked_until: 2020-01-01T00:00:00.000000Z
   user: standard_user
   community: sample
   category: main
@@ -185,9 +183,9 @@ locked_mod:
 
 free_edit:
   post_type: free_edit
-  title: FE ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: FE - This is a post of the type free_edit
+  body: FE - This is a free edit post, in the category main, posted by moderator.
+  body_markdown: FE - This is a free edit post, in the category main, posted by moderator.
   tags_cache:
     - discussion
     - support
@@ -206,9 +204,9 @@ free_edit:
 
 high_trust:
   post_type: question
-  title: Q1 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: Q5 - This is a question with high trust
+  body: Q5 - By not providing any information, you know you can trust everything said in this post.
+  body_markdown: Q5 - By not providing any information, you know you can trust everything said in this post.
   tags_cache:
     - discussion
     - support
@@ -227,8 +225,8 @@ high_trust:
 
 answer_one:
   post_type: answer
-  body: A1 ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: A1 - This is the first answer to question number 1 (Q1). It was posted by standard user.
+  body_markdown: A1 - This is the first answer to question number 1 (Q1). It was posted by standard user.
   score: 0.5
   parent: question_one
   user: standard_user
@@ -240,8 +238,8 @@ answer_one:
 
 answer_two:
   post_type: answer
-  body: A2 ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: A2 - This is the second answer to question number 1 (Q1). It was posted by editor.
+  body_markdown: A2 - This is the second answer to question number 1 (Q1). It was posted by editor.
   score: 0.5
   parent: question_one
   user: editor
@@ -253,8 +251,8 @@ answer_two:
 
 comments_disabled:
   post_type: answer
-  body: A2 ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: A3CD - This is the third answer to question number 1 (Q1). It has comments disabled. Posted by closer.
+  body_markdown: A3 - This is the third answer to question number 1 (Q1). It has comments disabled. Posted by closer.
   score: 0.5
   parent: question_one
   user: closer
@@ -267,8 +265,8 @@ comments_disabled:
 
 bad_answer:
   post_type: answer
-  body: A2 ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: A3BA - This is the fourth answer to question number 1 (Q1). It has a bad score. Posted by editor.
+  body_markdown: A4 - This is the fourth answer to question number 1 (Q1). It has a bad score. Posted by editor.
   score: 0.4
   parent: question_one
   user: editor
@@ -280,8 +278,8 @@ bad_answer:
 
 really_old_answer:
   post_type: answer
-  body: A3RO ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: A3RO - This is the fifth answer to question number 1 (Q1). It is very old. Posted by standard_user.
+  body_markdown: A3RO - This is the fifth answer to question number 1 (Q1). It is very old. Posted by standard_user.
   score: 2
   parent: question_one
   user: standard_user
@@ -294,8 +292,8 @@ really_old_answer:
 
 deleted_answer:
   post_type: answer
-  body: A4D ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: A4D - This is the sixth answer to question number 1 (Q1). It is deleted. Posted by closer.
+  body_markdown: A4D - This is the sixth answer to question number 1 (Q1). It is deleted. Posted by closer.
   score: 0.5
   parent: question_one
   user: closer
@@ -310,8 +308,8 @@ deleted_answer:
 
 policy_doc:
   post_type: policy_doc
-  body: PD ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ZY XWVUTS RQPONM LKJIHG FEDCBA ZY XWVUTS RQPONM LKJIHG FEDCBA
+  body: PD - This is a policy document called "Terms of Service", or "tos" for short.
+  body_markdown: PD - This is a policy document called "Terms of Service", or "tos" for short.
   title: Terms of Service
   doc_slug: tos
   user: admin
@@ -330,9 +328,9 @@ help_doc:
 
 article_one:
   post_type: article
-  title: Q1 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: Art1 - This is the first article
+  body: Testing is an important practice, which should probably be discussed in this test article.
+  body_markdown: Testing is an important practice, which should probably be discussed in this test article.
   tags_cache:
     - discussion
     - support
@@ -351,9 +349,9 @@ article_one:
 
 deleted_article:
   post_type: article
-  title: Q1 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: Art2D - This is a deleted article
+  body: Articles are most likely deleted because they have no inherent value, just like this sentence.
+  body_markdown: Articles are most likely deleted because they have no inherent value, just like this sentence.
   tags_cache:
     - discussion
     - support
@@ -375,8 +373,8 @@ deleted_article:
 
 help_article:
   post_type: help_doc
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  body: HA1 - This help article is in the category Site information, with "sample" as slug.
+  body_markdown: HA1 - This help article is in the category Site information, with "sample" as slug.
   user: system
   community: sample
   help_category: Site Information
@@ -385,8 +383,8 @@ help_article:
 
 mod_help_article:
   post_type: help_doc
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  body: HA2 - This help article is in the category for moderators only, with "sample-mod" as slug.
+  body_markdown: HA2 - This help article is in the category for moderators only, with "sample-mod" as slug.
   user: system
   community: sample
   help_category: $Moderator
@@ -395,8 +393,8 @@ mod_help_article:
 
 disabled_help_article:
   post_type: help_doc
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  body: HA3 - This help article is disabled. It is in the category disabled, with "sample-disable" as slug.
+  body_markdown: HA3 - This help article is disabled. It is in the category disabled, with "sample-disable" as slug.
   user: system
   community: sample
   help_category: $Disabled
@@ -405,9 +403,9 @@ disabled_help_article:
 
 blog_post:
   post_type: blog_post
-  title: B1 ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
-  body_markdown: ABCDEF GHIJKL MNOPQR STUVWX YZ ABCDEF GHIJKL MNOPQR STUVWX YZ
+  title: B1 - This is a blog post in the main category
+  body: B1 - This blog post is in the main category, posted by closer.
+  body_markdown: B1 - This blog post is in the main category, posted by closer.
   tags_cache:
     - discussion
     - support
diff --git a/test/fixtures/tag_sets.yml b/test/fixtures/tag_sets.yml
index df6517d05a995070b1ba35905d4dddc5e84db772..57b91b8a2caa6960e6bf2d925d8821dfe49dd3f1 100644
--- a/test/fixtures/tag_sets.yml
+++ b/test/fixtures/tag_sets.yml
@@ -5,3 +5,7 @@ main:
 meta:
   name: Meta
   community: sample
+
+empty:
+  name: 'Empty'
+  community: sample
diff --git a/test/fixtures/tag_synonyms.yml b/test/fixtures/tag_synonyms.yml
new file mode 100644
index 0000000000000000000000000000000000000000..48965bc780407b939a9dad31d36bd15a26422235
--- /dev/null
+++ b/test/fixtures/tag_synonyms.yml
@@ -0,0 +1,5 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+base_synonym:
+  name: synonym
+  tag: base
diff --git a/test/fixtures/tags.yml b/test/fixtures/tags.yml
index de28397edc0b3dff9cb435ab40e5e420264e5770..422794b4e61f74d1188c718f7a4dba5eb27ddcb5 100644
--- a/test/fixtures/tags.yml
+++ b/test/fixtures/tags.yml
@@ -10,6 +10,7 @@ support:
 
 bug:
   name: bug
+  excerpt: use for bug reports
   community: sample
   tag_set: main
 
@@ -38,3 +39,8 @@ child:
   community: sample
   tag_set: main
   parent: topic
+
+base:
+  name: base
+  community: sample
+  tag_set: main
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
index e60c01e6c45a1425b6b6260cfdf0a01d88b7cf05..9cc566f84a57fac559eda8ccd97cfe2a3faed289 100644
--- a/test/fixtures/users.yml
+++ b/test/fixtures/users.yml
@@ -1,6 +1,15 @@
+basic_user:
+  email: basic@qpixel-test.net
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
+  sign_in_count: 42
+  username: basic_user
+  is_global_admin: false
+  is_global_moderator: false
+  confirmed_at: 2020-01-01T00:00:00.000000Z
+
 standard_user:
   email: standard@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: standard_user
   is_global_admin: false
@@ -9,7 +18,7 @@ standard_user:
 
 closer:
   email: closer@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: closer
   website: https://example.com/closer
@@ -22,7 +31,7 @@ closer:
 
 editor:
   email: editor@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: editor
   is_global_admin: false
@@ -33,7 +42,7 @@ editor:
 
 deleter:
   email: delete@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: deleter
   is_global_admin: false
@@ -42,7 +51,7 @@ deleter:
 
 moderator:
   email: moderator@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: moderator
   is_global_admin: false
@@ -51,7 +60,7 @@ moderator:
 
 admin:
   email: admin@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: admin
   is_global_admin: false
@@ -60,7 +69,7 @@ admin:
 
 global_moderator:
   email: global-moderator@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: global-moderator
   is_global_admin: false
@@ -69,7 +78,7 @@ global_moderator:
 
 global_admin:
   email: global-admin@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: global-admin
   is_global_admin: true
@@ -78,7 +87,7 @@ global_admin:
 
 no_community_user:
   email: no_community_user@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: no_community_user
   is_global_admin: false
@@ -88,7 +97,7 @@ no_community_user:
 system:
   id: -99
   email: system@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: system
   is_global_admin: true
@@ -97,7 +106,7 @@ system:
 
 deleted_account:
   email: deleted@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: deleted_account
   confirmed_at: 2020-01-01T00:00:00.000000Z
@@ -107,7 +116,17 @@ deleted_account:
 
 deleted_profile:
   email: deleted_profile@qpixel-test.net
-  encrypted_password: abcdefghijklmnopqrstuvwxyz
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
   sign_in_count: 1337
   username: deleted_profile
   confirmed_at: 2020-01-01T00:00:00.000000Z
+
+enabled_2fa:
+  email: 2fa@qpixel-test.net
+  encrypted_password: '$2a$11$roUHXKxecjyQ72Qn7DWs3.9eRCCoRn176kX/UNb/xiue3aGqf7xEW'
+  sign_in_count: 1337
+  username: enabled_2fa
+  confirmed_at: 2020-01-01T00:00:00.000000Z
+  enabled_2fa: true
+  two_factor_token: WT65ANYXBB2SBR7III7IVWNJDS4PQF2T
+  backup_2fa_code: M8lENyehyCvo9F9MbyTl1aOL
diff --git a/test/helpers/comments_helper_test.rb b/test/helpers/comments_helper_test.rb
index fca0964bd13acc515b30657c0ab9c8f6ed54e6c6..42c6bde74c2fa405a88a350e68110c9542dd6d19 100644
--- a/test/helpers/comments_helper_test.rb
+++ b/test/helpers/comments_helper_test.rb
@@ -28,7 +28,7 @@ class CommentsHelperTest < ActionView::TestCase
   test '[flags?] substitution' do
     expected = {
       '[flag] me if you can' => "<a href=\"#{flag_history_url(users(:standard_user).id)}\">flag</a> me if you can",
-      '\'cause it\'s our [flags]hip product' => "\'cause it\'s our <a href=\"#{flag_history_url(users(:standard_user).id)}\">flags</a>hip product",
+      '\'cause it\'s our [flags]hip product' => "'cause it's our <a href=\"#{flag_history_url(users(:standard_user).id)}\">flags</a>hip product",
       'yeah bad pun - [flagged] and downvoted' => 'yeah bad pun - [flagged] and downvoted'
     }
     expected.each do |input, expect|
diff --git a/test/jobs/clean_up_spammy_users_job_test.rb b/test/jobs/clean_up_spammy_users_job_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8d84e8a91b4151c332c29ce243a20a13d2511a44
--- /dev/null
+++ b/test/jobs/clean_up_spammy_users_job_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class CleanUpSpammyUsersJobTest < ActiveJob::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/mailers/previews/two_factor_mailer_preview.rb b/test/mailers/previews/two_factor_mailer_preview.rb
index 804f8701237ecca0ba46da27aa3d14343fdbe1ca..2857de292e2894bb3dcd3c570520e208a5cc517e 100644
--- a/test/mailers/previews/two_factor_mailer_preview.rb
+++ b/test/mailers/previews/two_factor_mailer_preview.rb
@@ -7,4 +7,8 @@ class TwoFactorMailerPreview < ActionMailer::Preview
   def login_email_preview
     TwoFactorMailer.with(user: User.last, host: 'testhost.codidact.com').login_email
   end
+
+  def backup_code_preview
+    TwoFactorMailer.with(user: User.last, host: 'testhost.codidact.com').backup_code
+  end
 end
diff --git a/test/models/category_filter_default_test.rb b/test/models/category_filter_default_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..72358b7c03902c854b32be4b350bdea5572f410d
--- /dev/null
+++ b/test/models/category_filter_default_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class CategoryFilterDefaultTest < ActiveSupport::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/models/email_log_test.rb b/test/models/email_log_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..12c90407fb8aa6c6ecbb07cb9d2a946130423cba
--- /dev/null
+++ b/test/models/email_log_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class EmailLogTest < ActiveSupport::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/models/filter_test.rb b/test/models/filter_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..418de9e94f6cae1f83207e6f94d0a9dbb5834612
--- /dev/null
+++ b/test/models/filter_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class FilterTest < ActiveSupport::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/models/tag_set_test.rb b/test/models/tag_set_test.rb
index c5ea5ed117f34bd83c271398c1eaa0357116f15e..39e8b086bf2762fa366eec284a8eecc06330dc1d 100644
--- a/test/models/tag_set_test.rb
+++ b/test/models/tag_set_test.rb
@@ -1,7 +1,18 @@
 require 'test_helper'
 
 class TagSetTest < ActiveSupport::TestCase
-  # test "the truth" do
-  #   assert true
-  # end
+  include CommunityRelatedHelper
+
+  test 'is community related' do
+    assert_community_related(TagSet)
+  end
+
+  test 'with_paths method should respect no_excerpt' do
+    main = TagSet.main
+
+    all = main.with_paths.size
+    excerptless = main.with_paths(true).size
+
+    assert_not_equal(all, excerptless)
+  end
 end
diff --git a/test/models/tag_synonym_test.rb b/test/models/tag_synonym_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a5ea423be62aeaf90e7264ab4ee7d2b32bc15c1d
--- /dev/null
+++ b/test/models/tag_synonym_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class TagSynonymTest < ActiveSupport::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end
diff --git a/test/models/user_test.rb b/test/models/user_test.rb
index 2335370686d0a6a5dbcbb0493622b59417cc4d95..9d8cfd64b967213a8c3afe0aa4bdbf4d229ddeb2 100644
--- a/test/models/user_test.rb
+++ b/test/models/user_test.rb
@@ -25,6 +25,39 @@ class UserTest < ActiveSupport::TestCase
     assert_equal 'example.com', users(:closer).website_domain
   end
 
+  test 'can_update should determine if the user can update a given post' do
+    basic_user = users(:basic_user)
+    post_owner = users(:standard_user)
+    category = categories(:main)
+    license = licenses(:cc_by_sa)
+    post_type = post_types(:question)
+    post = Post.create(body_markdown: 'rev 1',
+                       body: '<p>rev 1</p>',
+                       title: 'test post',
+                       tags_cache: ['test'],
+                       license: license,
+                       score: 0,
+                       user: post_owner,
+                       post_type: post_type,
+                       category: category)
+
+    assert_equal true, post_owner.can_update(post, post_type)
+    assert_equal false, basic_user.can_update(post, post_type)
+    assert_equal true, users(:moderator).can_update(post, post_type)
+    assert_equal true, users(:editor).can_update(post, post_type)
+
+    basic_user.community_user.grant_privilege!('unrestricted')
+    assert_equal false, basic_user.can_update(post, post_type)
+    assert_equal true, basic_user.can_update(post, post_types(:free_edit))
+  end
+
+  test 'can_push_to_network should determine if the user can push updates to network' do
+    post_type = post_types(:help_doc)
+    assert_equal false, users(:standard_user).can_push_to_network(post_type)
+    assert_equal true, users(:global_moderator).can_push_to_network(post_type)
+    assert_equal true, users(:global_admin).can_push_to_network(post_type)
+  end
+
   test 'community_user is based on context' do
     user = users(:standard_user)
     community = Community.create(host: 'other', name: 'Other')
diff --git a/test/system/login_test.rb b/test/system/login_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5f799dbc5b1d1bc943de6e4c089a98951a52497a
--- /dev/null
+++ b/test/system/login_test.rb
@@ -0,0 +1,57 @@
+require 'application_system_test_case'
+
+class LoginTest < ApplicationSystemTestCase
+  test 'User can register a new account and sign-in to it after confirming their email' do
+    email = 'test@test.com'
+    username = 'Test User'
+    password = 'login_test_1'
+
+    # Sign up for an account
+    visit root_url
+    click_on 'Sign Up'
+    fill_in 'Email', with: email
+    fill_in 'Username', with: username
+    fill_in 'Password', with: password
+    fill_in 'Password confirmation', with: password
+
+    # Check that the user is created in the DB
+    assert_difference 'User.count' do
+      click_on 'Sign up'
+    end
+
+    user = User.last
+
+    # Try logging in directly, this should fail because not confirmed yet
+    log_in user, password
+    assert_selector '.notice', text: 'You have to confirm your email address before continuing.'
+
+    # Confirm email and sign in again, should succeed this time
+    confirm_email user
+    log_in user, password
+    assert_selector '.notice', text: 'Signed in successfully.'
+  end
+
+  test 'User can sign in and is redirected back to the page they were on' do
+    # Start on the users page
+    visit users_url
+
+    # Click the sign in button (top right)
+    # Don't go through log_in helper, since we want to test the sign-in fully here
+    click_on 'Sign In'
+    fill_in 'Email', with: users(:standard_user).email
+    fill_in 'Password', with: 'test123'
+    click_button 'Sign in'
+
+    # We should see a message that we have signed in, and we should be on the users page again.
+    assert_selector '.notice', text: 'Signed in successfully.'
+    assert_current_path users_url
+  end
+
+  test 'User can sign out' do
+    log_in :standard_user
+    assert_selector '.notice', text: 'Signed in successfully.'
+
+    log_out
+    assert_selector '.notice', text: 'Signed out successfully.'
+  end
+end
diff --git a/test/system/post_test.rb b/test/system/post_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..d99cd266cab58145a3a2c59942ef050ee184fa33
--- /dev/null
+++ b/test/system/post_test.rb
@@ -0,0 +1,166 @@
+require 'application_system_test_case'
+
+class PostTest < ApplicationSystemTestCase
+  # -------------------------------------------------------
+  # Create
+  # -------------------------------------------------------
+
+  test 'Not-signed in user cannot create a post' do
+    visit root_url
+    click_on 'Create Post'
+
+    assert_current_path new_user_session_url
+  end
+
+  test 'Signed in user can create a question' do
+    category = categories(:meta)
+    log_in :standard_user
+    visit category_path(category)
+    click_on 'Create Post'
+
+    body_text = 'When running QPixel, users are generally supposed to be able to create posts. ' \
+                'Does that actually work?'
+    title_text = 'Can a signed-in user create a post?'
+
+    fill_in 'Body', with: body_text
+    fill_in 'Summarize your post with a title:', with: title_text
+    post_form_select_tag tags(:faq).name
+
+    # Check that the post is actually created
+    assert_difference 'Post.count' do
+      click_on "Save Post in #{category.name}"
+    end
+
+    # Verify that the post is correctly created
+    new_post = Post.last
+    assert_equal body_text, new_post.body_markdown
+    assert_equal title_text, new_post.title
+    assert_equal [tags(:faq)], new_post.tags
+  end
+
+  test 'Creating a question is blocked when body is too short' do
+    category = categories(:meta)
+    log_in :standard_user
+    visit category_path(category)
+    click_on 'Create Post'
+
+    fill_in 'Summarize your post with a title:', with: 'Initial title is of sufficient length'
+    post_form_select_tag tags(:faq).name
+    fill_in 'Body', with: 'Short'
+
+    # Check that the button is disabled
+    find_button "Save Post in #{category.name}", disabled: true
+
+    # After filling out body correctly, verify that the button becomes enabled
+    fill_in 'Body', with: 'This body should pass the minimum length requirements for questions in the meta category.'
+    find_button "Save Post in #{category.name}", disabled: false
+  end
+
+  test 'Creating a question is blocked when title is too short' do
+    category = categories(:meta)
+    log_in :standard_user
+    visit category_path(category)
+    click_on 'Create Post'
+
+    fill_in 'Body', with: 'This body should pass the minimum length requirements for questions in the meta category.'
+    post_form_select_tag tags(:faq).name
+    fill_in 'Summarize your post with a title:', with: 'Too short'
+
+    # Check that the button is disabled
+    find_button "Save Post in #{category.name}", disabled: true
+
+    # After filling out the title, verify that the button becomes enabled
+    fill_in 'Summarize your post with a title:', with: 'Updated title is of sufficient length'
+    find_button "Save Post in #{category.name}", disabled: false
+  end
+
+  test 'Signed in user gets to pick post type for post creation in categories with multiple types' do
+    category = categories(:main)
+    log_in :standard_user
+    visit category_path(category)
+    click_on 'Create Post'
+
+    # All the top level post types set should be present
+    category.post_types.where(is_top_level: true).each do |pt|
+      assert_link pt.name.underscore.humanize
+    end
+
+    # Pick a non-question post type
+    post_type = category.post_types.where(is_top_level: true).where.not(name: 'Question').first
+
+    # After clicking on a post type, we should be on the creation page of the correct category and post type.
+    click_on post_type.name.underscore.humanize
+    assert_current_path new_category_post_url(post_type.id, category.id)
+  end
+
+  test 'Signed in user can answer question' do
+    log_in :standard_user
+    post = posts(:question_two)
+    visit post_path(post)
+
+    # Answer the question
+    answer_text = 'You can do this by running the rails system tests, rails test:system.'
+    fill_in 'Body', with: answer_text
+    assert_difference 'Post.count' do
+      click_on "Save Post in #{post.category.name}"
+    end
+
+    # We should now be looking at our answer, look for the text on the page
+    assert_text answer_text
+
+    # The original post should also still be on the page
+    assert_text post.body
+  end
+
+  # -------------------------------------------------------
+  # Show
+  # -------------------------------------------------------
+
+  test 'Anyone can view question' do
+    post = posts(:question_one)
+    visit post_url(post)
+
+    # Check that the post is displayed somewhere on the page
+    assert_text post.title
+    assert_text post.body
+
+    # Check that answers are displayed somewhere on the page
+    assert post.children.any?, 'The post for this system test should have answers'
+    post.children.where(deleted: false).each do |child|
+      assert_text child.body
+    end
+  end
+
+  test 'Anyone can sort answers' do
+    post = posts(:question_one)
+    visit post_url(post)
+
+    click_on 'Active'
+
+    assert_current_path post_url(post, sort: 'active')
+  end
+
+  # -------------------------------------------------------
+  # Edit
+  # -------------------------------------------------------
+
+  test 'User with edit permissions can directly edit question' do
+    log_in :editor
+    post = posts(:question_two)
+    visit post_url(post)
+
+    within ".post[data-post-id=\"#{post.id}\"]" do
+      click_on 'Edit'
+    end
+
+    updated_text = 'This is the updated body text, which should be quite different from the original text!'
+    fill_in 'Body', with: updated_text
+    fill_in 'Edit Comment', with: 'Major Rewrite for Tests'
+
+    click_on "Save Post in #{post.category.name}"
+    assert_current_path post_url(post)
+
+    # Check that the page shows the updated text
+    assert_text updated_text
+  end
+end
diff --git a/test/test_helper.rb b/test/test_helper.rb
index c41d9b27cb6b2dfb3db4aeaf003e4aca620fc94d..638cf4085e5b6ac873fb83e28d4444f1e82bf004 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -14,18 +14,39 @@ class ActiveSupport::TestCase
   # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
   fixtures :all
 
-  setup :load_seeds
+  setup :set_request_context
 
   teardown :clear_cache
 
   protected
 
-  def load_seeds
+  # Overrides minitest' load_fixtures method to also load our seeds when fixtures are loaded.
+  # This means that we can leverage it's smart transaction behavior to significantly speed up our tests (by a factor of 6).
+  def load_fixtures(config)
+    # Loading a fixture deletes all data in the same tables, so it has to happen before we load our normal seeds.
+    fixture_data = super(config)
+    load_tags_paths
+    load_seeds
+
+    # We do need to return the same thing as the original method to not break fixtures
+    fixture_data
+  end
+
+  # Ensures that a community is set for all requests that will be made (on this thread)
+  def set_request_context
     comm = Community.first || Community.create(name: 'Test', host: 'test.host')
     RequestContext.community = comm
+  end
+
+  def load_seeds
+    set_request_context
     Rails.application.load_seed
   end
 
+  def load_tags_paths
+    ActiveRecord::Base.connection.execute File.read(Rails.root.join('db/scripts/create_tags_path_view.sql'))
+  end
+
   def clear_cache
     Rails.cache.clear
   end