Skip to content
Snippets Groups Projects
  1. Jun 09, 2018
  2. May 31, 2018
    • Eugen Rochko's avatar
      Wrong exception class: ActiveRecord::RecordNotUnique, not PG::UniqueViolation (#7688) · fb1ae015
      Eugen Rochko authored
      * 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
      fb1ae015
    • Eugen Rochko's avatar
      Improve account index migration (#7684) · 19b4c666
      Eugen Rochko authored
      * 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
      19b4c666
    • Eugen Rochko's avatar
      Fix nil error in migration (#7680) · c61c4565
      Eugen Rochko authored
      Under rare circumstances the user record could have already been deleted before...
      c61c4565
  3. May 30, 2018
  4. May 14, 2018
    • Akihiko Odaki's avatar
    • Akihiko Odaki's avatar
      Improve index on statuses for api/v1/accounts account_id statuses (#7476) · 42a12312
      Akihiko Odaki authored
      Queries with the combination of account_id, id, and visibility can be
      categorized in three types:
      1. Querying for public and unlisted to enumerate statuses visible to
      anyone.
      2. Querying for public, unlisted, and private to enumerate statuses
      visible to follower.
      3. Querying for direct to enumerate own direct statuses.
      
      1 and 2 is covered by the index with condition 'visibility IN (0, 1, 2)'.
      It would bring better performance in case that there are many direct
      statuses.
      
      The index with condition 'visibility = 3' is just for 3. It would be much
      faster to query direct statuses thanks to this query.
      
      The total size of those two indexes are expected to be smaller than the
      deleted one because they are partial and does not have to cover all the
      table.
      42a12312
  5. May 11, 2018
  6. May 07, 2018
    • Eugen Rochko's avatar
      Bot nameplates (#7391) · 42cd3635
      Eugen Rochko authored
      * Store actor type in database
      
      * Add bot nameplate to web UI, add setting to preferences, API, AP
      Fix #7365
      
      * Fix code style issues
      42cd3635
  7. May 04, 2018
  8. Apr 14, 2018
    • Eugen Rochko's avatar
      Add bio fields (#6645) · 78ed4ab7
      Eugen Rochko authored
      * Add bio fields
      
      - Fix #3211
      - Fix #232
      - Fix #121
      
      * Display bio fields in web UI
      
      * Fix output of links and missing fields
      
      * Federate bio fields over ActivityPub as PropertyValue
      
      * Improve how the fields are stored, add to Edit profile form
      
      * Add rel=me to links in fields
      
      Fix #121
      78ed4ab7
  9. Apr 02, 2018
    • Emelia Smith's avatar
      Feature: Report improvements (#6967) (#7000) · e85cffb2
      Emelia Smith authored
      * Implement Assignment of Reports (#6967)
      
      * Change translation of admin.report.comment.label to "Report Comment" for clarity
      
      As we'll soon add the ability for reports to have comments on them, this clarification makes sense.
      
      * Implement notes for Reports
      
      This enables moderators to leave comments about a report whilst they work on it
      
      * Fix display of report moderation notes
      
      * Allow reports to be reopened / marked as unresolved
      
      * Redirect to reports listing upon resolution of report
      
      * Implement "resolve with note" functionality
      
      * Add inverse relationship for report notes
      
      * Remove additional database querying when loading report notes
      
      * Fix tests for reports
      
      * Fix localisations for report notes / reports
      e85cffb2
  10. Mar 24, 2018
  11. Mar 04, 2018
    • Eugen Rochko's avatar
      Federate pinned statuses over ActivityPub (#6610) · 9110db41
      Eugen Rochko authored
      * Federate pinned statuses over ActivityPub
      
      * Display pinned toots in web UI
      
      Fix #6117
      
      * Fix migration
      
      * Fix tests
      
      * Update outbox_serializer.rb
      
      * Update remove_serializer.rb
      
      * Update add_serializer.rb
      
      * Update fetch_featured_collection_service.rb
      9110db41
  12. Feb 21, 2018
    • Eugen Rochko's avatar
      Account archive download (#6460) · 61ed133f
      Eugen Rochko authored
      * Fix #201: Account archive download
      
      * Export actor and private key in the archive
      
      * Optimize BackupService
      
      - Add conversation to cached associations of status, because
        somehow it was forgotten and is source of N+1 queries
      - Explicitly call GC between batches of records being fetched
        (Model class allocations are the worst offender)
      - Stream media files into the tar in 1MB chunks
        (Do not allocate media file (up to 8MB) as string into memory)
      - Use #bytesize instead of #size to calculate file size for JSON
        (Fix FileOverflow error)
      - Segment media into subfolders by status ID because apparently
        GIF-to-MP4 media are all named "media.mp4" for some reason
      
      * Keep uniquely generated filename in Paperclip::GifTranscoder
      
      * Ensure dumped files do not overwrite each other by maintaing directory partitions
      
      * Give tar archives a good name
      
      * Add scheduler to remove week-old backups
      
      * Fix code style issue
      61ed133f
  13. Feb 07, 2018
  14. Feb 04, 2018
    • Eugen Rochko's avatar
      CAS + SAML authentication feature (#6425) · 26f21fd5
      Eugen Rochko authored
      * Cas authentication feature
      
      * Config
      
      * Remove class_eval + Omniauth initializer
      
      * Codeclimate review
      
      * Codeclimate review 2
      
      * Codeclimate review 3
      
      * Remove uid/email reconciliation
      
      * SAML authentication
      
      * Clean up code
      
      * Improve login form
      
      * Fix code style issues
      
      * Add locales
      26f21fd5
  15. Feb 02, 2018
    • Alexander's avatar
      pam authentication (#5303) · 04fef7b8
      Alexander authored
      * add pam support, without extra column
      
      * bugfixes for pam login
      
      * document options
      
      * fix code style
      
      * fix codestyle
      
      * fix tests
      
      * don't call remember_me without password
      
      * fix codestyle
      
      * improve checks for pam usage (should fix tests)
      
      * fix remember_me part 1
      
      * add remember_token column because :rememberable requires either a password or this column.
      
      * migrate db for remember_token
      
      * move pam_authentication to the right place, fix logic bug in edit.html.haml
      
      * fix tests
      
      * fix pam authentication, improve username lookup, add comment
      
      * valid? is sometimes not honored, return nil instead trying to authenticate with pam
      
      * update devise_pam_authenticatable2 and adjust code. Fixes sideeffects observed in tests
      
      * update devise_pam_authenticatable gem, fixes for codeconventions, fix finding user
      
      * codeconvention fixes
      
      * code convention fixes
      
      * fix idention
      
      * update dependency, explicit conflict check
      
      * fix disabled password updates if in pam mode
      
      * fix check password if password is present, fix templates
      
      * block registration if account is maintained by pam
      
      * Revert "block registration if account is maintained by pam"
      
      This reverts commit 8e7a083d650240b6fac414926744b4b90b435f20.
      
      * fix identation error introduced by rebase
      
      * block usernames maintained by pam
      
      * document pam settings better
      
      * fix code style
      04fef7b8
  16. Jan 09, 2018
  17. Jan 04, 2018
  18. Dec 26, 2017
  19. Dec 12, 2017
  20. Dec 07, 2017
  21. Nov 30, 2017
  22. Nov 28, 2017
    • aschmitz's avatar
      Allow hiding of reblogs from followed users (#5762) · eeaec398
      aschmitz authored
      * Allow hiding of reblogs from followed users
      
      This adds a new entry to the account menu to allow users to hide
      future reblogs from a user (and then if they've done that, to show
      future reblogs instead).
      
      This does not remove or add historical reblogs from/to the user's
      timeline; it only affects new statuses.
      
      The API for this operates by sending a "reblogs" key to the follow
      endpoint. If this is sent when starting a new follow, it will be
      respected from the beginning of the follow relationship (even if
      the follow request must be approved by the followee). If this is
      sent when a follow relationship already exists, it will simply
      update the existing follow relationship. As with the notification
      muting, this will now return an object ({reblogs: [true|false]}) or
      false for each follow relationship when requesting relationship
      information for an account. This should cause few issues due to an
      object being truthy in many languages, but some modifications may
      need to be made in pickier languages.
      
      Database changes: adds a show_reblogs column (default true,
      non-nullable) to the follows and follow_requests tables. Because
      these are non-nullable, we use the existing MigrationHelpers to
      perform this change without locking those tables, although the
      tables are likely to be small anyway.
      
      Tests included.
      
      See also <https://github.com/glitch-soc/mastodon/pull/212>.
      
      * Rubocop fixes
      
      * Code review changes
      
      * Test fixes
      
      This patchset closes #648 and resolves #3271.
      
      * Rubocop fix
      
      * Revert reblogs defaulting in argument, fix tests
      
      It turns out we needed this for the same reason we needed it in muting:
      if nil gets passed in somehow (most usually by an API client not passing
      any value), we need to detect and handle it.
      
      We could specify a default in the parameter and then also catch nil, but
      there's no great reason to duplicate the default value.
      eeaec398
  23. Nov 27, 2017
    • unarist's avatar
      Merge indexes for reblog on statuses table (#5831) · 7fb850e9
      unarist authored
      We added an index for `[account_id, reblog_of_id]`, but we already have a similar index for `reblog_of_id`. Those index will be bigger according to statuses count. For example, `reblog_of_id` index uses 800MB for 10GB statuses table.
      
      So this patch swaps indexed columns like `[reblog_of_id, account_id]`, then it will covers both usage with single index.
      
      Since those index creation may take a while, I've also disabled previous index creation.
      7fb850e9
    • Eugen Rochko's avatar
      Add consumable invites (#5814) · 740f8a95
      Eugen Rochko authored
      * Add consumable invites
      
      * Add UI for generating invite codes
      
      * Add tests
      
      * Display max uses and expiration in invites table, delete invite
      
      * Remove unused column and redundant validator
      
      - Default follows not used, probably bad idea
      - InviteCodeValidator is redundant because RegistrationsController
        checks invite code validity
      
      * Add admin setting to disable invites
      
      * Add admin UI for invites, configurable role for invite creation
      
      - Admin UI that lists everyone's invites, always available
      - Admin setting min_invite_role to control who can invite people
      - Non-admin invite UI only visible if users are allowed to
      
      * Do not remove invites from database, expire them instantly
      740f8a95
  24. Nov 24, 2017
    • abcang's avatar
      a78f66c0
    • Eugen Rochko's avatar
      Add logging of admin actions (#5757) · e84fecb7
      Eugen Rochko authored
      
      * Add logging of admin actions
      
      * Update brakeman whitelist
      
      * Log creates, updates and destroys with history of changes
      
      * i18n: Update Polish translation (#5782)
      
      Signed-off-by: default avatarMarcin Mikołajczak <me@m4sk.in>
      
      * Split admin navigation into moderation and administration
      
      * Redesign audit log page
      
      * :flag_pl: (#5795)
      
      * Add color coding to audit log
      
      * Change dismiss->resolve, log all outcomes of report as resolve
      
      * Update terminology (e-mail blacklist) (#5796)
      
      * Update terminology (e-mail blacklist)
      
      imho looks better
      
      * Update en.yml
      
      * Fix code style issues
      
      * i18n-tasks normalize
      e84fecb7
  25. Nov 18, 2017
    • Eugen Rochko's avatar
      Profile redirect notes (#5746) · 58cede48
      Eugen Rochko authored
      * Serialize moved accounts into REST and ActivityPub APIs
      
      * Parse federated moved accounts from ActivityPub
      
      * Add note about moved accounts to public profiles
      
      * Add moved account message to web UI
      
      * Fix code style issues
      58cede48
  26. Nov 17, 2017
    • Eugen Rochko's avatar
      Lists (#5703) · 24cafd73
      Eugen Rochko authored
      * 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
      24cafd73
  27. Nov 15, 2017
    • Surinna Curtis's avatar
      Optional notification muting (#5087) · 031a5a8f
      Surinna Curtis authored
      * Add a hide_notifications column to mutes
      
      * Add muting_notifications? and a notifications argument to mute!
      
      * block notifications in notify_service from hard muted accounts
      
      * Add specs for how mute! interacts with muting_notifications?
      
      * specs testing that hide_notifications in mutes actually hides notifications
      
      * Add support for muting notifications in MuteService
      
      * API support for muting notifications (and specs)
      
      * Less gross passing of notifications flag
      
      * Break out a separate mute modal with a hide-notifications checkbox.
      
      * Convert profile header mute to use mute modal
      
      * Satisfy eslint.
      
      * specs for MuteService notifications params
      
      * add trailing newlines to files for Pork :)
      
      * Put the label for the hide notifications checkbox in a label element.
      
      * Add a /api/v1/mutes/details route that just returns the array of mutes.
      
      * Define a serializer for /api/v1/mutes/details
      
      * Add more specs for the /api/v1/mutes/details endpoint
      
      * Expose whether a mute hides notifications in the api/v1/relationships endpoint
      
      * Show whether muted users' notifications are muted in account lists
      
      * Allow modifying the hide_notifications of a mute with the /api/v1/accounts/:id/mute endpoint
      
      * make the hide/unhide notifications buttons work
      
      * satisfy eslint
      
      * In probably dead code, replace a dispatch of muteAccount that was skipping the modal with launching the mute modal.
      
      * fix a missing import
      
      * add an explanatory comment to AccountInteractions
      
      * Refactor handling of default params for muting to make code cleaner
      
      * minor code style fixes oops
      
      * Fixed a typo that was breaking the account mute API endpoint
      
      * Apply white-space: nowrap to account relationships icons
      
      * Fix code style issues
      
      * Remove superfluous blank line
      
      * Rename /api/v1/mutes/details -> /api/v2/mutes
      
      * Don't serialize "account" in MuteSerializer
      
      Doing so is somewhat unnecessary since it's always the current user's account.
      
      * Fix wrong variable name in api/v2/mutes
      
      * Use Toggle in place of checkbox in the mute modal.
      
      * Make the Toggle in the mute modal look better
      
      * Code style changes in specs and removed an extra space
      
      * Code review suggestions from akihikodaki
      
      Also fixed a syntax error in tests for AccountInteractions.
      
      * Make AddHideNotificationsToMute Concurrent
      
      It's not clear how much this will benefit instances in practice, as the
      number of mutes tends to be pretty small, but this should prevent any
      blocking migrations nonetheless.
      
      * Fix up migration things
      
      * Remove /api/v2/mutes
      031a5a8f
  28. Nov 14, 2017
  29. Nov 11, 2017
    • Eugen Rochko's avatar
      Add moderator role and add pundit policies for admin actions (#5635) · 7bb8b0b2
      Eugen Rochko authored
      * Add moderator role and add pundit policies for admin actions
      
      * Add rake task for turning user into mod and revoking it again
      
      * Fix handling of unauthorized exception
      
      * Deliver new report e-mails to staff, not just admins
      
      * Add promote/demote to admin UI, hide some actions conditionally
      
      * Fix unused i18n
      7bb8b0b2
  30. Nov 07, 2017
  31. Oct 27, 2017
    • nullkal's avatar
      Feature: Unlisted custom emojis (#5485) · 78110529
      nullkal authored
      78110529
    • unarist's avatar
      Optimize FixReblogsInFeeds migration (#5538) · 0129f5ea
      unarist authored
      We have changed how we store reblogs in the redis for bigint IDs. This process is done by 1) scan all entries in users feed, and 2) re-store reblogs by 3 write commands.
      
      However, this operation is really slow for large instances. e.g. 1hrs on friends.nico (w/ 50k users). So I have tried below tweaks.
      
      * It checked non-reblogs by `entry[0] == entry[1]`, but this condition won't work because `entry[0]` is String while `entry[1]` is Float. Changing `entry[0].to_i == entry[1]` seems work.
        -> about 4-20x faster (feed with less reblogs will be faster)
      * Write operations can be batched by pipeline
        -> about 6x faster
      * Wrap operation by Lua script and execute by EVALSHA command. This really reduces packets between Ruby and Redis.
        -> about 3x faster
      
      I've taken Lua script way, though doing other optimizations may be enough.
      0129f5ea
Loading