From 045cc15188f3d3c6c4aa3804d0e7d4f7a6f234ef Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 07:05:59 +0000 Subject: [PATCH 01/11] Initial plan From 85196dd0140d24cc4f0b114b3036b73fdff32588 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 07:17:25 +0000 Subject: [PATCH 02/11] Changes before error encountered Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 3 --- package-lock.json | 20 ++++++++++++++++++-- package.json | 1 + 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index ae7813fa3..ac3f8340e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -ruby "4.0.1" +#ruby "4.0.1" gem "rails", "~> 8.1.0" gem "bootsnap", require: false diff --git a/Gemfile.lock b/Gemfile.lock index f6fac9ae9..c6d8d0730 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1144,8 +1144,5 @@ CHECKSUMS xpath (3.2.0) sha256=6dfda79d91bb3b949b947ecc5919f042ef2f399b904013eb3ef6d20dd3a4082e zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b -RUBY VERSION - ruby 4.0.1 - BUNDLED WITH 4.0.3 diff --git a/package-lock.json b/package-lock.json index fd72a7c2c..eb4e87326 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "@tiptap/suggestion": "^3.15.3", "chart.js": "^4.5.1", "chartkick": "^5.0.1", + "date-fns": "^4.1.0", "from": "^0.1.7", "rhino-editor": "^0.18.0", "sortablejs": "^1.15.6", @@ -1156,6 +1157,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.19.0.tgz", "integrity": "sha512-bpqELwPW+DG8gWiD8iiFtSl4vIBooG5uVJod92Qxn3rA9nFatyXRr4kNbMJmOZ66ezUvmCjXVe/5/G4i5cyzKA==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1370,6 +1372,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.13.0.tgz", "integrity": "sha512-MMFH0jQ4LeCPkJJFyZ77kt6eM/vcKujvTbMzW1xSHCIEA6s4lEcx9QdZMPpfmnOvTzeoVKR4nsu2t2qT9ZXzAw==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1477,6 +1480,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-3.13.0.tgz", "integrity": "sha512-LcH9KE4QBUJ6IPwt1Uo5iU7zatFjUUvXbctIu2fKQ9nqJ7nNSFxRhkNyporVFkTWYH7/rb0qMoF1VxSUGefG5w==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1595,6 +1599,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.13.0.tgz", "integrity": "sha512-i7O0ptSibEtTy+2PIPsNKEvhTvMaFJg1W4Oxfnbuxvaigs7cJV9Q0lwDUcc7CPsNw2T1+44wcxg431CzTvdYoA==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1609,6 +1614,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.19.0.tgz", "integrity": "sha512-789zcnM4a8OWzvbD2DL31d0wbSm9BVeO/R7PLQwLIGysDI3qzrcclyZ8yhqOEVuvPitRRwYLq+mY14jz7kY4cw==", "license": "MIT", + "peer": true, "dependencies": { "prosemirror-changeset": "^2.3.0", "prosemirror-collab": "^1.3.1", @@ -1675,6 +1681,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.15.3.tgz", "integrity": "sha512-+CbaHhPfKUe+fNpUIQaOPhh6xI+xL5jbK1zw++U+CZIRrVAAmHRhO+D0O2HdiE1RK7596y8bRqMiB2CRHF7emA==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1765,6 +1772,7 @@ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", + "peer": true, "dependencies": { "@kurkle/color": "^0.3.0" }, @@ -1862,7 +1870,7 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", - "optional": true, + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -2695,6 +2703,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", "license": "MIT", + "peer": true, "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" @@ -2738,6 +2747,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", "license": "MIT", + "peer": true, "dependencies": { "orderedmap": "^2.0.0" } @@ -2767,6 +2777,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", "license": "MIT", + "peer": true, "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", @@ -2825,6 +2836,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.4.tgz", "integrity": "sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==", "license": "MIT", + "peer": true, "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", @@ -2920,6 +2932,7 @@ "version": "4.50.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -3124,7 +3137,8 @@ "version": "4.1.13", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz", "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tapable": { "version": "2.2.3", @@ -3197,6 +3211,7 @@ "resolved": "https://registry.npmjs.org/trix/-/trix-2.1.15.tgz", "integrity": "sha512-LoaXWczdTUV8+3Box92B9b1iaDVbxD14dYemZRxi3PwY+AuDm97BUJV2aHLBUFPuDABhxp0wzcbf0CxHCVmXiw==", "license": "MIT", + "peer": true, "dependencies": { "dompurify": "^3.2.5" } @@ -3225,6 +3240,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/package.json b/package.json index a3275fc94..115b00e58 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@tiptap/suggestion": "^3.15.3", "chart.js": "^4.5.1", "chartkick": "^5.0.1", + "date-fns": "^4.1.0", "from": "^0.1.7", "rhino-editor": "^0.18.0", "sortablejs": "^1.15.6", From 565c0bf155015c73dcd5f659428537d4233869c7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 17:35:53 +0000 Subject: [PATCH 03/11] Replace inline tags with hoverable Tags pill showing count - Remove tags from description area in workshops index row - Add "Tags: [count]" next to "Bookmarked: [count]" in metadata section - Implement hover tooltip to show all sector and category tags - Apply same changes to bookmarks personal row for workshops Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/views/bookmarks/_personal_row.html.erb | 19 +++++++++++++ app/views/workshops/_index_row.html.erb | 33 +++++++++++++--------- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/app/views/bookmarks/_personal_row.html.erb b/app/views/bookmarks/_personal_row.html.erb index 3df16c592..48e2a7c2d 100644 --- a/app/views/bookmarks/_personal_row.html.erb +++ b/app/views/bookmarks/_personal_row.html.erb @@ -51,6 +51,25 @@ Bookmarked by community <%= bookmark.bookmarkable.bookmarks_count %> times + + + <% if bookmark.bookmarkable_type == "Workshop" && bookmarkable.respond_to?(:sectors) && bookmarkable.respond_to?(:categories) %> + <% all_tags = [] %> + <% all_tags += bookmarkable.sectors.map(&:name) if bookmarkable.sectors.any? %> + <% all_tags += bookmarkable.categories.sort_by { |c| [c.position.to_i, c.name.to_s.downcase] }.map(&:name) if bookmarkable.categories.any? %> + <% if all_tags.any? %> +
+ + Tags: <%= all_tags.count %> + + +
+ <% end %> + <% end %> diff --git a/app/views/workshops/_index_row.html.erb b/app/views/workshops/_index_row.html.erb index 0273bfe5c..a67b25750 100644 --- a/app/views/workshops/_index_row.html.erb +++ b/app/views/workshops/_index_row.html.erb @@ -70,6 +70,25 @@ Bookmarked: <%= workshop.bookmarks_count %> <%= "time".pluralize(workshop.bookmarks_count.to_i) %> <% end %> + + <% unless hide_tags %> + <% all_tags = [] %> + <% all_tags += workshop.sectors.map(&:name) if workshop.sectors.any? %> + <% all_tags += workshop.categories.sort_by { |c| [c.position.to_i, c.name.to_s.downcase] }.map(&:name) if workshop.categories.any? %> + <% if all_tags.any? %> +
+ + Tags: <%= all_tags.count %> + + +
+ <% end %> + <% end %> + <%#= tag.div id: dom_id(workshop, :led_count), class: "text-sm text-gray-600 leading-tight" do %> @@ -110,19 +129,7 @@

- <% unless hide_tags %> - <% if workshop.categories.any? %> - <% ordered_tags = workshop.categories - .sort_by { |c| [c.position.to_i, c.name.to_s.downcase] } - .map(&:name) - .to_sentence %> -

- Tags: - - <%= ordered_tags.truncate(150) %> -

- <% end %> - <% end %> + From b2cb758f7ff5e9d7c5d5824b7133b3bdcef61f7a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 17:38:33 +0000 Subject: [PATCH 04/11] Extract tag collection logic into helper method - Add collect_all_tags helper method in TaggingsHelper - Refactor index_row and personal_row to use the helper - Improves maintainability and ensures consistent behavior Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/helpers/taggings_helper.rb | 18 ++++++++++++++++++ app/views/bookmarks/_personal_row.html.erb | 6 ++---- app/views/workshops/_index_row.html.erb | 4 +--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/helpers/taggings_helper.rb b/app/helpers/taggings_helper.rb index d6dbe3ac0..4cc371cec 100644 --- a/app/helpers/taggings_helper.rb +++ b/app/helpers/taggings_helper.rb @@ -14,4 +14,22 @@ def tagged_index_path(type, sector_names_all:, category_names_all:) polymorphic_path(klass, params) end + + # Collects all tags (sectors and categories) for a resource + # Returns an array of tag names sorted appropriately + def collect_all_tags(resource) + all_tags = [] + + if resource.respond_to?(:sectors) && resource.sectors.any? + all_tags += resource.sectors.map(&:name) + end + + if resource.respond_to?(:categories) && resource.categories.any? + all_tags += resource.categories + .sort_by { |c| [c.position.to_i, c.name.to_s.downcase] } + .map(&:name) + end + + all_tags + end end diff --git a/app/views/bookmarks/_personal_row.html.erb b/app/views/bookmarks/_personal_row.html.erb index 48e2a7c2d..923eb7ba8 100644 --- a/app/views/bookmarks/_personal_row.html.erb +++ b/app/views/bookmarks/_personal_row.html.erb @@ -53,10 +53,8 @@ - <% if bookmark.bookmarkable_type == "Workshop" && bookmarkable.respond_to?(:sectors) && bookmarkable.respond_to?(:categories) %> - <% all_tags = [] %> - <% all_tags += bookmarkable.sectors.map(&:name) if bookmarkable.sectors.any? %> - <% all_tags += bookmarkable.categories.sort_by { |c| [c.position.to_i, c.name.to_s.downcase] }.map(&:name) if bookmarkable.categories.any? %> + <% if bookmark.bookmarkable_type == "Workshop" %> + <% all_tags = collect_all_tags(bookmarkable) %> <% if all_tags.any? %>
diff --git a/app/views/workshops/_index_row.html.erb b/app/views/workshops/_index_row.html.erb index a67b25750..4383de93f 100644 --- a/app/views/workshops/_index_row.html.erb +++ b/app/views/workshops/_index_row.html.erb @@ -72,9 +72,7 @@ <% unless hide_tags %> - <% all_tags = [] %> - <% all_tags += workshop.sectors.map(&:name) if workshop.sectors.any? %> - <% all_tags += workshop.categories.sort_by { |c| [c.position.to_i, c.name.to_s.downcase] }.map(&:name) if workshop.categories.any? %> + <% all_tags = collect_all_tags(workshop) %> <% if all_tags.any? %>
From 4d20ec528b902ceed856dc960c2adb92014e4604 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 17:39:17 +0000 Subject: [PATCH 05/11] Sort sectors alphabetically for consistent tag ordering - Add alphabetical sorting to sectors in collect_all_tags - Ensures predictable and consistent tag display order - Sectors sorted by name, categories by position then name Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/helpers/taggings_helper.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/helpers/taggings_helper.rb b/app/helpers/taggings_helper.rb index 4cc371cec..0a642606d 100644 --- a/app/helpers/taggings_helper.rb +++ b/app/helpers/taggings_helper.rb @@ -21,7 +21,9 @@ def collect_all_tags(resource) all_tags = [] if resource.respond_to?(:sectors) && resource.sectors.any? - all_tags += resource.sectors.map(&:name) + all_tags += resource.sectors + .sort_by { |s| s.name.to_s.downcase } + .map(&:name) end if resource.respond_to?(:categories) && resource.categories.any? From 65ee0a5dfa0bdcd9412974940d8e4e3efa91402b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 17:39:48 +0000 Subject: [PATCH 06/11] Fix trailing whitespace for Ruby style compliance Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/helpers/taggings_helper.rb | 6 +++--- app/views/bookmarks/_personal_row.html.erb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/helpers/taggings_helper.rb b/app/helpers/taggings_helper.rb index 0a642606d..988f454da 100644 --- a/app/helpers/taggings_helper.rb +++ b/app/helpers/taggings_helper.rb @@ -19,19 +19,19 @@ def tagged_index_path(type, sector_names_all:, category_names_all:) # Returns an array of tag names sorted appropriately def collect_all_tags(resource) all_tags = [] - + if resource.respond_to?(:sectors) && resource.sectors.any? all_tags += resource.sectors .sort_by { |s| s.name.to_s.downcase } .map(&:name) end - + if resource.respond_to?(:categories) && resource.categories.any? all_tags += resource.categories .sort_by { |c| [c.position.to_i, c.name.to_s.downcase] } .map(&:name) end - + all_tags end end diff --git a/app/views/bookmarks/_personal_row.html.erb b/app/views/bookmarks/_personal_row.html.erb index 923eb7ba8..287c2f617 100644 --- a/app/views/bookmarks/_personal_row.html.erb +++ b/app/views/bookmarks/_personal_row.html.erb @@ -51,7 +51,7 @@ Bookmarked by community <%= bookmark.bookmarkable.bookmarks_count %> times
- + <% if bookmark.bookmarkable_type == "Workshop" %> <% all_tags = collect_all_tags(bookmarkable) %> From 3aef40743bc735862a85b25e4ca3055f308247d9 Mon Sep 17 00:00:00 2001 From: maebeale Date: Mon, 16 Feb 2026 18:26:09 -0500 Subject: [PATCH 07/11] claude --- .claude/settings.local.json | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 0b6b7eae5..bbec28061 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -1,40 +1,25 @@ { "permissions": { "allow": [ - "Bash(bundle exec brakeman:*)", - "Bash(bundle exec rails routes:*)", - "Bash(bundle exec rails runner:*)", "Bash(bundle exec rspec:*)", - "Bash(bundle exec rubocop:*)", + "Bash(bundle exec rails runner:*)", "Bash(RAILS_ENV=test bundle exec rails runner:*)", "Bash(RAILS_ENV=test bundle exec rspec:*)", + "Bash(git stash:*)", "Bash(git add:*)", - "Bash(git apply:*)", - "Bash(git checkout:*)", "Bash(git commit:*)", - "Bash(git diff:*)", - "Bash(git pull:*)", "Bash(git push:*)", - "Bash(git reset:*)", - "Bash(git stash:*)", + "Bash(git diff:*)", "Bash(bin/rails db:migrate:*)", + "Bash(for i in 1 2 3)", + "Bash(do bundle exec rspec spec/system/stories_spec.rb:71 --format progress)", + "Bash(done)", "Bash(bin/rails runner:*)", - "Bash(chmod:*)", - "Bash(mysql -u root:*)", "Bash(git -C /Users/maebeale/programming/awbw branch --show-current)", "Bash(bundle exec rails routes:*)", "Bash(bundle exec rubocop:*)", "Bash(git -C /Users/maebeale/programming/awbw diff --name-only main...HEAD)", - "Bash(git log:*)", - - "Bash(git fetch:*)", - "Bash(git rebase:*)", - "Bash(grep:*)" - - "Bash(bin/rails generate:*)", - "Bash(bin/rails db:schema:dump:*)", - "Bash(RAILS_ENV=test bin/rails:*)" - + "Bash(ruby:*)" ] } } From 3007e2847e95c1504ca280f613c2c99f044ebbad Mon Sep 17 00:00:00 2001 From: maebeale Date: Mon, 16 Feb 2026 18:26:52 -0500 Subject: [PATCH 08/11] Remove whitespace from bookmark count --- app/views/bookmarks/_personal_row.html.erb | 21 ++-------------- app/views/bookmarks/update.turbo_stream.erb | 6 +---- app/views/workshops/_index_row.html.erb | 27 ++++----------------- 3 files changed, 8 insertions(+), 46 deletions(-) diff --git a/app/views/bookmarks/_personal_row.html.erb b/app/views/bookmarks/_personal_row.html.erb index 287c2f617..144bd4bd8 100644 --- a/app/views/bookmarks/_personal_row.html.erb +++ b/app/views/bookmarks/_personal_row.html.erb @@ -47,27 +47,10 @@ You bookmarked on <%= bookmark.created_at.strftime("%B %d, %Y") %>
+ <% tag_list = bookmark.bookmarkable_type == "Workshop" ? collect_all_tags(bookmarkable) : [] %>
- Bookmarked by community - <%= bookmark.bookmarkable.bookmarks_count %> times + Bookmarked by community <%= bookmark.bookmarkable.bookmarks_count %> times<% if tag_list.any? %>, Tags: <%= tag_list.count %><% end %>
- - - <% if bookmark.bookmarkable_type == "Workshop" %> - <% all_tags = collect_all_tags(bookmarkable) %> - <% if all_tags.any? %> -
- - Tags: <%= all_tags.count %> - - -
- <% end %> - <% end %> diff --git a/app/views/bookmarks/update.turbo_stream.erb b/app/views/bookmarks/update.turbo_stream.erb index a174b67d5..7a1744cad 100644 --- a/app/views/bookmarks/update.turbo_stream.erb +++ b/app/views/bookmarks/update.turbo_stream.erb @@ -1,11 +1,7 @@ <%= turbo_stream.replace dom_id(@bookmarkable, :bookmark_icon), partial: "editable_bookmark_icon", locals: {resource: @bookmarkable} %> <%= turbo_stream.replace dom_id(@bookmarkable, :bookmark_button), partial: "editable_bookmark_button", locals: {resource: @bookmarkable} %> -<%= turbo_stream.update dom_id(@bookmarkable, :bookmark_count) do %> - Bookmarked: - <%= @bookmarkable.bookmarks_count %> - <%= "time".pluralize(@bookmarkable.bookmarks_count) %> -<% end %> +<%= turbo_stream.update dom_id(@bookmarkable, :bookmark_count) do %>Bookmarked: <%= @bookmarkable.bookmarks_count %> <%= "time".pluralize(@bookmarkable.bookmarks_count) %><% end %> <%= turbo_stream.update dom_id(@bookmarkable, :bookmark_count_person) do %> (Bookmarked by diff --git a/app/views/workshops/_index_row.html.erb b/app/views/workshops/_index_row.html.erb index 4383de93f..b51472676 100644 --- a/app/views/workshops/_index_row.html.erb +++ b/app/views/workshops/_index_row.html.erb @@ -64,28 +64,11 @@ | <%= workshop.date %> - - <%= tag.div id: dom_id(workshop, :bookmark_count), - class: "text-sm text-gray-600 leading-tight" do %> - Bookmarked: <%= workshop.bookmarks_count %> <%= "time".pluralize(workshop.bookmarks_count.to_i) %> - <% end %> - - - <% unless hide_tags %> - <% all_tags = collect_all_tags(workshop) %> - <% if all_tags.any? %> -
- - Tags: <%= all_tags.count %> - - -
- <% end %> - <% end %> + + <% tag_list = hide_tags ? [] : collect_all_tags(workshop) %> +
+ Bookmarked: <%= workshop.bookmarks_count %> <%= "time".pluralize(workshop.bookmarks_count.to_i) %><% if tag_list.any? %>, Tags: <%= tag_list.count %><% end %> +
<%#= tag.div id: dom_id(workshop, :led_count), From ba437c1e772c7d5f0676725c1016ae96c8859a71 Mon Sep 17 00:00:00 2001 From: maebeale Date: Mon, 16 Feb 2026 18:29:55 -0500 Subject: [PATCH 09/11] Fix rubocop --- app/helpers/taggings_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/taggings_helper.rb b/app/helpers/taggings_helper.rb index 988f454da..3bfe155df 100644 --- a/app/helpers/taggings_helper.rb +++ b/app/helpers/taggings_helper.rb @@ -28,7 +28,7 @@ def collect_all_tags(resource) if resource.respond_to?(:categories) && resource.categories.any? all_tags += resource.categories - .sort_by { |c| [c.position.to_i, c.name.to_s.downcase] } + .sort_by { |c| [ c.position.to_i, c.name.to_s.downcase ] } .map(&:name) end From 0b9dbaa693db6686ad56f5cd243b1ce8d137c324 Mon Sep 17 00:00:00 2001 From: maebeale Date: Mon, 16 Feb 2026 18:30:39 -0500 Subject: [PATCH 10/11] claude --- .claude/settings.local.json | 3 ++- Gemfile | 2 +- Gemfile.lock | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index bbec28061..997bae1f1 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -19,7 +19,8 @@ "Bash(bundle exec rails routes:*)", "Bash(bundle exec rubocop:*)", "Bash(git -C /Users/maebeale/programming/awbw diff --name-only main...HEAD)", - "Bash(ruby:*)" + "Bash(ruby:*)", + "Bash(bundle install:*)" ] } } diff --git a/Gemfile b/Gemfile index ac3f8340e..ae7813fa3 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -#ruby "4.0.1" +ruby "4.0.1" gem "rails", "~> 8.1.0" gem "bootsnap", require: false diff --git a/Gemfile.lock b/Gemfile.lock index c6d8d0730..f6fac9ae9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1144,5 +1144,8 @@ CHECKSUMS xpath (3.2.0) sha256=6dfda79d91bb3b949b947ecc5919f042ef2f399b904013eb3ef6d20dd3a4082e zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b +RUBY VERSION + ruby 4.0.1 + BUNDLED WITH 4.0.3 From 16dac876d55afa58ac77d98e1b6d526be504dc65 Mon Sep 17 00:00:00 2001 From: maebeale Date: Mon, 16 Feb 2026 18:32:51 -0500 Subject: [PATCH 11/11] Revert weird repo changes to package --- package-lock.json | 20 ++------------------ package.json | 1 - 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb4e87326..fd72a7c2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,6 @@ "@tiptap/suggestion": "^3.15.3", "chart.js": "^4.5.1", "chartkick": "^5.0.1", - "date-fns": "^4.1.0", "from": "^0.1.7", "rhino-editor": "^0.18.0", "sortablejs": "^1.15.6", @@ -1157,7 +1156,6 @@ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.19.0.tgz", "integrity": "sha512-bpqELwPW+DG8gWiD8iiFtSl4vIBooG5uVJod92Qxn3rA9nFatyXRr4kNbMJmOZ66ezUvmCjXVe/5/G4i5cyzKA==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1372,7 +1370,6 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.13.0.tgz", "integrity": "sha512-MMFH0jQ4LeCPkJJFyZ77kt6eM/vcKujvTbMzW1xSHCIEA6s4lEcx9QdZMPpfmnOvTzeoVKR4nsu2t2qT9ZXzAw==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1480,7 +1477,6 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-3.13.0.tgz", "integrity": "sha512-LcH9KE4QBUJ6IPwt1Uo5iU7zatFjUUvXbctIu2fKQ9nqJ7nNSFxRhkNyporVFkTWYH7/rb0qMoF1VxSUGefG5w==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1599,7 +1595,6 @@ "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.13.0.tgz", "integrity": "sha512-i7O0ptSibEtTy+2PIPsNKEvhTvMaFJg1W4Oxfnbuxvaigs7cJV9Q0lwDUcc7CPsNw2T1+44wcxg431CzTvdYoA==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1614,7 +1609,6 @@ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.19.0.tgz", "integrity": "sha512-789zcnM4a8OWzvbD2DL31d0wbSm9BVeO/R7PLQwLIGysDI3qzrcclyZ8yhqOEVuvPitRRwYLq+mY14jz7kY4cw==", "license": "MIT", - "peer": true, "dependencies": { "prosemirror-changeset": "^2.3.0", "prosemirror-collab": "^1.3.1", @@ -1681,7 +1675,6 @@ "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.15.3.tgz", "integrity": "sha512-+CbaHhPfKUe+fNpUIQaOPhh6xI+xL5jbK1zw++U+CZIRrVAAmHRhO+D0O2HdiE1RK7596y8bRqMiB2CRHF7emA==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -1772,7 +1765,6 @@ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", - "peer": true, "dependencies": { "@kurkle/color": "^0.3.0" }, @@ -1870,7 +1862,7 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", - "peer": true, + "optional": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -2703,7 +2695,6 @@ "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", "license": "MIT", - "peer": true, "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" @@ -2747,7 +2738,6 @@ "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", "license": "MIT", - "peer": true, "dependencies": { "orderedmap": "^2.0.0" } @@ -2777,7 +2767,6 @@ "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", "license": "MIT", - "peer": true, "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", @@ -2836,7 +2825,6 @@ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.4.tgz", "integrity": "sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==", "license": "MIT", - "peer": true, "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", @@ -2932,7 +2920,6 @@ "version": "4.50.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -3137,8 +3124,7 @@ "version": "4.1.13", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz", "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.3", @@ -3211,7 +3197,6 @@ "resolved": "https://registry.npmjs.org/trix/-/trix-2.1.15.tgz", "integrity": "sha512-LoaXWczdTUV8+3Box92B9b1iaDVbxD14dYemZRxi3PwY+AuDm97BUJV2aHLBUFPuDABhxp0wzcbf0CxHCVmXiw==", "license": "MIT", - "peer": true, "dependencies": { "dompurify": "^3.2.5" } @@ -3240,7 +3225,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/package.json b/package.json index 115b00e58..a3275fc94 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "@tiptap/suggestion": "^3.15.3", "chart.js": "^4.5.1", "chartkick": "^5.0.1", - "date-fns": "^4.1.0", "from": "^0.1.7", "rhino-editor": "^0.18.0", "sortablejs": "^1.15.6",