From 4bd9904013ea35db0240157b9e25af67bdc93f23 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 16:34:02 -0700 Subject: [PATCH 1/8] Add a line to credit 37signals --- app/assets/images/37signals.svg | 1 + app/assets/stylesheets/icons.css | 1 + app/views/my/menus/show.html.erb | 6 ++++++ 3 files changed, 8 insertions(+) create mode 100644 app/assets/images/37signals.svg diff --git a/app/assets/images/37signals.svg b/app/assets/images/37signals.svg new file mode 100644 index 000000000..8ff6c3bb8 --- /dev/null +++ b/app/assets/images/37signals.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/stylesheets/icons.css b/app/assets/stylesheets/icons.css index e3e7a40fe..61e140007 100644 --- a/app/assets/stylesheets/icons.css +++ b/app/assets/stylesheets/icons.css @@ -18,6 +18,7 @@ background: none; } + .icon--37signals { --svg: url("37signals.svg"); } .icon--add { --svg: url("add.svg "); } .icon--add--meta { --svg: url("add--meta.svg "); } .icon--arrow-left { --svg: url("arrow-left.svg "); } diff --git a/app/views/my/menus/show.html.erb b/app/views/my/menus/show.html.erb index 30f98667e..be8c4e559 100644 --- a/app/views/my/menus/show.html.erb +++ b/app/views/my/menus/show.html.erb @@ -22,6 +22,12 @@ <%= render "filters/menu/hotkeys" %> + +
+ Boxcar is designed, built, and backed by + <%= icon_tag "37signals" %> 37signals. +
+ <%= render "filters/menu/custom", filters: @user_filtering.filters %> <%= render "filters/menu/collections", user_filtering: @user_filtering %> <%= render "filters/menu/tags", user_filtering: @user_filtering %> From c7f0b00a186e5a2622787019179f720491b0fa76 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 16:35:59 -0700 Subject: [PATCH 2/8] Don't autofocus collection name This rarely changes, don't make it too easy. Especially because the focused input prevents hotkeys you might want to use here --- app/views/collections/edit/_name.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/collections/edit/_name.html.erb b/app/views/collections/edit/_name.html.erb index 6c70cd6aa..396050204 100644 --- a/app/views/collections/edit/_name.html.erb +++ b/app/views/collections/edit/_name.html.erb @@ -1,7 +1,7 @@
From 2d16e98a7e730cf78a460d8bd4fe8a4cde54caf2 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 16:55:15 -0700 Subject: [PATCH 3/8] Render a special state when no one is watching --- app/helpers/accesses_helper.rb | 25 +++++++++++-------- .../columns/show/_add_card_button.html.erb | 1 - 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/helpers/accesses_helper.rb b/app/helpers/accesses_helper.rb index 103df67bb..ec98acc22 100644 --- a/app/helpers/accesses_helper.rb +++ b/app/helpers/accesses_helper.rb @@ -32,17 +32,20 @@ module AccessesHelper displayed_watchers = watchers.limit(MAX_DISPLAYED_WATCHERS) overflow_count = watchers.count - MAX_DISPLAYED_WATCHERS - tag.div(class: "collection-tools__watching") do - safe_join([ - safe_join(displayed_watchers.map { |watcher| avatar_tag(watcher) }), - (tag.div(data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" }) do - concat tag.button("+#{overflow_count}", class: "overflow-count btn btn--circle borderless", data: { action: "dialog#open" }, aria: { label: "Show #{overflow_count} more watchers" }) - concat(tag.dialog(class: "collection-tools__watching-dialog dialog panel", data: { dialog_target: "dialog" }, aria: { hidden: "true" }) do - safe_join(watchers.map { |watcher| avatar_tag(watcher) }) - end) - end if overflow_count > 0) - ].compact) - end + safe_join([ + tag.strong(displayed_watchers.any? ? "Watching for new cards" : "No one is watching for new cards", class: "txt-uppercase"), + tag.div(class: "collection-tools__watching") do + safe_join([ + safe_join(displayed_watchers.map { |watcher| avatar_tag(watcher) }), + (tag.div(data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" }) do + concat tag.button("+#{overflow_count}", class: "overflow-count btn btn--circle borderless", data: { action: "dialog#open" }, aria: { label: "Show #{overflow_count} more watchers" }) + concat(tag.dialog(class: "collection-tools__watching-dialog dialog panel", data: { dialog_target: "dialog" }, aria: { hidden: "true" }) do + safe_join(watchers.map { |watcher| avatar_tag(watcher) }) + end) + end if overflow_count > 0) + ].compact) + end + ]) end def involvement_button(collection, access, show_watchers, icon_only) diff --git a/app/views/columns/show/_add_card_button.html.erb b/app/views/columns/show/_add_card_button.html.erb index b7bc78959..16144ca0d 100644 --- a/app/views/columns/show/_add_card_button.html.erb +++ b/app/views/columns/show/_add_card_button.html.erb @@ -7,7 +7,6 @@
- Watching for new cards <%= access_involvement_advance_button(collection, Current.user, show_watchers: true) %>
From d3a20060e22d781ef3a555f3f903176827e56ae9 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 17:07:24 -0700 Subject: [PATCH 4/8] Redirect to collection after publishing a card --- app/controllers/cards/publishes_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/cards/publishes_controller.rb b/app/controllers/cards/publishes_controller.rb index 298f8bbe4..9aeab76ce 100644 --- a/app/controllers/cards/publishes_controller.rb +++ b/app/controllers/cards/publishes_controller.rb @@ -7,7 +7,7 @@ class Cards::PublishesController < ApplicationController if add_another_param? redirect_to @collection.cards.create!, notice: "Card added" else - redirect_to @card + redirect_to @card.collection end end From ed9cede24b85b9fbd9d3bbd98f87d8273d8a0225 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 17:12:43 -0700 Subject: [PATCH 5/8] These use the old collection link format --- app/controllers/cards_controller.rb | 2 +- app/views/collections/edit.html.erb | 2 +- app/views/webhooks/index.html.erb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/cards_controller.rb b/app/controllers/cards_controller.rb index 9a0d5d19c..9750d6e9c 100644 --- a/app/controllers/cards_controller.rb +++ b/app/controllers/cards_controller.rb @@ -38,7 +38,7 @@ class CardsController < ApplicationController def destroy @card.destroy! - redirect_to cards_path(collection_ids: [ @card.collection ]), notice: ("Card deleted" unless @card.creating?) + redirect_to @card.collection, notice: ("Card deleted" unless @card.creating?) end private diff --git a/app/views/collections/edit.html.erb b/app/views/collections/edit.html.erb index 8fa1a5f0e..536f7ef68 100644 --- a/app/views/collections/edit.html.erb +++ b/app/views/collections/edit.html.erb @@ -33,7 +33,7 @@ Save changes - <%= link_to "Cancel and go back", cards_path(collection_ids: [ @collection ]), data: { form_target: "cancel", turbo_frame: "_top" }, hidden: true %> + <%= link_to "Cancel and go back", @collection, data: { form_target: "cancel", turbo_frame: "_top" }, hidden: true %> <% end %> diff --git a/app/views/webhooks/index.html.erb b/app/views/webhooks/index.html.erb index f4d93588e..8a5855519 100644 --- a/app/views/webhooks/index.html.erb +++ b/app/views/webhooks/index.html.erb @@ -3,7 +3,7 @@ <% content_for :header do %> <%= render "filters/menu" %>
- <%= link_to cards_path(collection_ids: [ @collection ]), class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %> + <%= link_to @collection, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %> <%= @collection.name %> From be98fafd335f37c8c79d96f186ce6955aa76c392 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 17:18:01 -0700 Subject: [PATCH 6/8] Hyphens support is poor, dump it I find it suprising that it hyphenates and reflows while typing. And we're not getting much of it in the rendered views either. --- app/assets/stylesheets/rich-text-content.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/assets/stylesheets/rich-text-content.css b/app/assets/stylesheets/rich-text-content.css index 873ad8cd9..27f265a03 100644 --- a/app/assets/stylesheets/rich-text-content.css +++ b/app/assets/stylesheets/rich-text-content.css @@ -5,7 +5,6 @@ :where(h1, h2, h3, h4, h5, h6) { display: block; font-weight: 800; - hyphens: auto; letter-spacing: -0.02ch; line-height: 1.1; margin-block: var(--block-margin); @@ -34,7 +33,6 @@ } :where(p, blockquote) { - hyphens: auto; letter-spacing: -0.005ch; } @@ -79,7 +77,6 @@ &[data-language] { border-radius: 0.5em; display: block; - hyphens: none; overflow-x: auto; padding: 0.5lh 2ch; tab-size: 2; From 45614a07ea2e8286c6c6a1c9450c621205e19591 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 22 Oct 2025 17:27:07 -0700 Subject: [PATCH 7/8] Tighten space between title and description editors --- app/assets/stylesheets/cards.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/cards.css b/app/assets/stylesheets/cards.css index 38213e31e..c32dc74c5 100644 --- a/app/assets/stylesheets/cards.css +++ b/app/assets/stylesheets/cards.css @@ -188,7 +188,7 @@ .card-field__description { lexxy-toolbar { border-block-start: 1px solid var(--color-ink-light); - margin-block-start: var(--block-margin) !important; + margin-block-start: var(--block-space-half) !important; } } From 1c8a9fdc671c043f92c59a64122bbcf6b61ceb41 Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Thu, 23 Oct 2025 07:54:46 -0700 Subject: [PATCH 8/8] Update tests --- test/controllers/cards/publishes_controller_test.rb | 2 +- test/system/smoke_test.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/controllers/cards/publishes_controller_test.rb b/test/controllers/cards/publishes_controller_test.rb index e5a99c51c..bddb6e088 100644 --- a/test/controllers/cards/publishes_controller_test.rb +++ b/test/controllers/cards/publishes_controller_test.rb @@ -13,7 +13,7 @@ class Cards::PublishesControllerTest < ActionDispatch::IntegrationTest post card_publish_path(card) end - assert_redirected_to card + assert_redirected_to card.collection end test "create and add another" do diff --git a/test/system/smoke_test.rb b/test/system/smoke_test.rb index 5a0c5432b..51cb42c45 100644 --- a/test/system/smoke_test.rb +++ b/test/system/smoke_test.rb @@ -10,7 +10,7 @@ class SmokeTest < ApplicationSystemTestCase fill_in_lexxy with: "I am editing this thing" click_on "Create card" - assert_selector "h1", text: "Hello, world!" + assert_selector "h3", text: "Hello, world!" end test "active storage attachments" do