[Feat] Admin GUI: Runtime Config Editor #40

Description

@derrickmehaffy

Summary

The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

Features

Config Display

  • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
  • Show setting descriptions and default values
  • Indicate which settings require a reload vs. take effect immediately

Editing

  • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
  • Input validation (numeric ranges, string patterns, enum values)
  • Highlight modified values that differ from defaults
  • World list editor with server world picker
  • Faction permissions matrix with role selector

Actions

  • Save — Write changes to config file
  • Revert — Discard in-memory changes back to saved state
  • Reset to Default — Reset individual settings or entire sections (two-click confirm)
  • In-memory change tracking with save/revert/reset workflow

Scope

  • Main config.json settings
  • Module-specific configuration sections
  • Zone flag defaults
  • Economy settings (currency, tax rates, upkeep)
  • World Map conditional sections based on refresh mode
  • Protection tab role selector and permission default/lock toggles

Test Plan

  • Open /f admin and navigate to Config tab
  • Verify all 8 tabs load and switch correctly
  • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
  • Test world whitelist/blacklist add/remove with server world picker
  • Test Protection tab role selector and permission default/lock toggles
  • Test World Map tab conditional sections based on refresh mode
  • Test Save, Revert, and Reset Defaults (two-click confirm)
  • Verify saved config persists after /f reload

Existing Infrastructure

  • AdminConfigPage.java — Placeholder page exists
  • ConfigManager — Handles config loading/saving
  • Admin GUI framework — Fully functional for other admin pages

Origin

Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    [Feat] Admin GUI: Runtime Config Editor #40

    Description

    @derrickmehaffy

    Summary

    The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

    Features

    Config Display

    • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
    • Show setting descriptions and default values
    • Indicate which settings require a reload vs. take effect immediately

    Editing

    • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
    • Input validation (numeric ranges, string patterns, enum values)
    • Highlight modified values that differ from defaults
    • World list editor with server world picker
    • Faction permissions matrix with role selector

    Actions

    • Save — Write changes to config file
    • Revert — Discard in-memory changes back to saved state
    • Reset to Default — Reset individual settings or entire sections (two-click confirm)
    • In-memory change tracking with save/revert/reset workflow

    Scope

    • Main config.json settings
    • Module-specific configuration sections
    • Zone flag defaults
    • Economy settings (currency, tax rates, upkeep)
    • World Map conditional sections based on refresh mode
    • Protection tab role selector and permission default/lock toggles

    Test Plan

    • Open /f admin and navigate to Config tab
    • Verify all 8 tabs load and switch correctly
    • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
    • Test world whitelist/blacklist add/remove with server world picker
    • Test Protection tab role selector and permission default/lock toggles
    • Test World Map tab conditional sections based on refresh mode
    • Test Save, Revert, and Reset Defaults (two-click confirm)
    • Verify saved config persists after /f reload

    Existing Infrastructure

    • AdminConfigPage.java — Placeholder page exists
    • ConfigManager — Handles config loading/saving
    • Admin GUI framework — Fully functional for other admin pages

    Origin

    Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

    Activity

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      enhancementNew feature or request

      Type

      No type

      Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      [Feat] Admin GUI: Runtime Config Editor #40

      Description

      @derrickmehaffy

      Summary

      The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

      Features

      Config Display

      • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
      • Show setting descriptions and default values
      • Indicate which settings require a reload vs. take effect immediately

      Editing

      • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
      • Input validation (numeric ranges, string patterns, enum values)
      • Highlight modified values that differ from defaults
      • World list editor with server world picker
      • Faction permissions matrix with role selector

      Actions

      • Save — Write changes to config file
      • Revert — Discard in-memory changes back to saved state
      • Reset to Default — Reset individual settings or entire sections (two-click confirm)
      • In-memory change tracking with save/revert/reset workflow

      Scope

      • Main config.json settings
      • Module-specific configuration sections
      • Zone flag defaults
      • Economy settings (currency, tax rates, upkeep)
      • World Map conditional sections based on refresh mode
      • Protection tab role selector and permission default/lock toggles

      Test Plan

      • Open /f admin and navigate to Config tab
      • Verify all 8 tabs load and switch correctly
      • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
      • Test world whitelist/blacklist add/remove with server world picker
      • Test Protection tab role selector and permission default/lock toggles
      • Test World Map tab conditional sections based on refresh mode
      • Test Save, Revert, and Reset Defaults (two-click confirm)
      • Verify saved config persists after /f reload

      Existing Infrastructure

      • AdminConfigPage.java — Placeholder page exists
      • ConfigManager — Handles config loading/saving
      • Admin GUI framework — Fully functional for other admin pages

      Origin

      Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        enhancementNew feature or request

        Type

        No type

        Projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        [Feat] Admin GUI: Runtime Config Editor #40

        Description

        @derrickmehaffy

        Summary

        The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

        Features

        Config Display

        • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
        • Show setting descriptions and default values
        • Indicate which settings require a reload vs. take effect immediately

        Editing

        • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
        • Input validation (numeric ranges, string patterns, enum values)
        • Highlight modified values that differ from defaults
        • World list editor with server world picker
        • Faction permissions matrix with role selector

        Actions

        • Save — Write changes to config file
        • Revert — Discard in-memory changes back to saved state
        • Reset to Default — Reset individual settings or entire sections (two-click confirm)
        • In-memory change tracking with save/revert/reset workflow

        Scope

        • Main config.json settings
        • Module-specific configuration sections
        • Zone flag defaults
        • Economy settings (currency, tax rates, upkeep)
        • World Map conditional sections based on refresh mode
        • Protection tab role selector and permission default/lock toggles

        Test Plan

        • Open /f admin and navigate to Config tab
        • Verify all 8 tabs load and switch correctly
        • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
        • Test world whitelist/blacklist add/remove with server world picker
        • Test Protection tab role selector and permission default/lock toggles
        • Test World Map tab conditional sections based on refresh mode
        • Test Save, Revert, and Reset Defaults (two-click confirm)
        • Verify saved config persists after /f reload

        Existing Infrastructure

        • AdminConfigPage.java — Placeholder page exists
        • ConfigManager — Handles config loading/saving
        • Admin GUI framework — Fully functional for other admin pages

        Origin

        Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

        Activity

        Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

        Metadata

        Metadata

        Assignees

        No one assigned

          Labels

          enhancementNew feature or request

          Type

          No type

          Projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          [Feat] Admin GUI: Runtime Config Editor #40

          Description

          @derrickmehaffy

          Summary

          The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

          Features

          Config Display

          • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
          • Show setting descriptions and default values
          • Indicate which settings require a reload vs. take effect immediately

          Editing

          • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
          • Input validation (numeric ranges, string patterns, enum values)
          • Highlight modified values that differ from defaults
          • World list editor with server world picker
          • Faction permissions matrix with role selector

          Actions

          • Save — Write changes to config file
          • Revert — Discard in-memory changes back to saved state
          • Reset to Default — Reset individual settings or entire sections (two-click confirm)
          • In-memory change tracking with save/revert/reset workflow

          Scope

          • Main config.json settings
          • Module-specific configuration sections
          • Zone flag defaults
          • Economy settings (currency, tax rates, upkeep)
          • World Map conditional sections based on refresh mode
          • Protection tab role selector and permission default/lock toggles

          Test Plan

          • Open /f admin and navigate to Config tab
          • Verify all 8 tabs load and switch correctly
          • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
          • Test world whitelist/blacklist add/remove with server world picker
          • Test Protection tab role selector and permission default/lock toggles
          • Test World Map tab conditional sections based on refresh mode
          • Test Save, Revert, and Reset Defaults (two-click confirm)
          • Verify saved config persists after /f reload

          Existing Infrastructure

          • AdminConfigPage.java — Placeholder page exists
          • ConfigManager — Handles config loading/saving
          • Admin GUI framework — Fully functional for other admin pages

          Origin

          Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            enhancementNew feature or request

            Type

            No type

            Projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            [Feat] Admin GUI: Runtime Config Editor #40

            Description

            @derrickmehaffy

            Summary

            The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

            Features

            Config Display

            • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
            • Show setting descriptions and default values
            • Indicate which settings require a reload vs. take effect immediately

            Editing

            • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
            • Input validation (numeric ranges, string patterns, enum values)
            • Highlight modified values that differ from defaults
            • World list editor with server world picker
            • Faction permissions matrix with role selector

            Actions

            • Save — Write changes to config file
            • Revert — Discard in-memory changes back to saved state
            • Reset to Default — Reset individual settings or entire sections (two-click confirm)
            • In-memory change tracking with save/revert/reset workflow

            Scope

            • Main config.json settings
            • Module-specific configuration sections
            • Zone flag defaults
            • Economy settings (currency, tax rates, upkeep)
            • World Map conditional sections based on refresh mode
            • Protection tab role selector and permission default/lock toggles

            Test Plan

            • Open /f admin and navigate to Config tab
            • Verify all 8 tabs load and switch correctly
            • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
            • Test world whitelist/blacklist add/remove with server world picker
            • Test Protection tab role selector and permission default/lock toggles
            • Test World Map tab conditional sections based on refresh mode
            • Test Save, Revert, and Reset Defaults (two-click confirm)
            • Verify saved config persists after /f reload

            Existing Infrastructure

            • AdminConfigPage.java — Placeholder page exists
            • ConfigManager — Handles config loading/saving
            • Admin GUI framework — Fully functional for other admin pages

            Origin

            Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

            Activity

            Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

            Metadata

            Metadata

            Assignees

            No one assigned

              Labels

              enhancementNew feature or request

              Type

              No type

              Projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              [Feat] Admin GUI: Runtime Config Editor #40

              Description

              @derrickmehaffy

              Summary

              The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

              Features

              Config Display

              • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
              • Show setting descriptions and default values
              • Indicate which settings require a reload vs. take effect immediately

              Editing

              • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
              • Input validation (numeric ranges, string patterns, enum values)
              • Highlight modified values that differ from defaults
              • World list editor with server world picker
              • Faction permissions matrix with role selector

              Actions

              • Save — Write changes to config file
              • Revert — Discard in-memory changes back to saved state
              • Reset to Default — Reset individual settings or entire sections (two-click confirm)
              • In-memory change tracking with save/revert/reset workflow

              Scope

              • Main config.json settings
              • Module-specific configuration sections
              • Zone flag defaults
              • Economy settings (currency, tax rates, upkeep)
              • World Map conditional sections based on refresh mode
              • Protection tab role selector and permission default/lock toggles

              Test Plan

              • Open /f admin and navigate to Config tab
              • Verify all 8 tabs load and switch correctly
              • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
              • Test world whitelist/blacklist add/remove with server world picker
              • Test Protection tab role selector and permission default/lock toggles
              • Test World Map tab conditional sections based on refresh mode
              • Test Save, Revert, and Reset Defaults (two-click confirm)
              • Verify saved config persists after /f reload

              Existing Infrastructure

              • AdminConfigPage.java — Placeholder page exists
              • ConfigManager — Handles config loading/saving
              • Admin GUI framework — Fully functional for other admin pages

              Origin

              Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                enhancementNew feature or request

                Type

                No type

                Projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                [Feat] Admin GUI: Runtime Config Editor #40

                Description

                @derrickmehaffy

                Summary

                The AdminConfigPage currently displays a "Coming Soon" placeholder. Implement a runtime configuration editor GUI that allows admins to view and modify plugin settings without editing files manually.

                Features

                Config Display

                • 8 tabbed sections (General, Power, Claims, Combat, Chat, Modules, World Map, Protection) covering ~130 settings across 9 config files
                • Show setting descriptions and default values
                • Indicate which settings require a reload vs. take effect immediately

                Editing

                • Boolean toggles, int/double increment/decrement, text fields, dropdowns as appropriate
                • Input validation (numeric ranges, string patterns, enum values)
                • Highlight modified values that differ from defaults
                • World list editor with server world picker
                • Faction permissions matrix with role selector

                Actions

                • Save — Write changes to config file
                • Revert — Discard in-memory changes back to saved state
                • Reset to Default — Reset individual settings or entire sections (two-click confirm)
                • In-memory change tracking with save/revert/reset workflow

                Scope

                • Main config.json settings
                • Module-specific configuration sections
                • Zone flag defaults
                • Economy settings (currency, tax rates, upkeep)
                • World Map conditional sections based on refresh mode
                • Protection tab role selector and permission default/lock toggles

                Test Plan

                • Open /f admin and navigate to Config tab
                • Verify all 8 tabs load and switch correctly
                • Test boolean toggles, int/double increment/decrement, text fields, dropdowns
                • Test world whitelist/blacklist add/remove with server world picker
                • Test Protection tab role selector and permission default/lock toggles
                • Test World Map tab conditional sections based on refresh mode
                • Test Save, Revert, and Reset Defaults (two-click confirm)
                • Verify saved config persists after /f reload

                Existing Infrastructure

                • AdminConfigPage.java — Placeholder page exists
                • ConfigManager — Handles config loading/saving
                • Admin GUI framework — Fully functional for other admin pages

                Origin

                Roadmap Phase B.3 ("Coming Soon" admin page placeholder).

                Activity

                Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                Metadata

                Metadata

                Assignees

                No one assigned

                  Labels

                  enhancementNew feature or request

                  Type

                  No type

                  Projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions