feat: Admin GUI — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy
, '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 — Config Editor, Backups, and Updates pages - #101

Merged
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features
Mar 14, 2026
Merged

feat: Admin GUI — Config Editor, Backups, and Updates pages#101
derrickmehaffy merged 4 commits into
releases/0.12.0from
feat/admin-gui-features

Conversation

@derrickmehaffy

Copy link
Copy Markdown
Contributor

Description

Implements three complete admin GUI pages accessible from the admin navigation bar, providing in-game management of configuration, backups, and updates.

Config Editor (#40)

  • 11-tab editor covering all HyperFactions settings with size-adaptive layouts (narrow/standard/wide)
  • Inline editing: boolean toggles, integer/double steppers, text fields, color pickers, enum dropdowns, locale selectors
  • Faction permissions editor with parent/child toggling and Default/Lock checkboxes
  • World overrides editor with tri-state per-world settings
  • Upkeep scaling tiers modal with live cost preview
  • Edit session caching — pending changes survive page close/reopen and modal round-trips
  • Input validation with debounced updates and save-blocked-on-invalid

Backup Manager (#41)

  • Paginated backup list with expand/collapse detail view
  • Create, restore (with safety backup), and delete with two-click confirmation
  • Backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)

Updates Page (#42)

  • Two-column layout: HyperFactions and HyperProtect Mixin with mirrored version info
  • Single "Check for Updates" button checks both simultaneously
  • Download buttons, changelog display, and rollback support
  • HyperProtect detection via ProtectionMixinBridge

UI Polish

  • All buttons use shared $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle (no more uppercase Common.ui styles)
  • Action bars standardized to zone settings pattern (40px height, 32px buttons, Label spacers)
  • Row spacing increased across all config row templates

Type of Change

  • New feature (non-breaking change which adds functionality)

Related Issues

Fixes#40
Fixes#41
Fixes#42

Testing

  • Tested on local development server
  • Added/updated unit tests
  • Verified no regressions in existing functionality

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my own code
  • I have commented my code where necessary
  • I have updated the documentation (if applicable)
  • My changes generate no new warnings or errors
  • I have added tests that prove my fix/feature works
  • New and existing tests pass locally with my changes

Add three complete admin GUI pages accessible from the admin navigation bar:
- Updates page: version info display, update checking, rollback support
- Backups page: create, restore, delete backups with paginated list
- Config Editor: 11-tab editor covering all HyperFactions settings
with size-adaptive layouts (narrow/standard/wide), inline editing,
color pickers, enum dropdowns, faction permissions with parent/child
toggling, world overrides, upkeep scaling tiers modal, edit session
caching, input validation, and debounced text updates
Includes config module getters/setters, ConfigSnapshot for applying
changes, ConfigValidator for input bounds, localization keys for all
10 languages, and ConfigV7→V8 migration for new settings.
… filter
- Replace all $C.@DefaultTextButtonStyle/$C.@SecondaryTextButtonStyle
with $S.@ButtonStyle/$S.@CyanButtonStyle/$S.@RedButtonStyle to match
codebase styling (no more uppercase/wrong-looking buttons)
- Remove double-background wrapper on backup name text field
- Redesign Updates page as two-column layout: HyperFactions (left) and
HyperProtect Mixin (right) with mirrored version info, shared
"Check for Updates" button that checks both simultaneously
- Fix HPM detection using ProtectionMixinBridge instead of update checker
- Fix "Latest" showing "-" when up-to-date (now shows current version)
- Add backup type filter dropdown (All/Hourly/Daily/Weekly/Manual/Migration)
- Move Updates and Mixin config sections adjacent in server tab
Match button height (32px), bar height (40px), and Label spacers
from admin_zone_settings.ui across all admin GUI action bars:
config editor (narrow/standard/wide), backups pagination, and
updates action bar.
@derrickmehaffyderrickmehaffy added enhancement New feature or request labels Mar 14, 2026
@derrickmehaffy
derrickmehaffy merged commit 88d8191 into releases/0.12.0Mar 14, 2026
2 checks passed
@derrickmehaffy
derrickmehaffy deleted the feat/admin-gui-features branch March 14, 2026 07:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@derrickmehaffy