Page MenuHomePhabricator

Add quick access settings panel in playback controls
Open, Needs TriagePublic6 Estimated Story Points

Description

Testers found it difficult to locate or adjust settings, such as speech rate, voice, or highlighting. Many expected a settings icon (e.g a gear) in the player itself, rather than navigating to a separate settings page.

We should be able to reuse the interface that's used in the gadget for this. The popup should give access to a subset of the most important settings. Which settings these are remain to be determined. We don't want too many because that will make it to complex.

Settings in the non-gadget solution should save settings for the user like normal. They should also reflect changes on the settings page. There should be a link or button to the Wikispeech section on the settings page.

First implementation should include settings for:

  • Voice
    • Drop down. Probably just for the language of the viewed page,
  • Speech rate.
    • Preferably as a slider.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

To be able to reuse the logic from ext.wikispeech.gadget.js we could probably breakout the logic that should be used in BOTH gadget and ui, to a separate file.

Change #1205085 had a related patch set uploaded (by Viktoria Hillerud WMSE; author: Viktoria Hillerud WMSE):

[mediawiki/extensions/Wikispeech@master] Add quick access settings panel in playback controls

https://gerrit.wikimedia.org/r/1205085

This will absolutely come in handy, since as of now, the settings doesn't write or even recieves the preferences settings..
Though, if you want to take a look at the patch already now to see my solution so far, and if you have any comments.

Also, this is pretty much the same as the gadget solution, and maybe we would also want other or different settings from what the gadget has now.

For example we might expand the settings popup to include things like highlighting settings (T202042), a speech-rate slider, and perhaps other things.

The "language" option doesn't seem that important any more to show in the settings, so we could probably remove that.

The saveOption() directly solved the issue where it didn't first write to preferences, but now it does.

I am thinking if it would be better to create a new task to investigate a speech-rate slider instead of taking that time in this patch, what do you think @Sebastian_Berlin-WMSE ?

Viktoria_Hillerud_WMSE changed the point value for this task from 24 to 12.Dec 10 2025, 1:51 PM
Viktoria_Hillerud_WMSE changed the point value for this task from 12 to 6.Wed, Jan 7, 9:50 AM

The "language" option doesn't seem that important any more to show in the settings, so we could probably remove that.

I agree.

When I try this, changing things in the new popup writes to a wiki page, like when you use the gadget. It's out of sync with the default preferences and the preferences in the popup overwrite them, or at least some of them.

I think this needs to be fixed before we can merge this. That behaviour is likely to cause a lot of confusion for the end users.

I just want to double check that I’ve understood you correctly:

When you say that the popup "writes to a wiki page", do you mean that the user settings are being saved to the user’s subpage, e.g User:someUser/Wikispeech_preferences, via the edit action, as the gadget does it?
And is the issue that these settings, on the wiki page, are not necessarily synced with the preferences stored in MW's internal system via api.saveOption() and mw.user.options which could lead to inconsistent behavior?

Are you suggesting we should instead rely fully on saveOption and store and read everything via actual user preferences, rather than using the wiki page?

When you say that the popup "writes to a wiki page", do you mean that the user settings are being saved to the user’s subpage, e.g User:someUser/Wikispeech_preferences, via the edit action, as the gadget does it?

Yes.

And is the issue that these settings, on the wiki page, are not necessarily synced with the preferences stored in MW's internal system via api.saveOption() and mw.user.options which could lead to inconsistent behavior?

Also yes, though I don't know exactly what the functions are called.

Are you suggesting we should instead rely fully on saveOption and store and read everything via actual user preferences, rather than using the wiki page?

Yes, if possible and if saveOptions() changes what's on the preference page.

The main thing is that we don't want a situation where we have two places talking about the same preference, but showing different values.

Then I understood correctly! I have updated the code now, and I finally understood the difference between the gadget solution, storing settings inside of User:someUser/Wikispeech_preferences vs in mw.user.options. I don't think I had thought about that difference before