Commit Graph
100 Commits
Author SHA1 Message Date
Eugen Rochko cdb101340a Keyword/phrase filtering (#7905)
* Add keyword filtering

    GET|POST       /api/v1/filters
    GET|PUT|DELETE /api/v1/filters/:id

- Irreversible filters can drop toots from home or notifications
- Other filters can hide toots through the client app
- Filters use a phrase valid in particular contexts, expiration

* Make sure expired filters don't get applied client-side

* Add missing API methods

* Remove "regex filter" from column settings

* Add tests

* Add test for FeedManager

* Add CustomFilter test

* Add UI for managing filters

* Add streaming API event to allow syncing filters

* Fix tests
2018-06-29 15:34:36 +02:00
Eugen Rochko 45b5e60909 Fix Chrome issue with sizes="0px" (#7886)
"Do not dumb here. Not dumb area here."
2018-06-25 00:12:15 +02:00
Eugen Rochko 2a1089839d Weblate translations (2018-06-19) (#7847)
* Translated using Weblate (Dutch)

Currently translated at 100.0% (623 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/nl/

* Translated using Weblate (Japanese)

Currently translated at 99.8% (622 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/

* Translated using Weblate (Greek)

Currently translated at 99.6% (621 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/el/

* Translated using Weblate (Japanese)

Currently translated at 92.9% (66 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/

* Translated using Weblate (Arabic)

Currently translated at 97.1% (69 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ar/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (71 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ar/

* Translated using Weblate (Catalan)

Currently translated at 99.8% (622 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ca/

* Translated using Weblate (Arabic)

Currently translated at 95.8% (597 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ar/

* Translated using Weblate (Dutch)

Currently translated at 94.3% (67 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/nl/

* Translated using Weblate (Catalan)

Currently translated at 100.0% (71 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ca/

* Translated using Weblate (Greek)

Currently translated at 99.6% (621 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/el/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (71 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (307 of 307 strings)

Translation: Mastodon/React
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/nl/

* Translated using Weblate (Persian)

Currently translated at 100.0% (307 of 307 strings)

Translation: Mastodon/React
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fa/

* Translated using Weblate (Korean)

Currently translated at 100.0% (71 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ko/

* Translated using Weblate (Slovak)

Currently translated at 96.3% (600 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sk/

* Translated using Weblate (Slovak)

Currently translated at 100.0% (307 of 307 strings)

Translation: Mastodon/React
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sk/

* Translated using Weblate (Slovak)

Currently translated at 95.7% (68 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sk/

* Translated using Weblate (Polish)

Currently translated at 99.8% (622 of 623 strings)

Translation: Mastodon/Backend
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (71 of 71 strings)

Translation: Mastodon/Preferences
Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/pl/

* Normalize
2018-06-19 02:25:29 +02:00
Eugen Rochko d017f240f9 Bump version to 2.4.2 2018-06-19 01:45:00 +02:00
Eugen Rochko 86cce466b6 Bump version to 2.4.2rc3 2018-06-19 00:19:54 +02:00
Eugen Rochko 1a9124f50b Update bcrypt to 3.1.12 fix issue with Fedora (#7845) 2018-06-19 00:19:17 +02:00
Eugen Rochko fc09b3722a Always send content for backwards-compatibility (#7844) 2018-06-18 23:58:13 +02:00
Eugen Rochko a04dca36a3 Bump version to 2.4.2rc2 2018-06-18 23:01:52 +02:00
Eugen Rochko 908a9671d0 Serialize language into ActivityPub JSON (#7840)
* Serialize language into ActivityPub JSON

* Only use contentMap if language is present
2018-06-18 22:43:01 +02:00
Eugen Rochko 50689f0d41 Create special case to prefer "jpeg" over "jpe" file extension (#7841) 2018-06-18 17:27:05 +02:00
Eugen Rochko a58ec29631 Allow selecting default posting language instead of auto-detect (#7828)
* Allow selecting default posting language instead of auto-detect

* Enable default language setting in credentials API

* Fix form saving
2018-06-17 18:57:31 +02:00
Eugen Rochko bb21c6414d Remove unused indexes (#7829) 2018-06-17 18:49:35 +02:00
Eugen Rochko 7eec279c7f Change language opt-out to language opt-in (#7823)
* Switch filtered_languages to chosen_languages

* Adjust interface

* Remove unused translations
2018-06-17 13:54:02 +02:00
Eugen Rochko 5e9d51c24b Do not pre-emojify note HTML in accounts REST API (#7821)
Fix #7820
2018-06-16 18:47:19 +02:00
Eugen Rochko 3b8023f9f9 Bump version to 2.4.2rc1 2018-06-15 20:38:41 +02:00
Eugen Rochko 0df91c7b1e Add dat, dweb, ipfs, ipns, ssb, gopher protocols to URL extractor (#7810)
* Add dat:// and gopher:// to URL extractor

Fix #6072

* Fix comment indent

* Add dweb, ipfs, ipns, ssb
2018-06-15 20:21:47 +02:00
Eugen Rochko 09147186b7 Fix regression where CW is focused on reply (#7811) 2018-06-15 19:49:32 +02:00
Eugen Rochko 53f0452b70 Remove rack-timeout (#7809)
Timeout considered harmful due to leaving the app in a broken
state, including unreaped database connections
2018-06-15 19:46:25 +02:00
Eugen Rochko ca85658975 Add autofollow option to invites (#7805)
* Add autofollow option to invites

* Trigger CodeClimate rebuild
2018-06-15 18:00:23 +02:00
Eugen Rochko 33dd9bf36d Fix vertical alignment of navigation bar (#7807) 2018-06-15 18:00:03 +02:00
Eugen Rochko c3b3594305 Remove placeholder text for media-only toots (#7806)
Ref: cfa9b6e13a

This breaks compatibility with pre-2.3.0 Mastodon and older
software, but at the time of writing the network is >80% above
that version.

Compatibility broken only for toots with no text.
2018-06-15 15:51:51 +02:00
Eugen Rochko 1cc775200e Add "find friends", "invite people", and more to getting started footer (#7803)
- Find friends from Twitter (bridge)
- Invite people (when invites enabled)
- Security (change e-mail/password)
- Developers (create OAuth apps/tokens)
2018-06-15 15:51:37 +02:00
Eugen Rochko 0979d4275a Bump version to 2.4.1 2018-06-10 17:20:56 +02:00
Eugen Rochko 35ae960122 Bump version to 2.4.1rc4 2018-06-10 00:39:56 +02:00
Eugen Rochko 10f51c9886 Fix domain hiding logic (#7765)
* Send rejections to followers when user hides domain they're on

* Use account domain blocks for "authorized followers" action

Replace soft-blocking (block & unblock) behaviour with follow rejection

* Split sync and async work of account domain blocking

Do not create domain block when removing followers by domain, that
is probably unexpected from the user's perspective.

* Adjust confirmation message for domain block

* yarn manage:translations
2018-06-09 22:46:54 +02:00
Eugen Rochko 17dc07f667 Fix has_one association on Web::PushSubscription (#7767)
* Fix has_one association on Web::PushSubscription

* Fix code style issues
2018-06-09 21:11:14 +02:00
Eugen Rochko a043f8d277 Ensure emoji-mart dependency is updated (#7771)
Regression from 85470ec since version string was not updated
2018-06-09 21:10:53 +02:00
Eugen Rochko 18e1de6a16 Migrate old web push subscriptions to ensure deliveries (#7764) 2018-06-09 13:33:04 +02:00
Eugen Rochko 6ba7d9d0d9 Do not accept ActivityPub follow requests from blocked user (#7756)
* Do not accept ActivityPub follow requests from blocked user

Fix #7745

* Deliver auto-rejection immediately when follow-requested by blocked account

* Fix trailing whitespace
2018-06-08 00:14:06 +02:00
Eugen Rochko 9b9e96eae5 Add "Edit profile" link to public profile page, increase bottom padding (#7754) 2018-06-07 22:40:55 +02:00
Eugen Rochko 158cd7ee74 Bump version to 2.4.1rc3 2018-06-06 21:27:06 +02:00
Eugen Rochko 59b42188a7 Filter out blocked/muted people from profile timelines (#7747)
Fix #7741
2018-06-06 21:13:30 +02:00
Eugen Rochko c75493755f Preserve newlines in delete & redraft and desktop notifications (#7750)
Fix #7748
2018-06-06 20:49:53 +02:00
Eugen Rochko fab65fb7e5 Bump version to 2.4.1rc2 2018-06-05 11:53:30 +00:00
Eugen Rochko bd0791d800 Add redraft function (#7735)
* Add redraft function

Fix #7010

* Add explicit confirmation

* Add explicit confirmation message
2018-06-05 00:17:38 +02:00
Eugen Rochko 1bbe81030c Display numbers in account header using shortNumberFormat for consistency (#7723) 2018-06-04 05:15:50 +02:00
Eugen Rochko c7405fda11 Fix missing column in select in mastodon:feeds:build task (#7720) 2018-06-04 04:21:15 +02:00
Eugen Rochko e18390cfe6 Fix bug in order of conversations in web UI (#7721) 2018-06-04 04:19:16 +02:00
Eugen Rochko 6b2f4f8c09 "Show" instead of "return to" after (remote)-following (#7718)
Resolve #6326
2018-06-04 03:00:36 +02:00
Eugen Rochko 0deb9fa6b9 Remove trending hashtags (#7711)
* Delete trends_controller.rb

* Update routes.rb

* Update trending_tags.rb

* Update index.js

* Update index.js

* Update search_results.js

* Update async-components.js

* Update index.js

* Delete trends.js

* Delete trends.js

* Delete trends_container.js

* Delete trends.js

* Update search_results.js

* Update search_results_container.js
2018-06-04 02:18:18 +02:00
Eugen Rochko 6e6c0e9613 Use different algorithm for trending tags (#7697) 2018-06-01 19:19:44 +02:00
Eugen Rochko 8d6e4e0485 Fix margin between compose warning, reply indicator and textarea (#7701) 2018-06-01 19:19:30 +02:00
Eugen Rochko 73c0c36e7b Improve trends layout (#7700)
* Allow collapsing trends, responsively hide trends

* Add trends column
2018-06-01 19:18:37 +02:00
Eugen Rochko fb1ae0152d Wrong exception class: ActiveRecord::RecordNotUnique, not PG::UniqueViolation (#7688)
* Wrong exception class: ActiveRecord::RecordNotUnique, not PG::UniqueViolation

It's completely not obvious but PG::UniqueViolation is just a string inside the exception message, not the actual class of the exception

* Favourite does not have target_account_id
2018-05-31 17:22:33 +02:00
Eugen Rochko 19b4c666f7 Improve account index migration (#7684)
* Improve account index migration

- Display more progress in stdout
- Catch PG::UniqueViolation when re-attributing favourites
- Skip callbacks and validations when re-attributing other relationships

* Use in_batches to reduce table lock-up during account merge

* Use #say_with_time to benchmark each deduplication
2018-05-31 17:09:09 +02:00
Eugen Rochko 1e938b966e Exclude unlisted, private and direct toots from affecting trends (#7686) 2018-05-31 16:47:28 +02:00
Eugen Rochko 0ce5339a7b Make the refresh trends button refresh trends (#7685) 2018-05-31 16:46:02 +02:00
Eugen Rochko c61c4565ab Fix nil error in migration (#7680)
Under rare circumstances the user record could have already been deleted before...
2018-05-31 02:30:37 +02:00
Eugen Rochko ad40bf5e0c Speed up some rake tasks by moving execution to Sidekiq (#7678)
* Speed up some rake tasks by moving execution to Sidekiq

mastodon:media:remove_silenced
mastodon:media:remove_remote
mastodon:media:redownload_avatars
mastodon:feeds:build

* Fix code style issue
2018-05-30 21:09:30 +02:00
Eugen Rochko a29f196f95 Bump version to 2.4.1rc1 2018-05-30 19:16:41 +02:00
Eugen Rochko 3623aea6c9 Redirect / to home on mobile layout, to getting started on desktop (#7677) 2018-05-30 18:42:06 +02:00
Eugen Rochko 1a7a74ff76 Improve getting started column (#7676)
* Adjust footer of getting started column

- Improved style
- Moved hotkeys, about this instance and logout to footer
- Removed FAQ, User Guide, Apps links
- Use hamburger icon for the column

* Add edit profile action button to profile and more to dropdown

* Add "Trending now" to getting started column

* Add preferences/security links on mobile layout
2018-05-30 18:41:47 +02:00
Eugen Rochko a16e06bbf5 Deduplicate accounts and make unique username/domain index case-insensitive (#7658)
Fix #6937
Fix #6837
Fix #6667
2018-05-30 02:51:26 +02:00
Eugen Rochko a7d726c383 Improve counter caches on Status and Account (#7644)
Do not touch statuses_count on accounts table when mass-destroying
statuses to reduce load when removing accounts, same for
reblogs_count and favourites_count

Do not count statuses with direct visibility in statuses_count

Fix #828
2018-05-30 02:50:23 +02:00
Eugen Rochko 461542784b Reduce wasted work in RemoveStatusService due to inactive followers (#7672) 2018-05-29 22:55:33 +02:00
Eugen Rochko 8bb74e50be Add GET /api/v2/search which returns rich tag objects, adjust web UI (#7661) 2018-05-29 02:01:24 +02:00
Eugen Rochko 90b64c0069 Always display tab navigation on local/federated timeline even when empty (#7663)
Fix #7659
2018-05-29 02:01:04 +02:00
Eugen Rochko e599d7caf2 Rescue Mastodon::DimensionsValidationError in Remoteable (#7662)
Fix #7660
2018-05-29 08:39:02 +09:00
Eugen Rochko 04a2cf8bcc Fix incomplete flex style on trends items (#7655) 2018-05-28 19:12:53 +02:00
Eugen Rochko ab36e0ef72 Record trending tags from ActivityPub, too (#7647) 2018-05-28 12:21:04 +09:00
Eugen Rochko dfbadd6837 Replace recursion in status mapStateToProps (#7645) 2018-05-28 02:42:06 +02:00
Eugen Rochko 9bd23dc4e5 Track trending tags (#7638)
* Track trending tags

- Half-life of 1 day
- Historical usage in daily buckets (last 7 days stored)
- GET /api/v1/trends

Fix #271

* Add trends to web UI

* Don't render compose form on search route, adjust search results header

* Disqualify tag from trends if it's in disallowed hashtags setting

* Count distinct accounts using tag, ignore silenced accounts
2018-05-27 21:45:30 +02:00
Eugen Rochko 63c7b91572 Validate that e-mail resolves with MX and it's not blacklisted (#7631)
Original patch by @j-a4
2018-05-27 11:58:08 +09:00
Eugen Rochko 182bdbc5f4 Don't use Object.assign with Notification, only display actions for mentions (#7632)
Fix #7627
2018-05-27 11:55:19 +09:00
Eugen Rochko ebf2fef029 Catch ActionController::UnknownFormat and return HTTP 406 (#7621)
An error like that should not appear in production error log.
2018-05-26 01:09:30 +02:00
Eugen Rochko d87649db07 Disable AMS logging (#7623)
Especially in production it's just noise and doesn't mix well with the log format
2018-05-26 01:08:31 +02:00
Eugen Rochko 4d81809f36 Yeah, it was supposed to be #create? 2018-05-22 20:05:24 +02:00
Eugen Rochko 7745a22ec7 Bump version to 2.4.0 2018-05-22 19:39:35 +02:00
Eugen Rochko f8cf85db3b Remove pointer to light theme until it is more polished (#7594) 2018-05-22 19:38:37 +02:00
Eugen Rochko 1a564df586 Do not encode HTML entities in initial Web Push payload body (#7592) 2018-05-22 18:12:45 +02:00
Eugen Rochko 36e47a31e3 Enforce order on authorized applications page (#7587)
Fix #7586
2018-05-22 14:44:53 +02:00
Eugen Rochko 5ea643b279 Save onlyMedia prop when pinning column (#7575) 2018-05-21 17:49:10 +02:00
Eugen Rochko 40ef46dbef Display only domain of report account if remote under comment (#7574) 2018-05-21 17:33:20 +02:00
Eugen Rochko 292c987522 Bump version to 2.4.0rc5 2018-05-21 16:05:31 +02:00
Eugen Rochko 22e067bf5c Use real container width in MediaGallery srcSet (#7571)
Fix #7568
2018-05-21 16:04:01 +02:00
Eugen Rochko 32d4372381 Use #any? instead of #exists? when checking media attachments (#7570)
If media_attachments are not loaded, SQL query is the same, but
the #exists? method performs SQL query even if preloaded
2018-05-21 16:01:16 +02:00
Eugen Rochko e583f110c3 Unescape HTML entities in rich web push notifications in web UI (#7569) 2018-05-21 16:00:56 +02:00
Eugen Rochko 05f8c375a2 Remove small pagination limit from context API (#7564)
Fix #7557
2018-05-21 12:43:05 +02:00
Eugen Rochko 9ada532809 Convert rich push notifications to plaintext in webapp (#7563)
* Convert rich push notifications to plaintext in webapp

* Fix code style issues
2018-05-21 03:35:37 +02:00
Eugen Rochko 779eb07d75 Improve default background of public profile header (#7556)
Looks better when no header image is set
2018-05-20 13:09:28 +02:00
Eugen Rochko 8378b72eba Ensure push subscription is immediately removed when application is revoked (#7548)
* Ensure push subscription is immediately removed when application is revoked

* When token is revoked from app, unsubscribe too
2018-05-19 21:05:08 +02:00
Eugen Rochko bcbb6aa46f Bump version to 2.4.0rc4 2018-05-19 18:38:10 +02:00
Eugen Rochko 1bbe12254d Improve direct message warning again (#7546) 2018-05-19 18:37:33 +02:00
Eugen Rochko 93c66f0c03 In footer, replace text "Mastodon" with logo (#7545) 2018-05-19 16:10:55 +02:00
Eugen Rochko 4b94e9c65e Improve payload format of Web Push API now that it's open (#7521)
> Good lord what is happening in there

Previously the contents of the Web Push API payloads closely resembled the structure of JavaScript's [Notification](https://developer.mozilla.org/en-US/docs/Web/API/Notification). But now that the API is open to non-browser apps, and given that there is no required coupling between contents of the payload and a Notification object, here is how I changed the payload:

```json
{ 
  "access_token": "...",
  "preferred_locale": "en",
  "notification_id": "12345",
  "notification_type": "follow",
  "title": "So and so followed you",
  "body": "This is my bio",
  "icon": "https://example.com/avatar.png"
}
```

The title, body and icon attributes are included as a fallback so you can construct a minimal notification if you cannot perform a network request to the API to get more data.
2018-05-19 14:46:47 +02:00
Eugen Rochko 7871d29aff Skip pagination logic for pinned account timelines in reducer (#7540)
Fix #7516
2018-05-19 02:51:29 +02:00
Eugen Rochko 97f02f2c08 Do not raise delivery failure on 4xx errors, increase stoplight threshold (#7541)
* Do not raise delivery failure on 4xx errors, increase stoplight threshold

Stoplight failure threshold from 3 to 10
Status code 429 will raise a failure/get retried

* Oops
2018-05-19 00:23:19 +02:00
Eugen Rochko 9422b3e0d8 Fix double-encoding of display name in title and e-mails (#7534) 2018-05-18 15:56:57 +02:00
Eugen Rochko 57b503d4ef Resolve unknown status from Add activity, skip Remove if unknown (#7526)
Fix #7518
2018-05-18 11:33:56 +02:00
Eugen Rochko dafd7afc5e Use randomized setTimeout when fallback-polling and re-add since_id (#7522) 2018-05-18 02:32:35 +02:00
Eugen Rochko 1e02dc8715 Add preference to hide following/followers lists (#7532)
* Add preference to hide following/followers lists

- Public pages
- ActivityPub collections (does not return pages but does give total)
- REST API (unless it's your own) (does not federate)

Fix #6901

* Add preference

* Add delegation

* Fix issue

* Fix issue
2018-05-18 02:26:51 +02:00
Eugen Rochko 7293b9fc61 Ensure unfilled fields are shown when errors are shown (#7523)
Fix #7486
2018-05-17 13:00:56 +02:00
Eugen Rochko dfb6907e08 HTTP signatures spec no longer requires algorithms field (#7525)
Fix #7520
2018-05-17 04:03:28 +02:00
Eugen Rochko 2b97451168 Fix images resized in browser getting cropped (#7514)
Fix #7487
2018-05-16 16:24:16 +02:00
Eugen Rochko 8756fd1e82 Bump version to 2.4.0rc3 2018-05-14 17:46:44 +02:00
Eugen Rochko d75b63e4fb Bump version to 2.4.0rc2 2018-05-14 14:49:38 +02:00
Eugen Rochko 416f644505 Fix 404 for GET /api/v1/push/subscription (#7472)
My bad...
2018-05-13 21:45:18 +02:00
Eugen Rochko 97e43ec5f0 Add GET /api/v1/push/subscription REST API (#7471)
* Add Api::V1::Push::SubscriptionsController#show

* Add to routes
2018-05-13 21:07:31 +02:00
Eugen Rochko f31e58af9e Fix nil error in StatusFilter (#7470)
Fix #7462
2018-05-13 20:26:30 +02:00
Eugen Rochko b4fb766b23 Add REST API for Web Push Notifications subscriptions (#7445)
- POST /api/v1/push/subscription
- PUT /api/v1/push/subscription
- DELETE /api/v1/push/subscription
- New OAuth scope: "push" (required for the above methods)
2018-05-11 11:49:12 +02:00