diff --git a/app/MindWork AI Studio/wwwroot/app.css b/app/MindWork AI Studio/wwwroot/app.css index 5d97fdea..3442e246 100644 --- a/app/MindWork AI Studio/wwwroot/app.css +++ b/app/MindWork AI Studio/wwwroot/app.css @@ -417,6 +417,10 @@ * transcription providers). The rule targets the entire group row, so that the expand button * gets the same compact padding and shading as the header cell itself. */ +tr:has(> .provider-group-header) { + cursor: pointer; +} + tr:has(> .provider-group-header) > .mud-table-cell { padding-top: 0.25em; padding-bottom: 0.25em; diff --git a/app/MindWork AI Studio/wwwroot/app.js b/app/MindWork AI Studio/wwwroot/app.js index 160b5227..ea5b53a5 100644 --- a/app/MindWork AI Studio/wwwroot/app.js +++ b/app/MindWork AI Studio/wwwroot/app.js @@ -35,6 +35,23 @@ window.clearDiv = function (divName) { targetDiv.innerHTML = ''; } +// We add a click handler to the provider group headers so that clicking anywhere on the header expands or collapses the group. +// Right now (August 2026), this is not possible using MudBlazor. +document.addEventListener('click', function (event) { + const target = event.target + if (!(target instanceof Element)) + return + + const groupHeaderRow = target.closest('tr') + if (!groupHeaderRow?.querySelector(':scope > .provider-group-header')) + return + + if (target.closest('.mud-table-row-expander')) + return + + groupHeaderRow.querySelector('.mud-table-row-expander')?.click() +}) + window.scrollToBottom = function(element) { element.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' }); } diff --git a/app/MindWork AI Studio/wwwroot/changelog/v26.8.2.md b/app/MindWork AI Studio/wwwroot/changelog/v26.8.2.md index c6b09e24..503eeffd 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v26.8.2.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v26.8.2.md @@ -1,3 +1,4 @@ # v26.8.2, build 252 (2026-08-xx xx:xx UTC) - Added providers for which you bring your own API key. Until now, a provider your organization configured had to come with a shared API key, which meant your IT department needed one key for everybody. Such a provider can now be handed out without a key, so that everyone signs in with their own, for example, a personal OpenAI or Anthropic account. This works for chat, embedding, and transcription providers alike. The provider stays managed by your organization: the host, the model, the instance name, and everything else remain fixed, and the only thing you can edit is the API key. In the settings, these providers carry a key icon instead of the usual lock, so you can see at a glance where you have to add your key; for embedding providers, the test button stays available, so you can check your key right after entering it. Your key is stored on your device in the operating system's credential store, and it stays there even when your organization withdraws the provider later, so it is still in place should the same provider return. For IT departments: the new `AllowUserProvidedAPIKey` option does this, and it works for `LLM_PROVIDERS`, `EMBEDDING_PROVIDERS`, and `TRANSCRIPTION_PROVIDERS` alike. +- Improved the grouped provider tables in the settings. You can now click anywhere on a group header to expand or collapse its LLM, embedding, or transcription providers. - Fixed a removed API key staying in the operating system's credential store. When you cleared the API key of a provider, the previous key remained stored and was still used. It is now removed together with your change. \ No newline at end of file