mediawiki-skins-Vector/doc/adr/0003-publish-client-preferences.md
Jon Robson 5fb18fdb96 Mark ADR as accepted
We are doing this so the state should be accepted

Change-Id: I1d872f8e320df2eadb7caeb57e83d9f889ba3c65
2024-05-29 19:47:13 +00:00

1.6 KiB

3. Publish client preferences

Date: 2024-01-11

Status

Accepted.

Context

As we build out dark mode, font size and other client preference controls, we want to avoid having to build things twice for two different skins. The existing code for client preferences lives in Vector. We expect the code to evolve as different use cases emerge and when the code/UI evolves we want those changes to be seen on both skins without having to maintain two separate implementations.

We expect as features like dark mode and font size roll out so that other skins will want to make use of this code.

Decision

For now, we will publish a library @wikimedia/mediawiki.skins.clientpreferences to npmjs.org that will be used inside MobileFrontend.

When we make significant changes to the the code in Vector, we will update the version in the mobile site.

See https://wikitech.wikimedia.org/wiki/Npm_registry for details on the @wikimedia organization on NPM.

See https://docs.npmjs.com/creating-and-publishing-scoped-public-packages When making modifications to the code inside the Vector skin, to use these in the mobile site we would create a new release of the module by cd-ing into the directory, bumping the version in the package.json file and using npm publish. Then inside MobileFrontend we would pull down the latest code from npm and run the build step.

Consequences

On the long term we expect the library @wikimedia/mediawiki.skins.clientpreferences to become obsolete. This may involve upstreaming the stable library to MediaWiki core or creating a new extension to house the code.