Skip to content
Snippets Groups Projects
  1. Nov 28, 2021
  2. Nov 26, 2021
  3. Nov 25, 2021
  4. Nov 24, 2021
    • Claire's avatar
      Fix error when suspending user with an already-existing canonical email block (#17036) · 02a87431
      Claire authored
      * Fix error when suspending user with an already-existing canonical email block
      
      Fixes #17033
      
      While attempting to create a `CanonicalEmailBlock` with an existing hash would
      raise an `ActiveRecord::RecordNotUnique` error, this being done within a
      transaction would cancel the whole transaction. For this reason, checking for
      uniqueness in Rails would query the database within the transaction and avoid
      invalidating the whole transaction for this reason.
      
      A race condition is still possible, where multiple accounts sharing a canonical
      email would be blocked in concurrent transactions, in which only one would
      succeed, but that is way less likely to happen that the current issue, and can
      always be retried after the first failure, unlike the current situation.
      
      * Add tests
      Unverified
      02a87431
  5. Nov 19, 2021
  6. Nov 18, 2021
  7. Nov 14, 2021
    • Claire's avatar
      Fix confusing error when webfinger request returns empty document (#16986) · 3517867b
      Claire authored
      For some reason, some misconfigured servers return an empty document when
      queried over webfinger. Since an empty document does not lead to a parse
      error, the error is not caught properly and triggers uncaught exceptions
      later on.
      
      This PR fixes that by immediately erroring out with `Webfinger::Error` on
      getting an empty response.
      Unverified
      3517867b
  8. Nov 13, 2021
  9. Nov 05, 2021
    • Claire's avatar
      Fix reviving revoked sessions and invalidating login (#16943) · 6da135a4
      Claire authored
      Up until now, we have used Devise's Rememberable mechanism to re-log users
      after the end of their browser sessions. This mechanism relies on a signed
      cookie containing a token. That token was stored on the user's record,
      meaning it was shared across all logged in browsers, meaning truly revoking
      a browser's ability to auto-log-in involves revoking the token itself, and
      revoking access from *all* logged-in browsers.
      
      We had a session mechanism that dynamically checks whether a user's session
      has been disabled, and would log out the user if so. However, this would only
      clear a session being actively used, and a new one could be respawned with
      the `remember_user_token` cookie.
      
      In practice, this caused two issues:
      - sessions could be revived after being closed from /auth/edit (security issue)
      - auto-log-in would be disabled for *all* browsers after logging out from one
        of them
      
      This PR removes the `remember_token` mechanism and treats the `_session_id`
      cookie/token as a browser-specific `remember_token`, fixing both issues.
      Unverified
      6da135a4
    • Claire's avatar
    • Eugen Rochko's avatar
      Add support for structured data and more OpenGraph tags to link cards (#16938) · 39cdf61a
      Eugen Rochko authored
      Save preview cards under their canonical URL
      
      Increase max redirects to follow from 2 to 3
      Unverified
      39cdf61a
    • Claire's avatar
      Fix handling announcements with links (#16941) · 989c67d2
      Claire authored
      Broken since #15827
      Unverified
      989c67d2
  10. Nov 04, 2021
  11. Oct 28, 2021
  12. Oct 25, 2021
    • Sasha Sorokin's avatar
      Split context for filter bar and unread markers (#16865) · 11d4f9ee
      Sasha Sorokin authored
      On notifications page, in settings, "Show" for quick filter bar and
      unread notifications markers use the same string, while being placed in
      the separate contexts - under different settings categories.
      
      This commit splits the contexts, creating new strings:
      
      - "Show filter bar" in place of "Show" for filter bar;
      
      - "Highlight unread notifications" in place of "Show" for unread
        notification markers, which are now simply called "Highlighting";
      
      - There's also "Unread notifications" in place of "Unread notification
        markers" string to accompany the changes to "Show" string under that
        category.
      
      All new strings have new IDs, which will cause previous strings to
      invalidate on the next translation update and new strings to be created.
      This will help Mastodon translators to know that there are changes and
      improve translation in accordance to the source string update.
      Unverified
      11d4f9ee
  13. Oct 21, 2021
    • Claire's avatar
      Fix some link previews being incorrectly generated from other prior links (#16885) · ec059317
      Claire authored
      * Add tests
      
      * Fix some link previews being incorrectly generated from different prior links
      
      PR #12403 added a cache to avoid redundant queries when the OEmbed endpoint can
      be guessed from the URL. This caching mechanism is not perfectly correct as
      there is no guarantee that all pages from a given domain share the same
      OEmbed provider endpoint.
      
      This PR prevents the FetchOEmbedService from caching OEmbed endpoint that
      cannot be generalized by replacing a fully-qualified URL from the endpoint's
      parameters, greatly reducing the number of incorrect cached generalizations.
      Unverified
      ec059317
    • Mashiro's avatar
      Enhance dashboard styles (#16884) · b58d32cf
      Mashiro authored
      * Display sparkline graph on Chrome
      
      * Heatmap auto overflow
      
      * Change grid columns number on small screen
      
      * Please codeclimate bot
      
      * Remove graph height
      Unverified
      b58d32cf
  14. Oct 20, 2021
  15. Oct 18, 2021
  16. Oct 17, 2021
    • Eugen Rochko's avatar
      New Crowdin updates (#16354) · f00043dc
      Eugen Rochko authored
      
      * New translations en.json (Latvian)
      [ci skip]
      
      * New translations en.json (Hebrew)
      [ci skip]
      
      * New translations en.json (Hebrew)
      [ci skip]
      
      * New translations simple_form.en.yml (Breton)
      [ci skip]
      
      * New translations simple_form.en.yml (Breton)
      [ci skip]
      
      * New translations simple_form.en.yml (Breton)
      [ci skip]
      
      * New translations simple_form.en.yml (Breton)
      [ci skip]
      
      * New translations en.json (Icelandic)
      [ci skip]
      
      * New translations en.json (Icelandic)
      [ci skip]
      
      * New translations en.json (Chinese Simplified)
      [ci skip]
      
      * New translations en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations simple_form.en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations devise.en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations devise.en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations en.json (Persian)
      [ci skip]
      
      * New translations en.json (Finnish)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Finnish)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Finnish)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Finnish)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Finnish)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (French)
      [ci skip]
      
      * New translations en.yml (French)
      [ci skip]
      
      * New translations en.json (Russian)
      [ci skip]
      
      * New translations en.json (Russian)
      [ci skip]
      
      * New translations en.json (Russian)
      [ci skip]
      
      * New translations activerecord.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Slovak)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Slovak)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Esperanto)
      [ci skip]
      
      * New translations en.yml (Esperanto)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations doorkeeper.en.yml (Latvian)
      [ci skip]
      
      * New translations devise.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Slovak)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Slovak)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations simple_form.en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Armenian)
      [ci skip]
      
      * New translations en.json (Danish)
      [ci skip]
      
      * New translations en.yml (Arabic)
      [ci skip]
      
      * New translations en.yml (Catalan)
      [ci skip]
      
      * New translations en.yml (Czech)
      [ci skip]
      
      * New translations en.yml (Danish)
      [ci skip]
      
      * New translations en.yml (Spanish)
      [ci skip]
      
      * New translations en.yml (German)
      [ci skip]
      
      * New translations en.yml (Greek)
      [ci skip]
      
      * New translations en.yml (Basque)
      [ci skip]
      
      * New translations en.yml (Hungarian)
      [ci skip]
      
      * New translations en.yml (Slovak)
      [ci skip]
      
      * New translations en.yml (Persian)
      [ci skip]
      
      * New translations en.yml (Swedish)
      [ci skip]
      
      * New translations en.yml (French)
      [ci skip]
      
      * New translations en.yml (Chinese Simplified)
      [ci skip]
      
      * New translations en.yml (Finnish)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Italian)
      [ci skip]
      
      * New translations en.yml (Sinhala)
      [ci skip]
      
      * New translations en.yml (Sardinian)
      [ci skip]
      
      * New translations en.yml (Esperanto)
      [ci skip]
      
      * New translations en.yml (Vietnamese)
      [ci skip]
      
      * New translations en.yml (Turkish)
      [ci skip]
      
      * New translations en.yml (Ukrainian)
      [ci skip]
      
      * New translations en.yml (Chinese Traditional)
      [ci skip]
      
      * New translations en.yml (Galician)
      [ci skip]
      
      * New translations en.yml (Icelandic)
      [ci skip]
      
      * New translations en.yml (Portuguese, Brazilian)
      [ci skip]
      
      * New translations en.yml (Indonesian)
      [ci skip]
      
      * New translations en.yml (Tamil)
      [ci skip]
      
      * New translations en.yml (Spanish, Argentina)
      [ci skip]
      
      * New translations en.yml (Serbian (Cyrillic))
      [ci skip]
      
      * New translations en.yml (Albanian)
      [ci skip]
      
      * New translations en.yml (Japanese)
      [ci skip]
      
      * New translations en.yml (Georgian)
      [ci skip]
      
      * New translations en.yml (Korean)
      [ci skip]
      
      * New translations en.yml (Lithuanian)
      [ci skip]
      
      * New translations en.yml (Dutch)
      [ci skip]
      
      * New translations en.yml (Norwegian)
      [ci skip]
      
      * New translations en.yml (Polish)
      [ci skip]
      
      * New translations en.yml (Portuguese)
      [ci skip]
      
      * New translations en.yml (Russian)
      [ci skip]
      
      * New translations en.yml (Slovenian)
      [ci skip]
      
      * New translations en.yml (Spanish, Mexico)
      [ci skip]
      
      * New translations en.yml (Norwegian Nynorsk)
      [ci skip]
      
      * New translations en.yml (Estonian)
      [ci skip]
      
      * New translations en.yml (Kazakh)
      [ci skip]
      
      * New translations en.json (Norwegian Nynorsk)
      [ci skip]
      
      * New translations en.yml (Thai)
      [ci skip]
      
      * New translations en.yml (Bengali)
      [ci skip]
      
      * New translations en.yml (Asturian)
      [ci skip]
      
      * New translations en.yml (Scottish Gaelic)
      [ci skip]
      
      * New translations en.yml (Occitan)
      [ci skip]
      
      * New translations en.json (Kurmanji (Kurdish))
      [ci skip]
      
      * New translations en.yml (Kurmanji (Kurdish))
      [ci skip]
      
      * New translations en.json (Sorani (Kurdish))
      [ci skip]
      
      * New translations en.yml (Breton)
      [ci skip]
      
      * New translations en.yml (Malay)
      [ci skip]
      
      * New translations en.yml (Welsh)
      [ci skip]
      
      * New translations en.yml (Chinese Traditional, Hong Kong)
      [ci skip]
      
      * New translations en.yml (Tatar)
      [ci skip]
      
      * New translations en.yml (Malayalam)
      [ci skip]
      
      * New translations en.yml (Sorani (Kurdish))
      [ci skip]
      
      * New translations en.yml (Corsican)
      [ci skip]
      
      * New translations en.yml (Kabyle)
      [ci skip]
      
      * New translations en.yml (Catalan)
      [ci skip]
      
      * New translations en.yml (Polish)
      [ci skip]
      
      * New translations en.yml (Russian)
      [ci skip]
      
      * New translations en.yml (Russian)
      [ci skip]
      
      * New translations en.yml (Catalan)
      [ci skip]
      
      * New translations en.yml (Kurmanji (Kurdish))
      [ci skip]
      
      * New translations en.json (Russian)
      [ci skip]
      
      * New translations en.yml (Czech)
      [ci skip]
      
      * New translations en.json (Russian)
      [ci skip]
      
      * New translations en.yml (Czech)
      [ci skip]
      
      * New translations en.yml (Czech)
      [ci skip]
      
      * New translations en.yml (Turkish)
      [ci skip]
      
      * New translations en.yml (Occitan)
      [ci skip]
      
      * New translations en.yml (Czech)
      [ci skip]
      
      * New translations en.yml (Kurmanji (Kurdish))
      [ci skip]
      
      * New translations en.yml (Czech)
      [ci skip]
      
      * New translations en.yml (Danish)
      [ci skip]
      
      * New translations en.yml (Danish)
      [ci skip]
      
      * New translations en.yml (Kurmanji (Kurdish))
      [ci skip]
      
      * New translations en.yml (Norwegian)
      [ci skip]
      
      * New translations en.yml (Kurmanji (Kurdish))
      [ci skip]
      
      * New translations en.yml (Chinese Traditional)
      [ci skip]
      
      * New translations en.yml (Galician)
      [ci skip]
      
      * New translations en.yml (Galician)
      [ci skip]
      
      * New translations en.yml (French)
      [ci skip]
      
      * New translations en.yml (French)
      [ci skip]
      
      * New translations en.yml (Chinese Traditional)
      [ci skip]
      
      * New translations en.yml (Hungarian)
      [ci skip]
      
      * New translations en.yml (Albanian)
      [ci skip]
      
      * New translations en.yml (Albanian)
      [ci skip]
      
      * New translations en.yml (Ukrainian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Portuguese)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.json (Portuguese)
      [ci skip]
      
      * New translations en.yml (Portuguese)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Latvian)
      [ci skip]
      
      * New translations en.yml (Spanish)
      [ci skip]
      
      * New translations en.yml (Hungarian)
      [ci skip]
      
      * New translations en.yml (Italian)
      [ci skip]
      
      * New translations en.yml (Indonesian)
      [ci skip]
      
      * New translations en.yml (Indonesian)
      [ci skip]
      
      * New translations devise.en.yml (French)
      [ci skip]
      
      * Run `i18n-tasks normalize`
      
      * Run `yarn manage:translations`
      
      * Trim unnecessary line breaks
      
      Co-authored-by: default avatarYamagishi Kazutoshi <ykzts@desire.sh>
      Unverified
      f00043dc
  17. Oct 14, 2021
  18. Oct 13, 2021
Loading