ember-stereo changelog
5.0.0-beta.20 (2024-03-18)
- if crossorigin=anonymous fails on element, automatically try removing crossorigin. Resolves CORS issue (3bbda22)
- Implement proper teardown on sound destruction (f1d6355)
- only show durationWorkaroundTask error if the task wasn't cancelled (c5f6b08)
- Resolve issue introduced in last version when multiple sound position sliders on the same page (a2dc4bd)
- resolve issue when trying to play a sound that is already playing. fixes #23 (dc32ba3)
- Resolve issue where sound-position-progress modifier would not work with howler since howler doesn't emit audio-position-changed events (77408ff)
- Resolve some more bugs with sound-position modifiers (fb496c3)
- send pause event when releasing control of shared audio element (f7fec45)
- Allow xhr option to be passed through to connections, so each connection can handle authenticated requests (82fc6ad)
- Fail native audio connection if xhr is passed, as native audio does not support that. (93dea68)
- improve firing resolution of audio-position-changed event. refs #24 (0777253)
5.0.0-beta.19 (2024-03-18)
5.0.0-beta.18 (2024-03-05)
- improve volume slider logic (79d7d8b)
5.0.0-beta.17 (2024-03-03)
5.0.0-beta.16 (2024-03-02)
5.0.0-beta.15 (2024-01-12)
5.0.0-beta.14 (2024-01-11)
- revert previous change, fix the actual problem (364720e)
5.0.0-beta.13 (2024-01-11)
- move urlsAreEqual to base class so all connections benefit (efd16a2)
5.0.0-beta.12 (2023-11-12)
- cancel block check if sound is already playing (howler) (85254b2)
- resolve issue when trying to play a sound that is already playing. fixes #23 (321bc19)
- send pause event when releasing control of shared audio element (8620ab8)
5.0.0-beta.11 (2023-07-19)
- Don't play howl if it's already playing (072e429)
5.0.0-beta.10 (2023-07-11)
- limit percentage between 0 and 100 (e2d4537)
- pass in newPosition to sound-position-progress if available (cfaf2a3)
5.0.0-beta.9 (2023-07-10)
- adjust logic to allow for live streaming HLS files and allowing (a633c17)
5.0.0-beta.8 (2023-06-30)
5.0.0-beta.7 (2023-06-09)
- reduce fake media element timer to every 500ms instead of 100ms (9a0278d)
- Allow xhr option to be passed through to connections, so each connection can handle authenticated requests (cb00c5d)
- Fail native audio connection if xhr is passed, as native audio does not support that. (8d0f3b5)
5.0.0-beta.6 (2023-05-27)
- improve fake media element cleanup in tests (af128d1)
5.0.0-beta.5 (2023-05-25)
- timing issue with sound proxy in test environment (eae0b3b)
5.0.0-beta.4 (2023-05-24)
- Resolve some more bugs with sound-position modifiers (2de3d45)
5.0.0-beta.3 (2023-05-24)
- Resolve issue introduced in last version when multiple sound position sliders on the same page (7db16c1)
5.0.0-beta.2 (2023-05-23)
- correctly handle setting currentSound = null (c8f0e58)
- if crossorigin=anonymous fails on element, automatically try removing crossorigin. Resolves CORS issue (984eba7)
- Implement proper teardown on sound destruction (82affba)
- Resolve issue where sound-position-progress modifier would not work with howler since howler doesn't emit audio-position-changed events (a8d75bb)
- resolve typo which caused incorrect handling of autoplay check during testing (57f3680)
- Implement additional MediaSession actions and play state (6f6e47a)
5.0.0-beta.1 (2023-04-30)
4.3.1 (2024-03-18)
- only show durationWorkaroundTask error if the task wasn't cancelled (6b6410b)
4.3.0 (2023-11-12)
4.2.3 (2023-11-12)
4.2.2 (2023-11-02)
- send pause event when releasing control of shared audio element (f7fec45)
4.2.1 (2023-07-19)
4.2.0 (2023-06-17)
- Allow xhr option to be passed through to connections, so each connection can handle authenticated requests (82fc6ad)
- Fail native audio connection if xhr is passed, as native audio does not support that. (93dea68)
4.1.4 (2023-05-24)
- Resolve some more bugs with sound-position modifiers (fb496c3)
4.1.3 (2023-05-24)
- Resolve issue introduced in last version when multiple sound position sliders on the same page (a2dc4bd)
4.1.2 (2023-05-23)
- if crossorigin=anonymous fails on element, automatically try removing crossorigin. Resolves CORS issue (3bbda22)
- Implement proper teardown on sound destruction (f1d6355)
- Resolve issue where sound-position-progress modifier would not work with howler since howler doesn't emit audio-position-changed events (77408ff)
4.1.1 (2023-04-23)
- correct logical error in sound-position-progress modifier (8ac52ba)
4.1.0 (2023-04-23)
- Accept multiple identifiers into metadata cache in order to support providing fallback urls into stereo (7a8226b)
4.0.3 (2023-04-17)
- update slider and progress modifiers to better handle changes when the url changes (235d563)
4.0.2 (2022-12-24)
- update ember-modifier, fix invalid super call on sound-position-slider modifier (f68b01b)
4.0.1 (2022-12-13)
- remove console.log statement in volume modifier (6ff4940)
4.0.0 (2022-12-13)
- chore!: update to Ember 4.8, modify release settings (871c7e5)
- drop support for Ember < 3.28
3.2.2 (2022-09-02)
- update import statement in setupStereoTest for Ember 4.x (f53bd70)
3.2.1 (2022-08-21)
- Set cross-origin to anonymous on elements to allow for audio analysis using web audio api (34022a4)
3.2.0 (2022-07-14)
- try to better detect whether or not audio source is a stream based on duration changes for cases where element does not correctly indicate Infinity (58bcd7c)
3.1.2 (2022-07-12)
- update ember-get-config to resolve docs not deploying (a393404)
3.1.1 (2022-07-12)
3.1.0 (2022-07-11)
- Fix tracked values being updated in the same runloop they were used. Thanks @fusion2004!
3.0.4 (2022-02-23)
- improve performance of sound-metadata helper (f2ce636)
3.0.3 (2022-02-23)
- lookup sound metadata through the service and not through the sound (which may not be loaded yet) (424f119)
3.0.2 (2022-02-14)
- use forked ember-cli-addon docs to work with ember-auto-import 2/embroider so we can deploy the docs correctly. Update to angle bracket syntax of demo.snippet (520f2f7)
3.0.1 (2022-02-03)
- preventDefault on {{sound-position-slider}} and {{stereo-volume}} modifier clicks (6252d95)
3.0.0 (2022-02-02)
- address double compute error in docs uncovered in 3.28 update (8f274ae)
- Use ember keyboard beta to resolve build issue on CI with ember-cli-addon-docs (2c894a6)
- Update node requirements, dropping old support (ece3c4e)
- Now works in apps using ember-auto-import 2. The path to the future is a bumpy one. (26cb228)
- node 14.x + required
- ember-auto-import > 2 required now!
2.2.2 (2022-01-20)
- load audio after ensuring URL is not cached by the browser (3ea70f9)
2.2.1 (2021-12-28)
- Update HLS loading negotiation and correctly trigger audio-blocked event if play is blocked (4add770)
2.2.0 (2021-11-20)
- Merge existing cached metadata when playing fresh sound (2d88074)
- Sound metadata is stored centrally now and will automatically update navigator.mediasession when changed, providing accurate now-playing info to iOS lock screens, etc (848588b)
2.1.2 (2021-11-19)
- make isMobileDevice a tracked variable so volume-related logic works reliably (e94dc6c)
2.1.1 (2021-11-19)
- fail gracefully if findSound is passed an empty string (69754d7)
2.1.0 (2021-11-19)
- resolved infinite invalidation loop caused by faulty soundproxy task. Updated dependencies (f830a88)
- add {{stereo-volume-is-adjustable}} helper, which returns whether or not the device supports adjusting volume at the sound level (a41e759)
2.0.10 (2021-11-08)
- fix {{sound-position-slider}} modifier gestures (9c48a18)
- update {{sound-position-progress}} bar on audio-position-will-change event as well as audio-position-changed event (4dcea0d)
2.0.9 (2021-10-13)
- load HLS fragment on position change if changed to surface correct PROGRAM-DATE-TIME if available (5d40d57)
2.0.8 (2021-09-22)
- allow id3 metadata to be accessed on any type of sound (5eec65d)
2.0.7 (2021-09-19)
- safely check systemStereoOptions incase it's not set and we're going full defaults (cf21113)
2.0.6 (2021-09-11)
- Fire audio-ended event when fixed length audio ends using HLS connection (f3d66b0)
2.0.5 (2021-09-08)
2.0.4 (2021-09-04)
2.0.3 (2021-09-04)
- update demo audio url (085e2c0)
- Fix changelog location for semantic-release [skip ci] (2b86c9f)
2.0.2 (2021-09-04)
- expose currentTime on the service and the base sound (14103e9)
- Update documentation and examples for using the test helpers (f99e987)
* Correct some confusing bits, add some clarity to plain ol' readme, update license and CI docs release settings
- [IMPROVEMENT] Added helpers and modifiers to operate hifi only from templates, removing a huge hurdle for newcomers having to deal with audio ids
- [BREAKING CHANGE] audio events now fire an object as the first argument, with the
sound
, matching theplay
andload
functions. All event listeners should change fromthis.stereo.on('event-name', (sound) => { // handler })
tothis.stereo.on('event-name', ({sound}) => { // handler })
- [CHANGE] Default volume is now 100
- [CHANGE] Audio errors are handled way better, can be surfaced in a template through
{{sound-is-errored}}
and{{sound-error-details}}
, and thrown errors can be silenced with asilenceErrors
given toplay()
orload()
- [CHANGE] Sounds now know where they've been blocked by autoplay, and the stereo service does too.
audio-blocked
is the event to tie into. See here - [CHANGE] Sounds are cached ignoring query strings
- [IMPROVEMENT] HLS now provides
currentTime
property for HLS streams that include EXT-PROGRAM-DATE-TIME in their manifests - [BREAKING CHANGE] Renamed anything that was
hifi
tostereo
- [BREAKING CHANGE] Upgrade to Ember 3.27. This addon is octane-only now
- [CHORE] Complex promise/event waiting loops that were prone to error and hard to test have been replaced with ember concurrency tasks
- [IMPROVEMENT] Interactive documentation at https://ember-stereo.com/
- [IMPROVEMENT] Trigger an event when an HLS stream's ID3 timed metadata changes (#89)
- [CHORE] Remove jQuery dependency, bump other dependencies
- [CHORE] Upgrade to Ember 3.10, improve tests
- [IMPROVEMENT] Add togglePause method to hifi service
- [IMPROVEMENT] Add the long overdue change from @gmurphey to the build process [#43]
- [BUGFIX] Fix duration calculation for HLS streams, fixing [#55]
- [BUGFIX] Move ember copy to dependencies [#54]
- [CHORE] replace deprecated Ember.Copy
- [CHORE] replace deprecated EmberMap
- [CHORE] add missing semicolons #52
- [BUGFIX] moves
pre-load
event so it doesn't interfere withsoundCache
keys
- [IMPROVEMENT] Adds
pre-load
event to hifi service with successful strategy
- [CHORE] Add some docs
- [IMPROVEMENT] Adds
currentMetadata
computed property is updated synchronously with calls toplay
- [IMPROVEMENT] Upgrade to ember 2.17
- [IMPROVEMENT] Adds a
positionInterval
option so consuming apps can control how oftenhifi.position
is updated. This allows e.g. a smoother position animation for shorter audio.
This release is just a version number change so I can publish to npm. 1.12.0 was already published accidentally on June 27.
- [IMPROVEMENT] Pass config-level
options
object to Howler instances during init
- [BUGFIX] Native Audio sounds weren't firing their
audio-loaded
event. Fix it!
- [BUGFIX] Stop dummyHifi ticking after an audio-end signal, which can cause audio-end signals to continue sending for all eternity leaving tests to wait.
- [BUGFIX] Remove IE11 workarounds. The issue these corrected has since been fixed by more robust event handling by hifi. This also fixes issues with upstream apps waiting for
pause
events, since finished sounds would also fire pause events.
- [BUGFIX] Fix a test by using
checkWaiters
- [IMPROVEMENT] Docs deploys should be more reliable now with the
--pure-lockfile
flag - [IMPROVEMENT] Remove unneeded ember-power-select addons
- [IMPROVEMENT]
ember-hifi
no longer adds bower dependencies. Thanks to @gmurphey for #41. See Upgrading for more.
- Quieted most of the logging messages for how to handle special urls when using dummyHifi
- [IMPROVEMENT] Improved dummyHifi service to better mimic a real sound.
- [IMPROVEMENT] Added
new-load-request
andcurrent-sound-interrupted
on the service. - [IMPROVEMENT] Added
audio-position-will-change
,audio-will-rewind
, andaudio-will-fast-forward
on the Base sound. - [BUGFIX] Fixed opera bug where native audio element with a stream source didn't report as having Infinity duration
- [BUGFIX]
hifiNeeds
test helper didn't include all needed services (it was missingservice:poll
)
- [IMPROVEMENT] Changed API (and documented)
current-sound-changed
to(currentSound, previousSound)
from({previousSound, currentSound})
to be more consistent with the other APIs. - [BUGFIX] Make sure events of the not-yet-current sound are relayed through hifi. Previously current sound would be set on
audio-played
, and thataudio-played
event wasn't relayed through the service. - [BUGFIX] Fix pause event so it gets triggered properly when using a shared audio element. Previously, when ownership of the audio element was transferred between sounds, the sound releasing control did not properly trigger a pause event on the service.
- Upgrade to eslint and yarn.
- #35 [IMPROVEMENT] - Add another method to get around iOS autoplay restrictions. If on mobile, we now add a document
touchstart
listener that will trigger a play on touch if the sound hasn't played yet. - #34 [IMPROVEMENT] - Add service level 'current-sound-changed' event, and allowed metadata to be attached to sound at play time so consumers can retrieve it later
- #31 [BUGFIX] - Wire up DummyConnection to fire real events
- f4678a2 Re enable canary because it passes now
- #32 [IMPROVEMENT] - Don't resolve
.play
until the chosen sound actually fires itsaudio-played
event, so that the service can properly expose its aliased computed props. - 2deba6d [IMPROVEMENT] - Tweak
included
hook so thatember-hifi
can be nested under other addons.
- [BUGFIX] Fix my goof from yesterday and use preload='none' instead of not having the src, since IE freaks out about the latter.
- [BUGFIX] Resolve issue where two requests would happen for one piece of audio when using a shared audio element. We don't save the src on the shadowAudio element when saving audio state anymore, and it turns out that wasn't instantly resuming audio when switching between audio sources like we thought it was anyway.
- [BUGFIX] Fixed error that was getting thrown in the logging and causing a strange error when debugging was enabled
- [BUGFIX] Fix out of sync loading indicators by forcing notifyPropertyChanges with isLoading.
- [BUGFIX] Don't autoplay the blank audio element on desktop browsers if using a single audio element. IE can't deal with it, and audio will start playing before events are wired up. Also handle case where IE errors after trying to set
.currentTime
on the audio element. - [IMPROVEMENT] - Refactoring debug logger and included better debug messages, especially around transferring of audio control when using a single audio element.
- [BUGFIX] Don't set isLoading flag to false right away after retreiving a sound from the cache. This fixes a problem where after resuming audio from a stopped stream
hifi
would reportisLoading = false
, making buttons show up as playing when it was really loading stuff up again. - Updated ember try scenarios and fix some deprecation warnings.
- 3433e18 -
alwaysUseSingleAudioElement: true
in the emberHIfi config will now force hifi to use a single shared audio element all the time, instead of just on mobile browsers as is done normally. This resolves an issue with cookied content providers that limit one connection per client (in this case, adswizz on wnyc) where without this option audio might stall out when switching between different audio resources. - set
isDevelopingAddon
tofalse
, since this is released. - Fixed some test failures on ember-beta and ember-canary
- dbc80f4 [BUGFIX] - gets rid of 'audio-stopped' event, which wasn't in use. replace it with 'audio-ended' and make sure Howler sends the correct event. Thanks to @aaronfischer for bringing it up, even though the bug he was experiencing turned to be a server-side thing.
- 0574a94 [BUGFIX] - only track internal audio element state if we're on mobile. fixes bad playback behavior on firefox.
- [IMPROVEMENT] - Allow passing in of event callbacks. Useful for testing.
- Update to ember 2.9.1
- start dummy connections with a 0 position
- 3a9438 [BUGFIX] - Handle audio position overruns
- 460149 [IMPROVEMENT] -
.play
on the Service and Connections accepts an options hash. The only option currently supported isposition
, so you cansound.play({position: 0})
to restart a sound. - Change when some properties are updated for snappier feedback
- #18 [IMPROVEMENT] - Adds a
SharedAudioAccess
library to manage access to a singleton HTML5 Audio element on mobile devices. This is due to the long-standing iOS issue with callingplay
on an audio element that is not in direct response to a user action like aclick
ortap
. This allows us to do things like playlist playback on mobile. - Other improvements: include silent MP3 files for testing, fix soundcache issue caching identical sounds more than once.
- Attaches failures to load
catch
case
- Fixes
percentLoaded
attr on native audio connection
- #17 [BUGFIX] - Improves stream pausing
- Test & deprecation warning cleanup
- 9fd95bb Manually manage
isLoading
state in a couple spots
-
Add 'isErrored' boolean property and 'error' string property to sounds as a first step of being able to recover from play errors
-
Go back to setting the
src
property on native audio to an empty string instead of a blob, and just mute the audio errors when we've explicitly stopped loading -
#15 [BUGFIX] - Cache sounds correctly when the url is specified as a hash with the mimeType.
- Fixing event relaying logic so that handlers won't be registered more than once, causing multiple relay calls to be sent for for a single sound event. This was problematic with the
audio-ended
event, causing tracks to get skipped in a playlist.
- Set isLoading flag when reloading audio after being stopped
-
Added a 'loadeddata' event listener to Native Audio, since Firefox doesn't trigger a 'canplay' until after you've asked the audio to play.
-
Suppressed occasional invalid audio errors while Native Audio was stopped and the src attribute was changed to prevent loading.
- Renamed some internal services and added a unit test helper for adding
needs
(so consumers don't have to know about the internal services) since Ember doesn't have a great solution for that yet.
- Explicitly stop the audio after playback has ended for IE11, who never learned to communicate properly.
- Improved logic to prevent browser from loading a paused stream on the native audio connection. Instead of setting src to empty, we now set it to an empty blob so the audio element won't throw an error on pause (on mobile), which caused issues when switching between different audio streams.
- Increased timeout for mobile click blocker to 2s due to some false positives
- Added toggleMute method on the service for easy mute toggling
- #11 [BUGFIX] Use the ember run loop so the pause event gets fired correctly when stopping NativeAudio.
- #12 [BUGFIX] Fix issue with .aac files returning a mime-type of audio/x-aac, then causing the (Native Audio) audio element to think it can't play aac files
- #9 [BUGFIX] Pause streams by setting
src
attribute of Nativ Audio element to the empty string rather than usingremoveAttribute
. - #10 Use mime types to determine connection support for a given audio url. If a mime type cannot be derived, try it anyway but warn the user about performance implications.
- Increases timeout on CircleCI for test runs
- Removes
ember-poll
as a duplicate dependency
- Skips 1.0.1 because I've never used
npm publish
before. - Updates package.json with correct
ember-poll
dependency and adds a repo URL.
- Initial release. See README.md for more.