Rosa Gutierrez
9ded80d448
Add test for notifying new mentionees when editing a comment
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-24 15:56:27 +01:00
Rosa Gutierrez
60b3c9c772
Fix duplicate push notification for mention and comment event
...
Event notifiers used the `mentionees` DB association to exclude mentioned
users from comment/card notifications. Since mentions are created async
via Mention::CreateJob, a race condition meant the mentionee list could
be empty when the event notification job ran first, causing the user to
receive both a comment and a mention push notification.
Use `scan_mentionees` instead, which scans the rich text body directly
for mentioned users without depending on Mention records existing yet.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-24 15:56:27 +01:00
Adrien Maston
7b93ec35b4
Merge pull request #2598 from basecamp/mobile/tweak-card-draft
...
Mobile / Tweak card draft
2026-02-24 14:56:31 +01:00
Denis Svara
3a14e3e338
Merge pull request #2599 from basecamp/mobile/path-config-setup
...
Mobile: Path config endpoint
2026-02-24 14:52:09 +01:00
Denis Švara
c0c78152c9
Add ios path config.
2026-02-24 11:26:07 +01:00
Denis Švara
e00a51b6c2
Add android path config.
2026-02-24 11:26:00 +01:00
Denis Švara
de3c8c46b5
Add constrained route.
2026-02-24 11:25:43 +01:00
Denis Švara
db9f67589c
Implement ClientConfigurationsController for mobile client path config.
2026-02-24 11:25:07 +01:00
Adrien Maston
b76f608c67
Simplify
...
Remove shadows and backgrounds
2026-02-24 11:22:20 +01:00
Stanko Krtalić
13d60932df
Merge pull request #2597 from basecamp/import-improvements
...
Import improvements
2026-02-24 08:40:17 +01:00
Stanko K.R.
0648583289
Fix other test failures caused by default host manipulation
2026-02-24 08:35:11 +01:00
Stanko K.R.
66fdcae960
Fix CI failure with no host set
2026-02-24 08:28:52 +01:00
Stanko K.R.
2f9d4533c5
Relativize absolute links to the instance on export
2026-02-24 08:22:01 +01:00
Stanko K.R.
4eadce8ffe
Automatically update account slugs in links
2026-02-24 08:11:47 +01:00
Stanko K.R.
55779f8ac4
Organize the record sets better
2026-02-24 07:36:51 +01:00
Stanko K.R.
d8ed2f44b8
Reconcile card count after import
2026-02-24 07:36:20 +01:00
dependabot[bot]
395cc06f5c
Bump aws-sdk-s3 from 1.211.0 to 1.213.0 ( #2502 )
...
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby ) from 1.211.0 to 1.213.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases )
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md )
- [Commits](https://github.com/aws/aws-sdk-ruby/commits )
---
updated-dependencies:
- dependency-name: aws-sdk-s3
dependency-version: 1.213.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 18:53:45 -05:00
dependabot[bot]
b0b14ead28
Bump sqlite3 from 2.8.0 to 2.9.0 ( #2386 )
...
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby ) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases )
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md )
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v2.8.0...v2.9.0 )
---
updated-dependencies:
- dependency-name: sqlite3
dependency-version: 2.9.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 18:48:52 -05:00
dependabot[bot]
3063a40f0f
Bump trilogy from 2.9.0 to 2.10.0 ( #2388 )
...
Bumps [trilogy](https://github.com/trilogy-libraries/trilogy ) from 2.9.0 to 2.10.0.
- [Release notes](https://github.com/trilogy-libraries/trilogy/releases )
- [Changelog](https://github.com/trilogy-libraries/trilogy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/trilogy-libraries/trilogy/compare/v2.9.0...v2.10.0 )
---
updated-dependencies:
- dependency-name: trilogy
dependency-version: 2.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 18:43:47 -05:00
dependabot[bot]
361d4a7a52
Bump solid_queue from 1.2.4 to 1.3.1 ( #2425 )
...
Bumps [solid_queue](https://github.com/rails/solid_queue ) from 1.2.4 to 1.3.1.
- [Release notes](https://github.com/rails/solid_queue/releases )
- [Commits](https://github.com/rails/solid_queue/compare/v1.2.4...v1.3.1 )
---
updated-dependencies:
- dependency-name: solid_queue
dependency-version: 1.3.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 18:42:48 -05:00
dependabot[bot]
6f99e43f5b
Bump puma from 7.1.0 to 7.2.0 ( #2462 )
...
* Bump puma from 7.1.0 to 7.2.0
Bumps [puma](https://github.com/puma/puma ) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/puma/puma/releases )
- [Changelog](https://github.com/puma/puma/blob/main/History.md )
- [Commits](https://github.com/puma/puma/compare/v7.1.0...v7.2.0 )
---
updated-dependencies:
- dependency-name: puma
dependency-version: 7.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* Sync Gemfile.saas.lock
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 17:25:30 -05:00
dependabot[bot]
5fad13c59f
Bump rack from 3.2.4 to 3.2.5 ( #2559 )
...
* Bump rack from 3.2.4 to 3.2.5
Bumps [rack](https://github.com/rack/rack ) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/rack/rack/releases )
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rack/rack/compare/v3.2.4...v3.2.5 )
---
updated-dependencies:
- dependency-name: rack
dependency-version: 3.2.5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
* Sync Gemfile.saas.lock
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 17:22:21 -05:00
dependabot[bot]
85bb2aa1fa
Bump turbo-rails from 2.0.21 to 2.0.23 ( #2501 )
...
* Bump turbo-rails from 2.0.21 to 2.0.23
Bumps [turbo-rails](https://github.com/hotwired/turbo-rails ) from 2.0.21 to 2.0.23.
- [Release notes](https://github.com/hotwired/turbo-rails/releases )
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.21...v2.0.23 )
---
updated-dependencies:
- dependency-name: turbo-rails
dependency-version: 2.0.23
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
* Sync Gemfile.saas.lock
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 17:09:22 -05:00
dependabot[bot]
446640b8e9
Bump the development-dependencies group with 2 updates ( #2588 )
...
* Bump the development-dependencies group with 2 updates
Bumps the development-dependencies group with 2 updates: [brakeman](https://github.com/presidentbeef/brakeman ) and [mocha](https://github.com/freerange/mocha ).
Updates `brakeman` from 8.0.1 to 8.0.2
- [Release notes](https://github.com/presidentbeef/brakeman/releases )
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md )
- [Commits](https://github.com/presidentbeef/brakeman/compare/v8.0.1...v8.0.2 )
Updates `mocha` from 3.0.1 to 3.0.2
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md )
- [Commits](https://github.com/freerange/mocha/compare/v3.0.1...v3.0.2 )
---
updated-dependencies:
- dependency-name: brakeman
dependency-version: 8.0.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: mocha
dependency-version: 3.0.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
* Sync Gemfile.saas.lock
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 16:41:44 -05:00
dependabot[bot]
d8908c4b92
Bump bootsnap from 1.22.0 to 1.23.0 ( #2589 )
...
* Bump bootsnap from 1.22.0 to 1.23.0
Bumps [bootsnap](https://github.com/rails/bootsnap ) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/rails/bootsnap/releases )
- [Changelog](https://github.com/rails/bootsnap/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rails/bootsnap/compare/v1.22.0...v1.23.0 )
---
updated-dependencies:
- dependency-name: bootsnap
dependency-version: 1.23.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* Sync Gemfile.saas.lock
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 16:41:17 -05:00
Jay Ohms
d17acd39ef
Merge pull request #2595 from basecamp/mobile/board-pull-to-refresh
...
Prevent pull-to-refresh gesture from conflicting with side scrolling on board perma
2026-02-23 11:43:24 -05:00
Adrien Maston
e08413a2dd
Merge pull request #2581 from basecamp/mobile/share
...
Mobile / Share
2026-02-23 17:13:44 +01:00
Jay Ohms
0ecc7527ca
Prevent pull-to-refresh gesture conflicting with side scrolling on the board perma on Android
2026-02-23 11:02:10 -05: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
Jeremy Daer
a02042b4c5
Add Deploy section to AGENTS.md ( #2593 )
...
* AGENTS.md: add Deploy section (main, 7 destinations, saas:enable)
Structured format for agent prelude discovery and cross-app
drift checking via verify-app-registry.
* Address review: document beta template env var requirement
The beta deploy config requires BETA_NUMBER; typical targets are beta1-beta4.
2026-02-22 11:04:33 -08:00
Peter Berkenbosch
8a591bd8ee
Fix typos in AGENTS.md ( #2571 )
2026-02-21 23:13:01 -05:00
Fernando
8d2075b653
Merge pull request #2580 from basecamp/fix-hyphenated-search
...
Fix hyphenated search
2026-02-20 12:14:38 -06:00
Andy Smith
b8c4b4a609
Merge pull request #2586 from basecamp/profile-center
...
Use flex instead of grid to better support single sections
2026-02-20 12:09:00 -06:00
Andy Smith
cd80893957
Handle two column layout on mobile
2026-02-20 11:55:36 -06:00
Andy Smith
dc0452fd0e
Use flex instead of grid to better support single sections
2026-02-20 11:54:16 -06:00
Andy Smith
25adfbbcb0
Merge pull request #2584 from basecamp/settings-overflow-fix
...
Make generic scrollable list class for settings
2026-02-20 11:47:31 -06:00
Rosa Gutierrez
3e5233239b
Fix push notification not firing on notification creation
...
- Rails only applies the last callback when `after_create_commit` and
`after_update_commit` reference the same method name [1]:
> However, if you use the `after_create_commit` and the
`after_update_commit` callback with the same method name, it will only
allow the last callback defined to take effect, as they both internally
alias to `after_commit` which overrides previously defined callbacks
with the same method name.
- Push notifications were never sent when a notification was first
created — only when the source was updated
- Replaced the two callbacks with a single `after_save_commit`, which
fires on both create and update, with the
`source_id_previously_changed?` guard (true for both new records and
source changes)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
[1] https://guides.rubyonrails.org/active_record_callbacks.html#aliases-for-after-commit
2026-02-20 18:37:33 +01:00
Andy Smith
17d869cf08
Cleanup unused classes
2026-02-20 11:09:15 -06:00
Andy Smith
f835c211af
Make generic scrollable list class for settings
2026-02-20 11:05:26 -06: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
Adrien Maston
9569032403
Move helper to bridge helper file
2026-02-20 13:03:28 +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
Adrien Maston
1ee37f046c
Move helper to bridge helper file
2026-02-20 12:46:00 +01:00
Fernando Olivares
85dc8ba455
Add repeated punctuation search stemmer test
2026-02-19 16:23:26 -06:00
Fernando Olivares
3932fce309
Add tests for hyphenated string search
...
Cover the stemmer tokenizing hyphenated input into separate words and
end-to-end search finding cards with hyphenated titles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 16:16:44 -06:00
Fernando Olivares
554182f4b4
Fix stemmer stripping hyphens instead of splitting on them
...
The stemmer was concatenating tokens across hyphens (e.g. "BC3-IOS-1D8B"
→ "bc3ios1d8b") while the query sanitizer split on them, causing MySQL
MATCH AGAINST to never find the indexed token. Replace non-word chars
with spaces instead of stripping them so indexing and querying tokenize
consistently.
Requires search:reindex after deploy to rebuild existing search records.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 16:16:39 -06:00
Adrien Maston
2bf9d92a03
Merge pull request #2578 from basecamp/mobile/tweak-page-header
2026-02-19 19:04:38 +01:00