Commit Graph

466 Commits

Author SHA1 Message Date
Stanko K.R. 15cb1f7fe1 Add UI to prevent assigning more than 10 asignees 2025-12-15 16:40:52 +01:00
Mike Dalessio e9cb2956ee Lightbox uses Stimulus target callbacks instead of data-action
Remove data-action from the sanitizer allowlist to disallow injection
of potentially malicious Stimulus actions in user-provided
content. The lightbox controller now uses imageTarget callbacks to
handle clicks on image links.

Also add the file name as a caption in the light box, and fix the
caption color for dark mode visibility.
2025-12-13 17:06:03 -05:00
Jason Zimdars 941ce1f775 Need to use has*Target to check for optional static targets to prevent console errors 2025-12-11 09:38:34 -06:00
Jason Zimdars 2a0cf4efe9 Turn #theme into a proper setter 2025-12-11 09:31:12 -06:00
Jason Zimdars 21586291fa Prefer normal if/else conditional 2025-12-11 08:59:13 -06:00
Jason Zimdars 2d359fa230 Clean-up styles and JS controller, use radios 2025-12-10 16:15:45 -06:00
Andy Smith dc6696940c Don't use abbreviations 2025-12-10 11:21:31 -06:00
Jason Zimdars 8db6f508bf Merge branch 'main' into theme-switcher-revised 2025-12-08 17:58:46 -06:00
Mike Dalessio 63805aee0f Merge pull request #1984 from gijigae/fix/japanese-ime-input
Fix Japanese IME input handling for tag, step, and reaction fields
2025-12-08 11:09:33 -05:00
Bruno Canepa f419ba5a13 refactor from PR feedback: update theme controller to use private methods for theme management 2025-12-07 20:07:06 -03:00
Jorge Manrubia 9f20e8bfbb Merge pull request #1973 from basecamp/lightbox-transitionend-handler
Fix lightbox transitionend listener leak
2025-12-07 11:44:03 +01:00
Jeremy Daer 529f5af5f6 CSP adherence: fix magic links console logging (#1989)
* CSP: fix magic link console logging by including nonce in the script tag

* Remove unused back-nav controller

Unused since c0f842427d

Eliminates a potential CSP violation with javascript: URI
2025-12-06 10:08:22 -08:00
Bruno Canepa 6ae9486b4d add 3 toggle botons 2025-12-06 14:29:49 -03:00
gijigae e03c002efd Fix Japanese IME input handling for tags and form fields
When typing in Japanese, the Enter key is used to confirm kanji conversion
during IME composition. Previously, pressing Enter would immediately save
the tag, which prevented users from completing the conversion.

Changes:
- Add isComposing check to navigable_list_controller.js Enter handler
- Add IME composition tracking to form_controller.js
- Add compositionstart/compositionend event handlers to tag, step, and
  reaction input fields
- Add preventComposingSubmit action to prevent form submission during
  composition

This fix supports all IME input methods (Japanese, Chinese, Korean, etc.)
using standard browser composition events.
2025-12-06 17:26:35 +09:00
Mike Dalessio fa549a370b Add a system test for joining an account
Reworked the magic link stimulus controller, because the system test
was causing double-submission of the form (because the event was
bubbling up). I think that change simplifies the form and will still
work well for iOS devices.
2025-12-05 21:51:44 -05:00
Jeremy Daer db55923fdb Fix lightbox transitionend listener leak
Switch to a Stimulus action for automatic handling
2025-12-05 16:19:01 -08:00
Jorge Manrubia 046a42c4f6 Rename to be more consistent 2025-12-05 07:55:11 +01:00
Jorge Manrubia fce6345fa6 Merge pull request #1936 from basecamp/use-self
Use buil-in support for :self in Stimulus
2025-12-04 22:42:55 +01:00
Jorge Manrubia effb96537a Use buil-in support for :self in Stimulus
Thanks to @brunoprietog for advice https://github.com/basecamp/fizzy/pull/1927/files/9639e07ab88f628f5f37ad2aa9acee2b86d4fb1a#diff-24a46f2ca97f2964d4d8940123b7f76578694567df84256f576aa4bee221179e
2025-12-04 22:16:00 +01:00
Andy Smith 1c5ead0096 Merge pull request #1930 from basecamp/prevent-blank-board-names
Prevent board names with only spaces and show validation message
2025-12-04 14:50:17 -06:00
Jorge Manrubia 9639e07ab8 Save a bunch of invocations on morph events from children elements 2025-12-04 21:27:22 +01:00
Jorge Manrubia 704b5b9788 Fix: memoization was showing stale values when morphing 2025-12-04 21:21:54 +01:00
Bruno Canepa 2120d00186 Add Theme Switcher 2025-12-04 16:36:16 -03:00
Jorge Manrubia bbec988516 Golden cards should be placed at the top 2025-12-04 19:23:55 +01:00
Jorge Manrubia a380492b32 Animate the column height with a stimulus controller so that it does not depend to the server to update when you D&D 2025-12-04 19:15:38 +01:00
Andy Smith 23ec3f129a Support custom validation messages 2025-12-04 11:43:55 -06:00
Andy Smith 5c4fe9fe8b Prevent board names with only spaces and show validation message 2025-12-04 11:37:27 -06:00
Jorge Manrubia 539d3721db Keep the column color when D&D cards 2025-12-04 18:31:23 +01:00
Jorge Manrubia 3536b6fb32 Modify counters optimistically too 2025-12-04 18:31:23 +01:00
Jorge Manrubia 19051aec3e Append dropped cards instead of relying on server-side rendering to refresh the columns
This implements a simple strategy to optimistically insert cards in columns without waiting for the column refresh. Cards will be placed at the top respecting golden cards.

This uses sorting by "created at" with sorting by "updated at" for the _Not now_ column, so that the treatment everywhere is homogenous.
2025-12-04 18:31:23 +01:00
Jorge Manrubia 0cb65685e5 Capture key presses inside the column edit form to prevent interferences with column navigation
https://app.fizzy.do/5986089/cards/3249
2025-12-03 13:28:44 +01:00
Stanko Krtalić 297f727199 Merge pull request #1838 from basecamp/fix-crash-when-inserting-an-emoji-in-a-maxlength-reaction
Fix crash when inserting an emoji into a max length reaction
2025-12-03 10:36:38 +01:00
Stanko K.R. f8eda42187 Fix crash when inserting an emoji into a max length reaction 2025-12-03 10:32:49 +01:00
Kevin McConnell cdc1f9b143 Allow typing magic links on mobile
When typing a magic link, rather than pasting it, iOS seems to send
`keydown.enter`, and we weren't submitting the form in that case.

Changed to submit the form in either case, and use the state of the
input target to help guard against double submissions.
2025-12-02 20:09:26 +00:00
Kevin McConnell d24726c1d3 Merge pull request #1768 from basecamp/data-exports
Add "data export" feature
2025-12-02 09:56:40 +00:00
Jorge Manrubia 11249949eb Fix: edit comment button disappears when morphing the page
This also replaces the ad-hoc stimulus controller with the pure-css based
solution we recently added.

https://app.fizzy.do/5986089/cards/3243
2025-12-02 07:06:50 +01:00
Jason Zimdars 717ee86d27 Update show attribute when refreshing to correctly hide the field when unselected
Previously it would hang around and bleed in the terms input
2025-12-01 16:36:28 -06:00
Kevin McConnell e16cc21b0a Add "data export" feature
- Adds a button in Account Settings where you can request a ZIP export of your
  Fizzy data
- Export files are created in the background. When ready, a link to
  download them is sent to the requester.
- Exports expire after 24 hours. And are limited to 10 per day.
2025-12-01 15:23:26 +00:00
Jorge Manrubia 0a0a8642c9 Fix: scrolling to parent navigable list despite of setting
We need to check the setting of the parent controller

https://app.fizzy.do/5986089/cards/3184
2025-11-27 18:04:38 +01:00
Jorge Manrubia ca10e4ba4e Prevent autoscroll to the root columns container to prevent jump on page load
https://app.fizzy.do/5986089/cards/3160
2025-11-25 21:01:18 +01:00
Jason Zimdars 0c05694a3c This seems to have caused the unwanted effect of not focusing the field in Mobile Safari
Looks like it regressed in
https://github.com/basecamp/fizzy/commit/250935530f86eb628d6b54ec6b7212dac9e76f8b.
Let's see if we can get focus in Safari without sacrificing select in
other browsers by simply moving the nextFrame() call
2025-11-24 17:48:02 -06:00
Jason Zimdars 9cc63c6dce This is too fancy, remove it 2025-11-24 15:48:08 -06:00
Andy Smith d61bff7321 Ability to close search when input is empty 2025-11-21 15:17:17 -06:00
Andy Smith 250935530f Better focus and clearing when searching 2025-11-21 14:32:10 -06:00
Jason Zimdars d179316662 Merge pull request #1650 from basecamp/column-nav-keyboard
Navigate columns with keyboard
2025-11-21 12:59:32 -06:00
Stanko K.R. ac2ed4851e Blur comment field after submission 2025-11-21 15:59:22 +01:00
Jorge Manrubia 6daccc88ae Deselect column/card selection when clicking outside 2025-11-21 12:53:13 +01:00
Jorge Manrubia 6af9ab9b6d Make selection work when toggling columns 2025-11-21 12:28:37 +01:00
Stanko K.R. 7c15be02f8 Skip navigation when opening a new tab 2025-11-21 11:48:29 +01:00
Jorge Manrubia a4cc568a71 Merge branch 'main' into column-nav-keyboard
Resolved conflict in app/views/boards/show/_columns.html.erb by combining:
- hide-scrollbar class from main
- navigable-list controller from column-nav-keyboard

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 10:54:45 +01:00