3156 Commits (f6cb394544428f12fa69b7c62e71d1a5a8ec57c9)

Author SHA1 Message Date
Claire 1d60edd82a Change wording of the OAuth scopes descriptions (#22491)
2 years ago
Claire 43b9c4c0a7 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 5715763495 New Crowdin updates (#22953)
2 years ago
Claire d809d004b5 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 7793096d58 Fix CSRF protection (#23037)
2 years ago
Claire da32ef30ae Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 99ecd6a106 Change referrer-policy to no-referrer application-wide (#23014)
2 years ago
Jim Myhrberg a7218678f0 feat(puma): enable setting min puma threads in addition to max (#21048)
2 years ago
Eugen Rochko 8dd07bf99a New Crowdin updates (#22901)
2 years ago
Claire 6dceb55f62 Fix root key for glitch-soc pt-PT and pt-BR yaml translations (#2065)
2 years ago
Claire 71a3c1cb28 Fix prettifier/lint issues (#2066)
2 years ago
Claire 2e8c2f49e5 Merge branch 'main' into glitch-soc/merge
2 years ago
Eugen Rochko b9824c5a22 New Crowdin updates (#22560)
2 years ago
Claire ce06e0abd6 New Crowdin updates (#2048)
2 years ago
Claire 7564a9e240 New Crowdin updates (#2043)
2 years ago
Claire bb3d32fd13 New Crowdin updates (#2041)
2 years ago
Claire 5e226e135c New Crowdin updates (#2037)
2 years ago
Claire 304f0b87f3 New Crowdin updates (#2036)
2 years ago
Claire 7e4035af18 New Crowdin updates (#2035)
2 years ago
Claire 7f71c439c4 New Crowdin updates (#2034)
2 years ago
Claire d4ea182379 Add links to glitch-soc's Crowdin (#2033)
2 years ago
Claire 7b4130ec9c New Crowdin updates (#2032)
2 years ago
Claire a3c10b6ced Change locales file generation to use JSON sources (#2028)
2 years ago
Claire 37d8e2fdcc Change i18n-tasks config to consider glitch-soc translation files (#2027)
2 years ago
Claire 54920be04d Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 556aef1430 New Crowdin updates (#22354)
2 years ago
Eugen Rochko a26d43b659 New Crowdin updates (#22182)
2 years ago
Claire f23d971cd8 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Yamagishi Kazutoshi a5ff1d74b4 Add Western Frisian support (#18602)
2 years ago
Yurii Izorkin d43af3cb19 Add brotli compression (#19025)
2 years ago
Claire a85c0fc862 Add explanation text to log-in page (#20946)
2 years ago
Colin Mitchell 017ec81873 Add environment variable to configure sidekiq concurrency (#19589)
2 years ago
Francis Murillo 1bfc5af0a7 Render current day formats in the client timezone (#21878)
2 years ago
trwnh c6161591bf Add localization for new admin scopes (#20979)
2 years ago
luzpaz 11b7735fb3 Fix typos in source documentation (#21046)
2 years ago
Effy Elden c7d4d21d99 Allow adding relays while secure mode & limited federation mode are enabled (#22324)
2 years ago
Claire 747da76540 Allow admins to refresh remotely-suspended accounts (#22327)
2 years ago
Claire 80b3841b6e Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
prplecake 3958691dc7 Add noindex setting to Admin settings Discovery page (#22205)
2 years ago
Claire e06a615357 Merge branch 'main' into glitch-soc/main
2 years ago
Eugen Rochko cf5565cff3 New Crowdin updates (#21954)
2 years ago
Michal Dvorak 6bb73cd25a initial translation of Glitch-specific texts into Czech (#1997)
2 years ago
Claire 1e6e6426ea Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 888e60fd0e Change postgres connection timeout (#21790)
2 years ago
Mikhail Paulyshka 26d00f8feb enable be locale (#22022)
2 years ago
Claire 0acb29fe9c Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko bec346eb28 New Crowdin updates (#21599)
2 years ago
Claire 02992b262a Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire daf52f6c69 Remove support for Ruby 2.6 (#21477)
2 years ago
Claire c863f76a62 Add logging for Rails cache timeouts (#21667)
2 years ago
Eugen Rochko 4b21adb4b2 New Crowdin updates (#20942)
2 years ago
Claire 58c9cf9d86 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko c67819829d New Crowdin updates (#20759)
2 years ago
Claire 4f15f1d8b6 Remove glitch-soc-specific translations of upstreamed feature (domain block import)
2 years ago
Claire 3e4b8636a0 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 0297acfe70 Fix various issues with domain block import (#1944)
2 years ago
Rose b54c639482 Fix style for hashes (#20518)
2 years ago
lenore gilbert 498e9478c7 Support for import/export of instance-level domain blocks/allows for 4.x w/ additional fixes (#20597)
2 years ago
Ell Bradshaw 739d684403 Remove last references to "silencing" in UI text (#20637)
2 years ago
Claire c7accdb6ac Change automatic post deletion configuration to be accessible to redirected users (#20774)
2 years ago
Claire d5fad31a45 Add form-action CSP directive (#20781)
2 years ago
Claire d79515d3df Fix misleading wording about waitlists (#20850)
2 years ago
trwnh 2e118aa0e6 Add missing admin scopes (fix #20892) (#20918)
2 years ago
Claire 2fa8bd21e2 Add form-action CSP directive (#1948)
2 years ago
Claire 9862a6e572 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko a021e53791 New Crowdin updates (#20580)
2 years ago
Eugen Rochko c0b3ebd307 Fix wrong directive `unsafe-wasm-eval` to `wasm-unsafe-eval` (#20729)
2 years ago
prplecake a4f1043bb3 Use "unsafe-wasm-eval" instead of "unsafe-eval" in script-src CSP (#20606)
2 years ago
Claire 699db5f2af Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko e18c8537e6 Fix rate limiting for paths with formats (#20675)
2 years ago
Claire 997553a99e Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
trwnh 72d3607229 Move V2 Filter methods under /api/v2 prefix (#20622)
2 years ago
Matt Corallo 88b46d0a8f Add `Cache-Control` header to openstack-stored files (#20610)
2 years ago
Eugen Rochko eaf5acca01 New Crowdin updates (#20476)
2 years ago
David Hewitt df557906fb Allow unsetting x-amz-acl S3 Permission headers (#20510)
2 years ago
helloworldstack b15f094f38 Fix casing and spacing of words (#20504)
2 years ago
Claire 81d24609e5 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire fe49f097ca Add back missing glitch-soc admin settings (#1919)
2 years ago
Claire 2b3a57d5c0 Add extended description for glitch-soc only “hide followers count" setting
2 years ago
Claire 0b2da756d8 Add “Glitch-only” label to glitch-specific settings
2 years ago
Claire e2179547a6 Revert "Revert "Change "Allow trends without prior review" setting to include statuses (#17977)""
2 years ago
Eugen Rochko 9d3d3d7ab1 New Crowdin updates (#20258)
2 years ago
Yamagishi Kazutoshi 51e199a7c0 Fix `ENV` (#20377)
2 years ago
F 24af2c05bc Make enable_starttls configurable by envvars (#20321)
2 years ago
Eugen Rochko e6e139ac2b Change incoming activity processing to happen in `ingress` queue (#20264)
2 years ago
Claire 09f987bce1 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
trwnh 429e77d263 Change `master` branch to `main` branch (#20290)
2 years ago
Eugen Rochko 04a9359ffc Fix `mailers` queue not being used for mailers (#20274)
2 years ago
Eugen Rochko 9ee302b30f New Crowdin updates (#20016)
2 years ago
Claire 9a98169232 Change account deletion requests to spread out over time (#20222)
2 years ago
Claire 070e7f51b4 Fix redirects from /web/ discarding everything after a dot (#20148)
2 years ago
Claire 417664d1e4 Add server-side route so that legacy /web/statuses/:id URLs keep being supported (#19978)
2 years ago
Claire 99cdfec05e Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 3f108bf80b New Crowdin updates (#19771)
2 years ago
Claire 20fb459dee Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko c0086c9da8 Fix missing string in admin UI (#19809)
2 years ago
Eugen Rochko adf13fc0ae New Crowdin updates (#19627)
2 years ago
Eugen Rochko 6b2ae9e5a5 Fix featured tags not saving preferred casing (#19732)
2 years ago
Claire f1271e2c91 Fix /users/:username/statuses/:id leading to a soft 404 in web app (#19724)
2 years ago
Claire a5e1f56347 Fix inaccurate admin log entry for re-sending confirmation e-mails (#19674)
2 years ago
Eugen Rochko 3bbe112208 New Crowdin updates (#19517)
2 years ago
Claire 525919c04f Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 361a2a3516 Fix sidebar and tabs on settings on small screens in admin UI (#19533)
2 years ago
Eugen Rochko 6ad2304088 New Crowdin updates (#19425)
2 years ago
Eugen Rochko 92a6d04ba6 Fix error when uploading malformed CSV import (#19509)
2 years ago
Claire 0060eb5dcf Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
prplecake d870657f80 Add "unsafe-eval" to script-src CSP (#18817)
2 years ago
Yamagishi Kazutoshi c84b4d4b9c Fix `/web` prefix (#19468)
2 years ago
Eugen Rochko 3c273d1b34 Fix warning about constants in routes (#19466)
2 years ago
Eugen Rochko 3e5588bf70 Add ability to view previous edits of a status in admin UI (#19462)
2 years ago
Eugen Rochko d53e1fc6d9 Fix vacuum scheduler missing lock, locks never expiring (#19458)
2 years ago
Eugen Rochko 02b2538c06 New Crowdin updates (#19405)
2 years ago
Eugen Rochko 2130895196 Change settings area to be separated into categories in admin UI (#19407)
2 years ago
Eugen Rochko 534cbc96b1 New Crowdin updates (#19350)
2 years ago
prplecake 8be820a7c5 Use DEFAULT_FIELDS_SIZE/MAX_PROFILE_FIELDS value in settings form hint (#1870)
2 years ago
Eugen Rochko 0fdfbe555e Change public accounts pages to mount the web UI (#19319)
2 years ago
Claire 7259b6bad7 Actually fix config/locales-glitch not overriding translation strings (#1872)
2 years ago
Claire 230bd02970 Fix config/locales-glitch not overriding translation strings (#1871)
2 years ago
prplecake ed8c16377f Make "No $entity selected" errors more accurate (#19356)
2 years ago
Eugen Rochko 0e77fd23a6 New Crowdin updates (#19344)
2 years ago
Eugen Rochko e376f33207 Change about page to be mounted in the web UI (#19345)
2 years ago
Eugen Rochko dd1dc1743c Add image processing and generate blurhash for server thumbnail (#19348)
2 years ago
Eugen Rochko 4f749cadea New Crowdin updates (#19330)
2 years ago
Eugen Rochko dac14696a0 Add server banner to web app, add `GET /api/v2/instance` to REST API (#19294)
2 years ago
Eugen Rochko 7d86eadd27 New Crowdin updates (#19317)
2 years ago
Eugen Rochko b24b85b63f Add support for language preferences for trending statuses and links (#18288)
2 years ago
Claire 71b32561e9 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko b33004d1d6 New Crowdin updates (#19297)
2 years ago
Eugen Rochko 378e00b59c Change privacy policy to be rendered in web UI, add REST API (#19310)
2 years ago
Eugen Rochko ce7d058a91 Remove setting that disables account deletes (#17683)
2 years ago
Eugen Rochko 82d3e178ba Remove previous landing page (#19300)
2 years ago
Eugen Rochko e6bd4125b8 Remove unnecessary sections from welcome e-mail (#19299)
2 years ago
Eugen Rochko 448d8ae2df Add server rules to sign-up flow (#19296)
2 years ago
Eugen Rochko c6920e1cdc New Crowdin updates (#19289)
2 years ago
Eugen Rochko c603978cf6 Add server banner to web app, add `GET /api/v2/instance` to REST API (#19294)
2 years ago
Eugen Rochko 58c367fb47 Remove code for rendering public and hashtag timelines outside the web UI (#19257)
2 years ago
Eugen Rochko e0e9eef5e3 New Crowdin updates (#19255)
2 years ago
Claire 4e066c5e1e Revert "Change "Allow trends without prior review" setting to include statuses (#17977)"
2 years ago
Claire a4fc7ac922 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 9f43753cb5 New Crowdin updates (#19252)
2 years ago
Eugen Rochko c04359a63b Change path of privacy policy page (#19249)
2 years ago
Eugen Rochko 8dcb50e11b New Crowdin updates (#19229)
2 years ago
Eugen Rochko 7a482567f8 Add retention policy for cached content and media (#19232)
2 years ago
Eugen Rochko 6312658fb7 New Crowdin updates (#19208)
2 years ago
Eugen Rochko a593188ded Add user content translations with configurable backends (#19218)
2 years ago
Eugen Rochko 10b90b79e7 New Crowdin updates (#19167)
2 years ago
Eugen Rochko 5c17165d05 New Crowdin updates (#19049)
2 years ago
Claire 2a7538aeed Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko ecddc06474 Change "Allow trends without prior review" setting to include statuses (#17977)
2 years ago
Eugen Rochko e7cc67d505 Add admin API for managing e-mail domain blocks (#19066)
2 years ago
Eugen Rochko a0bb5674d9 Add admin API for managing canonical e-mail blocks (#19067)
2 years ago
Eugen Rochko 71f59e78b8 Add admin API for managing IP blocks (#19065)
2 years ago
Eugen Rochko 7300beadd9 Remove digest e-mails (#17985)
2 years ago
Eugen Rochko 1206e691bd Add ability to select all accounts matching search for batch actions (#19053)
2 years ago
Eugen Rochko f9ebc320ed Add audit log entries for user roles (#19040)
2 years ago
Yamagishi Kazutoshi f922858b78 Replace to `workbox-webpack-plugin` from `offline-plugin` (#18409)
2 years ago
Claire ae8d479635 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire e6df1b77bd Change wording of a few filter-related strings (#19050)
2 years ago
Eugen Rochko 6cf1aaeb4c New Crowdin updates (#18972)
2 years ago
Claire a0c630d5ff Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Jeong Arm 30113597e5 Support "http_hidden_proxy" ENV var for hidden service only proxy (#18427)
2 years ago
Arya K b2f2d2bfe3 Fix I2P HTTPS redirect (#18929)
2 years ago
Claire 522fbf9d13 Add ability to filter individual posts (#18945)
2 years ago
Eugen Rochko b2e1224baa Add ability to block sign-ups from IP (#19037)
2 years ago
Claire fd0c34e13f Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
dependabot[bot] ffe1ef9fcb Bump capistrano from 3.17.0 to 3.17.1 (#18949)
2 years ago
Eugen Rochko 7aef706965 New Crowdin updates (#18905)
2 years ago
gol-cha 8aa0513562 Remove Rack::Deflater (#17937)
2 years ago
Claire 2b414f4d73 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 7ae2d64364 New Crowdin updates (#18855)
2 years ago
Claire 081005232f Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 4536638050 Fix /api/v1/tags/:id route constraints (#18854)
2 years ago
Eugen Rochko dba05a6d36 New Crowdin updates (#18810)
2 years ago
Claire b50ab06371 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 265c09fef1 Add ability to follow hashtags (#18809)
2 years ago
Claire 0e504e67f3 Add support for editing labelling of one's own role (#18812)
2 years ago
Eugen Rochko 731dfd285e New Crowdin updates (#18781)
2 years ago
Eugen Rochko 38d04135bf Change how hashtags are normalized (#18795)
2 years ago
Ondřej Pokorný 4354f87de1 Fix a typo in user role priority (#18786)
2 years ago
Claire 16d11acb2b Fix various in the user role management UI (#18777)
2 years ago
Eugen Rochko 092fe73b01 New Crowdin updates (#18716)
2 years ago
Claire 06a878c6b5 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko e164d6a687 Add customizable user roles (#18641)
2 years ago
Claire 490417762f Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 90e5a9bd98 Revamp post filtering system (#18058)
2 years ago
Eugen Rochko e6eb0a29b9 Add notifications for new reports (#18697)
2 years ago
Eugen Rochko a7ca331c3d New Crowdin updates (#18671)
2 years ago
Claire d0cc795d0f Add /api/v1/admin/domain_allows (#18668)
2 years ago
Claire dc250cb7f3 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko d1374cc03a New Crowdin updates (#18605)
2 years ago
Claire 03846ad6c2 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 3b4abfe132 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 03d2cb5146 Change brand color and logotypes (#18592)
2 years ago
Eugen Rochko 0eb2db6b52 Add administrative webhooks (#18510)
2 years ago
Eugen Rochko 157bf44409 New Crowdin updates (#18561)
2 years ago
Claire a864904fad Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 45a777f9d8 Fix CAS_DISPLAY_NAME, SAML_DISPLAY_NAME and OIDC_DISPLAY_NAME being ignored (#18568)
2 years ago
Claire 9f3bf956ad Add /api/v1/admin/domain_blocks (#18247)
2 years ago
Claire c953e4c83d Make “Flavour and skin” admin setting label translatable (#1791)
2 years ago
Jeong Arm 15b64d2f6b Translate: Korean (#1790)
2 years ago
Eugen Rochko 02c4d029ff New Crowdin updates (#18507)
2 years ago
Claire 17c2120267 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 89d4d6fd3b Fix confirmation redirect to app without `Location` header (#18523)
2 years ago
Claire 61e105a326 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 3143aec7f1 Change "dangerous" to "sensitive" in privacy policy and web UI (#18515)
2 years ago
Eugen Rochko c5f0792a0d New Crowdin updates (#18458)
2 years ago
Claire eada1864ef Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 9977cda0ac New Crowdin updates (#18419)
2 years ago
Eugen Rochko f4cab3ebad Change search indexing to use batches to minimize resource usage (#18451)
2 years ago
Claire 73a2e3326f Add confirmation page when importing blocked domains (#1773)
2 years ago
Claire fbfa953ad2 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Levi Bard b8319d0578 Allow import/export of instance-level domain blocks/allows (#1754)
2 years ago
Eugen Rochko f806b5d6b6 New Crowdin updates (#18339)
2 years ago
Eugen Rochko 764904edf3 Fix missing string for appeal validation error (#18410)
2 years ago
Claire c6e7c928ab Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 41ad817afa Change RSS feeds (#18356)
2 years ago
Claire 6f69b831d6 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Jeong Arm 8100e09fcb Update Korean translation (#1765)
2 years ago
Claire 345dc4d102 Fix ambiguous wording on appeal actions (#18328)
2 years ago
Eugen Rochko 3ce9a50930 New Crowdin updates (#18255)
2 years ago
Claire a62029ad4c Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 35ca8565d5 New Crowdin updates (#18213)
2 years ago
Yamagishi Kazutoshi 95f81f574e Add translatable string for #17431 (#18227)
2 years ago
Claire ad9329502a Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 15c9eb89bc New Crowdin updates (#18148)
2 years ago
Eugen Rochko 1cd4518c29 Remove IP matching from e-mail domain blocks (#18190)
2 years ago
Eugen Rochko a8e694233c Fix opening and closing Redis connections instead of using a pool (#18171)
2 years ago
Claire 7eb54adc71 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Claire 2d9ef045c5 Fix stoplight not using REDIS_NAMESPACE (#18160)
2 years ago
Eugen Rochko 553889bc7c Fix single Redis connection being used across all threads (#18135)
2 years ago
Eugen Rochko 0f11d6ee6d New Crowdin updates (#18074)
2 years ago
Claire 0069bebafe Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 1ae83e0796 New Crowdin updates (#18062)
2 years ago
Yamagishi Kazutoshi 9c42093e82 Add missing locale (#18061)
2 years ago
Eugen Rochko e0a1c43a69 New Crowdin updates (#18032)
2 years ago
Yamagishi Kazutoshi 0938eb7c9d Fix parsing `TRUSTED_PROXY_IP` (#18051)
2 years ago
Claire f9719b106c Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 71d83f4e61 New Crowdin updates (#17995)
2 years ago
Claire d4f25d52dd Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 4ba66d256a Change e-mail notifications to only be sent when recipient is offline (#17984)
2 years ago
dependabot[bot] 9de4369d43 Bump i18n-tasks from 0.9.37 to 1.0.8 (#17993)
2 years ago
Eugen Rochko 330c279c0c New Crowdin updates (#17897)
2 years ago
Eugen Rochko b7a6bba0b7 Fix cookies secure flag being set when served over Tor (#17992)
2 years ago
Claire 7103869d62 Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko 62906f15ad Fix unset `SMTP_RETURN_PATH` environment variable causing e-mail not to send (#17982)
2 years ago
Claire b0781a933d Merge branch 'main' into glitch-soc/merge-upstream
2 years ago
Eugen Rochko f982d56b4e Remove sign-in token authentication, instead send e-mail about new sign-in (#17970)
2 years ago
Claire d18363b5db Merge branch 'main' into glitch-soc/merge-upstream
3 years ago
Ondřej Pokorný c3eacaecfe Update en.yml (#17942)
3 years ago
Holger fb3fc6cab4 fix: `s3_force_single_request` not parsed (#17922)
3 years ago