Skip to content
Snippets Groups Projects
  1. Feb 07, 2018
  2. 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
      Unverified
      24cafd73
    • Eugen Rochko's avatar
      Fix some rubocop style issues (#5730) · 3e90987c
      Eugen Rochko authored
      3e90987c
  3. Nov 12, 2017
  4. Oct 02, 2017
    • aschmitz's avatar
      Make IdsToBigints (mostly!) non-blocking (#5088) · 97c02c33
      aschmitz authored
      * Make IdsToBigints (mostly!) non-blocking
      
      This pulls in GitLab's MigrationHelpers, which include code to make
      column changes in ways that Postgres can do without locking. In general,
      this involves creating a new column, adding an index and any foreign
      keys as appropriate, adding a trigger to keep it populated alongside
      the old column, and then progressively copying data over to the new
      column, before removing the old column and replacing it with the new
      one.
      
      A few changes to GitLab's MigrationHelpers were necessary:
      
      * Some changes were made to remove dependencies on other GitLab code.
      * We explicitly wait for index creation before forging ahead on column
        replacements.
      * We use different temporary column names, to avoid running into index
        name length limits.
      * We rename the generated indices back to what they "should" be after
        replacing columns.
      * We rename the generated foreign keys to use the new column names when
        we had to create them. (This allows the migration to be rolled back
        without incident.)
      
      # Big Scary Warning
      
      There are two things here that may trip up large instances:
      
      1. The change for tables' "id" columns is not concurrent. In
         particular, the stream_entries table may be big, and does not
         concurrently migrate its id column. (On the other hand, x_id type
         columns are all concurrent.)
      2. This migration will take a long time to run, *but it should not
         lock tables during that time* (with the exception of the "id"
         columns as described above). That means this should probably be run
         in `screen` or some other session that can be run for a long time.
         Notably, the migration will take *longer* than it would without
         these changes, but the website will still be responsive during that
         time.
      
      These changes were tested on a relatively large statuses table (256k
      entries), and the service remained responsive during the migration.
      Migrations both forward and backward were tested.
      
      * Rubocop fixes
      
      * MigrationHelpers: Support ID columns in some cases
      
      This doesn't work in cases where the ID column is referred to as a
      foreign key by another table.
      
      * MigrationHelpers: support foreign keys for ID cols
      
      Note that this does not yet support foreign keys on non-primary-key
      columns, but Mastodon also doesn't yet have any that we've needed to
      migrate.
      
      This means we can perform fully "concurrent" migrations to change ID
      column types, and the IdsToBigints migration can happen with effectively
      no downtime. (A few operations require a transaction, such as renaming
      columns or deleting them, but these transactions should not block for
      noticeable amounts of time.)
      
      The algorithm for generating foreign key names has changed with this,
      and therefore all of those changed in schema.rb.
      
      * Provide status, allow for interruptions
      
      The MigrationHelpers now allow restarting the rename of a column if it
      was interrupted, by removing the old "new column" and re-starting the
      process.
      
      Along with this, they now provide status updates on the changes which
      are happening, as well as indications about when the changes can be
      safely interrupted (when there are at least 10 seconds estimated to be
      left before copying data is complete).
      
      The IdsToBigints migration now also sorts the columns it migrates by
      size, starting with the largest tables. This should provide
      administrators a worst-case scenario estimate for the length of
      migrations: each successive change will get faster, giving admins a
      chance to abort early on if they need to run the migration later. The
      idea is that this does not force them to try to time interruptions
      between smaller migrations.
      
      * Fix column sorting in IdsToBigints
      
      Not a significant change, but it impacts the order of columns in the
      database and db/schema.rb.
      
      * Actually pause before IdsToBigints
      97c02c33
  5. Sep 02, 2017
    • unarist's avatar
      Fix WebPush (regression from #4524) (#4778) · bfa7f9eb
      unarist authored
      * Fix NoMethodError in Web::PushSubscription
      
      ```
      undefined method `site_contact_email' for #<Class:0x00005976d13c40>
      
      /usr/local/bundle/gems/activerecord-5.1.3/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
      /usr/local/bundle/gems/attr_encrypted-3.0.3/lib/attr_encrypted.rb:295:in `method_missing'
      /usr/local/bundle/gems/attr_encrypted-3.0.3/lib/attr_encrypted/adapters/active_record.rb:129:in `method_missing_with_attr_encrypted'
      /mastodon/app/models/web/push_subscription.rb:53:in `push_payload'
      ```
      
      * Specify serializer in Web::NotificationSerializer
      bfa7f9eb
  6. Sep 01, 2017
  7. Aug 01, 2017
  8. Jul 28, 2017
  9. Jul 27, 2017
  10. Jul 19, 2017
  11. Jul 18, 2017
  12. Jul 13, 2017
    • Sorin Davidoi's avatar
      Web Push Notifications (#3243) · 0c7c188c
      Sorin Davidoi authored
      * feat: Register push subscription
      
      * feat: Notify when mentioned
      
      * feat: Boost, favourite, reply, follow, follow request
      
      * feat: Notification interaction
      
      * feat: Handle change of public key
      
      * feat: Unsubscribe if things go wrong
      
      * feat: Do not send normal notifications if push is enabled
      
      * feat: Focus client if open
      
      * refactor: Move push logic to WebPushSubscription
      
      * feat: Better title and body
      
      * feat: Localize messages
      
      * chore: Fix lint errors
      
      * feat: Settings
      
      * refactor: Lazy load
      
      * fix: Check if push settings exist
      
      * feat: Device-based preferences
      
      * refactor: Simplify logic
      
      * refactor: Pull request feedback
      
      * refactor: Pull request feedback
      
      * refactor: Create /api/web/push_subscriptions endpoint
      
      * feat: Spec PushSubscriptionController
      
      * refactor: WebPushSubscription => Web::PushSubscription
      
      * feat: Spec Web::PushSubscription
      
      * feat: Display first media attachment
      
      * feat: Support direction
      
      * fix: Stuff broken while rebasing
      
      * refactor: Integration with session activations
      
      * refactor: Cleanup
      
      * refactor: Simplify implementation
      
      * feat: Set VAPID keys via environment
      
      * chore: Comments
      
      * fix: Crash when no alerts
      
      * fix: Set VAPID keys in testing environment
      
      * fix: Follow link
      
      * feat: Notification actions
      
      * fix: Delete previous subscription
      
      * chore: Temporary logs
      
      * refactor: Move migration to a later date
      
      * fix: Fetch the correct session activation and misc bugs
      
      * refactor: Move migration to a later date
      
      * fix: Remove follow request (no notifications)
      
      * feat: Send administrator contact to push service
      
      * feat: Set time-to-live
      
      * fix: Do not show sensitive images
      
      * fix: Reducer crash in error handling
      
      * feat: Add badge
      
      * chore: Fix lint error
      
      * fix: Checkbox label overlap
      
      * fix: Check for payload support
      
      * fix: Rename action "type" (crash in latest Chrome)
      
      * feat: Action to expand notification
      
      * fix: Lint errors
      
      * fix: Unescape notification body
      
      * fix: Do not allow boosting if the status is hidden
      
      * feat: Add VAPID keys to the production sample environment
      
      * fix: Strip HTML tags from status
      
      * refactor: Better error messages
      
      * refactor: Handle browser not implementing the VAPID protocol (Samsung Internet)
      
      * fix: Error when target_status is nil
      
      * fix: Handle lack of image
      
      * fix: Delete reference to invalid subscriptions
      
      * feat: Better error handling
      
      * fix: Unescape HTML characters after tags are striped
      
      * refactor: Simpify code
      
      * fix: Modify to work with #4091
      
      * Sort strings alphabetically
      
      * i18n: Updated Polish translation
      
      it annoys me that it's not fully localized :P
      
      * refactor: Use current_session in PushSubscriptionController
      
      * fix: Rebase mistake
      
      * fix: Set cacheName to mastodon
      
      * refactor: Pull request feedback
      
      * refactor: Remove logging statements
      
      * chore(yarn): Fix conflicts with master
      
      * chore(yarn): Copy latest from master
      
      * chore(yarn): Readd offline-plugin
      
      * refactor: Use save! and update!
      
      * refactor: Send notifications async
      
      * fix: Allow retry when push fails
      
      * fix: Save track for failed pushes
      
      * fix: Minify sw.js
      
      * fix: Remove account_id from fabricator
      0c7c188c
  13. May 02, 2017
    • yhirano's avatar
      annotate models (#2697) · 298796cc
      yhirano authored
      * add annotate to Gemfile
      
      * rails g annotate:install
      
      * configure annotate_models
      
      * add schema info to models
      
      * fix rubocop to add frozen_string_literal
      298796cc
  14. Jan 09, 2017
Loading