Commit Graph

202 Commits

Author SHA1 Message Date
Mike Welsh 5b1d4d071d ci: Add OAuth client secret to chrome-extension-upload
Google's OAuth flow changed and this additional client secret is
required.
2022-12-18 03:11:20 -08:00
Daniel Jacobs b9e23819e3 ci: Fix typo 2022-12-16 16:30:51 -08:00
Daniel Jacobs df0e1a39c3 ci: Bump chrome-extension-upload to latest release 2022-12-16 09:26:19 +02:00
Daniel Jacobs d26b5ab018 ci: Do simple numerical actions updates 2022-12-15 14:10:28 -08:00
TÖRÖK Attila e219cfef68 ci: Don't use a PPA for mesa (lavapipe) anymore on ubuntu-22.04 2022-12-06 11:55:06 -06:00
Aaron Hill f212e55385 Re-enable image tests on Linux 2022-12-06 11:30:47 -06:00
Daniel Jacobs 5b9da62c0a ci: Try disabling image tests on Linux 2022-12-02 21:28:41 -07:00
Daniel Jacobs e8b16b0cce ci: Change actions/upload-artifact to v3 2022-12-02 21:28:41 -07:00
Daniel Jacobs dca2fa8d35 ci: Don't use specific Swatinem/rust-cache revision 2022-12-02 21:28:41 -07:00
Daniel Jacobs 1355f11e6b ci: Move to direct cargo commands instead of using actions-rs/cargo 2022-12-02 21:28:41 -07:00
Daniel Jacobs 9256cb3276 ci: Replace actions-rs/toolchain with dtolnay/rust-toolchain 2022-12-02 21:28:41 -07:00
Daniel Jacobs 1cb3dfbe03 ci: Upgrade Node 12 actions workflows 2022-12-02 21:28:41 -07:00
Adrian Wielgosik 1f9fe76f16 Revert "ci: Upgrade Node 12 actions workflows"
This reverts commit eae04a1884.
2022-12-02 16:35:52 -07:00
Adrian Wielgosik 1a699345b4 Revert "ci: Replace actions-rs/toolchain with dtolnay/rust-toolchain"
This reverts commit 136c05fb17.
2022-12-02 16:35:52 -07:00
Adrian Wielgosik a040c329b7 Revert "ci: Move to direct cargo commands instead of using actions-rs/cargo"
This reverts commit 872dee65e7.
2022-12-02 16:35:52 -07:00
Adrian Wielgosik d7e8df517f Revert "ci: Don't use specific Swatinem/rust-cache revision"
This reverts commit 5db1f46a3a.
2022-12-02 16:35:52 -07:00
Daniel Jacobs 5db1f46a3a ci: Don't use specific Swatinem/rust-cache revision 2022-12-02 11:36:52 +01:00
Daniel Jacobs 872dee65e7 ci: Move to direct cargo commands instead of using actions-rs/cargo 2022-12-02 11:36:52 +01:00
Daniel Jacobs 136c05fb17 ci: Replace actions-rs/toolchain with dtolnay/rust-toolchain 2022-12-02 11:36:52 +01:00
Daniel Jacobs eae04a1884 ci: Upgrade Node 12 actions workflows 2022-12-02 11:36:52 +01:00
relrelb c76bc5f61d web: Update Node.js versions
Per https://nodejs.org/en/about/releases/:
* Node.js 16 became "maintenance" and Node.js 19 became "current" on October 18.
* Node.js 18 will become "active LTS" on October 25.

In order prepare for potentially breaking changes, update the tested Node.js
versions from 16 and 18 to 18 and 19.
2022-10-22 10:26:27 -06:00
relrelb dbfd28e708 web: Bump `wasm-bindgen` to 0.2.83
This restores commit 084b252030.

As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.
2022-10-14 21:49:40 +03:00
David Wendt 51c9e3714a ci: Yes, even me. 2022-09-25 16:28:18 -06:00
David Wendt 2ca5730a60 ci: Notify Discord when the Wiki changes.
We'd do this with Webhooks, but Discord's webhook impl for github does not work.
2022-09-25 16:23:27 -06:00
relrelb b5084eef25 Revert "web: Bump `wasm-bindgen` to 0.2.83"
This reverts commit 1954f6162f.
2022-09-24 09:52:25 +03:00
relrelb 1954f6162f web: Bump `wasm-bindgen` to 0.2.83
This reverts commit cf721d45f9 and restores
commit 084b252030, this time without updating
`web-sys`, due to being coupled to `wgpu`.
2022-09-23 17:23:35 +03:00
Daniel Jacobs cf721d45f9 Revert "web: Bump `wasm-bindgen` to 0.2.83"
This reverts commit 084b252030.
2022-09-15 22:33:07 +02:00
relrelb 084b252030 web: Bump `wasm-bindgen` to 0.2.83
As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.

Due to https://github.com/rustwasm/wasm-bindgen/pull/3031, use the
`serde-wasm-bindgen` crate as a replacement to the deprecated
`JsValue::from_serde` function.
2022-09-14 09:03:31 +03:00
Nathan Adams 03744d46f1 web: Rename wgpu feature to webgpu, add wgpu-webgl feature to use webgl through wgpu 2022-09-04 18:55:13 -07:00
EmperorBale dd2bc1ea78
avm2: Add automatic linting for AS3 playerglobals 2022-09-04 16:33:35 -07:00
Aaron Hill 3417dceca2 ci: Cache Cargo output on Github Actions
Co-authored-by: Mike Welsh <mwelsh@gmail.com>
2022-08-30 00:53:33 -07:00
Aaron Hill b5391c00f6 tests: Re-add per-platform image tests
Reverts #7267

The image tests for the upcoming 'DisplayObject.stageRect' support
differ between Linux and Windows, so we need this support again.

To avoid the Linux filename churn that we previously encountered,
we now only include the platform and graphics backend in the filename
(e.g. `expected-linux-Vulkan`). This may result in some unexpected
'mismatched image' test failures if GHA updates to a version of Lavapipe
that changes rendering output, but this should be relatively easy to
notice.
2022-08-24 21:29:53 -07:00
Aaron Hill 86e6983943 avm2: Partially implement Loader.load
This PR implements the `Loader.load` method, as well as
the associated `LoaderInfo` properties and events.

We can now load in an external AVM2 SWf: it will be added
as a child of `Loader` object, and will render properly
to the screen.

Limitations:
* The only supported `URLRequest` property is `url`
* `LoaderContext` is not supported at all - we always use the default
  behavior
* Only `Loader.load` is implemented - we do not yet support unloading.
* We fire a plain 'Event' for the 'progress' event, instead of using
  the (not yet implemented) 'ProgressEvent' class

The main changes in this PR are:
* The AVM2 `Loader` class now has an associated display object,
  `LoaderDisplay`. This is basically a stub, and just renders
  its single child (if it exists).
* `LoaderStream::Stage` is renamed to `LoaderStream::NotYetLoaded`.
  This is used for both the `Stage` and an 'uninitialized'
  `Loader.contentLoaderInfo`. In both cases, certain properties throw
  errors, while others return actual values.
* The rust `Loader` manager now handles both AVM1 and AVM2 movie loads.
2022-08-22 19:36:29 -07:00
Aaron Hill f7205a02a9 render: Add BlendMode infrastructure and implement BlendMode.ADD
Each render backend keeps track of a stack of BlenModes,
which are pushed and popped by 'core' as we render objects
in the displaay tree. For now, I've just implemented BlendMode.ADD,
which maps directly onto blend mode supported by each backend.

All other blend modes (besides 'NORMAL') will produce a warning
when we try to render using them. This may produce a very large amount
of log output, but it's simpler than emitting each warning only once,
and will help to point developers in the right direction when they
get otherwise inexplicable rendering issues (due to a blend mode
not being implemented).

The wgpu implementation is by far the most complicated, as we need
to construct a `RenderPipeline` for each possible
`(BlendMode, MaskState)`. I haven't been able to find any documentation
about the maximum supported number of (simultaneous) WebGPU render
pipelines - if this becomes an issue, we may need to register them
on-demand when a particular blend mode is requested.
2022-08-18 16:38:17 -07:00
TÖRÖK Attila b9d2ef4ab5 ci: Explicitly use ubuntu-22.04 image for all CI workflows
Because GitHub is really slow in moving the ubuntu-latest alias over
to 22.04, and it's starting to cause issues with the desktop build.
2022-08-17 11:10:10 -07:00
relrelb 98c0cab6aa ci: Check documentation
In order to prevent future warnings on malformed documentation comments.
2022-08-10 09:20:53 +03:00
relrelb 6f35d90146 ci: Run cargo in locked mode
As a follow-up for #7010, run cargo in locked mode on Web CI as well,
in order to validate that `Cargo.lock` is up-to-date and gain a slight
speed-up.
2022-08-01 19:46:21 +03:00
Mike Welsh 9e96b075d1 ci: Build web tests with --all-features 2022-07-30 19:07:39 +02:00
relrelb 79f36964b4 web: Bump wasm-bindgen to 0.2.82
As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.
2022-07-29 09:40:14 -07:00
relrelb 65be2adc63 wgpu: Bump to `0.13.0`
Based on the work in #6717, plus additional adaptions mentioned in
https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#wgpu-013-2022-06-30,
and more not-mentioned but required changes.

Also bump `wasm-bindgen` to `0.2.81` (along with its helper crates), as
required by the new `wgpu` version.

Note that I don't fully understand some of the required changes, notably:
* `wgpu::PresentMode::Mailbox` no longer works on my machine (Windows 11) -
The `wgpu` documentation says that `wgpu::PresentMode::Fifo` is the
only guaranteed to be supported, so I switched over to it instead.
* `self.staging_belt.recall()` doesn't return a `Future` anymore -
I assume it became synchronous so I simply removed the `executor`
from there.
2022-07-02 16:44:37 -07:00
relrelb 036276dece web: Run tests on Node.js 18
Which is the "current" release per https://nodejs.org/en/about/releases/.
This is in order to be prepared for potentially incoming breaking changes.
2022-06-15 22:02:25 +03:00
relrelb 4021cb54a4 ci: Run cargo in locked mode
Per https://doc.rust-lang.org/cargo/commands/cargo-test.html#manifest-options,
`cargo --locked` assumes that `Cargo.lock` is up-to-date, and otherwise
exits with an error.
Besides the nice validation, this might hopefully speed-up CI a bit.

This could be done on Web as well, but I'm not sure what's the best
way of doing it.
2022-05-17 12:47:50 -07:00
Mike Welsh 85e98cc1cc ci: Don't test web build on Windows
For unknown reasons, tests on the Windows web build continue to be
flaky on GitHub CI. Disable them for now. Tests continue to be run
on Ubuntu.
2022-05-06 14:20:47 -07:00
David Wendt 052cb40113 build: `actions/download-artifact` puts the ZIP file in the root of the project for some reason, breaking the Safari extension 2022-04-23 00:08:32 -07:00
David Wendt 399614f598 build: Build and package the Safari stub binary for macOS. 2022-04-12 22:14:22 -07:00
David Wendt 79ebcc6dd3 web: Add a crate for a stub binary that builds a Safari Web Extension 2022-04-12 22:14:22 -07:00
David Wendt 9b083d8be4 build: Subpackages need `--deep` codesigning 2022-04-12 22:14:22 -07:00
David Wendt 58ce66e1a3 web: Package the extension as a Safari Web Extension in the desktop build. 2022-04-12 22:14:22 -07:00
Mike Welsh 99d8a5bff3 ci: Run clippy with all features 2022-04-11 20:15:13 -07:00
relrelb eeb5eb18f6 web: Bump wasm-bindgen to 0.2.80
As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.
2022-04-08 09:56:23 -07:00
David Wendt 6669b93c9b build: macOS release builds should include the `sandbox` feature. 2022-03-30 11:37:25 -07:00
David Wendt 0a0af0adcf build: Specify minimum macOS versions 2022-03-28 22:37:25 -06:00
David Wendt 17686928bd build: Submit all builds to Apple Notary Service 2022-03-28 22:37:25 -06:00
David Wendt c7fec69dc7 chore: Forgot a `-` in the codesigning instructions 2022-03-28 18:50:33 -06:00
David Wendt da6c51ee7a build: Enable Hardened Runtime on macOS nightlies. 2022-03-28 16:30:58 -06:00
David Wendt c877bfe886 build: Add a workflow for signing the app bundle with a set of entitlements 2022-03-28 16:30:58 -06:00
David Wendt cc3d4f7638 build: Since our app package now works, clean up the bare executable. 2022-03-28 16:30:58 -06:00
David Wendt 1c308551ae chore: App bundle also needs a Resources directory. 2022-03-18 15:55:11 -06:00
David Wendt f7af4af818 Since we are building an app bundle now, the macOS packager needs to clone the repo, too 2022-03-17 19:48:17 -06:00
David Wendt 4e0253ebf0 Package the nightly builds as a MacOS app bundle. 2022-03-17 17:15:14 -06:00
Daniel Jacobs 31446785f9 ci: Use windows-latest again 2022-03-03 16:55:13 -07:00
Chris Midgley b2af0667fb build: add libgtk-3-dev 2022-02-23 22:45:26 +02:00
relrelb 2ca62ecf4b web: Remove tests on Node.js 14
There seems to be no good reason for testing on Node.js other than
the current LTS. Moreover, npm@6 has a wontfix issue when upgrading
to 8.4 on Windows, which requires a complex workaround: https://github.com/npm/cli/issues/4341#issuecomment-1040608101.

So avoid it by simply not supporting it.
2022-02-18 17:01:09 +02:00
relrelb 4037707ce5 ci: Migrate to Windows Server 2022
Per https://github.com/actions/virtual-environments/issues/4856,
`windows-latest` will default to `windows-2022` soon (not later than
March, 6). Since it seems like we still run on `windows-2019`, force the
migration by specifying `windows-2022` explicitly.

Since https://github.com/actions/virtual-environments/pull/5050 is
merged, this should fix the failing Web tests on mismatched Chrome and
chromedriver versions.

TODO: Once `windows-latest` defaults to `windows-2022` (again, March, 6),
change back to `windows-latest`.
2022-02-16 22:11:35 -07:00
relrelb d7177b474d ci: Temporarily avoid npm 8.4
Upgrading to npm 8.4 on Windows is currently broken: https://github.com/npm/cli/issues/4341
This was avoided by disabling tests on Windows Node 14 in #6167.
Re-enable them by staying on npm 8.3 instead.
2022-02-05 14:50:47 +02:00
Mike Welsh b7ebe0bbec ci: Temporarily disable Windows Node 14 test
Test is currently broken because of this issue:
https://github.com/actions/setup-node/issues/411
2022-01-29 15:29:49 -08:00
relrelb 1fd1a1e68e ci: Use `runner.os` over `matrix.os`
`runner.os` is a little more descriptive. But unfortunately, it cannot
be used in `job.name`.
2022-01-29 14:19:51 -08:00
relrelb 2132f3c9cd ci: Skip `publish-aur-package` job on forks
Move the `if` condition that tests for the Ruffle official repository
to the job-level, so all steps of that job are skipped, rather than
only the publish step itself. This should have a very little effect,
but I just randomly noticed it.
2022-01-24 12:30:03 -08:00
Mike Welsh cad76ad4fa ci: Fix publishing of Firefox extension
Supply FIREFOX_EXTENSION_ID var to the web build step to ensure
this gets correctly populated in the manifest.json.
2022-01-22 18:38:18 -08:00
Mike Welsh 95ddc06e71 ci: Use macos-11 runner 2022-01-21 18:21:33 -08:00
Mike Welsh 6bffef2550 ci: Publish Chrome and Firefox extensions nightly 2022-01-21 16:19:49 -08:00
relrelb eb52cbd770 ci: Publish npm package before packaging selfhosted
Otherwise `release.zip` is included in the package files.
2022-01-15 11:15:47 -08:00
Mike Welsh 31443cc9e7 chore: Publish npm package publicly 2022-01-14 16:01:23 -08:00
relrelb 38549fdbdf web: Publish NPM package
Publish nightly releases as part of the CI, so Ruffle can be easily
integrated into a website using a CDN (such as jsDelivr). It would
also be easier for websites to keep up-to-date, as NPM auto-updates
the `latest` tag to refer to the latest release.

A dedicated `package.json` is used for the published NPM package,
because `ruffle-selfhosted` depends on the private `ruffle-core`
package, which shouldn't be published.

Also, the `version` field must monotonically increase. So Webpack
auto-fills it to be `0.1.0-nightly.YYYY.MM.DD`. This format satisfies
a couple of needs:
* Newer nightly releases should take precedence over older ones.
* Stable releases (e.g. `1.0.0`) should take precedence over nightly
ones.
2022-01-12 21:24:19 -08:00
TÖRÖK Attila 44e59a0012 web,ci: Only build the vanilla module by default, use it as stand-in for the other
And enable the module that really uses WebAssembly extensions for the
releases by running the new "npm run build:dual-wasm" command, which
sets the ENABLE_WASM_EXTENSIONS=true environment variable.
2022-01-12 11:29:16 -08:00
relrelb c4d013c884 ci: Cache npm dependencies
This should improve CI build times.

Done as described in:
https://github.com/actions/setup-node#caching-packages-dependencies
2022-01-12 10:30:51 -08:00
relrelb 7f4f40621b web: Migrate to npm workspaces
`lerna` is a bit stale, and as such it currently has some outdated
dependencies which Dependabot warns on.
Fortunately, npm 7 supports monorepos natively, via "workspaces". So
simply replace `lerna` with this feature. The migration is pretty
neat and requires a very little invervention.

Because Node.js 14 comes with npm 6 by default, upgrade it manually
as shown in https://github.com/bahmutov/npm-install/issues/103#issuecomment-931226602.
2022-01-11 13:17:48 -08:00
Chris Midgley 755e5456da chore: use node 16 in nightly release as well 2021-10-26 13:21:55 -07:00
Chris Midgley 781edd0feb web: preferentially use node 16 to compile 2021-10-26 13:21:55 -07:00
Mike Welsh d58ecf0bcf ci: Enable WebGPU support in demo
ruffle.rs should be part of the Chrome WebGPU origin trial, so we
can enable wgpu feature to try it out.

It should gracefully fall back to WebGL when WebGPU is not
available.
2021-10-25 14:00:37 -07:00
Chris Midgley ed5d909026 dev: use '' over "" 2021-10-22 11:11:08 +03:00
Chris Midgley a9b9d04ec3 dev: use env var over secret 2021-10-21 01:06:04 -07:00
Chris Midgley 4a99dbccba
ci: stop trying to sign Firefox extension again
Skip signing step if extension id secret is unset
2021-10-20 11:15:08 -07:00
Chris Midgley e0b2288005
dev: Set Firefox min version to try to help with signing
* dev: set min Firefox version to 91.1.0
* Revert "dev: don't even try to sign firefox ext"
2021-10-17 11:31:03 -07:00
Chris Midgley f37730153a dev: only try to push demo, docs and aur on base repo 2021-10-12 17:22:34 -07:00
Chris Midgley b0fec2c2cb dev: don't even try to sign firefox ext 2021-10-09 18:06:47 +02:00
relrelb eb51e9b59a ci: Bump KSXGitHub/github-actions-deploy-aur 2021-09-25 13:40:59 +03:00
Chris Midgley 7f09e751a1
dev: have required builds 'run' (#5332)
* dev: have required builds 'run'

* dev: remove unnecessary fields

* dev: do less in the no-op step
2021-09-21 21:01:51 +02:00
Chris Midgley 898d8df9a8 fix: firefox_unsigned, not firefox-unsigned 2021-09-21 20:57:40 +02:00
Chris Midgley dd58bbf17b fix: correct working directory for firefox signing 2021-09-21 20:10:20 +02:00
Chris Midgley 5ee34ef1ed chore: remove extraneous brackets in if 2021-09-21 20:10:20 +02:00
Chris Midgley 29111db9f3 dev: correct names of steps 2021-09-21 20:10:20 +02:00
Chris Midgley f276712c2c dev: allow for failure of firefox signing in build nightly 2021-09-21 20:10:20 +02:00
relrelb dd42b563ff web: Bump wasm-bindgen to 0.2.78
As usual, also bump its helper crates (`js-sys`, `wasm-bindgen-futures`)
to the latest versions, except for `web-sys` which is locked by wgpu
to 0.3.50.
2021-09-18 21:35:50 +02:00
Mike Welsh 9978eaa954 chore: Bump to wasm-bindgen 0.2.77 2021-09-10 16:32:14 -07:00
Chris Midgley d34d8457ea dev: Only test beta rust on ubuntu 2021-09-06 17:35:03 +02:00
relrelb 915204b998 ci: Checkout source before paths filter
Otherwise the paths filter fails to list files using git.
2021-08-26 01:07:17 +03:00
relrelb 2ff9d93c90 ci: Cleanup quotes
Prefer single quotes over double quotes, and omit them where possible.
2021-08-26 01:07:17 +03:00
relrelb 7483afa4a9 ci: Inline `img_tests` boolean
Simplifies the logic, makes it shorter more readable.
2021-08-26 01:07:17 +03:00
relrelb bf32a0096b ci: Formatting 2021-08-26 01:07:17 +03:00