diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4cfd977..1c6ead0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,29 @@ jobs: - name: Lint code for consistent style run: bin/rubocop + herb: + name: Herb check + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Install packages + run: sudo apt-get update && sudo apt-get install --no-install-recommends -y libvips + + - name: Checkout code + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Set up Ruby + uses: ruby/setup-ruby@a0102e0972be65f351c307e2d64b9314a57c8073 # v1.324.0 + with: + ruby-version: .ruby-version + bundler-cache: true + + - name: Check that every HTML template compiles through Herb + run: bin/rails herb:check + lint-actions: name: GitHub Actions audit runs-on: ubuntu-latest diff --git a/Gemfile.lock b/Gemfile.lock index 3d02eff..65641b8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -32,7 +32,7 @@ GIT GIT remote: https://github.com/rails/rails.git - revision: 1a02651ac37fb64b4de2a2b73461d86acf9c98fb + revision: e3d5c569d217c56c022b04acb127a8c24dbe9685 branch: main specs: actioncable (8.2.0.alpha) @@ -63,10 +63,10 @@ GIT rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) - rails-html-sanitizer (~> 1.6) + rails-html-sanitizer (~> 1.7) useragent (~> 0.16) actiontext (8.2.0.alpha) - action_text-trix (~> 2.1.15) + action_text-trix (~> 2.1.16) actionpack (= 8.2.0.alpha) activerecord (= 8.2.0.alpha) activestorage (= 8.2.0.alpha) @@ -77,11 +77,12 @@ GIT activesupport (= 8.2.0.alpha) builder (~> 3.1) erubi (~> 1.11) + herb (>= 0.10) rails-dom-testing (~> 2.2) - rails-html-sanitizer (~> 1.6) + rails-html-sanitizer (~> 1.7) activejob (8.2.0.alpha) activesupport (= 8.2.0.alpha) - globalid (>= 0.3.6) + globalid (>= 1.4.0) activemodel (8.2.0.alpha) activesupport (= 8.2.0.alpha) activerecord (8.2.0.alpha) @@ -93,7 +94,7 @@ GIT activejob (= 8.2.0.alpha) activerecord (= 8.2.0.alpha) activesupport (= 8.2.0.alpha) - marcel (~> 1.0) + marcel (~> 2.0) activesupport (8.2.0.alpha) base64 bigdecimal @@ -104,6 +105,8 @@ GIT json logger (>= 1.4.2) minitest (>= 5.1) + psych (>= 4) + ractor-dispatch (>= 0.3.0) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) @@ -170,7 +173,7 @@ GEM irb (~> 1.10) reline (>= 0.3.8) drb (2.2.3) - erb (6.0.4) + erb (6.0.7) erubi (1.13.1) faker (3.8.0) i18n (>= 1.8.11, < 2) @@ -182,17 +185,22 @@ GEM geared_pagination (1.2.0) activesupport (>= 5.0) addressable (>= 2.5.0) - globalid (1.3.0) + globalid (1.4.0) activesupport (>= 6.1) hashdiff (1.2.0) + herb (0.11.0-aarch64-linux-gnu) + herb (0.11.0-arm64-darwin) + herb (0.11.0-x86_64-darwin) + herb (0.11.0-x86_64-linux-gnu) i18n (1.15.2) concurrent-ruby (~> 1.0) image_processing (1.14.0) mini_magick (>= 4.9.5, < 6) ruby-vips (>= 2.0.17, < 3) - io-console (0.8.1) - irb (1.15.3) + io-console (0.9.4) + irb (1.18.0) pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) jbuilder (2.14.1) @@ -219,7 +227,7 @@ GEM net-imap net-pop net-smtp - marcel (1.1.0) + marcel (2.1.0) matrix (0.4.3) mini_magick (5.3.1) logger @@ -235,14 +243,14 @@ GEM ruby2_keywords (~> 0.0.1) net-http-persistent (4.0.6) connection_pool (~> 2.2, >= 2.2.4) - net-imap (0.6.4.1) + net-imap (0.6.7) date net-protocol net-pop (0.1.2) net-protocol - net-protocol (0.2.2) + net-protocol (0.4.0) timeout - net-smtp (0.5.1) + net-smtp (0.5.2) net-protocol nio4r (2.7.5) nokogiri (1.19.4-aarch64-linux-gnu) @@ -262,11 +270,11 @@ GEM platform_agent (1.0.1) activesupport (>= 5.2.0) useragent (~> 0.16.3) - pp (0.6.3) + pp (0.6.4) prettyprint prettyprint (0.2.0) prism (1.9.0) - psych (5.2.6) + psych (5.5.0) date stringio public_suffix (6.0.2) @@ -283,8 +291,9 @@ GEM rack (>= 3.0.0) rack-test (2.2.0) rack (>= 1.3) - rackup (2.2.1) + rackup (2.3.1) rack (>= 3) + ractor-dispatch (0.3.0) rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest @@ -297,19 +306,24 @@ GEM activesupport (> 3.1) railties (> 3.1) rainbow (3.1.1) - rake (13.3.1) - rdoc (6.16.1) + rake (13.4.2) + rbs (4.2.0) + logger + prism (>= 1.6.0) + tsort + rdoc (8.1.0) erb - psych (>= 4.0.0) + prism (>= 1.6.0) + rbs (>= 4.0.0) tsort redis (5.4.1) redis-client (>= 0.22.0) - redis-client (0.25.2) + redis-client (0.30.1) connection_pool redis-namespace (1.11.0) redis (>= 4) regexp_parser (2.11.2) - reline (0.6.3) + reline (0.7.0) io-console (~> 0.5) resque (2.7.0) mono_logger (~> 1) @@ -384,8 +398,8 @@ GEM sqlite3 (2.9.6-x86_64-linux-gnu) stimulus-rails (1.3.4) railties (>= 6.0.0) - stringio (3.1.8) - thor (1.4.0) + stringio (3.2.0) + thor (1.5.0) thruster (0.1.23-aarch64-linux) thruster (0.1.23-arm64-darwin) thruster (0.1.23-x86_64-darwin) @@ -414,7 +428,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.7.3) + zeitwerk (2.8.3) PLATFORMS aarch64-linux diff --git a/app/models/user/mentionable.rb b/app/models/user/mentionable.rb index b028284..a48df75 100644 --- a/app/models/user/mentionable.rb +++ b/app/models/user/mentionable.rb @@ -11,6 +11,11 @@ module User::Mentionable "users/mention" end + # How a mention appears inside the editor, matching the prompt's editor template. + def to_editor_content_attachment_partial_path + "users/mention" + end + def attachable_plain_text_representation(caption) "@#{name}" end diff --git a/app/views/accounts/edit.html.erb b/app/views/accounts/edit.html.erb index cfa750d..f2d1ae8 100644 --- a/app/views/accounts/edit.html.erb +++ b/app/views/accounts/edit.html.erb @@ -76,10 +76,9 @@ <% end %>