8 Commits

Author SHA1 Message Date
Eli Bosley
674323fd87 feat: generated UI API key management + OAuth-like API Key Flows (#1609)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* API Key Authorization flow with consent screen, callback support, and
a Tools page.
* Schema-driven API Key creation UI with permission presets, templates,
and Developer Authorization Link.
* Effective Permissions preview and a new multi-select permission
control.

* **UI Improvements**
* Mask/toggle API keys, copy-to-clipboard with toasts, improved select
labels, new label styles, tab wrapping, and accordionized color
controls.

* **Documentation**
  * Public guide for the API Key authorization flow and scopes added.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-08-27 12:37:39 -04:00
Eli Bosley
3b00fec5fd chore: Remove legacy store modules and add new API key and reporting services (#1536)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added developer CLI tools for toggling GraphQL sandbox and modal
testing utilities.
* Introduced a "Show Activation Modal" developer component for UI
testing.
  * Added system initial setup detection and related GraphQL queries.
* Enhanced login and welcome pages with dynamic server info and initial
setup state.
  * Improved SSO button with internationalization and error handling.
* Added internal CLI admin API key management service and internal
GraphQL client service.
* Introduced comprehensive API report generation service for system and
service status.
* Added CLI commands and GraphQL mutations/queries for plugin and SSO
user management.
* Added new modal target components and improved teleport target
detection.

* **Enhancements**
* Refined modal dialog targeting and teleportation for flexible UI
placement.
* Updated modal components and stores for improved activation/welcome
modal control.
  * Improved plugin and SSO user management via CLI through GraphQL API.
* Refactored partner logo components to use props instead of store
dependencies.
  * Enhanced styling and accessibility for buttons and modals.
* Streamlined Tailwind CSS integration with shared styles and updated
theme variables.
* Improved GraphQL module configuration to avoid directive conflicts in
tests.
  * Adjusted Vite config for better dependency handling in test mode.
  * Improved error handling and logging in CLI commands and services.
* Reordered imports and refined component class bindings for UI
consistency.

* **Bug Fixes**
* Resolved issues with duplicate script tags and component registration
in the web UI.
* Fixed modal close button visibility and activation modal state
handling.
* Added error handling and logging improvements across CLI commands and
services.
  * Fixed newline issues in last-download-time fixture files.

* **Chores**
* Added and updated numerous tests for CLI commands, services, and UI
components.
* Updated translation files and localization resources for new UI
messages.
* Adjusted environment, configuration, and dependency files for improved
development and test workflows.
  * Cleaned up unused imports and mocks in tests.
  * Reorganized exports and barrel files in shared and UI modules.
  * Added integration and dependency resolution tests for core modules.

* **Removals & Refactoring**
* Removed legacy Redux state management, configuration, and UPnP logic
from the backend.
* Eliminated deprecated GraphQL subscriptions and client code related to
registration and mothership.
* Removed direct store manipulation and replaced with service-based
approaches in CLI commands.
  * Deleted unused or redundant test files and configuration listeners.
* Refactored SSO user service to consolidate add/remove operations into
a single update method.
* Simplified API key services with new methods for automatic key
management.
* Replaced direct plugin and SSO user service calls with GraphQL client
interactions in CLI commands.
* Removed complex theme fallback and dark mode CSS rules, replacing with
streamlined static theme variables.
* Cleaned up Tailwind CSS configuration and removed deprecated local
styles.
* Removed multiple internal utility files and replaced with simplified
or centralized implementations.
* Removed deprecated local configuration and synchronization files and
listeners.
  * Removed UPnP helper functions and job management classes.
* Refactored server resolver to dynamically construct local server data
internally.
* Removed CORS handler and replaced with simplified or externalized
logic.
* Removed store synchronization and registration event pubsub handling.
* Removed GraphQL client creation utilities for internal API
communication.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-25 15:07:37 -04:00
Eli Bosley
2c62e0ad09 feat: tailwind v4 (#1522)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Streamlined Tailwind CSS integration using Vite plugin, eliminating
the need for separate Tailwind config files.
* Updated theme and color variables for improved consistency and
maintainability.

* **Style**
* Standardized spacing, sizing, and font classes across all components
using Tailwind’s default scale.
* Reduced excessive gaps, padding, and font sizes for a more compact and
cohesive UI.
* Updated gradient, border, and shadow classes to match Tailwind v4
conventions.
* Replaced custom pixel-based classes with Tailwind’s bracketed
arbitrary value syntax where needed.
* Replaced focus outline styles from `outline-none` to `outline-hidden`
for consistent focus handling.
* Updated flex shrink/grow utility classes to use newer shorthand forms.
* Converted several component templates to use self-closing tags for
cleaner markup.
  * Adjusted icon sizes and spacing for improved visual balance.

* **Chores**
* Removed legacy Tailwind/PostCSS configuration files and related
scripts.
* Updated and cleaned up package dependencies for Tailwind v4 and
related plugins.
  * Removed unused or redundant build scripts and configuration exports.
  * Updated documentation to reflect new Tailwind v4 usage.
  * Removed Prettier Tailwind plugin from formatting configurations.
* Removed Nuxt Tailwind module in favor of direct Vite plugin
integration.
  * Cleaned up ESLint config by removing Prettier integration.

* **Bug Fixes**
  * Corrected invalid or outdated Tailwind class names and syntax.
* Fixed issues with max-width and other utility classes for improved
layout consistency.

* **Tests**
* Updated test assertions to match new class names and styling
conventions.

* **Documentation**
* Revised README and internal notes to clarify Tailwind v4 adoption and
configuration changes.
* Added new development notes emphasizing Tailwind v4 usage and
documentation references.

* **UI Components**
* Enhanced BrandButton stories with detailed variant, size, and padding
showcases for better visual testing.
* Improved theme store to apply dark mode class on both `<html>` and
`<body>` elements for compatibility.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-21 09:58:02 -04:00
Eli Bosley
345e83bfb0 feat: upgrade nuxt-custom-elements (#1461)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added new modal dialogs and UI components, including activation steps,
OS update feedback, and expanded notification management.
* Introduced a plugin to configure internationalization, state
management, and Apollo client support in web components.
* Added a new Log Viewer page with a streamlined interface for viewing
logs.

* **Improvements**
* Centralized Pinia state management by consolidating all stores to use
a shared global Pinia instance.
* Simplified component templates by removing redundant
internationalization host wrappers.
* Enhanced ESLint configuration with stricter rules and global variable
declarations.
* Refined custom element build process to prevent jQuery conflicts and
optimize minification.
* Updated component imports and templates for consistent structure and
maintainability.
* Streamlined log viewer dropdowns using simplified select components
with improved formatting.
* Improved notification sidebar with filtering by importance and modular
components.
* Replaced legacy notification popups with new UI components and added
automatic root session creation for localhost requests.
* Updated OS version display and user profile UI with refined styling
and component usage.

* **Bug Fixes**
* Fixed component tag capitalization and improved type annotations
across components.

* **Chores**
* Updated development dependencies including ESLint plugins and build
tools.
* Removed deprecated log viewer patch class and cleaned up related test
fixtures.
  * Removed unused imports and simplified Apollo client setup.
* Cleaned up test mocks and removed obsolete i18n host component tests.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---
- To see the specific tasks where the Asana app for GitHub is being
used, see below:
  - https://app.asana.com/0/0/1210730229632804

---------

Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com>
Co-authored-by: Zack Spear <zackspear@users.noreply.github.com>
2025-07-08 10:05:39 -04:00
Eli Bosley
f71943b62b feat: send active unraid theme to docs (#1400)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- The changelog modal now automatically syncs its theme (dark or light
mode) with the rest of the application.
- Added a new test button to preview the changelog from a localhost URL.
- **Improvements**
- Enhanced navigation handling within the embedded changelog, ensuring
only allowed links are followed.
- Improved communication between the modal and its embedded content for
a more seamless user experience.
- Updated the app layout to better support light and dark themes with
consistent background and text colors.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-21 16:35:30 -04:00
Eli Bosley
39e83b2aa1 feat: move activation code logic into the API (#1369)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added comprehensive activation code customization service with dynamic
theming, partner branding, and UI updates.
- Introduced new GraphQL types and public queries for activation code,
partner info, and theme data.
- Implemented new web UI stores and components for activation modal,
partner logos, and theme management.
- **Improvements**
- Removed legacy activation code scripts, PHP components, and plugin
references, streamlining activation logic.
- Enhanced configuration and environment support for activation and
theming features.
- Improved error handling, validation, and type safety in activation and
customization modules.
- **Bug Fixes**
- Fixed color code validation and path handling in customization
service.
- **Chores**
  - Added pre-commit linting hooks and related configuration.
  - Cleaned up test and development environment files.
- **Tests**
- Added extensive tests covering activation customization service
initialization, data handling, and file modifications.
  - Removed obsolete tests related to legacy activation code store.
- **Refactor**
- Migrated activation and partner branding logic from legacy scripts and
PHP to TypeScript services and GraphQL resolvers.
- Reorganized store and component architecture for activation-related
features.
- **Style**
- Updated UI components for improved branding, theming, accessibility,
and layout consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Zack Spear <hi@zackspear.com>
2025-05-01 17:40:36 -04:00
renovate[bot]
8f78b3f1ca fix(deps): update dependency marked to v15 (#1249)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [marked](https://marked.js.org)
([source](https://redirect.github.com/markedjs/marked)) | [`^12.0.2` ->
`^15.0.0`](https://renovatebot.com/diffs/npm/marked/12.0.2/15.0.7) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/marked/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/marked/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/marked/12.0.2/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/marked/12.0.2/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>markedjs/marked (marked)</summary>

###
[`v15.0.7`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.7)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.6...v15.0.7)

##### Bug Fixes

- fix table rendered as heading
([#&#8203;3612](https://redirect.github.com/markedjs/marked/issues/3612))
([9ae87de](9ae87de7cb))

###
[`v15.0.6`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.6)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.5...v15.0.6)

##### Bug Fixes

- fix strikethrough inside strong and em to follow gfm
([#&#8203;3577](https://redirect.github.com/markedjs/marked/issues/3577))
([7712a53](7712a5324f))

###
[`v15.0.5`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.5)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.4...v15.0.5)

##### Bug Fixes

- allow strikethrough inside strong and em to follow gfm
([#&#8203;3569](https://redirect.github.com/markedjs/marked/issues/3569))
([8a01658](8a01658cac))

###
[`v15.0.4`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.4)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.3...v15.0.4)

##### Bug Fixes

- fix list with no items looping forever
([#&#8203;3560](https://redirect.github.com/markedjs/marked/issues/3560))
([e4198ed](e4198ed70d))

###
[`v15.0.3`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.3)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.2...v15.0.3)

##### Bug Fixes

- update punctuation regex syntax to fix babel mistaken transpile
([#&#8203;3547](https://redirect.github.com/markedjs/marked/issues/3547))
([9b988c4](9b988c47bd))

###
[`v15.0.2`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.2)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.1...v15.0.2)

##### Bug Fixes

- update punctuation regex syntax for compatibility
([#&#8203;3540](https://redirect.github.com/markedjs/marked/issues/3540))
([fd015f1](fd015f147d))

###
[`v15.0.1`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.1)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.0...v15.0.1)

##### Bug Fixes

- Remove unused plus typescript tightening
([#&#8203;3527](https://redirect.github.com/markedjs/marked/issues/3527))
([1f579f7](1f579f7628))

###
[`v15.0.0`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.4...v15.0.0)

##### Bug Fixes

- escape html in renderer
([#&#8203;3495](https://redirect.github.com/markedjs/marked/issues/3495))
([58d66e5](58d66e59d1))
- Move all regexps to rules
([#&#8203;3519](https://redirect.github.com/markedjs/marked/issues/3519))
([1f88deb](1f88deb58a))

##### BREAKING CHANGES

-   escape html in renderers instead of tokenizers for all tokens.

###
[`v14.1.4`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.4)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.3...v14.1.4)

##### Bug Fixes

- fix del with escaped tilde
([#&#8203;3517](https://redirect.github.com/markedjs/marked/issues/3517))
([0afe87d](0afe87d7fb))
- fix html comment after list
([#&#8203;3518](https://redirect.github.com/markedjs/marked/issues/3518))
([a612576](a612576ff6))

###
[`v14.1.3`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.3)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.2...v14.1.3)

##### Bug Fixes

- include single nested parens in emStrong link mask
([#&#8203;3475](https://redirect.github.com/markedjs/marked/issues/3475))
([2b7efa8](2b7efa8dda))
- kill SIGINT signal at man for marked --help
([#&#8203;3483](https://redirect.github.com/markedjs/marked/issues/3483))
([b1fd3ea](b1fd3eafd8))

###
[`v14.1.2`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.2)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.1...v14.1.2)

##### Bug Fixes

- fix html following list
([#&#8203;3444](https://redirect.github.com/markedjs/marked/issues/3444))
([9d7b728](9d7b728749))

###
[`v14.1.1`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.1)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.0...v14.1.1)

##### Bug Fixes

- Don't replace tabs with spaces
([#&#8203;3438](https://redirect.github.com/markedjs/marked/issues/3438))
([9ed6456](9ed6456a37))

###
[`v14.1.0`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.0.0...v14.1.0)

##### Bug Fixes

- don't export block or inline
([#&#8203;3427](https://redirect.github.com/markedjs/marked/issues/3427))
([3f0430a](3f0430a45e))

##### Features

- add provideLexer and provideParser hooks
([#&#8203;3424](https://redirect.github.com/markedjs/marked/issues/3424))
([447f5af](447f5af7e4))

###
[`v14.0.0`](https://redirect.github.com/markedjs/marked/releases/tag/v14.0.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.3...v14.0.0)

##### Bug Fixes

- allow async option to dictate type returned
([#&#8203;3341](https://redirect.github.com/markedjs/marked/issues/3341))
([b5a5004](b5a50041ae))
- Remove useNewRenderer
([#&#8203;3342](https://redirect.github.com/markedjs/marked/issues/3342))
([e64f226](e64f226539))

##### BREAKING CHANGES

-   Remove old renderer
- throw an error if `async: false` is set when an extension sets `async:
true`

###
[`v13.0.3`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.3)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.2...v13.0.3)

##### Bug Fixes

- fix recursion-like stack overflow error caused by the old render…
([#&#8203;3380](https://redirect.github.com/markedjs/marked/issues/3380))
([89af0b8](89af0b85b1))

###
[`v13.0.2`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.2)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.1...v13.0.2)

##### Bug Fixes

- fix list item with blank first line
([#&#8203;3351](https://redirect.github.com/markedjs/marked/issues/3351))
([d28e4c6](d28e4c65ea))

###
[`v13.0.1`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.1)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.0...v13.0.1)

##### Bug Fixes

- fix this type in extension methods
([#&#8203;3339](https://redirect.github.com/markedjs/marked/issues/3339))
([520b9ad](520b9ad355))

###
[`v13.0.0`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v12.0.2...v13.0.0)

##### Bug Fixes

- Fix blockquote code continuation
([#&#8203;3264](https://redirect.github.com/markedjs/marked/issues/3264))
([7ab8185](7ab818502e))
- Add parser as a property on the Renderer object
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Send block text tokens to the text renderer
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))

##### Features

- Send token objects to renderers
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
([1ce59ea](1ce59ea827))
- Add space renderer that returns empty string by default
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Add header and align properties to TableCell token
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Add TableRow token
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Add Checkbox token
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))

##### BREAKING CHANGES

- Add space token after blockquote and hr if there are multiple newlines
- Send token objects to renderers and move logic to parse tokens from
the parser to the renderers.
- Most extensions that update marked renderers should still work with
this version but will break in a future major version.
- Extensions that change marked renderers will need to be updated and
use new option `useNewRenderer` and accept a token object instead of
multiple parameters. See updated [Renderer
docs](https://marked.js.org/using_pro#renderer)

        ```js
        // v12 renderer extension

        const extension = {
          renderer: {
            heading(text, level) {
              // increase level by 1
              return `<h${level + 1}>${text}</h${level + 1}>`;
            }
          }
        };

        marked.use(extension);
        ```

        ```js
        // v13 renderer extension

        const extension = {
          useNewRenderer: true,
          renderer: {
            heading(token) {
              // increase depth by 1
              const text = this.parser.parseInline(token.tokens);
              const level = token.depth;
              return `<h${level + 1}>${text}</h${level + 1}>`;
            }
          }
        };

        marked.use(extension);
        ```

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eli Bosley <ekbosley@gmail.com>
2025-03-25 09:29:09 -04:00
Zack Spear
9c66a6b13d move into web for api repo merging 2023-08-08 13:50:42 -07:00