Commit Graph

292 Commits

Author SHA1 Message Date
Adrien Maston fefb28848b Merge branch 'main' into mobile/prepare-webviews-2
* main: (26 commits)
  Add a new Pins section to docs/API.md covering pin/unpin and the pinned cards list response.
  Align board name start so it doesn't get too big
  Clean up card/events header layout
  Sync email to Stripe when user changes email address (#2432)
  Fix IDOR in webhook activation endpoint (#2431)
  Add card reactions to API docs and reactions_url to card JSON (#2427)
  Remove unnecessary claude plan
  Allow boosts on cards (#2411)
  Revert "Fix notification click URL by using correct data property"
  Add migration to remove draft cards from search index
  Guard search indexing with searchable? check
  Forbid comments on draft cards
  prefactor: update search to use published cards
  Fix notification click URL by using correct data property
  Wait for service worker to be active before subscribing
  Fix stuck state when permission granted but no subscription
  Extract Card::Commentable
  Include arm64 build in Docker workflow
  Remove unnecessary `await` in push handler
  Correctly initialise WebPush connection (#2417)
  ...
2026-01-27 17:17:21 +01:00
Mike Dalessio cb61b36715 Allow boosts on cards (#2411)
* Add reactions association to Card model

Adds `has_many :reactions` to Card, matching the implementation in Comment.
This allows cards to be reacted to directly with emoji reactions.

The association:
- Orders reactions chronologically
- Uses polymorphic `:reactable` interface
- Deletes reactions when card is destroyed

Includes test coverage for the new association.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add reactions UI to card detail view

- Create Cards::ReactionsController with turbo stream responses
- Add card reactions views (reactions list, new form, menu partial)
- Position reaction button flush-right when no reactions exist
- Show reactions on bottom-left when present, with button inline
- Handle narrow viewports by flowing button below meta section
- Add controller tests for card reactions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add boost count to card preview

Display reaction count alongside comment count on card tiles in board
columns. Introduces a .card__counts wrapper to group both counts with
proper positioning on all viewport sizes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Consolidate reaction views for cards and comments

Extract shared views to app/views/reactions/ using polymorphic routing.
Both card and comment reactions now render the same partials, with a
helper to compute the correct path prefix for nested routes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix emoji picker width in card reactions

Override .card .popup { inline-size: 260px } for the reaction popup
so the emoji grid displays without horizontal scrollbar.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Hide boost count where comment count is hidden

Add .card__boosts alongside .card__comments in:
- Tray view (display: none)
- Cards with background images (opacity toggle on hover)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix reactions button overlap with zoom button in card footer

When a card has a background image, the footer contains both a reactions
button and a zoom button. Previously they would overlap because the
reactions button was absolutely positioned to the bottom-right.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Tighten up previews

* Move card reactions from meta partial to container

Fixes two issues:

1. Reactions were duplicated each time a card was assigned because the
   turbo stream replaced the meta div with the full perma/meta partial,
   which included reactions outside the replaced element.

2. Draft cards incorrectly showed the boost button because the meta
   partial was shared between published and draft containers.

Moving reactions to _container.html.erb (published cards only) fixes
both issues and keeps the meta partial focused on meta content.

Fixes https://app.fizzy.do/5986089/cards/3837
Fixes https://app.fizzy.do/5986089/cards/3835

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* WIP adjust perma page

* Position and style the footer

* Render the stamp in the card body instead of the footer

* Fix undefined local variable in public cards view

Changed `card` to `@card` when rendering the stamp partial.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Preload card reactions to avoid N+1 queries

Include reactions and their reacters in the preloaded scope, matching
what we already do for comments.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add model tests for card and comment reaction cleanup

Test that:
- Creating a card reaction touches the card's last_active_at
- Reactions are deleted when their parent comment is destroyed
- Reactions are deleted when their parent card is destroyed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Minor improvements to reactions code

- Use size instead of count in boosts partial to avoid extra SQL query
  on already-loaded collection
- Add else clause to reaction_path_prefix_for to raise ArgumentError
  for unknown reactable types instead of silently returning nil

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Bump specificity of reaction popup in the card perma

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Andy Smith <andy@37signals.com>
2026-01-23 13:25:55 -05:00
Adrien Maston 97a1c29b0c Use bottom inset
... fixes content being stuck behind the tab bar in apps
2026-01-23 12:15:31 +01:00
Andy Smith 036768fede Create popup initial alignment classes 2026-01-16 14:30:47 -06:00
Andy Smith ff050505d5 Use correct class selectors to target cards with background images 2026-01-15 12:27:29 -06:00
Andy Smith c8059dea90 Disable card column buttons when active 2026-01-13 16:15:33 -06:00
Andy Smith 64fdbf6b8f Clean up blank slates 2026-01-12 15:37:06 -06:00
Andy Smith 8288e85df6 More sturated mini bubbles in light mode 2026-01-12 13:34:30 -06:00
Andy Smith df7df74752 Brighten mini bubbles in dark mode 2026-01-12 13:31:36 -06:00
Andy Smith eb4197f58d Repair scope for card styles within the columns view 2026-01-07 16:07:38 -06:00
Andy Smith 7f8e426534 Add missing list to cards page 2026-01-07 12:32:46 -06:00
Andy Smith 187bff131e Account for simpler public views 2026-01-07 12:22:38 -06:00
Andy Smith 897cac06c7 Pull board-tools outside of the list for mobile 2026-01-07 11:36:31 -06:00
Andy Smith 8f2ff62f7f Fix public boards 2026-01-06 13:58:49 -06:00
Andy Smith 802ccef9bf Fix card grid layout 2026-01-06 13:38:50 -06:00
Andy Smith a9666225e3 Fix scrolling on mobile 2026-01-05 13:21:00 -06:00
Andy Smith c8c6fbbb13 Remember expanded state on navigation 2026-01-05 12:49:38 -06:00
Andy Smith 3fb45c14e3 Merge branch 'main' into mobile-columns-pt-iii
* main:
  Update Rails
  Ignore hotkeys with modifiers
  Fix 1Password account ID (was user UUID) (#2278)
  Switch 1Password account to 37signals.1password.com (#2276)
  Remove CSS testing comments
  Max card count equals geared pagination size
  Block IPv4-compatible IPv6 addresses in SSRF protection (#2273)
  Only enable transitions on user interaction
  Don't update counter if value hasn't changed
2026-01-02 14:50:27 -06:00
Andy Smith 5b6fdbfeae Fix mini bubble cropping, filters padding, and grid-style 2026-01-02 12:45:53 -06:00
Andy Smith 837b820291 Better scroll snapping 2026-01-02 12:22:07 -06:00
Andy Smith 1686c48654 Show icons 2026-01-02 11:17:58 -06:00
Andy Smith f2759f1ca0 Remove CSS testing comments 2025-12-30 12:37:10 -06:00
Andy Smith 711eec133a Max card count equals geared pagination size 2025-12-30 12:30:55 -06:00
Andy Smith b7951718f3 Position New Column absolutely to center collapsed columns 2025-12-19 15:27:18 -06:00
Andy Smith c3a3aa108a Merge branch 'main' into mobile-columns-pt-iii
* main: (318 commits)
  Document the new sign in method
  Replace handle_ naming
  Use same constant for fake magic links
  Replace FakeMagicLink with a temporary object
  Tidy up session_token
  Clean up interfaces
  Split tests by controller or responsibility
  Simplify auth logic
  Fix due to unit test when creating with invalid emails
  Restore sessions_controller test on creating invalid email address
  Move magic link api tests to their own files
  Rename test to clarify what they're about
  Cleanup session creation
  Update to always return a pending auth token for JSON responses.
  Update API test for cross code
  Change test expectation on single tenant mode account creation
  Add unit tests for the new endpoints
  Pass a server token when creating a magic link via API
  Simplify code a bit
  Simplify session create logic for both html and json
  ...
2025-12-19 13:13:15 -06:00
Jason Zimdars a56f200e1f Show comments on preview cards 2025-12-18 10:29:36 -06:00
Alexander Zaytsev 5cf62adc03 Merge branch 'main' into fix-steps-icon-appearance 2025-12-17 20:04:05 +01:00
Jorge Manrubia 0278fe6ae4 Revert "Mobile app / Scoped stylesheets" (#1698)
This reverts commit 39c1906e67.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 17:20:18 +01:00
Andy Smith 623dd90c66 Looser scroll snap 2025-12-15 16:12:07 -06:00
Andy Smith 9504b986ab Tighten up column padding on mobile 2025-12-15 16:07:51 -06:00
Andy Smith a3723ef0d2 Cleanup and scroll into view when expanding 2025-12-15 16:03:16 -06:00
Andy Smith 0f1ee03edb Remove vertical offset on mobile 2025-12-15 15:55:19 -06:00
Andy Smith c7ee0ad040 Mini bubble on Maybe column 2025-12-15 15:53:40 -06:00
Andy Smith e24569584d Move board-tools inside list 2025-12-15 15:51:53 -06:00
Andy Smith 463b99dd7e Correct padding 2025-12-15 15:40:58 -06:00
Andy Smith adceae2e71 Scrolling in place (borked padding) 2025-12-15 15:13:14 -06:00
Andy Smith f2591e7da6 Basic scrolling setup 2025-12-15 14:56:27 -06:00
Andy Smith ffb5474a79 Equal padding on left mobile columns 2025-12-15 14:40:28 -06:00
Andy Smith 5d9b2b8663 Center all columns when collapsed on mobile 2025-12-12 16:30:45 -06:00
Andy Smith 98b47ede6b Center and scroll snap columns on mobile 2025-12-12 16:27:06 -06:00
Andy Smith bf62c97c25 Fix horizontal scrolling 2025-12-12 16:18:47 -06:00
Andy Smith 44e7e662a8 Adjust padding on new card element 2025-12-12 14:54:03 -06:00
Andy Smith a94f6e8f0d Remove old mobile columns stuff 2025-12-12 14:40:20 -06:00
Andy Smith c6bfeb6982 Handle Maybe column state at desktop breakpoint 2025-12-12 13:49:17 -06:00
Andy Smith 3b08041a3e Only use grid layout when centering the Maybe column 2025-12-12 13:16:45 -06:00
Andy Smith b3cfae3529 Consolidate UI elements from "the stream" and "Considering" to "Maybe?" 2025-12-12 12:29:01 -06:00
Andy Smith 0181b1df84 Merge pull request #2115 from basecamp/maybe-mini-bubble-position
Better mini-bubble position for the Maybe column
2025-12-12 11:17:44 -06:00
Anthony f2a2878382 Fix typo in translate property in card columns CSS (#2090)
Rename incorrect CSS property from `translaate` to `translate`
2025-12-11 20:36:54 -08:00
Jason Zimdars 6e19e17ca4 Need to account for theme setting when using prefers-color-scheme: dark 2025-12-08 17:46:10 -06:00
Andy Smith bb149da532 Move blank slates to its own file 2025-12-03 14:13:04 -06:00