Commit graph

273 commits

Author SHA1 Message Date
copilot-swe-agent[bot]
73f125ea21
fix: billing checkout — auto-provisioning, zero-dollar flow, duplicate prevention, paid-invoice cart fix
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/d18a8f6c-0715-46c4-9c97-94ec7e2a22fc

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 19:07:21 +00:00
copilot-swe-agent[bot]
e13c00e89d
fix: address code review feedback - spacing and SQL comment
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/439845e0-926e-4b49-9cd0-810457b73c12

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 17:25:36 +00:00
copilot-swe-agent[bot]
5b2162fb28
fix: standardize billing order status values and apply full-day expiry grace rule
- home_handling_functions.php: display expiration as Y-m-d only (not Y-m-d H:i);
  apply full-day grace by comparing date-only (midnight) in PHP so a server
  expiring on today's date remains Active the entire day
- cron-shop.php Step B & C: change server_expiration_date comparisons from
  < DATE_SUB(NOW(), ...) to DATE(server_expiration_date) < DATE_SUB(CURDATE(), ...)
  ensuring the full expiration day is honoured
- user_games/check_expire.php: change all three expiration queries from
  <= time() to < strtotime(date('Y-m-d')) (today-midnight) for full-day grace
- billing/test_integration.php: replace status='paid' (old order status) with
  status IN ('Active','paid') for backward compat during migration
- user_games/billing_integration.php: clarify comment that billing_invoices.status
  uses the payment lifecycle ('paid'/'unpaid'/'due'), separate from billing_orders.status
- Add modules/billing/sql/normalize_billing_order_status.sql migration script
  to convert installed->Active, paid->Active, suspended->Expired in existing rows
- Update CHANGELOG.md

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/439845e0-926e-4b49-9cd0-810457b73c12

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 17:24:41 +00:00
copilot-swe-agent[bot]
cb9c54b858
fix: address code review comments (spelling, add comment to renewable_statuses)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/c56f04bb-ecce-4f1b-9bbd-c5f83107da1d

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 15:56:26 +00:00
copilot-swe-agent[bot]
2f62bd32c9
fix: standardize billing order status values and fix expiration lookup
- billing_integration.php: admin-created servers now use status='Active' (was 'installed')
- home_handling_functions.php: expiration query uses status IN ('Active','Invoiced') only
- my_account.php: renewable_statuses includes canonical 'active'/'invoiced'; legacy labels updated
- admin_orders.php: add orphaned home_id diagnostics section
- normalize_billing_order_status.sql: new migration to convert installed/paid→Active, suspended→Invoiced

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/c56f04bb-ecce-4f1b-9bbd-c5f83107da1d

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 15:55:39 +00:00
copilot-swe-agent[bot]
c7f1c95a6a
fix: direct billing_orders expiration query with whitelist status filter
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/20ae119c-b626-4e1b-8180-0908d070bf1c

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 13:10:42 +00:00
copilot-swe-agent[bot]
f1c96ff1b7
fix: Steam Workshop module issues and modulemanager PHP 8.3 warning
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/773ab9dc-a9f7-463e-8bf1-c37ac01b0b37

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 12:35:39 +00:00
copilot-swe-agent[bot]
1bd34c07a0
fix: use static path hint for agent CLI command in user.php
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/d9a824dc-5568-4604-a1e1-c72ccf240e13

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 12:20:23 +00:00
copilot-swe-agent[bot]
59bd545ab3
feat: replace Steam Workshop with clean rebuild (no adapters/controllers)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/d9a824dc-5568-4604-a1e1-c72ccf240e13

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 12:18:35 +00:00
copilot-swe-agent[bot]
6e424bee60
fix: server expiration LEFT JOIN and Steam Workshop MySQL 5.7 safe migration
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/fca65480-29f6-4a76-ae4f-442477782a2c

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 10:54:48 +00:00
copilot-swe-agent[bot]
2a5dd10181
Fix game monitor billing expiration display
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/0bb2bf91-6e30-4a24-a514-110dfa54397f

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-05 10:13:58 +00:00
copilot-swe-agent[bot]
ade2aabdf0
fix: address code review - add aria-label to jump link, localize optional text, add LANG_optional key
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/7c776773-fa8f-4f5d-afec-ff62cf7b2bba

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 20:35:59 +00:00
copilot-swe-agent[bot]
e30c6ac25d
feat: config_games XML tag descriptions + jump link; support optional fields; steam_workshop remove adapter terminology
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/7c776773-fa8f-4f5d-afec-ff62cf7b2bba

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 20:34:14 +00:00
copilot-swe-agent[bot]
df4f1d1bdc
fix(steam_workshop): address code review feedback
- WorkshopInstaller: rename cachePath/installPath params to sourcePath/targetPath in checkNeedsSync; replace account_placeholder with TODO comment explaining feature is pending
- WorkshopRepository: remove duplicate docblock on insertOrUpdateMod
- module.php: improve install_queries version comments
- user_workshop_mods.php: rename $scriptPath to $requestPath
- profile_form.php: add symlink limitation note to copy method dropdown
- lang/en_US.php: update steamcmd login mode hint to reflect account mode status"

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e7f0d80d-f775-4794-adbd-cf48b55bc9c1

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 19:52:22 +00:00
copilot-swe-agent[bot]
69f415ad86
feat(steam_workshop): production rewrite with full admin profile page and server settings
- module.php: bump db_version to 2; full v2 schema in install_queries[0]; ALTER TABLE migration in install_queries[2] adding 11 new profile columns plus server_workshop_settings table
- WorkshopRepository: expand saveProfile() with all new fields (steam_app_id, steamcmd_login_mode, steamcmd_path, mod_separator, copy_keys, key paths, pre/post scripts, validation_notes); add nullOrStr helper; add server settings CRUD (getServerSettings, saveServerSettings, recordUpdateResult, setUpdateQueued, listQueuedUpdateHomes); update insertOrUpdateMod with custom_folder; update listAllEnabledMods to select new columns
- WorkshopProfileController: full extractProfileData() with all new fields; validateProfileData with folder template check
- views/admin/profile_form.php: full rewrite – all required fields (steam_app_id, workshop_app_id, login mode, SteamCMD path, OS, cache path, install path, folder naming dropdown, launch params, mod separator, copy method, copy keys with JS show/hide, key paths, pre/per-mod/post bash scripts with DayZ example, validation notes, config file template)
- views/admin/profiles.php: updated list view columns (App IDs, Login, Method)
- WorkshopInstaller.php: full rewrite with %var% template support (+ legacy {var} compat); buildTemplateVars() resolves all 14 variables; pre/post script execution; triggerSteamCmdDownload uses new profile fields; copyKeys helper
- WorkshopModController: add save_settings and queue_update POST actions; handleModsPage loads serverSettings + allProfiles
- views/user_workshop_mods.php: full rewrite – server settings form (enable, profile selector, update mode, restart behavior), update status grid (status/error/time/success time), queue update button, mod table with custom_folder column and toggle/order auto-submit
- lang/en_US.php: ~80 new string keys for all v2 fields
- steam_workshop.css: new v2 styles (3-col grid, script textarea, status grid, server settings card, badges)"

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e7f0d80d-f775-4794-adbd-cf48b55bc9c1

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 19:49:36 +00:00
copilot-swe-agent[bot]
7377f955fd
Fix PHP 8.3 htmlentities null safety, remove unused themes, rename OGP_LANG_ to LANG_
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/9909a053-0a66-4453-a844-d3b80d727b27

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 17:31:16 +00:00
copilot-swe-agent[bot]
9550cd32b4
fix: billing order flow, steam_workshop lang key, workshop module install queries
- order.php: replace foreach((array)$mysqli_result) with proper fetch_assoc() loop
- order.php: fix hidden service_id field to use $_REQUEST instead of $_POST
- order.php: add safe error messages and error_log() on failed service lookup
- lang/English/global.php: add OGP_LANG_steam_workshop to fix _steam_workshop_ raw key
- steam_workshop/module.php: replace unusable $module_db_create heredoc with
  proper $install_queries[0] array so tables are created during module install
- timestamp.txt: updated

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/70fa0082-93ad-4a4d-a1b3-ea6afa77ee80

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 17:15:07 +00:00
copilot-swe-agent[bot]
86f825e388
feat: rewrite workshop_admin UI – remove adapter terminology, make configurations primary
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/3fc88263-c1c0-46f6-95f1-7070fc6f9d02

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 16:56:38 +00:00
copilot-swe-agent[bot]
47c95bb4e7
fix: PHP 8.3 string interpolation and remove Steam Workshop from main nav
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/ddf9efe5-279d-4197-98e5-b3fc5b28ea0c

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 12:49:21 +00:00
copilot-swe-agent[bot]
c737f0caa7
fix: remove debug output, Steam Workshop menu item, and PHP 8.3 TypeErrors in admin controller
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/b402e67e-690f-4d0c-be37-181af3833298

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 11:40:45 +00:00
copilot-swe-agent[bot]
d0c86926bd
fix: address code review feedback (comment clarity, remove redundant static array, add CSS class)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/86bb1e0e-2bbd-439b-88cd-7a624ad24761

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 00:13:49 +00:00
copilot-swe-agent[bot]
5c463d381f
fix: FAQ PHP warnings, billing nav, XML fatal-skip, Steam Workshop user menu
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/86bb1e0e-2bbd-439b-88cd-7a624ad24761

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-04 00:12:39 +00:00
copilot-swe-agent[bot]
7391d23487
fix: address code review - add sanitizer comments, fix strrpos false-return edge case
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/1afce49e-510d-49a6-9d11-0b7118d3cf85

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:44:57 +00:00
copilot-swe-agent[bot]
de80f89619
fix: wrap DayZ post_install scripts in CDATA, add XML editor auto-sanitizer
- dayz_arma2co_win32.xml: wrap post_install in CDATA to fix raw '<' breaking
  XML parsing; fix dbPass generation to use portable tr form
- dayz_epoch_mod_win32.xml: same CDATA wrapping; replace &lt; literals so
  bash actually receives real '<' redirect characters
- config_servers.php: add config_games_sanitize_xml_scripts() that wraps bare
  '<' in script-like nodes with CDATA before saving raw XML; add
  config_games_script_node_names() helper; structured-editor save now uses
  createCDATASection() for post_install/pre_start/etc. nodes so shell
  characters survive DOM round-trips intact

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/1afce49e-510d-49a6-9d11-0b7118d3cf85

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:43:41 +00:00
copilot-swe-agent[bot]
d564476d1c
feat: GSP 1.0 baseline – module versions, FAQ refresh, XML editor validation, Obsidian theme
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/40ca313f-3f17-4f62-8f05-ba72540a8d30

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:31:07 +00:00
copilot-swe-agent[bot]
9740cdd33b
fix: escape service_name in order.php to prevent XSS; modernize admin JS
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/28b4019a-734d-418e-8002-8c1ff0c0f564

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:04:59 +00:00
copilot-swe-agent[bot]
21bcdac9d7
fix: address review feedback - move JS to script block, use CSS classes
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/28b4019a-734d-418e-8002-8c1ff0c0f564

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:04:03 +00:00
copilot-swe-agent[bot]
70c3ff8979
fix: billing game images - dropdown selector, auto-guess, proper URL resolution
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/28b4019a-734d-418e-8002-8c1ff0c0f564

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:03:03 +00:00
copilot-swe-agent[bot]
a484974c06
fix: billing admin service list UI and customer server list display
- adminserverlist.php: fix th color (dark bg #2c3e50 + light text #f0f0f0)
  and add position:sticky to thead so header rows stay visible while scrolling
- adminserverlist.php: remove Out of Stock column from UI (thead, tbody),
  save handler (no longer reads/writes out_of_stock), and sync logic
  (soft-disable no longer sets out_of_stock = 1; new rows no longer insert it)
- adminserverlist.php: normalize price inputs to step=0.01 / 2 decimal places
- serverlist.php: fix foreach on mysqli_result cast bug that silently
  prevented all services from rendering; now uses fetch_assoc() loop
- serverlist.php: add IS NOT NULL guard alongside the != '' check

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/3474562e-25f4-4d89-a030-f227e11b609b

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 22:39:49 +00:00
copilot-swe-agent[bot]
51e3bbe16d
fix: billing login fatal error (remove users_pass_hash UPDATE) and clean up DayZ Epoch XML post_install
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/ab0498eb-fc73-47ef-aec4-f20043320401

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 21:58:13 +00:00
692c276bc9
Update dayz_arma2co_win32.xml 2026-05-03 14:46:25 -07:00
copilot-swe-agent[bot]
ea995dc3b8
fix: sync billing_services from config_homes (one row per game), not config_mods
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/007e3cab-f414-4c90-864c-e820a847b637

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 21:28:46 +00:00
2686174609
Merge pull request #103 from GameServerPanel/copilot/fix-batch-of-errors
Fix array offset on false, array-to-string, and missing INSERT columns in billing sync
2026-05-02 13:44:55 -07:00
copilot-swe-agent[bot]
d57e3d0152
Fix: array offset on false in getNextAvailablePort, array-to-string in render_node attributes, missing columns in sync_billing_services INSERT
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/5bf3f57e-9174-4768-ae8b-c3526a1daeca

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 20:42:46 +00:00
1b0cddc818
Fix SQL query syntax in monitor_buttons.php 2026-05-02 16:36:13 -04:00
735322b8bc removed extras module 2026-05-02 16:20:19 -04:00
7a01838802
Modify download links and extraction commands
Updated download URLs and extraction commands in the post-install section.
2026-05-02 16:14:49 -04:00
copilot-swe-agent[bot]
ffece9ba57
fix: address code review nits - table name escaping, prefix fallback, gamemanager default, admin.php site vars
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/35af6b7c-2518-4105-b4d2-ba1f3fe754cd

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 19:43:35 +00:00
copilot-swe-agent[bot]
d8972fee16
fix: consolidate module schemas to db_version=1, fix billing admin undefined vars and prefix
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/35af6b7c-2518-4105-b4d2-ba1f3fe754cd

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 19:41:22 +00:00
copilot-swe-agent[bot]
744964ac60
fix: address code review nits - simplify array_map lambda and clarify empty remote_server_id
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e8bfe531-e1ff-4257-b49c-f8376b84e772

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:42:09 +00:00
copilot-swe-agent[bot]
3024e41121
fix: config editor array-to-string warning and billing description INSERT failure
- config_servers.php: add gsp_normalize_config_value(), gsp_value_to_display_string(),
  gsp_value_to_editable_string() helpers; replace (string)$attrValue cast at line 124
  with gsp_value_to_editable_string() so PHP arrays from SimpleXML attribute iteration
  never trigger "Array to string conversion" notices
- adminserverlist.php sync_billing_services(): add description column (= service name)
  to INSERT so the query succeeds on databases where description is NOT NULL without
  a default; add pre-flight col_exists() schema guard that shows a friendly admin
  warning and aborts sync instead of crashing on completely missing columns

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e8bfe531-e1ff-4257-b49c-f8376b84e772

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:41:20 +00:00
04dc98380b
Merge pull request #100 from GameServerPanel/copilot/fix-billing-database-target
Fix billing DB target safety + replace service-remote-server mapping table with CSV column
2026-05-02 08:26:11 -07:00
c5d64420dd
Update dayz_epoch_mod_win32.xml 2026-05-02 08:25:25 -07:00
copilot-swe-agent[bot]
8a832b0eac
fix: remove unused $type variable in adminserverlist.php flash loop
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/0b960e6d-bdf7-4b5b-8114-6c63e6b11a8d

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:22:58 +00:00
copilot-swe-agent[bot]
3219ed335e
fix: billing DB safety, remove mapping table, sync services from game config
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/0b960e6d-bdf7-4b5b-8114-6c63e6b11a8d

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:22:13 +00:00
copilot-swe-agent[bot]
61f6e517ec
fix: improve script-only install messaging and add error logging for exec() calls
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/9c87b62e-17b2-4f36-9b49-82238d73dda2

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:09:43 +00:00
copilot-swe-agent[bot]
75e63475ae
feat: remove legacy rsync/manual install methods, standardize SteamCMD pipeline, fix Update button
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/9c87b62e-17b2-4f36-9b49-82238d73dda2

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:08:38 +00:00
copilot-swe-agent[bot]
7f6fe9a39a
fix: address code review - prepared stmt, first-radio auto-select, remove unused var, clarify comment
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/4a9c8aab-3782-44a8-a5e4-01b50a813cc0

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 14:52:30 +00:00
copilot-swe-agent[bot]
b3d677035b
feat: update wording (GitHub Stable/Unstable) + billing matrix redesign
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/4a9c8aab-3782-44a8-a5e4-01b50a813cc0

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 14:50:25 +00:00
copilot-swe-agent[bot]
f4f222953f
fix: address code review feedback on billing admin fixes
- menu.php: remove unnecessary @ suppression from mysqli_thread_id()
  (instanceof check already guarantees a mysqli object)
- adminserverlist.php: split ternary flash message into separate if/else
  for readability; replace dynamic SQL fragment with explicit if/else
  query branches

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/988997ed-7568-48bf-96ef-889fb5d91fec

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 13:41:13 +00:00