···43434444Of the features listed above, the web dashboard was one of the [first features added](https://github.com/FoxxMD/multi-scrobbler/releases/tag/0.3.6) and has also been the least updated. Since it's inception the *design* has barely changed, despite being ported from expressjs templates to basic react + tailwind.
45454646-It consists of a landing page that:
4646+It consists of a:
47474848-* lists all Sources/Clients, with some basic stats and a slew of link-buttons
4848+* A landing page with lists all Sources/Clients, with some basic stats and a slew of link-buttons
4949 * Sources show an emulated Player, if player state is available
5050-* a live log
5050+ * a live log
5151+* one page for displaying recently played/scrobbled per Source/Client
5252+* one page for displaying failed scrobbles per Client
51535254{: width="700" }
5353-5454-Navigating to Discovered/Scrobbled tracks shows a static page with a simple list of all Plays *in-memory* with some simple formatting.
5555+_Landing page_
55565657{: width="700" }
5757-5858-Finally, navigating to Failed Scrobbles renders a simple list of the track and mono-font display of some of the attributes of an error stored on the track.
5959-5858+_Navigating to Discovered/Scrobbled tracks shows a static page with a simple list of all Plays *in-memory* with some simple formatting._
60596160{: width="700" }
6161+_Navigating to Failed Scrobbles renders a simple list of the track and mono-font display of some of the attributes of an error stored on the track._
62626363You've probably already guessed but this site does not handle small/mobile screens very well. It is *readable* but certainly not a good experience.
6464···6666{: width="400" .w-25 .normal}
6767{: width="400" .w-25 .normal}
68686969+## Why Fix What Isn't Broken?
7070+7171+Despite its lack of charm and modern functionality, the frontend _does work_. Moreover, MS is designed to be a "set and forget" application: once it's configured you should not need to visit the UI for any ongoing maintenance or updates. The ideal scenario for an end user is that they get everything setup and then never look at it again. So then why update anything at all? The effort vs. reward for a new UI is low considering how little users will actually be using it.
7272+7373+### Pipelines are Cool But...
7474+7575+One of the last features I [highlighted](#multi-scrobbler-today) is relatively new, [**Scrobble Transforms.**](https://docs.multi-scrobbler.app/configuration/transforms/) This feature allows users to configure automated steps to modify their data in any individual Source/Client, before it is sent anywhere else. The steps can be hooked into various "stages" of the data lifecycle allowing very granular control of how the data is modified, when, where, and how. Some reasons a user might want to do this (and what it would do):
7676+7777+* A Source's service often incorrectly adds data to some field IE `My Title (Album Version)` when the title should just be `My Title`
7878+* ID3 tags in your music collection are dirty or have repeating garbage IE `[YourMusicSource.com] My Artist - My Title` => get rid of `[YourMusicSource.com]`
7979+* Correcting *any* track to match to the "canonical" version found on [Musicbrainz](https://musicbrainz.org/) so all data is normalized
8080+8181+This feature is powerful and extremely useful for users who want tight control over how their data is presented. However, it also adds a degree of uncertainty to what MS is actually doing. While MS does log everything, the logs are mostly meant for dev debugging, are ephemeral, noisy, and don't present a clear, linear story of what a Transformer is doing.
8282+8383+To put it another way...
8484+8585+**Before Transformers**, all the end user needed to know to have a mental model of MS's behavior was that Input X from Source A was parsed to a Scrobble like `this`.
8686+8787+**After Transformers**, the mental model needs to be able to compute that Input X from Source A was parsed to a Scrobble like `this`, then modified by Transformer Stage 1 to be `this + and this change`, and then modified by Transformer Stage 2 to be `this + and this change - this different change`, etc... getting more complicated for each additional transformer.
8888+8989+### The Siren's Call
9090+9191+It isn't tenable to display this in logs. I wrote a stop-gap JSON debug output, that contained all the steps and their diffs, that users could provide in an issue to help me troubleshoot and this did work for a while...but the root issue still remained.
9292+9393+Many users were creating issues for *relatively easy* transformer problems because their mental model could not follow the full journey of a scrobble through MS without some kind of linear aid.
9494+9595+In order to enable users to help themselves **the UI needed an update that could show a user the ordered steps, and results of modification, for scrobble data passing through MS.**