Commit Graph

590 Commits

Author SHA1 Message Date
Rosa Gutierrez ada4688c4e Take a first stab at offline mode support 2026-03-10 10:20:54 +01:00
Adrien Maston 920502b590 Scroll column into view when opening its menu 2026-03-04 11:31:45 +01:00
Adrien Maston 9c26e834b7 Don't try to orient column menus 2026-03-04 11:30:42 +01:00
Adrien Maston 8fced550d8 Refactor 2026-03-03 10:31:08 +01:00
Adrien Maston 340d9aa763 Delegate clearing the input to new controller 2026-03-02 14:21:32 +01:00
Jay Ohms 867267890b Update app/javascript/controllers/bridge/buttons_controller.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-26 08:05:48 -05:00
Jay Ohms 7427675fc8 PR feedback 2026-02-26 07:53:02 -05:00
Jay Ohms 84c650ab25 Fix beforeunload event listeners 2026-02-26 07:41:51 -05:00
Jay Ohms 2d41463074 Merge branch 'main' into card-perma-editing
* main: (56 commits)
  Update app/views/cards/container/_closure_buttons.html.erb
  Update app/views/columns/show/_add_card_button.html.erb
  Update app/views/events/index/_add_card_button.html.erb
  Just return the object
  Rename is-main-action to display-as-primary-action
  Remove debug line
  Rename show-label to display-title
  Include path in web push payload for backwards compatibility
  Add base_url to native push notification payload
  Use internal account ID as `account_id` and add `account_slug`
  Make APNS and FCM env vars available
  Fix devices_path route helper in native devices partial
  Fix tests for renamed fixtures and new stacked notifications
  Add creator_familiar_name to push notification payload
  Add creator initials and avatar color to push notification payload
  Add avatar_url so we always get an avatar even when the user hasn't set one
  Document --push flag for testing native push notifications
  Don't read APNS_TEAM_ID from 1Password
  Simplify push.yml to only use B64 encryption keys
  Rename apns-dev to push-dev and unify 1Password credentials
  ...
2026-02-26 07:32:18 -05:00
Adrien Maston a62defb570 Just return the object 2026-02-26 11:48:01 +01:00
Adrien Maston 047e8efad3 Rename is-main-action to display-as-primary-action 2026-02-26 11:33:24 +01:00
Adrien Maston fc1ee616c8 Remove debug line 2026-02-26 11:13:39 +01:00
Adrien Maston 158e95de42 Rename show-label to display-title 2026-02-26 11:12:01 +01:00
Jay Ohms 339a37576c Try adding turbo:before-visit event listener to test refreshing on iOS 2026-02-26 05:04:14 -05:00
Jay Ohms 6ceb5ef7c3 Notify the form/buttons components of a disconnect before a page reload. This gives the native components an opportunity to reset their state before the fresh page loads. 2026-02-25 15:32:00 -05:00
Adrien Maston 74b91c8832 Add "show label" and "main action" attributes 2026-02-25 17:08:11 +01:00
Adrien Maston a4f1a6b106 Coding style 2026-02-23 16:11:52 +01:00
Adrien Maston 0b229c701b Rename event 2026-02-23 16:10:54 +01:00
Adrien Maston 1d07e10650 Replace additional date by optional description 2026-02-20 17:18:53 +01:00
Adrien Maston 4e53000bc3 Add bridged share button to board and card permas 2026-02-20 13:03:33 +01:00
Rosa Gutierrez bb6f2963b4 Revert commits accidentally pushed to main
Revert "Add bridged share button to board and card permas"
This reverts commit 069e165b43.

Revert "Move helper to bridge helper file"
This reverts commit 1ee37f046c.
2026-02-20 12:58:39 +01:00
Adrien Maston 069e165b43 Add bridged share button to board and card permas 2026-02-20 12:49:00 +01:00
Stanko K.R. 36ee253a1a Stack notifications everywhere
We had client-side notification stacking in the tray since launch, but now we want to stack notifications in the notifications page, in API responses and in email bundles.
2026-02-12 10:29:50 +01:00
Adrien Maston a8676ada4c Merge pull request #2490 from basecamp/fix-hidden-filters-in-firefox
Fix hidden filters in Firefox
2026-02-06 11:01:54 +01:00
Adrien Maston 186d759672 Instant scrolling on restore, animated on user action 2026-02-05 17:17:49 +01:00
Adrien Maston 9d4655d35e Make filters "open" by default then hide in mobile apps 2026-02-05 11:12:50 +01:00
Adrien Maston 171b8caa45 Switch non-animated scrolling in the mobile apps 2026-02-04 18:35:12 +01:00
Adrien Maston aa3103de3c Rename handleDesktop method 2026-02-03 12:52:54 +01:00
Adrien Maston 43d12b27ed Expand maybe column is no expanded column is found in localStorage
... to trigger scrolling into view
2026-02-03 12:12:20 +01:00
Andy Smith ba260db8a2 Nicer file input 2026-02-02 12:36:48 +01:00
Mike Dalessio 017e1434f1 Reapply "Fix lightbox blocking clicks on page elements"
This reverts commit c70c4b4107.
2026-01-28 17:53:53 -05:00
Mike Dalessio c70c4b4107 Revert "Fix lightbox blocking clicks on page elements"
This reverts commit 17b7af9b92.
2026-01-28 17:53:21 -05:00
Mike Dalessio 17b7af9b92 Fix lightbox blocking clicks on page elements
The CSS change in 39575a0 added `display: flex` to the lightbox dialog
unconditionally, which overrode the browser's default `display: none`
for closed dialogs. This made the invisible lightbox overlay intercept
all clicks on the page.

Move flexbox properties to the `&[open]` selector so they only apply
when the dialog is actually open.

Also fix typo: `innerHtml` → `innerHTML` (capital H).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 17:51:32 -05:00
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
Adrien Maston e5bef41c54 Refactor orientation helper to express intent more clearly 2026-01-27 11:21:15 +01:00
Adrien Maston 39575a0cb6 Fix lightbox layout and focus 2026-01-23 17:41:33 +01:00
Rosa Gutierrez 26d5701217 Wait for service worker to be active before subscribing
The push subscription requires an active service worker. When
registering a new service worker, we now wait for it to become
active using navigator.serviceWorker.ready before attempting
to subscribe to push notifications.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 16:38:45 +01:00
Rosa Gutierrez c650cba179 Fix stuck state when permission granted but no subscription
When you had already granted notification permission but hadn't
completed the subscription flow (no service worker or no push
subscription), the UI showed neither the subscribe button nor the
enabled state, leaving you stuck with no way to subscribe, and wrong
instructions to fix it.

Instead, let's just show the button to allow you to subscribe.
2026-01-23 16:38:45 +01:00
Adrien Maston 764eb8987a Tweak orientation helper to prevent popups from going off screen 2026-01-23 14:06:17 +01:00
Adrien Maston ff9e617f34 Merge branch 'main' into mobile/prepare-webviews-2
* main:
  Return to Board page when clearing filters
  Bump card perma z-index when dialog is open
  Only submit on blur if the input has a value
  Make the CLAUDE.md stub less obtrusive
  Only index up to 32KB of search content
  Use inline spacing variable
  Actually make it affect larger screens too
  Use CSS variable for panel size in delete dialogs
  Add viewport padding to dialogs on mobile
  Prevent page scrolling when modal dialog is open
2026-01-22 11:01:38 +01:00
Andy Smith eccef3b19c Only submit on blur if the input has a value 2026-01-21 14:33:19 -06:00
Adrien Maston 8c5ce3487e Remove keyboard shortcut from input's placeholder on mobile 2026-01-20 15:43:39 +01:00
Adrien Maston 3a685ca2b9 Hide filters by default on mobile 2026-01-20 13:39:00 +01:00
Jay Ohms a9b873f151 Merge branch 'main' into mobile/bridge-components
* main:
  Create popup initial alignment classes
  Fix class typo
  Hide the board selector button if card is closed
  Align board and tag picker dialogs without using math
  Add dialog manager to card perma
  Fix "M" hotkey using stale user from fragment cache
  Add Enable all/Disable all buttons to webhook event selection
  Remove whitespace
  Remove hover styles from disabled menu items

# Conflicts:
#	app/views/cards/_container.html.erb
2026-01-19 12:02:42 -05:00
Jay Ohms b5985efdd1 Use private functions for bridge components 2026-01-19 10:05:48 -05:00
Adrien Maston e87dc10761 Setup focus handling on touch target's connect callback
... to support lazy loaded dialog content
2026-01-19 15:34:23 +01:00
Adrien Maston 44732a345b Move dialog focus handling into the dialog controller
... instead of a separate dialog focus controller
2026-01-19 11:42:43 +01:00
Mike Dalessio 2527f07365 Fix "M" hotkey using stale user from fragment cache
Add a SelfAssignmentsController to resolve the current user at request
time, avoiding the use of an incorrect user id baked into a cached URL.

ref: #2211 originally added the "M" hotkey
ref: https://app.fizzy.do/5986089/cards/3722
2026-01-16 13:41:33 -05:00
Jay Ohms 600ee87d51 Merge branch 'main' into mobile/bridge-components
* main:
  Solve problem when Action Text raises on missing attachables
  Solve problem when Action Text raises on missing attachables
  Completing a step removes stalled status from UI
  Bump Bootsnap to v1.21.1
  Use correct class selectors to target cards with  background images
  Update lexxy to latest
  Hide table button for now
  Table CSS tweaks
  Update to Lexxy 0.7.0beta
  Revert "Wrap tables in div"
  Wrap tables in div
  CSS updates for `<table>` support
  Update to latest Lexxy
  Show only active subscriptions
  Add paid accounts stats to admin dashboard
  Keep URLs in webhook events absolute
  Delete orphaned watches and pins when a card is moved to a private board
2026-01-16 12:44:55 -05:00
Mike Dalessio 9c76002bc1 Completing a step removes stalled status from UI
Add `updatedAt` to stalled bubble options so JS can check if the card
was recently updated, matching the `Card::Stallable#stalled?`
logic. Refresh the bubble via Turbo Stream when a step is updated.

This should have been part of #1625

Fixes https://app.fizzy.do/5986089/cards/3668
2026-01-16 09:58:21 -05:00