Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crossfade duration not updated via API / Azuracast #1152

Closed
davidkamp opened this issue Apr 12, 2020 · 42 comments
Closed

crossfade duration not updated via API / Azuracast #1152

davidkamp opened this issue Apr 12, 2020 · 42 comments
Assignees
Labels
Milestone

Comments

@davidkamp
Copy link

davidkamp commented Apr 12, 2020

Hi,
I posted an issue with incorrect crossfade durations (impossible to set any duration) on the Azuracast github. They confirmed the issue exists, but their code is apparently 100% following your API so it might be an upstream issue, something within the liquidsoap API causing this?

Here is the thread: AzuraCast/AzuraCast#2632

Could you look into this?

Thanks so much,
David Kamp.

@davidkamp davidkamp changed the title crossfade duration not working with azuracast crossfade duration not updated via API / Azuracast Apr 12, 2020
@toots
Copy link
Member

toots commented Apr 12, 2020

Hi! Thanks for reporting. Could you add a description of the script that is being executed? Are you trying to crossfade on a live source like input.harbor?

@davidkamp
Copy link
Author

Hi toots, I am just user but I mentioned in the other thread over at Azuracast (linked above) that you asked this. I am not sure what the most efficient way to solve this is for you and the azuaracast devs?

Thanks again.

@davidkamp
Copy link
Author

In regard to what I am personally doing: I have a simple playlist with a few audiofiles, created within azuracast. For that playlist there is a setting of "crossfade duration" within azuracast. Entering a value (e.g. 20 seconds) there does nothing, but the azuracast devs say it should in theory. I am doing nothing else. I am afraid that is all I can tell you from a user perspective.

@Vaalyn
Copy link

Vaalyn commented Apr 15, 2020

@toots Here is the liquidsoap.liq that we generate when live streaming is enabled and with crossfading set to 20 seconds on our demo installation at https://demo.azuracast.com

The crossfade is applied before adding the input.harbor for live sources so that shouldn't influence the crossfading.

I've tested what it sounds like on the demo installation with the crossfade set to 20 seconds and it sounds like I expected it to sound. When a song is nearing its end you will start hearing the next song becoming louder and the current song becoming quieter.

@davidkamp would you mind also posting the liquidsoap.liq that is generated for your installation?
Remember to redact all password and api_auth values from that.

set("init.daemon", false)
set("init.daemon.pidfile.path","/var/azuracast/stations/azuratest_radio/config/liquidsoap.pid")
set("log.stdout", true)
set("log.file", false)
set("server.telnet",true)
set("server.telnet.bind_addr","0.0.0.0")
set("server.telnet.port", 8004)
set("harbor.bind_addrs",["0.0.0.0"])

set("tag.encodings",["UTF-8","ISO-8859-1"])
set("encoder.encoder.export",["artist","title","album","song"])

setenv("TZ", "UTC")


playlist_default = playlist(id="playlist_default",mode="randomize",reload_mode="watch",conservative=true,default_duration=10.,length=20.,"/var/azuracast/stations/azuratest_radio/playlists/playlist_default.m3u")
playlist_default = audio_to_stereo(id="stereo_playlist_default", playlist_default)
playlist_default = cue_cut(id="cue_playlist_default", playlist_default)

# Standard Playlists
radio = random(id="azuratest_radio_standard_playlists", weights=[3], [playlist_default])

# AutoDJ Next Song Script
def azuracast_next_song() =
    uri = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/nextsong --form api_auth="^string.quote("xxx")^""), default="")
    log("AzuraCast Raw Response: #{uri}")
    
    if uri == "" or string.match(pattern="Error", uri) then
        log("AzuraCast Error: Delaying subsequent requests...")
        system("sleep 2")
        request.create("")
    else
        request.create(uri)
    end
end

dynamic = request.dynamic(id="azuratest_radio_next_song", timeout=20., azuracast_next_song)
dynamic = audio_to_stereo(id="azuratest_radio_stereo_next_song", dynamic)
dynamic = cue_cut(id="azuratest_radio_cue_next_song", dynamic)
radio = fallback(id="azuratest_radio_autodj_fallback", track_sensitive = true, [dynamic, radio])

requests = request.queue(id="azuratest_radio_requests")
requests = audio_to_stereo(id="azuratest_radio_stereo_requests", requests)
requests = cue_cut(id="azuratest_radio_cue_requests", requests)
radio = fallback(id="azuratest_radio_requests_fallback", track_sensitive = true, [requests, radio])

add_skip_command(radio)

radio = fallback(id="azuratest_radio_safe_fallback", track_sensitive = false, [radio, single(id="error_jingle", "/usr/local/share/icecast/web/error.mp3")])

radio = crossfade(smart=false, duration=30.,fade_out=20.,fade_in=20.,radio)

# DJ Authentication
live_enabled = ref false
last_authenticated_dj = ref ""
live_dj = ref ""

def dj_auth(auth_user,auth_pw) =
    user = ref ""
    password = ref ""
  
    if (auth_user == "source" or auth_user == "") and (string.match(pattern="(:|,)+", auth_pw)) then
        auth_string = string.split(separator="(:|,)", auth_pw)
        
        user := list.nth(default="", auth_string, 0)
        password := list.nth(default="", auth_string, 2)
    else
        user := auth_user
        password := auth_pw
    end
    
    log("Authenticating DJ: #{!user}")
    
    ret = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/auth --form dj-user="^string.quote(!user)^" --form dj-password="^string.quote(!password)^" --form api_auth="^string.quote("xxx")^""), default="")
    log("AzuraCast DJ Auth Response: #{ret}")
    
    authed = bool_of_string(ret)
    if (authed) then
        last_authenticated_dj := !user
    end
    
    authed
end

def live_connected(header) =
    dj = !last_authenticated_dj
    log("DJ Source connected! Last authenticated DJ: #{dj} - #{header}")
    
    live_enabled := true
    live_dj := dj
    
    ret = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/djon --form dj-user="^string.quote(dj)^" --form api_auth="^string.quote("xxx")^""), default="")
    log("AzuraCast Live Connected Response: #{ret}")
end

def live_disconnected() = 
    dj = !live_dj
    
    log("DJ Source disconnected! Current live DJ: #{dj}")
    
    ret = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/djoff --form dj-user="^string.quote(dj)^" --form api_auth="^string.quote("xxx")^""), default="")
    log("AzuraCast Live Disconnected Response: #{ret}")
    
    live_enabled := false
    last_authenticated_dj := ""
    live_dj := ""
end 

# A Pre-DJ source of radio that can be broadcast if needed
radio_without_live = radio
ignore(radio_without_live)

# Live Broadcasting
live = audio_to_stereo(input.harbor("/", id = "azuratest_radio_input_streamer", port = 8005, auth = dj_auth, icy = true, icy_metadata_charset = "UTF-8", metadata_charset = "UTF-8", on_connect = live_connected, on_disconnect = live_disconnected, buffer = 5., max = 10.))
ignore(output.dummy(live, fallible=true))

radio = fallback(id="azuratest_radio_live_fallback", track_sensitive=false, [live, radio])

# Allow for Telnet-driven insertion of custom metadata.
radio = server.insert_metadata(id="custom_metadata", radio)

# Apply amplification metadata (if supplied)
radio = amplify(override="liq_amplify", 1., radio)

# Send metadata changes back to AzuraCast
def metadata_updated(m) =
    if (m["song_id"] != "") then
        ret = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/feedback --form song="^string.quote(m["song_id"])^" --form media="^string.quote(m["media_id"])^" --form playlist="^string.quote(m["playlist_id"])^" --form api_auth="^string.quote("xxx")^""), default="")
        log("AzuraCast Feedback Response: #{ret}")
    end
end

radio = on_metadata(metadata_updated,radio)

# Local Broadcasts
output.icecast(%mp3(samplerate=44100, stereo=true, bitrate=128, id3v2=true), id="azuratest_radio_local_1", host = "127.0.0.1", port = 8000, password = "xxx", mount = "/test", name = "AzuraTest Radio", description = "A test radio station.", genre = "", public = false, encoding = "UTF-8", radio)

# Remote Relays

@davidkamp
Copy link
Author

davidkamp commented Apr 15, 2020

Hi @Vaalyn @toots
First to clarify: It is crossfading in my installation too, but not with the crossfade duration as set in the field in azuracast.
When I set it to 30s I expect the current song to start fading out 30s before its end, while at the same moment the next song starts playing and fades in for the next 30s while the previous one keeps fading out. right?

Set to 30s I hear a transition of 2secs max, where the songs overlap.


set("init.daemon", false)
set("init.daemon.pidfile.path","/var/azuracast/stations/earth/config/liquidsoap.pid")
set("log.stdout", true)
set("log.file", false)
set("server.telnet",true)
set("server.telnet.bind_addr","0.0.0.0")
set("server.telnet.port", 8004)
set("harbor.bind_addrs",["0.0.0.0"])

set("tag.encodings",["UTF-8","ISO-8859-1"])
set("encoder.encoder.export",["artist","title","album","song"])

setenv("TZ", "UTC")
playlist_earth_single = playlist(id="playlist_earth_single",mode="random",reload_mode="watch",conservative=true,default_duration=10.,length=20.,"/var/azuracast/stations/earth/playlists/playlist_earth_single.m3u")
playlist_earth_single = audio_to_stereo(id="stereo_playlist_earth_single", playlist_earth_single)
playlist_earth_single = cue_cut(id="cue_playlist_earth_single", playlist_earth_single)

playlist_earth___random = playlist(id="playlist_earth___random",mode="randomize",reload_mode="watch",conservative=true,default_duration=10.,length=20.,"/var/azuracast/stations/earth/playlists/playlist_earth_-_random.m3u")
playlist_earth___random = audio_to_stereo(id="stereo_playlist_earth___random", playlist_earth___random)
playlist_earth___random = cue_cut(id="cue_playlist_earth___random", playlist_earth___random)

# Standard Playlists
radio = random(id="earth_standard_playlists", weights=[3, 3], [playlist_earth_single, playlist_earth___random])

# AutoDJ Next Song Script
def azuracast_next_song() =
    uri = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/nextsong --form api_auth="^string.quote("fxxxxxxxxxxx")^""), default="")
    log("AzuraCast Raw Response: #{uri}")
    
    if uri == "" or string.match(pattern="Error", uri) then
        log("AzuraCast Error: Delaying subsequent requests...")
        system("sleep 2")
        request.create("")
    else
        request.create(uri)
    end
end

dynamic = request.dynamic(id="earth_next_song", timeout=20., azuracast_next_song)
dynamic = audio_to_stereo(id="earth_stereo_next_song", dynamic)
dynamic = cue_cut(id="earth_cue_next_song", dynamic)
radio = fallback(id="earth_autodj_fallback", track_sensitive = true, [dynamic, radio])

requests = request.queue(id="earth_requests")
requests = audio_to_stereo(id="earth_stereo_requests", requests)
requests = cue_cut(id="earth_cue_requests", requests)
radio = fallback(id="earth_requests_fallback", track_sensitive = true, [requests, radio])

add_skip_command(radio)

radio = fallback(id="earth_safe_fallback", track_sensitive = false, [radio, single(id="error_jingle", "/usr/local/share/icecast/web/error.mp3")])
radio = crossfade(smart=true, duration=45.,fade_out=30.,fade_in=30.,radio)

# Allow for Telnet-driven insertion of custom metadata.
radio = server.insert_metadata(id="custom_metadata", radio)

# Apply amplification metadata (if supplied)
radio = amplify(override="liq_amplify", 1., radio)
# Send metadata changes back to AzuraCast
def metadata_updated(m) =
    if (m["song_id"] != "") then
        ret = list.hd(get_process_lines("curl -s --request POST --url http://web/api/internal/1/feedback --form song="^string.quote(m["song_id"])^" --form media="^string.quote(m["media_id"])^" --form playlist="^string.quote(m["playlist_id"])^" --form api_auth="^string.quote("faaca580f4d402524abb1b93e206eb9b911f37f12f7e74844a287313a9757f87cb93c88e0584dc05c3e540d6b4f8aa17e56f")^""), default="")
        log("AzuraCast Feedback Response: #{ret}")
    end
end

radio = on_metadata(metadata_updated,radio)

# Local Broadcasts
output.icecast(%mp3(samplerate=44100, stereo=true, bitrate=192, id3v2=true), id="earth_local_1", host = "127.0.0.1", port = 8000, password = "QLm9hC2y", mount = "/radio.mp3", name = "EARTH", description = "", genre = "", public = false, encoding = "UTF-8", radio)

# Remote Relays

Powered by AzuraCast • v0.9.9, #8e66034 (2020-04-02 21:22) • Docker • PHP 7.4
Like our software? Donate to support AzuraCast!

@Vaalyn
Copy link

Vaalyn commented Apr 15, 2020

When I set it to 30s I expect the current song to start fading out 30s before its end, while at the same moment the next song starts playing and fades in for the next 30s while the previous one keeps fading out. right?

Yep, when I set the crossfade to 20s that's what happened in the demo installation.

When looking at your liquidsoap.liq one difference that stands out to me is that you are using the smart crossfade and I tested with the normal one. This might be the source of the issue. Would you mind switching that to normal to test if my assumption is correct?

@davidkamp
Copy link
Author

Thanks, but no difference. I tried all possible combinations of crossfade modes before posting my initial report.

@davidkamp
Copy link
Author

Just bumping this again - any other ideas what is going on here @Vaalyn @toots ?
Would love to get this sorted since my radio is live and kind of depending on long fades....

@toots
Copy link
Member

toots commented Apr 27, 2020

Hi there.

I'd like to get this fixed for 1.4.2. Do you have a ways to test this version? Here's a simple method via opam:

git clone --recursive https://github.com/savonet/liquidsoap.git
cd liquidsoap && git checkout 1.4.2
opam install -y .

It is possible that the bug is already fixed there..

Next, I'll need some logs showing what's going on around the issue with at least level 4 or if possible 5: set("log.level",5)

Finally, the most efficient way for me to deal with it is to be able to reproduce locally. A small script than can reproduce the issue and, if needed, the files that cause it, possibly sent via email (toots@rastageeks.org)

Let me know & let's fix this!

@toots toots added this to the 1.4.2 milestone Apr 27, 2020
@davidkamp
Copy link
Author

Hi @toots
Great, do you mean I should try it in my digital ocean install?
I can probably try it through console.

@toots
Copy link
Member

toots commented Apr 27, 2020

If you can. At the very least, some logs extracts would be great to start investigating..

@davidkamp
Copy link
Author

davidkamp commented Apr 27, 2020

Thanks @toots, when trying your commands in my console I get what you see in the attached screenshot.
Any ideas why? (No expert on this stuff, sorry)

I installed opam since it was not installed on the digitalocean server using a commend suggested in digitalocean console. Maybe I need do something else before your opam command works?

Screenshot 2020-04-28 at 00 20 25

@toots
Copy link
Member

toots commented Apr 28, 2020

No, I'm not sure what's going on, I would need more background regarding your install. Could we start with some logs then? Run with set("log.level",5) and send me some logs printed during a failed crossfade transition..

@davidkamp
Copy link
Author

davidkamp commented Apr 28, 2020

Hi @toots
Sorry, I am not sure how to do that. I am using a docker install and only use the GUI normally so no ideas where to set this...

Under administration / system maintenance / system logs it says:

"Because you are running Docker, some system logs can only be accessed from a shell session on the host computer. You can run docker-compose logs -f (nginx|web|stations|...) to access container logs from the terminal.

But if you fixed the issue (it existed on your end and no longer exists now) why not just update?

I'll also need to check how I can actually update my install, not sure how that works with docker.

@Vaalyn
Copy link

Vaalyn commented Apr 28, 2020

@davidkamp You can add the set("log.level",5) via the Utilities -> Edit Liquidsoap Configuration page like this:
image

You'll need to Restart Broadcasting after saving the configuration in order for it to be applied.

The log that @toots want's to see is the Liquidsoap Log on the Utilities -> Log Viewer page.

@davidkamp
Copy link
Author

Unfortunately all I see under "liquidsoap log" is
"error: Log file not found!"

@davidkamp
Copy link
Author

davidkamp commented Apr 29, 2020

Hi @toots @Vaalyn So regardless of my issue with the log files, once @toots updated the release version with his fix, how can I update my azuracast docker installation through the digitalocean console?
@toots when will the update be live?
Thanks for all your help.

@Vaalyn
Copy link

Vaalyn commented May 2, 2020

@davidkamp Regarding the updating you'll just have to run the update commands when we released a new version:

cd /var/azuracast
./docker.sh update-self
./docker.sh update

Could you check for the logs manually via SSH / console?

Here are the commands you'll need:

Go to the AzuraCast directory via cd /var/azuracast and run the command to enter the bash shell: ./docker.sh bash.

When inside the bash shell of the container you go to the config directory of your station via cd /var/azuracast/stations/your_station_name/config (don't forget to replace the your_station_name with the one your station uses. Check the Advanced Base Station Directory field of your station profile under the Administration tab).

Now check what files are available inside this directory via ls -la. There should be a file with the name liquidsoap.log. To view its content use this command: cat liquidsoap.log.

@toots
Copy link
Member

toots commented May 2, 2020

1.4.2 is coming up today or tomorrow at the latest! Preparing the windows build as I write this..

@davidkamp
Copy link
Author

davidkamp commented May 2, 2020

@davidkamp Regarding the updating you'll just have to run the update commands when we released a new version:

cd /var/azuracast
./docker.sh update-self
./docker.sh update

Could you check for the logs manually via SSH / console?

Here are the commands you'll need:

Go to the AzuraCast directory via cd /var/azuracast and run the command to enter the bash shell: ./docker.sh bash.

When inside the bash shell of the container you go to the config directory of your station via cd /var/azuracast/stations/your_station_name/config (don't forget to replace the your_station_name with the one your station uses. Check the Advanced Base Station Directory field of your station profile under the Administration tab).

Now check what files are available inside this directory via ls -la. There should be a file with the name liquidsoap.log. To view its content use this command: cat liquidsoap.log.

Thanks but unfortunately there are no log files in that folder. So the "error: log file not found!" in the gui is true.

@davidkamp
Copy link
Author

1.4.2 is coming up today or tomorrow at the latest! Preparing the windows build as I write this..

Perfect, So in a few days I can run:
cd /var/azuracast
./docker.sh update-self
./docker.sh update

Right?

@Vaalyn
Copy link

Vaalyn commented May 2, 2020

Thanks but unfortunately there are no log files in that folder. So the "error: log file not found!" in the gui is true.

@davidkamp that's rather strange, there should be logs from liquidsoap and icecast in that directory. Is it completely empty? Would you mind posting a screenshot of the output from the ls -la command?

Perfect, So in a few days I can run:
cd /var/azuracast
./docker.sh update-self
./docker.sh update

Right?

Yes, as soon as we release the update on the AzuraCast side which might not be immediately when 1.4.2 is out.

@davidkamp
Copy link
Author

davidkamp commented May 2, 2020

@Vaalyn Sure here you go:
Screenshot 2020-05-02 at 20 01 10
Screenshot 2020-05-02 at 20 00 57

@Vaalyn
Copy link

Vaalyn commented May 2, 2020

That's really weird...
Can you see any errors in the AzuraCast Application Log under the System Logs in the Administration?
Where those logs always missing or did they stop working after some time?
Is there anything customized about your installation?
When did you last update you installation and which version are you currently running?
(Trying to find out why those logs are gone. They should not be missing and diagnosing other issues without them is very hard or impossible.)

@davidkamp
Copy link
Author

davidkamp commented May 2, 2020

@Vaalyn

That's really weird...
Can you see any errors in the AzuraCast Application Log under the System Logs in the Administration?

yes - Azuracast apllication logs are there.

Where those logs always missing or did they stop working after some time?
Never looked at them, no idea.

Is there anything customized about your installation?

no.

When did you last update you installation and which version are you currently running?

I only installed the docker container as available on digitalocean roughly one month ago. no updates.
Then I tried the commands listed by @toots above 5 days ago. (that partially failed).

Currently: running as listed in the azuracast gui:
AzuraCast • v0.9.9, #8e66034 (2020-04-02 21:22) • Docker • PHP 7.4

(Trying to find out why those logs are gone. They should not be missing and diagnosing other issues without them is very hard or impossible.)

@davidkamp
Copy link
Author

Just checking in on this @Vaalyn @toots @SlvrEagle23 @dbeiner. Is there an update yet or what is the ETA?
Thanks a lot,
David.

@BusterNeece
Copy link

@davidkamp AzuraCast 0.10.2 has been released which includes Liquidsoap 1.4.2. You can update any installation type to take advantage of the latest updates.

@davidkamp
Copy link
Author

davidkamp commented May 10, 2020

@SlvrEagle23 Perfect- thanks so much.

@davidkamp
Copy link
Author

Now liquidsoap does not work at all anymore.

@davidkamp
Copy link
Author

I updated, now no Broadcast works....
@Vaalyn @toots @SlvrEagle23 @dbeiner After the update Liquidsoap in my docker following the Azuracast docker update directions here https://www.azuracast.com/administration/system/updating.html#docker-installations

My stations do not work at all. My two live stations are now offline, embedded players show an error message. This is really frustrating. What should I do?

I am attaching a few screenshots of the error messages I am getting when trying to start/restart Liquadsoap autoDJ.

Screenshot 2020-05-10 at 11 16 23
Screenshot 2020-05-10 at 11 14 51
Screenshot 2020-05-10 at 11 12 10
Screenshot 2020-05-10 at 11 11 59

@davidkamp
Copy link
Author

If I click skip song manually I get:
Screenshot 2020-05-10 at 11 24 15

None of this was the case before running the update. (and doing nothing else except restarting the digitalocean droplet that I use to run the Azuracast docker.

@davidkamp
Copy link
Author

davidkamp commented May 10, 2020

@Vaalyn @toots @SlvrEagle23 @dbeiner
I just noticed that while when I am logged into my Azuracast install on docker it says in the footer of my running azuracast frontend:
AzuraCast • v0.10.2, #5102ce8 (2020-05-10 7:34) • Docker • PHP 7.4

But if I look the droplet within digitalocean it says:
in Radio / 2 GB Memory / 50 GB Disk / LON1 - AzuraCast 0.9.8.1 on Ubuntu 18.04

Screenshot 2020-05-10 at 11 28 37

What does this mean?

I restarted the droplet and stations etc multiple times after the update completed.

@BusterNeece
Copy link

@davidkamp Please don't use the Liquidsoap GitHub repository for issues with AzuraCast. You already have an existing issue pending with us in our repository; please follow that for updates and do not disturb our upstream project maintainers.

@davidkamp
Copy link
Author

davidkamp commented May 11, 2020

@SlvrEagle23 Sorry, did not mean to disturb.

Here is what solved it for me:
-Creating a new station with exactly the same files and settings (station profile, playlist, autodj etc) as the one I had before the update.
This newly created one works, the station created on the previous azuracast did not work no matter the settings.

Also it seems the crossfade duration now works as expected which is great!

@toots
Copy link
Member

toots commented Jul 23, 2020

Any update on this one? I'm gonna revisit it with the upcoming 1.4.3 release. There are a couple of similar issues already pending.

@toots toots modified the milestones: 1.4.2, 1.4.3 Jul 23, 2020
@toots toots added the bug label Jul 23, 2020
@toots toots self-assigned this Jul 23, 2020
@toots
Copy link
Member

toots commented Jul 25, 2020

Hi!

We just fixed #1074 that was a crossfade-related bug. Any chance you could try with the latest v1.4.3-pre-release branch? You can either use opam pin mechanism or one of the build that should appear shortly at: https://github.com/savonet/liquidsoap/releases/tag/v1.4.3-pre-release

Thanks!

@BusterNeece
Copy link

AzuraCast has been updated to the latest 1.4.3 prerelease build; please update your AzuraCast installation and let us know if the issue is resolved.

@toots
Copy link
Member

toots commented Jul 26, 2020

Thanks for that @SlvrEagle23 ! When you get a chance, would you mind updating the image one more time? I let some changes in the commit fixing the issue that shouldn't have been in, just reverted them.. Sorry about that!

@BusterNeece
Copy link

@toots Done, just rebuilt the image with the latest commit in the 1.4.3-prerelease branch.

@toots
Copy link
Member

toots commented Aug 2, 2020

Any update on this one?

@toots
Copy link
Member

toots commented Aug 14, 2020

Hi! I might close this issue if we don't hear back in a couple of days, presuming it closed through the recent work on crossfade. Let me know if that isn't the case!

@toots
Copy link
Member

toots commented Aug 29, 2020

I'm marking this one as closed, please re-open if needed.

@toots toots closed this as completed Aug 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants