Commit graph

144 commits

Author SHA1 Message Date
ThibG
28abd3f699 Fix building assets in test environment (#8691)
Webpacker (Ruby wrapper to webpack) uses RAILS_ENV-based environments while
the javascript configuration for webpack re-reads this configuration file using
the NODE_ENV environment variable. This means that when RAILS_ENV=test, running
“assets:precompile” compiled the production packs in “public/packs” while
webpacker expects them in “public/packs-test”. This causes Ruby to recompile
them on-the-fly, possibly leading to race conditions in parallel_tests.

This changes:
- Disables on-the-fly compilation in test environment
- Changes the javascript part to read the correct environment
2018-09-13 15:18:47 +02:00
Thibaut Girka
ae4240d236 Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
	app/views/layouts/application.html.haml

Edited:
        app/helpers/application_helper.rb
        app/views/admin/domain_blocks/new.html.haml

Conflict wasn't really one, just two changes too close to one another.
Edition was to adapt the class names for themes to class names for
skins and flavours.

Also edited app/views/admin/domain_blocks/new.html.haml to strip the
duplicate admin pack inclusion thing.
2018-08-26 14:23:24 +02:00
M Somerville
4b27569841 Rename S3_CLOUDFRONT_HOST to S3_ALIAS_HOST. (#8423)
Still check for S3_CLOUDFRONT_HOST for existing installs.
2018-08-25 13:27:08 +02:00
Thibaut Girka
e09ade34cd Reduce assets precompilation time by about 20%
Bundle most common webpack chunks into a “common” pack,
in a way similar to what upstream does.
2018-07-28 23:24:41 +02:00
Thibaut Girka
62b47edf17 Merge branch 'master' into glitch-soc/merge-upstream 2018-07-17 22:05:25 +02:00
abcang
dd5b6bf3bb Update supported Node.js version (#8041) 2018-07-17 15:29:33 +02:00
Thibaut Girka
4ec907e413 Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
	Dockerfile
	app/javascript/packs/common.js
	config/webpack/loaders/sass.js
	config/webpack/shared.js
	db/schema.rb
	package.json
	yarn.lock

A lot of the conflicts come from updating webpack.

Even though upstream deleted app/javascript/packs/common.js, I kept
glitch-soc's version as it unifies JS/CSS packs behavior across flavours.

Ported glitch changes to webpack 4.x
2018-07-16 14:50:42 +02:00
Yamagishi Kazutoshi
2275752fca Upgrade webpack to version v4.x (#6655) 2018-07-14 03:56:41 +02:00
Jenkins
695674b2fa Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master 2018-06-12 13:17:21 +00:00
Renato "Lond" Cerqueira
2e4a1d3109 Rename emoji sheet to avoid caching issue (#7777) 2018-06-10 16:12:47 +02:00
Thibaut Girka
c822ecfa01 Merge branch 'master' into glitch-soc/merge-upstream 2018-05-29 13:52:26 +02:00
Yamagishi Kazutoshi
7e042c97d1 Use URL polyfill (#7664) 2018-05-29 13:33:20 +02:00
Akihiko Odaki
0cb1524dc1 Cache attachments on external host with service worker (#7493) 2018-05-29 00:43:47 +02:00
Thibaut Girka
efd2441d1f Merge branch 'master' into glitch-soc/merge 2018-05-14 20:51:50 +02:00
Akihiko Odaki
0205536ee7 Limit environment variables to expose to webpack (#7480) 2018-05-14 17:45:37 +02:00
David Yip
2567d0a704 Merge remote-tracking branch 'origin/master' into gs-master 2018-03-27 10:44:12 -05:00
Akihiko Odaki
e829c21cc6 Cache media (#6902) 2018-03-27 12:32:30 +02:00
David Yip
87517e2dd8 Merge remote-tracking branch 'origin/master' into merge-upstream
Conflicts:
	app/views/layouts/mailer.html.haml
	config/locales/ko.yml
2018-01-28 22:45:17 -06:00
Eugen Rochko
9c212f0f28 ASSET_HOST is wrong env variable. Fix to CDN_HOST (#6372) 2018-01-29 01:06:39 +01:00
Jenkins
3cd4a0804b Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master 2018-01-24 19:17:11 +00:00
Eugen Rochko
8f60c22ba4 Fix #6311: Replace relative URLs in CSS only for Premailer (#6335) 2018-01-24 02:57:14 +01:00
David Yip
a95ca95b7b Merge remote-tracking branch 'origin/master' into merge-upstream
Conflicts:
	app/controllers/settings/two_factor_authentication/confirmations_controller.rb
2018-01-21 13:36:10 -06:00
ThibG
55567d05b2 Fix assets loading when WEB_DOMAIN ≠ LOCAL_DOMAIN (#6319)
Since 896cadceed, assets URL are absolute and
not relative. Unfortunately, the domain used to build such URLs is the wrong
one: LOCAL_DOMAIN, and not WEB_DOMAIN, where the assets are stored.
2018-01-21 13:22:31 +01:00
David Yip
03f157f6da Merge remote-tracking branch 'origin/master' into merge-upstream
Conflicts:
	app/javascript/styles/mastodon/components.scss
2018-01-20 10:45:43 -06:00
Eugen Rochko
896cadceed Improve HTML e-mails based on Litmus tests (#6301)
* Use PNG images in HTML e-mails

* Make webpack use URLs with host so fonts load inside HTML e-mails

Convert this back to a relative URL in the premailer CSS loader
since local requests are quicker

* Improve responsive design

* Add missing PNG icon
2018-01-20 01:32:21 +01:00
Jenkins
86007e913d Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master 2018-01-05 22:17:12 +00:00
Yamagishi Kazutoshi
0fa691d2a9 Fix RFC 5646 Regular Expression (#6190) 2018-01-05 04:43:50 +01:00
kibigo!
1d7b78817a Fixed index in webpack config 2017-12-11 10:45:21 -08:00
kibigo!
b27126f1d6 Linting fixes 2017-12-10 11:08:04 -08:00
kibigo!
99e8710095 Javascript intl8n flavour support 2017-12-10 11:08:04 -08:00
kibigo!
e614dc144e Fixed webpack skin folder globbing 2017-12-07 14:33:49 -08:00
kibigo!
882055afd0 Rename themes -> flavours ? ? 2017-12-03 23:26:40 -08:00
kibigo!
36b9f4df56 Skins support 2017-11-30 19:29:47 -08:00
kibigo!
eadf1c38a5 Minor fixes 2017-11-21 18:17:38 -08:00
kibigo!
8aeda4f064 Finalized theme loading and stuff 2017-11-20 22:13:37 -08:00
kibigo!
5845057adb Themed prefetching 2017-11-16 21:37:08 -08:00
Surinna Curtis
02ae609d9a Merge tootsuite/master at ab48f2b239 2017-11-16 01:21:16 -06:00
Yamagishi Kazutoshi
f0d800d9a9 Update extract-text-webpack-plugin to version 3.0.2 (#5584) 2017-11-05 13:07:59 +01:00
Yamagishi Kazutoshi
395a88eb5d Upgrade compression-webpack-plugin to version 1.0.1 (#5581) 2017-11-01 14:42:19 +01:00
Nolan Lawson
ba22580c06 Add ServiceWorker caching for static assets (#5524) 2017-10-31 12:25:51 +01:00
Akihiko Odaki
38d5aa3073 Use contenthash for ExtractTextWebpackPlugin (#5462)
[hash] is not documented.
2017-10-27 23:54:20 +09:00
kibigo!
02827345ae Merge upstream 2.0ish #165 2017-10-11 10:43:10 -07:00
Nolan Lawson
82ff80dbad Remove prop types from external libraries (#5304) 2017-10-10 18:44:51 +02:00
Nolan Lawson
7bde8dcc08 Use ES module build of react-router-dom (#5264) 2017-10-08 02:55:58 +02:00
aschmitz
4f7aa88461 Configure webpack to poll for changes in development (#5040)
* Configure webpack to poll for changes in development

Vagrant on Linux/macOS hosts shared files via NFS, which doens't
support inotify-based watching of files. This tweak makes webpack
check for changes every second, and rebuild if necessary. This
removes the need to restart Foreman every time a frontend file
changes. Note that rebuilding is still a relatively lengthy
process.

The polling frequency can be changed to taste.

* Only poll in Vagrant

This tests for the presence of the VAGRANT environment variable to
determine whether or not we're in Vagrant. It is set in .env.vagrant,
which is set up to be included in the Vagrantfile.
2017-10-04 09:52:11 +02:00
kibigo!
cae9e7ab76 Fixed webpack config code 2017-09-25 19:35:54 -07:00
kibigo!
aac16a82d6 Better themeing support!! 2017-09-25 19:24:32 -07:00
Andrew
b4842ef0b9 Add support for multiple themes (#4959)
* Add support for selecting a theme

* Fix codeclimate issues

* Look up site default style if current user is not available due to e.g. not being logged in

* Remove outdated comment in common.js

* Address requested changes in themes PR

* Fix codeclimate issues

* Explicitly check current_account in application controller and only check theme availability if non-nil

* codeclimate

* explicit precedence with &&

* Fix code style in application_controller according to @nightpool's suggestion, use default style in embedded.html.haml

* codeclimate: indentation + return
2017-09-19 16:36:23 +02:00
David Yip
da3f22ee7d Merge branch 'origin/master' into sync/upstream
Conflicts:
	app/javascript/mastodon/components/status_list.js
	app/javascript/mastodon/features/notifications/index.js
	app/javascript/mastodon/features/ui/components/modal_root.js
	app/javascript/mastodon/features/ui/components/onboarding_modal.js
	app/javascript/mastodon/features/ui/index.js
	app/javascript/styles/about.scss
	app/javascript/styles/accounts.scss
	app/javascript/styles/components.scss
	app/presenters/instance_presenter.rb
	app/services/post_status_service.rb
	app/services/reblog_service.rb
	app/views/about/more.html.haml
	app/views/about/show.html.haml
	app/views/accounts/_header.html.haml
	config/webpack/loaders/babel.js
	spec/controllers/api/v1/accounts/credentials_controller_spec.rb
2017-09-09 14:27:47 -05:00
Yamagishi Kazutoshi
9d1019bded Disable babel-loader cache when development environment (#4684) 2017-08-24 19:27:52 +02:00
Ondřej Hruška
913dd13575 Merge remote-tracking branch 'upstream/master' 2017-08-07 22:43:52 +02:00
Yamagishi Kazutoshi
581f8b2909 Enable cache for babel-loader (#4505) 2017-08-03 17:46:49 +02:00
kibigo!
2cdee6ae8a Merge upstream (#111) 2017-08-01 13:20:29 -07:00
Gô Shoemake
58446d39d8 Multiple frontend support (#110)
* Initial multiple frontend support

* Removed unnecessary require()

* Moved styles/images out of common
2017-07-30 19:28:21 +02:00
Yamagishi Kazutoshi
f61858281c Remove hash from chunk filename when dev env (#4411) 2017-07-28 05:14:01 +02:00
Satoshi KOJIMA
c6344547a3 fix #4356 : place sw.js to assets/sw.js (#4357) 2017-07-28 01:55:52 +02:00
kibigo!
0b64d60988 Fix for stylesheet split 2017-07-18 11:28:52 -07:00
Surinna Curtis
6311bfb8ff Add sourceRoot/includePaths to loaders
Use the settings modal as an example/testcase
2017-07-18 11:27:48 -07:00
Ondřej Hruška
02f16aea28 split added glitch locales from vanilla (#82)
* Locale script now accepts overrides and new keys from glitch/locales

* Revert glitchsoc changes to mastodon/locales to prevent future merge conflicts
2017-07-16 01:15:25 +02:00
Sorin Davidoi
ecab38fd66 Web Push Notifications (#3243)
* 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
2017-07-13 22:15:32 +02:00
Eugen Rochko
fb7fcebb2b Fix #4059 - Remove ModuleConcatenationPlugin (#4139)
It increased memory usage of Webpack 1.5x fold with little benefits
2017-07-10 18:46:46 +02:00
Yamagishi Kazutoshi
2cd7d15620 Fix regular expression for RFC 5646 (regression from #3604) (#4133) 2017-07-10 14:02:18 +02:00
unarist
7968c69df4 Fix react-intl/locale-data import issue on production build (#3937)
Webpack seems to fail to import `react-intl/locale-data/*.js` if those
files has been proceed by babel, and this also breaks applying our translation.

Note that this won't be a problem on English locale, because react-intl
includes it as default and works fine without manually added locale-data.
Also this issue seems to only occurs on production build, but I'm not sure
about reason.
2017-06-25 12:49:53 +02:00
unarist
741fd15f4e Fix webpack config for Windows (#3926) 2017-06-24 14:03:52 +02:00
Nolan Lawson
9c246cac5c Apply babel to react-intl to remove prop-types (#3914) 2017-06-23 18:21:33 +02:00
Nolan Lawson
61634505c1 Upgrade to Webpack 3 with module concatenation (#3912) 2017-06-23 17:44:55 +02:00
Yamagishi Kazutoshi
0a2e331bd5 Re-add disableHostCheck (regression #3729) (#3854)
ref #2790
2017-06-19 14:01:31 +02:00
Yamagishi Kazutoshi
dece663cd0 Upgrade Webpacker to version 2.0 (#3729) 2017-06-18 02:57:09 +02:00
Eugen Rochko
baf07bc83b Exclude packs/custom.js from webpack compilation to prevent breakage (#3719)
due to the change in #3373
2017-06-13 03:55:36 +02:00
Yamagishi Kazutoshi
eb34081815 Remove comments for eslint-disable (#3691) 2017-06-11 10:42:42 +02:00
Yamagishi Kazutoshi
d66a5fb801 Refactor translationRunner.js (#3604)
- Use yargs instead of minimist
- Simplify validators
- Fix typo (RFC5626 -> RFC5646)
2017-06-06 13:31:57 +02:00
Yamagishi Kazutoshi
615c580665 Add quotes ESLint rules (#3602)
* Add quotes ESLint rule

* Add jsx-quotes ESlint rule

* Sort ESLint rules
2017-06-06 03:56:36 +02:00
Nolan Lawson
1a543944c8 Enable stats.json analysis with Webpack Visualizer (#3509) 2017-06-02 03:49:56 +02:00
Akihiko Odaki (@fn_aki@pawoo.net)
6b0fdf95b9 Resolve custom application stylesheet with Webpack (#3373)
This implementation is a bit smaller and still has the following benefits:

* No need of app/javascript/packs/custom.js
For custom stylesheet, it typically has only
"require('../styles/custom.scss')" and is redundant.

* No need to extract vendor stylesheet to another asset
Extracting vendor stylesheet could be forgotten by developers who do not
use custom stylesheet.
2017-06-01 20:56:32 +02:00
Yamagishi Kazutoshi
59ff072fcf Remove unused loaders of webpack (#3495) 2017-06-01 17:27:35 +02:00
Yamagishi Kazutoshi
c7be992701 Add ESLint rule (object-curly-spacing) (#3498) 2017-06-01 17:25:10 +02:00
Naouak
b7e9451a40 Fix webpack building on Windows (#3426)
* Path should not be constructed manually. Use path.join to ensure compatibility.

* Path should not be constructed manually. Use path.join to ensure compatibility.

* Fix regexp.

* Fix my own stupidity.
I forgot to check outside my test script the regexp...
2017-05-30 15:30:59 +02:00
Daniel Hunsaker
1a58ed6653 [nanobox] Adjustments for Nanobox development (#3295)
Because Nanobox doesn't run data components in the same container as the code, there are a few tweaks that need to be made in the configuration to get WebPack to work properly in development mode.

The same differences lead to needing to use `DATABASE_URL` by default in the `.env` file for Rails to work correctly.

Limitations of our `.env` loader for Node.js mean the `.env` file needs to be compiled everywhere in order to work, so we compile it in development, now, too. Also, all the `.env.production` tweaks have been consolidated into a single command.

Finally, since Nanobox actually creates the database when it sets up the database server, using the existence of the database alone to determine whether to migrate or setup is insufficient. So we add a condition to `rake db:migrate:setup` to check whether any migrations have run - if the database doesn't exist yet, `db:setup` will be called; if it does, but no migrations have been run, `db:migrate` and `db:seed` are called instead (the same basic idea as what `db:setup` does, but it skips `db:create`, which will only cause problems with an existing DB); otherwise, only `db:migrate` is called.

None of these changes should affect development, and all are designed not to interfere with existing behaviors in other environments.
2017-05-29 17:59:18 +02:00
Akihiko Odaki
a6773d2936 Fix Webpack Bundle Analyzer output for Webpacker (#3374)
Webpacker failed to parse output of Webpack when a module requires
non-existent module or has similar errors. This commit fixes the bug.
2017-05-28 16:26:16 +02:00
Eugen Rochko
a46c2a5e19 Fix #2922 - Load stylesheet from "custom.css" entrypoint when present (#3332)
* Fix #2922 - Load stylesheet from "custom.css" entrypoint when present

This is pretty much the same way it worked as before, albeit with
having to create app/javascript/packs/custom.js with
require('../styles/custom.scss') (or whatever you want really), which
will be a blank slate for you to import whatever you want

* Remove old assets directory

* Extract font-awesome into common.css and always load it
2017-05-27 16:55:09 +02:00
Nolan Lawson
b69a1f599a Add improved performance marks for development mode (#3297) 2017-05-25 14:09:55 +02:00
Nolan Lawson
e228bdd3b6 Add webpack-bundle-analyzer for production builds (#3170) 2017-05-22 15:42:11 +02:00
Nolan Lawson
2d7aacf747 Only load Intl data for current language (#3130)
* Only load Intl data for current language

* Extract common chunk only from application.js and public.js

* Generate locale packs, avoid caching on window object
2017-05-22 15:06:06 +02:00
Yamagishi Kazutoshi
e4ed0b155c Improve eslint rules (#3147)
* Add semi to ESLint rules

* Add padded-blocks to ESLint rules

* Add comma-dangle to ESLint rules

* add config/webpack and storyboard

* add streaming/

* yarn test:lint -- --fix
2017-05-20 17:31:47 +02:00
Akihiko Odaki
a4a52180cd Introduce common JavaScript file (#2981)
* Create common chunk rather than vendor chunk

vendor chunk is a set of modules provided by external vendors, but now we
can have a chunk as a set of modules shared by multiple entry points,
which could be more efficent than having vendor chunk.

* Start rails-ujs in common.js

This is used by /settings/two_factor_authentication.
2017-05-15 20:20:10 +02:00
Yamagishi Kazutoshi
1ef8cd0bbc Add final newline to locale files (#2890) 2017-05-07 19:55:47 +02:00
Nolan Lawson
c4d405f24c add source maps for dev/production (#2873) 2017-05-07 15:22:30 +02:00
Nolan Lawson
475c467847 switch uglify to compress:true,mangle:true (#2852) 2017-05-06 21:24:59 +02:00
Koala Yeung
d9cfc5c821 translateionRunner: improve minimalist options (#2835)
* translateionRunner: improve minimalist options

* Properly added flags.
* Added alias: -h, -f

* translationRunner: improve logic and flow

* Show all error messages instead of validate availability / name
  format separately.

* translationRunner: check messageDirectory existance

* translationRunner: changed throw string to Error

* translationRunner: use short cut for boolean
2017-05-06 17:05:13 +02:00
Nolan Lawson
a56fc930ae remove unnecessary buffer polyfill (#2833) 2017-05-06 11:02:19 +02:00
Nolan Lawson
7a874f1f98 separate .babelrc for prod/dev, add babel-plugin-lodash (#2829) 2017-05-06 04:18:23 +02:00
Koala Yeung
b1f14a1c7f Streamline javascript translation by improving translationRunner (#2808)
* package.json: Add "build:*" targets

* Improve react-intl-translations-manager workflow.
  * Added "build:production" to build production bundle.
  * Added "build:development" to build development bundle.

* Fix json translation files

* Run `yarn manage:translations` to fix translation files.
* Fix `pl.json` for syntax error.

* translationRunner: auto detect existing languages

* Auto detect existing rfc5646 language tag in *.json filenames
  in `app/javascript/mastodon/locale` folder. No need to manually
  define every new language in the languages array here.

* translationRunner: add more functionality

* Allow script user to specify language code to check.
* Added available language check.
* Added --force flag to force creation of unexists language.
* Added --help flag and help messages.

* gitignore: ignore npm-debug.log

* Fix webpack error if NODE_ENV is not defined

Default to use 'development' in config/webpack/configuration.js
2017-05-06 04:05:38 +02:00
abcang
6e3b33e5f1 Enable disableHostCheck option of webpack-dev-server (#2790) 2017-05-04 17:49:05 +02:00
Eugen Rochko
ef2af79a48 Replace sprockets/browserify with Webpack (#2617)
* Replace browserify with webpack

* Add react-intl-translations-manager

* Do not minify in development, add offline-plugin for ServiceWorker background cache updates

* Adjust tests and dependencies

* Fix production deployments

* Fix tests

* More optimizations

* Improve travis cache for npm stuff

* Re-run travis

* Add back support for custom.scss as before

* Remove offline-plugin and babili

* Fix issue with Immutable.List().unshift(...values) not working as expected

* Make travis load schema instead of running all migrations in sequence

* Fix missing React import in WarningContainer. Optimize rendering performance by using ImmutablePureComponent instead of
React.PureComponent. ImmutablePureComponent uses Immutable.is() to compare props. Replace dynamic callback bindings in
<UI />

* Add react definitions to places that use JSX

* Add Procfile.dev for running rails, webpack and streaming API at the same time
2017-05-03 02:04:16 +02:00