Commit Graph

89 Commits

Author SHA1 Message Date
Ronan Jouchet c9ee6667d4
Revamp and move to TypeScript (#898)
## Breaking changes

- Require **Node >= 8.10.0 and npm 5.6.0**
- Move to **Electron 8.1.1**.
- That's it. Lots of care went into breaking CLI & programmatic behavior
  as little as possible. **Please report regressions**.
- Known issue: build may fail behind a proxy. Get in touch if you use one:
  https://github.com/jiahaog/nativefier/issues/907#issuecomment-596144768

## Changes summary

Nativefier didn't get much love recently, to the point that it's
becoming hard to run on recent Node, due to old dependencies.
Also, some past practices now seem weird, as better expressible
by modern JS/TS, discouraging contributions including mine.

Addressing this, and one thing leading to another, came a
bigger-than-expected revamp, aiming at making Nativefier more
**lean, stable, future-proof, user-friendly and dev-friendly**,
while **not changing the CLI/programmatic interfaces**. Highlights:

- **Require Node>=8**, as imposed by many of our dependencies. Node 8
  is twice LTS, and easily available even in conservative Linux distros.
  No reason not to demand it.
- **Default to Electron 8**.
- **Bump** all dependencies to latest version, including electron-packager.
- **Move to TS**. TS is great. As of today, I see no reason not to use it,
  and fight interface bugs at runtime rather than at compile time.
  With that, get rid of everything Babel/Webpack.
- **Move away from Gulp**. Gulp's selling point is perf via streaming,
  but for small builds like Nativefier, npm tasks are plenty good
  and less dependency bloat. Gulp was the driver for this PR: broken
  on Node 12, and I didn't feel like just upgrading and keeping it.
- Add tons of **verbose logs** everywhere it makes sense, to have a
  fine & clear trace of the program flow. This will be helpful to
  debug user-reported issues, and already helped me fix a few bugs.
    - With better simple logging, get rid of the quirky and buggy
      progress bar based on package `progress`. Nice logging (minimal
      by default, the verbose logging mentioned above is only used
      when passing `--verbose`) is better and one less dependency.
- **Dump `async` package**, a relic from old callback-hell early Node.
  Also dump a few other micro-packages unnecessary now.
- A first pass of code **cleanup** thanks to modern JS/TS features:
  fixes, simplifications, jsdoc type annotations to types, etc.
- **Remove GitHub integrations Hound & CodeClimate**, which are more
  exotic than good'ol'linters, and whose signal-to-noise ratio is too low.
- Quality: **Add tests** and add **Windows + macOS CI builds**.
  Also, add a **manual test script**, helping to quickly verify the
  hard-to-programatically-test stuff before releases, and limit regressions.
- **Fix a very small number of existing bugs**. The goal of this PR was
  *not* to fix bugs, but to get Nativefier in better shape to do so.
  Bugfixes will come later. Still, these got addressed:
  - Add common `Alt`+`Left`/`Right` for previous/next navigation.
  - Improve #379: fix zoom with `Ctrl` + numpad `+`/`-`
  - Fix pinch-to-zoom (see https://github.com/jiahaog/nativefier/issues/379#issuecomment-598612128 )
2020-03-15 16:50:01 -04:00
Ronan Jouchet b927b401b0 Update changelog for `v7.7.1` 2020-01-23 20:00:43 -05:00
lockwiser 18813776ca Doc: Clarify background-color arguments (#891) 2020-01-14 13:52:49 -05:00
Darío Hereñú 2edbf799c1 Fixed duplicate word in doc for `-bounce` (#883) 2019-12-13 18:40:24 -05:00
otato.z ef13ff1e1d feat: proxy rules with `--proxy-rules` flag (#854)
See https://electronjs.org/docs/api/session?q=proxy#sessetproxyconfig-callback
2019-10-22 19:38:39 -04:00
Ronan Jouchet 4f235c550a Update changelog for `v7.7.0` 2019-08-22 21:55:44 +02:00
Clement Fradet Normand 99b1808dde Improve doc for --internal-urls (PR #833) 2019-08-22 21:46:20 +02:00
FabulousCupcake d0a0614ba3 Add --browserwindow-options to completely expose Electron options (PR #835)
This adds a new flag `--browserwindow-options`, taking a stringified JSON object as input.  
It will be inserted directly into the options when BrowserConfig is initialized.

This allows total configurability of the electron BrowserWindow configuration via nativefier.

An example use case is added to the documentation, which modifies the default font family in the browser.

#### References

- https://github.com/electron/electron/blob/master/docs/api/browser-window.md#new-browserwindowoptions
  - See the following for electron v3.1.7
  - https://github.com/electron/electron/blob/v3.1.7/docs/api/browser-window.md#new-browserwindowoptions
2019-08-22 21:37:49 +02:00
Umair Ahmed 81c422d4e0 Support setting background color (fixes #795) (PR #819)
Adds a `--background-color` flag for the background of the window when the app isn't loaded.
2019-08-22 21:25:58 +02:00
Nate Woolls 5433569921 Support macOS 10.4+ Dark Mode, default to Electron 5.x (#796)
Introduces a `--darwin-dark-mode-support` flag. 
(I kept the same flag used by Electron Packager.)
This required bumping Electron and Electron Packager.

Addresses:

- https://github.com/jiahaog/nativefier/issues/733
- https://github.com/jiahaog/nativefier/issues/727
2019-08-22 21:05:39 +02:00
Ronan Jouchet 070efe6fa9 Update changelog for `v7.6.12` 2019-03-25 19:14:25 -04:00
Ronan Jouchet 07faeb1881 Update changelog for `v7.6.11` 2019-02-10 22:20:40 -05:00
Adrian DC 5b6cc89f22 Fix #316: Add --clear-cache flag to cleanup session on start/exit ("incognito" mode) (PR #747)
- Add a new `clearCache` option and `--clear-cache` parameter
  to trigger session cleanups upon window launch and close

- Covers the feature request from issue #316 

- Use case example: Forcing authentification / login between sessions without limiting cache size
2019-02-08 10:03:29 -05:00
Ronan Jouchet 85aacaaa52
Doc for squirrel installers 2019-02-08 09:59:20 -05:00
Ronan Jouchet c722f8a5ac Update changelog for `v7.6.10` 2019-01-01 23:44:57 -05:00
Dominic Hopton e064f765cb Fix CSS & JavaScript injection (Fixes #703, Fixes #731, PR #732)
* Fix for CSS Injection not working (#703)

Issue:
When using `onHeadersReceived`, the code was passing `null` for the filters.
This appears to trigger behaviour that matches _no_ urls at all.
This results in it never being called to inject the CSS.

Fix:
Pass an empty array instead. Now it's called for all URLs.

Tests pass & linting is clean

* Fix JavaScript injection (#731)

Issue:
It appears that on low endd evices (Core m3 MacBook), the attachment to
`DOMContentLoaded` happens _after_ the event has been raised, so does
not have a chance to inject the script.

Fix:
Move the attachment to the top of the file -- before the imports. This
triggers a bunch of linting erros, so also added disablement inplace.

Additional:
Clarified when the injected JS gets loaded, and what it can assume about
the DOM.
2019-01-01 23:38:45 -05:00
Ronan Jouchet ae3eafe653 Update changelog for `v7.6.9` 2018-12-01 14:07:47 -05:00
Felix Eckhofer 8600c78d1a Add --start-in-tray CLI flag to let app start in background (PR #564, Fixes #522) 2018-12-01 14:04:55 -05:00
Benedikt Rötsch 3029cba01f Support global shortcuts that trigger input events (PR #698, Fixes #15)
This adds a new flag, allowing the user to define global shortcuts that trigger input events within the main window.

That way, I could easily wrap SoundCloud and Deezer to create a native app which reacts on my keyboard media buttons.
2018-11-04 21:03:52 -05:00
Ronan Jouchet 11644e34d8 Update changelog for `v7.6.8` 2018-10-06 22:20:21 -04:00
Kevin Jalbert c974014465 Remove mention to older badge option in docs (#693)
The `--counter` option mentioned a _badge option_, which doesn't appear in the docs. This change removes this as it is not relevant in the context.
2018-10-02 14:15:29 -04:00
André Werlang ad2f47df9c Update docs about icon requirements on Windows (#663)
On Windows, the supplied icon needs to be in .ico format
2018-08-22 16:18:46 -04:00
Ronan Jouchet 2b8f1390fb Update changelog for `v7.6.7` 2018-07-31 21:29:04 -04:00
Ronan Jouchet 94efbc44c4 Update changelog for `v7.6.6` 2018-07-22 10:44:44 -04:00
Ronan Jouchet b31be18303 Update changelog for `v7.6.5` 2018-07-21 09:23:03 -04:00
Ronan Jouchet 778418cdfb Update changelog for `v7.6.4` 2018-05-31 08:15:08 -04:00
Khai Nguyen b8c1d35ba4 Add --title-bar-style flag (macOS only) (PR#627) 2018-05-31 08:05:12 -04:00
Ronan Jouchet 17ccda36f0 Update changelog for `v7.6.3` 2018-05-23 14:52:40 -04:00
Ronan Jouchet 025936e9c5 Update changelog for `v7.6.2` 2018-05-01 19:06:46 -04:00
David Kramer bbb513d420 Fix #364 - Add --disable-gpu flag to disable hardware acceleration (PR #584) 2018-04-22 15:56:10 -04:00
Matt Rose 574205ab0d macOS: Add --bounce option for dock counter (PR #570) 2018-04-14 17:17:25 -04:00
Goh Jia Hao cec29c88ed Update changelog for `v7.6.1` 2018-03-29 22:24:47 -07:00
Goh Jia Hao a8052823ba Update changelog for `v7.6.0` 2018-03-29 21:52:09 -07:00
sgroh 46d381481c Fix #549: Add --always-on-top build flag (PR #551) 2018-03-16 18:15:44 -04:00
C. Bess 7270f7d295 Document internal-urls option (PR #465) 2018-02-06 17:19:39 -05:00
David Ollerhead e1909bf5c8 Support Mac App Store (--mas) builds (PR #532) 2018-02-02 08:06:29 -05:00
Bob Roth cec9c4b819 Fix #499: Add options to control file download behavior (PR #526) 2018-01-26 09:59:58 -05:00
Matt Harris 28dca8c647 Fix #325 - Add --x and --y window position flags (PR #515) 2017-12-26 13:00:39 -05:00
Goh Jia Hao db74db8911 7.5.4 2017-11-24 11:36:37 +08:00
Goh Jia Hao 09b236e8eb Update changelog for `v7.5.2` 2017-11-24 11:15:47 +08:00
Ronan Jouchet 6fb3b92eb8
Upgrade dependencies and default to latest Electron 1.7.9 (PR #483)
* Update deps except eslint
* Update eslint and lint:fix (WIP, needs manual fixing for remaining 44 problems)
* Manually fix remaining eslint errors
* Document deprecation of `version-string` as of electron-packager 9.0.0
* Upgrade to Electron 1.7.9 (chrome-58, node-7.9.0, v8-5.8)
* npm: Disable generation of package-lock.json and gitignore it
  --Trying this, package-lock is a pain in PRs. May not be a good idea
  (obviously we lose deps pinning), will revert if necessary.--
* npm tasks: add dev-up-win for Windows developers,
  and e2e for end-to-end tests. Update docs.
* Move normalizeUrl test to a jest unit test, makes no sense to be in the mocha e2e tests
* Switch from babel-preset-es2015 to babel-preset-env,
  with target.node=4.0. Seem like it's today's most convenient
  way to support the latest ES and let babel transpile to what
  makes sense for our currently minimal node version
2017-11-14 08:05:01 -05:00
Goh Jia Hao 300bf28b51 Update changelog for `v7.5.0` 2017-11-12 01:14:58 +08:00
omouren 885790bc22 Fix #304 - Add --tray CLI flag to let app running in background on window close. Supports in-title counter. (#457) 2017-10-05 19:32:48 -04:00
Devin Buhl 4c581f9067 Fix #275 - Add HTTP --basic-auth-{username,password} CLI flags (#444) 2017-10-05 18:44:03 -04:00
Bob Roth c9d2040327 Allow nativefier to set process.env variables (#419) 2017-08-16 10:20:43 -04:00
Bob Roth fc7a213a87 Fix #226 - Added support for app-copyright, app-version, build-version, version-string and win32metadata (#244) 2017-08-15 14:18:44 -04:00
Ronan Jouchet c6019ad13e Release 7.4.1 (#425) 2017-08-10 22:51:32 +08:00
David Pacheco 38825e8b71 Add options (--ignore-gpu-blacklist and --enable-es3-apis) to allow for WebGl apps to work on legacy or unsupported graphics cards by Chrome (#410) 2017-07-13 12:23:07 -04:00
romo-dw ab435ee5a6 Add support for --disk-cache-size Electron flag (PR #400) 2017-07-05 09:07:31 -04:00
Jia Hao Goh 751eef1fd7 Update changelog for `v7.4.0` 2017-05-21 20:44:45 +08:00