Ruffle Changelog

What's new in Ruffle Nightly 2024-04-25

Apr 25, 2024
  • avm2: Add Stage.softKeyboardRect by @adrian17 in #16113

New in Ruffle Nightly 2024-04-24 (Apr 24, 2024)

  • What's Changed:
  • chore: Bump locked loom, generator, async-process, and async-signal versions by @torokati44 in #16097
  • avm2: Add missing overrides to Stage and stub TextSnapshot by @kjarosh in #16089
  • build(deps): bump zip from 0.6.6 to 1.1.1 by @dependabot in #16076
  • chore: Run cargo update, excluding tracy-client duplication by @torokati44 in #16100
  • core: Update focus highlight reset logic for SWF9+ by @kjarosh in #16082
  • frontend-utils: Get rid of deadlocks in AsyncExecutor by @kjarosh in #15981

New in Ruffle Nightly 2024-04-22 (Apr 22, 2024)

  • avm2: Fix regression to do with not registering superclasses in the right order by @Lord-McSweeney in #16069
  • core: Dispatch rollOut/rollOver events on focus change and Tab by @kjarosh in #15955
  • avm2: Remove "namespace not matching" message by @Lord-McSweeney in #16070

New in Ruffle Nightly 2024-04-21 (Apr 21, 2024)

  • nits: Silence nightly lints by @torokati44 in #16048
  • avm2: Add support for sparse arrays by @jarca0123 in #16051
  • avm1: Correct getBounds properties order by @turicfr in #15975
  • avm2: Store Class instead of QName as superclass of Class by @Lord-McSweeney in #15986

New in Ruffle Nightly 2024-04-20 (Apr 20, 2024)

  • What's Changed:
  • Fix two bugs that caused wrong query parameters with navigateToURL by @evilpie in #16032
  • build(deps): bump rustls from 0.22.3 to 0.22.4 by @dependabot in #16042
  • avm2: Remove outdated TODO comments by @Lord-McSweeney in #16035

New in Ruffle Nightly 2024-04-19 (Apr 19, 2024)

  • frontend-utils: Don't spam 'Double polling'. It's meaningless. by @Dinnerbone in #16029
  • build(deps): bump wgpu from 0.19.3 to 0.19.4 in the winit-wgpu-egui group by @dependabot in #16027
  • build(deps): bump the cargo-minor group with 4 updates by @dependabot in #16028

New in Ruffle Nightly 2024-04-18 (Apr 18, 2024)

  • What's Changed:
  • tests: Fix a typo in tab_ordering_tabbable by @kjarosh in #16014
  • debug_ui: Show mouseEnabled/mouseChildren/doubleClickEnabled by @Aaron1011 in #15985
  • frontend-utils: Don't use tokio tasks inside ruffle's executor by @Dinnerbone in #16023
  • avm2: Allow splice() on a Vector with fixed=true by @adrian17 in #16010

New in Ruffle Nightly 2024-04-17 (Apr 17, 2024)

  • chore: fix some typos in comments by @StevenMia in #15991

New in Ruffle Nightly 2024-04-16 (Apr 16, 2024)

  • What's Changed:
  • avm2: More performance improvements by @Lord-McSweeney in #15884
  • chore: Update translations by @github-actions in #15983
  • frontend-utils: Remove isahc in favour of reqwest by @Dinnerbone in #15974
  • build(deps): bump the cargo-minor group with 11 updates by @dependabot in #15998
  • build(deps): bump the npm-minor group in /web with 12 updates by @dependabot in #15996
  • build(deps-dev): bump chai-html from 2.1.0 to 3.0.0 in /web by @dependabot in #15997

New in Ruffle Nightly 2024-04-15 (Apr 15, 2024)

  • What's Changed:
  • extension: Cleanup plugin-polyfill inline script on Firefox by @danielhjacobs in #15958
  • extension: Remove Ruffle's own script tag onload by @danielhjacobs in #15959
  • wstr: Fix parsing of '+' by @adrian17 in #15969
  • chore: Update translations by @github-actions in #15979

New in Ruffle Nightly 2024-04-13 (Apr 13, 2024)

  • What's Changed:
  • desktop: Remove --timedemo support. by @Dinnerbone in #15972
  • chore: Update translations by @github-actions in #15970

New in Ruffle Nightly 2024-04-12 (Apr 12, 2024)

  • frontend-utils: Move a bunch of backends from Desktop by @Dinnerbone in #15949

New in Ruffle Nightly 2024-04-10 (Apr 10, 2024)

  • What's Changed:
  • frontend-utils: Move bookmark reader/writer from desktop by @sleepycatcoding in #15885
  • Use correct coordinates for hitTest by @nicko1337 in #15894
  • frontend-utils: Fix typo in README by @danielhjacobs in #15942

New in Ruffle Nightly 2024-04-09 (Apr 9, 2024)

  • What's Changed:
  • input: Add support for NumLock by @kjarosh in #15912
  • avm1: Fix onKeyUp and onKeyDown events for Button by @kjarosh in #15910
  • build(deps-dev): bump the npm-minor group in /web with 5 updates by @dependabot in #15929
  • core: Add focus tracker to debug UI by @kjarosh in #15861
  • build(deps-dev): bump chai from 4.4.1 to 5.1.0 in /web by @dependabot in #15877
  • build(deps): bump the cargo-minor group with 6 updates by @dependabot in #15930
  • desktop: Initial Bundle support (.ruf files, and directories) by @Dinnerbone in #15892

New in Ruffle Nightly 2024-04-06 (Apr 6, 2024)

  • What's Changed:
  • chore: Update translations by @github-actions in #15891

New in Ruffle Nightly 2024-04-05 (Apr 5, 2024)

  • core,avm1: Add support for controlling focus highlight with _focusrect by @kjarosh in #15838
  • frontend-utils: Made new crate and moved bookmarks & all toml serialization utils to it by @Dinnerbone in #15865
  • chore: Dedupe a whole bunch of dependency version specifications by @Dinnerbone in #15868
  • chore: Re-enable Dependabot with dependency groups by @Aaron1011 in #14146
  • docs: Update README.md by @turicfr in #15839
  • desktop: Fix gui scale on launch on wayland by @ColinKinloch in #15781
  • chore: Fix Dependabot config and adjust groups by @Dinnerbone in #15869
  • build(deps): bump KSXGitHub/github-actions-deploy-aur from 2.7.0 to 2.7.1 by @dependabot in #15871
  • chore: Fix Dependabot npm path by @torokati44 in #15873
  • frontend-utils: Add TableExt trait by @sleepycatcoding in #15870
  • chore: Only do direct dependencies with dependabot by @Dinnerbone in #15874
  • build(deps): bump chromedriver from 122.0.6 to 123.0.1 in /web by @dependabot in #15876
  • chore: Rename rust dependabot group by @Dinnerbone in #15880
  • build(deps): bump web-time from 0.2.4 to 1.1.0 by @dependabot in #15879
  • web: Rewrite AMO submission script to use their v5 API directly by @torokati44 in #15844
  • build(deps-dev): bump the npm-minor group in /web with 16 updates by @dependabot in #15875
  • core: Ignore non-tabbable objects from tab ordering by @kjarosh in #15864
  • chore: Update translations by @github-actions in #15881
  • ci: run extra clippy step without tests by @sleepycatcoding in #15882
  • avm2: Add basic state merging for forward jumps to optimizer by @Lord-McSweeney in #15787

New in Ruffle Nightly 2024-04-04 (Apr 4, 2024)

  • What's Changed:
  • chore: Bump egui to v0.27.2 by @torokati44 in #15847
  • chore: Update translations by @github-actions in #15842
  • chore(deps): update dependency vite to v5.1.7 [security] by @renovate in #15859
  • desktop: Implement bookmarks by @sleepycatcoding in #15755
  • desktop: Add preference to change storage backend by @sleepycatcoding in #15785
  • chore: Update translations by @github-actions in #15860

New in Ruffle Nightly 2024-04-03 (Apr 3, 2024)

  • What's Changed:
  • ci: Fix the name of the no-op check-required job in the Test Web workflow by @torokati44 in #15840

New in Ruffle Nightly 2024-04-02 (Apr 2, 2024)

  • What's Changed:
  • avm2: Stub DisplayObject.metaData by @evilpie in #15826
  • chore: Update translations by @github-actions in #15815
  • ci: Split cargo-deny into its own job, add cargo-machete by @torokati44 in #15774
  • core: Improve order of automatic tab ordering by @kjarosh in #15810
  • desktop: Cleanup warning boilerplate from preferences reader by @sleepycatcoding in #15800
  • core: Render yellow rectangular highlight on keyboard focus by @kjarosh in #15717
  • ci: Don't notify Discord when the Wiki changes by @danielhjacobs in #15639
  • core: Default value logic for MovieClip.tabEnabled by @kjarosh in #15618

New in Ruffle Nightly 2024-04-01 (Apr 1, 2024)

  • What's Changed:
  • desktop: show translated string for currently selected language by @sleepycatcoding in #15825

New in Ruffle Nightly 2024-03-30 (Mar 30, 2024)

  • What's Changed:
  • chore: Update egui to v0.27.0 by @torokati44 in #15783
  • chore: Update egui to v0.27.1, insta to v1.38.0 by @torokati44 in #15803
  • core: Reverse tab order on Shift+Tab by @kjarosh in #15737
  • avm1: Support MovieClip.tabChildren by @kjarosh in #15580

New in Ruffle Nightly 2024-03-28 (Mar 28, 2024)

  • chore: Fix false positive clippy lint in rustc 1.78 betas by @kmeisthax in #15789

New in Ruffle Nightly 2024-03-27 (Mar 27, 2024)

  • What's Changed:
  • chore: Run cargo update by @torokati44 in #15777
  • build(deps-dev): bump express from 4.18.2 to 4.19.2 in /web by @dependabot in #15778
  • chore: Update translations by @github-actions in #15772
  • fix(deps): update rust dependencies by @renovate in #15780
  • avm2: Properly push coerced value back to stack in optimizer for Coerce op by @Lord-McSweeney in #15775
  • core: Add basic support for Tab key behavior by @kjarosh in #15542

New in Ruffle Nightly 2024-03-26 (Mar 26, 2024)

  • What's Changed:
  • fix(deps): update rust dependencies by @renovate in #15760
  • chore: Remove unused dependencies by @sleepycatcoding in #15769
  • desktop: Fix window title after closing the file by @sleepycatcoding in #15770

New in Ruffle Nightly 2024-03-25 (Mar 25, 2024)

  • What's Changed:
  • core: Make sure that streams progress even with many small-dt ticks by @torokati44 in #15747
  • avm2: Various optimizations by @Lord-McSweeney in #15744
  • core: Remove Collect from Color and DirtyState as it was unnecessary by @Lord-McSweeney in #15741
  • avm2: URLStream support for connected and HTTP_STATUS event by @evilpie in #15594
  • desktop: Improve backend selection by @Dinnerbone in #15647
  • chore: Update translations by @github-actions in #15756

New in Ruffle Nightly 2024-03-24 (Mar 24, 2024)

  • What's Changed:
  • avm2: Fix newactivation in script initializer by @Lord-McSweeney in #15603
  • build: Silence clippy assigning_clones lint by @adrian17 in #15703

New in Ruffle Nightly 2024-03-23 (Mar 23, 2024)

  • What's Changed:
  • chore: Bump h263-rs git refs by @torokati44 in #15719
  • fix(deps): update rust dependencies by @renovate in #15720

New in Ruffle Nightly 2024-03-22 (Mar 22, 2024)

  • What's Changed:
  • build(deps-dev): bump webpack-dev-middleware from 7.0.0 to 7.1.1 in /web by @dependabot in #15694
  • chore: Update translations by @github-actions in #15646

New in Ruffle Nightly 2024-03-19 (Mar 19, 2024)

  • What's Changed:
  • avm2: Fix some parameter types and signatures for XML by @Lord-McSweeney in #15611
  • chore: Update translations by @github-actions in #15616
  • fix(deps): update rust dependencies by @renovate in #15619
  • core: Cull text under textfield by @adrian17 in #15576
  • avm1: implemented mouse_wheel_enabled to text fields and made text scrollable by @Flawake in #15556
  • chore: Bump image to v0.25, without the dxt feature by @torokati44 in #15634
  • chore: Update translations by @github-actions in #15636

New in Ruffle Nightly 2024-03-17 (Mar 17, 2024)

  • What's Changed:
  • avm2: Provide an option to disable the optimizer by @adrian17 in #15579
  • build(deps): bump follow-redirects from 1.15.4 to 1.15.6 in /web by @dependabot in #15601

New in Ruffle Nightly 2024-03-15 (Mar 15, 2024)

  • avm2: Implement XMLList.elements by @sleepycatcoding in #15572
  • fix(deps): update rust dependencies by @renovate in #15520
  • chore(deps): update node.js dependencies by @renovate in #15574
  • avm2: unify abstract type propagation by @adrian17 in #15476

New in Ruffle Nightly 2024-03-14 (Mar 14, 2024)

  • avm2: Fix toString for primitive objects by @evilpie in #15544
  • chore: Update translations by @github-actions in #15549
  • avm2: Add Function.prototype.toString and toLocaleString by @evilpie in #15545
  • avm2: Fix Object.prototype.toString applied to Vector by @evilpie in #15562
  • avm2: Remove all to_string implementations except Object and Class. by @evilpie in #15565
  • chore: Update translations by @github-actions in #15567
  • fix(deps): update rust crate winit to 0.29.15 by @renovate in #15568
  • desktop: Use egui-winit clipboard by @ColinKinloch in #15566

New in Ruffle Nightly 2024-03-13 (Mar 13, 2024)

  • ci: Properly exclude large stuff from the reproducible FF extension source zip by @torokati44 in #15543
  • desktop: Make clipboard support optional by @ColinKinloch in #15535

New in Ruffle Nightly 2024-03-12 (Mar 12, 2024)

  • What's Changed:
  • chore(deps): update node.js dependencies by @renovate in #15484
  • desktop: Add URL decode to desktop window's title (close: #15454) by @TheDecimeter in #15509
  • desktop: Log to disk by @Dinnerbone in #15496
  • desktop: Turn off default features of image by @torokati44 in #15534

New in Ruffle Nightly 2024-03-11 (Mar 11, 2024)

  • avm2: Lookup multinames in verifier and store them in Op by @Lord-McSweeney in #15470
  • avm2: Re-implement RegExp.prototype.toString by @evilpie in #15513
  • ci: Remove web/packages/*/dist and target from reproducable source zips by @Dinnerbone in #15518
  • avm2: Reduce memcpy overhead in BytecodeMethod calls by @adrian17 in #15503

New in Ruffle Nightly 2024-03-10 (Mar 10, 2024)

  • What's Changed:
  • Request highest 'max_inter_stage_shader_components' supported by adapter by @Aaron1011 in #15498
  • avm2: Stub GameInput.getDeviceAt and GameInputControl by @Aaron1011 in #15409
  • Update gilrs by @evilpie in #15505

New in Ruffle Nightly 2024-03-09 (Mar 9, 2024)

  • Chore: Update translations.

New in Ruffle Nightly 2024-03-08 (Mar 8, 2024)

  • What's Changed:
  • avm2: Remove unused and unnecessary init_slot by @Lord-McSweeney in #15469
  • chore: Update translations by @github-actions in #15468
  • avm2: Stage.stage3Ds must return a vector by @evilpie in #15475
  • desktop: Persist volume to disk & don't translate GPU backends by @Dinnerbone in #15455

New in Ruffle Nightly 2024-03-07 (Mar 7, 2024)

  • What's Changed:
  • avm2: Match verifier reading implementation with FP's by @Lord-McSweeney in #15341
  • fix(deps): update rust crate winit to 0.29.14 by @renovate in #15458
  • fix(deps): update rust dependencies by @renovate in #15465

New in Ruffle Nightly 2024-03-06 (Mar 6, 2024)

  • What's Changed:
  • chore: Update cpal to 0.15.3 by @evilpie in #15448
  • chore: Update cargo-deny configuration by @torokati44 in #15450
  • chore: Update translations by @github-actions in #15457
  • core: Close sockets and timers when replacing the root movie by @kjarosh in #15422

New in Ruffle Nightly 2024-03-05 (Mar 5, 2024)

  • What's Changed:
  • chore: Switch fluent-templates back from master to v0.9.0 by @torokati44 in #15418
  • chore: Update wasm-bindgen to v0.2.92 by @torokati44 in #15424
  • fix(deps): update rust dependencies by @torokati44 in #15416
  • chore(deps): update node.js dependencies by @torokati44 in #15417
  • ci,web: Total Firefox extension reproducibility checking, now with 100% more wasm-opt! by @torokati44 in #15426
  • desktop: Initial Preferences work, allow changing the graphics backend and persist it to disk by @Dinnerbone in #15338

New in Ruffle Nightly 2024-03-04 (Mar 4, 2024)

  • What's Changed:
  • avm2: Only construct type_error on error in astype, instanceof by @adrian17 in #15408
  • Define distinct key types for different kinds of slotmaps by @torokati44 in #15401

New in Ruffle Nightly 2024-03-02 (Mar 3, 2024)

  • What's Changed:
  • fix(deps): update wasm-bindgen by @renovate in #15385
  • fix(deps): update rust dependencies by @torokati44 in #15390
  • web: No longer set the web_sys_unstable_apis config variable by @torokati44 in #15387
  • fix(deps): update rust crate winit to 0.29.13 by @renovate in #15395
  • chore: Replace generational-arena with slotmap by @torokati44 in #15383
  • chore: Deduplicate the fluent-templates dependency by @torokati44 in #15396
  • avm2: Implement flash.media.ID3Info by @lvyitian in #14916
  • core: Improve placement of cursor when clicking in textbox by @MrCheeze in #15116

New in Ruffle Nightly 2024-03-02 (Mar 2, 2024)

  • What's Changed:
  • chore(deps): update node.js dependencies by @renovate in #15364
  • chore: Update translations by @github-actions in #15360
  • desktop: Update winit to 0.29.12 by @kjarosh in #15371
  • web: Don't panic on browsers without ReadableStreamDefaultController by @danielhjacobs in #15377
  • chore: Bump jpegxr and nellymoser-rs git references by @torokati44 in #15382
  • fix(deps): update rust dependencies by @torokati44 in #15374
  • web: Close sockets properly by @kjarosh in #15380
  • chore: Bump wgpu to 0.19.3, naga to 0.19.2 by @torokati44 in #15384

New in Ruffle Nightly 2024-02-29 (Feb 29, 2024)

  • What's Changed:
  • core: Implement lazy decoding of bitmaps by @Aaron1011 in #15270
  • core: Use latest fluent-templates master for reproducible builds by @Aaron1011 in #15280
  • desktop: Add socket tests and fix flush on close by @kjarosh in #15310
  • desktop: Introduce generic gamepad remapping support by @evilpie in #14568

New in Ruffle Nightly 2024-02-28 (Feb 28, 2024)

  • What's Changed:
  • desktop: chore: Update winit to 0.29.11 by @torokati44 in #15332
  • chore: Update translations by @github-actions in #15330
  • core,avm2: Make Timer.setDelay not change the timer ID by @torokati44 in #15316
  • ci: Try to speed up CI runs on Windows by @torokati44 in #15335

New in Ruffle Nightly 2024-02-23 (Feb 23, 2024)

  • What's Changed:
  • web: Include wasm file in docker builds as Mozilla say this is okay by @Dinnerbone in #15294
  • desktop: Prevent resource leak on reload by @kjarosh in #15282
  • nit: desktop/navigator: Fix a typo in a comment: ownerhsip -> ownership by @torokati44 in #15303

New in Ruffle Nightly 2024-02-22 (Feb 22, 2024)

  • ci: Extend the docker test to include diffing against normal builds by @Dinnerbone in #15291

New in Ruffle Nightly 2024-02-21 (Feb 21, 2024)

  • What's Changed:
  • chore: Run cargo update by @torokati44 in #15281
  • chore: Update translations by @github-actions in #15286
  • build(deps-dev): bump ip from 1.1.8 to 1.1.9 in /web by @dependabot in #15287

New in Ruffle Nightly 2024-02-20 (Feb 20, 2024)

  • What's Changed:
  • chore(deps): update node.js dependencies by @renovate in #15256
  • avm2: Always serialize as ECMAArray, which produces an AMF0 MixedArray by @evilpie in #15267
  • chore: Update translations by @github-actions in #15269
  • ci: Update get-current-time to v2.1.2 which uses Node 20 by @danielhjacobs in #15250
  • fix(deps): update rust dependencies by @renovate in #15271
  • web: Don't generate random name of wasm files in extension by @Dinnerbone in #15277

New in Ruffle Nightly 2024-02-19 (Feb 19, 2024)

  • Tests: Port remainder of shumway tests.

New in Ruffle Nightly 2024-02-17 (Feb 17, 2024)

  • What's Changed:
  • core: Only report socket connected just before we fire 'connect' by @Aaron1011 in #15223
  • ci: switch to macos-14 runner by @Dinnerbone in #15029
  • desktop: chore: Update egui to 0.26.2 by @torokati44 in #15215
  • ci: Split lints into their own job by @torokati44 in #15171
  • web: chore: Bump wasm-bindgen to 0.2.91 by @torokati44 in #15199
  • web: Fix version seal path by @Dinnerbone in #15238
  • avm2: Implement JS->AS3 Object deserialization by @adrian17 in #15234

New in Ruffle Nightly 2024-02-15 (Feb 16, 2024)

  • What's Changed:
  • ci: Remove Rust version from the web CI matrix - it was always stable by @torokati44 in #15217
  • ci: Fix failing visual tests by @Dinnerbone in #15233

New in Ruffle Nightly 2024-02-15 (Feb 15, 2024)

  • Avm2: Stub all flash.sampler methods by @evilpie in #15210

New in Ruffle Nightly 2024-02-13 (Feb 13, 2024)

  • What's Changed:
  • avm2: Parse data for flash.net.navigateToURL (close #13898) by @svitkin in #15129
  • web,ci: Recommend and test with Node.js 20 LTS and 21 stable by @torokati44 in #15140

New in Ruffle Nightly 2024-02-12 (Feb 12, 2024)

  • What's Changed:
  • chore: Update translations by @github-actions in #15178

New in Ruffle Nightly 2024-02-10 (Feb 10, 2024)

  • What's Changed:
  • chore: Update translations by @github-actions in #15160

New in Ruffle Nightly 2024-02-09 (Feb 9, 2024)

  • What's Changed:
  • avm2: Use playerglobals domain as parent for new ApplicationDomain() by @Aaron1011 in #15122
  • Deserialize AMF dictionary by @wsxarcher in #15169

New in Ruffle Nightly 2024-02-08 (Feb 8, 2024)

  • chore(deps): update node.js dependencies by @torokati44 in #15141
  • avm1: Make NetConnection.isConnected's stub more functional by @kmeisthax in #15071
  • Fix typo in readme by @Positron832Alt in #15124
  • avm2: Implement TextField::getLineText by @evilpie in #15055

New in Ruffle Nightly 2024-02-07 (Feb 7, 2024)

  • What's Changed:
  • avm2: Verify the URLRequest method by @evilpie in #15145

New in Ruffle Nightly 2024-02-06 (Feb 6, 2024)

  • chore(deps): update rust crate naga_oil to 0.13.0 by @renovate in #15126
  • fix(deps): update rust dependencies by @renovate in #15125
  • desktop: Update egui to 0.26.0 by @torokati44 in #15057
  • avm2: has_property should do proto.has_property instead of has_own_property by @evilpie in #15120
  • avm2: Fix in operator not handling attributes in XML object by @sleepycatcoding in #15119

New in Ruffle Nightly 2024-02-05 (Feb 5, 2024)

  • What's Changed:
  • github: Use full version for the mnao305/chrome-extension-upload action by @torokati44 in #15109
  • Fix clippy beta lint by @Aaron1011 in #15121
  • github: Generate AVM2 report as part of nightly release by @Aaron1011 in #15084
  • text: Add support for relative font sizes in HTML by @kjarosh in #15077
  • chore(deps): update node.js dependencies by @torokati44 in #15106
  • web: Remove npm version requirement by @Dinnerbone in #15123

New in Ruffle Nightly 2024-02-04 (Feb 4, 2024)

  • What's Changed:
  • debug_ui: Show ClassObject when clicking on domain class by @Aaron1011 in #14991
  • text: Make enter add a new line in multiline fields by @kjarosh in #15096
  • ci: Update chrome-extension-upload to v5 by @danielhjacobs in #15094
  • avm2: Implement toString function for class flash.events.TimerEvent by @TFSMads in #15100
  • chore: Add a .dockerignore file by @torokati44 in #15086

New in Ruffle Nightly 2024-02-03 (Feb 3, 2024)

  • What's Changed:
  • avm2: Add fast path for Value::abstract_lt-ing two integers by @Lord-McSweeney in #15050
  • github: Also exclude .git and tests/tests/swfs from reproducible-source.zip by @torokati44 in #15066
  • web: Explicit instruction how to use sudo for docker building by @evilpie in #15079

New in Ruffle Nightly 2024-02-02 (Feb 2, 2024)

  • What's Changed:
  • avm2: Integrate avm2 implementation.json generation into new stub-report crate by @Aaron1011 in #14882
  • core: Implement focusIn FocusEvent for AVM2 by @Lord-McSweeney in #14723
  • tests: Add test for focusIn FocusEvent on a TextField by @evilpie in #15051
  • avm1: Invalidate cacheAsBitmaps when using Color API by @Dinnerbone in #15054
  • chore(deps): update actions/upload-artifact action to v4 by @renovate in #15047
  • text: Advanced horizontal text controls for EditText by @kjarosh in #15027
  • Ignore bad version mark (sometimes used by obfuscators) (close #15006) by @wsxarcher in #15033
  • wgpu: Don't submit for every single BitmapData.draw() by @Dinnerbone in #15032

New in Ruffle Nightly 2024-02-01 (Feb 1, 2024)

  • What's Changed:
  • avm2: Stub flash.system::MessageChannel by @Lord-McSweeney in #15036
  • ci: Don't upload the Safari extension as artifact when building the web demo by @torokati44 in #15034
  • Matching AVM1 to AVM2 for the sake of consistency by @sombraguerrero in #15044

New in Ruffle Nightly 2024-01-31 (Jan 31, 2024)

  • What's Changed:
  • ci: Update workflows to use paths-filter v4 by @danielhjacobs in #15024
  • AVM2 verifier by @Lord-McSweeney in #14631
  • Fix GH saying Ruffle is written in AS by @Fancy2209 in #15004
  • fix(deps): update rust dependencies by @torokati44 in #14994
  • debug_ui: Display 'Movie' button on 'Class Info' panel by @Aaron1011 in #14992
  • avm2: Support dependent strings, small string optimizations by @adrian17 in #11876
  • chore: Update translations by @github-actions in #15030
  • ci: Update nightly release workflow to use v4 actions by @danielhjacobs in #15031

New in Ruffle Nightly 2024-01-30 (Jan 30, 2024)

  • What's Changed:
  • avm2: Make Math.random() more closely match Flash Player by @Aaron1011 in #14982
  • avm2: Convert invalid rectangle to zero rectangle in getBounds by @Aaron1011 in #14986

New in Ruffle Nightly 2024-01-29 (Jan 29, 2024)

  • avm2: Implement the remaining flash.net.FileReference properties by @evilpie in #14974
  • chore: Fix nightly Clippy lints by @Aaron1011 in #14983
  • Report OS as Windows instead of Linux for now by @Fancy2209 in #14985

New in Ruffle Nightly 2024-01-28 (Jan 28, 2024)

  • desktop: Fix context menu by @Dinnerbone in #14965
  • avm2: Avoid double lookup in setPropertyIsEnumerable by @adrian17 in #14973
  • wgpu: Some optimisations, some refactors, much less buffers by @Dinnerbone in #14919

New in Ruffle Nightly 2024-01-27 (Jan 27, 2024)

  • What's Changed:
  • Progressive download of video files by @kmeisthax in #14647
  • core: Ignore font style in default TextFormat for HTML fields by @kjarosh in #14924
  • web: Add allowFullScreen embed/object option (part of #4258) by @danielhjacobs in #14841
  • core: Improve HTML handling for EditText & add support for SWF 6,7 by @kjarosh in #14953
  • AVM1: Rewrite filter tests and fix a bunch of bugs by @moulins in #14921
  • tests: More improvements to make them runnable on web by @Dinnerbone in #14872
  • debug_ui: Do not render container as collapsible if it has no children by @sleepycatcoding in #14963
  • avm2: Only use embedded CFF fonts for TLF by @evilpie in #14964
  • desktop: Allow specifying WGPU instance flags from environment by @arthomnix in #14967
  • chore: Update translations by @github-actions in #14966
  • web: Temporary disable display_file_save_dialog to prevent panics by @evilpie in #14969

New in Ruffle Nightly 2024-01-26 (Jan 26, 2024)

  • What's Changed:
  • nit: Fix some minor capitalization mistakes by @Lord-McSweeney in #14937
  • avm2: Fix handling of Loader.loadBytes for images by @Aaron1011 in #14931
  • avm2: Partially implement FileReferenceList with a single FileReference by @evilpie in #14926
  • avm2: Don't forget to set the state in Avm2Button::set_state by @moulins in #14945
  • chore: Update translations by @github-actions in #14950
  • avm2: Add a bunch more constants by @torokati44 in #14829

New in Ruffle Nightly 2024-01-25 (Jan 25, 2024)

  • What's Changed:
  • render: Support PixelBender ByteArray/Vector. input/output by @Aaron1011 in #14302
  • web: Remove swfUrl from RufflePlayer for files loaded by data by @danielhjacobs in #14928
  • wgpu: Allow Stage3D texture upload where source is smaller than dest by @Aaron1011 in #14492
  • chore: Update translations by @github-actions in #14930

New in Ruffle Nightly 2024-01-24 (Jan 24, 2024)

  • What's Changed:
  • core: Display image load when using Loader.loadBytes by @Aaron1011 in #14867
  • swf: Parse string as Vec instead of String in SWF by @Aaron1011 in #14908
  • avm2: flash.system.Capabilities#playerType should return "Desktop" when the current runtime is AIR runtime(unless the swf is loaded by an HTML page) by @lvyitian in #14907
  • debug_ui: Add 'Show Domains' menu to view domains and classes by @Aaron1011 in #14672
  • chore: Update translations by @github-actions in #14906
  • avm2: Implement some of FileReference including browse/save by @evilpie in #14157
  • Use inner mutability instead of GcCell in Avm1Button and Avm2Button by @moulins in #14820
  • chore: Update translations by @github-actions in #14917

New in Ruffle Nightly 2024-01-23 (Jan 23, 2024)

  • What's Changed:
  • chore: Switch to wgpu 0.19.1 from git by @torokati44 in #14889
  • fix(deps): update rust dependencies by @renovate in #14891
  • chore: Run cargo update to bump patch versions in Cargo.lock by @sleepycatcoding in #14898
  • avm2: Implement Error.prototype.toString by @sleepycatcoding in #14897
  • avm2: Fix Error.toString regression by @sleepycatcoding in #14902
  • avm2: Stub flash.desktop.Clipboard by @evilpie in #14905

New in Ruffle Nightly 2024-01-22 (Jan 22, 2024)

  • chore: Update translations by @github-actions in #14864
  • web: Support DefineFont4 in fontSources by @evilpie in #14860
  • desktop: Change the default Japanese fonts by @qurage in #14877
  • avm2: Only lookup own properties in flash.net.getClassByAlias by @evilpie in #14879
  • Use supported_sample_count for Context3D sample count by @Aaron1011 in #14880
  • wgpu: Update wgpu and naga to 0.19 by @Dinnerbone in #14682
  • avm2: Stub getAtomIndexAtCharIndex by @cmdocmd in #14883
  • chore: Update translations by @github-actions in #14885

New in Ruffle Nightly 2024-01-21 (Jan 22, 2024)

  • avm2: Stub Stage colorCorrection and colorCorrectionSupport by @n0samu in #14854
  • core: Invalidate cached bitmap on state change in AVM2Button by @n0samu in #14856
  • swf: Show scaled value in swf::FixedN's Debug implementations by @moulins in #14839
  • Update vite to 5.0.12 in package.json by @tsunamistate in #14863
  • avm2: Stub XML::inScopeNamespaces by @cmdocmd in #14865

New in Ruffle Nightly 2024-01-20 (Jan 20, 2024)

  • What's Changed:
  • desktop: Support device font with a non-zero index by @evilpie in #14840
  • core: Implement DefineFont4 by @evilpie in #14749
  • chore: Update translations by @github-actions in #14847
  • chore(deps): update dependency vite to v5.0.12 [security] by @renovate in #14851

New in Ruffle Nightly 2024-01-19 (Jan 19, 2024)

  • What's Changed:
  • core: Make Player::mutate_with_update_context public by @torokati44 in #14808
  • tests: Don't set logger in test framework by @Dinnerbone in #14807
  • avm2: Assume we have the default public namespace when matching XML names by @evilpie in #14801
  • avm2: Fix possible overflow in address calculations by @adrian17 in #14827
  • chore: Update translations by @github-actions in #14828

New in Ruffle Nightly 2024-01-18 (Jan 18, 2024)

  • What's Changed:
  • avm2: Handle explicitly imported/used namespace for XML lookup by @evilpie in #14800
  • avm2: Don't hold GcCell read ref open for Loader.loadBytes by @Aaron1011 in #14790
  • web: Properly panic when loading invalid SWF files (fix #14665) by @danielhjacobs in #14715
  • nits: Fix a whole bunch of typos all over the place by @torokati44 in #14803
  • desktop: Fix doubling inputted characters by @kjarosh in #14802

New in Ruffle Nightly 2024-01-17 (Jan 17, 2024)

  • chore: Update rust dependencies by @torokati44 in #14772
  • avm2: Stub XML::namespaceDeclarations by @evilpie in #14767
  • avm1: Fix a mixed AVM regression by @Lord-McSweeney in #14764
  • avm2: Fix multiply with overflow in string_to_f64 by @zhenghaoz in #14427
  • desktop: Update winit to 0.29.10 and egui to 0.25.0 by @Dinnerbone in #14703
  • extension: Close popup.html when clicking "Open SWF Player" in Firefox by @Toad06 in #14635
  • wgpu: Add support for Stage3D anisotropic filtering by @Aaron1011 in #14494
  • avm2: Run most of Loader.loadBytes immediately by @Aaron1011 in #14671

New in Ruffle Nightly 2024-01-16 (Jan 16, 2024)

  • core: Improve caret blinking behavior by @kjarosh in #14748
  • ci: Track merged PRs in a project by @Dinnerbone in #14763
  • ci: Use right auth token for tracking merged PRs by @Dinnerbone in #14765
  • ci: Remove PR tracking action by @Dinnerbone in #14766
  • avm2: Stub Accelerometer.isSupported by @agdeneke in #14759
  • fix(deps): update wasm-bindgen by @renovate in #14754
  • avm2: Implement XML.setLocalName by @sleepycatcoding in #14750
  • chore: Update wasm-bindgen version references to 0.2.90 by @torokati44 in #14771
  • chore: Update translations by @github-actions in #14768

New in Ruffle Nightly 2024-01-15 (Jan 15, 2024)

  • What's Changed:
  • chore: Deny unknown crate sources by @torokati44 in #14730
  • avm2: Add weird parse-as-uint special case to Object keys by @Aaron1011 in #14721
  • avm2: Throw null param error in navigateToURL by @n0samu in #14736

New in Ruffle Nightly 2024-01-14 (Jan 14, 2024)

  • What's Changed:
  • Apply 'xml["@myattr"]' logic when setting/deleting properties by @Aaron1011 in #14643
  • avm2: Stub all remaining TextField methods and properties by @Aaron1011 in #14722
  • avm2: Cleanup: Make Domain::get_class not return a Result by @torokati44 in #14731
  • avm2: Add API versioning to DisplayObjectContainer by @torokati44 in #14732
  • Bump jpegxr dependency for wasm ABI bugfix by @Aaron1011 in #14738

New in Ruffle Nightly 2024-01-13 (Jan 13, 2024)

  • What's Changed:
  • web: Add special case for base="." by @n0samu in #14667
  • core: Provide a better fallback for Ming typefaces by @evilpie in #14718
  • avm2: Correctly handle @* in string_to_multiname by @sleepycatcoding in #14720

New in Ruffle Nightly 2024-01-12 (Jan 12, 2024)

  • What's Changed:
  • build(deps): bump follow-redirects from 1.15.2 to 1.15.4 in /web by @dependabot in #14688
  • avm2: Implement XML.normalize by @sleepycatcoding in #14689
  • render: Implement PixelBender Operation::Select (renamed from Loop) by @Aaron1011 in #14503
  • avm2: Stub TextField.getCharBoundaries by @Aaron1011 in #14694
  • avm2: Stub flash.text.engine.GraphicElement by @Aaron1011 in #14646
  • avm1: Add support for onSetFocus & onKillFocus by @kjarosh in #14676
  • core: Use sans instead of serif when missing a font by @evilpie in #14697
  • core: Font kerning is in points not pixels by @evilpie in #14700
  • core: Support F13..F24 keys by @Dinnerbone in #14699
  • core: Fix caret and selection rendering by @kjarosh in #14690
  • avm1,avm2: Implement TextField.restrict by @kjarosh in #14634

New in Ruffle Nightly 2024-01-11 (Jan 11, 2024)

  • What's Changed:
  • avm2: Improve Graphics.drawGraphicsData stubs by @Aaron1011 in #14506
  • core: Support Japanese font defaults by @Dinnerbone in #14692

New in Ruffle Nightly 2024-01-10 (Jan 10, 2024)

  • What's Changed:
  • web: Fix download link by @n0samu in #14662
  • core: Don't treat known aliases as default fonts before trying to load them as device fonts by @evilpie in #14677

New in Ruffle Nightly 2024-01-09 (Jan 9, 2024)

  • fix(deps): update rust dependencies by @renovate in #14656
  • docs: Update README to point to the new image locations by @danielhjacobs in #14661
  • Correctly handle zero-frame MovieClip by @Aaron1011 in #14659
  • extension: Bail if postMessage event has no data by @n0samu in #14666
  • Implement support for loading device fonts by @evilpie in #14535
  • chore: Update translations by @github-actions in #14669

New in Ruffle Nightly 2024-01-08 (Jan 8, 2024)

  • avm2: Stub TextField.getCharIndexAtPoint by @Aaron1011 in #14645
  • avm2: Stub flash.globalization.DateTimeFormatter by @n0samu in #14620
  • ci: Switch to cargo-nextest for running Rust tests by @torokati44 in #14461
  • avm2: Stub more TextField getLine methods by @evilpie in #14650
  • avm2: Throw correct errors in Graphics.[drawPath,drawGraphicsData] by @Aaron1011 in #14644
  • avm2: Improve handling of Stage3D profile by @Aaron1011 in #14497

New in Ruffle Nightly 2024-01-07 (Jan 7, 2024)

  • avm2: Improve XML attribute name handling by @evilpie in #14627
  • chore: Update translations by @github-actions in #14626
  • chore: Upgrade gc-arena to 0.5.0 by @torokati44 in #14616

New in Ruffle Nightly 2024-01-06 (Jan 6, 2024)

  • chore: Move lint configuration from .cargo/config.toml to Cargo.toml by @torokati44 in #14614
  • core: Fix non-ASCII characters input in EditText by @kjarosh in #14621

New in Ruffle Nightly 2024-01-05 (Jan 5, 2024)

  • What's Changed:
  • avm2: Reduce the size of Op on 64bit by @evilpie in #14603
  • avm2: Use correct null parameter error in registerClassAlias by @Lord-McSweeney in #14598

New in Ruffle Nightly 2024-01-04 (Jan 4, 2024)

  • What's Changed:
  • avm2: CDatas/Comments/ProcessingInstructions at the top level should be ignored in some cases by @Lord-McSweeney in #13106

New in Ruffle Nightly 2024-01-03 (Jan 3, 2024)

  • What's Changed:
  • avm2: Optimize the interpreter loop by @evilpie in #14496

New in Ruffle Nightly 2024-01-02 (Jan 2, 2024)

  • fix(deps): update rust dependencies by @renovate in #14567
  • chore(deps): update node.js dependencies by @renovate in #14566
  • fix(deps): update rust dependencies by @renovate in #14569
  • chore(deps): update dependency typedoc to ^0.25.5 by @renovate in #14571
  • fix(deps): update rust crate syn to 2.0.44 by @renovate in #14572

New in Ruffle Nightly 2024-01-01 (Jan 1, 2024)

  • What's Changed:
  • avm1: Don't allow for looking up with an empty name when children don't have an explicit name set by @Lord-McSweeney in #14463

New in Ruffle Nightly 2023-12-31 (Dec 31, 2023)

  • What's Changed:
  • web: Add playerRuntime option to config for air or flashPlayer by @danielhjacobs in #14534

New in Ruffle Nightly 2023-12-30 (Dec 30, 2023)

  • What's Changed:
  • avm2: Do not set dispatched flag if dispatcher does not have a listener by @sleepycatcoding in #14527
  • avm2: Properly set LoaderInfo.contentType from sniffed type by @Aaron1011 in #14504

New in Ruffle Nightly 2023-12-27 (Dec 27, 2023)

  • What's Changed:
  • chore: Remove obsolete lint allows by @torokati44 in #14521
  • avm2: Micro-optimize coerce_to_i32/u32 by @evilpie in #14490
  • avm2: Support more ElementFormat font options in TextBlock by @evilpie in #14489
  • chore: Run cargo update to bump patch versions in Cargo.lock by @torokati44 in #14520
  • avm2: Check the text.engine.FontDescription properties before setting by @evilpie in #14526

New in Ruffle Nightly 2023-12-24 (Dec 24, 2023)

  • What's Changed:
  • chore: Fix beta clippy lints by @torokati44 in #14488
  • chore: Update translations by @github-actions in #14480
  • avm2/core: Partially implement LocalConnection by @Lord-McSweeney in #14424

New in Ruffle Nightly 2023-12-23 (Dec 23, 2023)

  • What's Changed:
  • core: Some prep work for native font loading by @evilpie in #14481

New in Ruffle Nightly 2023-12-21 (Dec 21, 2023)

  • What's Changed:
  • avm1: String method fixes by @n0samu in #14474

New in Ruffle Nightly 2023-12-19 (Dec 19, 2023)

  • What's Changed:
  • desktop: Fix egui scaling by @n0samu in #14444
  • fix(deps): update rust dependencies by @renovate in #14443
  • core: Use i32 for font ascent and descent by @n0samu in #14445
  • avm2: Avoid marking interface method definitions with VM_INTERNAL by @Aaron1011 in #14449
  • chore: Update naga to 0.14.2, run cargo update by @torokati44 in #14460
  • chore: Update translations by @github-actions in #14459

New in Ruffle Nightly 2023-12-18 (Dec 18, 2023)

  • What's Changed:
  • avm2: Implement AIR playerglobal versioning by @Aaron1011 in #14166
  • avm2: Add missing property objectEncoding to SharedObject by @zhenghaoz in #14415
  • swf: Make avm2 Writer::write_op public by @friedkeenan in #14409
  • core/avm1: Improve some stubs by @Lord-McSweeney in #14420

New in Ruffle Nightly 2023-12-17 (Dec 17, 2023)

  • What's Changed:
  • naga-agal: Fix handling of sampler overrides by @Aaron1011 in #14164
  • web/extension: Correct the version used for the Firefox extension by @evilpie in #14418
  • core: More fixes for mixed AVM by @Lord-McSweeney in #14276

New in Ruffle Nightly 2023-12-16 (Dec 16, 2023)

  • What's Changed:
  • Build(deps): bump zerocopy from 0.7.30 to 0.7.31 by @dependabot in #14398
  • Tests/avm2: Exclude PixelBender and Scene3D visual tests on WARP by @torokati44 in #14393
  • Core: Improve spacing of device font letters (close #14185) by @MrCheeze in #14204
  • Web: Simplify the TS_NODE_COMPILER_OPTIONS value for mocha in core test by @torokati44 in #14292
  • Avm2: Remove ArrayObject to_string impl by @sleepycatcoding in #14410
  • Core: Fix mouse coords reported to ActionScript by @rogual in #14243

New in Ruffle Nightly 2023-12-15 (Dec 15, 2023)

  • What's Changed:
  • tests/avm2: Reduce the number of digits in Vector3D tests by @torokati44 in #14390
  • Update to wgpu 0.18, naga 0.14, naga_oil 0.11, egui 0.24.1 by @torokati44 in #13732
  • core: Clean up Timers::remove, remove Timer::is_alive by @torokati44 in #14352
  • avm2: Stub InteractiveObject needsSoftKeyboard and softKeyboardInputAreaOfInterest by @evilpie in #14397

New in Ruffle Nightly 2023-12-13 (Dec 13, 2023)

  • What's Changed:
  • chore: Update translations by @github-actions in #14377
  • avm1: Implemented textField.maxChars by @michiel2005 in #13661
  • chore: Add browserstack message to readme by @Dinnerbone in #14382

New in Ruffle Nightly 2023-12-12 (Dec 12, 2023)

  • What's Changed:
  • avm1: Support FLV date conversion by @mtc-mlx in #14347
  • Fix panic on Wayland by @bi4k8 in #14362
  • fix(deps): update rust crate bitstream-io to v2 by @renovate in #14365
  • fix(deps): update rust dependencies by @torokati44 in #14371

New in Ruffle Nightly 2023-12-11 (Dec 11, 2023)

  • What's Changed:
  • core/avm1: Stub NetConnection by @torokati44 in #14354

New in Ruffle Nightly 2023-12-10 (Dec 10, 2023)

  • What's Changed:
  • avm2: Correctly set the return type of AS defined native methods by @sleepycatcoding in #14351
  • web/extension: Lower minimum Firefox version on Android to 120 by @torokati44 in #14349
  • FLV Seek Fixes by @kmeisthax in #14339

New in Ruffle Nightly 2023-12-09 (Dec 9, 2023)

  • What's Changed:
  • chore(deps): update node.js dependencies by @renovate in #14262
  • avm2: Implement TextLine::textWidth and TextLine::textHeight by @evilpie in #14331
  • avm2: Stub flash.text.engine.FontDescription::isFontCompatible by @evilpie in #14330
  • wgpu: Fix overly strict assertion for setVertexBufferAt by @Aaron1011 in #14345
  • avm1: Correctly mark unloaded movies as unloaded instead of relying on clip depth by @Lord-McSweeney in #13889

New in Ruffle Nightly 2023-12-07 (Dec 7, 2023)

  • What's Changed:
  • build(deps-dev): bump vite from 5.0.2 to 5.0.5 in /web by @dependabot in #14323
  • chore(deps): update node.js dependencies by @torokati44 in #14290

New in Ruffle Nightly 2023-12-06 (Dec 6, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @torokati44 in #14313

New in Ruffle Nightly 2023-12-05 (Dec 5, 2023)

  • What's Changed:
  • fix(deps): update wasm-bindgen by @renovate in #14305
  • web/extension: Raise minimum Firefox version on Android to 121 by @torokati44 in #14278

New in Ruffle Nightly 2023-12-04 (Dec 4, 2023)

  • Avm2: Use explicitly wrapping integer arithmetic operations by @torokati44 in #14295
  • Chore: Update translations by @github-actions in #14301

New in Ruffle Nightly 2023-12-03 (Dec 3, 2023)

  • What's Changed:
  • chore: Update translations by @github-actions in #14270

New in Ruffle Nightly 2023-12-02 (Dec 2, 2023)

  • What's Changed:
  • chore(deps): update conda-incubator/setup-miniconda action to v3 by @renovate in #14263
  • web: Don't let video modal overflow RufflePlayer by @danielhjacobs in #14260
  • web: Fix the Firefox extension builder Dockerfile by @torokati44 in #14271

New in Ruffle Nightly 2023-12-01 (Dec 1, 2023)

  • What's Changed:
  • naga-agal: Zero-extend input vectors for cross-product by @Aaron1011 in #14139
  • core: Support mixed AVM by @Lord-McSweeney in #11005
  • core: Allow default fonts to use bold/italic fonts by @MrCheeze in #14205
  • avm2: Perform early allocation and exposing of SimpleButton object by @Aaron1011 in #14182

New in Ruffle Nightly 2023-11-30 (Nov 30, 2023)

  • What's Changed:
  • demo: Fix npm run demo by @n0samu in #14220
  • FLV's Strict Array type holds values, not key/value pairs. by @kmeisthax in #14184
  • chore: Bump wasm-bindgen to 0.2.89 (0.2.88 got yanked) by @torokati44 in #14219
  • chore: Bump tracing-tracy, deny tracy-client duplicates by @torokati44 in #14225
  • docs: Link to the new Chrome Web Store from README.md by @torokati44 in #14227
  • web: Mark the Firefox extension as compatible with Android upon AMO submission by @torokati44 in #14233
  • naga-agal: Fix using matrix opcodes with indirect source register by @Aaron1011 in #14141

New in Ruffle Nightly 2023-11-29 (Nov 29, 2023)

  • What's Changed:
  • web: Use CustomEvent instead of Event for load events so MooTools works by @danielhjacobs in #14215

New in Ruffle Nightly 2023-11-28 (Nov 28, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @torokati44 in #14188
  • demo: Wrap flex items onto mutliple lines at small screen sizes by @danielhjacobs in #14196

New in Ruffle Nightly 2023-11-27 (Nov 27, 2023)

  • What's Changed:
  • core: Add PlayerMode::{FlashPlayer, AIR} for Adobe AIR support by @Aaron1011 in #14159
  • core/audio: Preparations for SampleDataEvent work by @torokati44 in #14165
  • avm2: Copy data for async loadCompressedTextureFromByteArray by @Aaron1011 in #14140
  • ci: Fix releasing demo by @Dinnerbone in #14175

New in Ruffle Nightly 2023-11-26 (Nov 26, 2023)

  • What's Changed:
  • avm2: Remove dead init_display_object fn by @evilpie in #14153
  • avm2: Fix handling of public indices with nested iteration by @Aaron1011 in #14158
  • web: Rewrite demo to use React by @Dinnerbone in #14115
  • avm2: Version-gate JSON to SWFv13 and above by @Lord-McSweeney in #14161
  • core: Divide by 255 in blend_over calculation by @Aaron1011 in #14149
  • chore: Update translations by @github-actions in #14162
  • dekstop: Support quit and fullscreen fscommands by @Lord-McSweeney in #14163

New in Ruffle Nightly 2023-11-25 (Nov 25, 2023)

  • core: Allow Regular/Bold/Italic device fonts to be registered separately by @MrCheeze in #14083

New in Ruffle Nightly 2023-11-24 (Nov 24, 2023)

  • What's Changed:
  • desktop: Include file path in IO error message by @evilpie in #14113
  • avm2: Set RUNNING_CONSTRUCT_FRAME flag inside DisplayObject ctor by @Aaron1011 in #14121
  • desktop: Add window.location.href spoofing to the fake ExternalInterface by @evilpie in #14015
  • avm2: Implement QName enumeration by @sleepycatcoding in #14075
  • avm2: Implement URLLoaderDataFormat.VARIABLES by @Lord-McSweeney in #14044
  • avm2: Implement flash.system.Security pageDomain by @evilpie in #14054

New in Ruffle Nightly 2023-11-23 (Nov 23, 2023)

  • What's Changed:
  • demo: Fix styles that don't work on Safari by @danielhjacobs in #14112
  • demo: Fix positioning of info box so it appears next to ruffle-player by @danielhjacobs in #14116
  • chore: Update translations by @github-actions in #14102

New in Ruffle Nightly 2023-11-22 (Nov 22, 2023)

  • What's Changed:
  • avm2: Report ProgressEvent when a sound is loaded (close #8932) by @MrCheeze in #14081
  • core: Fix MorphShape inaccuracy on complex paths by @rogual in #14089
  • web: Convert demo to typescript and copy the new extension-player styling over by @Dinnerbone in #14093
  • README.md: Avoid _ showing between image links at the top of the document by @olleolleolle in #14085

New in Ruffle Nightly 2023-11-21 (Nov 21, 2023)

  • What's Changed:
  • avm2: Mark MovieClip as initialized in 'on_construction_complete' by @Aaron1011 in #14073
  • fix(deps): update rust dependencies by @renovate in #14078
  • fix(deps): update rust dependencies to v2 (major) by @renovate in #14080
  • core: fix lerp_twips sometimes being off-by-one due to FP error by @rogual in #14074

New in Ruffle Nightly 2023-11-20 (Nov 20, 2023)

  • What's Changed:
  • avm1: Copy Activation's local register set when running a catch by @Lord-McSweeney in #14069
  • avm2: Add Activation::caller_movie_or_root to default to root movie by @Lord-McSweeney in #14045

New in Ruffle Nightly 2023-11-17 (Nov 17, 2023)

  • What's Changed:
  • avm2: Make MouseEvent isRelatedPropertyInaccessible a getter/setter by @danielhjacobs in #14038
  • avm2: Add ContextMenu clipboard related properties by @danielhjacobs in #14037
  • avm2: Implement [[HasProperty]] for XMLList by @sleepycatcoding in #14026

New in Ruffle Nightly 2023-11-16 (Nov 16, 2023)

  • What's Changed:
  • demo/extension: Expand iPad check to work for iPadOS 13+ by @danielhjacobs in #14017

New in Ruffle Nightly 2023-11-14 (Nov 14, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @renovate in #13998
  • chore: Appease clippy-beta by @Dinnerbone in #14003
  • web: Fix enter key + add input tests by @Dinnerbone in #14005
  • docs: Make Readme.md reflect the current state of Ruffle by @Fancy2209 in #13956
  • avm2: TLF GroupElement improvements by @evilpie in #13834
  • tests: Use a virtual filesystem instead of std::fs by @Dinnerbone in #13991
  • chore: Update translations by @github-actions in #14008

New in Ruffle Nightly 2023-11-13 (Nov 13, 2023)

  • What's Changed:
  • avm2: Add stub for Graphics uvt parameter by @Aaron1011 in #13976
  • avm2: Add AccessibilityImplementation.accDoDefaultAction by @Lord-McSweeney in #13975
  • desktop: Show ruffle logo in about dialog by @Dinnerbone in #13970
  • amv2: Simplify XmlObject get_enumerant_name by @evilpie in #13989
  • avm2: Improve E4XNode::matches_name by @Aaron1011 in #13966
  • nits: Typo fixes by @torokati44 in #13993

New in Ruffle Nightly 2023-11-12 (Nov 12, 2023)

  • What's Changed:
  • avm2: Correctness fixes to AMF serialization and ByteArray object r/w by @Lord-McSweeney in #13537
  • avm2: Small TLF fixes by @Lord-McSweeney in #13957
  • chore: Update ahash and self_cell by @Aaron1011 in #13969
  • avm2: Use 'has_own_property' to check for prop in 'resolve_definition' by @Aaron1011 in #13968

New in Ruffle Nightly 2023-11-11 (Nov 11, 2023)

  • What's Changed:
  • avm2: Run partial frame during button construction by @Aaron1011 in #12386
  • Suport uploading ATFTextureData::CompressedRawAlpha by @Aaron1011 in #13798
  • avm2: Use class aliases to serialize Vector type by @Aaron1011 in #13940
  • chore: Remove leftover println! by @Lord-McSweeney in #13941
  • Update flash-lso by @Lord-McSweeney in #13949
  • tests: Refactor test framework to be render agnostic, and support N amount of renderers at once by @Dinnerbone in #13925
  • core: Don't invalidate when setting filters to the same value by @Dinnerbone in #13950
  • chore: Update translations by @github-actions in #13953
  • avm2: Support enumeration for XML objects by @sleepycatcoding in #13954
  • avm2: Re-use same AMFValue for the same Object ptr by @Aaron1011 in #13955
  • avm2: DataEvent fixes by @Lord-McSweeney in #13948

New in Ruffle Nightly 2023-11-10 (Nov 10, 2023)

  • What's Changed:
  • avm2: Implement NetConnection when connecting to Flash Remoting (HTTP/HTTPS) by @Dinnerbone in #13856
  • web: Add credentialAllowList config option by @Dinnerbone in #13894
  • avm2: Basic TLF support by @Lord-McSweeney in #13226
  • avm2: Implement namespace versioning by @Aaron1011 in #12967
  • Use VM_INTERNAL api version in helper methods by @Aaron1011 in #13930
  • avm2: Work on AMF3 custom object serialization by @Aaron1011 in #11971
  • chore: Update flash-lso by @Dinnerbone in #13932
  • render: Reset mask_index_count in ShapeTessellator::flush_draw by @Lord-McSweeney in #13877
  • core: Fix formatting texts when they start with any amount of
  • s by @Dinnerbone in #13860
  • core: Fix behaviour of set_width and set_height on text with AutoSize enabled by @Deepfriedice in #13923
  • core,avm1,avm2: Stub 9-slice scaling (scale9Grid) by @torokati44 in #13835
  • tests: Stop ignoring shumway's acid_color_0 test by @danielhjacobs in #13933
  • chore(deps): update dependency chromedriver to v119 [security] by @renovate in #13936

New in Ruffle Nightly 2023-11-09 (Nov 9, 2023)

  • What's Changed:
  • tests: Document log_fetch option by @Dinnerbone in #13909
  • web: Fix Ruffle configuration not working properly for Polyfill elements and in the extension player by @Korne127 in #13286

New in Ruffle Nightly 2023-11-08 (Nov 8, 2023)

  • What's Changed:
  • fix(deps): update wasm-bindgen by @renovate in #13880
  • chore: Update translations by @github-actions in #13879
  • chore: Add 'content location' as a required field to issue reports by @Dinnerbone in #13858
  • avm2: Fix two bugs in XML/XMLList set_property_local by @evilpie in #13871
  • avm2: Small XML fixes by @sleepycatcoding in #13870

New in Ruffle Nightly 2023-11-05 (Nov 5, 2023)

  • avm2: XMLNode is_ kind helper methods by @evilpie in #13792

New in Ruffle Nightly 2023-11-04 (Nov 4, 2023)

  • What's Changed:
  • avm2: Don't add ClassDefinition to AMF0 objects by @Dinnerbone in #13846
  • ci: Test that the Dockerfile in web is able to build the browser extensions by @torokati44 in #13735
  • avm1: Partially implement FileReference by @CUB3D in #7596
  • avm2: Remove default width and height values from BitmapData ctor by @torokati44 in #13859
  • web: Extension UI improvements by @WumboSpasm in #13473

New in Ruffle Nightly 2023-11-03 (Nov 3, 2023)

  • What's Changed:
  • avm2: Implement XML.setChildren by @evilpie in #13831

New in Ruffle Nightly 2023-11-02 (Nov 2, 2023)

  • What's Changed:
  • core: Remove unused exports (fix nightly warnings) by @Aaron1011 in #13812
  • chore(deps): update node.js dependencies by @renovate in #13809
  • chore(deps): update actions/setup-node action to v4 by @renovate in #13810
  • avm2: Allow assigning XML objects without a name (eg. text) by @evilpie in #13818

New in Ruffle Nightly 2023-11-01 (Nov 1, 2023)

  • fix(deps): update rust dependencies by @renovate in #13785

New in Ruffle Nightly 2023-10-31 (Oct 31, 2023)

  • What's Changed:
  • avm2: Fix E4X [[Replace]] implementation bug by @sleepycatcoding in #13783
  • avm2: Implement various flash.xml methods by @evilpie in #13778
  • web: Add defaultFonts and fontSources config options by @Dinnerbone in #13604
  • avm2: Implement Font.enumerateFonts and Font.registerFont by @Dinnerbone in #13691

New in Ruffle Nightly 2023-10-30 (Oct 30, 2023)

  • What's Changed:
  • wgpu: Round down Context3D sample count to nearest power of 2 by @Aaron1011 in #13762
  • avm2: Correctly set caller_movie in Activation::from_script by @Lord-McSweeney in #13768
  • swf: Fixed writing various tags correctly by @Dinnerbone in #13745
  • avm2: Fix return value of SharedObject.flush by @n0samu in #13772
  • avm2: Add SWFv21 and above XML special case by @sleepycatcoding in #13756

New in Ruffle Nightly 2023-10-29 (Oct 29, 2023)

  • What's Changed:
  • web: Clean up nonsensical feature setup of the ruffle_core dependency by @torokati44 in #13752
  • core,web: Replace instant with web-time by @torokati44 in #13750
  • chore: Add --locked to all cargo build invocations by @torokati44 in #13753
  • avm2: Reimplement XML.appendChild in terms of [[Get]] and [[Put]] by @evilpie in #13677
  • avm2: Use RawTable to implement 'public index' iteration by @Aaron1011 in #12470
  • avm2: Stub undocumented XML notification functions by @evilpie in #13760
  • avm2: Add UTF-16 BOM handling to ByteArray.toString by @Aaron1011 in #13764

New in Ruffle Nightly 2023-10-28 (Oct 28, 2023)

  • What's Changed:
  • Update the Dockerfile for building the browser extensions by @torokati44 in #13733
  • nit: Fix tool name in error message of extension build by @torokati44 in #13744
  • swf: Fix writing of a DefineButton2 with zero actions by @sleepycatcoding in #13742
  • web: Switch click and pointer events to act on element and not window by @danielhjacobs in #13725
  • avm2: Add target_dirty flag and use it to reevaluate target object by @sleepycatcoding in #13678
  • chore(deps): update node.js dependencies by @renovate in #13747

New in Ruffle Nightly 2023-10-27 (Oct 27, 2023)

  • avm2: Add AIR flash.system::ImageDecodingPolicy by @evilpie in #13715
  • web: Check navigator.clipboard exists before using it by @danielhjacobs in #13723
  • avm1: implemented Key.is toggled by @michiel2005 in #13513
  • chore: Update translations by @github-actions in #13728

New in Ruffle Nightly 2023-10-26 (Oct 26, 2023)

  • What's Changed:
  • web: Make ruffle-player inherit pointer-events from parent by @danielhjacobs in #13712

New in Ruffle Nightly 2023-10-25 (Oct 25, 2023)

  • What's Changed:
  • ci: Fix edge publishing by @Dinnerbone in #13699

New in Ruffle Nightly 2023-10-24 (Oct 24, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @renovate in #13680
  • chore: Update translations by @github-actions in #13659
  • fix(deps): update rust crate async-io to v2 by @renovate in #13682
  • ci: Set up cargo-deny by @torokati44 in #13576
  • ci: Release nightlies automatically to Edge by @Dinnerbone in #13689
  • avm2: Throw error 1010 when null/undefined is given to name_to_multiname by @sleepycatcoding in #13660
  • avm2: Implement XMLList.parent by @sleepycatcoding in #13674
  • render: Add support for Context3DTextureFormat.COMPRESSED_ALPHA by @Aaron1011 in #13626
  • avm2: Implement DisplayObjectContainer.getObjectsUnderPoint by @Aaron1011 in #11970
  • avm2: Fix setting frontAndBack culling by @Aaron1011 in #13693

New in Ruffle Nightly 2023-10-23 (Oct 23, 2023)

  • Avm2: Fix ifstricteq and ifstrictne comparisons by @sleepycatcoding in #13662
  • Core/avm2: Implement TextEvent.TEXT_INPUT by @Lord-McSweeney in #13532
  • Avm2: XML objects must support lookups like "@attr" by @evilpie in #12770
  • Avm2: Fix incorrect XMLList method signatures by @sleepycatcoding in #13675

New in Ruffle Nightly 2023-10-22 (Oct 22, 2023)

  • What's Changed:
  • avm2: Throw ArgumentError when calling function with wrong arg count by @Aaron1011 in #12242
  • avm2: Misc. fixes/changes by @Lord-McSweeney in #13628

New in Ruffle Nightly 2023-10-21 (Oct 21, 2023)

  • What's Changed:
  • core: Use correct embedded font lookup order by @Dinnerbone in #13615
  • web: Remove a whole bunch of internal stuff from public API + documentation, and simplify loading a bit by @Dinnerbone in #13605
  • avm2: Replace culling panic messages with stub messages by @sleepycatcoding in #13631
  • chore: Update translations by @github-actions in #13625

New in Ruffle Nightly 2023-10-20 (Oct 20, 2023)

  • What's Changed:
  • avm2: Implement QName call handler by @sleepycatcoding in #13608
  • avm2: Fix XML/XMLList call handlers by @sleepycatcoding in #13616

New in Ruffle Nightly 2023-10-19 (Oct 19, 2023)

  • Avm2: Don't stop root movie clip, even if it doesn't extend MovieClip by @Aaron1011 in #13595

New in Ruffle Nightly 2023-10-18 (Oct 18, 2023)

  • What's Changed:
  • core: Switch dasp from a git revision to v0.11.0 by @torokati44 in #13591
  • chore: Update translations by @github-actions in #13593

New in Ruffle Nightly 2023-10-17 (Oct 17, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @renovate in #13565
  • avm1: Store childNodes on the node itself by @adrian17 in #13319

New in Ruffle Nightly 2023-10-16 (Oct 16, 2023)

  • What's Changed:
  • web: Support for Sockets with WebSocket by @sleepycatcoding in #13094
  • ci: Don't run image tests on macOS by @Dinnerbone in #13556
  • core: Font refactoring to allow backends to provide device fonts by @Dinnerbone in #13361
  • web: Make jpegxr optional on web but enabled by default by CI by @Dinnerbone in #13557
  • chore: Update translations by @github-actions in #13551
  • nit: Clean up Cargo.toml files slightly (remove unnecessary version = maps) by @torokati44 in #13560
  • Switch back to the main wgpu repo by @torokati44 in #13561

New in Ruffle Nightly 2023-10-14 (Oct 14, 2023)

  • avm2: Move top-level functions to Actionscript by @Lord-McSweeney in #13299

New in Ruffle Nightly 2023-10-13 (Oct 13, 2023)

  • chore: Update translations by @github-actions in #13528

New in Ruffle Nightly 2023-10-12 (Oct 12, 2023)

  • What's Changed:
  • FLV Seeking by @kmeisthax in #13168
  • chore: Update translations by @github-actions in #13503

New in Ruffle Nightly 2023-10-11 (Oct 11, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @torokati44 in #13487
  • renovate: Include winit, egui-winit, and raw-window-handle in the wgpu dep group by @torokati44 in #13488

New in Ruffle Nightly 2023-10-10 (Oct 10, 2023)

  • What's Changed:
  • chore: Update translations by @github-actions in #13482
  • avm2: Fix missing stub imports in TextRenderer.as by @Dinnerbone in #13484
  • avm2: Improve XMLList set_local_property by @sleepycatcoding in #13255
  • core,desktop: Switch to egui v0.23.0 by @torokati44 in #13486
  • avm2: Throw ArgumentError when trying to construct new Worker() by @Lord-McSweeney in #13442

New in Ruffle Nightly 2023-10-09 (Oct 9, 2023)

  • Swf: Fix writing of an all-zeros curve ShapeRecord by @adrian17 in #13350

New in Ruffle Nightly 2023-10-08 (Oct 8, 2023)

  • What's Changed:
  • avm2: Fix KeyboardEvent clone by @sleepycatcoding in #13447
  • chore: Update translations by @github-actions in #13457
  • avm2: Use the localName in XMLDocument::_convertXmlNode by @evilpie in #13402
  • avm2: Implement SharedObject.setProperty by @Lord-McSweeney in #13451

New in Ruffle Nightly 2023-10-06 (Oct 6, 2023)

  • What's Changed:
  • nagal-agal: Fix detection of writing a scalar to a destination by @Aaron1011 in #13429
  • avm2: Run DoAbc/DoAbc2/SymbolClass as part of their frame by @Aaron1011 in #13389
  • avm2: Stub Matrix3D.pointAt by @Aaron1011 in #13432
  • wgpu: Correctly set format when rendering to Stage3D texture by @Aaron1011 in #13428
  • naga-agal: Stub anisotropic filters in opcodes by @Aaron1011 in #13430
  • avm2: Implement some obscure SWFv9 XML behavior by @sleepycatcoding in #13383
  • avm2: Fix handling of XMLList when set as attribute value by @sleepycatcoding in #13380
  • chore: Update translations by @github-actions in #13439
  • avm2: Implement BitmapData.copyPixelsToByteArray by @Aaron1011 in #13431

New in Ruffle Nightly 2023-10-05 (Oct 5, 2023)

  • What's Changed:
  • chore(deps): update rust crate wgpu to 0.17.1 by @renovate in #13396
  • Revert #13256 by @adrian17 in #13434
  • chore: Update rust dependencies by @torokati44 in #13433

New in Ruffle Nightly 2023-10-04 (Oct 4, 2023)

  • Web: As appropriate use embed height mentioned in Mozilla bug 810082 c65 by @danielhjacobs in #13256
  • Make jpegxr more optional by @sleepycatcoding in #13404
  • Chore: Update translations by @github-actions in #13420
  • Build(deps-dev): bump postcss from 8.4.27 to 8.4.31 in /web by @dependabot in #13419
  • Render: Implement Context3DTextureFormat::RgbaHalfFloat by @Aaron1011 in #13407

New in Ruffle Nightly 2023-10-03 (Oct 3, 2023)

  • What's Changed:
  • chore(deps): update node.js dependencies by @renovate in #13384
  • chore(deps): update dependency chromedriver to v117 by @renovate in #13386
  • web: Display a pop-up about hardware acceleration when it's disabled by @danielhjacobs in #13357
  • chore: Update translations by @github-actions in #13405
  • desktop: Handle cookies and Content-Type for HTTP requests by @Aaron1011 in #13392

New in Ruffle Nightly 2023-10-02 (Oct 2, 2023)

  • render: Fix incorrectly reading U24 in ATF parsing by @Aaron1011 in #13377
  • avm2: Implement Sound.loadCompressedDataFromByteArray by @Aaron1011 in #13382
  • chore(deps): update actions/checkout action to v4 by @renovate in #13385
  • avm2: Namespace improvements by @evilpie in #13284
  • chore: Update translations by @github-actions in #13395

New in Ruffle Nightly 2023-10-01 (Oct 1, 2023)

  • What's Changed:
  • Fix BitmapData.clone accidentally re-using GPU texture by @Aaron1011 in #13368
  • naga-pixelbender: Implement Opcode::LogicalAnd by @Aaron1011 in #13375
  • avm2: Correctly fire textureReady event for async Texture uploads by @Lord-McSweeney in #13372
  • render: Disable wgpu unused shader output check when possible by @Aaron1011 in #13379
  • naga-agal: Fix Opcode::Rcp implementation by @Aaron1011 in #13378

New in Ruffle Nightly 2023-09-30 (Sep 30, 2023)

  • What's Changed:
  • chore: Update translations by @github-actions in #13352
  • core: Place jpegxr texture support behind feature flag by @sleepycatcoding in #13348

New in Ruffle Nightly 2023-09-29 (Sep 29, 2023)

  • What's Changed:
  • avm2: Add support for Stage3D bytearray/compressed textures by @Aaron1011 in #13180

New in Ruffle Nightly 2023-09-26 (Sep 26, 2023)

  • fix(deps): update rust dependencies by @renovate in #13307

New in Ruffle Nightly 2023-09-25 (Sep 25, 2023)

  • What's Changed:
  • avm2: Minor fix to string_wrapping_index and String.substr by @Lord-McSweeney in #13212
  • chore: Update translations by @github-actions in #13288
  • wgpu: Rename DepthBuffer to StencilBuffer and stop providing depth_ops by @Aaron1011 in #13302

New in Ruffle Nightly 2023-09-23 (Sep 23, 2023)

  • avm2: Implement support for indexes in xml.child() by @evilpie in #12464

New in Ruffle Nightly 2023-09-22 (Sep 22, 2023)

  • avm2: Support node namespace in XML.namespace by @evilpie in #13179

New in Ruffle Nightly 2023-09-20 (Sep 20, 2023)

  • What's Changed:
  • web: Only re-run polyfill when embed or object added to DOM by @danielhjacobs in #13237
  • chore: Update translations by @github-actions in #13252

New in Ruffle Nightly 2023-09-19 (Sep 19, 2023)

  • What's Changed:
  • web: Fix deletion order of dynamicStyles rules by @danielhjacobs in #13235

New in Ruffle Nightly 2023-09-18 (Sep 18, 2023)

  • What's Changed:
  • avm2: Support Error #1089 by @Lord-McSweeney in #13209
  • avm2: Namespace improvements by @Lord-McSweeney in #13214
  • chore: Update translations by @github-actions in #13202
  • fix(deps): update rust dependencies by @renovate in #13139
  • chore: Update translations by @github-actions in #13224

New in Ruffle Nightly 2023-09-17 (Sep 17, 2023)

  • avm2: Minor Video improvements by @Lord-McSweeney in #13213

New in Ruffle Nightly 2023-09-16 (Sep 16, 2023)

  • What's Changed:
  • avm2: Small XML code cleanup by @sleepycatcoding in #13195

New in Ruffle Nightly 2023-09-15 (Sep 15, 2023)

  • What's Changed:
  • avm2: Improve XML set_property_local implementation by @sleepycatcoding in #13041
  • web: Add width, height, and type to RufflePlayer (fix #13176) by @danielhjacobs in #13177
  • chore: Update translations by @github-actions in #13101

New in Ruffle Nightly 2023-09-14 (Sep 14, 2023)

  • What's Changed:
  • desktop: Change "Open URL Mode" to "Open Links" by @Positron832Alt in #13099
  • avm2: Coerce value in set slot opcode by @sleepycatcoding in #13165
  • core: fix typo in movie_clip.rs by @eltociear in #13156

New in Ruffle Nightly 2023-09-12 (Sep 12, 2023)

  • What's Changed:
  • avm2: Fix a stub message by @Lord-McSweeney in #13140

New in Ruffle Nightly 2023-09-09 (Sep 9, 2023)

  • What's Changed:
  • avm2: Fix a RangeError message by @n0samu in #13107
  • web: Don't show context menu when any modal is open (fix #13096) by @danielhjacobs in #13115
  • avm2: Fix avmplus.describeTypeJSON bugs and add test by @Aaron1011 in #13118
  • core: Various small Font and Glyph refactors by @Dinnerbone in #12955

New in Ruffle Nightly 2023-09-08 (Sep 8, 2023)

  • What's Changed:
  • CI: Lighter ci on windows and mac by @adrian17 in #13087
  • avm2: Implement XML.setName by @Lord-McSweeney in #12979
  • render: Bump wgpu to 0.17 and naga to 0.13 by @Aaron1011 in #12410
  • core: Convert two unused doc comments to normal comments by @Aaron1011 in #13103

New in Ruffle Nightly 2023-09-07 (Sep 7, 2023)

  • What's Changed:
  • chore: Update translations by @github-actions in #13078
  • avm2: Implement isXMLName by @sleepycatcoding in #12993
  • avm2: Implement Array.insertAt by @Lord-McSweeney in #13069
  • avm2: Implement avmplus.describeTypeJSON and use it for describeType by @Aaron1011 in #13071
  • chore: Update translations by @github-actions in #13088
  • core: Add volume controls to desktop and web by @Korne127 in #12798
  • avm2: Implement XML.prependChild by @sleepycatcoding in #13089

New in Ruffle Nightly 2023-09-06 (Sep 6, 2023)

  • What's Changed:
  • avm2: Remove unnecessary '&mut self' from Object methods by @Aaron1011 in #13072

New in Ruffle Nightly 2023-09-05 (Sep 5, 2023)

  • What's Changed:
  • fix(deps): update rust dependencies by @renovate in #13055

New in Ruffle Nightly 2023-09-03 (Sep 3, 2023)

  • What's Changed:
  • chore(deps): update npm to v10 by @renovate in #13034
  • chore(deps): update node.js dependencies by @renovate in #13033
  • chore: Update translations by @github-actions in #13031

New in Ruffle Nightly 2023-09-01 (Sep 1, 2023)

  • avm2: Pass the movie of a TranslationUnit into Method, and then into Activation-s by @Lord-McSweeney in #12885

New in Ruffle Nightly 2023-08-31 (Aug 31, 2023)

  • What's Changed:
  • avm2: Call Sound.load in constructor when passed a URLRequest by @Aaron1011 in #11972
  • avm2: Fix context parameter retrieval for Sound.load by @danielhjacobs in #13015
  • tests: Add test for avm2 Sound constructor with URLRequest parameter by @danielhjacobs in #13005
  • naga-pixelbender: Stub out Opcode::Loop by @Aaron1011 in #12977
  • chore: Update translations by @github-actions in #13008

New in Ruffle Nightly 2023-08-29 (Aug 29, 2023)

  • What's Changed:
  • avm2: Fix XML/XMLDocument ignoreWhite handling for cdata by @Aaron1011 in #12980
  • avm2: Log an error when a symbol class lookup fails by @Aaron1011 in #12978
  • fix(deps): update rust dependencies by @renovate in #12983
  • wgpu: Disable Context3D.setRenderToTexture MSAA on web by @Aaron1011 in #12982
  • tests: Exclude WARP from running acid_large, and allow acid_image and acid_gradient_* again by @torokati44 in #12995
  • avm2: implement XML.insertChildBefore, XML.insertChildAfter and XML.replace by @sleepycatcoding in #12966
  • avm1: Set target clip to None if target is an undefined object by @agdeneke in #12956

New in Ruffle Nightly 2023-08-28 (Aug 28, 2023)

  • What's Changed:
  • tests: Exclude WARP from running the acid_gradient_1 visual test ported from Shumway by @torokati44 in #12970
  • wgpu: Bail out early when trying to set empty program constants by @Aaron1011 in #12976
  • render: Add DrawCommand::CubicCurveTo by @Dinnerbone in #12946
  • avm2: Handle child being removing from Loader by @Aaron1011 in #12975
  • avm2: Preserve attribute flag when filling lazy multiname with QName by @sleepycatcoding in #12981

New in Ruffle Nightly 2023-08-27 (Aug 27, 2023)

  • web: Don't try to enter fullscreen if already in fullscreen & vice versa by @n0samu in #12954
  • video/vp6: Bump nihav-vp6 crate git refs by @torokati44 in #12952
  • core: Refactor away some GcCells by @moulins in #12945
  • extension: Fix some minor issues by @n0samu in #12917
  • avm2: Throw TypeError for null argument in TextField string property setters by @n0samu in #12888
  • avm2: partially implement Graphics.drawTriangles and drawGraphicsData by @SuchAFuriousDeath in #12559
  • avm2: Various correctness improvements to Number, int, and uint by @Lord-McSweeney in #12847
  • ci: Fix paths filter by @n0samu in #12958
  • web: Remove all occurences of innerHTML (except in test files) by @danielhjacobs in #12937
  • video,chore: Bump h263-rs git refs (and update Cargo.lock fully while there) by @torokati44 in #12962
  • chore: Update translations by @github-actions in #12965

New in Ruffle Nightly 2023-08-26 (Aug 26, 2023)

  • What's Changed:
  • avm2: XML/XMLList is converted to a string when set as attribute value by @sleepycatcoding in #12941
  • chore: Update translations by @github-actions in #12940
  • extension: Register listeners synchronously at top level of service worker by @n0samu in #12915
  • chore: Update translations by @github-actions in #12951
  • extension: Persist content script registration across sessions by @n0samu in #12953

New in Ruffle Nightly 2023-08-24 (Aug 24, 2023)

  • What's Changed:
  • FLV audio +Buffer refactor by @kmeisthax in #12091
  • chore: Update translations by @github-actions in #12927

New in Ruffle Nightly 2023-08-23 (Aug 23, 2023)

  • What's Changed:
  • chore: Appease beta Clippy by @sleepycatcoding in #12896
  • avm2: Implement XML pretty printing by @sleepycatcoding in #12895
  • avm1: Unescape + to space by @n0samu in #12894
  • avm1: Fix XML=>String coercion mangling non-ascii chars by @n0samu in #12893
  • extension: Fix-ups for extension player page by @danielhjacobs in #12873
  • web: Make open-in-new-tab open the local player directly by @Dinnerbone in #12835
  • avm2: getStackTrace() returns null when the stack trace is unavailable by @n0samu in #12886
  • extension: Remove unnecessary lambda functions by @danielhjacobs in #12904
  • extension: Fix check for scripting permission by @danielhjacobs in #12876
  • chore: Update translations by @github-actions in #12905

New in Ruffle Nightly 2023-08-22 (Aug 22, 2023)

  • fix(deps): update rust dependencies by @renovate in #12861
  • chore: Update translations by @github-actions in #12878

New in Ruffle Nightly 2023-08-21 (Aug 21, 2023)

  • What's Changed:
  • tests: Exclude WARP from running the acid_gradient_2 visual test (ported from Shumway) by @torokati44 in #12853
  • extension: Make the player page a local Ruffle demo by @danielhjacobs in #12836
  • core: Implement links in EditTexts, including AVM1 asfunction: and AVM2 event: links by @Dinnerbone in #12812

New in Ruffle Nightly 2023-08-20 (Aug 20, 2023)

  • What's Changed:
  • web: Add short_name for extension by @Dinnerbone in #12839
  • chore(deps): update node.js dependencies (major) by @renovate in #12834
  • avm2: More lenient SWF version check for invalid frame label behavior by @n0samu in #12821
  • avm1: Pass flashvars in loadMovie and MovieClipLoader by @n0samu in #12819
  • avm1: Fix regressions caused by unloaded MovieClip state by @Korne127 in #12656
  • Renovate config migration, un-ignore tests by @torokati44 in #12848

New in Ruffle Nightly 2023-08-18 (Aug 18, 2023)

  • What's Changed:
  • web: Remove webRequest permission from chrome extension by @Dinnerbone in #12787
  • tests: Add failing test for queued gotos in AVM2 framescripts by @n0samu in #12807
  • avm2: nextScene() and prevScene() should fall back to current scene by @n0samu in #12804
  • chore: Update translations by @github-actions in #12813

New in Ruffle Nightly 2023-08-17 (Aug 17, 2023)

  • What's Changed:
  • core: Replace usages of MutationContext with &Mutation by @sleepycatcoding in #12784
  • core: Fix rendering masks + scrollRects when cacheAsBitmap by @Dinnerbone in #12743

New in Ruffle Nightly 2023-08-16 (Aug 16, 2023)

  • What's Changed:
  • tests: Include test name in error context by @Aaron1011 in #12772

New in Ruffle Nightly 2023-08-15 (Aug 15, 2023)

  • What's Changed:
  • avm2: Limited XML namespace support by @evilpie in #12540
  • web: Remove ruffle extension detection plugin by @Dinnerbone in #12744
  • web: Update to manifest v3 where supported (Chrome/Edge) by @Dinnerbone in #12717
  • chore(deps): lock file maintenance rust dependencies by @torokati44 in #12771
  • chore: Update translations by @github-actions in #12769

New in Ruffle Nightly 2023-08-14 (Aug 14, 2023)

  • Core: Fix avm2 button bounding box when using scroll rects by @Dinnerbone in #12710
  • Avm1: Hook up Button.cacheAsBitmap and TextField.filters by @Dinnerbone in #12712
  • Chore: Update translations by @github-actions in #12716

New in Ruffle Nightly 2023-08-13 (Aug 13, 2023)

  • What's Changed:
  • core: Inform Bitmaps to invalidate, if their backing BitmapDatas change by @Dinnerbone in #12676
  • core: Fix filters being cut off when nested inside another cacheAsBitmap by @Dinnerbone in #12690
  • tests: Update displacement_map expected output. by @torokati44 in #12705
  • tests: Rename some files because windows is dumb and they're too long by @Dinnerbone in #12707
  • avm2: Implement a few XML/XMLlist methods by @Dinnerbone in #12524

New in Ruffle Nightly 2023-08-12 (Aug 12, 2023)

  • What's Changed:
  • core: Use root movie URL as base for relative NetStream URLs by @n0samu in #12653
  • chore: Update translations by @github-actions in #12662
  • core: Better handle scroll_rect and/or masks with cacheAsBitmap by @Dinnerbone in #12664
  • tests: Fix running tests without img_tests feature by @Dinnerbone in #12689
  • web: Include the version in the new ruffle instance console message by @evilpie in #12678
  • chore: Update translations by @github-actions in #12693

New in Ruffle Nightly 2023-08-10 (Aug 10, 2023)

  • What's Changed:
  • extension: Add exclusions for Tuxedo Computers and Taobao by @n0samu in #12650
  • tests: Exclude WARP from shumway_acid_tests/acid_image, it was flaky by @torokati44 in #12661

New in Ruffle Nightly 2023-08-09 (Aug 9, 2023)

  • What's Changed:
  • desktop: Fix --no-gui issues by @sleepycatcoding in #12631
  • web: Don't store the full semver version as the version name, just construct it when needed by @Dinnerbone in #12629
  • Update Rust dependencies by @torokati44 in #12634
  • chore: Update translations by @github-actions in #12642

New in Ruffle Nightly 2023-08-08 (Aug 8, 2023)

  • What's Changed:
  • chore(deps): bump node.js dependencies by @torokati44 in #12601
  • core/desktop/web: Play unsupported videos with browser by @danielhjacobs in #12539
  • tests: Allow multiple image comparisons per test by @Dinnerbone in #12602
  • avm2: Remove focus from an EditText when it unloads (close #12092) by @MrCheeze in #12102

New in Ruffle Nightly 2023-08-07 (Aug 7, 2023)

  • What's Changed:
  • avm2: Don't make descendants operator (..) call a method by @Dinnerbone in #12496
  • Exporter: Updated the logic that gives a error message by @michiel2005 in #12579
  • chore: Add .idea to gitignore by @Dinnerbone in #12590
  • render: fix jpeg cmyk to rgb by @SuchAFuriousDeath in #12592
  • web: Fix extension vs selfhost loading conflicts by @Dinnerbone in #12557
  • avm2: implement BitmapData.merge by @SuchAFuriousDeath in #12593

New in Ruffle Nightly 2023-08-06 (Aug 6, 2023)

  • What's Changed:
  • webgl: Apply color transform on gradient records by @relrelb in #12549
  • build: Reduce disk use of reproducible docker builds by @adrian17 in #12555
  • avm2: Convert more errors into AVM errors by @Lord-McSweeney in #12550
  • avm2: Clone event on redispatch by @sleepycatcoding in #12553
  • avm1: Implement XMLSocket + Subsystem fixes by @sleepycatcoding in #12489
  • Implement context menu events for AVM2 by @Lord-McSweeney in #12526
  • avm1: reference displayObjects parents if parent is a button by @michiel2005 in #12541

New in Ruffle Nightly 2023-08-05 (Aug 5, 2023)

  • What's Changed:
  • tests: Port avmplus as3 AMF test by @Dinnerbone in #12482
  • chore: Update translations by @github-actions in #12512
  • render/wgpu: Add WgpuRenderBackend::recreate_surface(). by @torokati44 in #12548
  • core: Remove lots of uses of derive(Collect) by @adrian17 in #12536

New in Ruffle Nightly 2023-08-04 (Aug 4, 2023)

  • What's Changed:
  • tests: Port avmplus MOPS tests by @Dinnerbone in #12514

New in Ruffle Nightly 2023-08-03 (Aug 3, 2023)

  • What's Changed:
  • debug_ui: Indent non-expandable items object- and display trees by @torokati44 in #12467
  • chore(deps): lock file maintenance rust dependencies by @torokati44 in #12453
  • avm2: Allow several Vector tests to pass by @Lord-McSweeney in #12399
  • avm2: Implement XML settings & correct the XMLDocument implementation by @Dinnerbone in #12465
  • render: Calculate correct bounds for shapes containing curves by @Dinnerbone in #12488
  • avm2: Implement XMLSocket by @sleepycatcoding in #12466
  • desktop: Allow disabiling top menu by @sleepycatcoding in #12511
  • wstr: return correct result for split_ascii_prefix_bytes(<ascii str>) by @moulins in #12513

New in Ruffle Nightly 2023-08-02 (Aug 2, 2023)

  • What's Changed:
  • avm2: Implement Loader.uncaughtErrorEvents by @Aaron1011 in #12468
  • wgpu: Use correct (shifted) zero value in DisplacementMapFilter shader by @torokati44 in #12472
  • chore(deps): update dependency chromedriver to v115 by @renovate in #12473
  • chore: Appease nightly clippy by @relrelb in #12298

New in Ruffle Nightly 2023-08-01 (Aug 1, 2023)

  • What's Changed:
  • docs: Add Neopets as sponsor by @n0samu in #12456
  • core: Don't divide by zero in BitmapData::perlinNoise() if baseX or baseY is 0.0 by @torokati44 in #12439
  • avm2: Implement Matrix3D.prependScale by @agdeneke in #12457
  • avm2: More avmplus tests by @Dinnerbone in #12459
  • core,tests: Fix socket test backend by @sleepycatcoding in #12396
  • core: Fix debug_ui mouse search on HiDPI display by @Aaron1011 in #12469
  • avm2: Fix property_is_enumerable on arrays by @adrian17 in #12436

New in Ruffle Nightly 2023-07-31 (Jul 31, 2023)

  • avm2: Implement XMLNode.nodeValue by @evilpie in #12414
  • Make XMLList set_property_local (aka [[put]]) less error happy by @evilpie in #12413
  • tests: More avmplus tests! by @Dinnerbone in #12415
  • chore: Update translations by @github-actions in #12412
  • avm2: Remove accidentally duplicated tests by @adrian17 in #12435
  • Run npm update --save by @tsunamistate in #12432
  • chore: Update translations by @github-actions in #12441

New in Ruffle Nightly 2023-07-30 (Jul 30, 2023)

  • What's Changed:
  • avm2: Improve flash.text.engine stubs by @Lord-McSweeney in #12326
  • avm2: Make 'new Math()' and 'Math(value)' throw errors by @Dinnerbone in #12398
  • avm2: Add void type by @adrian17 in #11520
  • avm2: Enable Vector. serialization tests by @Aaron1011 in #12409
  • tests: Add visual test for GlowFilter pass scaling by @torokati44 in #12391

New in Ruffle Nightly 2023-07-29 (Jul 29, 2023)

  • What's Changed:
  • avm2: Special case Number.toString for Infinity and NaN by @Lord-McSweeney in #12357
  • avm2+tests: Fully implement XML.appendChild, add a test by @Lord-McSweeney in #12350
  • chore: Update translations by @github-actions in #12361
  • chore: Add FUNDING.yml link to enable Sponsor button on github by @Dinnerbone in #12379
  • avm2: Add TransformGestureEvent and PressAndTapGestureEvent by @mBornand in #12330
  • tests: Port many misc avmplus ecma3 tests by @Dinnerbone in #12371
  • avm2: Refactor Vector. class creation by @adrian17 in #12132
  • chore: Update translations by @github-actions in #12384

New in Ruffle Nightly 2023-07-28 (Jul 28, 2023)

  • What's Changed:
  • tests: Port avmplus try/catch/finally tests by @Dinnerbone in #12334
  • core: Implement ToXMLString for Attribute and Comment node kind by @jarca0123 in #12215
  • chore: Update translations by @github-actions in #12220
  • tests: Port some of the avmplus E4X test suites by @Dinnerbone in #12352
  • tests: Port avmplus ByteArray test suite by @Dinnerbone in #12348
  • avm2: Implement XML addition operations by @sleepycatcoding in #12347

New in Ruffle Nightly 2023-07-27 (Jul 27, 2023)

  • What's Changed:
  • avm2: Don't error in DisplayObject.removeChildren when to is max by @Aaron1011 in #12305
  • wgpu: Fixes for blur filter quality by @torokati44 in #12276
  • chore: Update libz-sys to 1.1.12 by @Dinnerbone in #12315
  • core+tests: Socket testing and improvements by @sleepycatcoding in #12262
  • tests: Port some avmplus tests over (String & Vector) by @Dinnerbone in #12293
  • tests: Implement fscommand("quit") by @Dinnerbone in #12290
  • desktop: Change 'socket mode' text to 'TCP Connections' by @Dinnerbone in #12316
  • avm2: Fix handling of default domain memory by @Aaron1011 in #12308
  • tests: Add known_failure as a test option, and migrate many tests to it by @Dinnerbone in #12324
  • avm2: Implement DisplayObject.blendShader by @Aaron1011 in #12238

New in Ruffle Nightly 2023-07-26 (Jul 26, 2023)

  • What's Changed:
  • core: Fix dirty region set by bitmap::set_pixel by @torokati44 in #12297
  • chore(deps): lock file maintenance rust dependencies by @torokati44 in #12296
  • avm1: Differentiate between clips with no name yet and empty strings by @CUB3D in #12291
  • avm1: Implement Button.filters by @Lord-McSweeney in #12299
  • avm2: Implement AMF Vector serialization/deserialization by @Aaron1011 in #12240
  • chore(deps): lock file maintenance node.js dependencies by @renovate in #12302

New in Ruffle Nightly 2023-07-25 (Jul 25, 2023)

  • What's Changed:
  • tests: Port Shumway's avm1 tests over by @Dinnerbone in #12268
  • wgpu: Towards accurate fractional sized blurs by @torokati44 in #12225
  • render: Skip unreasonably large bitmaps by @relrelb in #12223
  • avm1: Reverse iteration when applying filters - fixes #12272 by @Dinnerbone in #12281
  • core: Use a slightly better DefineFont4 stub by @Aaron1011 in #12247
  • avm2+tests: Allow setting prototype to undefined by @sleepycatcoding in #12282

New in Ruffle Nightly 2023-07-24 (Jul 24, 2023)

  • core, avm2: Implement AS3 Socket by @sleepycatcoding in #12047
  • wgpu: Correctly pass PixelBender int params to shader by @Aaron1011 in #12249
  • avm2: Correctly set fields on ShaderInput and ShaderParameter by @Aaron1011 in #12246
  • avm2: Clamp ByteArray.position when ByteArray.length is set by @Aaron1011 in #12244
  • naga-pixelbender: Implement Opcode::Fract by @Aaron1011 in #12264
  • wgpu: Ignore zero width/height Stage3D scissor rect by @Aaron1011 in #12266

New in Ruffle Nightly 2023-07-23 (Jul 23, 2023)

  • What's Changed:
  • avm2: Stub GameInputDevice, LocaleID, NumberFormatter, and NumberParseResult by @n0samu in #12213
  • avm2: Implement delete_property_local for XMLList by @Dinnerbone in #12222
  • avm2: Don't change the length of a fixed output Vector by @agdeneke in #12232
  • core: Remove unsupported content warning by @Dinnerbone in #12234
  • avm2: Fix super_vtable in describeType by @Aaron1011 in #12239
  • avm2: Throw proper error when setting name of timeline objects by @Dinnerbone in #12243

New in Ruffle Nightly 2023-07-22 (Jul 22, 2023)

  • What's Changed:
  • naga-pixelbender: Implement Opcode::LessThanEqual by @Aaron1011 in #12194
  • core: Fix cacheAsBitmap size limit & remove print statement by @n0samu in #12201
  • avm2: Fix bugs with describeType interfaces and methods by @Aaron1011 in #12105
  • avm1: Implement BitmapData.applyFilter() by @Dinnerbone in #12176
  • extension: Don't throw error when Firefox add-on is in review by @danielhjacobs in #12218
  • avm2: Improve LocalConnection.send stub by @Lord-McSweeney in #12157
  • Implement Bitmap pixel snapping by @Dinnerbone in #11916

New in Ruffle Nightly 2023-07-20 (Jul 20, 2023)

  • What's Changed:
  • core: Calculate correct bounds for curves through the drawing API by @Dinnerbone in #12148
  • avm2: Support reading metadata through flash.utils.describeType by @Lord-McSweeney in #11275
  • tests: Port Shumway's timeline tests over by @Dinnerbone in #12140
  • web: Fix typo in build_wasm.js by @danielhjacobs in #12160
  • desktop: Track wgpu stats in Tracy by @Dinnerbone in #12099
  • avm2+tests: Allow concating XMLLists by @sleepycatcoding in #12161
  • avm1: Trying to access a named shape should instead resolve to the parent by @CUB3D in #12063
  • wgpu: Implement Bevel filter by @Dinnerbone in #12018
  • avm2: Use invisible mask descendants for mouse picking and rendering by @Aaron1011 in #12150
  • avm1, avm2: Support onMetaData handler for AVM1, support onCuePoint and onMetaData NetStream.client function handlers for AVM2 by @Lord-McSweeney in #11936

New in Ruffle Nightly 2023-07-19 (Jul 19, 2023)

  • Tests: Port Shumway's acid tests over by @Dinnerbone in #12116
  • Avm2: Remove redundant 'depth' variable in XML parsing by @Aaron1011 in #11969

New in Ruffle Nightly 2023-07-18 (Jul 18, 2023)

  • What's Changed:
  • chore(deps): lock file maintenance rust dependencies by @renovate in #12106
  • avm1: Migrate SharedObject to NativeObject by @relrelb in #12083
  • chore: Update translations by @github-actions in #11993
  • avm2: Stub flash.globalization.CurrencyFormatter.format by @MartySVK in #12108
  • wgpu: Blur optimisations by @Dinnerbone in #12089

New in Ruffle Nightly 2023-07-17 (Jul 17, 2023)

  • What's Changed:
  • core: Correct and implement MovieClip states (default state, initial loading state, error state, image state and unloaded state) by @Korne127 in #10792
  • core: Make underlines the same color as their text by @MrCheeze in #12088
  • avm1+avm2: Implement SharedObject.size/getSize by @n0samu in #12081

New in Ruffle Nightly 2023-07-16 (Jul 16, 2023)

  • What's Changed:
  • Avm2: Implement Matrix3D.transformVectors by @agdeneke in #12038
  • Avm1: Fix panic on writing (or reading) self-referential SharedObjects by @CUB3D in #9433
  • Swf: avm1: Ignore bad ActionTry opcodes and bad ConstantPool strings by @Lord-McSweeney in #11957
  • Avm2: Fix Array.sort(function) by @Dinnerbone in #12003
  • Avm2: Do not remove an EditText's selection on unfocus (fix #9006) + implement selectionBegin/selectionEnd/caretIndex by @MrCheeze in #9067
  • Web: Fix broken touch detection by @n0samu in #12028
  • Web: Move from many npm scripts, to a single build file by @Dinnerbone in #12072
  • Wgpu: Fix crash when not using push constants by @Dinnerbone in #12090

New in Ruffle Nightly 2023-07-15 (Jul 15, 2023)

  • What's Changed:
  • video/h263: Add a deblocking filter as a postprocessing step by @torokati44 in #9980
  • avm1: Migrate Xml to NativeObject by @relrelb in #12046
  • Refactor Context3D objects away from GcCell by @moulins in #11974
  • avm1: fix buttons that were not clickable after a goto by @michiel2005 in #10862
  • wgpu: Fix off-by-one in blur size calculation by @Dinnerbone in #12056

New in Ruffle Nightly 2023-07-13 (Jul 13, 2023)

  • What's Changed:
  • Chore: Fix clippy 'useless-vec' by @Dinnerbone in #12012
  • Avm1: Migrate XMLNode to NativeObject by @Dinnerbone in #12002
  • Wgpu: Implement glow & drop shadow filters by @Dinnerbone in #11878

New in Ruffle Nightly 2023-07-12 (Jul 12, 2023)

  • What's Changed:
  • Core: Fix panic from oversized bitmap warning by @n0samu in #11984
  • Chore(deps): lock file maintenance rust dependencies by @renovate in #11978

New in Ruffle Nightly 2023-07-11 (Jul 11, 2023)

  • Add more specific CJK font families for Linux by @danielhjacobs in #11941
  • avm2: Stub Program3D.dispose by @Aaron1011 in #11973
  • fix(deps): update rust crate libflate to v2 by @renovate in #11977
  • build(deps-dev): bump stylelint from 15.9.0 to 15.10.1 in /web by @dependabot in #11945
  • chore: Update translations by @github-actions in #11931
  • core: Mark stack-heavy DO functions as noinline by @adrian17 in #11318
  • desktop: Add Letterbox option to Open Advanced dialog by @n0samu in #11981

New in Ruffle Nightly 2023-07-10 (Jul 10, 2023)

  • Wgpu: Cache Program3D bind group layout by @Aaron1011 in #11526
  • Render: Implement more Pixelbender opcodes, and fix matrices by @Aaron1011 in #11896
  • Upgrade to new gc-arena API by @moulins in #11182

New in Ruffle Nightly 2023-07-09 (Jul 9, 2023)

  • Avm2: Replace Activation.resolve_type by domain lookup by @adrian17 in #11953

New in Ruffle Nightly 2023-07-08 (Jul 8, 2023)

  • What's Changed:
  • avm2: Use the current SWF version instead of root SWF version in MovieClip.gotoAndPlay by @Lord-McSweeney in #11929
  • avm2: Convert has_class_in_chain to use a GcCell<Class> by @Aaron1011 in #11494
  • wgpu: Only log 'unsupported' warning once per filter type by @Aaron1011 in #11915
  • avm2: Remove old hack now that DOs use an instance allocator by @Lord-McSweeney in #11943
  • avm2: Fix Multiname-with-params formatting by @adrian17 in #11944

New in Ruffle Nightly 2023-07-07 (Jul 7, 2023)

  • What's Changed:
  • avm2: Implement NetConnection.connect with a null command by @Aaron1011 in #11815
  • avm2: Replace Option<Object<'gc>> with Object<'gc> in all native methods by @Lord-McSweeney in #11922
  • render: Fix writing to varying register in vertex shader by @Aaron1011 in #11838
  • avm2: Implement Utils3D.projectVector and Utils3D.projectVectors by @Aaron1011 in #11900
  • desktop: load cjk fallback fonts using fontdb by @n0samu in #11924

New in Ruffle Nightly 2023-07-06 (Jul 6, 2023)

  • What's Changed:
  • Chore: Update translations by @github-actions in #11875
  • Avm1: Hook up AVM1 filters by @Dinnerbone in #11813
  • Avm2: Throw TypeError when trying to parse malformed XML by @Aaron1011 in #11871
  • Wgpu: Use a vec4f for pixelbender ZEROED_OUT_OF_RANGE_MODE_INDEX by @Aaron1011 in #11867
  • Avm2: Set correct this values in function calls by @adrian17 in #11874
  • Avm2: Implement 'change' event for TextField by @Aaron1011 in #11893
  • Avm2: Clean up Activation a little by @Lord-McSweeney in #11917
  • Avm2: Implement Graphics.drawPath by @Aaron1011 in #11898
  • Core: Expose LoaderInfo.parameters and fix other properties by @Aaron1011 in #11829

New in Ruffle Nightly 2023-07-05 (Jul 5, 2023)

  • What's Changed:
  • core: Correctly apply blend modes and filters from button records by @Lord-McSweeney in #11891
  • core: Fix some Clippy lints on the latest nightly by @Aaron1011 in #11872
  • avm2: Implement Graphics.copyFrom by @Aaron1011 in #11895
  • avm2: Implement XML.descendants for attributes by @Aaron1011 in #11894

New in Ruffle Nightly 2023-07-04 (Jul 4, 2023)

  • What's Changed:
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11864
  • Scale filter values when the filtered objects are scaled by @Dinnerbone in #11798
  • chore: Update translations by @github-actions in #11861
  • core+avm1: Implement FLV onCuePoint for AVM1 by @Lord-McSweeney in #11858

New in Ruffle Nightly 2023-07-03 (Jul 3, 2023)

  • What's Changed:
  • chore: Update translations by @github-actions in #11843
  • chore: Run npm update --save in web by @torokati44 in #11842
  • core: Update formatting with latest nightly 'cargo fmt' by @Aaron1011 in #11847
  • render: Add 'renderdoc' feature/module for manual frame capture by @Aaron1011 in #11472
  • desktop: Use SubscriberInitExt::init to capture log output by @Aaron1011 in #11816
  • avm2: Store at most a single type parameter in names/clasess by @Aaron1011 in #11860

New in Ruffle Nightly 2023-07-02 (Jul 2, 2023)

  • Avm2: Implement Stage3D.requestContext3DMatchingProfiles by @Aaron1011 in #11811
  • Chore(deps): lock file maintenance node.js dependencies by @renovate in #11819
  • Core: Add debug feature to find display objects by mouse by @Dinnerbone in #11665
  • Core: Bail out of operations::color_transform if [xy]_min==[xy]_max by @Aaron1011 in #11820
  • Render: Implement more PixelBender features by @Aaron1011 in #11800
  • Avm2+tests: Implement Matrix3D.copyColumnFrom; add a test by @Lord-McSweeney in #11832
  • Avm2: Correctly set and use Video class from Rust by @adrian17 in #11839
  • Fix post-FLV-merge regressions by @kmeisthax in #11831

New in Ruffle Nightly 2023-07-01 (Jul 1, 2023)

  • Add prependRotation, copyRowTo and copyRowFrom by @Fancy2209 in #11698
  • FLV support by @kmeisthax in #10756
  • chore: Update translations by @github-actions in #11803

New in Ruffle Nightly 2023-06-30 (Jun 30, 2023)

  • What's Changed:
  • avm2: Correctly re-use objects in XML/XMLList call handlers and ctors by @Aaron1011 in #11782
  • avm2: Use method_name as last resort if available in stack trace by @Bale001 in #11788
  • avm2: Stub AVM1Movie by @Lord-McSweeney in #11785
  • swf: Make Color Copy by @Dinnerbone in #11799
  • avm2: Stub isXMLName by @Aaron1011 in #11801

New in Ruffle Nightly 2023-06-29 (Jun 29, 2023)

  • What's Changed:
  • wgpu: Remove 'width' and 'height' fields from Texture by @Aaron1011 in #11781
  • wgpu: Remove 'TextureWrapper.format' field by @Aaron1011 in #11783
  • Switch blur to separable filter & respect quality setting by @Dinnerbone in #11769
  • chore: Update translations by @github-actions in #11719

New in Ruffle Nightly 2023-06-28 (Jun 28, 2023)

  • desktop,chore: Fix incorrect linker arguments on windows when using gnu linker(ld.exe) by @lvyitian in #11761

New in Ruffle Nightly 2023-06-27 (Jun 27, 2023)

  • What's Changed:
  • fix(deps): update rust crate indexmap to v2 by @renovate in #11735
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11736
  • chore(deps): lock file maintenance by @renovate in #11739
  • wgpu: Removed most uniforms from filters, they're not used or needed by @Dinnerbone in #11750
  • core: Update sounds in rootless SWF (close #11666) by @nivkner in #11720
  • wgpu: Don't mark the filters as needing push constants by @Dinnerbone in #11753

New in Ruffle Nightly 2023-06-26 (Jun 26, 2023)

  • What's Changed:
  • avm2: Support CData in XML.toXMLString by @Lord-McSweeney in #11724
  • web: Don't report extension URL on error by @relrelb in #11691
  • core: Overwrite filters in GotoPlaceObject::merge by @Lord-McSweeney in #11723
  • Render filters on display objects by @Dinnerbone in #11702
  • wgpu: Don't create cacheAsBitmap for textures that are too large by @Dinnerbone in #11731
  • wgpu: nit: Fix incorrect label in blur filter by @Lord-McSweeney in #11734

New in Ruffle Nightly 2023-06-25 (Jun 25, 2023)

  • wgpu: Slight changes to blur filter by @Lord-McSweeney in #11703
  • web: Don't auto-panic on browsers without ReadableStream by @danielhjacobs in #11699
  • core: Apply filters when modifying an object, not just when instantiating by @MrCheeze in #11714
  • chore: Update translations by @github-actions in #11701
  • core: Don't hold a borrow on Avm1Button whilst adding children by @Dinnerbone in #11718

New in Ruffle Nightly 2023-06-24 (Jun 24, 2023)

  • What's Changed:
  • web: Fix Ruffle extension failing to load when publicPath config is set by @n0samu in #11678
  • Fix TouchEvent.as by @Fancy2209 in #11685
  • chore: Update translations by @github-actions in #11684
  • avm2: Implement Serialization for ByteArrayObject by @nivkner in #11687
  • Implement cacheAsBitmap by @Dinnerbone in #11638

New in Ruffle Nightly 2023-06-22 (Jun 22, 2023)

  • What's Changed:
  • Many more debug UI features by @Dinnerbone in #11419
  • avm2: flash.sampler stubs by @Lord-McSweeney in #11653
  • tests: Increased tolerance of stage3d tests by @Dinnerbone in #11596

New in Ruffle Nightly 2023-06-21 (Jun 21, 2023)

  • What's Changed:
  • core: Fix avm2button bounding box by @Dinnerbone in #11649
  • chore: Update translations by @github-actions in #11622
  • avm2: Optimize coerce_to_primitive for boxed primitives by @adrian17 in #11620

New in Ruffle Nightly 2023-06-20 (Jun 20, 2023)

  • avm1: Correct matrix::object_to_matrix_or_default by @Toad06 in #11631

New in Ruffle Nightly 2023-06-19 (Jun 19, 2023)

  • avm1: Correct WaitForFrame and WaitForFrame2 actions by @Toad06 in #11508
  • avm1: Make DisplayPropertyMap immutable by @relrelb in #11593
  • web: Allow setting allowScriptAccess on global config by @Toad06 in #11590
  • cleanup: Rename GlutinAsyncExecutor -> WinitAsyncExecutor. by @torokati44 in #11606
  • web: Use for..of instead of for..in loops by @n0samu in #11605

New in Ruffle Nightly 2023-06-18 (Jun 18, 2023)

  • What's Changed:
  • core: Simplify TDisplayObject::swf_version(), we don't need to iterate the heirarchy by @Dinnerbone in #11577
  • chore: Bump tracing-tracy to version-match profiling by @torokati44 in #11585
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11561
  • chore: Update translations by @github-actions in #11563
  • avm2: Remove or validate some uses of coerce_to_object by @Lord-McSweeney in #11471
  • Canvas & webgl bitmap data cleanup by @Dinnerbone in #11594
  • chore: Update translations by @github-actions in #11595
  • chore: Bump ouroboros to 0.17.0. by @torokati44 in #11598

New in Ruffle Nightly 2023-06-17 (Jun 17, 2023)

  • What's Changed:
  • web: Disabling allowScriptAccess also prevents opening URLs in the same tab by @Toad06 in #11555

New in Ruffle Nightly 2023-06-16 (Jun 16, 2023)

  • What's Changed:
  • avm2: Add error number in error message for BMD.drawWithQuality by @Lord-McSweeney in #11544
  • chore: Update translations by @github-actions in #11541
  • avm2: Improve support for deleting XML attributes and children by @Aaron1011 in #11543
  • avm2: Implement ErrorObject.display without using Activation by @Aaron1011 in #11507
  • avm2: Use a separate domain for playerglobals by @Aaron1011 in #11545
  • chore(deps): update dependency chromedriver to v114 by @renovate in #11558
  • fix(deps): update wasm-bindgen by @renovate in #11557
  • avm2: Minimal stub of ShaderFilter by @Lord-McSweeney in #11562
  • chore(deps): lock file maintenance node.js dependencies by @renovate in #11564
  • wpgu: Initial implementation of PixelBender shader execution by @Aaron1011 in #11441

New in Ruffle Nightly 2023-06-15 (Jun 15, 2023)

  • What's Changed:
  • avm2: Improve PerspectiveProjection stub by @n0samu in #11523
  • avm2: Stub NetConnection.addHeader by @Lord-McSweeney in #11528
  • chore: Update translations by @github-actions in #11521
  • avm2: Object-related fixes by @Lord-McSweeney in #11530
  • desktop: Fix interaction between egui and ruffle cursors by @Dinnerbone in #11437
  • selfhosted: Add a config option to enable Ruffle even on Flash browsers by @danielhjacobs in #11503
  • core: Add options to set and force the stage alignment by @n0samu in #11501
  • avm2: Support primitives besides null in MovieClip.addFrameScript by @Lord-McSweeney in #11529
  • avm2: nit: Fix warning message in Avm2::peek by @Lord-McSweeney in #11537
  • core: implement screen resolution for capabilities by @AllinolCP in #11156
  • tests: Enable tracing_subscriber in tests by @Aaron1011 in #11326

New in Ruffle Nightly 2023-06-14 (Jun 14, 2023)

  • What's Changed:
  • web: Stop error if Fetch response lacks headers by @danielhjacobs in #11505
  • avm2: Throw AVM error in Array constructor by @n0samu in #11519
  • avm2: Implement call handler for XMLList by @Aaron1011 in #11522
  • avm2: Support Array(...) without new by @adrian17 in #11517

New in Ruffle Nightly 2023-06-13 (Jun 13, 2023)

  • chore(deps): lock file maintenance rust dependencies by @renovate in #11490
  • Add Table of Contents to README by @secret-shober in #11489
  • avm2: Stub Matrix3D-related methods on Transform by @Aaron1011 in #11495
  • avm2: Implement KeyboardEvent.updateAfterEvent by @Aaron1011 in #11496
  • avm2: Throw TypeError when 'astype' receives a null/undefined class by @Aaron1011 in #11493
  • chore: Update translations by @github-actions in #11469
  • core: Log url when movie fetch fails by @Aaron1011 in #11492
  • avm1: Migrate Transform to NativeObject by @relrelb in #11459
  • avm2: Add ignored test for subclass with 'overriding' field name by @Aaron1011 in #11491
  • core: slightly simplify string interner by using new hashbrown APIs by @moulins in #11463
  • avm2: Set named field in parent to null when child is removed by @Aaron1011 in #11476
  • avm2: Implement BitmapData.setVector by @Herschel in #10275

New in Ruffle Nightly 2023-06-12 (Jun 12, 2023)

  • What's Changed:
  • core: Fix drag constraint with lockCenter set to false by @relrelb in #11470
  • avm2: Stub undocumented TextField.insertXMLText by @Lord-McSweeney in #11484
  • desktop: properly populate base and proxy URL fields from option struct by @moulins in #11485

New in Ruffle Nightly 2023-06-11 (Jun 11, 2023)

  • What's Changed:
  • core: Fix status code implementation for AVM1 and implement HTTPStatusEvent.HTTP_STATUS for avm2 by @AllinolCP in #11360
  • chore: Update translations by @github-actions in #11453
  • avm1: Don't create _levelN for unloadMovieNum(N) by @Dinnerbone in #11449
  • avm1: Migrate GradientGlowFilter to NativeObject by @relrelb in #11363
  • avm2: Implement AMF serialization of XML objects by @Aaron1011 in #11456
  • avm2+tests: Fix String.substr with negative second value, add tests by @Lord-McSweeney in #11465
  • avm2: flash.net.getClassByAlias/registerClassAlias stub improvements by @Lord-McSweeney in #11466

New in Ruffle Nightly 2023-06-10 (Jun 10, 2023)

  • What's Changed:
  • avm2: Run 'nested goto frame' for entire Stage and orphans by @Aaron1011 in #11261
  • Add an option to use a dummy External Interface on desktop by @Dinnerbone in #11439
  • avm1: Don't fail if base clip is invalid in GetProperty/SetProperty by @Toad06 in #11438
  • avm1: Implement MovieClip.lineGradientStyle by @Toad06 in #11361
  • chore: Upgrade NodeJS dependencies by @tsunamistate in #11352
  • desktop: Add reverse engineered logo svg by @Doomsdayrs in #11226
  • core: Unify loader event handler and AVM2 data into MovieLoaderVMData by @Aaron1011 in #11418
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11450

New in Ruffle Nightly 2023-06-09 (Jun 9, 2023)

  • What's Changed:
  • avm2: Add weak object support by @Bale001 in #11397
  • avm2: Use WeakObject in broadcast_list by @Aaron1011 in #11423
  • avm2: Fix MouseCursorData.frameRate stubs by @Lord-McSweeney in #11420
  • wgpu: Cache compiled naga-agal shader module by @Aaron1011 in #11217
  • desktop: Open Advanced improvements by @moulins in #11351
  • chore: Update translations by @github-actions in #11435

New in Ruffle Nightly 2023-06-08 (Jun 8, 2023)

  • What's Changed:
  • avm2: Stub flash.printing.PrintJob by @Aaron1011 in #11404
  • avm2: Preserve MultinameFlags::ATTRIBUTE when filling a lazy Multiname by @Aaron1011 in #11405
  • core: Fix parsing of PixelBender sampleNearest and sampleLinear by @Aaron1011 in #11371
  • avm2: Wrap orphan list in an Rc for correct iteration behavior by @Aaron1011 in #11414
  • web: Don't try to use Ruffle on browsers with Flash support by @danielhjacobs in #11407
  • avm2: Stub Graphics.beginShaderFill by @Aaron1011 in #11416
  • avm2: Throw exception when ExternalInterface is not available by @Aaron1011 in #11415
  • chore: Update translations by @github-actions in #11385
  • avm1: fix coercions for the blendMode property of display objects by @moulins in #11374
  • avm1: Fix coercion order in SWFv4 actions by @Toad06 in #11196

New in Ruffle Nightly 2023-06-07 (Jun 7, 2023)

  • What's Changed:
  • avm2: Make caller_domain an Option, and call expect when actually needed by @Aaron1011 in #10811
  • core: Ignore newer PlaceObject tag in same frame with duplicate depth by @Aaron1011 in #11395
  • core: Correctly handle '.' and '<' in obfuscated QNames by @Aaron1011 in #11399

New in Ruffle Nightly 2023-06-06 (Jun 6, 2023)

  • What's Changed:
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11376
  • chore(deps): lock file maintenance by @renovate in #11377
  • chore: Update translations by @github-actions in #11366
  • avm2: Don't error on removeChildren() for empty containers by @Dinnerbone in #11383

New in Ruffle Nightly 2023-06-04 (Jun 4, 2023)

  • What's Changed:
  • Initial debug UI by @Dinnerbone in #11340
  • chore: Update translations by @github-actions in #11321
  • avm1: Migrate GradientBevelFilter to NativeObject by @relrelb in #11354
  • ci: Fix artifact download for AUR package by @relrelb in #11359

New in Ruffle Nightly 2023-06-03 (Jun 3, 2023)

  • What's Changed:
  • ci: Provide sha512sums in AUR package by @relrelb in #11348
  • chore: Use Rust's OnceCell/OnceLock by @relrelb in #11349
  • wgpu: Implement Context3D.setScissorRectangle by @Aaron1011 in #11198
  • avm2: Add PixelBender bytecode parsing to ShaderData by @Aaron1011 in #11309
  • avm1: Migrate ConvolutionFilter to NativeObject by @relrelb in #11238
  • wgpu: Don't skip alpha/erase blend modes for BitmapData.draw by @Aaron1011 in #11323

New in Ruffle Nightly 2023-06-02 (Jun 2, 2023)

  • What's Changed:
  • avm2: Partial implementation of Loader.unload by @Lord-McSweeney in #10961
  • chore(deps): update node.js dependencies (major) by @renovate in #11329
  • chore(deps): lock file maintenance node.js dependencies by @renovate in #11330

New in Ruffle Nightly 2023-06-01 (Jun 1, 2023)

  • What's Changed:
  • web: Enforce ESLint's camelcase rule by @relrelb in #11300
  • web: Update youtube check to be more accurate using regex by @danielhjacobs in #11315
  • docs: Add detailed instructions for running tests by @n0samu in #11233
  • desktop: rewrite AS3 warning popup in egui by @adrian17 in #11307
  • avm2: Always run construct_frame in initialize_for_allocator by @Aaron1011 in #11308

New in Ruffle Nightly 2023-05-31 (May 31, 2023)

  • What's Changed:
  • web: Allow extra MIME types in the polyfill by @Toad06 in #11256
  • ci: Don't run crowdin workflows on forks by @danielhjacobs in #11295
  • avm1: Correct ActionCloneSprite and duplicateMovieClip() by @relrelb in #11228
  • [desktop] use light menus on light theme & detect changes by @tinaun in #11298
  • chore: Update translations by @github-actions in #11274
  • desktop: Simple hack to stop ignoring egui redraws by @adrian17 in #11306

New in Ruffle Nightly 2023-05-30 (May 30, 2023)

  • wgpu: Fix calculation of image row padding by @Aaron1011 in #11245
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11260
  • core/avm1: Accept Value as smaller than 16 bytes on 32 bit platforms. by @torokati44 in #11263
  • desktop: Add suspend/resume buttons by @Dinnerbone in #11243
  • desktop: Add "Advanced Open..." dialog by @Dinnerbone in #11240
  • Desktop: Stop busy looping when idling by @adrian17 in #11271

New in Ruffle Nightly 2023-05-29 (May 29, 2023)

  • web: Fix minor issues with the context menu by @Toad06 in #11206
  • avm2: Implement URLRequest.requestHeaders by @Aaron1011 in #10869
  • avm2: Allow replacing and deleting XML attributes by @Aaron1011 in #11242
  • core: Store Color as an u32 instead of a i32 by @Aaron1011 in #11241
  • avm2: Fix rounding behavior in BitmapData rectangle operations by @Aaron1011 in #11259

New in Ruffle Nightly 2023-05-28 (May 28, 2023)

  • What's Changed:
  • core: Use clone-on-write behavior for render list iteration by @Aaron1011 in #11195
  • avm2: Move DisplayObject assignment into an initializer by @Aaron1011 in #11084
  • avm2: Stub Worker by @Lord-McSweeney in #11218
  • avm1: Migrate DisplacementMapFilter to NativeObject by @relrelb in #11148

New in Ruffle Nightly 2023-05-27 (May 27, 2023)

  • core: Fix nightly clippy lints by @Aaron1011 in #11230
  • chore: Update translations by @github-actions in #11216

New in Ruffle Nightly 2023-05-26 (May 26, 2023)

  • nit: Github -> GitHub by @torokati44 in #11204

New in Ruffle Nightly 2023-05-25 (May 25, 2023)

  • avm2: Minor refactoring of duplicated code. by @iwannabethedev in #11003
  • core: Fix serialization/SharedObject bug. by @iwannabethedev in #11165
  • avm2: Stub ContextMenu.builtInItems setter by @MartySVK in #11187
  • naga-agal: Implement remaining ops by @Herschel in #10589
  • avm2: Implement Stage3D.visible by @Aaron1011 in #11200
  • avm2: Avoid a function call on every push() by @adrian17 in #11176
  • desktop: Add GUI using egui by @Herschel in #10426
  • chore: Update translations by @github-actions in #11192
  • avm2: Add legacy handling for configureBackBuffer with SWF version < 30 by @Aaron1011 in #11202

New in Ruffle Nightly 2023-05-24 (May 24, 2023)

  • What's Changed:
  • agal: Correctly check vertex_input_expressions cache by @Aaron1011 in #11016
  • avm2: Suppress events for selectable was_static TextFields by @Aaron1011 in #11177
  • avm2: Add Matrix3D.[recompose,decompose,copyColumnTo,invert,determinant] by @Aaron1011 in #11080

New in Ruffle Nightly 2023-05-23 (May 23, 2023)

  • chore(deps): lock file maintenance by @renovate in #11154
  • chore: Update translations by @github-actions in #11151
  • avm2: Implement XML.hasSimpleContent and hasComplexContent by @n0samu in #10638
  • chore(deps): lock file maintenance rust dependencies by @renovate in #11158
  • avm2: Coerce function return value to declared return type by @Aaron1011 in #11169
  • desktop: Fire both KeyDown and TextControl events by @n0samu in #11159
  • avm2: Make ByteArray.readMultiByte cut string off at null byte by @Aaron1011 in #11170
  • avm1: Correctly send onUnload events for movies unloaded with GetURL2 by @Dinnerbone in #11143
  • chore: Update translations by @github-actions in #11178

New in Ruffle Nightly 2023-05-22 (May 22, 2023)

  • chore(deps): lock file maintenance by @renovate in #11135
  • nit: avm2: Fix stub message in Socket by @Lord-McSweeney in #11139
  • chore(deps): lock file maintenance by @renovate in #11141
  • core: Don't create a fake root clip when instantiating Stage by @Aaron1011 in #11083
  • tests: Make the audio backend tick every frame in the runner by @torokati44 in #11119
  • chore: Update Cargo.lock by @Dinnerbone in #11144
  • chore: Bump some Rust dependencies by @torokati44 in #11145
  • avm2: Initial implementation of URLStream by @Aaron1011 in #11046
  • core: Implement handling of text control input by @n0samu in #11059
  • agal: Add support for indirect register loads by @Aaron1011 in #11047
  • avm1: Migrate BitmapData to NativeObject by @relrelb in #10815
  • avm2: Check parent domain in export_class by @Aaron1011 in #11150

New in Ruffle Nightly 2023-05-21 (May 21, 2023)

  • Support property set on XMLList with a single child by @evilpie in #11128
  • exporter: Support outputting to stdout by @po5 in #11124
  • chore(deps): lock file maintenance node.js dependencies by @renovate in #11134
  • ci: Remove linter step by @Bale001 in #11123
  • avm2: Allow passing null to Context3D.setProgram by @Aaron1011 in #11110
  • Improve visual testing somewhat by @torokati44 in #11120
  • extension: Add a button to reset settings by @Toad06 in #11095
  • wgpu: Use intermediate buffer for Context3DCommand::CopyBitmapToTexture by @Aaron1011 in #11027
  • avm1: Filter buttons that use a keyPress event by @Toad06 in #10933
  • core: Refactor Loader to properly load images by @Aaron1011 in #11045
  • core: Implement BitmapData.pixelDissolve() for AVM1 and AVM2. by @iwannabethedev in #11106

New in Ruffle Nightly 2023-05-20 (May 20, 2023)

  • What's Changed:
  • ci: Use GitHub CLI instead of deprecated actions by @n0samu in #11125
  • avm2: Respect SKIP_INVISIBLE for DisplayObject by @Aaron1011 in #10992
  • avm2: Work on flash.system.Capabilities by @Lord-McSweeney in #10945
  • chore: Update translations by @github-actions in #11115

New in Ruffle Nightly 2023-05-19 (May 19, 2023)

  • avm2: Set 'bubbles' to 'false' for rollOut and rollOver events
  • This matches the Flash Player documentation. Since we were manually traversing the displayobject hierarching when firing the event, we ended up firing duplicate events to parents because bubbling was enabled.

New in Ruffle Nightly 2023-05-18 (May 18, 2023)

  • Fix overflow bug in `shape_utils::winding_number_line()`

New in Ruffle Nightly 2023-05-17 (May 17, 2023)

  • avm2: Throw error for invalid Stage3D back buffer size

New in Ruffle Nightly 2023-05-16 (May 16, 2023)

  • web: Use `JsValue::from_bool()`

New in Ruffle Nightly 2023-05-15 (May 15, 2023)

  • core: documentation changes.

New in Ruffle Nightly 2023-05-14 (May 14, 2023)

  • avm2: nit: Provide error number (2025) in error message for validate_remove_operation

New in Ruffle Nightly 2023-05-13 (May 13, 2023)

  • render: Clean-up.

New in Ruffle Nightly 2023-05-12 (May 12, 2023)

  • avm1: `button.useHandCursor` can hold any value

New in Ruffle Nightly 2023-05-11 (May 11, 2023)

  • wgpu: Allow unaligned writes to IndexBuffer3D
  • wgpu requires buffer copy sizes and offsets to be 4-byte aligned. Unfortunately, ActionScript can perform 2-byte aligned uploads into an IndexBuffer3D.
  • To support this, we now keep a copy of the IndexBuffer3D on the CPU. When performing an upload to the buffer, we round the offset down and the size up to the nearest 4-byte aligned value. The cpu buffer is used to fill out the write with existing data, so that we don't corrupt the contents of the GPU buffer.
  • To avoid introducing a new RefCell, I've changed IndexBuffer3D to use a `Box` instead of an `Rc` to store the trait object. This allows us to pass a mutable reference down to the backend.

New in Ruffle Nightly 2023-05-10 (May 10, 2023)

  • chore: Update translations from Crowdin

New in Ruffle Nightly 2023-05-09 (May 9, 2023)

  • web: Localise text inside shadow template

New in Ruffle Nightly 2023-05-08 (May 8, 2023)

  • avm2: Initialize `Object` instance vtable before other classes
  • Early class construction is tricky - `Object` defines properties that need to get copied into subclass instance vtables, but `Class` defines `prototype`, which needs to be copied into the *class* vtable
  • of `Object`.
  • To accomplish this, I've split out instance vtable initialization into a separate `init_instance_vtable`. We call `object_class.init_instance_vtable` before`class_class.init_instance_vtable`, but do things in the opposite order for `into_finished_class` (`class_class.into_finished_class` is called before `object_class.into_finished_class`)

New in Ruffle Nightly 2023-05-07 (May 7, 2023)

  • avm2: Add AS 'length()' to XML.

New in Ruffle Nightly 2023-05-06 (May 6, 2023)

  • web: Support copying to clipboard

New in Ruffle Nightly 2023-05-05 (May 5, 2023)

  • extension: Localize more strings

New in Ruffle Nightly 2023-05-04 (May 4, 2023)

  • core: Don't duplicate `ButtonAction`s
  • Previously, a separate `ButtonAction` was stored for each`ButtonActionCondition`. However, this can be eliminated using `bitflags`.

New in Ruffle Nightly 2023-05-03 (May 3, 2023)

  • render: Fix wgpu renderer name

New in Ruffle Nightly 2023-05-02 (May 2, 2023)

  • web: Avoid array.at() for browser compatibility

New in Ruffle Nightly 2023-05-01 (May 1, 2023)

  • avm1: Allow `button.enabled` to hold any value

New in Ruffle Nightly 2023-04-30 (Apr 30, 2023)

  • tests: Test XML.hasOwnProperty

New in Ruffle Nightly 2023-04-29 (Apr 29, 2023)

  • Web: Add extension option for setting 'playerVersion'.
  • Basic input validation UI and logic is also added and improved.

New in Ruffle Nightly 2023-04-28 (Apr 28, 2023)

  • Chore: Use `swf::Point` in many places
  • Convert nearly all instances of `(Twips, Twips)` (maybe besides in
  • `shape_utils.rs`) to `swf::Point<Twips>`.

New in Ruffle Nightly 2023-04-27 (Apr 27, 2023)

  • core: use unified repr for non-static `AvmString`s, interned and not
  • This shrinks the size of `AvmString` back from 3 to 2 usizes.

New in Ruffle Nightly 2023-04-26 (Apr 26, 2023)

  • Avm2/tests: use try_get_object in JSON/Add test for undefined receiver

New in Ruffle Nightly 2023-04-25 (Apr 25, 2023)

  • Extension: Make `Options` extend `BaseLoadOptions`
  • Omit config values from `DEFAULT_OPTIONS`, which are already
  • Part of `DEFAULT_CONFIG` in `ruffle-core`. Also use spread syntax
  • To avoid naming each config that should pass to `ruffle-core`.

New in Ruffle Nightly 2023-04-24 (Apr 24, 2023)

  • chore: Updated translations from Crowdin

New in Ruffle Nightly 2023-04-23 (Apr 23, 2023)

  • avm2: Take a MutationContext instead of an Activation in ClassObject.install_class_vtable_and_slots

New in Ruffle Nightly 2023-04-22 (Apr 22, 2023)

  • web: Use div element for save manager to support browsers without dialog

New in Ruffle Nightly 2023-04-19 (Apr 19, 2023)

  • wgpu: Fix drawing a transparent bitmap with MSAA

New in Ruffle Nightly 2023-04-18 (Apr 18, 2023)

  • avm2: Stub URLLoader.close

New in Ruffle Nightly 2023-04-17 (Apr 17, 2023)

  • i18n: Update zh-tw

New in Ruffle Nightly 2023-04-15 (Apr 15, 2023)

  • Extension: Add autostart to toggle splashScreen/autoplay/unmuteOverlay

New in Ruffle Nightly 2023-04-14 (Apr 14, 2023)

  • avm2: Stub TextField.useRichTextClipboard.

New in Ruffle Nightly 2023-04-12 (Apr 12, 2023)

  • tests: Test XMLList.child

New in Ruffle Nightly 2023-04-10 (Apr 10, 2023)

  • tests: `MovieClip.focusEnabled` in avm1

New in Ruffle Nightly 2023-04-09 (Apr 9, 2023)

  • tests: Test for correct variables in `loadvariables_method` test

New in Ruffle Nightly 2023-04-08 (Apr 8, 2023)

  • avm2: Implement XMLList.copy

New in Ruffle Nightly 2023-04-07 (Apr 7, 2023)

  • avm2: Use AVM error for invalid bitmapdata error

New in Ruffle Nightly 2023-04-06 (Apr 6, 2023)

  • chore: The syntax of Actions if statements genuinely confuses me

New in Ruffle Nightly 2023-04-05 (Apr 5, 2023)

  • web: Use serde rename_all rule
  • Cuts down on some needless verbosity.

New in Ruffle Nightly 2023-04-03 (Apr 3, 2023)

  • avm2: move event dispatch error handling in a single place
  • The `Avm2::{dispatch, broadcast}_event` methods now log and swallow any
  • AVM2 error occuring during the dispatch, instead of repeating the
  • handling code for each caller.
  • This also introduces some behavioral changes:
  • Errors messages are more consistent;
  • For consistency with `broadcast_event`, `dispatch_event` panics if given a non-event object to dispatch.

New in Ruffle Nightly 2023-04-02 (Apr 2, 2023)

  • avm2: Use RegExp.valueOf in RegExp.toString
  • This fixes flag ordering issues

New in Ruffle Nightly 2023-04-01 (Apr 1, 2023)

  • tests: Add test for localToGlobal with zero scale object

New in Ruffle Nightly 2023-03-30 (Mar 30, 2023)

  • render: Remove `RenderBackend::register_glyph_shape`
  • Use just `RenderBackend::register_shape` instead.

New in Ruffle Nightly 2023-03-29 (Mar 29, 2023)

  • web: Run `npm run format`

New in Ruffle Nightly 2023-03-28 (Mar 28, 2023)

  • chore: fix typo in display_object.rs
  • defualt -> default

New in Ruffle Nightly 2023-03-27 (Mar 27, 2023)

  • Avm2: Fire soundComplete events immediately
  • Instead of queueing up these events in the `Activation`,
  • We can fire them immediately by making `AudioManager::update_sounds`
  • A freestanding method that takes in an `UpdateContext`

New in Ruffle Nightly 2023-03-26 (Mar 26, 2023)

  • chore: Rename `NetStream.toggle_pause` to match `StreamManager::toggl e_paused`

New in Ruffle Nightly 2023-03-25 (Mar 25, 2023)

  • Web: Increase spacing between Ruffle logo and options

New in Ruffle Nightly 2023-03-23 (Mar 23, 2023)

  • web: Display config parse errors

New in Ruffle Nightly 2023-03-22 (Mar 22, 2023)

  • chore(deps): lock file maintenance rust dependencies

New in Ruffle Nightly 2023-03-21 (Mar 21, 2023)

  • fix(deps): update rust dependencies
  • `syn` breaking changes:
  • `Method` renamed to `Fn`
  • `extra-traits` feature necessary for `Debug` impls

New in Ruffle Nightly 2023-03-20 (Mar 20, 2023)

  • tests: add tests for XML.parent()

New in Ruffle Nightly 2023-03-19 (Mar 19, 2023)

  • avm2: Implement XMLList.text()

New in Ruffle Nightly 2023-03-18 (Mar 18, 2023)

  • avm2: Convert transform to use ParametersExt

New in Ruffle Nightly 2023-03-17 (Mar 17, 2023)

  • Avm2: Implement xml descendants operator, and XMLList.toXMLString
  • This includes the 'GetDescendants' opcode, which is used by the
  • The 'xml..elementName' syntax. The 'XMLList.toXMLString()
  • Impl makes it much easier to write tests for this.

New in Ruffle Nightly 2023-03-16 (Mar 16, 2023)

  • Avm2: Stub flash.text.TextFormat.display getter and setter.

New in Ruffle Nightly 2023-03-15 (Mar 15, 2023)

  • Avm2: Fix stub type for Responder

New in Ruffle Nightly 2023-03-14 (Mar 14, 2023)

  • tests: Extend URLVariables test

New in Ruffle Nightly 2023-03-13 (Mar 13, 2023)

  • Render: Make retrieve_offscreen_texture pass the raw buffer (#9936)

New in Ruffle Nightly 2023-03-12 (Mar 12, 2023)

  • Support click events on movie clips containing text fields (#9995)
  • Remove code that prevents click events from working on text fields within movie clips

New in Ruffle Nightly 2023-03-11 (Mar 11, 2023)

  • web: Remove the find-the-version-ID extra step and use the version number directly
  • Mozilla actually added this feature in the middle of me building out this PR. How handy!

New in Ruffle Nightly 2023-03-10 (Mar 10, 2023)

  • core: Only apply 'unload' and 'removed' logic to AVM1
  • I've also renamed these methods to 'avm1_unload' and 'avm1_removed', to make it clear that they don't apply to AVM2.
  • This was causing us to incorrectly skip mouse picks, and remove masks.

New in Ruffle Nightly 2023-03-09 (Mar 9, 2023)

  • avm2: Implement avmplus.getQualifiedClassName
  • This appears to be the same function as 'flash.utils.getQualifiedClassName'

New in Ruffle Nightly 2023-03-08 (Mar 8, 2023)

  • avm2: Don't allow mouse picking to hit a mask
  • Masks restrict the region where the maskee can be hit, but the mask cannot itself be the target of a mouse click (assuming that it's on the stage).

New in Ruffle Nightly 2023-03-07 (Mar 7, 2023)

  • chore: Tell renovate to maintain lock files

New in Ruffle Nightly 2023-03-06 (Mar 6, 2023)

  • web: Only report log events to browser timing api if new `profiling`feature is enabled

New in Ruffle Nightly 2023-03-05 (Mar 5, 2023)

  • tests: Ignore stage3d_raytrace on WARP

New in Ruffle Nightly 2023-03-04 (Mar 4, 2023)

  • avm2: Implement Capabilities.isDebugger and stub System.disposeXML
  • These are needed for Solarmax 2

New in Ruffle Nightly 2023-03-03 (Mar 3, 2023)

  • web: Log a message when the preloader configuration option is false

New in Ruffle Nightly 2023-03-02 (Mar 2, 2023)

  • avm2: Workaround haxe calling addChild(this) before super()

New in Ruffle Nightly 2023-03-01 (Mar 1, 2023)

  • tests: Extend loader_applicationDomain test

New in Ruffle Nightly 2023-02-28 (Feb 28, 2023)

  • avm2: Ignore XML comments and processing instructions by default
  • This matches the default value of the settings on XML.

New in Ruffle Nightly 2023-02-27 (Feb 27, 2023)

  • i18n: Update zh-tw (#9749)

New in Ruffle Nightly 2023-02-26 (Feb 26, 2023)

  • avm2: Store interfaces from superclases/superinterfaces in ClassObject (#9728)

New in Ruffle Nightly 2023-02-25 (Feb 25, 2023)

  • web: Use TypeScript project references. This slightly improves TypeScript build times, and allows LSP to work across packages without building `ruffle-core`.

New in Ruffle Nightly 2023-02-24 (Feb 24, 2023)

  • avm2: Use a lookup table for cosine in SoundMixer.computeSpectrum(). This results in 128 times fewer calls to the builtin cosf function.

New in Ruffle Nightly 2023-02-23 (Feb 23, 2023)

  • avm2: Iterate the inheritance chain for class-symbol linkage

New in Ruffle Nightly 2023-02-22 (Feb 22, 2023)

  • swf: Introduce `ConvolutionFilterFlags`

New in Ruffle Nightly 2023-02-20 (Feb 20, 2023)

  • core: Implement Color::to_premultiplied_alpha without floats

New in Ruffle Nightly 2023-02-19 (Feb 19, 2023)

  • avm2: Stub Loader.close

New in Ruffle Nightly 2023-02-18 (Feb 18, 2023)

  • avm1: The this property should be mutable

New in Ruffle Nightly 2023-02-17 (Feb 17, 2023)

  • Port Video to Actionscript

New in Ruffle Nightly 2023-02-16 (Feb 16, 2023)

  • avm1: Add ignored test for strange rewind behavior
  • Ruffle doesn't correctly remove certain objects from the stage when processing an AVM1 rewind goto.

New in Ruffle Nightly 2023-02-15 (Feb 15, 2023)

  • tests: Add test for finddef opcode

New in Ruffle Nightly 2023-02-14 (Feb 14, 2023)

  • avm2: Stub describeType to have .@name work

New in Ruffle Nightly 2023-02-12 (Feb 12, 2023)

  • core: Make SandboxType configurable, and set to 'remote' on web
  • The Newgrounds API checks `Security.sandboxType` to see if it should run in debug mode or not (which determines whether or not medals can actually be unlocked).
  • For now, desktop continues to use `localTrusted` as the default, while web now uses `remote`. We might want to make this configurable at some point, but this should be good enough for now (and better match Flash's behavior).

New in Ruffle Nightly 2023-02-11 (Feb 11, 2023)

  • tests: Update fills_and_lines expected image

New in Ruffle Nightly 2023-02-10 (Feb 10, 2023)

  • avm2: Implement ScopeChain caching

New in Ruffle Nightly 2023-02-09 (Feb 9, 2023)

  • core: Use colorTransform in DisplayObject.setTransform

New in Ruffle Nightly 2023-02-08 (Feb 8, 2023)

  • Chore: Update renovate to only group rust patch dependencies, leave m…
  • …inor/major dependency updates (and any wasm-bindgen) to their own PR

New in Ruffle Nightly 2023-02-07 (Feb 7, 2023)

  • avm1: Correct depth calculation for AVM1 clips pending removal and ad…
  • …d tests

New in Ruffle Nightly 2023-02-06 (Feb 6, 2023)

  • avm2: Fixed bytearray compress/decompress methods setting position of resulting bytearray

New in Ruffle Nightly 2023-02-05 (Feb 5, 2023)

  • tests: Enable tests that no longer need to be ignored

New in Ruffle Nightly 2023-02-04 (Feb 4, 2023)

  • Appease clippy again

New in Ruffle Nightly 2023-02-02 (Feb 2, 2023)

  • avm2: Changed return values of a bunch of stubs per PR feedbck

New in Ruffle Nightly 2023-02-01 (Feb 1, 2023)

  • fix(deps): update rust dependencies

New in Ruffle Nightly 2023-01-31 (Jan 31, 2023)

  • core: Exclude all `node_modules` directories from the reproducible archive.
  • Yes, having local copies of `node_modules` is technically a reproducibility win, but ZIPping them breaks them

New in Ruffle Nightly 2023-01-30 (Jan 30, 2023)

  • chore: Bump h263-rs to latest master

New in Ruffle Nightly 2023-01-29 (Jan 29, 2023)

  • avm2: Implement Sprite.dropTarget - though it's wrong right now

New in Ruffle Nightly 2023-01-28 (Jan 28, 2023)

  • Tests: Move tests away from giant macro to individual test.toml files…
  • … that describe the test

New in Ruffle Nightly 2023-01-27 (Jan 27, 2023)

  • fix(deps): update rust crate webbrowser to 0.8.6

New in Ruffle Nightly 2023-01-26 (Jan 26, 2023)

  • web: Add key code for NumpadEnter

New in Ruffle Nightly 2023-01-25 (Jan 25, 2023)

  • chore: `npm ci` must run before any other Node scripts

New in Ruffle Nightly 2023-01-24 (Jan 24, 2023)

  • chore: `npm ci` must run before any other Node scripts

New in Ruffle Nightly 2023-01-23 (Jan 23, 2023)

  • avm2: added Stage.fullScreenSourceRect stub (#9265)
  • avm2: added Stage.fullScreenSourceRect
  • fixing checks I hope

New in Ruffle Nightly 2023-01-22 (Jan 22, 2023)

  • web: Split out npm build of 'ruffle-core' from other npm modules
  • Running 'npm run build --workspaces' will run the 'build' script for all workspaces, even if one fails. Since all of the other workspaces depend on 'ruffle-core', running them after a ruffle-core build failure just produces useless errors in the CI logs.

New in Ruffle Nightly 2023-01-21 (Jan 21, 2023)

  • avm2: added TextField.restrict stub (#9218)
  • added TextField.restrict stub

New in Ruffle Nightly 2023-01-20 (Jan 20, 2023)

  • ci: Ensure `GHA_REPO_ALIVE` starts off as true

New in Ruffle Nightly 2023-01-19 (Jan 19, 2023)

  • ci: Ensure `GHA_REPO_ALIVE` starts off as true

New in Ruffle Nightly 2023-01-18 (Jan 18, 2023)

  • wgpu: Don't panic if rendering a None bitmap - fixes #9188

New in Ruffle Nightly 2023-01-17 (Jan 17, 2023)

  • web: Enable wgpu-webgl by default

New in Ruffle Nightly 2023-01-15 (Jan 15, 2023)

  • video: Remove unnecessary clone of `frame.rgba`

New in Ruffle Nightly 2023-01-13 (Jan 13, 2023)

  • wgpu: Detect if buffers are unusable on web and fail to create wgpu renderer if so

New in Ruffle Nightly 2023-01-12 (Jan 12, 2023)

  • avm2: Naive DefineButtonSound impl for Avm2Button

New in Ruffle Nightly 2023-01-11 (Jan 11, 2023)

  • avm2: Fix start_drag with negative width or height

New in Ruffle Nightly 2023-01-10 (Jan 10, 2023)

  • avm2: Replace ok_or by ok_or_else

New in Ruffle Nightly 2023-01-08 (Jan 8, 2023)

  • Remove 'gc_context lifetime
  • The latest `gc-arena` makes this unnecessary - we can just use our `'a` lifetime for `MutationContext`

New in Ruffle Nightly 2023-01-07 (Jan 7, 2023)

  • Bump `gc-arena` to current master revision
  • This required small changes to some Debug impls that were missed in #8964

New in Ruffle Nightly 2023-01-06 (Jan 6, 2023)

  • webgl: Added debug info to webgl renderer

New in Ruffle Nightly 2023-01-05 (Jan 5, 2023)

  • Bumps [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) from 0.0.200 to 0.0.206.
  • [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
  • [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)
  • updated-dependencies:
  • dependency-name: "@types/chrome"
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2023-01-04 (Jan 4, 2023)

  • avm2: Fix `for each..in` loops over Dictionary values

New in Ruffle Nightly 2023-01-03 (Jan 3, 2023)

  • tests: Update date tests

New in Ruffle Nightly 2023-01-02 (Jan 2, 2023)

  • Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.2.
  • [Release notes](https://github.com/json5/json5/releases)
  • [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.2)
  • updated-dependencies:
  • dependency-name: json5
  • dependency-type: direct:development

New in Ruffle Nightly 2023-01-01 (Jan 1, 2023)

  • ci: Only make nightly release on ruffle-rs/ruffle

New in Ruffle Nightly 2022-12-30 (Dec 30, 2022)

  • avm2: Throw error in Loader.unload stub

New in Ruffle Nightly 2022-12-29 (Dec 29, 2022)

  • tests: Add test for LoaderContext.applicationDomain

New in Ruffle Nightly 2022-12-25 (Dec 25, 2022)

  • core: Remove some manual `Collect` impls
  • Some were completely unused, while others could be replaced with a `#[derive(Collect)]`

New in Ruffle Nightly 2022-12-22 (Dec 22, 2022)

  • avm2: Convert FrameLabel to AS3, remove define_indirect_properties

New in Ruffle Nightly 2022-12-21 (Dec 21, 2022)

  • Update Loader.as
  • Stub `flash.display.Loader.unload`

New in Ruffle Nightly 2022-12-19 (Dec 19, 2022)

  • avm2: Stub InteractiveObject.focusRect

New in Ruffle Nightly 2022-12-18 (Dec 18, 2022)

  • ci: Fix typo

New in Ruffle Nightly 2022-12-17 (Dec 17, 2022)

  • chore: Inherit cargo metadata from workspace
  • Use workspace inheritance added in Rust 1.64 to de-duplicate various settings across all packages.

New in Ruffle Nightly 2022-12-16 (Dec 16, 2022)

  • Ci: Do simple numerical actions updates

New in Ruffle Nightly 2022-12-15 (Dec 15, 2022)

  • wgpu: Bump to 0.14.2

New in Ruffle Nightly 2022-12-14 (Dec 14, 2022)

  • web: Add version number requested in #8021
  • Change the compile time "macros" such as `%VERSION_NUMBER%` to be
  • contained in only one file `build-info.ts`.

New in Ruffle Nightly 2022-12-13 (Dec 13, 2022)

  • avm2: Implement basic flash.net.navigateToURL

New in Ruffle Nightly 2022-12-12 (Dec 12, 2022)

  • avm2: Stub SharedObject.close

New in Ruffle Nightly 2022-12-07 (Dec 7, 2022)

  • core: Fix failing builds without avm_debug feature

New in Ruffle Nightly 2022-12-06 (Dec 6, 2022)

  • avm2: Fix indirect event dispatching

New in Ruffle Nightly 2022-12-05 (Dec 5, 2022)

  • Fix BitmapHandle downcasting in webgl and canvas backends
  • There were two issues:
  • We were accidentally calling `as_any` on `handle,` rather than`handle.0`
  • Calling `as_any` can invoke the wrong implementation, depending on what traits are in scope. We want the method implemented on the underlying type (`RegistryData`) to be used, but if `Downcast` is explicitly imported, then we appear to invoke it on the trait object`dyn BitmapHandleImpl` itself (using the fact that trait objects themselves implement `Any`). We now explicitly call the generated method on the trait object, which avoids this issue.

New in Ruffle Nightly 2022-12-04 (Dec 4, 2022)

  • swf: make Clippy happy

New in Ruffle Nightly 2022-12-03 (Dec 3, 2022)

  • Revert "ci: Upgrade Node 12 actions workflows"
  • This reverts commit eae04a1884c2534574dd62e60abf84d548acd092.

New in Ruffle Nightly 2022-12-02 (Dec 2, 2022)

  • build(deps-dev): bump stylelint-config-prettier in /web
  • Bumps [stylelint-config-prettier](https://github.com/prettier/stylelint-config-prettier) from 9.0.3 to 9.0.4.
  • [Release notes](https://github.com/prettier/stylelint-config-prettier/releases)
  • [Commits](https://github.com/prettier/stylelint-config-prettier/compare/v9.0.3...v9.0.4)
  • updated-dependencies:
  • dependency-name: stylelint-config-prettier
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-12-01 (Dec 1, 2022)

  • build(deps): bump insta from 1.21.1 to 1.21.2
  • Bumps [insta](https://github.com/mitsuhiko/insta) from 1.21.1 to 1.21.2.
  • [Release notes](https://github.com/mitsuhiko/insta/releases)
  • [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/mitsuhiko/insta/compare/1.21.1...1.21.2)
  • updated-dependencies:
  • dependency-name: insta
  • dependency-type: direct:production
  • update-type: version-update:semver-patch
  • ...

New in Ruffle Nightly 2022-11-28 (Nov 28, 2022)

  • avm2: Address feedback to DropShadowFilter stub

New in Ruffle Nightly 2022-11-27 (Nov 27, 2022)

  • Don't include all the features in chrono to avoid including the vulnerable time dependency

New in Ruffle Nightly 2022-11-26 (Nov 26, 2022)

  • Fix rebase fallout

New in Ruffle Nightly 2022-11-25 (Nov 25, 2022)

  • docs: Fix up Twips2D doctests

New in Ruffle Nightly 2022-11-24 (Nov 24, 2022)

  • core: Only unload D.O.s when they are removed from the render list
  • D.O.s removed by the timeline may only be removed from the depth list (if they were manipulated by AS3 scripts), but their unload method would still be called, which is wrong.

New in Ruffle Nightly 2022-11-23 (Nov 23, 2022)

  • avm1: Fix `ExternalInterface.call` with blank strings in SWFv8

New in Ruffle Nightly 2022-11-22 (Nov 22, 2022)

  • build(deps): bump serde_json from 1.0.87 to 1.0.88
  • Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.87 to 1.0.88.
  • [Release notes](https://github.com/serde-rs/json/releases)
  • [Commits](https://github.com/serde-rs/json/compare/v1.0.87...v1.0.88)
  • updated-dependencies:
  • dependency-name: serde_json
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-11-19 (Nov 19, 2022)

  • avm2: Refactor context menu field bool checks into macro

New in Ruffle Nightly 2022-11-12 (Nov 12, 2022)

  • avm2: Implement SoundMixer.computeSpectrum()

New in Ruffle Nightly 2022-11-11 (Nov 11, 2022)

  • core: rename TInteractiveObject::{ibase => raw_interactive}(_mut)
  • To match with TDisplayObjectContainer::raw_container(_mut) introduced
  • in previous commit.

New in Ruffle Nightly 2022-11-08 (Nov 8, 2022)

  • build(deps): bump clap from 4.0.18 to 4.0.22
  • Bumps [clap](https://github.com/clap-rs/clap) from 4.0.18 to 4.0.22.
  • [Release notes](https://github.com/clap-rs/clap/releases)
  • [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/clap-rs/clap/compare/v4.0.18...v4.0.22)
  • updated-dependencies:
  • dependency-name: clap
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-11-07 (Nov 7, 2022)

  • Web: Update `package-lock.json`.
  • Using `npm audit fix`.

New in Ruffle Nightly 2022-11-04 (Nov 4, 2022)

  • wgpu: Use `Depth24PlusStencil8` again
  • This reverts #8297. Instead, pin `wgpu-hal` and `wgpu-types` to
  • include https://github.com/gfx-rs/wgpu/pull/3165, which fixes
  • https://github.com/gfx-rs/wgpu/issues/3112.

New in Ruffle Nightly 2022-11-03 (Nov 3, 2022)

  • web: Fix `temp-dir` upgrade
  • `temp-dir` 3.0.0 is now pure ESM. As such, it no longer can be `require`d. To workaround this, use `await import` instead.
  • In the long-term, it might be worth converting the `sign_xpi.js` script itself to ESM.

New in Ruffle Nightly 2022-11-02 (Nov 2, 2022)

  • build(deps-dev): bump @types/chrome from 0.0.197 to 0.0.200 in /web
  • Bumps [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) from 0.0.197 to 0.0.200.
  • [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
  • [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)
  • updated-dependencies:
  • dependency-name: "@types/chrome"
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-11-01 (Nov 1, 2022)

  • build(deps): bump winit from 0.27.4 to 0.27.5
  • Bumps [winit](https://github.com/rust-windowing/winit) from 0.27.4 to 0.27.5.
  • [Release notes](https://github.com/rust-windowing/winit/releases)
  • [Changelog](https://github.com/rust-windowing/winit/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/rust-windowing/winit/compare/v0.27.4...v0.27.5)
  • updated-dependencies:
  • dependency-name: winit
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-10-30 (Oct 30, 2022)

  • tests: Expand `read_push`
  • Test that invalid value types are ignored.

New in Ruffle Nightly 2022-10-28 (Oct 28, 2022)

  • core: Fix clippy format string lint

New in Ruffle Nightly 2022-10-27 (Oct 27, 2022)

  • core: Extract `Graphic::drawing`
  • That returns a non-`Option` `Drawing`, and has no `.unwrap()`s.

New in Ruffle Nightly 2022-10-26 (Oct 26, 2022)

  • docs: Linux dependencies list (take two) (#8381)
  • Updating Linux build deps
  • escaping characters in updated Linux deps
  • formatting
  • formatting
  • Update README.md
  • simplifying previous list
  • line breaks

New in Ruffle Nightly 2022-10-25 (Oct 25, 2022)

  • build(deps): bump anyhow from 1.0.65 to 1.0.66
  • Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.65 to 1.0.66.
  • [Release notes](https://github.com/dtolnay/anyhow/releases)
  • [Commits](https://github.com/dtolnay/anyhow/compare/1.0.65...1.0.66)
  • updated-dependencies:
  • dependency-name: anyhow
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-10-24 (Oct 24, 2022)

  • core: Fixed a typo in messages on pressing Ctrl+Alt+D (#8360)

New in Ruffle Nightly 2022-10-23 (Oct 23, 2022)

  • avm2: Stub Graphics.beginGradientFill

New in Ruffle Nightly 2022-10-21 (Oct 21, 2022)

  • The underlying flag currently does nothing, but this allows
  • SWFs to continue executing.

New in Ruffle Nightly 2022-10-19 (Oct 19, 2022)

  • desktop: Allow specifying the load behavior for desktop

New in Ruffle Nightly 2022-10-18 (Oct 18, 2022)

  • render: Bail on attempts on panicking recursive render, part 2.

New in Ruffle Nightly 2022-10-16 (Oct 16, 2022)

  • wgpu: Use `Depth32FloatStencil8` over `Depth24PlusStencil8`
  • Credit to @crumblingstatue.
  • Per `wgpu` documentation, the latter has wider support than the former.
  • Fixes #8295, #8296.

New in Ruffle Nightly 2022-10-15 (Oct 15, 2022)

  • chore: Extract Cargo `edition` to `[workspace.package]`
  • This is possible since Rust 1.64.0: https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html#cargo-improvements-workspace-inheritance-and-multi-target-builds

New in Ruffle Nightly 2022-10-14 (Oct 14, 2022)

  • swf: Extract read/write of filters to separate functions
  • Also unify the identical `GradientGlowFilter` and `GradientBevelFilter`structs into `GradientFilter`.

New in Ruffle Nightly 2022-10-13 (Oct 13, 2022)

  • We don't currently fire any events, but we store the object so that listeners will be correctly registered.

New in Ruffle Nightly 2022-10-12 (Oct 12, 2022)

  • desktop: Avoid deprecated `winit::EventLoop::with_user_event()`
  • Use `EventLoopBuilder::with_user_event().build()` instead, as suggested by the deprecation warning.

New in Ruffle Nightly 2022-10-11 (Oct 11, 2022)

  • Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.85 to 1.0.86.
  • [Release notes](https://github.com/serde-rs/json/releases)
  • [Commits](https://github.com/serde-rs/json/compare/v1.0.85...v1.0.86)
  • updated-dependencies:
  • dependency-name: serde_json
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-10-10 (Oct 10, 2022)

  • render: Bail on attempts on panicking recursive render. (#8248)

New in Ruffle Nightly 2022-10-08 (Oct 8, 2022)

  • avm2: Port `flash.ui.Keyboard` to ActionScript

New in Ruffle Nightly 2022-10-07 (Oct 7, 2022)

  • webgl: vertex array, buffer and texture cleanup

New in Ruffle Nightly 2022-10-05 (Oct 5, 2022)

  • Bumps [chromedriver] from 104.0.0 to 106.0.1.
  • updated-dependencies:
  • dependency-name: chromedriver
  • dependency-type: direct:development
  • update-type: version-update:semver-major

New in Ruffle Nightly 2022-10-04 (Oct 4, 2022)

  • build(deps): bump env_logger from 0.9.0 to 0.9.1
  • Bumps [env_logger](https://github.com/env-logger-rs/env_logger) from 0.9.0 to 0.9.1.
  • [Release notes](https://github.com/env-logger-rs/env_logger/releases)
  • [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/env-logger-rs/env_logger/compare/v0.9.0...v0.9.1)
  • updated-dependencies:
  • dependency-name: env_logger
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-10-03 (Oct 3, 2022)

  • avm2: Array push/unshift return new length, like Vector

New in Ruffle Nightly 2022-09-29 (Sep 29, 2022)

  • avm2: Stub LocalConnection

New in Ruffle Nightly 2022-09-28 (Sep 28, 2022)

  • avm2: Added flash.net.URLVariables

New in Ruffle Nightly 2022-09-27 (Sep 27, 2022)

  • Revert "avm1: Remove `Value::to_primitive_num`"

New in Ruffle Nightly 2022-09-25 (Sep 25, 2022)

  • avm1: Migrate `ColorTransform` to `NativeObject`.

New in Ruffle Nightly 2022-09-24 (Sep 24, 2022)

  • avm2: Implement undocumented 'Function.length' property
  • This returns the function's parameter count, and is used by the Starling
  • framework to implement a custom event dispatcher.

New in Ruffle Nightly 2022-09-23 (Sep 23, 2022)

  • avm2: Switch XML & XMLList to actionscript

New in Ruffle Nightly 2022-09-22 (Sep 22, 2022)

  • Avoid some `Vec::with_capacity` and de-duplicate code.

New in Ruffle Nightly 2022-09-21 (Sep 21, 2022)

  • avm2: Support enumerating null/undefined

New in Ruffle Nightly 2022-09-19 (Sep 19, 2022)

  • avm2: Add GameInput and GameInputEvent

New in Ruffle Nightly 2022-09-18 (Sep 18, 2022)

  • avm2: Implement IDataOutput

New in Ruffle Nightly 2022-09-17 (Sep 17, 2022)

  • avm2: Don't attempt to print registers that are out-of-bounds.

New in Ruffle Nightly 2022-09-16 (Sep 16, 2022)

  • avm2: Implement missing enums

New in Ruffle Nightly 2022-09-15 (Sep 15, 2022)

  • 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.

New in Ruffle Nightly 2022-09-14 (Sep 14, 2022)

  • Allow clippy::needless_lifetimes to keep explicit 'gc parameter
  • This makes it clear what the lifetime is used for.

New in Ruffle Nightly 2022-09-13 (Sep 13, 2022)

  • build(deps): bump webbrowser from 0.7.1 to 0.8.0
  • Bumps [webbrowser](https://github.com/amodm/webbrowser-rs) from 0.7.1 to 0.8.0.
  • updated-dependencies:
  • dependency-name: webbrowser
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-09-12 (Sep 12, 2022)

  • desktop: Always mark task as ready on wake
  • We were incorrectly skipping the call to `task.set_ready` if `self.waiting_for_poll` was set. The `waiting_for_poll` flag should only be used to avoid redundant messages being sent into the event loop.
  • This was causing us to ignore wakeups if more than one wakup arrived in between calls to `poll_all`.

New in Ruffle Nightly 2022-09-11 (Sep 11, 2022)

  • core: Use correct background alpha in BitmapData.draw
  • Previously, we would always use a transparent background, even if the BitmapData is not transparent. This would normally be corrected on the next frame when we copied the pixels to the CPU. However, if an SWF ran `BitmapData.draw` on every frame, this would never be corrected.

New in Ruffle Nightly 2022-09-10 (Sep 10, 2022)

  • Core: Update dirty BitmapData before rendering
  • We now have a `MutationContext` available, so this doesn't need
  • To be done in `run_frame`

New in Ruffle Nightly 2022-09-08 (Sep 8, 2022)

  • avm2: Small cleanup

New in Ruffle Nightly 2022-09-07 (Sep 7, 2022)

  • avm2: Implement `BitmapData.draw` for `wgpu` backend (#7254)
  • avm2: Implement `BitmapData.draw` for `wgpu` backend
  • This method requires us to have the ability to render directly to a texture. Fortunately, the `wgpu` backend already supports this in the form of `TextureTarget`. However, the rendering code required some refactoring in order to avoid creating duplicate `wgpu` resources.
  • The current implementation blocks on copying the pixels back from the GPU to the CPU, so that we can immediately set them in
  • the Ruffle `BitmapData`. This is likely very inefficient, but will work for a first implementation.
  • In the future, we could explore allowing the CPU image data and GPU texture to be out of sync, and only synchronized when explicitly necessary (e.g. on `getPixel` or `setPixel` calls).
  • Rename `with_offscreen_backend` to `render_offscreen` and use Bitmap
  • Don't panic when backend doesn't implement `render_offscreen`

New in Ruffle Nightly 2022-09-06 (Sep 6, 2022)

  • avm2: Correctly implement DisplayObject.mask
  • The stub implementation was breaking code that relied on being able to set a value for 'mask' and then retrieve it (which used to work on a dynamic class like `MovieClip`).

New in Ruffle Nightly 2022-09-05 (Sep 5, 2022)

  • avm2: Swap Multiname flags to bitflags

New in Ruffle Nightly 2022-09-04 (Sep 4, 2022)

  • swf: Merge `read_color_transform_no_alpha` into `read_color_transform`
  • Differentiate between the cases using a new `has_alpha` boolean
  • parameter.

New in Ruffle Nightly 2022-09-03 (Sep 3, 2022)

  • avm1: Introduce `NativeObject`
  • The existing `Object` enum representation is problematic for inherited native objects, since "regular" `ScriptObject`s cannot be turned into native objects, but rather a completely new native object needs to be created. `TObject::create_bare_object` is an attempt to aid this situation, but it works only for `ActionExtends` inheritance, and not when the user manually wires up `prototype`/`__proto__` (#701.
  • In Flash, it seems like derived constructors initially have a "regular" `this` object. But once the `super(` constructor is invoked, the same `this` object becomes a native object.
  • To allow this in Ruffle, introduce a new `NativeObject` enum, and store it as a member in `ScriptObject`. For a start, move `TextFormatObject` from the `Object` enum to `NativeObject`. The plan is to gradually move all `Object` enum variants to `NativeObject`, except for `ScriptObject`.

New in Ruffle Nightly 2022-09-02 (Sep 2, 2022)

  • Updated-dependencies:
  • Dependency-name: "@wdio/cli"
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-08-30 (Aug 30, 2022)

  • core: Simplify `DisplayObjectContainer::highest_depth`
  • The `less_than` parameter remained just `Depth::MAX` since #7199, which makes it useless. As such it can be removed.

New in Ruffle Nightly 2022-08-29 (Aug 29, 2022)

  • tests: Add a test for class singleton properties.

New in Ruffle Nightly 2022-08-28 (Aug 28, 2022)

  • Web: Disallow imports not used as values
  • Configure [`importsNotUsedAsValues`](https://www.typescriptlang.org/tsconfig#importsNotUsedAsValues) to `error`, and switch from `import` to `import type` where needed. Also remove the `strict` configuration, as it's inherited from`@tsconfig/recommended`.

New in Ruffle Nightly 2022-08-27 (Aug 27, 2022)

  • web: Add debug info context menu item

New in Ruffle Nightly 2022-08-26 (Aug 26, 2022)

  • avm2: Port `Math` to ActionScript.

New in Ruffle Nightly 2022-08-25 (Aug 25, 2022)

  • core: Remove unneeded `Box`

New in Ruffle Nightly 2022-08-24 (Aug 24, 2022)

  • avm2: Set URLRequest.method default to GET
  • This was missed when I added 'method'

New in Ruffle Nightly 2022-08-23 (Aug 23, 2022)

  • updated-dependencies:
  • dependency-name: serde
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-08-21 (Aug 21, 2022)

  • web: Allow modifying player volume via JS

New in Ruffle Nightly 2022-08-20 (Aug 20, 2022)

  • demo: Make open-modal kebab-case

New in Ruffle Nightly 2022-08-19 (Aug 19, 2022)

  • avm1: Wire up Button.blendMode

New in Ruffle Nightly 2022-08-18 (Aug 18, 2022)

  • avm2: Convert filters to ActionScript
  • We still don't implement the actual filter logic for `DisplayObject`, but the classes themselves are fully implemented.

New in Ruffle Nightly 2022-08-17 (Aug 17, 2022)

  • swf: Remove `#[allow(clippy::derive_partial_eq_without_eq)`
  • https://github.com/rust-lang/rust-clippy/issues/8867 is fixed, and a false positive is no longer reported.

New in Ruffle Nightly 2022-08-16 (Aug 16, 2022)

  • build(deps): bump bytemuck from 1.11.0 to 1.12.0
  • Bumps [bytemuck](https://github.com/Lokathor/bytemuck) from 1.11.0 to 1.12.0.
  • updated-dependencies:
  • dependency-name: bytemuck
  • dependency-type: direct:production
  • update-type: version-update:semver-minor
  • Signed-off-by: dependabot[bot]

New in Ruffle Nightly 2022-08-15 (Aug 15, 2022)

  • This builds off of the previous work for `ScriptObject` and `ClassObject`. We now print both the class name and the stored `DisplayObject`.

New in Ruffle Nightly 2022-08-14 (Aug 14, 2022)

  • avm2: Stub TimerEvent.updateAfterEvent
  • This is the last stub needed for Wonderputt to reach the main game screen.
  • As far as I know, ActionScript cannot observe a frame being rendered, so implementing this method isn't actually necessary for correctness.
  • The benefit of implementing this would be to make certain animations appear smoother, since we'll render changes to the scene without needing to wait for the next frame. However, actually rendering *immediately* after the event would require some refactoring - we have a `&mut UpdateContext` while running timers, but we'd need to bail out and obtain a `&mut Player`.

New in Ruffle Nightly 2022-08-13 (Aug 13, 2022)

  • Into `namespace.rs`, `multiname.rs` and `qname.rs`, for better code
  • organization.

New in Ruffle Nightly 2022-08-12 (Aug 12, 2022)

  • avm2: Implement 'throw' opcode
  • We currently lack the ability to preserve the original `Value<'gc>` in the error, so we're forced to stringify the error.
  • This means that only typeless 'catch' blocks will work properly - however, they're the only kind of 'catch' block that we currently implement. Implementing support for typed 'catch' blocks will naturally allow us to preserve the original 'Value<'gc>' in the 'throw' implementation, since we'll need to switch to a custom `Error<'gc>`
  • type.

New in Ruffle Nightly 2022-08-10 (Aug 10, 2022)

  • address review comments

New in Ruffle Nightly 2022-08-09 (Aug 9, 2022)

  • build(deps): bump quote from 1.0.20 to 1.0.21
  • Bumps [quote](https://github.com/dtolnay/quote) from 1.0.20 to 1.0.21.
  • [Release notes](https://github.com/dtolnay/quote/releases)
  • [Commits](https://github.com/dtolnay/quote/compare/1.0.20...1.0.21)
  • updated-dependencies:
  • dependency-name: quote
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-08-07 (Aug 7, 2022)

  • core: Require `target` in `NavigatorBackend::navigate_to_url`
  • Make the `target` parameter just a `String` instead of an `Option<String>`. `None` is not needed as it's totally equivalent to an empty string.

New in Ruffle Nightly 2022-08-06 (Aug 6, 2022)

  • avm2: Include class name in ScriptObject debug (#7512)
  • avm2: Include class name in ScriptObject debug
  • Currently, the `ScriptObject` debug impl is almost useless - while you determine if two printed objects are the same
  • by comparing the pointer value, you'll have no idea what kind of object it actually is.
  • This PR now formats the `ScriptObject` output as a struct, printing a (fake) "class" field containing the class name.
  • Before/after:
  • ```
  • [ERROR ruffle_core::avm2::activation] AVM2 error: Cannot coerce Object(ScriptObject(ScriptObject(GcCell(Gc { ptr: 0x55f863936db8 })))) to an QName { ns: Private("Test.as$38"), name: "Second" }
  • [ERROR ruffle_core::avm2::activation] AVM2 error: Cannot coerce Object(ScriptObject(ScriptObject { class: "Object", ptr: 0x55ee0ad161e0 })) to an QName { ns: Private("Test.as$38"), name: "Second" }
  • ```
  • Getting access to the class name from a `Debug` impl is tricky:
  • Developers can (and should be able to) insert logging statements whereever they want, so any `GcCell` may be mutably borrowed.
  • Panics in debug impls are extremely frustrating to deal with, so I've ensured that we only use `try_borrow` at each step.
  • If any of the attempted borrows fail, we print out an error message in the "class_name" field, but we're still able to print the
  • rest of the `ScriptObject`.
  • Additionally, we have no access to a `MutationContext`, so we cannot allocate a new `AvmString`. To get around this,
  • I've created a new method `QName::to_qualified_name_no_mc`, which uses an `Either` to return a `WString` instead of allocating an `AvmString`. This is more cumbersome to work with than the nrmal `QName::to_qualified_name`, so we'll only want to use it when we have no other choice.

New in Ruffle Nightly 2022-08-04 (Aug 4, 2022)

  • avm2: Continue to process event when a handler produces an error
  • An exception thrown by one event handler shoud not prevent other event handlers from running on this same event. Some SWFs like Wonderputt depend on this behavior, as they have buggy event handlers that throw errors.

New in Ruffle Nightly 2022-08-03 (Aug 3, 2022)

  • web: Fix `sign-addon` upgrade

New in Ruffle Nightly 2022-08-02 (Aug 2, 2022)

  • Bumps [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio) from 7.20.3 to 7.20.7.
  • [Release notes](https://github.com/webdriverio/webdriverio/releases)
  • [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/webdriverio/webdriverio/compare/v7.20.3...v7.20.7)
  • updated-dependencies:
  • dependency-name: "@wdio/mocha-framework"
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-08-01 (Aug 1, 2022)

  • avm2: Store PropertyClass in `VtableData`
  • Calling `get_trait` copies the returned `Property`, so the caching we performed in `PropertyClass` was never actually getting used.
  • Instead, we now store our `PropertyClass` values in a `Vec` indexed by slot id. `set_property` and `init_property` now perform
  • coercions by going through the `VTable,` which writes the updated`PropertyClass` back into the array.

New in Ruffle Nightly 2022-07-31 (Jul 31, 2022)

  • avm2: Fix parsing of methods with more than 127 arguments.

New in Ruffle Nightly 2022-07-30 (Jul 30, 2022)

  • tests: Add `biturshift`
  • Also add a SWF8 variant to test its special behavior.

New in Ruffle Nightly 2022-07-26 (Jul 26, 2022)

  • build(deps): bump clap from 3.2.14 to 3.2.15
  • Bumps [clap](https://github.com/clap-rs/clap) from 3.2.14 to 3.2.15.
  • [Release notes](https://github.com/clap-rs/clap/releases)
  • [Changelog](https://github.com/clap-rs/clap/blob/v3.2.15/CHANGELOG.md)
  • [Commits](https://github.com/clap-rs/clap/compare/v3.2.14...v3.2.15)
  • updated-dependencies:
  • dependency-name: clap
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-07-25 (Jul 25, 2022)

  • webgl: Avoid zeroing `renderbuffer_{width,height}`
  • This basically reverts #5737 and #6458 for the WebGL backend, which regressed a bug where setting the style `display: none;` to a Ruffle player logged many WebGL warnings to the console. This happened because `renderbuffer_width` and `renderbuffer_height` were set to zero, leading to problems when trying to pass them to WebGL APIs.
  • Avoid such situation by ensuring that `renderbuffer_width` and `renderbuffer_height` are at least `1`, exactly as done before.
  • Also add a comment that explains why `.clamp()` isn't used.
  • Fixes #1264.

New in Ruffle Nightly 2022-07-24 (Jul 24, 2022)

  • core: Remove some dead `DisplayObject` methods

New in Ruffle Nightly 2022-07-23 (Jul 23, 2022)

  • Avm2: implement string replace(string, function) (#7456)
  • Avm2: implement string replace where pattern is string and replacement is a function
  • Removed unnecessary vec!
  • Fixed "no newline at the end of file"

New in Ruffle Nightly 2022-07-22 (Jul 22, 2022)

  • avm2: Add support for playerglobal instance allocators
  • This commit adds support for combining instance allocators with ActionScript playerglobal class definitions. This is activated by defining the metadata `[Ruffle(InstanceAllocator = "true")]` on the ActionScript class definition.
  • The implementation of this feature is very similar to native methods:`build_playerglobal` checks for the metadata described above, and defines a const `NATIVE_INSTANCE_ALLOCATOR_TABLE` mapping class ids to function pointers.
  • To demonstrate this feature, I've converted `Event` to ActionScript (keeping the existing instance allocator function).
  • I've also converted `ActivityEvent` and `ContextMenuEvent` to `ActionScript`, to demonstrate how this simplifies inheritance. In a future PR, we can convert the remaining events to ActionScript, and remove the `EventData` enum entirely.
  • Unfortunately, `flex-sdk`'s `asc.jar` compiler strips out all metadata when the `-optimize` option is passed. As a result, I forked
  • `flex-sdk` and disabled this behavior: https://github.com/ruffle-rs/flex-sdk/releases/tag/ruffle-1.0.0
  • The modified `asc.jar` (built from the forked repository) is included in this PR, and replaces the our previous 'asc.jar'
  • downloaded from the official Flex SDK release.
  • Change metadata to `[Ruffle(InstanceAllocator)]`
  • Strip out metadata before saving bytecode

New in Ruffle Nightly 2022-07-21 (Jul 21, 2022)

  • web: Hide loading screen when root movie download fails

New in Ruffle Nightly 2022-07-20 (Jul 20, 2022)

  • canvas: Fix transforming of gradient/bitmap strokes

New in Ruffle Nightly 2022-07-19 (Jul 19, 2022)

  • updated-dependencies:
  • dependency-name: symphonia
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-07-18 (Jul 18, 2022)

  • avm2: Migrate ContextMenu-related classes to AS

New in Ruffle Nightly 2022-07-16 (Jul 16, 2022)

  • avm2: Inline `Activation::run_stack_frame_for_script`
  • This reduces some complexity.

New in Ruffle Nightly 2022-07-15 (Jul 15, 2022)

  • chore: Fix lint

New in Ruffle Nightly 2022-07-12 (Jul 12, 2022)

  • scanner: Fix `path-slash` update
  • As mentioned in the [CHANGELOG.md](https://github.com/rhysd/path-slash/blob/master/CHANGELOG.md#v020---05-jul-2022),
  • `to_slash_lossy` now returns `Cow<'_, str>` instead of `String`.

New in Ruffle Nightly 2022-07-11 (Jul 11, 2022)

  • web: Make preloader position relative

New in Ruffle Nightly 2022-07-10 (Jul 10, 2022)

  • avm2: Extract `MethodFlags` enum

New in Ruffle Nightly 2022-07-08 (Jul 8, 2022)

  • web: Construct relative SWF URLs using document base

New in Ruffle Nightly 2022-07-07 (Jul 7, 2022)

  • Nightly 2022-07-07 Pre-release
  • wstr: Implement `ToOwned` for `WStr`
  • Similarly to how `str` implements `ToOwned`, and `From<&str> for String`
  • forwards to `to_owned()`.
  • This will allow defining `Cow<WStr>`.

New in Ruffle Nightly 2022-07-06 (Jul 6, 2022)

  • updated-dependencies:
  • dependency-name: serde_json
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-07-05 (Jul 5, 2022)

  • updated-dependencies:
  • - dependency-name: bytemuck
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-07-04 (Jul 4, 2022)

  • tests: Add test for register preload order

New in Ruffle Nightly 2022-07-03 (Jul 3, 2022)

  • ebgl/wgpu: Omit strokes when drawing a mask stencil
  • Adjust `common_tess` to add an additional `mask_index_count` to draws. This is used to not render strokes when drawing a shape as a mask stencil. Fixes #7027.

New in Ruffle Nightly 2022-07-02 (Jul 2, 2022)

  • build(deps-dev): bump typedoc from 0.22.17 to 0.23.3 in /web
  • Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.17 to 0.23.3.
  • [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
  • [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.17...v0.23.3)
  • updated-dependencies:
  • dependency-name: typedoc
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-06-30 (Jun 30, 2022)

  • Handle the case where both preload aud suppress flags are set for the same variable;
  • Remove `arguments` field in `Activation`; instead use a normal local definition;
  • When `suppress_this` is set, inherit the `this` value from parent activation. (This isn't entirely correct, as FP's `this` is mutable and seems to be part of the scope chain, but this would require a larger refactoring)

New in Ruffle Nightly 2022-06-29 (Jun 29, 2022)

  • avm2: Declare 'dataFormat' property on URLLoader
  • This ensures that a sealed subclass can still access it.

New in Ruffle Nightly 2022-06-28 (Jun 28, 2022)

  • build(deps): bump gif from 0.11.3 to 0.11.4
  • Bumps [gif](https://github.com/image-rs/image-gif) from 0.11.3 to 0.11.4.
  • [Release notes](https://github.com/image-rs/image-gif/releases)
  • [Changelog](https://github.com/image-rs/image-gif/blob/master/Changes.md)
  • [Commits](https://github.com/image-rs/image-gif/compare/v0.11.3...v0.11.4)
  • updated-dependencies:
  • dependency-name: gif
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-06-25 (Jun 25, 2022)

  • avm2: Convert flash.geom.Matrix to ActionScript
  • I've kept the rust `flash.geom` module, even though it's now empty, since we'll need to add things like `flash.geom.Transform` native methods in the future.

New in Ruffle Nightly 2022-06-23 (Jun 23, 2022)

  • tests: Expand and format `as3_parse_int`

New in Ruffle Nightly 2022-06-22 (Jun 22, 2022)

  • Build(deps): bump syn from 1.0.96 to 1.0.98
  • Bumps [syn](https://github.com/dtolnay/syn) from 1.0.96 to 1.0.98.
  • [Release notes](https://github.com/dtolnay/syn/releases)
  • [Commits](https://github.com/dtolnay/syn/compare/1.0.96...1.0.98)
  • Updated-dependencies:
  • Dependency-name: syn
  • dependency-type: direct:production
  • update-type: version-update:semver-patch
  • Signed-off-by: dependabot[bot] <[email protected]>

New in Ruffle Nightly 2022-06-20 (Jun 20, 2022)

  • docs: Improve `CONTRIBUTING.md`
  • Make some general adjustments, and better document how to compile ActionScript tests.

New in Ruffle Nightly 2022-06-19 (Jun 19, 2022)

  • avm2: Port `AccessibilityProperties` to ActionScript

New in Ruffle Nightly 2022-06-18 (Jun 18, 2022)

  • chore: Resolve `clap` deprecation warnings
  • As suggested in https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#320---2022-06-13.

New in Ruffle Nightly 2022-06-16 (Jun 16, 2022)

  • 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.

New in Ruffle Nightly 2022-06-14 (Jun 14, 2022)

  • Bumps [bitstream-io](https://github.com/tuffy/bitstream-io) from 1.3.0 to 1.5.0.
  • [Release notes](https://github.com/tuffy/bitstream-io/releases)
  • [Commits](https://github.com/tuffy/bitstream-io/compare/v1.3.0...v1.5.0)
  • updated-dependencies:
  • dependency-name: bitstream-io
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-06-12 (Jun 12, 2022)

  • render: Remove unused `unmultiply_alpha_rgba`

New in Ruffle Nightly 2022-06-11 (Jun 11, 2022)

  • Remove now-unused `lowest_depth` method

New in Ruffle Nightly 2022-06-09 (Jun 9, 2022)

  • chore: Fix latest Clippy warnings

New in Ruffle Nightly 2022-06-07 (Jun 7, 2022)

  • Previously, there was an off-by-one bug in `get_enumerant_name` which caused us to produce a spurious 'null' as a key However, the 'dictionary_foreach' test only checked that certain keys were present, so the presence of an additional key didn't break the test
  • This commit makes Dictionary enumerants behave in the same way as Array enumerants - all of the object-specific enumerants in this case, the non-primitive dicitonar keys) come first followed by 'base' enumerants from ScriptObject (in this case primtive/String keys). Additionally, `setPropertyIsEnumerable` is now ignored for `Dictionary`, consistent with Flash's behavior
  • The `dictionary_foreach` test is updated to print out all of the keys when inspecting the dictionary. Since the enumeration order is unstable (under both Flash and Ruffle) due to the dependency on pointer hashing, the test sorts the keys before printing them. This ensures that we get stable output which is consistent between Ruffle and Flash

New in Ruffle Nightly 2022-06-05 (Jun 5, 2022)

  • avm2: Make `Array.pop` actually pop from the back
  • The loop to search for a `non_hole` was missing a `break;`, so it would actually find the *first* non-hole, rather than than the last. This was not caught by the test, since there was only one "real" element in the array (the other one was set on 'Array.prototype')

New in Ruffle Nightly 2022-06-02 (Jun 2, 2022)

  • build(deps-dev): bump copy-webpack-plugin from 10.2.4 to 11.0.0 in /web
  • Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 10.2.4 to 11.0.0.
  • [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases)
  • [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v10.2.4...v11.0.0)
  • updated-dependencies:
  • dependency-name: copy-webpack-plugin
  • dependency-type: direct:development
  • update-type: version-update:semver-major

New in Ruffle Nightly 2022-06-01 (Jun 1, 2022)

  • render: Move `srgb_to_linear` to `common_tess`
  • Since it's the only user of it. Also make it mutate the float array parameter instead of returning a new one, just to simply things a bit.

New in Ruffle Nightly 2022-05-31 (May 31, 2022)

  • [Release notes](https://github.com/xfix/enum-map/releases)
  • [Changelog](https://github.com/xfix/enum-map/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/xfix/enum-map/commits/v2.3.0)

New in Ruffle Nightly 2022-05-30 (May 30, 2022)

  • swf: Mark some `Fixed` functions as `const`

New in Ruffle Nightly 2022-05-28 (May 28, 2022)

  • ests: Add test for `Value::as_bool(String)` in SWFv6

New in Ruffle Nightly 2022-05-26 (May 26, 2022)

  • render: Fix swapped 'width' and 'height' in wgpu `register_bitmap_raw`
  • These arguments were being passed in the wrong order, leading to a crash when the width and height are not equal.

New in Ruffle Nightly 2022-05-25 (May 25, 2022)

  • core: Correctly calculate the length passed to `resize_to_reader`
  • In several places, we read some data from a tag, and then pass the original tag length to `resize_to_reader`. This is incorrect -
  • the provided length is used an an offset from the current position in the reader, so we will extend past the end of the current tag if we've already read some bytes.
  • In practice, this doesn't appear to cause any problems - AVM bytecode has internal length fields, which end up ensuring that we will never try to read past where the slice *should* end. However, if a `DoAbc` tag is the last tag in the file, then we'll end up trying to use `resize_to_reader` with an offset past the end of the movie.
  • This commit subtracts the number of already-read bytes from `tag_len`,
  • to ensure that we always construct a correctly-sized `SwfSlice`

New in Ruffle Nightly 2022-05-23 (May 23, 2022)

  • Remove `BitmapDataStorage` as its no longer necessary, and store the bitmap canvas/context in `BitmapData` instead.
  • Store the `Bitmap` RBGA buffer in the canvas backend. Previously this was thrown away when converted to `ImageData`, but this causes the glitchy pixels mentioned in:
  • https://github.com/ruffle-rs/ruffle/pull/6975#issuecomment-1127942520`ImageData` does not copy the buffer passed to it, so store it to keep it alive.

New in Ruffle Nightly 2022-05-22 (May 22, 2022)

  • desktop: Add fullscreen command line option

New in Ruffle Nightly 2022-05-21 (May 21, 2022)

  • Adjust error message

New in Ruffle Nightly 2022-05-20 (May 20, 2022)

  • canvas: Remove `pixelated_property_value`. This is no longer used with the removal of the SVG paths.

New in Ruffle Nightly 2022-05-18 (May 18, 2022)

  • chore: Add a note to cargo config about RUSTFLAGS in the web build

New in Ruffle Nightly 2022-05-16 (May 16, 2022)

  • tests: Add test for SWF5 function scope

New in Ruffle Nightly 2022-05-14 (May 14, 2022)

  • avm2: Don't consider declared return type for unchecked functions check
  • Testing under Flash shows that methods can be considered 'unchecked' (allowing them to be called with more arguments than declared parameters) even if they have a declared return type.
  • This is relied on by SteamBirds, which registers an event handler which takes 0 parameters and an explicitly declared return type

New in Ruffle Nightly 2022-05-13 (May 13, 2022)

  • webgl: Clamp alpha in shaders (fix #6954)

New in Ruffle Nightly 2022-05-12 (May 12, 2022)

  • Implement `TextField.background` getter/setter.

New in Ruffle Nightly 2022-05-11 (May 11, 2022)

  • swf: Mark some `SwfStr` functions as const

New in Ruffle Nightly 2022-05-10 (May 10, 2022)

  • web: Prefer using `Element` over `HTMLElement`
  • `Element` is a slightly more general type, which is more common than`HTMLElement`, and it satisfies our needs in most cases.

New in Ruffle Nightly 2022-05-09 (May 9, 2022)

  • docs: Correct issue number in code comment

New in Ruffle Nightly 2022-05-08 (May 8, 2022)

  • avm1: Grab SWF version from executing clip
  • Remove the `swf_version` parameter from `Activation` constructors, because this was incorrectly using the global or root SWF version most times.
  • Instead, grab the SWF version for the activation directly from the base clip.

New in Ruffle Nightly 2022-05-04 (May 4, 2022)

  • avm1: Remove a stale TODO

New in Ruffle Nightly 2022-05-03 (May 3, 2022)

  • updated-dependencies:
  • dependency-name: serde_json
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-05-02 (May 2, 2022)

  • updated-dependencies:
  • dependency-name: mocha
  • dependency-type: direct:development
  • update-type: version-update:semver-major

New in Ruffle Nightly 2022-05-01 (May 1, 2022)

  • avm1: Implement LocalConnection.domain()

New in Ruffle Nightly 2022-04-29 (Apr 29, 2022)

  • demo: Add Ruffle splash anim as initial animation

New in Ruffle Nightly 2022-04-27 (Apr 27, 2022)

  • docs: Add new Homebrew Tap instructions

New in Ruffle Nightly 2022-04-26 (Apr 26, 2022)

  • Bump mocha's timeout from 60 secs to 120 secs to attempt to improve
  • the reliability of our Windows node tests.

New in Ruffle Nightly 2022-04-25 (Apr 25, 2022)

  • core: Remove AS3-related `coerce_to_object` calls in `MovieClip`

New in Ruffle Nightly 2022-04-24 (Apr 24, 2022)

  • build: `actions/download-artifact` puts the ZIP file in the root of the project for some reason, breaking the Safari extension

New in Ruffle Nightly 2022-04-23 (Apr 23, 2022)

  • core: scale_mode -> window_mode for set_window_mode

New in Ruffle Nightly 2022-04-20 (Apr 20, 2022)

  • avm2: Stub flash.accessibility.AccessibilityProperties

New in Ruffle Nightly 2022-04-19 (Apr 19, 2022)

  • updated-dependencies:
  • - dependency-name: rfd
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-04-18 (Apr 18, 2022)

  • web: Support wmode parameter

New in Ruffle Nightly 2022-04-17 (Apr 17, 2022)

  • render: Make `rgb5_component` a lambda
  • This way the `compressed` parameter becomes implicit.

New in Ruffle Nightly 2022-04-16 (Apr 16, 2022)

  • tests: Update reference images

New in Ruffle Nightly 2022-04-15 (Apr 15, 2022)

  • tests: Add tests for `Add`, `Equals`, `Less` and `GetProperty` actions

New in Ruffle Nightly 2022-04-14 (Apr 14, 2022)

  • chore: Prevent language servers from scanning the Safari stub binary on Windows

New in Ruffle Nightly 2022-04-13 (Apr 13, 2022)

  • canvas: Handle gradient/bitmap strokes

New in Ruffle Nightly 2022-04-12 (Apr 12, 2022)

  • audio: Fix symphonia feature
  • This feature stopped building with the bump to symphonia 0.5, which
  • added a `Sync` bound to its traits.
  • Add `Sync` bounds to our own internal audio traits to match.
  • nellymoser::Decoder was also tweaked to add a Sync bound.
  • Lock the nellymoser dependency to a specific git commit.

New in Ruffle Nightly 2022-04-09 (Apr 9, 2022)

  • avm2: Add stubs for `BitmapFilter`, `GlowFilter`, and `DisplayObjectfilters`
  • This gets 'Rolling Hero' further in the startup process, since it just tries to set a filter on an object.

New in Ruffle Nightly 2022-04-07 (Apr 7, 2022)

  • build(deps-dev): bump chromedriver from 98.0.0 to 100.0.0 in /web
  • Bumps [chromedriver](https://github.com/giggio/node-chromedriver) from 98.0.0 to 100.0.0.
  • [Release notes](https://github.com/giggio/node-chromedriver/releases)
  • [Commits](https://github.com/giggio/node-chromedriver/compare/98.0.0...100.0.0)
  • updated-dependencies:
  • dependency-name: chromedriver
  • dependency-type: direct:development
  • update-type: version-update:semver-major

New in Ruffle Nightly 2022-04-06 (Apr 6, 2022)

  • build(deps): bump embed-resource from 1.7.1 to 1.7.2
  • Bumps [embed-resource](https://github.com/nabijaczleweli/rust-embed-resource) from 1.7.1 to 1.7.2.
  • [Release notes](https://github.com/nabijaczleweli/rust-embed-resource/releases)
  • [Commits](https://github.com/nabijaczleweli/rust-embed-resource/compare/v1.7.1...v1.7.2)
  • updated-dependencies:
  • dependency-name: embed-resource
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-04-05 (Apr 5, 2022)

  • build(deps): bump jpeg-decoder from 0.2.3 to 0.2.4
  • Bumps [jpeg-decoder](https://github.com/image-rs/jpeg-decoder) from 0.2.3 to 0.2.4.
  • [Release notes](https://github.com/image-rs/jpeg-decoder/releases)
  • [Changelog](https://github.com/image-rs/jpeg-decoder/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/image-rs/jpeg-decoder/compare/v0.2.3...v0.2.4)
  • updated-dependencies:
  • dependency-name: jpeg-decoder
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-04-04 (Apr 4, 2022)

  • desktop: Use floats for audio start/endpoints calculation (fix #6569)
  • Integer math was used when calculating a sound's start/endpoints, because it was assumed that the sound sample rate was always an even divisor of 44100Hz. However, some third party tools can embed MP3s with other samples rates, such as #6569 which has a 16000Hz MP3. This could also occur for dynamically loaded MP3s. This results in the sound starting at an incorrect position.
  • Use floating point math to ensure the correct position is caluclated.

New in Ruffle Nightly 2022-04-03 (Apr 3, 2022)

  • tests: `DefineLocal` also accepts dot and slash paths

New in Ruffle Nightly 2022-04-02 (Apr 2, 2022)

  • Render: Implement `CMYK32` jpeg pixel format

New in Ruffle Nightly 2022-03-31 (Mar 31, 2022)

  • avm2: Add ContextMenuEvent stub

New in Ruffle Nightly 2022-03-29 (Mar 29, 2022)

  • build: Enable Hardened Runtime on macOS nightlies.

New in Ruffle Nightly 2022-03-28 (Mar 28, 2022)

  • avm1: `String(function)` returns `[type Function]`

New in Ruffle Nightly 2022-03-27 (Mar 27, 2022)

  • core: Refactor `LoadManager::load_form_into_load_vars`
  • Make it call `navigator.fetch()` directly rather than receiving an existing `Future`.

New in Ruffle Nightly 2022-03-23 (Mar 23, 2022)

  • avm1: Apply autosize to a new `EditText` from an SWF `DefineEditText tag

New in Ruffle Nightly 2022-03-21 (Mar 21, 2022)

  • xml: Inline `update_id_map`
  • Move its logic to `from_start_event`, where `XmlNode`s are created.

New in Ruffle Nightly 2022-03-20 (Mar 20, 2022)

  • tests: Expand `xml_to_string`
  • Test that a set `nodeName` is included in the final string representation.

New in Ruffle Nightly 2022-03-19 (Mar 19, 2022)

  • chore: App bundle also needs a Resources directory.

New in Ruffle Nightly 2022-03-17 (Mar 17, 2022)

  • Bumps [syn](https://github.com/dtolnay/syn) from 1.0.87 to 1.0.88.
  • [Release notes](https://github.com/dtolnay/syn/releases)
  • [Commits](https://github.com/dtolnay/syn/compare/1.0.87...1.0.88)
  • updated-dependencies:
  • dependency-name: syn
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-03-15 (Mar 15, 2022)

  • swf:
  • Add minimal offset table enforcement in `DefineFont2/3`
  • Previously, the offset table and code table offset were completely ignored. But as it seems, Flash does look into these offsets in order to avoid exceedingly reading glyph shapes. For now, avoid exceedingly reading empty and 1-byte glyph shapes, and add debug assertions that verify the correctness of the offset table and code table offset, to help diagnosing related bugs in the future.

New in Ruffle Nightly 2022-03-13 (Mar 13, 2022)

  • tests: Merge `roots_and_levels` into `stage_object_children`
  • And add some more cases along the way.

New in Ruffle Nightly 2022-03-10 (Mar 10, 2022)

  • avm1: Simplify `TDisplayObject::avm1_root()`

New in Ruffle Nightly 2022-03-08 (Mar 8, 2022)

  • Bumps [bytemuck](https://github.com/Lokathor/bytemuck) from 1.7.3 to 1.8.0.
  • [Release notes](https://github.com/Lokathor/bytemuck/releases)
  • [Changelog](https://github.com/Lokathor/bytemuck/blob/main/changelog.md)
  • [Commits](https://github.com/Lokathor/bytemuck/compare/v1.7.3...v1.8.0)
  • updated-dependencies:
  • dependency-name: bytemuck
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-03-04 (Mar 4, 2022)

  • ci: Use windows-latest again

New in Ruffle Nightly 2022-03-03 (Mar 3, 2022)

  • xml: Remove `Error`
  • Directly use `quick_xml::Error` instead.

New in Ruffle Nightly 2022-03-02 (Mar 2, 2022)

  • Bumps [mocha](https://github.com/mochajs/mocha) from 9.2.0 to 9.2.1.
  • [Release notes](https://github.com/mochajs/mocha/releases)
  • [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/mochajs/mocha/compare/v9.2.0...v9.2.1)
  • updated-dependencies:
  • dependency-name: mocha
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-03-01 (Mar 1, 2022)

  • core: Display the appropriate mouse cursor after interacting with a button

New in Ruffle Nightly 2022-02-28 (Feb 28, 2022)

  • avm2: Replace `json` with `serde_json`
  • The `json` crate seems unmaintained, and recently also causes compile errors with stable Rust 1.59.0. On the other hand, `serde_json` is very maintained and more popular.
  • However, from some reason a cyclic package dependency has introduced by this change.

New in Ruffle Nightly 2022-02-24 (Feb 24, 2022)

  • chore: Re-generate `Cargo.lock`. `Cargo.lock` seems to got broken by #6265. Fix it using `cargo generate-lockfile`.

New in Ruffle Nightly 2022-02-22 (Feb 22, 2022)

  • updated-dependencies:
  • dependency-name: clap
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-02-19 (Feb 19, 2022)

  • 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.

New in Ruffle Nightly 2022-02-18 (Feb 18, 2022)

  • 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`.

New in Ruffle Nightly 2022-02-15 (Feb 15, 2022)

  • Updated-dependencies:
  • dependency-name: rand
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-02-14 (Feb 14, 2022)

  • updated-dependencies:
  • dependency-name: futures
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-02-12 (Feb 12, 2022)

  • avm1: Merge `XmlDocument` into `XmlObject`
  • As `XmlDocument` and `XmlObject` had 1-to-1 relation, and `XmlDocument` is already tightly coupled with AVM1, there's no good reason for them being separate objects.
  • This brings us one step closer towards an XML implementation hosted completely in AVM1.
  • A future PR will merge `XmlNode` into `XmlNodeObject` in a similar manner.

New in Ruffle Nightly 2022-02-11 (Feb 11, 2022)

  • Bumps [sign-addon](https://github.com/mozilla/sign-addon) from 3.10.0 to 3.11.0.
  • [Release notes](https://github.com/mozilla/sign-addon/releases)
  • [Commits](https://github.com/mozilla/sign-addon/compare/3.10.0...3.11.0)
  • updated-dependencies:
  • dependency-name: sign-addon
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-02-10 (Feb 10, 2022)

  • Tests: Adjust avm2/edittext_leading for the updated fake device font

New in Ruffle Nightly 2022-02-08 (Feb 8, 2022)

  • avm1: Remove `XmlIdMapObject`
  • Use a bare `ScriptObject` instead.

New in Ruffle Nightly 2022-02-06 (Feb 6, 2022)

  • 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.

New in Ruffle Nightly 2022-02-03 (Feb 3, 2022)

  • build(deps-dev): bump typescript from 4.5.4 to 4.5.5 in /web
  • Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.5.4 to 4.5.5.
  • [Release notes](https://github.com/Microsoft/TypeScript/releases)
  • [Commits](https://github.com/Microsoft/TypeScript/compare/v4.5.4...v4.5.5)
  • updated-dependencies:
  • dependency-name: typescript
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-02-02 (Feb 2, 2022)

  • build(deps-dev): bump mocha from 9.1.3 to 9.2.0 in /web
  • Bumps [mocha](https://github.com/mochajs/mocha) from 9.1.3 to 9.2.0.
  • [Release notes](https://github.com/mochajs/mocha/releases)
  • [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/mochajs/mocha/compare/v9.1.3...v9.2.0)
  • updated-dependencies:
  • dependency-name: mocha
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2022-01-31 (Jan 31, 2022)

  • avm1: Fire `onReleaseOutside` event even when the button is invisible

New in Ruffle Nightly 2022-01-30 (Jan 30, 2022)

  • ci: Temporarily disable Windows Node 14 test

New in Ruffle Nightly 2022-01-29 (Jan 29, 2022)

  • chore: Update badges in `README.md`
  • Improve build status and Discord badges.
  • Add npm and AUR badges.

New in Ruffle Nightly 2022-01-28 (Jan 28, 2022)

  • web: Add `refresh` method to `navigator.plugins`

New in Ruffle Nightly 2022-01-27 (Jan 27, 2022)

  • chore: Bump approx to 0.5.1, remove clippy lint suppressions

New in Ruffle Nightly 2022-01-26 (Jan 26, 2022)

  • desktop: Don't swallow Escape key (fix #6135)

New in Ruffle Nightly 2022-01-23 (Jan 23, 2022)

  • core: Remove unnecessary parameter from `post_instantiation`
  • `display_object` was always equivalent to `self`, there's no need to pass both.

New in Ruffle Nightly 2022-01-21 (Jan 21, 2022)

  • When creating a scope for a closure, any `with` scopes were being filtered out, but this was incorrect; `with` scopes are still on the scope chain when the function is called

New in Ruffle Nightly 2022-01-20 (Jan 20, 2022)

  • chore: Bump to wgpu 0.12

New in Ruffle Nightly 2022-01-19 (Jan 19, 2022)

  • html: Fix handling of end tag mismatch.

New in Ruffle Nightly 2022-01-17 (Jan 17, 2022)

  • web: Add a comment about `ignorePatterns`

New in Ruffle Nightly 2022-01-16 (Jan 16, 2022)

  • web: Fix `publicPath` when loaded from a CDN
  • CDNs allow omitting the filename:
  • https://unpkg.com/@ruffle-rs/ruffle
  • https://cdn.jsdelivr.net/npm/@ruffle-rs/ruffle
  • That caused `currentScriptURL` to be determined incorrectly:
  • ```js
  • new URL(".", "https://unpkg.com/@ruffle-rs/ruffle").href
  • // "https://unpkg.com/@ruffle-rs/"
  • ```
  • If the filename is omitted, append a slash to prevent the last
  • component from being dropped:
  • ```js
  • new URL(".", "https://unpkg.com/@ruffle-rs/ruffle/").href
  • // "https://unpkg.com/@ruffle-rs/ruffle/"

New in Ruffle Nightly 2022-01-15 (Jan 15, 2022)

  • chore: Publish npm package publicly

New in Ruffle Nightly 2022-01-14 (Jan 14, 2022)

  • web: Add custom profiles to separate the build cache for the two wasm…

New in Ruffle Nightly 2022-01-13 (Jan 13, 2022)

  • extension: Change unsafe-eval to wasm-eval in CSP
  • `unsafe-eval` was needed in the extension Content Security Policy to Wasm compilation in Chrome.
  • This CSP setting causes the extension to get flagged in the Mozilla Add-On Marketplace, which discourages the use of `unsafe-eval`.
  • However, Chrome has a `wasm-eval` CSP setting which also allows extensions to compile Wasm without requiring `unsafe-eval`. Inject this into the extension manifest when building the Chrome extension.
  • Eventually this may change to `wasm-unsafe-eval` as drafted by the CSP spec and be required by all browsers.

New in Ruffle Nightly 2022-01-12 (Jan 12, 2022)

  • 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

New in Ruffle Nightly 2022-01-08 (Jan 10, 2022)

  • avm1: Remove `TextFormatObject::set_text_format`
  • Use `text_format_mut` instead.

New in Ruffle Nightly 2022-01-08 (Jan 8, 2022)

  • web: Handle gaps in MP3 SoundStreamBlock tags

New in Ruffle Nightly 2022-01-04 (Jan 4, 2022)

  • build(deps): bump serde from 1.0.132 to 1.0.133
  • Bumps [serde](https://github.com/serde-rs/serde) from 1.0.132 to 1.0.133.
  • [Release notes](https://github.com/serde-rs/serde/releases)
  • [Commits](https://github.com/serde-rs/serde/compare/v1.0.132...v1.0.133)
  • updated-dependencies:
  • dependency-name: serde
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2022-01-03 (Jan 3, 2022)

  • chore: Add error-report issue template
  • The `error-report` label was not being added to error reports submitted by panics in the web player, despite the `labels` query parameter in the URL. Users do not have triage/write access to the repo, which is required by GitHub to add a label to an issue.
  • Add an issue template for error reports with the `error-report` label. This template is now added to the issue URL, which automatically adds the tag regardless of access level.

New in Ruffle Nightly 2022-01-02 (Jan 2, 2022)

  • Merge pull request #5971 from ruffle-rs/dependabot/npm_and_yarn/web/wdio/mocha-framework-7.16.11

New in Ruffle Nightly 2022-01-01 (Jan 1, 2022)

  • xml: Use OR patterns
  • This results in a slightly shorter code, and avoids some duplication.

New in Ruffle Nightly 2021-12-30 (Dec 30, 2021)

  • video/vp6: Fix keyframe detection on Vp6WithAlpha videos

New in Ruffle Nightly 2021-12-28 (Dec 28, 2021)

  • Updated-dependencies:
  • dependency-name: clap
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-12-19 (Dec 19, 2021)

  • avm1: Make `ArrayObject` proto non-`Option`
  • It was always passed as `Some`, so there's no reason for allowing`None`.

New in Ruffle Nightly 2021-12-18 (Dec 18, 2021)

  • web: Check `$CI` environment variable

New in Ruffle Nightly 2021-12-16 (Dec 16, 2021)

  • core: Introduce `InputManager`
  • `InputManager` encapsulates the common logic that previously the
  • `UiBackend`s used to implement.

New in Ruffle Nightly 2021-12-14 (Dec 14, 2021)

  • build(deps): bump serde from 1.0.130 to 1.0.131
  • Bumps [serde](https://github.com/serde-rs/serde) from 1.0.130 to 1.0.131.
  • [Release notes](https://github.com/serde-rs/serde/releases)
  • [Commits](https://github.com/serde-rs/serde/compare/v1.0.130...v1.0.131)
  • updated-dependencies:
  • dependency-name: serde
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-12-13 (Dec 13, 2021)

  • web/extension: Allow 'data:' URLs as image src - needed by the canvas…

New in Ruffle Nightly 2021-12-11 (Dec 11, 2021)

  • web: Suppress Webpack's size limit for .wasm files
  • Webpack warns on assets larger than 250KB by default. Our WebAssembly module exceeds this limit by far (it's a few MBs).

New in Ruffle Nightly 2021-12-10 (Dec 10, 2021)

  • render: Stub L16 JPEG pixel format
  • 16-bit luminance (grayscale) images are very rare, so it's hard to tell what the expected behavior should be.

New in Ruffle Nightly 2021-12-09 (Dec 9, 2021)

  • chore: Remove more explicit clones

New in Ruffle Nightly 2021-12-07 (Dec 7, 2021)

  • docs: Fix grammar in CONTRIBUTING.md

New in Ruffle Nightly 2021-12-06 (Dec 6, 2021)

  • html: Handle attribute errors gracefully
  • `quick-xml` returns an `Err` for invalid attributes (e.g. unquoted). Handle such errors by ignoring the HTML completely and return an empty string instead, as Flash does.

New in Ruffle Nightly 2021-12-05 (Dec 5, 2021)

  • swf: Fix reserved gradient values handling
  • Map 3 to `GradientSpread::Pad`
  • Map 2 and 3 to `GradientInterpolation::Rgb`
  • Fix #1505.

New in Ruffle Nightly 2021-12-03 (Dec 3, 2021)

  • core: String equality should short-circuit on pointer equality

New in Ruffle Nightly 2021-12-02 (Dec 2, 2021)

  • Updates the requirements on [webpack-dev-server] to permit the latest version.
  • [Release notes]
  • [Changelog]
  • [Commits]
  • Updated-dependencies:
  • Dependency-name: webpack-dev-server
  • dependency-type: direct:development

New in Ruffle Nightly 2021-11-30 (Nov 30, 2021)

  • Bumps [syn](https://github.com/dtolnay/syn) from 1.0.81 to 1.0.82.
  • [Release notes](https://github.com/dtolnay/syn/releases)
  • [Commits](https://github.com/dtolnay/syn/compare/1.0.81...1.0.82)
  • updated-dependencies:
  • dependency-name: syn
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-11-29 (Nov 29, 2021)

  • html: Ignore <p>, <li> and <br> tags in non-multiline mode

New in Ruffle Nightly 2021-11-28 (Nov 28, 2021)

  • core: Replace WStr<'_> and WStrMut<'_> by a single DST type WStr

New in Ruffle Nightly 2021-11-27 (Nov 27, 2021)

  • chore: Replace `min` + `max` with `clamp`
  • `clamp` is a bit more efficient, in both runtime and size terms.

New in Ruffle Nightly 2021-11-24 (Nov 24, 2021)

  • Avm2: Compare QNames by local name first

New in Ruffle Nightly 2021-11-23 (Nov 23, 2021)

  • Web: remove firefox extension version restriction

New in Ruffle Nightly 2021-11-21 (Nov 21, 2021)

  • swf: Support font layout without swf-v7 fields

New in Ruffle Nightly 2021-11-20 (Nov 20, 2021)

  • tests: Fix image tests
  • Seems like CI was upgraded to use LLVM 13.
  • Rename image tests (currently only color) to match it.

New in Ruffle Nightly 2021-11-16 (Nov 16, 2021)

  • Html: Handle self-closing tags
  • "br" and "sbr" tags can appear in a self-closing form (i.e. `<br />`).
  • Commit 3cab464026c02bd22ce5b7464604a786bd1c1ab5 forgot to handle this.

New in Ruffle Nightly 2021-11-15 (Nov 15, 2021)

  • tests: Expand `sound`
  • Add cases of `Sound.setVolume()` and `Sound.setPan()` with no arguments.
  • Also correct `Sound` to `sound` in traces.

New in Ruffle Nightly 2021-11-14 (Nov 14, 2021)

  • html: Restore handling of "sbr" tags
  • This partially reverts commit 2119ce9821936e8309d22eafc492f3e9329b0c0a, only restoring "sbr" tags handling because Flash seems to ignore only "br" tags.

New in Ruffle Nightly 2021-11-13 (Nov 13, 2021)

  • Tests: Add test for `Function`'s type.

New in Ruffle Nightly 2021-11-11 (Nov 11, 2021)

  • Avm2: Note currently incorrect behavior intended to be fixed in a fut…
  • …ure PR.

New in Ruffle Nightly 2021-11-10 (Nov 10, 2021)

  • core: Remove commented-out helper methods.

New in Ruffle Nightly 2021-11-07 (Nov 7, 2021)

  • chore: Appease clippy

New in Ruffle Nightly 2021-11-03 (Nov 3, 2021)

  • avm2: Requests for instance traits instead resolve to an associated public-namespace method

New in Ruffle Nightly 2021-11-02 (Nov 2, 2021)

  • tests: Add hitTest test for unclosed drawing path

New in Ruffle Nightly 2021-11-01 (Nov 1, 2021)

  • avm2: Split the `slot_id` and `disp_id` accessors.

New in Ruffle Nightly 2021-10-27 (Oct 27, 2021)

  • chore: use node 16 in nightly release as well

New in Ruffle Nightly 2021-10-26 (Oct 26, 2021)

  • avm2: Make ObjectEncoding C-like

New in Ruffle Nightly 2021-10-25 (Oct 25, 2021)

  • chore: Appease clippy

New in Ruffle Nightly 2021-10-24 (Oct 24, 2021)

  • avm1: Inline `Value::call:
  • It was used only in `CallableValue`, and is not very useful by itself, as it's a tiny wrapper around `TObject::call`.

New in Ruffle Nightly 2021-10-19 (Oct 19, 2021)

  • Bumps [clap](https://github.com/clap-rs/clap) from 3.0.0-beta.4 to 3.0.0-beta.5.
  • [Release notes](https://github.com/clap-rs/clap/releases)
  • [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/clap-rs/clap/commits)
  • updated-dependencies:
  • dependency-name: clap
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-10-17 (Oct 17, 2021)

  • avm1: Store depth in `SuperObject`
  • This is a temporary hack to calculate depth from `base_proto` and `this`, so that changing `this.__proto__` will affect `super`.
  • In the future, `depth` should be passed instead of `base_proto`.

New in Ruffle Nightly 2021-10-15 (Oct 15, 2021)

  • audio: Fail to create invalid ADPCM decoder

New in Ruffle Nightly 2021-10-14 (Oct 14, 2021)

  • tests: Add test for function w/ removed base clip

New in Ruffle Nightly 2021-10-13 (Oct 13, 2021)

  • Revert "core: Fix clip depth handling in `MovieClip::mouse_pick`"
  • This reverts commit 37e3f0903ec45ae2d946b63bcfb0b1c294641cc9.

New in Ruffle Nightly 2021-10-12 (Oct 12, 2021)

  • build(deps): bump console_error_panic_hook from 0.1.6 to 0.1.7
  • Bumps [console_error_panic_hook](https://github.com/rustwasm/console_error_panic_hook) from 0.1.6 to 0.1.7.
  • [Release notes](https://github.com/rustwasm/console_error_panic_hook/releases)
  • [Commits](https://github.com/rustwasm/console_error_panic_hook/commits)
  • updated-dependencies:
  • dependency-name: console_error_panic_hook
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-10-11 (Oct 11, 2021)

  • tests: Add test for default null-ish slot values

New in Ruffle Nightly 2021-10-10 (Oct 10, 2021)

  • desktop: correct error when passing an invalid absolute windows filepath

New in Ruffle Nightly 2021-10-09 (Oct 9, 2021)

  • core: Random SWF-related cleanups

New in Ruffle Nightly 2021-10-08 (Oct 8, 2021)

  • avm1: Propagate AvmString<'gc>s to all methods on Object
  • Some frequently-used Object methods have an Into<impl AvmString<'gc>>
  • parameter to reduce the size of the changes.

New in Ruffle Nightly 2021-10-05 (Oct 5, 2021)

  • build(deps): bump pretty_assertions from 0.7.2 to 1.0.0
  • Bumps [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions) from 0.7.2 to 1.0.0.
  • [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases)
  • [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/colin-kiegel/rust-pretty-assertions/compare/v0.7.2...v1.0.0)
  • updated-dependencies:
  • dependency-name: pretty_assertions
  • dependency-type: direct:production
  • update-type: version-update:semver-major

New in Ruffle Nightly 2021-10-04 (Oct 4, 2021)

  • avm2: Remove `is_boxed_primitive`, as we are no longer accepting boxed primitives on the stack.

New in Ruffle Nightly 2021-10-03 (Oct 3, 2021)

  • swf: Improve `ActionTry` read/write

New in Ruffle Nightly 2021-10-02 (Oct 2, 2021)

  • avm2: Move `QNameObject` specific methods behind an `as_qname_object`…

New in Ruffle Nightly 2021-10-01 (Oct 1, 2021)

  • build(deps-dev): bump typedoc from 0.21.9 to 0.22.4 in /web
  • Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.21.9 to 0.22.4.
  • [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
  • [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.21.9...v0.22.4)
  • updated-dependencies:
  • dependency-name: typedoc
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-09-27 (Sep 27, 2021)

  • extension: Add log level option

New in Ruffle Nightly 2021-09-26 (Sep 26, 2021)

  • tests: Remove superfluous `^M` characters from ActionScript source

New in Ruffle Nightly 2021-09-25 (Sep 25, 2021)

  • web: Mark TypeScript enums as const
  • Unlike regular enums, const enums are completely removed during compilation, and as such are zero-cost in bundle size terms.
  • Since it is not possible to query the possible values of a const enum at runtime, adapt the `autoplay` and `unmuteOverlay` validation logic.

New in Ruffle Nightly 2021-09-24 (Sep 24, 2021)

  • avm2: Ensure all bare function calls pull an appropriate `superclass_…

New in Ruffle Nightly 2021-09-23 (Sep 23, 2021)

  • avm2: Remove ignore_next

New in Ruffle Nightly 2021-09-22 (Sep 22, 2021)

  • Avm2: Properly make all classes an instance of `Class`. (#57)
  • Avm2: Properly make all classes an instance of `Class`.
  • Also, does this technically mean that `Class` is a metaclass?
  • Avm2: Remove `Function::from_method_and_proto` as it will no longer be needed
  • Avm2: Ensure builtin classes are also instances of `Class`.
  • This requires tying a veritable gordian knot of classes; everything needs to be allocated up-front, linked together, and then properly initialized later on. This necessitated splitting the whole class construction process up into three steps:
  • 1. Allocation via `from_class_partial`, which does everything that can be done without any other classes
  • 2. Weaving via `link_prototype` and `link_type`, which links all of the allocated parts together correctly. This also includes initializing `SystemClasses` and `SystemPrototypes`.
  • 3. Initialization via `into_finished_class`, which must be done *after* the weave has finished.
  • Once complete you have core classes that are all instances of `Class`, along with prototypes that have their usual legacy quirks.
  • Note that this does *not* make prototypes instances of their class. We do need to do that, but doing so breaks ES3 legacy support. This is because we currently only work with bound methods, but need to be able to call unbound methods in `callproperty`.
  • Tests: Add a test for all core classes' instance-of relationships

New in Ruffle Nightly 2021-09-19 (Sep 19, 2021)

  • 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.

New in Ruffle Nightly 2021-09-17 (Sep 17, 2021)

  • Change its return type to `Option<bool>`.
  • Use Rust's `f64::partial_cmp` to compare two numbers, which should be more efficient.

New in Ruffle Nightly 2021-09-15 (Sep 15, 2021)

  • web: Indent using spaces in tsconfig.json

New in Ruffle Nightly 2021-09-14 (Sep 14, 2021)

  • chore: Bump TypeScript config to es2017

New in Ruffle Nightly 2021-09-13 (Sep 13, 2021)

  • web: support no trailing slash in base parameter

New in Ruffle Nightly 2021-09-12 (Sep 12, 2021)

  • web: don't panic if failing to create an audio buffer

New in Ruffle Nightly 2021-09-11 (Sep 11, 2021)

  • chore: Bump to wasm-bindgen 0.2.77

New in Ruffle Nightly 2021-09-09 (Sep 9, 2021)

  • web: Support salign, quality, & scale embed/object attributes (part of #4258)

New in Ruffle Nightly 2021-09-08 (Sep 8, 2021)

  • web: check array_buffer promise for failure

New in Ruffle Nightly 2021-09-07 (Sep 7, 2021)

  • build(deps): bump thiserror from 1.0.28 to 1.0.29
  • Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.28 to 1.0.29.
  • [Release notes](https://github.com/dtolnay/thiserror/releases)
  • [Commits](https://github.com/dtolnay/thiserror/compare/1.0.28...1.0.29)
  • updated-dependencies:
  • dependency-name: thiserror
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-09-06 (Sep 6, 2021)

  • avm2: Add more Event class stubs and constants

New in Ruffle Nightly 2021-09-04 (Sep 4, 2021)

  • avm2: Stub `SoundMixer.areSoundsInaccessible` and `SoundMixer.compute Spectrum`

New in Ruffle Nightly 2021-09-03 (Sep 3, 2021)

  • avm2: Forbid `applytype` opcodes with more than one argument type.

New in Ruffle Nightly 2021-09-02 (Sep 2, 2021)

  • chore: Bump @types/chrome from 0.0.149 to 0.0.154 in /web
  • Bumps [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) from 0.0.149 to 0.0.154.
  • [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
  • [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)
  • updated-dependencies:
  • dependency-name: "@types/chrome"
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-09-01 (Sep 1, 2021)

  • chore: fix docstring

New in Ruffle Nightly 2021-08-31 (Aug 31, 2021)

  • tests: Remove garbage in `font_embedded` test, too

New in Ruffle Nightly 2021-08-29 (Aug 29, 2021)

  • web: Support menu embed/object attribute (part of #4258)

New in Ruffle Nightly 2021-08-27 (Aug 27, 2021)

  • avm2: Stub flash.system.Security.

New in Ruffle Nightly 2021-08-26 (Aug 26, 2021)

  • avm1: Rename `SuperObject::child` to `this`

New in Ruffle Nightly 2021-08-23 (Aug 23, 2021)

  • dev: Only test nightly rustc on linux

New in Ruffle Nightly 2021-08-21 (Aug 21, 2021)

  • avm2: Initial MouseEvent stubs (#5065)
  • avm2: Start MouseEvent stubs
  • avm2: More MouseEvent work
  • chore: clippy
  • chore: fmt

New in Ruffle Nightly 2021-08-20 (Aug 20, 2021)

  • web: Adds support for base embed/object attribute (Part of #4258)

New in Ruffle Nightly 2021-08-19 (Aug 19, 2021)

  • avm2: implement string.split for undefined (#5064)
  • avm2: implement string.split for undefined
  • chore: cargo fmt
  • dev: avoid explicit ArrayStorage

New in Ruffle Nightly 2021-08-18 (Aug 18, 2021)

  • chore: Bump bitstream-io from 1.1.0 to 1.2.0
  • updated-dependencies:
  • dependency-name: bitstream-io
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-08-17 (Aug 17, 2021)

  • Bumps [bitflags](https://github.com/bitflags/bitflags) from 1.2.1 to 1.3.2.
  • [Release notes](https://github.com/bitflags/bitflags/releases)
  • [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/bitflags/bitflags/compare/1.2.1...1.3.2)
  • updated-dependencies:
  • dependency-name: bitflags
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-08-16 (Aug 16, 2021)

  • Use a more idiomatic pattern for unwrap-or-default

New in Ruffle Nightly 2021-08-14 (Aug 14, 2021)

  • Add new tests for avm2 string.split()

New in Ruffle Nightly 2021-08-12 (Aug 12, 2021)

  • core: Reset mouse visible when loading movie to root (Fixes #4358)

New in Ruffle Nightly 2021-08-11 (Aug 11, 2021)

  • chore: Bump cpal from 0.13.3 to 0.13.4
  • Bumps [cpal](https://github.com/rustaudio/cpal) from 0.13.3 to 0.13.4.
  • [Release notes](https://github.com/rustaudio/cpal/releases)
  • [Changelog](https://github.com/RustAudio/cpal/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/rustaudio/cpal/commits)
  • updated-dependencies:
  • dependency-name: cpal
  • dependency-type: direct:production
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-08-09 (Aug 9, 2021)

  • web: Bump wasm-bindgen to 0.2.75
  • Also bump its helper crates (js-sys, wasm-bindgen-futures) to the latest versions, except for web-sys which seems to be locked by wgpu to 0.3.50.

New in Ruffle Nightly 2021-08-04 (Aug 4, 2021)

  • vm1: Log internal error on `InvalidSwf`
  • This gives more percise error logs that ease finding their root cause. Also remove `is_halting` and express it inline instead.

New in Ruffle Nightly 2021-08-03 (Aug 3, 2021)

  • Extension: Sidestep CORS issues by offering to load the SWF in a tab

New in Ruffle Nightly 2021-08-02 (Aug 2, 2021)

  • chore: Bump @types/chrome from 0.0.145 to 0.0.149 in /web
  • Bumps [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) from 0.0.145 to 0.0.149.
  • [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
  • [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)
  • updated-dependencies:
  • dependency-name: "@types/chrome"
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-08-01 (Aug 1, 2021)

  • Fix: remove the version requirement for mesa drivers

New in Ruffle Nightly 2021-07-29 (Jul 29, 2021)

  • docs: Fix CONTRIBUTING.md table of contents link

New in Ruffle Nightly 2021-07-28 (Jul 28, 2021)

  • Revert "web: Simplify .wasm loading"

New in Ruffle Nightly 2021-07-25 (Jul 25, 2021)

  • web: Simplify .wasm loading
  • Use wasm-bindgen's built-in loader instead of relying on Webpack.
  • This allows to no longer declare .wasm files as resource assets in each webpack.config.js.
  • Also the bundled JS is a bit smaller (e.g. demo is now ~88KB vs. ~90KB before).

New in Ruffle Nightly 2021-07-23 (Jul 23, 2021)

  • chore: Bump mesa-vulkan-drivers version

New in Ruffle Nightly 2021-07-22 (Jul 22, 2021)

  • tests: Add test for generateRandomBytes

New in Ruffle Nightly 2021-07-21 (Jul 21, 2021)

  • chore: Reserve capacity for vectors

New in Ruffle Nightly 2021-07-20 (Jul 21, 2021)

  • chore: Reserve capacity for vectors
  • This avoids unnecessary re-allocations and thus should improve performance in both memory and time terms.

New in Ruffle Nightly 2021-07-20 (Jul 20, 2021)

  • updated-dependencies:
  • dependency-name: env_logger
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-07-19 (Jul 19, 2021)

  • avm1: Rename `set_watcher` and `remove_watcher` to `watch` and `unwatch`
  • This better reflects their correspondence to `Object.watch` and `Object.unwatch` respectively.

New in Ruffle Nightly 2021-07-18 (Jul 18, 2021)

  • web: Fix and cleanup npm build scripts
  • Remove `buildProduction` as it was equivalent to `build`.
  • Fix `build:avm_debug` and change it to `build:debug`, which also disables Webpack optimizations.

New in Ruffle Nightly 2021-07-16 (Jul 16, 2021)

  • swf: Optimize `read_f64_me` and `write_f64_me`
  • Each function is reduced to just 3 opcodes on x86
  • WebAssembly benefits as well
  • This should improve load-time performance because read_f64_me is used frequently (for each AVM1 double constant).

New in Ruffle Nightly 2021-07-14 (Jul 14, 2021)

  • web: Unify "menu_item" and "active" CSS classes
  • It seems that these two classes were totally equivalent, so simply
  • drop "active" and use only "menu_item".
  • Also, don't highlight disabled context menu items on hover.

New in Ruffle Nightly 2021-07-13 (Jul 13, 2021)

  • chore: Bump regress from 0.3.0 to 0.4.1
  • Bumps [regress](https://github.com/ridiculousfish/regress) from 0.3.0 to 0.4.1.
  • [Release notes](https://github.com/ridiculousfish/regress/releases)
  • [Commits](https://github.com/ridiculousfish/regress/commits)
  • updated-dependencies:
  • dependency-name: regress
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-07-11 (Jul 11, 2021)

  • avm1: alphabetise text_field properties

New in Ruffle Nightly 2021-07-10 (Jul 10, 2021)

  • avm2: Do timeout check every 2000 actions, same as avm1

New in Ruffle Nightly 2021-07-09 (Jul 9, 2021)

  • Remove error report link from could not download wasm module

New in Ruffle Nightly 2021-07-07 (Jul 7, 2021)

  • avm1: Fix apply_to_display_object

New in Ruffle Nightly 2021-07-04 (Jul 4, 2021)

  • Fix minor bug/typo in `action_get_url_2`
  • The current version just doesn't make any sense.
  • The fixed version is akin to the `target.starts_with("_level") && target.len() > 6` line a bit earlier in this file.

New in Ruffle Nightly 2021-07-03 (Jul 3, 2021)

  • web: Fix build without wasm-opt on Windows
  • Since #3111, `wasm-opt` became mandatory on GitHub Actions. But the check whether we run on GitHub Actions is Bash-specific, and fails on Windows. That means builds on Windows without `wasm-opt` always fail.
  • As a workaround, use the trick from https://gist.github.com/prail/24acc95908e581722c0e9df5795180f6 to run the check only on Unix, and skip it on Windows:
  • ```
  • echo ; [ "$GITHUB_ACTIONS" != true ] # > nul
  • ```
  • On Unix, `echo` does nothing, the check runs, and the rest is considered a comment. On Windows, `echo` prints everything until the `> nul`, which suppresses the print by redirection, making the whole statement effectively a no-op.

New in Ruffle Nightly 2021-07-02 (Jul 2, 2021)

  • chore: Bump wdio-chromedriver-service from 7.1.0 to 7.1.1 in /web
  • Bumps [wdio-chromedriver-service](https://github.com/webdriverio-community/wdio-chromedriver-service) from 7.1.0 to 7.1.1.
  • updated-dependencies:
  • dependency-name: wdio-chromedriver-service
  • dependency-type: direct:development
  • update-type: version-update:semver-patch

New in Ruffle Nightly 2021-06-29 (Jun 29, 2021)

  • hore: Bump svg from 0.9.2 to 0.10.0
  • Bumps [svg](https://github.com/bodoni/svg) from 0.9.2 to 0.10.0.
  • [Release notes](https://github.com/bodoni/svg/releases)
  • [Commits](https://github.com/bodoni/svg/commits)
  • updated-dependencies:
  • dependency-name: svg
  • dependency-type: direct:production
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-06-27 (Jun 27, 2021)

  • chore: Minor cleanups

New in Ruffle Nightly 2021-06-25 (Jun 25, 2021)

  • chore: Prefer spelling "Graphic"

New in Ruffle Nightly 2021-06-24 (Jun 24, 2021)

  • web: Fix lint warnings
  • Using `npm run format`.

New in Ruffle Nightly 2021-06-23 (Jun 23, 2021)

  • chore: Use into() in more places

New in Ruffle Nightly 2021-06-22 (Jun 22, 2021)

  • core: Fix documentation spelling

New in Ruffle Nightly 2021-06-21 (Jun 21, 2021)

  • swf: Add NameCharacter tag

New in Ruffle Nightly 2021-06-19 (Jun 19, 2021)

  • avm1: Use bitflags for ChannelOptions

New in Ruffle Nightly 2021-06-18 (Jun 18, 2021)

  • core: Preallocate bitmaps for remaining cases in decode_define_bits_lossless

New in Ruffle Nightly 2021-06-17 (Jun 17, 2021)

  • core: Pump action queue after handling an event

New in Ruffle Nightly 2021-06-15 (Jun 15, 2021)

  • tests: Add test for SetTarget on a removed clip

New in Ruffle Nightly 2021-06-14 (Jun 14, 2021)

  • core: support magic button labels for avm1

New in Ruffle Nightly 2021-06-12 (Jun 12, 2021)

  • Rename movie_clip::ClipAction to movie_clip::ClipEventHandler.
  • Store the swf::ClipEventFlag event flags that trigger the event directly in the event handler. Previously we split up any event
  • that had multiple event flags into separate events. Now these can be kept as a single event.
  • Remove `MovieClip::has_button_event`, and instead store the union of all event flags in `MovieClip::clip_event_flags`. This will be useful for other cases in the future.

New in Ruffle Nightly 2021-06-10 (Jun 10, 2021)

  • tests: Add test for PlaceObject replace

New in Ruffle Nightly 2021-06-09 (Jun 9, 2021)

  • tests: Add test for DefineFunction case sensitivity

New in Ruffle Nightly 2021-06-08 (Jun 8, 2021)

  • chore: Bump approx from 0.4.0 to 0.5.0
  • Bumps [approx] from 0.4.0 to 0.5.0.
  • updated-dependencies:approx

New in Ruffle Nightly 2021-06-06 (Jun 6, 2021)

  • core: Replace num_enum with num_derive

New in Ruffle Nightly 2021-06-04 (Jun 4, 2021)

  • chore: Bump @wdio/mocha-framework from 7.5.3 to 7.7.2 in /web
  • Bumps [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio) from 7.5.3 to 7.7.2.
  • [Release notes](https://github.com/webdriverio/webdriverio/releases)
  • [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/webdriverio/webdriverio/compare/v7.5.3...v7.7.2)
  • updated-dependencies:
  • dependency-name: "@wdio/mocha-framework"
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-06-02 (Jun 2, 2021)

  • chore: Bump @wdio/local-runner from 7.5.4 to 7.7.0 in /web
  • Bumps [@wdio/local-runner](https://github.com/webdriverio/webdriverio) from 7.5.4 to 7.7.0.
  • [Release notes](https://github.com/webdriverio/webdriverio/releases)
  • [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/webdriverio/webdriverio/compare/v7.5.4...v7.7.0)
  • updated-dependencies:
  • dependency-name: "@wdio/local-runner"
  • dependency-type: direct:development
  • update-type: version-update:semver-minor

New in Ruffle Nightly 2021-06-01 (Jun 1, 2021)

  • chore: Bump tinyfiledialogs to 3.8.3

New in Ruffle Nightly 2021-05-31 (May 31, 2021)

  • avm1: Fix string methods handling of negative args (fix #4437)
  • Improve string.substr handling of negative args
  • Add tests for more substr() combinations

New in Ruffle Nightly 2021-05-26 (May 26, 2021)

  • tests: Add test for overriding Object.prototype.toString

New in Ruffle Nightly 2021-05-25 (May 25, 2021)

  • chore: Bump thiserror from 1.0.24 to 1.0.25
  • Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.24 to 1.0.25.
  • [Release notes](https://github.com/dtolnay/thiserror/releases)
  • [Commits](https://github.com/dtolnay/thiserror/compare/1.0.24...1.0.25)
  • Signed-off-by: dependabot[bot] <[email protected]>

New in Ruffle Nightly 2021-05-24 (May 24, 2021)

  • core: Handle visible flag from PlaceObject (fix #3403)

New in Ruffle Nightly 2021-05-23 (May 23, 2021)

  • swf: Use bitflags for FileAttributes

New in Ruffle Nightly 2021-05-22 (May 22, 2021)

  • avm1: Remove unnecessary calls to create_bare_object
  • In favor of ScriptObject::object and ScriptObject::array, which always succeed.

New in Ruffle Nightly 2021-05-20 (May 20, 2021)

  • I18n: Add Romanian

New in Ruffle Nightly 2021-05-19 (May 19, 2021)

  • canvas: Fix alpha calculation in canvas renderer

New in Ruffle Nightly 2021-05-17 (May 17, 2021)

  • core: Fix endless loop when layouting text
  • If a textfield has word wrapping enabled, is very small in size and
  • tries to layout a single character onto it, the layout code can run into
  • an endless loop where it's creating new lines and trying to fit the text
  • again.
  • If text doesn't fit at the start of a line, it won't fit on the next
  • either, so abort and display the whole text span on the line. Text will
  • be cut-off.
  • This can be reproduced with a AS2 file like this:
  • class Test {
  • static var app : Test;
  • function Test() {
  • _root.createTextField("tf",0,0,0,6,20);
  • _root.tf.text = "0";
  • _root.tf.wordWrap = true;
  • static function main(mc) {
  • app = new Test();
  • Build it with `mtasc -main -header 100:100:30 test.as -swf test.swf`

New in Ruffle Nightly 2021-05-15 (May 15, 2021)

  • core: Remove collect::CollectWrapper
  • No longer necessary, it is possible to mark individual fields as`#[collect(require_static)]`.

New in Ruffle Nightly 2021-05-14 (May 14, 2021)

  • i18n: Update Turkish localization

New in Ruffle Nightly 2021-05-13 (May 13, 2021)

  • swf: SwfStr: reimplement `Debug` with `std::ascii::escape_default`
  • The string will now be surrounded with quotes (`"`), non-ASCII characters (UTF-8 or not) will be escaped in hexadecimal form (`xNN`) and ASCII control characters will be escaped (`x01`, `n`, `t`).

New in Ruffle Nightly 2021-05-12 (May 12, 2021)

  • chore: Bump rustfft
  • Bump rustfft to 5.1.1, which fixes this issue affecting our nightly
  • build:

New in Ruffle Nightly 2021-05-11 (May 11, 2021)

  • chore: Bump wgpu from 0.8.0 to 0.8.1
  • Bumps [wgpu](https://github.com/gfx-rs/wgpu-rs) from 0.8.0 to 0.8.1.
  • [Release notes](https://github.com/gfx-rs/wgpu-rs/releases)
  • [Changelog](https://github.com/gfx-rs/wgpu-rs/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/gfx-rs/wgpu-rs/commits)

New in Ruffle Nightly 2021-05-10 (May 11, 2021)

  • chore: Bump wgpu from 0.8.0 to 0.8.1
  • Bumps [wgpu](https://github.com/gfx-rs/wgpu-rs) from 0.8.0 to 0.8.1.
  • [Release notes](https://github.com/gfx-rs/wgpu-rs/releases)
  • [Changelog](https://github.com/gfx-rs/wgpu-rs/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/gfx-rs/wgpu-rs/commits)
  • Signed-off-by: dependabot[bot] <[email protected]>

New in Ruffle Nightly 2021-05-10 (May 10, 2021)

  • i18n: Minor improvement in Spanish translation

New in Ruffle Nightly 2021-05-09 (May 9, 2021)

  • i18n: Added Turkish localization

New in Ruffle Nightly 2021-05-08 (May 8, 2021)

  • avm1: Replace `current_swf_version` with `swf_version`
  • They happen to be identical, and `swf_version` is more idomatic.

New in Ruffle Nightly 2021-05-07 (May 7, 2021)

  • avm1: Use `set_html_text` when initializing textfield from a variable binding
  • If a textfield was created with a variable binding, and the variablealready existed, the initial text of the textfield is set to the
  • variable value. However, this was not obeying the HTML setting of the text field, so HTML tags were mistakenly shown in some content.
  • Fixes #3522.

New in Ruffle Nightly 2021-05-05 (May 5, 2021)

  • avm1: MovieClip.getBytesLoaded/Total should return the clip's length
  • MovieClip.getBytesLoaded and getBytesTotal return the size of that specific clip, even if it's not a loaded SWF. The previous logic only returned the size of the parent SWF.
  • If the clip is an SWF, the uncompressed size of the SWF is returned.
  • Otherwise, the length of the tag list inside the clip's DefineSprite tag is returned.

New in Ruffle Nightly 2021-05-04 (May 4, 2021)

  • avm1: Handle CDATA sections in XML

New in Ruffle Nightly 2021-05-03 (May 4, 2021)

  • avm1: Handle CDATA sections in XML

New in Ruffle Nightly 2021-05-03 (May 3, 2021)

  • ci: Bump github-actions-deploy-aur
  • Hopefully fix AUR packaging because archlinux Docker image has moved.

New in Ruffle Nightly 2021-05-02 (May 2, 2021)

  • chore: Bump stylelint from 13.13.0 to 13.13.1 in /web
  • Bumps [stylelint](https://github.com/stylelint/stylelint) from 13.13.0 to 13.13.1.
  • [Release notes](https://github.com/stylelint/stylelint/releases)
  • [Changelog](https://github.com/stylelint/stylelint/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/stylelint/stylelint/compare/13.13.0...13.13.1)

New in Ruffle Nightly 2021-05-01 (May 1, 2021)

  • avm2: Fix Array.splice
  • Fix `Array.splice` in cases where elements are added but notdeleted, and when the starting index is larger than the lengthof the array.

New in Ruffle Nightly 2021-04-30 (Apr 30, 2021)

  • chore: Bump to wgpu 0.8

New in Ruffle Nightly 2021-04-29 (Apr 29, 2021)

  • web: Use unicode escapes for checkbox emojis

New in Ruffle Nightly 2021-04-28 (Apr 28, 2021)

  • core: Also hide playback controls on single-frame SWFs

New in Ruffle Nightly 2021-04-26 (Apr 26, 2021)

  • ci: Update PKGBUILD for AUR package

New in Ruffle Nightly 2021-04-25 (Apr 25, 2021)

  • tests: Add tests for BitmapData max size

New in Ruffle Nightly 2021-04-24 (Apr 24, 2021)

  • tests: Move utils.js out of polyfill folder

New in Ruffle Nightly 2021-04-22 (Apr 23, 2021)

  • build(deps): bump embed-resource from 1.6.1 to 1.6.2
  • Bumps [embed-resource](https://github.com/nabijaczleweli/rust-embed-resource) from 1.6.1 to 1.6.2.
  • [Release notes](https://github.com/nabijaczleweli/rust-embed-resource/releases)
  • [Commits](https://github.com/nabijaczleweli/rust-embed-resource/compare/v1.6.1...v1.6.2)
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-04-22 (Apr 22, 2021)

  • avm2: minor changes to domain memory
  • Do not use as_bytearray_mut when we don't need mutability
  • Set default domain memory size to 1024b.

New in Ruffle Nightly 2021-04-21 (Apr 21, 2021)

  • avm2: Call the super initializer of LoaderInfo after construction

New in Ruffle Nightly 2021-04-20 (Apr 20, 2021)

  • demo: Use absolute URLs for links in README

New in Ruffle Nightly 2021-04-19 (Apr 19, 2021)

  • web: Handle errors from CSPs which block WebAssembly
  • This removes the "Report Bug" link from the error case in which WebAssembly code generation is disallowed by the host's content security policy, because there's nothing we can do to fix that, and directs people to the wiki instead.

New in Ruffle Nightly 2021-04-18 (Apr 18, 2021)

  • build(deps): bump libflate from 1.0.4 to 1.1.0
  • Bumps [libflate](https://github.com/sile/libflate) from 1.0.4 to 1.1.0.
  • [Release notes](https://github.com/sile/libflate/releases)
  • [Commits](https://github.com/sile/libflate/compare/1.0.4...1.1.0)
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-04-17 (Apr 17, 2021)

  • Avm1: Remove reduntant new_ret_no_self annotation.

New in Ruffle Nightly 2021-04-16 (Apr 16, 2021)

  • web: Set page title in player.js

New in Ruffle Nightly 2021-04-15 (Apr 16, 2021)

  • web: Set page title in player.js

New in Ruffle Nightly 2021-04-15 (Apr 15, 2021)

  • avm1: Add missing clearTimeout() (fix #4003)

New in Ruffle Nightly 2021-04-14 (Apr 14, 2021)

  • build(deps-dev): bump webpack from 5.30.0 to 5.32.0 in /web
  • Bumps [webpack](https://github.com/webpack/webpack) from 5.30.0 to 5.32.0.
  • [Release notes](https://github.com/webpack/webpack/releases)
  • [Commits](https://github.com/webpack/webpack/compare/v5.30.0...v5.32.0)
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-04-13 (Apr 13, 2021)

  • web: Disable context menu from touch events
  • Once a touch event is seen, completely disable the context menu to prevent a long press from triggering the context menu.
  • Fixes #1972.

New in Ruffle Nightly 2021-04-12 (Apr 12, 2021)

  • web: Appease ESLint

New in Ruffle Nightly 2021-04-11 (Apr 11, 2021)

  • canvas: Update_texture should update in-place, not insert

New in Ruffle Nightly 2021-04-10 (Apr 10, 2021)

  • core: Fix panic in remove_invalid_jpeg_data
  • `data` could be shorter than 4 bytes.

New in Ruffle Nightly 2021-04-09 (Apr 9, 2021)

  • build(deps-dev: bump @wdio/cli from 7.2.3 to 7.3.1 in /web
  • Bumps [@wdio/cli](https://github.com/webdriverio/webdriverio from 7.2.3 to 7.3.1.
  • [Release notes](https://github.com/webdriverio/webdriverio/releases
  • [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md
  • [Commits](https://github.com/webdriverio/webdriverio/compare/v7.2.3...v7.3.1
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-04-08 (Apr 8, 2021)

  • avm2: Add tests for set_width / set_height setting the scale to non-finite values.

New in Ruffle Nightly 2021-04-07 (Apr 7, 2021)

  • chore: Simplify response.status() formatting

New in Ruffle Nightly 2021-04-06 (Apr 6, 2021)

  • chore: Fix merge conflict mis-resolution

New in Ruffle Nightly 2021-04-04 (Apr 4, 2021)

  • avm2: Rename current_position -> instruction_start

New in Ruffle Nightly 2021-04-02 (Apr 2, 2021)

  • avm1: Rename proto_value to proto

New in Ruffle Nightly 2021-04-01 (Apr 1, 2021)

  • tests: Expand object_prototypes

New in Ruffle Nightly 2021-03-31 (Mar 31, 2021)

  • uild(deps-dev): bump @wdio/cli from 7.2.1 to 7.2.3 in /web
  • Bumps [@wdio/cli](https://github.com/webdriverio/webdriverio) from 7.2.1 to 7.2.3.
  • [Release notes](https://github.com/webdriverio/webdriverio/releases)
  • [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
  • [Commits](https://github.com/webdriverio/webdriverio/compare/v7.2.1...v7.2.3)
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-03-28 (Mar 29, 2021)

  • webgl: Use bytemuck
  • This avoids unsafe code, and reduces code size a bit.

New in Ruffle Nightly 2021-03-26 (Mar 26, 2021)

  • web: Fix fullscreen sizing on Safari
  • When Ruffle would go fullscreen on Safari, the content would often not fill the viewport because Ruffle's width/height CSS would override the :-webkit-full-screen CSS that Safari adds.
  • Add our own :-webkit-full-screen CSS with !important to force 100% dimensions in fullscreen.

New in Ruffle Nightly 2021-03-25 (Mar 25, 2021)

  • avm2: Lazily initialize Graphics object
  • Initialize a Sprite/Shape's Graphics object on the first access, so that `shape.graphics == shape.graphics` is `true`.

New in Ruffle Nightly 2021-03-21 (Mar 21, 2021)

  • tests: Speed up builds of regression tests

New in Ruffle Nightly 2021-03-20 (Mar 20, 2021)

  • avm1: fix String.substr behaviour for negative lengths (fix #3626)

New in Ruffle Nightly 2021-03-19 (Mar 19, 2021)

  • build(deps-dev): bump ts-loader from 8.0.17 to 8.0.18 in /web
  • Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 8.0.17 to 8.0.18.
  • [Release notes](https://github.com/TypeStrong/ts-loader/releases)
  • [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md)
  • [Commits](https://github.com/TypeStrong/ts-loader/compare/v8.0.17...v8.0.18)
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-03-18 (Mar 18, 2021)

  • build(deps): bump libflate from 1.0.3 to 1.0.4
  • Bumps [libflate](https://github.com/sile/libflate) from 1.0.3 to 1.0.4.
  • [Release notes](https://github.com/sile/libflate/releases)
  • [Commits](https://github.com/sile/libflate/compare/1.0.3...1.0.4)
  • Signed-off-by: dependabot-preview[bot] <[email protected]>

New in Ruffle Nightly 2021-03-14 (Mar 14, 2021)

  • web: Pass obfuscatedEventPrefix via query string
  • This eliminates the need to create a script dynamically, and fixes publicPath() to correctly return the extension URL rather than the host site URL.

New in Ruffle Nightly 2021-03-13 (Mar 13, 2021)

  • avm2: Fix AVM2 reader not reading variable-length numbers correctly

New in Ruffle Nightly 2021-03-10 (Mar 10, 2021)

  • Bumps [syn](https://github.com/dtolnay/syn) from 1.0.62 to 1.0.63.
  • [Release notes](https://github.com/dtolnay/syn/releases)
  • [Commits](https://github.com/dtolnay/syn/compare/1.0.62...1.0.63)