Commit Graph

358 Commits (6a251a7dd845a0363f690ae3bc7118b01d009985)

Author SHA1 Message Date
Eugen Rochko 24cafd73a2
Lists (#5703)
* Add structure for lists

* Add list timeline streaming API

* Add list APIs, bind list-account relation to follow relation

* Add API for adding/removing accounts from lists

* Add pagination to lists API

* Add pagination to list accounts API

* Adjust scopes for new APIs

- Creating and modifying lists merely requires "write" scope
- Fetching information about lists merely requires "read" scope

* Add test for wrong user context on list timeline

* Clean up tests
7 years ago
Surinna Curtis 35fbdc36f9 Merge tootsuite/master at 3023725936 7 years ago
Daniel Hunsaker cf7e840990 Update model annotations to use BIGINT for IDs (#5461)
All the migrations have been updated to use BIGINTs for ID fields in the DB, but ActiveRecord needs to be told to treat those values as BIGINT as well. This PR does that.
7 years ago
David Yip 42f2045c21 Merge remote-tracking branch 'STJrInuyasha/feature/direct-timeline' into gs-direct-timeline 7 years ago
Matthew Walsh 3db80f75a6 Added a timeline for Direct statuses
* Lists all Direct statuses you've sent and received
* Displayed in Getting Started
* Streaming server support for direct TL
7 years ago
David Yip 6cd5b3bbe5 Merge remote-tracking branch 'origin/master' into gs-master 7 years ago
unarist a1c54220e8 Optimize Status#permitted_for 500x (account timeline) (#5373)
The main change of this PR is removing `order by visibility` hack.

This was introduced to force using of `index_statuses_on_account_id` instead of PK index, but it seems no longer needed probably due to `index_statuses_on_account_id_id`. Removing this avoids reading all rows, so really improves first fetching of the user who has lot of statuses.

I have also changed JOIN to IN + subquery, which slightly faster in most cases.
7 years ago
Eugen Rochko b8db386e05 Fix UserTrackingConcern firing on every request, optimize some queries (#5368)
- For some reason, :if option on before_action did not work. It got
  executed every time, returned false, and the action run anyway,
  which led to the current_sign_in_at and sign_in_count being
  updated on every request
- Return "do not filter" early in FeedManager#filter_from_home? if
  the status is authored by receiver. Usually this method is not
  called for own statuses at all, but it is called when Feed#get
  uses the database
- Return early if #reload_stale_associations! has nothing to load
  to save a database query with WHERE 1=0
7 years ago
Lex Alexander b8bae96647 Retoot count increases without reason (#5363)
* Retoot count increases without reason

-The store_uri method for Statuses was being called on after_create and causing reblogs to be incremented twice.
-This calls it when the transaction is finished by using after_create_commit.
-Fixes #4916.

* Added test case for after_create_commit callback for checking reblog count.

* Rewrote test to keep original, but added one for only the after_create_commit callback.
7 years ago
kibigo! 8d6b9ba494 Merge upstream 2.0ish #165 7 years ago
beatrix f0a2a6c875 try to tighten up local only toot stuff, like... properly (#163)
* try to tighten up local only toot stuff, like... properly

* try to un-break tests
7 years ago
Eugen Rochko 0717d9b3e6 Set snowflake IDs for backdated statuses (#5260)
- Rename Mastodon::TimestampIds into Mastodon::Snowflake for clarity
- Skip for statuses coming from inbox, aka delivered in real-time
- Skip for statuses that claim to be from the future
7 years ago
Eugen Rochko 1e02ba111a Add emoji autosuggest (#5053)
* Add emoji autosuggest

Some credit goes to glitch-soc/mastodon#149

* Remove server-side shortcode->unicode conversion

* Insert shortcode when suggestion is custom emoji

* Remove remnant of server-side emojis

* Update style of autosuggestions

* Fix wrong emoji filenames generated in autosuggest item

* Do not lazy load emoji picker, as that no longer works

* Fix custom emoji autosuggest

* Fix multiple "Custom" categories getting added to emoji index, only add once
7 years ago
Eugen Rochko 9c8e602163 Fix custom emojis not detected when used in content warning (#5049) 7 years ago
Akihiko Odaki 0de82dd316 Do not filter statuses with unknown languages (#5045) 7 years ago
Eugen Rochko 81cec35dbf Custom emoji (#4988)
* Custom emoji

- In OStatus: `<link rel="emoji" name="coolcat" href="http://..." />`
- In ActivityPub: `{ type: "Emoji", name: ":coolcat:", href: "http://..." }`
- In REST API: Status object includes `emojis` array (`shortcode`, `url`)
- Domain blocks with reject media stop emojis
- Emoji file up to 50KB
- Web UI handles custom emojis
- Static pages render custom emojis as `<img />` tags

Side effects:

- Undo #4500 optimization, as I needed to modify it to restore
  shortcode handling in emojify()
- Formatter#plaintext should now make sure stripped out line-breaks
  and paragraphs are replaced with newlines

* Fix emoji at the start not being converted
7 years ago
unarist dd6f9a1b82 Validate uri presence for remote status (#4985) 7 years ago
Akihiko Odaki 198a9a4fa4 Remove local_only scope in Status (#4977) 7 years ago
Eugen Rochko dd6ede554f Fix #4834 - Adjust Status#local and Status#remote scopes (#4839) 7 years ago
Eugen Rochko 11bddd31ce Fix locking migration on statuses table. Nullable column and NO default value (#4825) 7 years ago
Eugen Rochko e7adbf572a Switch to static URIs, new URI format in both protocols for new statuses (#4815)
* Decouple Status#local? from uri being nil

* Replace on-the-fly URI generation with stored URIs

- Generate URI in after_save hook for local statuses
- Use static value in TagManager when available, fallback to tag format
- Make TagManager use ActivityPub::TagManager to understand new format
- Adjust tests

* Use other heuristic for locality of old statuses, do not perform long query

* Exclude tombstone stream entries from Atom feed

* Prevent nil statuses from landing in Pubsubhubbub::DistributionWorker

* Fix URI not being saved (#4818)

* Add more specs for Status

* Save generated uri immediately

and also fix method order to minimize diff.

* Fix alternate HTML URL in Atom

* Fix tests

* Remove not-null constraint from statuses migration to speed it up
7 years ago
Eugen Rochko 7dc5035031 Make PreviewCard records reuseable between statuses (#4642)
* Make PreviewCard records reuseable between statuses

**Warning!** Migration truncates preview_cards tablec

* Allow a wider thumbnail for link preview, display it in horizontal layout (#4648)

* Delete preview cards files before truncating

* Rename old table instead of truncating it

* Add mastodon:maintenance:remove_deprecated_preview_cards

* Ignore deprecated_preview_cards in schema definition

* Fix null behaviour
7 years ago
Eugen Rochko 4c76402ba1 Serialize ActivityPub alternate link into OStatus deletes, handle it (#4730)
Requires moving Atom rendering from DistributionWorker (where
`stream_entry.status` is already nil) to inline (where
`stream_entry.status.destroyed?` is true) and distributing that.

Unfortunately, such XML renderings can no longer be easily chained
together into one payload of n items.
7 years ago
Eugen Rochko 9caa90025f Pinned statuses (#4675)
* Pinned statuses

* yarn manage:translations
7 years ago
Eugen Rochko e2685ccc81 Fix #4149, fix #1199 - Store emojis as unicode (#4189)
- Use unicode when selecting emoji through picker
- Convert shortcodes to unicode when storing text input server-side
- Do not convert shortcodes in JS anymore
7 years ago
Eugen Rochko 880a5eb25c Fix boolean columns sometimes having a null value (#4162)
* Fix boolean columns sometimes having a null value

* Fix wrong value being set instead of null
7 years ago
Eugen Rochko e48d3bfd01 Fix #1010 - When spoiler text is set, enforce sensitivity too (#4176) 7 years ago
Eugen Rochko 0190aac240 Fix regression from #3842 (#3892)
* Fix regression from #3842

Simplify the query by omitting all direct statuses. Private statuses
are allowed because they are from accounts we are following (so
by definition)

Resolves #3887 (alternative)

* Adjust test
7 years ago
Akihiko Odaki (@fn_aki@pawoo.net) bab5a18232 Filter direct statuses in Status.as_home_timeline (#3842)
The classes using Status.as_home_timeline, namely Feed and
PrecomputeFeedService are expected to filter direct statuses as
FanOutWriteService does, but their filtering were incomplete or missing.

This commit solves the problem by filtering direct statuses in
as_home_timeline as the other similar methods such as as_public_timeline
does.
7 years ago
Matt Jankowski 022008a2a6 Language detection defaults to nil (#3666)
* Default to nil for statuses.language

* Language detection defaults to nil instead of instance UI default
7 years ago
Matt Jankowski 6201f96b8a Introduce StatusThreadingConcern (#3490)
* Add a StatusFilter class to identify visibility of statuses by accounts

* Extract StatusThreadingConcern from Status

* Clarify purpose of checking for nil account
7 years ago
Matt Jankowski b25e42a77f Misc tidying and clean ups (#3445)
* Remove trailing whitespace in i18n mailers

* Use query methods instead of #present? on AR attributes

* Delegate Status#account_domain method

* Delegate Mention #account_username and #account_acct methods
7 years ago
Jack Jennings 3a2003ba86 Extract authorization policy for viewing statuses (#3150) 7 years ago
Akihiko Odaki 8fd174298d Cover AccountsController more in spec (#3229)
* Introduce recent scope to Status and StreamEntry

Introduce recent scope to Status and StreamEntry as Account has.

* Cover AccountsController more in AccountsController
7 years ago
Matt Jankowski 8f4b7c1820 Filter languages with opt out (#3175)
* Remove allowed_languages and add filtered_languages

* Use filtered_languages instead of allowed_languages
7 years ago
beatrix 724fc3cbdf guard against empty domain block list in status scope (#3161) 7 years ago
Eugen Rochko f8ee136c29 Fix federated timeline excluding local toots when any domain blocks are set (#3151) 7 years ago
Eugen Rochko f1ab70649b Add buttons to block and unblock domain (#3127)
* Add buttons to block and unblock domain

* Relationship API now returns "domain_blocking" status for accounts,
rename "block entire domain" to "hide entire domain", fix unblocking domain,
do not block notifications from domain-blocked-but-followed people, do
not send Salmons to domain blocked users

* Add test

* Personal domain blocks shouldn't affect Salmon after all, since in this
direction of communication the control is very thin when it comes to
public stuff. Best stay consistent and not affect federation in this way

* Ignore followers and follow request from domain blocked folks,
ensure account domain blocks are not created for empty domain,
and avoid duplicates in validation

* Purge followers when blocking domain (without soft-blocks, since they
are useless here)

* Add tests, fix local timeline being empty when having any domain blocks
7 years ago
Matt Jankowski 6e4c7d6211 Conditional validations no longer accept strings for if/unless (#3124) 7 years ago
Eugen Rochko 620d0d8029 Account domain blocks (#2381)
* Add <ostatus:conversation /> tag to Atom input/output

Only uses ref attribute (not href) because href would be
the alternate link that's always included also.

Creates new conversation for every non-reply status. Carries
over conversation for every reply. Keeps remote URIs verbatim,
generates local URIs on the fly like the rest of them.

* Conversation muting - prevents notifications that reference a conversation
(including replies, favourites, reblogs) from being created. API endpoints
/api/v1/statuses/:id/mute and /api/v1/statuses/:id/unmute

Currently no way to tell when a status/conversation is muted, so the web UI
only has a "disable notifications" button, doesn't work as a toggle

* Display "Dismiss notifications" on all statuses in notifications column, not just own

* Add "muted" as a boolean attribute on statuses JSON

For now always false on contained reblogs, since it's only relevant for
statuses returned from the notifications endpoint, which are not nested

Remove "Disable notifications" from detailed status view, since it's
only relevant in the notifications column

* Up max class length

* Remove pending test for conversation mute

* Add tests, clean up

* Rename to "mute conversation" and "unmute conversation"

* Raise validation error when trying to mute/unmute status without conversation

* Adding account domain blocks that filter notifications and public timelines

* Add tests for domain blocks in notifications, public timelines
Filter reblogs of blocked domains from home

* Add API for listing and creating account domain blocks

* API for creating/deleting domain blocks, tests for Status#ancestors
and Status#descendants, filter domain blocks from them

* Filter domains in streaming API

* Update account_domain_block_spec.rb
7 years ago
alpaca-tc 59ceeae8ea Refactor Status#ancestors/descendants (#3092) 7 years ago
alpaca-tc a2a2af244c Optimize Status#permitted_for 24x (#3069)
* Build query with arel node

* Add spec for current Status#permitted_for implementation

* Refactor status.rb

* Order by visibility to optimize query
7 years ago
Eugen Rochko af706583bd Fix change of status callbacks not setting in_reply_to_account_id and (#3072)
possibly others when expected. Add some tests for it
7 years ago
Eugen Rochko d0dd9eb5b5 Feature conversations muting (#3017)
* Add <ostatus:conversation /> tag to Atom input/output

Only uses ref attribute (not href) because href would be
the alternate link that's always included also.

Creates new conversation for every non-reply status. Carries
over conversation for every reply. Keeps remote URIs verbatim,
generates local URIs on the fly like the rest of them.

* Conversation muting - prevents notifications that reference a conversation
(including replies, favourites, reblogs) from being created. API endpoints
/api/v1/statuses/:id/mute and /api/v1/statuses/:id/unmute

Currently no way to tell when a status/conversation is muted, so the web UI
only has a "disable notifications" button, doesn't work as a toggle

* Display "Dismiss notifications" on all statuses in notifications column, not just own

* Add "muted" as a boolean attribute on statuses JSON

For now always false on contained reblogs, since it's only relevant for
statuses returned from the notifications endpoint, which are not nested

Remove "Disable notifications" from detailed status view, since it's
only relevant in the notifications column

* Up max class length

* Remove pending test for conversation mute

* Add tests, clean up

* Rename to "mute conversation" and "unmute conversation"

* Raise validation error when trying to mute/unmute status without conversation
7 years ago
alpaca-tc e9810cbad6 Fixes NoMethodError: undefined method 'first' for nil:NilClass (#3036) 7 years ago
Eugen Rochko 5abdc77c80 Add conversation model, <ostatus:conversation /> (#3016)
* Add <ostatus:conversation /> tag to Atom input/output

Only uses ref attribute (not href) because href would be
the alternate link that's always included also.

Creates new conversation for every non-reply status. Carries
over conversation for every reply. Keeps remote URIs verbatim,
generates local URIs on the fly like the rest of them.

* Fix conversation migration

* More spec coverage for status before_create

* Prevent n+1 query when generating Atom with the new conversations

* Improve code style

* Remove redundant local variable
7 years ago
yhirano 298796cc7b annotate models (#2697)
* add annotate to Gemfile

* rails g annotate:install

* configure annotate_models

* add schema info to models

* fix rubocop to add frozen_string_literal
7 years ago
Matt Jankowski f025cc6782 Filter on allowed user language preferences (#2361)
* Naive approached to timeline filtering

* Convert allowed_languages into a db column

* Allow users to choose languages to see statuses in

* Style list items as two columns

* Add a hint to explain language filtering preference
7 years ago
Matt Jankowski effb08edbb More status specs (#2564)
* Add rough outline of coverage needed for public timeline

* Specs for visibility, replies, boosts

* Specs for silenced account

* Specs for local_only option

* Specs for blocks and mutes

* Add tentative spec around including other silenced account statuses

* Add with_public_visibility scope

* Add simple coverage for tag_timeline

* Tag timeline includes replies

* Replace tag.statuses with a tagged_with scope in tag timeline method

* Use with_public_visibility in tag timeline

* Extract common scope between public and tag timelines to method

* Extract local domain check to local_only scope

* Extract local_only check to starting scope method

* Move list of excluded from timeline account ids to account model

* Simplify excluded accounts list on account model

* Only join accounts when needed

* Rename method for account specific filtering

* Extract method for account exclusions

* Fix bug where silenced accounts were not including statuses from other silenced accounts

* DRY up filter application from account or no account

* timeline_scope can be private

* Add spec showing that account can find its excluded accounts ids

* Add spec which fails if local_only does not have a left outer join

* rubocop
7 years ago
Eugen Rochko d4fedf84e0 Cache Status#ancestors recursive query results (#2527) 7 years ago
Tomohiro Suwa 1f805a6377 Don't need to include ActiveModel::Validations (#2521) 7 years ago
Evan Minto 66fd8e7821 ActivityPub: Add basic, read-only support for Outboxes, Notes, and Create/Announce Activities (#2197)
* Clean up collapsible components

* Expose user Outboxes and AS2 representations of statuses

* Save work thus far.

* Fix bad merge.

* Save my work

* Clean up pagination.

* First test working.

* Add tests.

* Add Forbidden error template.

* Revert yarn.lock changes.

* Fix code style deviations and use localized instead of hardcoded English text.
7 years ago
alpaca-tc 2c0d756ad9 Extract error messages to locale file (#2162) 7 years ago
839 e2a1b574ab Avoid dynamic methods due to processing speed (#2080) 7 years ago
Eugen Rochko f5cd0b4956 Rename cache key to exclude_account_ids_for:id, adjust formatting 7 years ago
Eugen Rochko 2fd0473aa1 Merge branch 'fix/cache_blocking' of git://github.com/pixiv/mastodon into pixiv-fix/cache_blocking 7 years ago
alpaca-tc 630de52fdd Required foreign keys (#2003)
* Add `required: true` option to foreign column

* Fixes NoMethodError

```
> Favourite.new.valid?
NoMethodError: undefined method `reblog?' for nil:NilClass
```
7 years ago
Effy Elden acd33101c5 Merge branch 'master' into fix/cache_blocking 7 years ago
Matt Jankowski 73b0af5c93 Simplify the og:image and og:description code in stream_entries/show (#1934) 7 years ago
Keiji Yoshimi fd81916e86 cache blockings for reducing queries. 7 years ago
Eugen c172919745 Fix #1339 - better Atom titles (#1343) 7 years ago
Joël Quenneville d4c94fa004 DRY up reblog vs original status check
Checking reblog vs original status was happening in multiple places
across the app. For views, this logic was encapsulated in a helper
method named `proper_status` but in the other layers of the app, the
logic was duplicated.

Because the logic is used at all layers of the app, we extracted it into
a `Status#proper` method on the model and changed all uses of the logic
to use this method. There is now a single source of truth for this
condition.

We added test coverage to untested methods that got refactored.
7 years ago
Brad Urani 6a1da87cd3 Eliminate unnecessary queries and query clauses with none and all 7 years ago
Eugen Rochko 4c53af64f0 Fix ActionController::Parameters in API issue 7 years ago
Eugen Rochko de22c202f5 Add counter caches for a large performance increase on API requests 7 years ago
Eugen Rochko 74ae158c2f Add "direct" visibility level in the backend. Web UI is not yet
adjusted to allow choosing it, yet
7 years ago
Eugen Rochko 5f4e402204 Improved /api/v1/accounts/:id/statuses with new params: only_media, exclude_replies
Redirect /:username to /users/:username
Redirect /:username/:id to /users/:username/updates/:id
Updated API documentation and sponsors
7 years ago
Eugen Rochko c64a1c25c4 Fix #231 - Muting 7 years ago
Kit Redgrave 442fdbfc53 Mute button progress so far. WIP, doesn't entirely work correctly. 7 years ago
Eugen Rochko 4aa5ebe591 Split public timeline into "public timeline" which is local, and
"whole known network" which is what public timeline used to be

Only domain blocks with suspend severity will block PuSH subscriptions
Silenced accounts should not appear in conversations unless followed
7 years ago
Eugen Rochko 24ba7c9762 Adding index overview for reports in admin UI 7 years ago
Eugen Rochko 31c633e528 Fix Status.permitted_for scope query 7 years ago
Eugen Rochko dc851c922e Mentions in private statuses allow mentioned people to see them 7 years ago
Eugen Rochko 0afed995ce Fix the fix 7 years ago
Eugen Rochko 6331ed16e5 Fix #614 - extra reply-boolean on statuses to account for cases when replied-to
status is not in the system at time of distribution; fix #607 - reset privacy
settings to defaults when cancelling replies
7 years ago
Eugen Rochko ac035108aa Add "clear notifications" button, exclude posts from people who have blocked *you* from public/hashtag timelines 7 years ago
Eugen Rochko 347a153b3d Add API modifiers to limit returned toots from public/hashtag timelines
to only those from local users; Add link to "extended information" to
getting started in the UI; Add defaults for posting privacy; Change
how publish button looks depending on posting privacy chosen
7 years ago
Eugen Rochko 77e13c2bc9 Removing failed push notification API, make context loads use cache 7 years ago
Eugen Rochko d9ca46b464 Cleaning up format of broadcast real-time messages, removing
redis-backed "mentions" timeline as redundant (given notifications)
7 years ago
Eugen Rochko bf60f2898d Fix #529 - Make hashtag timelines show conversations, fix hashtag loading in the UI 7 years ago
Eugen Rochko 999cde94a6 Instead of using spoiler boolean and spoiler_text, simply check for non-blank spoiler_text
Federate spoiler_text using warning attribute on <content /> instead of a <category term="spoiler" />
Clean up schema file from accidental development migrations
7 years ago
blackle bf0f6eb62d Implement a click-to-view spoiler system 7 years ago
Eugen Rochko f0de621e76 Fix #463 - Fetch and display previews of URLs using OpenGraph tags 7 years ago
Eugen Rochko e9737c2235 Fix tests, add applications to eager loading/cache for statuses, fix
application website validation, don't link to app website if website isn't set,
also comment out animated boost icon from #464 until it's consistent with non-animated version
7 years ago
Effy Elden d6bc0e8db4 Add tracking of OAuth app that posted a status, extend OAuth apps to have optional website field, add application details to API, show application name and website on detailed status views. Resolves #11 7 years ago
Eugen Rochko 8d44281677 Set in_reply_to_account on statuses to non-self value when possible, thus
resolving the confusion from self-chain replies ultimately linking to a
non-self status. Adjust filters
7 years ago
Eugen Rochko 7376af90f7 Don't show statuses to blocked users 8 years ago
Eugen Rochko 6e064cf715 Fix account timelines bug 8 years ago
Eugen Rochko b891a81008 Follow call on locked account creates follow request instead
Reflect "requested" relationship in API and UI
Reflect inability of private posts to be reblogged in the UI
Disable Webfinger for locked accounts
8 years ago
Eugen Rochko f91b6fa9e1 Merge branch 'master' into development 8 years ago
Eugen Rochko 3caf0cfb03 Ensure that reblogs and favs always refer to the original status rather than a reblog wrapper 8 years ago
Eugen Rochko 80e02b90e4 Private visibility on statuses prevents non-followers from seeing those
Filters out hidden stream entries from Atom feed
Blocks now generate hidden stream entries, can be used to federate blocks
Private statuses cannot be reblogged (generates generic 422 error for now)
POST /api/v1/statuses now takes visibility=(public|unlisted|private) param instead of unlisted boolean
Statuses JSON now contains visibility=(public|unlisted|private) field
8 years ago
Eugen Rochko 84d2371d6a Fix 8 years ago
Eugen Rochko 39cc9fde8a Add account suspension 8 years ago
Eugen Rochko b14b5e3b44 Improve notification model 8 years ago
Eugen Rochko 816284d739 Fix #248 - Reload all accounts when fetching from cache 8 years ago
Eugen Rochko 3114e55c7a Fix #323 - self-replies to appear in public timelines again 8 years ago
Eugen Rochko 58b3f4fd67 Fix #329 - avatar errors no longer prevent remote accounts from being saved
(without avatar). Also improved search position of exact matches
8 years ago
Eugen Rochko 14bd46946d Per-status control for unlisted mode, also federation for unlisted mode
Fix #233, fix #268
8 years ago
Eugen Rochko a21bcac9e1 Further abstract caching for includes 8 years ago
Eugen Rochko 8a4913fde0 Public and hashtag timelines now exclude reblogs and replies
Fix #289 - don't download avatar unless the URL is http/https
Fix #293 - reblog/reblogged is now boost/boosted
8 years ago
Eugen Rochko cf912e01fd Implement includes caching for timelines APIs 8 years ago
Eugen Rochko 5c78547198 More query optimizations 8 years ago
Eugen Rochko fc90d38893 Moving some counter queries out of subqueries in the API 8 years ago
Eugen Rochko e8c27767aa Remove orphaned notifications, add scopes param to app create API 8 years ago
Eugen Rochko 882de42bab Validate presence of text even for remote statuses 8 years ago
Eugen Rochko 4f07fb1f0a Fix #144 - Filter statuses from blocked users out of ancestors/descendants results 8 years ago
Eugen Rochko fdc17bea58 Fix rubocop issues, introduce usage of frozen literal to improve performance 8 years ago
Eugen Rochko 0320ea4b85 Fix public timeline query 8 years ago
Eugen Rochko aabf884c5f Discard misattributed remote statuses, improve timelines filter 8 years ago
Eugen Rochko 17903c6dae Improve filtering of public/hashtag timelines, both in backlog and real-time 8 years ago
Eugen Rochko b13e7dda1f API pagination for all collections using Link header 8 years ago
Eugen Rochko 9aecc0f48a Move timelines API from statuses to its own controller, add a check for
resources that require a user context vs those that don't (such as public timeline)

/api/v1/statuses/public   -> /api/v1/timelines/public
/api/v1/statuses/home     -> /api/v1/timelines/home
/api/v1/statuses/mentions -> /api/v1/timelines/mentions
/api/v1/statuses/tag/:tag -> /api/v1/timelines/tag/:tag
8 years ago
Eugen Rochko 48b9619439 Adding hashtags 8 years ago
Eugen Rochko 62292797ec Adding hashtag model 8 years ago
Eugen Rochko 0160d1d9b5 Enable caching for some rabl views 8 years ago
Eugen Rochko 909d0d5e88 Adding public timeline silencing 8 years ago
Eugen Rochko a782e3b39d Actually fix public timeline 8 years ago
Eugen Rochko b5c6d00afa Fix #99 - public timeline not just reblogs, fix #98 infinite scrolling issues 8 years ago
Eugen Rochko de1f3aab86 Fix #16 - Optimize n+1 queries when checking reblogged/favourited values for status lists in API 8 years ago
Eugen Rochko 1de2833f30 Filter out reblogs of blocked users from public timeline (the not real-time variant) 8 years ago
Eugen Rochko 427ba27641 Public timeline to exclude users you blocked 8 years ago
Eugen Rochko 2d4f9ecebf Validate against multiple reblogs of same status by same account 8 years ago
Eugen Rochko 927333f4f8 Improve code style 8 years ago
Eugen Rochko e9bc4a4a08 Limit usernames to 30 chars, statuses to 500, open account after follow form success 8 years ago
Eugen Rochko c6d893a71d Uploading/undoing media modifies status text. Also: status text trimmed before validation 8 years ago
Eugen Rochko c0e9603c92 Fix #50 - Order ancestors/descendants by tree path 8 years ago
Eugen Rochko 762157ee4e Fix for single status pages 8 years ago
Eugen Rochko 85d89b472d Optimized n+1 queries in accounts Atom and HTML views
Added stack trace for SQL queries in development
Removed badly thought out accounts/lookup API
8 years ago
Eugen Rochko 1d9c886518 Adding enclosures to Atom and statuses JSON 8 years ago
Eugen Rochko ae1fac0062 Add API to upload media attachments 8 years ago
Eugen Rochko 10ba09f546 Upgrade to Rails 5.0.0.1 8 years ago
Eugen Rochko 85b00d19b8 Moving Salmon notifications to background processing, fixing mini-profiler
behaviour with Turbolinks enabled, optimizing Rabl for production
8 years ago
Eugen Rochko 318886287b Fixing some stuff for Turbolinks, adding gzip on top, fixing a n+1 query 8 years ago
Eugen Rochko a08e724476 Fix subscriptions:clear task, refactor feeds, refactor streamable activites
and atom feed generation to some extent, as well as the way mentions are
stored
8 years ago
Eugen Rochko 0f5bbb999c Pre-loading polymorphic associations for Atom feeds 8 years ago
Eugen Rochko c8999a116e Sanitize remote html in atom feeds, API (not just UI), use cached mention
relations on Status#mentions
8 years ago
Eugen Rochko 7cd3de3494 Do display top-level content on remote shared notices 8 years ago
Eugen Rochko 082e1cbe5a Fix default max_id query in paginate_by_max_id 8 years ago
Eugen Rochko 12559b01ea Add pagination by max_id instead of offset/limit 8 years ago
Eugen Rochko f14f462eaf Adding Turbolinks, adding status posting form on homepage 8 years ago
Eugen Rochko 35aafdba96 Ancestors and descendants of statuses 8 years ago
Eugen Rochko 7e00a21ea6 Small optimizations in Atom feeds 8 years ago
Eugen Rochko f97fc9744f Use FanOutOnWriteService AFTER processing mentions 8 years ago
Eugen Rochko 5c99e304e5 Deleting statuses, deletion propagation 8 years ago
Eugen Rochko 75b3339a99 Respect "delete" verb on remote feeds 8 years ago
Eugen Rochko aab9f57e36 Adding config for puma, dashboard layout, fixing some queries 8 years ago
Eugen Rochko 447cfef62d Improving feed queries, switching API to doorkeeper authentication 8 years ago
Eugen Rochko 6c4c84b161 Distrubute statuses as a fan-out-on-write system, with optional precomputing 8 years ago
Eugen Rochko aab330eb2d Adjusting design of public pages, optimizing account page queries 8 years ago
Eugen Rochko f16b31f077 Adding a bunch of tests 8 years ago
Eugen Rochko 71fe24096c Adding a Mention model, test stubs 8 years ago
Eugen Rochko 79609d6270 Add service for posting statuses (normal and replies), mention regex to
fetch webfinger information of mentioned accounts
8 years ago
Eugen Rochko fa7868675d Send Salmon interactions 8 years ago
Eugen Rochko fa33750105 Adding reblogs, favourites, improving atom generation 8 years ago
Eugen Rochko 1dad72bf13 Fixes and general progress 8 years ago
Eugen Rochko 709c6685a9 Made some progress 8 years ago
Eugen Rochko 9c4856bdb1 Initial commit 8 years ago