Commit Graph
100 Commits
Author SHA1 Message Date
Eugen Rochko cb36ab9a10 Bump version to 2.4.3rc1 2018-07-05 21:08:03 +02:00
Eugen Rochko 78f036b7d2 Remove reference to BTC, update video link 2018-07-05 21:02:21 +02:00
Eugen Rochko 8461cd4bb5 Send undo of boost to original poster if reblog (#7959)
Fix #7874
2018-07-05 20:57:50 +02:00
Eugen Rochko baff4a7ce0 If signed in, redirect autofollow invite to profile page (#7956)
Fix #7944
2018-07-05 20:57:35 +02:00
Eugen Rochko 32a4b524fb In e-mail validator, fallback from MX to A record (#7955)
Fix #7831
2018-07-05 20:57:24 +02:00
Eugen Rochko 4b198b172d Check reblogged status for blocked/muted mentions (#7957) 2018-07-05 18:43:37 +02:00
Eugen Rochko 1f6ed4f86a Add more granular OAuth scopes (#7929)
* Add more granular OAuth scopes

* Add human-readable descriptions of the new scopes

* Ensure new scopes look good on the app UI

* Add tests

* Group scopes in screen and color-code dangerous ones

* Fix wrong extra scope
2018-07-05 18:31:35 +02:00
Eugen Rochko 8ff0d64d05 What is on your mind -> What's on your mind (#7938) 2018-07-04 08:49:57 +09:00
Eugen Rochko 5b6db8a62a Disable service worker media cache and IndexedDB storage (#7932)
Fix #7893
Fix #7615
2018-07-03 19:50:18 +02:00
Eugen Rochko b0968623fa Fix check for PotentialFriendshipTracker when replying (#7933) 2018-07-03 05:00:44 +02:00
Eugen Rochko 23e1f143de Fix M hotkey inserting @undefined when in detailed status (#7931)
Fix #7903
2018-07-03 09:17:18 +09:00
Eugen Rochko 30b377cc15 Fix style of attachment list on /about (#7930) 2018-07-03 01:48:09 +02:00
Eugen Rochko da8fe8079e Re-add follow recommendations API (#7918)
* Re-add follow recommendations API

    GET /api/v1/suggestions

Removed in 8efa081f21 due to Neo4J
dependency. The algorithm uses triadic closures, takes into account
suspensions, blocks, mutes, domain blocks, excludes locked and moved
accounts, and prefers more recently updated accounts.

* Track interactions with people you don't follow

Replying to, favouriting and reblogging someone you're not following
will make them show up in follow recommendations. The interactions
have different weights:

- Replying is 1
- Favouriting is 10 (decidedly positive interaction, but private)
- Reblogging is 20

Following them, muting or blocking will remove them from the list,
obviously.

* Remove triadic closures, ensure potential friendships are trimmed
2018-07-03 01:47:56 +02:00
Eugen Rochko 2092d5c0ad Improve embeds (#7919)
* Make embeds cacheable by reverse proxy

* Make follow button on embeds open remote follow modal

Instead of web+mastodon://, also, turn the button blue, and add a
sign up prompt to the remote follow modal
2018-07-01 04:12:34 +02:00
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