Indoor golf simulator bay background

24/7 Golf pilot operator guide

247SimManager Suite

An independent simulator PC suite, first piloted at 24/7 Golf, combining the 247GolfAccessControl Windows application, CourtReserve booking data, simulator software, RemoteLock door PINs, PJLink projector automation, deployment automation, WinSysMaint, and owner-facing documentation.

Debug 1.46.14 kiosk with centered Suite branding and the default 24/7 Golf facility logo
247GolfAccessControl Windows app Schedule context, 4-digit code entry, guidelines acknowledgement, simulator software handoff.
4 parts Windows application, watchdog service, Deployment Manager, and documentation
App 247GolfAccessControl manages the customer unlock experience
Service WinSysMaint keeps simulator PCs aligned and maintainable
Deployment One interactive manager standardizes simulator PC setup and maintenance

Build dashboard

How much work is already inside 247SimManager Suite

This repository carries the independent 247SimManager Suite: the 247GolfAccessControl Windows application, the WinSysMaint watchdog service, interactive simulator-PC Deployment Manager, and the documentation layer used to keep owners and future developers aligned.

Tracked suite and owner-guide artifacts 569 files
Tracked nonblank text/source lines 107,330 lines
Owner-visible dashboard refresh October 1, 2026

Metrics include tracked suite source, tests, documentation and this owner guide. The separately managed marketing website and generated build output are excluded.

Passing tests in the current full Debug validation 971 tests
Core booking, policy, and service tests 457 tests
WPF, UI, and integration tests 404 tests
Deployment Manager tests 110 tests
Latest build progress

A friendlier thank-you, with a focused upgrade option

Completed October 1: the Thank You for Playing message now supports Markdown and all six booking/location tokens in both its title and message. Friendly golf-themed defaults ship with a deployment option that replaces only those two saved text values. Deployment Manager now uses the 247SimManager Suite logo and Windows icon. The full Debug 1.46.18 installer passed all 971 tests and independent package verification, and its Google Drive delivery is confirmed.

  • Formatted, personal thanks: use headings, bold text, callouts, lists and paragraph breaks in the message. Both fields support all six general tokens, using the ending session rather than the next customer. See the new defaults and customer preview.
  • Refresh deployed copy in one selection: leave full settings overwrite cleared and select Replace only Thank You for Playing title and message during AccessControl Install / Upgrade or Repair. The option defaults off and backs up the existing settings during the value-preserving update. Follow the upgrade steps.
  • Recognizable installer: Deployment Manager now carries the full Suite logo, its Windows application icon, and matching window titles. Both brand assets are embedded for offline use. See the approved appearance.
  • Verified current handoff: Debug 1.46.18 contains 988 manifest-controlled files across 989 ZIP entries. All hashes and versions passed; the final packaged logo and icon match the approved assets. Download the verified installer.
  • Finish with confidence: after final Done or booking-end timeout, the kiosk locks before showing the closing message. Close or the message timeout returns to the locked kiosk. See the customer screen, Settings, and end-to-end flow.
  • Location-owned copy: edit the plain-text title and Markdown message, preview unsaved wording, then Save. Both fields resolve tokens from the ending booking context. The default TPS inactivity wording reflects the pilot's reported behavior; AccessControl does not request or verify a TrackMan sign-out.
  • Energy-saving work is deferred: the September 25 monitor-power research has not been approved for implementation. Windows sleep, monitor control, and GPU power changes are not implemented by this work. Existing booking-aware PJLink behavior continues. Read the deferred research scope.
  • Two clear identities: Suite branding identifies the software; the facility logo identifies the location. Leave Kiosk Branding Icon blank for the default 24/7 Golf logo, or select a custom facility image. See the kiosk and Settings previews.
  • Manual incident reports: choose a customer reboot, export eight hours of prior Windows events and the after-window through service startup plus four hours, and include broad retained TrackMan/support evidence. Partial windows and unavailable sources are labelled; no report runs during customer restart or service startup.
  • Clearer safe actions: the requested Keep Playing, Continue, I ACCEPT, Close and no-buffer Done buttons are green. Help places the red Reboot Simulator button at the top right and green Close at the bottom right. See the six updated dialog previews.
  • TrackMan monitoring is configurable: Monitor TrackMan related log files defaults on, with Scan Frequency set to 5 minutes. Choose a whole number from 1 to 1,440 in Deployment Manager or Admin Settings → WinSysMaint. Restart WinSysMaint after saving changes. Review the settings, screenshots, and event meanings.
  • Useful signals without replaying old incidents: recognized application failures, memory or disk warnings, persistent device problems, content errors, recoveries, and startup/close markers become events 1120–1127. The first scan starts at the ends of existing logs; later scans resume saved positions.
  • Bounded background work: scans never overlap, read at most 8 MiB of log data per scan, and retain bounded checkpoints. Unchanged-log component checks took about 6 ms on Simulator #1; this is a short idle measurement, not a live-play performance guarantee.
  • Browser teardown repaired: Make A Booking, Extend My Time, and Feedback now release their embedded browsers before window destruction, with guarded repeated cleanup. Forty-five native browser cycles closed their browser processes; a persistent native-handle increase remains under investigation.
  • Administrator booking diagnostics: Make A Booking shows the current requested and navigated URL in Admin Mode, including redirects and fragment changes. Customer sessions do not show this diagnostic row.
  • Deployment files stay available: overlapping launches of the same package cannot replace its extracted files while Deployment Manager is open. Settings review creates a support report before installation and offers Copy diagnostics with selectable errors.
  • Customer reboot is an owner choice: enable Windows Auto Start in General, then select Show Reboot Simulator button under Kiosk → Customer Help. The checkbox defaults off and becomes unchecked and disabled when auto start is unavailable; its help icon explains the prerequisite.
  • Reason before recovery: Reboot Simulator opens a native reason-and-comments dialog. A valid reason and explicit confirmation are required; Other also requires comments. Cancel, Escape, closing, or timeout cancels the restart. Normal Feedback and Customer Shutdown retain their web form.
  • The established full-PC restart: AccessControl rechecks auto start and asks WinSysMaint to run the same settings, application-close, and Windows restart sequence used by scheduled maintenance. It works independently of the saved schedule and does not change that schedule. Update both components together.
  • Customer restart evidence: WinSysMaint events 1020 and 1025 retain the submitted reason and comments. Event 1025 marks the customer restart-command boundary; Windows boot and service-start records establish the subsequent timeline. Debug → Customer Reboots lists genuine events for 30 days and exports reports only when an administrator requests one.
  • Specific retention defects corrected: replaced immutable Debug rows can now be collected, process monitoring retains only the newest 2,000 observations, and a slow CourtReserve response cannot accumulate periodic refresh requests. Window timers, browser initialization, process wrappers, and settings operations now have tighter cleanup.
  • Clear review limits: automated tests verified specific managed-object and cleanup fixes. The September 17 review also found remaining native-browser handle growth. No CPU/memory trace was captured during the reported blank screens; a coordinated live-play capture is still needed.
  • Clear booking-end choices: Done remains enabled and locks the kiosk. Keep Playing appears only when eligible time remains; a timed-out notification locks the kiosk. Notification teardown now protects the main application lifetime and records lifecycle diagnostics for support.
  • Five-minute AccessControl watchdog: enabled by default and independent of nightly maintenance. Recovery starts AccessControl as the registered interactive kiosk user; the new kiosk begins locked and requires a booking code again.
  • Intentional exits stay closed: an authenticated administrator close or the final accepted Customer Shutdown exit persists a stop instruction. Merely entering Admin Mode or accepting a warning does not disable recovery. Manually starting AccessControl re-arms monitoring.
  • Two pre-end messages: owners edit separate messages for bookings that qualify for buffer time and bookings that do not. Selection uses the fresh, complete buffer decision; extension permission remains independent.
  • Shared minutes token: [SETTING-MINUTES-BEFORE-BOOKING-END] expands to values such as 10 minutes across supported token surfaces, including Time Extended. It represents the live setting, not a running countdown.
  • Two maintenance choices: Settings enforcement only and Restart System. TPS QR reset settings, scheduling, warnings, commands, readiness signaling, state, and events have been removed.
  • Practical remote monitoring: the TeamViewer reference explains Application-log checks for both AccessControl and WinSysMaint across Error, Warning, and Information. The safe sample writer now covers 55 named events without performing their underlying actions; remote alert delivery still needs onsite verification.
  • No extra customer action: each timed notification waits for a fresh booking check, applies current booking rules, and appears only if it is still due. The interface remains responsive while CourtReserve is queried.
  • New paid time is recognized: an amended booking or qualifying same-customer chain resets the remaining time and notification schedule. An obsolete notification closes automatically.
  • Buffer permission is rechecked: another booking at or below Booking Gap after the final paid end removes courtesy time. Larger gaps still cap any eligible buffer at the next booking start.
  • Safe verification: failed, stale, missing, unpaid, reassigned, or conflicting booking data cannot grant extra time. Existing paid time remains the enforcement boundary when verification fails.
  • Restrictions follow the booked product: every Booking Buffers reservation-type row can expand into its own Restricted Applications table. A restriction on one type does not affect another type.
  • Owner-authored customer guidance: each selected EXE has its own warning title and Message action. The two-panel editor keeps Markdown source on the left and a live formatted preview on the right before Save.
  • Five-second detection with fail-closed recovery: AccessControl checks the active reservation type in nonoverlapping background work, covers the complete kiosk monitor, and presents the configured warning. After the customer selects I UNDERSTAND, it requests every matching process to close, force-terminates any instance still running after five seconds, verifies exit, waits two seconds, and restores the configured Startup applications in their saved order.
  • Recovery stays visible until the simulator is ready: the full-screen Returning to Home Screen shield cannot be dismissed. If process closure or application restoration fails, AccessControl logs the problem and retries the complete recovery every five seconds instead of returning a customer to a partially restored simulator.
  • Simple EXE selection: administrators may browse to multiple different EXE paths even when Windows reports the same process name. The same normalized full path cannot be saved twice, and each shared process name is checked only once.
  • Cumulative Debug discovery: Monitor Running Applications samples every five seconds and retains the newest 2,000 observations, including closed processes until they age out. Reopening with a new PID creates a new retained observation; repeated sightings of the same process instance do not create duplicate rows.
  • Interactive-app filter: Show Only Interactive limits the visible Debug history and subsequent monitor samples to processes with a main window. Turning the filter off restores previously retained rows instead of deleting evidence.
  • Policy follows the reservation type: each Location Code-matched CourtReserve type has its own Enable Buffer, Allow Extending, Min Duration, and Buffer Minutes values. New types begin safely with both optional privileges disabled.
  • Simple catalog maintenance: Refresh Reservation Types adds new matching types, removes types no longer returned by CourtReserve, refreshes API-owned names and colors, and preserves owner-entered policy for surviving type IDs.
  • Fast booking-list display: AccessControl renders every booking first, then reviews enabled customer indicators sequentially in the background and applies each result as it completes. Cancellation and refresh-generation guards prevent an older schedule review from changing a newer list.
  • Continuous sessions are evaluated correctly: back-to-back or qualifying linked bookings for the same verified member use their combined paid duration and final booking boundary. Two linked 30-minute bookings therefore satisfy an inclusive 60-minute reservation-type minimum.
  • Optional customer guidance: Show Extend / Allow Indicators On Bookings is off by default. When enabled, lower-right clock-plus and hourglass glyphs explain extension and buffer availability on hover; unavailable states use the same glyphs with a high-contrast red circle/slash.
  • No hidden performance cost when indicators are off: disabling the presentation setting hides both glyphs and skips indicator-specific continuity, duration, gap, and handoff analysis while leaving actual Extend My Time and post-booking enforcement active.
  • Reservation type at a glance: every booking card carries a thin right-edge marker using the reservation type color supplied by CourtReserve, independent of the optional policy indicators.
  • Deployment begins with the right catalog: Deployment Manager requires a Location Code, retrieves matching reservation types before AccessControl Install or Repair, and provisions safe-disabled rows. Value-preserving updates retain owner choices for surviving IDs.
  • Readable administrator controls: Booking Buffers now uses the same dark table language as Startup Applications, with white text, large keyboard-focusable ON/OFF toggles, clear numeric inputs, and no row-delete action.
  • One download and one launch: location administrators download a single EXE from the configuration-specific Google Drive folder. The launcher validates its embedded archive, extracts a versioned local copy, checks every packaged file, records a support log, requests Windows administrator approval, and opens Deployment Manager automatically.
  • A fixed kiosk-ready taskbar: Search is hidden; no applications are pinned; Task View, Widgets, and Resume are off; the hidden-icon menu is on; alignment is centered; auto-hide is selected; taskbar buttons always combine without labels; and smaller buttons are always used.
  • One owner-controlled taskbar switch: Configure the required Windows taskbar settings is enabled by default. It is available in AccessControl Admin Settings and Deployment Manager, and it controls the complete ten-setting baseline without exposing ten separate configuration choices.
  • Four clear Windows security choices: Deployment Manager and AccessControl Admin Settings expose default-enabled controls to turn off all firewall profiles, turn off the supported App & browser control protections, and maintain Microsoft Defender exclusions, plus an independent default-off choice for Smart App Control. Clearing a choice leaves that Windows policy area unchanged while retaining its saved configuration.
  • Existing installations remain authoritative: when Deployment Manager finds a valid installed C:\ProgramData\WinSysMaint\service.json, it preloads the computer's current firewall, App & browser control, Smart App Control, Defender-exclusion switch, and exclusion-path choices. A new computer instead starts with the approved 24/7 Golf defaults, which the administrator can review and edit before deployment.
  • Five trusted antivirus folders by default: Defender maintenance now includes C:\ProgramData\Trackman, C:\Program Files\TrackMan Performance Studio, C:\Program Files\247Golf, C:\Program Files\247Golf\SimManager, and C:\Program Files\247Golf\SimManager\AccessControl. Defender itself remains enabled.
  • Defined App & browser scope: the shared policy turns off Windows and Microsoft Edge SmartScreen, App Install Control, potentially unwanted application blocking, Microsoft Store app web-content evaluation, and Enhanced Phishing Protection. Smart App Control has its own switch because turning it off can require a Windows reset or reinstallation before Windows permits it to be enabled again.
  • Smart App Control is explicit and fail-visible: on Windows 11 version 22H2 or newer, selecting the default-off choice sets Smart App Control to Off and refreshes Code Integrity policy. Unsupported Windows versions, a missing refresh tool, or an apply/read-back failure produce a yellow nonblocking warning and do not cancel the remaining deployment or maintenance work.
  • All individual setting problems remain nonblocking: a permission problem, unloaded user profile, unsupported driver or Windows value, or failed read-back is shown as a warning and written to the local and Windows Application logs when appropriate. Remaining settings and the selected Install, Repair, Verify, or maintenance action continue.
  • Full-build requests now include the location-admin package: full Debug, full Release, and ALL workflows rebuild the complete solution, run every test, create and independently verify the one-click EXE, and identify the matching 247SimManager\Debug or 247SimManager\Release Drive destination.
  • One configuration engine from deployment through nightly maintenance: Deployment Manager Install and Repair call the same WinSysMaint enforcer and validator used by AccessControl administrator actions and scheduled maintenance. Verify is read-only, so the owner sees the same requirements and results at every stage.
  • Automatic Windows Updates are disabled: the managed baseline prevents unattended update installation, preview builds, optional or early feature rollouts, and the Get the latest updates as soon as they're available opt-in.
  • Other Microsoft product updates are disabled: SimManager writes both policy and Windows Settings values to off and unregisters the Microsoft Update service so the separate product-update opt-in cannot remain active from the PC's earlier use.
  • File Explorer is ready for onsite support: hidden items and file extensions are visible, full paths and drive letters are shown, compressed/encrypted files use color, and empty-drive hiding, merge-conflict hiding, and the Sharing Wizard are turned off for loaded real-user profiles.
  • New-PC review is required and complete: when WinSysMaint is being installed on a new computer, the operator reviews every service setting before deployment. Missing GPU executables and unsupported adapter properties remain visible for correction, but they no longer prevent the applications and all other supported settings from being deployed.
  • One unsupported setting cannot stop commissioning: each system-policy area has its own safety boundary. WinSysMaint writes the condition to the Windows Application log, continues with the remaining settings, and still proceeds to the selected maintenance action. Deployment Activity shows the same nonblocking warning to the installer.
  • Full configuration is the safe default: complete Windows configuration is selected by default for a new deployment. Installing application binaries without applying the computer baseline remains an explicit operator choice.
  • TrackMan-specific support: TrackMan Performance Studio remains a configurable Startup application, with editable Defender and GPU defaults and optional diagnostic-log monitoring. TrackMan QR reset workarounds have been removed; ordinary startup, customer booking QR images, and restricted-application recovery remain available.
  • Duplicate-safe application lists: Startup Applications and High Performance GPU Applications reject repeated executable paths, including paths that differ only by letter case or contain equivalent . or .. segments. Existing duplicate JSON is repaired deterministically by retaining the first row and its order.
  • Clear support boundary: SimManager owns Windows kiosk access, ordered application startup, maintenance, and the selected device adapter properties; simulator firmware, calibration, telemetry, and vendor application preferences remain with the selected vendor.
  • Settings-first maintenance tests: the Admin Settings Test Maintenance button saves and reloads the current service configuration, clearly identifies the selected action, requests Windows approval, and records the result without depending on the nightly schedule.
  • Service health is fail-visible: every locked-kiosk presentation checks WinSysMaint. If the service is stopped, AccessControl logs the condition, requests a start with narrowly scoped rights, waits for recovery, and records success or failure.
  • Updates preserve owner choices: AccessControl and WinSysMaint normalize missing, invalid, and retired settings property by property. Deployment Manager presents a guided side-by-side review before a value-preserving update is approved.
  • One managed workstation policy: Deployment Manager, manual owner validation, manual Apply, and nightly WinSysMaint maintenance use the same required end state for Windows time, firewall, App & browser control, Smart App Control, Defender, GPU, taskbar, Windows Update, File Explorer, and the dedicated simulator device adapter.
  • Physical adapter selection: the installer lists physical wired adapters without Wi-Fi, packet filters, WAN miniports, Bluetooth, kernel-debug, VPN, or virtual interfaces; it recommends the single connected wired adapter with no default gateway when that choice is unambiguous.
  • Simulator device link stability: Auto Disable Gigabit, Energy-Efficient Ethernet, and Power Saving Mode are Disabled; Speed & Duplex is fixed at 1.0 Gbps Full Duplex. The stable interface GUID is stored internally while owners and support see the Windows connection name and hardware model.
  • Manual proof before troubleshooting: AccessControl Admin Settings can validate every managed value without changing Windows, highlight mismatches with current and required values, or apply the same enforcement pipeline used by nightly maintenance and validate again.
  • Main-screen selections remain authoritative: the deployment settings review now shows Simulator, CourtReserve, path, and simulator device adapter values already selected on the main screen instead of asking an administrator to type package defaults or a network GUID.
  • Licensed CourtReserve startup: AccessControl calls the authenticated locations endpoint before it creates the kiosk, starts simulator software, or controls the projector. Demo Mode cannot bypass the check.
  • Location proof in Settings: General Settings shows the licensed CourtReserve ID and Name returned during startup and includes a safe mock preview of the always-on-top unlicensed notification.
  • Actionable licensing failures: API or verification failures write Application Error event 24702 and exit; an unlicensed response writes event 24703 with the returned ID and Name, shows support instructions, and then exits.
  • Current Debug handoff: the complete version 1.46.18 source, settings schemas, and deployable one-click Debug EXE passed all 971 automated tests. Independent verification matched all 988 manifest-controlled files across 989 internal ZIP entries, confirmed every first-party executable reports 1.46.18.0, preserved blank reusable credentials and adapter identity, retained the bundled WebView2 installer's valid Microsoft signature, and verified the 394,211,328-byte outer package with SHA-256 AD39BE884EE6135E62DCD98C9C6D41A1078E18A64CAE39B120F1F75A6BA24A64.
  • Early Access readiness: a paid booking requests projector power at its Early Access boundary, even when no CourtReserve refresh occurs at that exact moment.
  • Unlock safety: valid customer and Admin Code unlocks request power immediately without waiting for projector warmup or allowing a PJLink failure to change access.
  • Owner-controlled idle threshold: Booking Gap To Turn Projector Off defaults to 30 minutes and measures to the next Early Access window rather than the later scheduled start.
  • Authoritative shutdown only: no bookings or a qualifying gap may request standby only after a successful booking refresh; a failed refresh can never interpret missing data as permission to shut down.
  • Help power recovery: when PJLink is enabled, customers can select Turn On Projector at the top of Help.
  • Transition protection: warming and cooling complete before an opposite command, while the newest power request supersedes older intent.
  • Payment required before access: when CourtReserve reports a positive PriceToPay, AccessControl requires PaidAmount to meet or exceed that price before the booking can unlock the kiosk.
  • Null-safe payment handling: a missing PaidAmount is treated as 0, so an unpaid reservation fails closed instead of being accepted accidentally.
  • Clear customer and owner visibility: underpaid rows stay in the bookings list with red treatment, an Invalid Booking pill, and Amount Pending calculated as PriceToPay minus PaidAmount.
  • Free bookings remain valid: when PriceToPay is 0, the reservation is valid regardless of PaidAmount, supporting no-fee reservations and administrator price overrides.
  • Chains reject invalid segments: invalid reservations cannot start or continue a continuity chain, cannot validate a PIN, and cannot qualify as newly purchased extension time.
  • Schedule gaps stay honest: an invalid reservation still occupies its complete scheduled interval in every before/between-booking gap calculation, so the kiosk never advertises its reserved time as open.
  • Portable invalid-booking demos: the five-column Demo CSV now accepts UnpaidAmount; any positive value produces the same visible invalid state and amount-due behavior without touching CourtReserve.
  • One reliable current source version: version 1.46.18 is defined once for the solution, used by ordinary Debug builds and settings schemas, and reported by every first-party executable.
  • Protected customer shutdown confirmation: the Kiosk tab has a dedicated Customer Shutdown card for the enable option, four-digit code, warning title, Markdown warning message, and a safe Preview Dialog action.
  • Friendly default warning: the built-in Markdown explains that the code is for simulator-unlock problems, that accepted shutdowns are logged, and that customers may be billed for overtime or use of an unbooked simulator.
  • Explicit acceptance before logging: entering the shutdown code opens the warning but does not write the production event. Only I ACCEPT writes event 24701, opens customer feedback, and continues to application close.
  • Safe cancellation and timeout: Cancel, Escape, and the shared kiosk-dialog timeout return to the locked kiosk without logging the shutdown event or closing AccessControl.
  • Monitoring sample kept current: Write Event Log Samples includes the new customer-accepted warning message while remaining a labeled no-impact test that performs no shutdown.
  • Request URL beside JSON: every admin-only CourtReserve Debug entry shows the exact request URL and returned JSON response together while keeping the Authorization header hidden.
  • Installed version at a glance: the locked kiosk shows only the application version in the bottom-left corner so owners and support can confirm which build is running.
  • Complete 24/7 reservation coverage: CourtReserve report boundaries are sent as simulator-local clock values, preventing timezone conversion from excluding bookings that start before 8:00 a.m. at an always-open location.
  • Midnight and overnight support: AccessControl retrieves the previous day through tomorrow, keeps an overnight reservation available after the calendar changes, recognizes bookings that start exactly at midnight, and supports an exact midnight handoff between back-to-back bookings.
  • Customer list stays current: the wider retrieval window protects cross-midnight sessions while completed reservations are still removed from the locked-screen booking list.
  • Help throughout the session: new deployments keep a compact Help control visible before the normal session countdown appears. Owners may clear Always Show Help Indicator, and the Help action still remains beside the countdown whenever the timer itself is visible.
  • Practical simulator-use tips: the default Help guide now explains approved white or yellow golf balls, the no-marker rule that protects the impact screen, blue painter's tape for reflective clubheads, and prompt putting setup when shots do not register.
  • Settings compatibility on startup: when a valid installed settings file does not contain a setting introduced by a newer AccessControl version, the app adds it with the current default when it opens. Explicitly saved owner values remain authoritative.
  • Complete new-install identity: Deployment Manager now requires both Simulator Name and Location Name, preloads them during an update, and writes both values into the installed AccessControl configuration.
  • One scheduling value, two customer flows: an operator can paste one CourtReserve scheduler widget during deployment and apply it to both Make A Booking and Extend My Time.
  • CourtReserve ready on first launch: API Key ID and the masked API Secret can be supplied during deployment; the secret follows a one-time, kiosk-account-only encrypted handoff and is never written as plain text.
  • Approved application defaults: new installations use the supplied AccessControl profile, with a generic Location Name placeholder, working scheduler defaults, and blank API credential defaults.
  • Approved service defaults: the canonical WinSysMaint service.json is packaged and installed with the same defaults owners see in AccessControl Settings.
  • Reset without losing site identity: Reset to Default restores the new-deployment profile while always preserving Simulator Name, Location Name, and the CourtReserve API URL.
  • Explicit reset choices: owners may separately clear both scheduler widgets, clear the API Key ID and Secret, and restore WinSysMaint defaults; the corrected dialog height keeps Cancel and Reset Now fully visible.
  • Complete token reference: the six general dynamic tokens cover booking owner, booking start, booking end, Simulator Name, Location Name, and the configured pre-end lead time; the Help-only [POST-BOOKING-GRACE] placeholder is documented separately with its supported scope.
  • Safe update control: an existing simulator retains custom values through the normal upgrade review. Full configuration overwrite and the focused Thank You title/message replacement are separate, explicit choices.
  • Exact Early Access transition: a presentation-only timer changes the next booking from Early Access to Active at its scheduled start without requesting or rescheduling a booking refresh.
  • Inclusive booking rules: Make A Booking appears when an opening is equal to or longer than its threshold; Extend My Time requires both an equal-or-longer remaining opening and an equal-or-longer paid booking duration.
  • Verified booking continuity: chronological bookings on the same court are joined only when their positive CourtReserve OrganizationMemberId values match and the transition gap is equal to or less than the shared continuity threshold.
  • Clear continuity display: linked booking cards show that they are treated as one session, remain unlocked through the transition, suppress Make A Booking inside the chain, and support chains of two or more reservations.
  • Zero-minute support: a continuity threshold of 0 joins exact back-to-back reservations for the same verified member without joining a positive opening.
  • Paid-time duration accounting: Extend My Time adds confirmed booking minutes in the continuity chain but excludes any unbooked transition gap from duration eligibility.
  • Member identity instead of names: extension and continuity validation use OrganizationMemberId; privacy-safe display names remain presentation only and are never identity proof.
  • Compact Settings help: every field has one short visible sentence plus a detailed information popup, with shared Live and Demo descriptions sourced from one application catalog.
  • Testing access: Admin Mode now offers a Minimize button, and the AccessControl notification-area icon provides an obvious Restore AccessControl action.
  • More dependable deployment: the live activity log no longer risks a WPF collection reentrancy crash, the visible install-time Admin Code defaults to 0000 for easy onsite confirmation, and duplicate startup instructions collapse to one canonical simulator launch row.
  • WinSysMaint inside Admin Settings: owners can review every current service option, choose JSON, folder, and application paths, manage time, maintenance, connectivity, AccessControl watchdog, TrackMan monitoring, Defender, and GPU settings, and request an administrator-approved restart from one dark-glass tab.
  • Narrow machine permissions: the kiosk account may update only the installed WinSysMaint service.json; service binaries, the surrounding ProgramData folder, and Windows service control remain protected.
  • Booking time that matches the simulator: CourtReserve start and end values are treated as the simulator computer's local wall clock, and notification timeout now locks the kiosk, including a pre-end notification timeout.
  • Optional live diagnostics: owners can expand the session countdown with labeled Booking Name, Start Time, End Time, and Current Time rows when troubleshooting schedule behavior.
  • Consistent customer privacy: the bookings list, countdown, notifications, scheduler instructions, diagnostics, and Demo Mode all use first name plus last initial instead of retaining or displaying full customer names.
  • Safer extension offers: Extend My Time now has its own owner-configurable Booking Gap and not-allowed message, independent from Make A Booking availability rows.
  • Readable owner-authored rules: Small preserves the original Guidelines typography, while Medium and Large add predictable four- and eight-point increases. Unsaved choices can be reviewed in the real preview before saving.
  • Review before acceptance: the wider Guidelines dialog wraps long text without horizontal scrolling; if content extends below the viewport, I ACCEPT remains disabled until the customer reaches the bottom.
  • Readable customer guidance everywhere: Help, Make A Booking, Extend My Time, and Booking Guidelines each offer independent Small, Medium, and Large text choices, one-finger vertical scrolling, and larger touch-friendly scrollbars.
  • Owner-controlled Windows startup: General Settings reports the current registration and can enable or disable AccessControl auto start immediately, requesting Windows administrator approval only for Deployment Manager-managed tasks.
  • Safe monitoring checks: one button writes 55 clearly labeled AccessControl and WinSysMaint Application Log samples for TeamViewer testing without closing applications, rebooting, or changing maintenance state.
  • Portable Demo Mode: owners can export or import a secret-free Demo Settings JSON profile, save the displayed booking sequence as a relative CSV timeline, reload a reviewed scenario with fresh safe PINs, or leave an imported file and generate a new varied schedule.
  • AI-assisted scenario design: a new cross-tool skill package helps ChatGPT and Claude turn a plain-language test goal into coordinated Demo Settings and booking-timeline files, explain boundary cases, preserve unrelated settings, and validate the result before import.
  • Reliable Demo CSV round trips: generated back-to-back bookings omit zero-minute Gap rows, and below/equal/above samples remain whole-minute values even when an owner selects an odd threshold.
971current source Debug tests passing
1.46.18independently verified one-click Debug EXE
1.46.18current source and schema version
3deployment identity values
1 to 2scheduler widget provisioning
Resetdefaults with explicit preservation

Help with customer reboot enabled

AccessControl Help with red Reboot Simulator at the top right and green Close at the bottom right

The red reboot action is visible only with administrator opt-in and confirmed Windows Auto Start. Green Close is at the bottom right; Turn On Projector remains orange.

Auto start is required

Unchecked disabled reboot setting with its Windows Auto Start help tooltip

The help icon explains how to enable the prerequisite even while the setting is disabled.

Customer experience

247GolfAccessControl Windows Application

The WPF kiosk shell that sits in front of the simulator software, validates CourtReserve booking PINs, shows owner-defined usage guidelines, and controls the handoff into the golf simulator session.

263files
56,441nonblank lines
210C# files
20XAML files
210 C# files 20 XAML screens/dialogs 33 project/config/docs/assets
  1. Created the initial architecture documentation, CourtReserve API reference, PowerPoint deck, and kiosk mockup.
  2. Added the simulator software home screen, guidelines modal, and 4-digit access-code flow to the HTML design presentation.
  3. Refined the kiosk screens with a branded background, current/upcoming bookings, and clearer schedule behavior.
  4. Scaffolded the WPF app, added booking-end re-lock simulation, added running-app diagnostics, and fixed simulator software process detection.
  5. Renamed the Windows app, folders, output files, and namespaces around 247GolfAccessControl so the installed product is clear to owners and support teams.
  6. Added admin settings, app exit control, booking countdown and warning UI, QR booking reminder, customer usage-guidelines acknowledgement, default guideline markdown, and config normalization tests.
  7. Refreshed the customer kiosk with a dark glass theme, modern upcoming-bookings panel, admin-mode indicator, admin-only Debug tab, Settings button, Close button, and themed usage-guidelines and booking-notification windows.
  8. Added configurable Booking Notification settings, bundled location QR codes, pre-end, booking-end, post-booking, and time-extended simulation behavior, countdown reset logic, and PJLink projector-control settings for future automation.
  9. Connected the kiosk to CourtReserve active reservations, added today/tomorrow retrieval, court-name filtering, owner/PIN selection, loading/no-booking states, manual refresh limits, and a readable CourtReserve Debug panel.
  10. Added Demo Mode, admin-only PIN visibility, visible invalid-code feedback, live/demo mode indicators, focused PIN entry behavior, and live booking-end countdowns based on the matched reservation end time.
  11. Added notification inactivity relock, resume-by-booking-code behavior, the glass-themed Extend My Time WebView2 dialog, configurable Markdown instructions, and one-click previews for every notification state.
  12. Added the immutable unlocked-booking owner, fail-closed live extension matching, automatic refresh after scheduler Close, Demo-mode extension simulation, an always-active first demo booking, and Live-by-default Admin-session-only Demo safeguards.
  13. Added customizable kiosk branding and title, customer Help, Feedback, and Make A Booking dialogs with previews and a shared timeout, actionable operating-mode indicators, and an optional monitored customer shutdown safeguard for beta recovery.
  14. Refined booking privacy and status styling, made Early Access configurable, compacted the bookings header, and added right-aligned availability rows that distinguish short openings from bookable gaps before or between reservations.
  15. Replaced the all-or-nothing Force Lock setting with an owner-controlled post-booking policy. The default now locks confirmed sessions of 30 minutes or less, gives longer sessions a 30-minute wrap-up buffer, reevaluates the rule after a paid extension, and provides exact-duration previews in Admin Settings.
  16. Separated Demo Mode from production timing, added production-realistic generated booking controls, and grouped the session countdown at the top of Booking Notifications. Live bookings default to showing it for the final 10 minutes, Demo bookings default to the final 2 minutes, and both share the owner's selected monitor position. Every kiosk still starts Live.
  17. Cleaned up Admin Settings with organized General-tab cards, consistent row spacing, a clear gutter between columns, and field guidance that stays beside the setting it explains.
  18. Replaced simulator-specific window handling with a vendor-neutral startup foundation: ordered application launch, per-process countdowns, monitor-aware shields, six-position session timers, tray-only manual re-lock, and an Admin shortcut that skips a startup delay when the simulator process is already ready.
  19. Completed the owned customer-dialog stack so the kiosk cannot reclaim focus from notifications or booking dialogs. Added Booking Guidelines preview, corrected the Pre End and Booking End preview crash, and added WPF coverage for the owner-before-show safety rule.
  20. Added a complete WinSysMaint Admin Settings tab with validated immediate writes, JSON/folder/application pickers, Defender and GPU tables, maintenance and monitoring controls, Court Name mismatch guidance, and an administrator-approved service restart.
  21. Aligned booking enforcement to CourtReserve's simulator-local start and end times, prevented pre-end inactivity from locking paid time early, added optional labeled countdown diagnostics, and standardized privacy-safe first-name plus last-initial customer labels across Live and Demo experiences.
  22. Separated Extend My Time from Make A Booking gap controls. Owners now set a dedicated Booking Gap and customer message under Booking Notifications; later work made the eligibility boundary explicitly inclusive.
  23. Added Small, Medium, and Large customer text choices for Sim Use Guidelines, expanded the dialog for readability, wrapped long text without horizontal scrolling, and required customers to reach the bottom before accepting content that overflows.
  24. Extended independent Small, Medium, and Large typography, one-finger vertical scrolling, and touch-friendly scrollbars to Help, Make A Booking, and Extend My Time; added the live Windows Auto Start toggle and safe Event Log monitoring samples.
  25. Added independent Demo post-booking policy, portable Demo Settings JSON, relative Demo timeline CSV save/load, refreshed PIN generation, Generate Demo switching, and reliable round trips for back-to-back and odd-threshold schedules.
  26. Added an exact start-time display timer so Early Access becomes Active without a booking refresh; made Make A Booking and Extend My Time boundaries inclusive; and required both the extension gap and paid-duration rules to pass in Live and Demo Mode.
  27. Added OrganizationMemberId-backed booking continuity for same-court reservation chains, including zero-minute handoffs, linked-session indicators, no Make A Booking action inside a joined chain, paid-minutes-only extension accounting, and continuity-aware pre-end and booking-end enforcement.
  28. Reworked every Settings field around a concise visible sentence and detailed information badge, reusing matching help copy for equivalent Live and Demo controls. Admin Mode also gained a Minimize action with an obvious Restore AccessControl command in the notification-area icon.
  29. Adopted the supplied AccessControl configuration as the new-deployment default, renamed the owner-facing Court Name control to Simulator Name, added Location Name, and changed its generic default to Location Name.
  30. Added Reset to Default with explicit widget, API-credential, and WinSysMaint choices. Simulator Name, Location Name, and the CourtReserve API URL are always preserved, and the reset dialog now sizes itself so both action buttons remain fully visible.
  31. Added a dedicated Tokens tab and runtime expansion for booking owner, start, end, Simulator Name, and Location Name across supported dialog titles, messages, descriptions, Markdown, and kiosk title/branding text.
  32. Added the customer Help action to the unlocked-session countdown, introduced a compact Help-only presentation before the countdown threshold, and made Always Show Help Indicator checked by default for new and upgraded settings files.
  33. Added Simulator Use Tips to the default customer Help guide before Make A Booking, with readable golf-ball, impact-screen, reflective-clubhead, and putting-registration guidance. Startup now also writes every missing setting into a valid installed settings file using its current default while preserving explicit owner choices.
  34. Corrected CourtReserve report boundaries to use the simulator's local clock without a timezone offset and expanded retrieval from the previous day through tomorrow. Early-morning, exact-midnight, overnight, and midnight handoff reservations now remain available in a 24/7 operating model while completed bookings are still hidden.
  35. Expanded the admin-only CourtReserve Debug panel so every JSON response is paired with the exact request URL used for that call, without exposing the Authorization header.
  36. Added an owner-configurable Customer Shutdown warning title and Markdown message, a real-dialog preview, Cancel and I ACCEPT actions, and the shared kiosk-dialog timeout. Cancel, Escape, preview, and timeout perform no shutdown and create no production shutdown event.
  37. Moved the complete Customer Shutdown group into its own Kiosk settings card, added the version-only bottom-left kiosk label, and limited Windows event 24701 to customers who explicitly select I ACCEPT before feedback and application close.
  38. Added fail-closed payment validation for Live and Demo reservations. Underpaid bookings remain visible in red with an Invalid Booking pill and Amount Pending, reject kiosk access and booking continuity, and still reserve their full scheduled interval for every availability-gap decision. Zero-price bookings remain valid, and a missing PaidAmount is safely treated as 0.
  39. Completed booking-aware PJLink projector control. Early Access, customer unlock, Admin unlock, and Help can request power on; authoritative locked-kiosk refreshes can request standby for an empty schedule or a qualifying gap before the next Early Access window. Failed refreshes cannot authorize shutdown, and warming/cooling transitions are serialized.
  40. Added versioned settings compatibility and recovery for AccessControl and WinSysMaint, a Settings-first maintenance test, locked-kiosk WinSysMaint health recovery, and the interactive TPS QR Code Reset (retired September 13, 2026) sequence with customer/Admin warning, Cancel support, targeted process closure, logged-in-user relaunch, and kiosk-ready confirmation.
  41. Added booking-driven TPS QR Code Reset (retired September 13, 2026) coordination using the existing booking-boundary timer, inactivity-gap and before-booking settings, Early Access protection, service-side policy revalidation, durable reset/reboot activity state, and next-booking de-duplication.
  42. Added mandatory CourtReserve location licensing before kiosk or simulator software startup. The authenticated location ID and Name now appear first in General Settings; API failures and unlicensed responses are logged separately, and owners can preview the always-on-top unlicensed notification with mock values.
  43. Prevented duplicate executable paths in Startup Applications and High Performance GPU Applications. Browse, add, edit, and save checks compare normalized Windows paths without regard to letter case, existing duplicate JSON retains the first row and original order, and version 1.43.2 now distinguishes this complete 625-test Debug handoff.
  44. Added Location Code-filtered CourtReserve reservation types and the Booking Buffers editor. Each type independently controls Enable Buffer, Allow Extending, Min Duration, and Buffer Minutes; new rows begin disabled, refresh reconciles the catalog, and each booking card shows the type's API color as a thin right-edge marker.
  45. Added optional clock-plus and hourglass booking-policy indicators with detailed customer hover guidance. Booking cards render first and enabled indicator review proceeds in guarded background work; the authoritative continuity resolver combines paid time across verified same-customer chains and evaluates the final linked booking boundary.
  46. Polished Booking Buffers to match the Startup Applications table with white text, accessible ON/OFF toggles, clear edit fields, and no delete action. Unavailable glyphs now use a saturated bright-red circle/slash, while the default-off master indicator toggle avoids all booking-card policy analysis when customer indicators are hidden.
  47. Added expandable Restricted Applications tables under each reservation type. Owners select an EXE, process name, warning title, and Markdown message; the Message editor provides side-by-side source and formatted preview. During an active matching booking, a nonoverlapping five-second check presents the configured warning over a full-screen input shield without closing the external application.
  48. Made restricted-app entry friendly for nontechnical administrators: different full EXE paths may share the same process name, exact executable paths remain duplicate-protected, and runtime checks each distinct normalized process name once. The first configured row supplies the warning content when paths share a running process identity.
  49. Added Show Only Interactive and Monitor Running Applications to the Debug Running Apps panel. Monitoring samples every five seconds, retains applications after they close, records a reopened process under its new PID, suppresses repeat sightings, and preserves hidden rows when the interactive-window filter is changed.
  50. Completed the restricted-application close-and-recover workflow. After acknowledgement, AccessControl closes every matching process, force-terminates survivors after five seconds, verifies exit, waits two seconds, and restores configured Startup applications in order behind a nondismissible Returning to Home Screen shield. Recovery retries every five seconds until it succeeds.
  51. Added owner-facing WinSysMaint security controls for the Windows Firewall, App & browser control, and Microsoft Defender exclusions. The three switches and editable exclusion list use the same Save, Validate, Apply, and scheduled-maintenance design as the other managed settings.
  52. Revalidated active bookings against the exact CourtReserve refresh before every timed notification. Amended and qualifying chained bookings reset the countdown, close obsolete notifications, and recalculate the due stage. Competing bookings at or below Booking Gap now deny buffer time; booking-card indicators use the same rule.
  53. Separated Done and Keep Playing, hid Keep Playing when no eligible time remains, kept Done enabled, and made notification timeout lock the kiosk. Hardened notification teardown and added lifecycle evidence; Debug 1.46.5 passed 778 tests.
  54. Corrected reproducible WPF retention and resource cleanup, capped process history at 2,000, and prevented periodic refresh backlog. Added customer Help reboot through shared Feedback, with an admin opt-in and verified Windows Auto Start prerequisite.
  55. Added durable intentional-exit registration and five-minute WinSysMaint recovery support. Added buffer-specific Pre End messages and the shared configured-minutes token, with independent preview choices. Removed all TPS QR reset settings, booking scheduling, warnings, commands, and readiness signaling.
  56. Added a current-URL row to Make A Booking in Admin Mode. It follows requested navigation, redirects, committed locations, and fragment changes while remaining hidden in customer sessions.
  57. Fixed a reproduced native-browser teardown exception across the three customer browser dialogs and reused frozen countdown brushes. Managed retention checks and 45 native browser cycles passed their cleanup checks; persistent native-handle growth and the customer blank-screen cause remain unresolved.
  58. Added TrackMan monitoring enable/frequency controls, help, validation, automatic save, and eight safe monitoring-event samples. Packaged the current application and settings as Debug 1.46.9.
  59. Replaced reboot web feedback with a native reason-and-comments form. Other requires comments; valid explicit confirmation proceeds, while Cancel, Escape, dismissal and timeout cancel the restart. Reasons and multiline Unicode comments accompany the local service request.
  60. Added Admin Debug → Customer Reboots: 30-day genuine event history, recorded feedback, manual dated exports, cancellation-safe admin cleanup and folder retrieval. Removed automatic report generation. Green safe actions and the red top-right Help reboot button distinguish customer choices.
  61. Added the centered Suite kiosk wordmark, Suite shield application/window/tray icon and bottom-left branding on 15 custom dialogs. Kept the default 24/7 Golf facility logo and clarified its blank Settings value. Verified 32 native WPF previews, compact layout and separation from customer actions.
  62. Added Booking End Closing above the locked kiosk after final Done, booking-end timeout, or revoked courtesy time. Owners can edit and preview the title/message; Close and timeout leave access locked. Pre-end inactivity locks do not show a booking-complete message. Debug 1.46.15 adds lifecycle regression coverage.
  63. Added native Markdown to the Thank You for Playing message, six-token support in both fields, and friendly golf-themed defaults. Ending-session context is captured before access is invalidated; inserted names remain literal so their punctuation cannot create formatting or expand another token. Debug 1.46.17 stabilized Windows line endings for shipped Markdown defaults; 1.46.18 includes these changes.
Simulator deployment and operations

WinSysMaint Watchdog Service and Deployment Manager

The interactive deployment application and Windows service that install, verify, maintain, repair, and remove a simulator computer. Together they manage application files, secure first-run setup, shortcuts, startup choices, workstation policy, maintenance, AccessControl watchdog recovery, service health, and operational history.

99files
20,276nonblank lines
83source/UI/script files
4project/solution files
72 C# files 3 WPF XAML files 8 scripts 4 project/solution files 12 configs/docs/support files
  1. Added the first watchdog service project and related runtime configuration files.
  2. Introduced simulator PC deployment scripting for time, time zone, and Windows time-service configuration.
  3. Added firewall, Defender, NTP, GPU preference, all-app close, service install, maintenance schedule, and connectivity settings.
  4. Created the WinSysMaint solution and fixed service registration behavior in the deployment script.
  5. Included the service in the root solution and cleaned package vulnerability warnings for the current development stack.
  6. Created the standalone WatchdogService install package, refreshed the install executable automatically on build, and documented the installer artifacts needed for simulator PCs.
  7. Added validation-only nightly maintenance defaults, a separate reboot toggle, simulator-gated QR screenshot monitoring, debug captures, visible/missing screenshot naming, and Application Event Log entries for QR alerts.
  8. Added the configured court name to QR-code monitoring alerts so Event Log messages are easier to match to the simulator bay being checked.
  9. No service behavior changes were needed today; the watchdog remained stable while AccessControl live-booking work advanced.
  10. Replaced duplicate scripts, batch installers, and checked-in binaries with one elevated WPF Deployment Manager. It now provides preflight checks, package hashing, Microsoft Artifact Signing support, an embedded elevated engine, install/upgrade, repair, verification, safe Watchdog replacement, configuration preservation, uninstall, backups, and deployment logs.
  11. Added ready-to-copy Debug and Release ZIP handoff folders, independent AccessControl auto-start selection, canonical WebView2 Runtime detection, and idempotent simulator policy enforcement that reports already-correct settings without rewriting them.
  12. Added all-users 247AccessControl Start Menu and Public Desktop shortcuts plus protected install-time Admin Code provisioning for the selected kiosk account. The July 14 version 1.16.7 Debug pilot package completed manifest verification across 986 packaged files; the Public Trust signed production Release remains a separate release-engineering step.
  13. Stabilized the Deployment Manager's live activity log, made the default 0000 Admin Code visible for onsite verification, and removed duplicate startup declarations so new and preserved installations resolve to one canonical simulator launch instruction.
  14. Connected AccessControl Admin Settings to the deployed WinSysMaint configuration with file-only kiosk-account permission, complete schema validation, safe immediate saves, and UAC elevation only when an administrator explicitly restarts the LocalSystem service.
  15. Added owner-controlled enable/disable handling for installer-managed AccessControl startup and a safe monitoring-test catalog that writes all supported AccessControl and WinSysMaint event samples without performing operational actions.
  16. Expanded Deployment Manager so a new PC can receive Simulator Name, Location Name, one shared scheduler widget for both customer booking flows, CourtReserve API credentials, and the canonical AccessControl and WinSysMaint defaults in the initial installation. Existing settings are replaced only when the operator selects the overwrite option.
  17. Built and independently verified the ready-to-copy version 1.30.0 Debug deployment ZIP: all three executables report 1.30.0.0, all 986 manifest hashes and 987 ZIP file entries match, both packaged settings files match source, and the bundled offline WebView2 installer retains its valid Microsoft signature. Signed Release packaging remains a separate production action.
  18. Built and independently verified version 1.32.0 Debug from the current main branch: all three executables report 1.32.0.0, all 986 manifest entries match the extracted payload, the checked Help default and Simulator Use Tips are packaged, and the offline WebView2 installer retains its valid Microsoft signature.
  19. Completed a clean solution rebuild and all 458 Debug tests, then built and independently verified version 1.33.0 Debug. All three executables report 1.33.0.0, all 986 manifest files match the ZIP payload, the 987 packaged file entries contain no unexpected files, and the bundled WebView2 installer retains its valid Microsoft signature.
  20. Completed the full Debug solution build and all 469 tests, then independently verified version 1.34.0 Debug: all 986 manifest hashes match, all three executables report 1.34.0.0, both packaged settings files match source, and the offline WebView2 prerequisite retains its valid Microsoft signature.
  21. Advanced the current solution and package identity to version 1.35.0, completed the full Debug build with 0 warnings and 0 errors, and passed all 482 automated tests. Independent package verification matched all 986 manifest hashes and all 987 ZIP file entries, confirmed all three executables report 1.35.0.0, matched both packaged settings files to source, and retained the valid Microsoft signature on the offline WebView2 prerequisite.
  22. Retired screenshot-based QR monitoring and replaced the old reboot toggle with one explicit maintenance action: Settings Only, Settings + TPS QR Code Reset (retired September 13, 2026), or Reboot Computer. Added compatibility repair, administrator Test Maintenance events, locked-kiosk service recovery events, and resilient reinstall ordering that stops and removes the service before replacing locked binaries.
  23. Added booking-driven TPS QR Code Reset (retired September 13, 2026) request handling and service-side inactivity revalidation, corrected the Deployment Manager's value-preserving settings-approval ordering, and completed the version 1.41.2 Debug handoff from committed source.
  24. Independently verified all 986 manifest records and all 987 ZIP file entries with no mismatches or unexpected files. Deployment Manager, AccessControl, and WinSysMaint report 1.41.2.0; both settings schemas report 1.41.2; packaged CourtReserve credentials remain blank; and the offline WebView2 installer retains its valid Microsoft signature.
  25. Added a physical wired-adapter selector for the simulator device link, excluded Windows protocol filters and virtual interfaces, and enforced Auto Disable Gigabit, Energy-Efficient Ethernet, Power Saving Mode, and Speed & Duplex during deployment and nightly maintenance.
  26. Added owner-triggered Validate System Settings and Apply Required Settings actions, mismatch highlighting, Windows Application events 1090-1092 and 1100-1104, and a deployment review that displays the friendly adapter and all other values already selected on the main screen.
  27. Built and independently verified the version 1.42.0 Debug package from committed source: 615 tests passed, all 986 manifest-controlled files matched, the ZIP contains 989 archive entries (987 payload files and 2 directory entries), and the bundled offline WebView2 installer retains its valid Microsoft signature.
  28. Advanced the current source and settings schema to version 1.43.0 and removed simulator-vendor product names, abbreviations, paths, process assumptions, screenshots, and maintenance identifiers from the suite. Startup applications, Defender exclusions, GPU preferences, and simulator hardware are now explicitly owner-configured, while the selected wired-adapter policy remains vendor-independent.
  29. Advanced to version 1.43.1 and restored TPS QR Code Reset (retired September 13, 2026) as the suite's one explicit TrackMan-specific integration: canonical TPS settings and maintenance actions, request pipes, active-user reset helper, warning and Cancel flow, Event Log contracts, TrackMan Performance Studio startup row, Defender/GPU defaults, tests, screenshots, and documentation. The Simulator Device Network Adapter remains vendor-neutral.
  30. Built and independently verified the complete version 1.43.2 Debug deployment package from commit 5e3cc06: all 625 tests passed, all 986 manifest-controlled files matched, all three executables report 1.43.2.0, both settings schemas report 1.43.2, reusable credentials remain blank, and the Microsoft-signed WebView2 prerequisite remains valid.
  31. Replaced Deployment Manager's separate workstation script with WinSysMaint's canonical system-settings engine. New-PC Install and Repair now apply and validate the full configuration baseline, Verify remains read-only, the WinSysMaint settings review covers every service option, and preflight blocks configured GPU application paths that are not installed.
  32. Completed the Windows Update lockout for version 1.43.3: automatic updates, preview builds, optional/latest updates, and updates for other Microsoft products are disabled through policy and Windows Settings state; stale Microsoft Update service registration is also removed.
  33. Added all eight requested File Explorer preferences for version 1.43.4. One shared requirements table applies and validates hidden items, full paths, empty drives, file extensions, folder merge conflicts, drive letters, compressed/encrypted file colors, and the Sharing Wizard across every loaded real-user profile.
  34. Built and independently verified the complete version 1.43.4 Debug package from commit 8337153: 641 tests passed, all 986 manifest-controlled files matched, all three executables report 1.43.4.0, both settings schemas report 1.43.4, reusable CourtReserve credentials remain blank, and the Microsoft-signed WebView2 prerequisite remains valid.
  35. Made individual computer-setting failures nonblocking in version 1.43.5 after a new-PC network adapter exposed an unsupported driver property. Deployment Manager now relies only on WinSysMaint's canonical policy engine, reports residual mismatches as warnings, and continues deployment. WinSysMaint contains every policy area independently, writes expected adapter failures as event 1092 and unexpected setting failures as event 1019, then continues the remaining settings and selected maintenance action. Optional GPU-path preflight findings are warnings as well.
  36. Built and independently verified the complete version 1.43.5 Debug package from commit 69204e3: all 642 tests passed, all 986 manifest-controlled files matched, all three executables report 1.43.5.0, both settings schemas report 1.43.5, reusable CourtReserve credentials and adapter GUID remain blank, the Microsoft-signed WebView2 prerequisite remains valid, and ZIP SHA-256 is 7C01983DA8177DDB45A43AAA350F20BB1CE8A047CEC2621E484F320A99566755.
  37. Completed the warning-only system-settings boundary in version 1.43.6. Validation continues after an individual policy-area exception, AccessControl shows values it could not validate or apply in yellow, and Deployment Manager continues Install, Repair, or Verify while the local and Windows Application logs retain support evidence.
  38. Added the default-enabled taskbar-maintenance switch and its fixed ten-setting Windows baseline. Owners can enable or disable the complete policy from AccessControl Admin Settings or Deployment Manager; taskbar enforcement and validation run through the same nonblocking pipeline used by every other managed setting.
  39. Replaced the manual ZIP handoff with one self-extracting EXE that validates its embedded archive, repairs a versioned local cache, requests administrator approval, and launches Deployment Manager. The complete version 1.44.0 Debug build passed all 657 tests and independently verified 986 manifest-controlled files across 987 internal ZIP entries; the 394,469,376-byte EXE has SHA-256 9E6EB51ED14C5E95F45C31154BCC30DAC47FF4160DE7CD40539D098ED0052A50.
  40. Added Location Code to Deployment Manager and made AccessControl Install and Repair retrieve the matching CourtReserve reservation-type catalog before configuration is written. Fresh rows default both optional policies off, and value-preserving updates retain owner values by reservation-type ID while adding and removing API catalog rows.
  41. Built and independently verified the complete version 1.45.6 Debug package from commit 79c7c1f: all 688 tests passed, all 986 manifest-controlled files matched across 987 ZIP entries, all first-party executables report 1.45.6.0, the WebView2 prerequisite retains a valid Microsoft signature, and the 394,518,528-byte EXE has SHA-256 C29F011977EC8492630E9A21BE0E3ABED96995B7D59DC96FE48FE6FEF2F90219.
  42. Built and independently verified the complete version 1.46.0 Debug package from commit 73cb2f3: all 701 tests passed, all 986 manifest-controlled files matched across 987 ZIP entries, all first-party executables report 1.46.0.0, reusable CourtReserve credentials and the adapter GUID remain blank, the WebView2 prerequisite retains a valid Microsoft signature, and the intentionally unsigned 394,547,200-byte EXE has SHA-256 6167D990B90ED43D8DC3E5E1CF10B0775B7CDDE1A82DE648E3C1C31763172990.
  43. Extended the canonical system-settings engine with default-enabled switches for all three firewall profiles, supported App & browser control protections, and Defender exclusions. Defender defaults now cover both TrackMan folders plus the 247Golf, SimManager, and AccessControl Program Files folders. Deployment Manager preloads valid installed WinSysMaint choices when available and otherwise presents the new defaults for administrator review.
  44. Built and independently verified the complete version 1.46.2 Debug package from commit da2446f: all 712 tests passed, all 986 manifest-controlled files matched across 987 ZIP entries, all first-party executables report 1.46.2.0, reusable CourtReserve credentials and the adapter GUID remain blank, the WebView2 prerequisite retains a valid Microsoft signature, and the intentionally unsigned 394,567,680-byte EXE has SHA-256 C1D92B91E374E14E167228542CA945AA278151094C784E3C96B54CB1F44EBF03.
  45. Added the independent, default-off Smart App Control option to Deployment Manager and AccessControl Admin Settings. WinSysMaint can now disable Smart App Control on Windows 11 version 22H2 or newer during deployment, manual Apply, or scheduled maintenance; unsupported and failed operations remain visible as yellow nonblocking warnings.
  46. Built and independently verified the complete version 1.46.3 Debug package from commit c5a6f93: all 714 tests passed, all 986 manifest-controlled files matched across 987 ZIP entries, all first-party executables report 1.46.3.0, reusable CourtReserve credentials and the adapter GUID remain blank, the WebView2 prerequisite retains a valid Microsoft signature, and the intentionally unsigned 394,567,680-byte EXE has SHA-256 A2539B4A3B188E541B778D77838E851F568FFB61D44894466CB91095DB26162A.
  47. Built and uploaded the complete unsigned 1.46.4 Debug Package Deployer from commit 4561c42 to 247SimManager / Debug. All 735 tests passed; independent verification matched 986 manifest files across 987 ZIP entries, checked version 1.46.4.0, blank reusable credentials and adapter identity, and the valid Microsoft WebView2 signature. The 394,571,776-byte EXE has SHA-256 9BCAF6D39F3326245D2FAA49D57BEBBCC341082AEC05FDC4710427CCCD1E5D6E.
  48. Documented exact-source TeamViewer Application-log monitoring for AccessControl and WinSysMaint, including broad severity coverage and Event ID 0.
  49. Added a local customer reboot request using the same serialized full-PC maintenance pipeline. Error event 1025 is written immediately before the customer restart command; rejected requests do not emit it. Tightened process and timeout cleanup.
  50. Built and uploaded Debug 1.46.6 with 808 passing tests and independently verified its self-extracting deployment executable. Drive metadata confirms the exact filename, 394,592,256-byte size, and Debug parent folder. AccessControl and WinSysMaint must be updated together for customer reboot.
  51. Added the independent five-minute AccessControl watchdog with exact Windows-logon validation, durable retry/stop intent, and shared deployment/reboot locks. Simplified maintenance to Settings enforcement only and Restart System. Built Debug 1.46.7 with 847 passing tests; see the current deployment handoff for verified package and Drive evidence.
  52. Delivered Debug 1.46.8 with an exclusive version/hash cache lease held through extraction, elevation, and the full manager session. Added pre-install settings-review reports, selectable errors, and Copy diagnostics; all 852 tests passed.
  53. Implemented independent TrackMan log monitoring with bounded incremental reads, persistent checkpoints, recognized incident rules, duplicate suppression, and Application events 1120–1127. Deployment and AccessControl expose the same enable and 1–1,440-minute frequency controls.
  54. Built Debug 1.46.9 from committed source bc40018. All 903 tests passed; independent verification matched 988 manifest files and 989 ZIP entries, executable version 1.46.9.0, blank reusable credentials/adapter identity, and the valid Microsoft WebView2 signature. The 394,612,736-byte EXE was that day's handoff.
  55. Validated structured reboot feedback at the local service boundary and retained it in maintenance events 1020 and 1025. Preserved the shared maintenance gate and five-second resource-release wait before the restart command.
  56. Built and uploaded Debug 1.46.10 with 918 passing tests and independent verification of 988 manifest-controlled files. AccessControl and WinSysMaint share the native reboot reason protocol.
  57. Added read-only retrospective reboot diagnostics across TrackMan, Windows channels, AccessControl, WER, archives and current system snapshots. Exports are administrator initiated only; the automatic capture worker, restart hooks and four-hour follow-up were removed before this handoff.
  58. Built Debug 1.46.13 from source b20ab41: 955 tests passed, all 988 manifest files and 989 ZIP entries verified, executable versions aligned to 1.46.13.0, reusable credentials/adapter identity blank, and Microsoft WebView2 signature valid. The intentionally unsigned EXE is 394,674,176 bytes.
  59. Built Debug 1.46.14 from committed source 6f8f2ef with all 955 tests passing. Independently verified the full deployer, aligned executable/settings versions, blank reusable credentials and valid Microsoft WebView2 signature; delivered to the local Debug packages folder and Google Drive Debug folder.
  60. Packaged AccessControl, WinSysMaint, and Deployment Manager together as Debug 1.46.15 from source 96baec9. The full build passed 962 tests with zero warnings/errors; fresh independent verification matched all 988 controlled files and the Google Drive handoff preserves the exact EXE. Closing-message behavior runs in AccessControl and adds no service dependency.
  61. Added the default-off Replace only Thank You for Playing title and message choice to AccessControl Install / Upgrade and Repair. It applies the embedded defaults after normal merge and review, refreshes the review approval when changed, and preserves unrelated settings under the usual update choices. Verify does not write the replacement.
  62. Replaced Deployment Manager's facility badge and green heading with the full 247SimManager Suite logo; updated its executable and window icons. Delivered Debug 1.46.17 and then 1.46.18 with 971 passing tests. The final 1.46.18 EXE from source 636ba8a passed independent verification of 988 manifest files / 989 ZIP entries; the packaged branding and Google Drive delivery were also verified. WinSysMaint's version advances with the suite; no new maintenance behavior was added.
Owner and developer visibility

Documentation and Shared Materials

The public website, README, API notes, Swagger reference, architecture deck, setup guide, shared configuration, and visual assets that explain what is being built and why it matters.

207documentation/shared artifacts
30,613nonblank lines
37website files
8AI skill files
37 public website files 162 root/docs/config/assets 8 Demo AI skill files
  1. Started the repository with README architecture content, CourtReserve Swagger, and a PowerPoint architecture package.
  2. Added an HTML design presentation so the simulator flow could be reviewed visually.
  3. Updated the README and presentation to reflect v1.1 kiosk behavior, guidelines, scheduling, and demo refinements.
  4. Created the static public 24/7 Golf SimManager website and organized the public review assets for location-owner visibility.
  5. Added the developer setup guide, CourtReserve PIN-code API notes, RemoteLock integration explanation, and this owner-facing work dashboard.
  6. Updated owner-facing language for the SimManager solution structure, the 247GolfAccessControl app naming cleanup, settings proof of concept, usage-guidelines gate, and today's measured implementation progress.
  7. Updated the owner dashboard, install guide, repository README, and public site with WatchdogService install dependencies, QR monitoring requirements, and today's implementation summary.
  8. Expanded README, development notes, projector-control documentation, and the public website with Booking Notification settings, QR booking assets, admin-mode behavior, and PJLink as the planned projector automation standard.
  9. Created the Booking Management Logic specification, documented today/tomorrow CourtReserve retrieval rules, captured the current AccessControl screen reference, and updated the public site for live booking and Demo Mode progress.
  10. Reconciled the Booking Management and Booking Notification guides with the implemented scheduler, customer instructions, owner identity, automatic refresh, extension matching, notification timeout, Admin preview, and Demo-mode safety rules.
  11. Added detailed Help, Feedback, Make A Booking, and customer-shutdown guides; documented configurable Early Access and availability-gap decisions; and refreshed this owner dashboard with the completed customer kiosk experience.
  12. Documented the new duration-aware Booking End policy, 30-minute threshold and buffer defaults, three owner choices, startup settings normalization, customer action labels, architecture responsibilities, and exact-boundary verification results.
  13. Documented the separate Demo Mode profile, shared six-position countdown placement, independent Live and Demo visibility thresholds, exact time-boundary behavior, extension reevaluation, one canonical configuration path, and 250-test Debug verification timeline.
  14. Documented the General Settings layout cleanup, card-based information architecture, explicit two-column spacing, and presentation-only verification boundary.
  15. Expanded the deployment architecture and operator guide with package authenticity, Debug and signed-Release handoff, secure Admin Code ownership transfer, all-users shortcuts, optional auto start, idempotent Windows policy, canonical WebView2 detection, transactional service replacement, and the fully verified 1.16.7 Debug pilot package.
  16. Recorded the vendor-neutral startup and monitor architecture, customer-dialog focus guarantees, clickable Admin startup countdown, Booking Guidelines preview, notification-preview crash correction, and the final 294-test Debug verification result.
  17. Documented the complete WinSysMaint settings architecture, immediate-write and restart boundaries, file-scoped kiosk permission, JSON round-trip behavior, deployed path, visual verification, and operational handoff from Deployment Manager to AccessControl.
  18. Added dedicated architecture and behavior details for local booking-time enforcement, countdown diagnostics, privacy-safe customer labels, the independent Extend My Time gap policy, three-level Guidelines typography, overflow wrapping, and required review.
  19. Documented independent text sizing and touch scrolling across Help, Make A Booking, Extend My Time, and Booking Guidelines; owner-controlled Windows auto start; and no-impact TeamViewer Event Log monitoring samples.
  20. Documented portable Demo Settings JSON and relative booking-timeline CSV workflows, generated/saved/loaded Demo data, current-clock anchoring, fresh PIN safety, ChatGPT and Claude scenario-generation skills, validator coverage, and the generated CSV round-trip correction.
  21. Synchronized the complete owner Settings guide with the application's short descriptions and information-icon help; corrected inclusive Make A Booking and Extend My Time boundaries; documented OrganizationMemberId continuity, Early Access display timing, Admin minimize and tray restore, and the verified 1.26.0 Debug handoff.
  22. Updated the owner dashboard, Settings reference, Tokens guide, Reset to Default explanation, deployment sequence, architecture responsibilities, and verified Debug handoff so the public guide matches the complete version 1.30 installation workflow.
  23. Updated the owner dashboard and complete Settings reference for the Help indicator default, automatic missing-setting compatibility, customer Simulator Use Tips, 454-test verification, and the independently checked version 1.32 Debug deployment handoff.
  24. Documented the 24/7 CourtReserve retrieval model for early-morning, midnight, overnight, and cross-midnight bookings; refreshed the measured repository and AccessControl metrics; and published the verified 458-test version 1.33 Debug handoff details for owners.
  25. Reconciled the public owner guide with every current Settings tab and token, added the acceptance-only customer-shutdown workflow, CourtReserve request-URL diagnostics, kiosk version display, and the verified version 1.34 Debug handoff.
  26. Documented invalid-payment booking behavior across Live retrieval, kiosk access, booking continuity, gap calculations, extension matching, and five-column Demo CSV scenarios; added measured tiles for all 480 passing Debug tests plus the Chained Bookings & Moving Bookings and Invalid Bookings owner walkthroughs.
  27. Updated the public owner dashboard to the current version 1.35.0 handoff, refreshed the complete 482-test validation totals, documented the single-source solution version used by builds and packages, and published the independently checked Debug package evidence.
  28. Published the complete PJLink lifecycle policy, the new booking-gap shutdown setting, the Help power-on action, kiosk-refresh safeguards, failed-refresh behavior, transition protection, and the existing Panasonic PT-VMZ51U7 commissioning-guide download.
  29. Reconciled the owner dashboard, complete Settings reference, WinSysMaint architecture, Event Log catalog, deployment workflow, and licensing guidance with the TPS QR Code Reset (retired September 13, 2026), settings recovery, service health, CourtReserve entitlement, and verified version 1.41.2 Debug handoff.
  30. Added the vendor-ready Managed System Settings reference with exact Windows targets, simulator device adapter properties, maintenance controls, manual validation/apply behavior, evidence paths, and Event Log IDs for troubleshooting.
  31. Updated the owner dashboard, WinSysMaint settings reference, managed Windows baseline, and deployment walkthrough for the taskbar policy, warning-only setting failures, version 1.44.0 validation evidence, and the single-EXE Google Drive handoff.
  32. Documented reservation-type extension and buffer policy, Location Code filtering, deployment-time catalog provisioning, color-coded booking cards, optional background-evaluated customer indicators, verified continuity-chain behavior, the version 1.45.6 Debug handoff, and the new Booking Extension and Buffer by Reservation Type owner walkthrough.
  33. Updated the owner dashboard and Settings reference for reservation-type restricted applications, Markdown warning authoring, shared-process-name behavior, cumulative Debug application monitoring, interactive-window filtering, and the independently verified version 1.46.0 one-click Debug handoff.
  34. Updated the owner website with restricted-application recovery, administrator-configurable firewall, App & browser control and Defender exclusion maintenance, the five-folder antivirus baseline, installed-settings reuse during deployment, and the independently verified version 1.46.2 Debug handoff.
  35. Documented the independent default-off Smart App Control choice, its Windows 11 support and recovery warning, installed-settings reuse, Event ID 1031, and the independently verified version 1.46.3 Debug package and Google Drive handoff.
  36. Updated owner guidance with automatic notification refresh, countdown reset examples, distinct continuity and buffer gap rules, failure handling, and the verified 1.46.4 Debug download. Package validation is automated; live CourtReserve interaction was not exercised during this handoff.
  37. Added the TeamViewer monitoring reference and clarified the evidence required to distinguish application shutdown from a crash.
  38. Published the resource-review findings, limits, reboot architecture, settings dependency, Error event 1025, and real WPF screenshots. Refreshed the owner dashboard for the work since September 5 and Debug 1.46.6.
  39. Documented watchdog architecture and intentional-close rules, two pre-end messages and token behavior, and the complete TPS QR reset removal review. Reviewed retained TrackMan/Windows incident evidence without assigning an unproven external-close cause. Refreshed the owner guide, current settings, screenshots, event catalog, and Debug 1.46.7 handoff.
  40. Clarified that 247SimManager Suite is independent and 24/7 Golf is its first pilot. The separate marketing site addresses prospective simulator businesses; this portal remains the detailed owner and deployment guide.
  41. Recorded Simulator #1 resource measurements, a confirmed teardown fix, remaining native-handle growth, and display/content clues without claiming the per-shot blank-screen cause was proven. Added an optional read-only resource capture script for a coordinated follow-up.
  42. Documented TrackMan monitoring architecture, configuration, events, privacy, scan bounds, and measured limits. Added production-XAML card previews, refreshed the owner guide and component timelines, and recorded the verified Debug 1.46.9 package handoff.
  43. Correlated the customer restart request with WinSysMaint 1020/1025, Windows shutdown and subsequent startup. The evidence established an orderly customer-originated restart; TrackMan warnings remain investigation leads rather than proven causes.
  44. Completed a deep local TrackMan evidence inventory and documented manual diagnostic coverage, timing, privacy, storage and known gaps. Created and refreshed 24 reusable product screenshots with visible sample QR codes and green customer actions. Updated this owner guide, component timelines and verified Debug 1.46.13 handoff.
  45. Documented Suite versus facility branding, refreshed current owner screenshots with the default 24/7 Golf logo and visible sample notification QR codes, and updated the verified Debug 1.46.14 download. Preserved the earlier diagnostic-report guidance and release history.
  46. Documented closing-message behavior, Settings, window ownership, timer cleanup, and simulator acceptance scenarios with two WPF source previews. Recorded the Debug 1.46.15 package and Drive handoff, refreshed this owner guide, and separated monitor energy-saving research from implemented features.
  47. Published the Markdown default copy, complete token/formatting guide, targeted upgrade steps, and customer, Settings, and Deployment Manager previews. Recorded verified Debug 1.46.17 and 1.46.18 handoffs with hashes, Drive links, architecture and timestamps. Refreshed this owner portal from its September 25 baseline; historical screenshots and release records retain their original provenance.

Debug 1.46.18 · Product and facility identity

247SimManager Suite, with your facility front and center

The Suite wordmark sits at the top center of the kiosk and at the bottom left of its customer and administrator dialogs. Its small orange shield identifies AccessControl in Windows and the notification area. Your facility title and logo remain configurable; the default facility image is still 24/7 Golf.

Recognizable product identity

The kiosk header, Help, booking notices, guidelines, booking browsers, recovery dialogs and administrator Settings share the established Suite wordmark. Branding is embedded in the application and needs no network connection.

24/7 Golf remains the default

Keep Settings → Kiosk → Kiosk Branding Icon blank to use the bundled 24/7 Golf logo beside the facility title. A custom facility image changes that location identity independently of the Suite header, footer and Windows icon.

Controls stay clear

Compact kiosk windows scale the full layout so the keypad and customer actions remain visible. Dialog branding stays separate from buttons and countdowns. Green safe actions and the red Help reboot action retain their behavior.

Kiosk: Suite header and 24/7 Golf facility logo

Kiosk showing the 247SimManager Suite logo centered above the default 24/7 Golf facility logo, booking list and keypad

Settings: blank keeps the facility default

Kiosk Settings with Kiosk Branding Icon blank to retain the default 24/7 Golf facility logo and the Suite logo in the footer

These isolated Debug 1.46.14 WPF previews use synthetic bookings. The branding review rendered 32 views, including a compact 1024 × 640 kiosk, and checked logo bounds and button separation. Windows-owned file pickers, UAC prompts and standard message boxes keep their native layouts.

Deployment Manager now shares the Suite identity

The full shield-and-power logo replaces the green 24/7 Golf heading and old facility badge. The executable, main window, and Settings Review window use the same Suite application icon as AccessControl. Window and confirmation titles now say 247SimManager Deployment Manager.

Deployment Manager with the full 247SimManager Suite logo above the tool title, simulator configuration and deployment activity panels

October 1 native WPF source preview with synthetic simulator data and no deployment operations. The compact-window preview confirms the logo fits at the minimum window size. The final 1.46.18 package's embedded logo and ICO hashes match the canonical assets, and its executable icon passed a pixel comparison.

Both assets are embedded in Deployment Manager itself for offline availability. No installed AccessControl application or separately copied image is required. Facility branding remains an independent kiosk setting.

Customer recovery and administrator troubleshooting

Understand what happened before a customer restarted

The customer explains the problem before confirming a reboot. Later, an administrator can select that restart in Debug and assemble a dated report from retained TrackMan, Windows, and AccessControl evidence.

1. Record the customer's reason

Help's red Reboot Simulator button opens a native form with Slow Computer Performance, Not Reading Shots, and Other. Other requires comments; the other reasons allow optional comments. Multiline and multilingual input is supported. Cancel, Escape, dismissal, or timeout cancels the reboot.

2. Review the last 30 days

In Admin Mode, open Debug → Customer Reboots. The newest genuine WinSysMaint event 1025 appears first, with local date/time, machine, event record, reason, and comments when available. Scheduled maintenance and monitoring test samples are excluded. Older genuine events remain visible without feedback.

3. Generate the report when needed

Select the event, choose Generate Report and a destination folder, then approve Windows administrator elevation. Show Report in Folder locates the completed text file. Export reads evidence; it does not restart the computer, close TrackMan, or change Windows settings.

Manual reports only

Customer reboots and WinSysMaint startup write their normal events but never generate reports. There is no automatic four-hour job. The selected incident defines an eight-hour Windows before-window and an after-window through WinSysMaint startup plus four hours. The report includes shutdown activity and separately identifies the Windows boot boundary.

If the four-hour endpoint has not arrived, the report stops at export time and says it is partial. Generate another report later to include more retained evidence. If Windows boot or service-start evidence is missing, the report labels its estimated timing instead of claiming a confirmed restart.

The filename includes the reboot event's UTC date/time and Windows record number. The Debug list shows local time with its UTC offset. Repeat exports receive a unique suffix rather than replacing an earlier report.

RebootDiagnostics_2026-09-19_23-43-48_UTC_Event-109145.txt

Native reason and comments

Native Reboot Simulator dialog showing a sample reason, multiline comments, Cancel and Reboot Simulator

Production WPF dialog with synthetic feedback. Normal Feedback and Customer Shutdown still use the configured web form; this reboot form has no web-form dependency.

Debug → Customer Reboots

Administrator Customer Reboots tab with a 30-day event list, selected reboot details and Generate Report action

Production WPF tab with synthetic reason/comments. History reads need no elevation. The export rechecks the exact event identity before collecting protected logs.

What the report can collect

  • TrackMan: retained readable TPS and game/API logs, CloudClient, Remote and device logs; iO service/state/bootstrapper; fusion, radar and vision; VideoManagement and diagnostic-utility logs; component-version context; user-profile Unity Player and TrackMan LocalDB SQL logs. Discovery includes supported vendor folders, rotations, installed directories and discoverable Windows profiles.
  • Windows: every readable registered Event Log channel within the incident windows, including retained disabled channels and relevant archived EVTX files. The exporter does not filter by severity or provider, enable channels, or clear logs.
  • Supporting evidence: AccessControl lifecycle logs, readable Windows Error Reporting records and support-archive members, plus inventories of crash dumps, LiveKernelReports and binary recordings. Current process, memory, GPU/driver/display, disk and network-adapter snapshots provide export-time context.
  • Explicit coverage limits: unreadable or missing sources, archive/binary exclusions and capture failures are reported. Deleted or rotated-away records cannot be recovered. Broad retained TrackMan before-context can include records outside the incident window; current hardware/process snapshots are not historical measurements.

A September 21 local search examined more than 650,000 file entries and checked TrackMan configuration and support archives to inform this coverage. This does not guarantee access to every log on every simulator. The continuous TrackMan monitor remains a separate, bounded summary service; these manual reports collect broader raw evidence.

Reports may span several gigabytes and require additional temporary space, with at least 1 GiB reserved free. Collection runs at lower priority and has bounded timeouts. Reports can contain customer comments and raw log data; they stay in the selected folder and are not uploaded automatically. For a Codex review, provide the file and ask for a timestamped investigation that separates evidence, coverage gaps and hypotheses.

How the components work together

Customer restart: Help → native validated reason/comments → AccessControl → local WinSysMaint request → shared maintenance gate → event 1020 → settings enforcement and application closure → event 1025 → Windows restart command.

Administrator report: Debug history → Windows Application event selection → elevated WinSysMaint export command → read-only TrackMan/Windows collectors → staged report → dated file in the selected folder. Export does not start the normal service host and needs no cloud service or TrackMan API login.

Install matching AccessControl and WinSysMaint from the current Deployment Manager package. The manual export requires WinSysMaint 1.46.12 or newer. Event 1025 proves the restart-command boundary was reached; nearby Windows boot and service-start records provide restart confirmation. Build and package checks do not replace an installed-simulator acceptance test.

Consistent customer controls

Green identifies the safe action

Keep Playing is green before booking end and while eligible buffer time remains. Continue is green after a confirmed extension, I ACCEPT is green in the guidelines, and Close is green at Help's bottom right. Without eligible buffer time, Done is green; it also becomes green if the buffer expires while the dialog stays open. The guidelines still require scrolling when needed before acceptance is enabled.

Ending soon · Keep Playing

Booking ending soon dialog with green Keep Playing and visible sample QR code

Guidelines · I ACCEPT

Sim Use Guidelines with green I ACCEPT button

Time extended · Continue

Time Extended confirmation with green Continue and sample QR code

Help · Close

Help with red Reboot Simulator at top right and green Close at bottom right

Buffer available · Keep Playing

Booking end with green Keep Playing, orange Done and Extend Time, and sample QR code

No buffer · Done

Booking end without buffer showing green Done and visible sample QR code

These September 21 production-WPF previews use synthetic data. All four notification images show a sample QR encoding https://example.com/demo-booking; actual installations retain their configured facility QR. The current release refreshes these views with Suite footer logos; the branding review covers 32 native application, dialog and Settings views. These screenshots establish appearance, not live bookings or service health.

Demo videos

Owner walkthroughs

These recordings give location owners a practical look at the AccessControl settings, customer-facing workflow, live CourtReserve booking behavior, embedded extension workflow, notification previews, customer Help and Feedback, bookable schedule gaps, beta recovery, and Admin-only Demo Mode support. The newest walkthrough demonstrates booking extension and buffer policy by reservation type, while the preceding videos cover invalid-payment protection and chained reservations. Use the written Settings, Demo Data, and Booking Logic guides below for the complete current rules.

Configuration walkthrough

Admin Settings

A guided overview of the AccessControl admin settings, including what each setting controls and how the options support location setup, booking notifications, and future automation.

Watch video
Customer workflow

Basic Customer Experience

A walkthrough of the core customer journey from unlocking the simulator through the end-of-booking flow, including the optional post-booking buffer period that each location owner can allow for every booking, reserve for longer bookings, or disable entirely.

Watch video

Location owner settings guide

What every AccessControl setting is intended to control

Open Admin Mode, select Settings, and use this guide to understand the operational intent of each control. Most AccessControl changes are staged until Save is selected. Windows Auto Start is an immediate action, and valid WinSysMaint changes are written directly to its service configuration as they are edited. Use Reset to Default when the complete new-deployment profile should be restored under the explicit identity, widget, credential, and WinSysMaint rules described below.

Each setting below starts with the exact short sentence shown in the application. The second paragraph matches the detailed explanation an administrator sees from that setting's information icon, so the website and installed application can be reviewed side by side.

AccessControl also maintains a complete installed settings document. When a valid older SimulatorConfig.json does not contain a setting introduced by a newer version, startup adds that setting with its current default. Values already present in the installed file remain unchanged, including an owner's explicit checked or cleared choice.

Normal AccessControl settings

Review, preview, then Save

Preview buttons use current unsaved content so owners can check customer wording and layout before committing it.

Immediate actions

Auto Start reports what Windows is using

Enable or Disable Auto Start changes the current registration immediately and may request administrator approval for an installer-managed task.

Service configuration

WinSysMaint saves valid edits directly

The service tab updates service.json without the main Save button. Select Restart WinSysMaint when those saved values should be loaded by the service.

New-deployment defaults

Reset keeps the simulator in the right place

Simulator Name, Location Name, and the CourtReserve API URL are always preserved. Widgets, API credentials, and WinSysMaint defaults change only according to the selected reset choices.

Dynamic customer text

Tokens reuse booking, location, and policy details

The Tokens tab lists six general dynamic placeholders for customer-facing text. The Help renderer also supports one documented policy placeholder for the current post-booking grace value.

Version compatibility

New settings arrive with safe defaults

On startup, a valid installed settings file receives any missing current fields. Existing owner selections remain authoritative and are never replaced merely because the app version changed.

Reset to DefaultRestore approved defaults while keeping deployment identity and choosing what to clear
Always preserved
Keeps Simulator Name, Location Name, and the CourtReserve API Base URL.These values identify where the simulator is installed and which CourtReserve environment it uses. Reset to Default never silently changes them. The remaining AccessControl values come from the same approved new-deployment profile packaged by Deployment Manager.
Clear Scheduling Widgets
Clears both CourtReserve widget embed-code settings.Select this only when both Make A Booking and Extend My Time should have no scheduler widget after reset. Leave it clear to keep the two currently installed embed-code values, even though the other selected settings return to their defaults.
Clear CourtReserve API Credentials
Clears the API Key ID and Secret without changing the API URL.Select this when the location's CourtReserve credentials must be removed. The API Base URL is always preserved. Leave it clear to retain the current protected credential pair while resetting other application settings.
Reset WinSysMaint Settings
Applies the packaged WinSysMaint new-deployment defaults.The service configuration returns to the canonical service.json values and keeps its Simulator Name synchronized. The reset saves immediately but does not restart the service; reopen Settings and select Restart WinSysMaint when the service should load the new values now.
Reset Now
Saves the selected reset immediately. Cancel closes the correctly sized dialog without changing any settings.
GeneralLocation identity, administrator access, refresh, logging, Windows startup, and monitoring tests
Licensed CourtReserve Location
Shows the ID and Name returned by the authenticated CourtReserve locations API during this startup.This read-only line appears before the editable settings only after the location passed the protected entitlement check. It proves that the startup API call happened and is never written back to SimulatorConfig.json.
Show Unlicensed Location Notification
Previews the always-on-top notification using a mock ID and Name.Use this button to review exactly what an unlicensed-location message looks like. Closing the preview does not write a production Event Log entry, change the runtime license, save settings, or close AccessControl.
Simulator Name
Identifies this simulator in customer, diagnostic, and maintenance displays.Enter the location-facing name for this simulator. The General value identifies AccessControl screens, expands [SETTING-SIM-NAME], and labels diagnostics; the WinSysMaint value identifies maintenance, service-health, and AccessControl watchdog events. Keep both values aligned so support records clearly point to the same simulator.
Location Name
Provides an optional facility name for customer-facing dynamic text.Enter the business, clubhouse, or facility name that should replace [SETTING-LOCATION-NAME] in the Kiosk Title and configured dialog titles, messages, descriptions, and Markdown. This presentation-only setting does not affect CourtReserve court matching, diagnostics, or WinSysMaint. New installations use Location Name as the generic placeholder until the operator enters the actual location.
Location Code
Selects this location's organization-wide CourtReserve catalog entries.Enter the short site code used in reservation-type names, such as LUD or GR. A reservation type matches when the code appears as a distinct name token or as the exact value inside parentheses, case-insensitively. Deployment Manager and AccessControl use the same rule so unrelated locations' types are not shown or provisioned.
Admin Code
Sets the private four-digit code used to enter Admin Mode.Enter exactly four numeric digits and keep the value private. It must differ from the Shutdown Code. The reveal button changes only how the value is displayed while editing; the saved secret continues through the application's protected configuration path.
Booking Refresh Interval (Minutes)
Controls how often AccessControl requests an updated booking schedule.Enter the number of minutes between normal CourtReserve booking refreshes. The minimum is 5 minutes and 30 minutes is recommended for ordinary operation. Presentation-only timers, such as an Early Access card becoming Active at its start time, do not trigger or change this refresh schedule.
Logging Level
Controls how much diagnostic detail AccessControl records.Use INFO for normal operation. More detailed levels can help investigate a problem but create more log output; less detailed levels can hide useful support evidence. This setting affects diagnostic verbosity, not customer-visible booking behavior.
Windows Auto Start
Controls whether AccessControl starts automatically with Windows.Enable Auto Start to register the application for automatic launch on this simulator computer, or disable it to remove that registration. The action is immediate and independent of the Settings Save button. Deployment Manager ownership or Windows security policy may require administrator approval.
Write Event Log Samples
Writes unmistakably labeled Windows Application Log samples for AccessControl events 24701-24703 and every typed WinSysMaint event, including the nonblocking system-setting safety event 1019, App & browser control correction event 1030, and Smart App Control correction event 1031. It performs no real customer shutdown, licensing failure, settings repair, maintenance, service recovery, process close, or reboot action.
Debug > Running Apps
Records which applications appear while an administrator exercises simulator workflows.Select Monitor Running Applications to sample every five seconds, then minimize AccessControl and open courses, ranges, or other simulator experiences. Restore AccessControl from its notification-area icon to review the cumulative list. The newest 2,000 observations remain available, including closed applications until they age out; repeated sightings of the same process instance are suppressed. Show Only Interactive limits the visible history and subsequent samples to processes with a main window; changing that filter does not delete previously retained evidence. Monitoring is temporary, stops on Admin exit or application shutdown, and does not change the configured Startup or Restricted Applications lists.
KioskBooking access, customer shutdown, branding, Help, Feedback, and Make A Booking
Booking Early Access (minutes)
Allows a booking to unlock shortly before its scheduled start.A booking enters Early Access when the simulator computer's current local time is this many minutes or less before its scheduled start. Its access code becomes valid during that window, and the displayed card changes from Early Access to Active exactly at the scheduled start without requesting a booking refresh. Enter 0 to require the scheduled start.
Booking Continuity: Treat Same Customer Bookings As One When Gap Is At Most (Minutes)
Joins sequential bookings for the same verified member when their gap is within this maximum.AccessControl treats chronological, non-overlapping bookings on the same court as one continuous session only when both bookings have the same positive CourtReserve OrganizationMemberId and the gap is equal to or less than this value. The setting is shared by Live and Demo Mode, supports exact back-to-back bookings when set to 0, and follows chains of two or more bookings. Display names are never used to prove identity. A linked transition stays unlocked, suppresses Make A Booking inside the chain, and counts only paid booking minutes—not the transition gap—when checking Extend My Time duration eligibility.
Customer Shutdown
Allows customers to request a protected Windows shutdown from the kiosk.When enabled, the kiosk shows the customer shutdown instruction and accepts the configured Shutdown Code. Entering the code opens the warning in this dedicated Kiosk settings group; it does not immediately log an event or close AccessControl. The Admin Code continues to open Admin Mode and must remain different from the Shutdown Code.
Shutdown Code
Sets the four-digit code customers use for an allowed shutdown.Enter exactly four numeric digits. The value must differ from the Admin Code, and generated Demo booking PINs automatically avoid both protected codes. This code is used only when Customer Shutdown is enabled.
Customer Shutdown Warning Title
Sets the warning-dialog title shown after the shutdown code is entered.Enter the title customers see before SimManager opens feedback or closes. Any general token listed on the Tokens tab is replaced when the warning is displayed. Keep the title direct and unmistakable so the customer understands this is a shutdown confirmation rather than a normal booking message.
Customer Shutdown Warning Message (Markdown)
Sets the Markdown warning customers must accept before shutdown continues.Use supported Markdown headings, callouts, ordered or bulleted lists, bold text, and the general tokens listed on the Tokens tab. The default begins with an important, friendly explanation that accepted shutdowns are logged, then explains overtime and unbooked-simulator billing. Existing owner-customized Markdown remains unchanged during an upgrade; the exact earlier built-in message is corrected to say logging occurs only after I ACCEPT.
Preview Customer Shutdown Dialog
Opens the real warning presentation using current unsaved title and Markdown values. Preview, Cancel, Escape, and timeout never write event 24701, open feedback, or close AccessControl. Only a live customer request followed by I ACCEPT logs the accepted warning and continues.
Kiosk Title
Sets the main customer-facing title at the top of the kiosk.Enter the heading customers should see on the locked kiosk screen. Supported tokens let one branding pattern include the installed Location Name and Simulator Name while remaining readable at a distance. This setting changes presentation only and does not affect CourtReserve matching or access rules.
Kiosk Branding Icon
Selects the facility logo; the default is the bundled 24/7 Golf logo.Leave this setting blank to use the bundled 24/7 Golf logo beside the kiosk title, or enter a local image path for a custom facility logo. Keep custom images available on the simulator computer in a format supported by WPF. This setting does not change the centered 247SimManager Suite wordmark, dialog footer logos, or Windows application icon. A missing or invalid custom path affects branding only; it does not change booking access.
Kiosk Dialog Timeout (minutes)
Sets how long Help, Feedback, Make A Booking, the reboot reason dialog, and the Customer Shutdown Warning may remain open.Enter the whole-minute lifetime shared by these customer-facing dialogs. When the period expires, AccessControl closes the dialog and returns to the protected kiosk flow. A timed-out Customer Shutdown Warning cancels the shutdown request; only I ACCEPT continues to event logging, feedback, and application close. Booking notification dialogs use the separate Notification Timeout setting.
Allow Booking Gap (Minutes)
Shows Make A Booking when an opening meets this minimum length.The Make A Booking action appears on a complete opening, including an opening before the first booking, when the gap is equal to or greater than this value. Blank or 0 keeps gap durations visible but disables the booking action on gap rows. A same-member opening already joined by Booking Continuity is part of that customer's session and never offers Make A Booking. This setting does not control Extend My Time or courtesy-buffer handoffs, which use Booking Gap.
Help customer text size
Selects the customer-facing Markdown text size for this dialog.Choose Small, Medium, or Large using the three letter-A buttons. Small preserves the current base size; Medium increases all rendered Markdown text by 4 points; Large increases it by 8 points. Each customer dialog stores its own selection, and preview uses the current unsaved choice.
Always Show Help Indicator
Keeps Help reachable throughout every unlocked customer session.When enabled, the countdown overlay remains visible as a compact Help-only pill before the configured countdown threshold begins. Once the countdown appears, the same control shows a Help icon beside the normal timer. Disabling this option restores the previous behavior before the countdown threshold, while the Help icon remains available whenever the countdown itself is visible. New deployments default this setting to checked; a missing value in an older installed file is added as checked on startup, while an explicitly cleared value remains cleared.
Show Reboot Simulator button
Allows customers to request a full PC restart from Help after submitting a reason.This Kiosk → Customer Help checkbox defaults off and requires confirmed Windows Auto Start in General. Otherwise it is cleared and disabled, with a readable prerequisite help icon. The red Help button opens a native reason/comments form; Other requires comments. Only valid explicit confirmation proceeds. Cancel, Escape, dismissal and timeout cancel the reboot. WinSysMaint records the feedback in events 1020 and 1025. Diagnostic reports are generated separately through Admin Debug → Customer Reboots.
Help Dialog Title
Sets the heading shown when a customer opens Help.Enter the customer-facing title displayed at the top of the Help dialog. Supported tokens are replaced when the dialog opens. Keep it short enough to remain readable on the kiosk; the Help Text setting supplies the body content underneath it.
Help Text (Markdown)
Sets the customer instructions shown by the kiosk Help action.Enter customer-only guidance using the supported Markdown headings, callouts, ordered or bulleted lists, bold text, and dynamic tokens. The existing [POST-BOOKING-GRACE] placeholder displays the current post-booking minutes value. Preview uses the current unsaved text so wording can be reviewed before Save. The new-deployment default places Simulator Use Tips before Make A Booking and covers approved golf-ball colors, marker safety for the impact screen, reflective clubheads, and prompt putting setup.
Feedback Dialog Title
Sets the heading shown when a customer opens Feedback.Enter the customer-facing title displayed above the embedded feedback form. Supported tokens are replaced when the dialog opens. Keep the wording short and action-oriented; the Feedback Form setting controls which secure form opens beneath this title.
Feedback Form
Sets the secure web form opened by the Feedback action.Enter an HTTPS feedback-form address that can be opened in the kiosk's protected browser. The location may be supplied through the URL query string when the form supports it. AccessControl rejects navigation that does not satisfy its safe feedback-browser policy.
Make A Booking customer text size
Selects the customer-facing Markdown text size for this dialog.Choose Small, Medium, or Large using the three letter-A buttons. Small preserves the current base size; Medium increases all rendered Markdown text by 4 points; Large increases it by 8 points. Each customer dialog stores its own selection, and preview uses the current unsaved choice.
Make A Booking Title
Sets the heading shown in the Make A Booking dialog.Enter the customer-facing title displayed in the orange heading above the standalone scheduler. Supported tokens are replaced when the dialog opens. This dialog is opened from eligible booking-gap rows; the scheduler widget and customer instructions are configured separately below.
Custom Scheduler Widget
Provides the CourtReserve scheduler used by Make A Booking.Paste the complete CourtReserve iframe or embed snippet for this location. AccessControl formats the source after paste, extracts only the validated HTTPS widget URL, and never executes pasted script. This widget is used by Make A Booking and is separate from the Extend My Time scheduler embed.
Administrator URL display
When Make A Booking is opened in Admin Mode, a diagnostic row shows its current URL, including redirects and fragment changes. It is hidden for customer sessions and is not an additional configurable setting.
Make A Booking Instructions
Sets the Markdown guidance shown beside the standalone scheduler.Enter customer instructions using supported headings, callouts, ordered or bulleted lists, bold text, and dynamic tokens. Preview uses current unsaved values and does not change Extend My Time settings. Keep the steps specific to creating a new reservation rather than extending an existing one.
Demo ModeIsolated owner-testing settings and portable Demo files
Booking NotificationsLive timing, shared customer content, countdown, extensions, wrap-up, and closing message
Countdown Timer Position
Places the session countdown in a selected kiosk-screen corner or edge.Choose the countdown location relative to the kiosk monitor. The same placement is used for Live and Demo sessions, while each mode can use a different visibility threshold. Top Center is the normal default.
Show When Minutes Remaining
Controls when the unlocked-session countdown becomes visible.Keep the countdown hidden until this many minutes remain in the current booking. Enter 0 to show it for the entire unlocked session. Live and Demo Mode store separate visibility thresholds so compressed Demo timelines can be tested without changing production timing.
Show booking details
Shows booking and local-clock details with the session countdown.When enabled, the Live and Demo countdown expands to show the privacy-safe booking name, booking start, booking end, and the simulator computer's current local time. The current time updates every second. Disable it when only the remaining-time display is desired.
Notification Timeout (Minutes)
Sets how long a booking notification waits for customer action.If no one selects an available action before this period expires, AccessControl locks the kiosk, including when a Pre End notification times out. Live and Demo Mode store separate timeout values, while the dialog titles, messages, and buttons remain shared. Booking End Closing uses this same timeout (two minutes by default in Live Mode) only to dismiss its message; the kiosk is already locked.
Extend My Time customer text size
Selects the customer-facing Markdown text size for this dialog.Choose Small, Medium, or Large using the three letter-A buttons. Small preserves the current base size; Medium increases all rendered Markdown text by 4 points; Large increases it by 8 points. Each customer dialog stores its own selection, and preview uses the current unsaved choice.
Extend My Time Dialog Title
Sets the heading shown in the Extend My Time scheduler.Enter the customer-facing title displayed above the scheduler used to extend an eligible reservation. Supported booking, simulator, and location tokens are replaced when the dialog opens. Eligibility is determined first by both the Booking Gap and booking-duration requirements; the same title is used in Live and Demo workflows.
Booking Gap (Minutes)
Requires this much open time after a booking before extension is allowed.After AccessControl first joins every qualifying same-member booking into the current session, the remaining opening before the next booking must be positive and equal to or greater than this value. This inclusive gap requirement and Bookings Must Be Longer Than must both pass before Extend My Time is offered. For courtesy buffer, the next booking must instead start strictly beyond this minimum; equality denies buffer. This is separate from Same Customer Gap, which joins qualifying bookings at or below its maximum. It is independent from Kiosk Allow Booking Gap, and Live and Demo Mode store separate values.
Bookings Must Be Longer Than (Minutes)
Requires the current booking to meet this duration before extension is allowed.The sum of confirmed paid booking minutes in the current same-member continuity chain must be equal to or greater than this value; any unbooked transition gap inside the chain is excluded. This inclusive duration requirement works together with the Extend My Time Booking Gap requirement, and both must pass. Live and Demo Mode store separate thresholds so owner testing cannot change live eligibility.
Show Extend / Allow Indicators On Bookings
Shows customer-facing extension and buffer indicators on booking cards.This master toggle is off by default for new deployments and installed JSON that does not contain it. When enabled, a clock-plus glyph explains Extend My Time eligibility and an hourglass glyph explains buffer eligibility and minutes; hover text gives the applicable reason without exposing another customer. Disabled states retain the same glyph with a bright-red circle/slash. When the master toggle is off, AccessControl hides both glyphs and skips their background policy analysis, but actual extension and buffer enforcement remains active.
Booking Buffers
Controls extension, courtesy-buffer, and restricted-application policy for each matching reservation type.The grid lists the Location Code-matched CourtReserve types with Type Name, Enable Buffer, Allow Extending, Min Duration, and Buffer Minutes. The two accessible ON/OFF toggles default off for new types. Min Duration is an inclusive paid-time minimum applied to the complete verified same-customer booking chain; Buffer Minutes is the courtesy time available only when Enable Buffer and all handoff checks pass. Expand a row to manage the applications customers may not run during bookings of that exact type.
Restricted Applications
Identifies applications that are not permitted during one reservation type.Expand the reservation-type row and select Add application, then browse to any full EXE path. AccessControl fills the process name from the selected filename when the field is blank; it may be edited when Windows uses a different identity. Different EXE paths may intentionally share one process name, while the same normalized full path cannot be saved twice in that reservation type. Each row also requires a customer-facing dialog title and nonblank message.
Restricted Application Message
Authors the warning and acknowledgement shown when a prohibited process is detected.Select Message on the application row to open a two-panel editor with Markdown source on the left and a live native preview on the right. Save returns the edited message to the unsaved Settings row; Cancel leaves it unchanged, and the main Settings Save action persists the complete reservation-type configuration. During an active matching booking, AccessControl checks each distinct process name once every five seconds, places an input-blocking shield over the complete kiosk monitor, and shows the first matching row's title and formatted message. After the customer selects I UNDERSTAND, AccessControl closes every matching process, force-terminates any survivor after five seconds, verifies exit, waits two seconds, and restores configured Startup applications in order behind a nondismissible Returning to Home Screen shield. A failed recovery is logged and retried every five seconds until the home state is restored.
Refresh Reservation Types
Reconciles the Booking Buffers grid with CourtReserve.Refresh adds newly returned matching types with both optional privileges disabled and an empty Restricted Applications list, removes types the API no longer returns, and updates CourtReserve-owned names and colors. Existing extension, buffer, and restricted-application values are preserved for surviving reservation-type IDs.
Extend Time Not Allowed Message
Explains why Extend My Time is unavailable for the current booking.For Booking End, Post Booking, and Time Extended, this token-aware message replaces the normal extension prompt when either required condition fails: the current booking is shorter than the duration threshold or the opening before the next booking is smaller than the gap threshold. Pre End always retains its selected buffer-specific message. Write it without exposing another customer's booking details.
CourtReserve Custom Scheduler Embed Code
Provides the CourtReserve scheduler used by Extend My Time.Paste the complete CourtReserve iframe or embed snippet for the extension workflow. AccessControl formats the source, extracts only a validated HTTPS widget URL, and does not execute pasted script. This value is shared by Live and Demo notifications and is separate from the Make A Booking widget.
Customer Instructions (Markdown)
Sets the guidance displayed with the Extend My Time scheduler.Enter instructions using supported Markdown headings, callouts, ordered or bulleted lists, bold text, and any documented dynamic token. Preview safely renders current unsaved content and treats unknown HTML as plain text. Avoid wording that reveals a customer's full name.
QR Code Image Path
Selects the QR image displayed in booking notifications.Enter a full local image path or a packaged relative path such as an Assets path. The file must be present on the simulator computer and readable by AccessControl. The same QR content is used by the existing Live and Demo booking-action previews and dialogs. Booking End Closing has no QR image.
Minutes Before Booking End
Sets how early the pre-end notification is shown.AccessControl shows the Pre End notification this many minutes before the authoritative booking end time. The notification may offer Extend My Time only when both extension requirements pass. Live and Demo Mode store separate timing values while sharing the title and both buffer-specific messages.
Pre End Title
Sets the customer-facing heading for this notification.Each notification section saves its own title: Pre End, Booking End, Post-Booking, or Time Extended. The title is shared by Live and Demo workflows for that notification type. Use concise wording that remains readable at kiosk distance.
Message When Booking Qualifies for Buffer Time
Required pre-end text selected only when all buffer requirements pass. Defaults to the extension/mobile-app guidance shown in the message reference.
Message When Booking Does Not Qualify for Buffer Time
Required pre-end text selected when any buffer requirement fails, including an unverified booking refresh. Defaults to Keep Playing and end-time locking guidance. Buffer eligibility and paid-extension permission are separate policies.
Preview: booking qualifies for buffer time
Select or clear this temporary preview choice to inspect either message using current unsaved text and minutes. Allow Extend Time separately controls the preview button; neither preview choice changes reservation policy.
Booking End Title
Sets the customer-facing heading for this notification.Each notification section saves its own title: Pre End, Booking End, Post-Booking, or Time Extended. The title is shared by Live and Demo workflows for that notification type. Use concise wording that remains readable at kiosk distance.
Booking End Message
Sets the customer-facing body text for this notification.Each notification section saves its own message: Pre End, Booking End, Post-Booking, or Time Extended. The message is shared by Live and Demo workflows for that notification type. Keep instructions actionable and do not include a customer's full name.
Booking End Closing Title
Sets the plain-text heading above the locked kiosk. Defaults to Thank You for Playing! ⛳; requires nonblank text and supports all six general tokens, case-insensitively.
Booking End Closing Message (Markdown)
Supports headings, bold text, callouts, ordered/bulleted lists, paragraphs and hard line breaks, plus all six general tokens. The friendly default thanks the booking owner, names the simulator and facility, and includes a golfer emoji. Live and Demo share this copy. Long text scrolls with Close visible. Customize the pilot-reported TPS inactivity wording for the location; this message does not perform or verify account sign-out.
Booking End Closing Preview Dialog
Shows the current unsaved title/message without ending a booking or saving Settings. Select Save to retain changes. See the production-WPF previews and exact appearance rules.
Post-Booking Title
Sets the customer-facing heading for this notification.Each notification section saves its own title: Pre End, Booking End, Post-Booking, or Time Extended. The title is shared by Live and Demo workflows for that notification type. Use concise wording that remains readable at kiosk distance.
Post-Booking Message
Sets the customer-facing body text for this notification.Each notification section saves its own message: Pre End, Booking End, Post-Booking, or Time Extended. The message is shared by Live and Demo workflows for that notification type. Keep instructions actionable and do not include a customer's full name.
Time Extended Title
Sets the customer-facing heading for this notification.Each notification section saves its own title: Pre End, Booking End, Post-Booking, or Time Extended. The title is shared by Live and Demo workflows for that notification type. Use concise wording that remains readable at kiosk distance.
Time Extended Message
Sets the customer-facing body text for this notification.Each notification section saves its own message: Pre End, Booking End, Post-Booking, or Time Extended. The message is shared by Live and Demo workflows for that notification type. Keep instructions actionable and do not include a customer's full name.
Auto close after 15 seconds
Closes the Time Extended confirmation automatically after 15 seconds.When enabled, the success confirmation dismisses itself after 15 seconds so the customer can continue without another action. When disabled, the customer closes or continues from the dialog manually. This affects confirmation presentation, not the extension duration.
Preview controls
Pre End, Booking End, Post Booking, Time Extended, Extend My Time, and Booking End Closing previews use current unsaved values. The Allow Extend Time checkboxes affect previews only.
StartupSequential simulator application launch before the kiosk appears
Startup Applications
Starts configured applications sequentially before showing the kiosk.Rows run from top to bottom. Application Path must be a full .exe path, Process Name is the Windows process name without .exe, and Delay is the whole-minute pause after that process is found. AccessControl waits for each row before advancing; changes take effect on the next application start. A normalized, case-insensitive executable path is the row identity, so the same application cannot be added twice through Browse, direct editing, or Save. Equivalent . and .. path segments are treated as duplicates. If older JSON already contains duplicates, the first row and its original order are retained.
Add and Remove
Add creates an editable row; the compact remove action deletes only that row. Changes take effect on the next AccessControl start.
WinSysMaintService identity, maintenance, AccessControl watchdog, TrackMan logs, connectivity, time, security, and GPU policy
WinSysMaint settings file
Selects the WinSysMaint JSON file edited by this tab.Use the canonical installed service settings path for the simulator computer. Refresh reloads the selected file, and WinSysMaint fields on this tab are persisted through their service-settings workflow. Choosing the wrong file can make the screen disagree with the running service.
Use Current Defaults
Replaces an incompatible WinSysMaint file with the current complete schema after confirmation.The normal controls stay disabled when the selected JSON cannot be safely repaired. This visible recovery action avoids editing an outdated document as though it used today's contract.
Simulator Name
Identifies this simulator in customer, diagnostic, and maintenance displays.This WinSysMaint value identifies maintenance, service-health, and AccessControl watchdog events. Deployment and Reset to Default keep it synchronized with AccessControl General > Simulator Name so customer text and support records point to the same simulator.
Test Maintenance
Confirms and immediately runs the selected maintenance action through the installed service.The current WinSysMaint settings are saved first. AccessControl verifies that the installed service supports the request, explains the selected action, requests Windows administrator approval, restarts the service to reload service.json, and submits one protected test independent from the nightly schedule.
Enable scheduled maintenance
Enables WinSysMaint scheduled maintenance and settings enforcement.When enabled, WinSysMaint evaluates the selected days and local maintenance-window time and applies its configured system policies. Disabling it prevents the scheduled maintenance workflow but does not erase the saved days, time, or related settings.
Maintenance Action
Choose Settings enforcement only to apply managed Windows settings and leave applications running, or Restart System to continue through the controlled full Windows restart. Both begin with the same settings phase; an individual setting warning does not block remaining work.
Maintenance Window Time
Sets the local computer time when scheduled maintenance begins.Choose the simulator computer's local maintenance start time. WinSysMaint evaluates it on the selected Maintenance Days when scheduled maintenance is enabled. Pick a period outside expected customer bookings because configured applications may be closed and the computer may reboot.
Maintenance Days
Chooses the weekdays on which scheduled maintenance may run.Select every local weekday that should be eligible for the maintenance window. The time and day must both match, and scheduled maintenance must be enabled. Leave a day unchecked when maintenance or reboot activity must never start on that weekday.
Application Close Timeout (seconds)
Sets how long WinSysMaint waits for applications to close normally.During Restart System, WinSysMaint requests visible applications to close and waits up to this many seconds before continuing with its termination policy. A longer timeout gives applications more time to save state; a shorter timeout completes maintenance sooner but can be more disruptive.
Enable Access Control Watchdog
Enabled by default. Checks process presence every five minutes, starting five minutes after service startup. Save settings and restart WinSysMaint to apply the switch. Logon Auto Start is a separate setting.
AccessControl Executable
Installed AccessControl EXE used by the five-minute watchdog. Deployment Manager writes the actual path, which must match the primary application registered in the current Windows logon. A missing or unreadable path produces a warning and a later retry.
AccessControl Settings File
Installed SimulatorConfig.json path used to locate the shared Watchdog directory beside that file. AccessControl and WinSysMaint must refer to the same installation; the restart journal contains no customer PINs or CourtReserve credentials.
Monitor TrackMan related log files
Enabled by default. Reads selected TrackMan diagnostic logs and writes classified incidents to the Windows Application log under WinSysMaint.Independent of maintenance and the AccessControl watchdog. Clearing it stops file discovery and scanning after Restart WinSysMaint. Initial activation starts at the ends of existing logs; it does not alert on the whole historical log archive.
Scan Frequency (minutes)
Defaults to 5; accepts a whole number from 1 through 1,440.WinSysMaint waits this many minutes after each completed scan. Scans never overlap. Save through the existing automatic-save workflow, then select Restart WinSysMaint to load changes. Deployment Manager exposes the same settings before installation.
Connectivity Monitoring
Enables recurring internet connectivity checks in WinSysMaint.When enabled, WinSysMaint tests the configured Connectivity Check Host at the selected interval and records its monitoring events. Disable it when network availability should not be monitored; the saved host and interval remain available for later use.
Connectivity Check Host
Sets the host WinSysMaint uses to verify internet connectivity.Enter a stable DNS name or address that the simulator should be able to reach. WinSysMaint checks this target only when connectivity monitoring is enabled. Choose an endpoint suitable for availability testing rather than a customer or credential-bearing service URL.
Connectivity Check Interval (seconds)
Sets how often WinSysMaint checks the configured connectivity host.Enter the number of seconds between reachability checks. The minimum is 5 seconds. Short intervals detect an outage sooner but generate more network activity.
Internet Time Server (NTP)
Selects the server used to synchronize Windows time.Choose the approved NTP source WinSysMaint applies during settings enforcement. Accurate local computer time is critical because booking start and end values are interpreted against the simulator clock. The server must be reachable from the installed network.
Windows Time Zone
Selects the Windows time zone used by the simulator computer.Choose the location's correct Windows time-zone identifier. WinSysMaint enforces this setting so the computer clock aligns with CourtReserve booking wall-clock values. Changing it can shift when bookings appear active, so verify the location before Save.
Turn off Windows Firewall
Keeps the Domain, Private, and Public firewall profiles disabled.This default-enabled simulator policy is used by deployment, owner Apply and Validate actions, and scheduled maintenance. Clear the option when another security system or location policy should manage Windows Firewall; WinSysMaint then leaves every firewall profile unchanged.
Turn off App & browser control
Disables the supported Windows reputation-based protections that can block simulator software.When enabled, WinSysMaint turns off Check apps and files, App Install Control, Microsoft Edge SmartScreen and its PUA protection, Defender potentially unwanted application blocking, SmartScreen for Microsoft Store apps in loaded real-user profiles, and Enhanced Phishing Protection. Clear this option to leave all of these settings unchanged. Smart App Control is governed by the separate choice below.
Turn off Windows Smart App Control
Explicitly disables Smart App Control on a supported Windows 11 simulator computer.This higher-impact option is off by default. Select it only after reviewing the warning that Windows can require a reset or reinstallation before Smart App Control can be enabled again. On Windows 11 version 22H2 or newer, WinSysMaint sets Smart App Control to Off, refreshes Code Integrity policy, and validates the result. Unsupported Windows versions, a missing refresh tool, or an apply/read-back failure are reported as yellow nonblocking warnings while the remaining deployment or maintenance work continues.
Configure Defender antivirus exclusions
Controls whether the saved trusted-folder list is applied and validated.This option is enabled by default. Clear it when antivirus exclusions should be managed elsewhere; WinSysMaint retains the list but does not add or validate its paths. Microsoft Defender itself always remains enabled.
Defender Exclusion Paths
Lists folders maintained as Microsoft Defender antivirus exclusions.New deployments start with C:\ProgramData\Trackman, C:\Program Files\TrackMan Performance Studio, C:\Program Files\247Golf, C:\Program Files\247Golf\SimManager, and C:\Program Files\247Golf\SimManager\AccessControl. Add only trusted application or data paths that genuinely require exclusion because antivirus scanning is reduced there. The list is applied only while Configure Defender antivirus exclusions is selected.
High Performance GPU Applications
Lists applications that receive the Windows High Performance GPU preference.Enter full .exe paths for applications that should use the high-performance GPU. WinSysMaint applies the preference for every real Windows user account during maintenance. Add only graphics-intensive simulator applications that need the discrete GPU. The list rejects duplicate normalized executable paths without regard to letter case and treats equivalent . and .. path segments as the same application. Existing duplicate JSON is repaired by keeping the first configured path and its order.
Restart WinSysMaint
Requests Windows administrator approval, restarts the LocalSystem service, and loads the already-saved configuration.
PJLinkCompatible network-projector power behavior, connection timing, retries, and commands
Enable projector control
Enables booking-aware network projector control through PJLink.This is the single projector-automation switch. When enabled, AccessControl manages the configured projector from booking state, customer and Admin unlocks, and the Help dialog. Host, port, identity values, credentials, commands, and timing must all match the commissioned device. Disable it when projector power is managed independently.
Booking Gap To Turn Projector Off (Minutes)
Defaults to 30 minutes and defines the idle gap that permits standby.After a successful booking refresh while the locked kiosk is showing, AccessControl measures from the current simulator time to the next valid booking's Early Access boundary. A gap equal to or longer than this value permits standby; a shorter gap preserves the current state. No future bookings also permits standby. Failed or unavailable booking data never authorizes shutdown.
Show Starting Message (seconds)
Defaults to 20 seconds and controls the customer projector-startup message.The timer begins as soon as the initial Checking Projector Status phase appears, before the first network query. It does not restart if the same dialog changes to Turning Projector On. The small X lets the customer dismiss the message early without cancelling the PJLink operation.
Protocol
Use PJLink for the current Panasonic integration.PJLink is the portable projector-control protocol used by AccessControl. This value is an identifier, not a web address. The current power commands follow the standard PJLink Class 1 format.
Expected Projector Name (NAME)
Use the commissioned on-device name, such as PRJ_SIM1.This helps identify the intended bay projector. The installed Ludington SIM1 PT-VMZ51 reports the PJLink NAME query as unsupported, so manufacturer, model, and exact serial number remain the authoritative identity guards.
Projector IP Address or Host Name
Ludington SIM1 uses 192.168.1.21.Enter the stable IPv4 address or resolvable host name assigned to this physical projector. Every additional bay must receive its own approved address. Do not copy SIM1's address to another projector.
PJLink TCP Port
Use the standard PJLink port 4352.The simulator PC must reach this TCP port while the Panasonic projector is powered on and while it is in Standby. Do not enter Panasonic web-interface ports 80 or 1024 here.
PJLink Password
Uses the same unique secret configured in the Panasonic PJLink menu.This credential is separate from the Panasonic administrator password and the AccessControl Admin Code. AccessControl protects the saved value with current-user Windows DPAPI. Do not place the password in owner documentation, screenshots, or equipment labels.
Local Bind Address (Optional)
Leave blank for the normal five-port-switch and USB-adapter layout.Windows should choose the route through the USB Ethernet adapter. Enter a local PC address only after support confirms a diagnosed multi-NIC routing requirement. Never use this field to route PJLink through the motherboard Ethernet adapter reserved for simulator device.
Expected Manufacturer (INF1)
Ludington SIM1 expects Panasonic.Test Connection verifies the PJLink manufacturer response before power control. A mismatch blocks power commands so an accidentally reused IP address cannot control an unrelated device.
Expected Model (INF2)
Ludington SIM1 expects the model-family prefix PT-VMZ51.This guard accepts the commissioned PT-VMZ51 family identity while protecting against a different projector model. Recommission this value when replacing the projector.
Expected Serial Number (SNUM)
Ludington SIM1 uses GA5449466.This is the exact physical-device binding and must never be copied to another bay. Test Connection and every guarded power operation verify it. Record the replacement projector's serial before re-enabling automation.
Connection Timeout Seconds
Defaults to 5 seconds for each TCP connection attempt.A shorter value reports unreachable devices sooner; a longer value tolerates slow networks. Retry Attempts controls how many bounded attempts may follow.
Command Timeout Seconds
Defaults to 5 seconds for each command response.This timeout begins after the PJLink command is sent and is separate from the connection timeout. Authentication or configuration errors are not retried blindly.
Power On Warmup Seconds
Defaults to 30 seconds.This is the bounded polling window while the projector changes from Standby or Warming to On. The customer message duration is controlled separately by Show Starting Message.
Power Off Cooldown Seconds
Defaults to 60 seconds.This is the bounded polling window while the projector changes from Cooling to Standby. AccessControl avoids rapid opposite commands during a hardware transition.
Retry Attempts
Defaults to 2 bounded retries.Retries recover from transient connection or command failures. Timeouts apply to every attempt; password, identity, and unsupported-command errors are reported instead of retried as network failures.
Status Poll Seconds
Defaults to 10 seconds between normal status polls.Commissioning feedback may poll more frequently without creating overlapping commands. Power intent is serialized so Warming and Cooling are respected.
Power On Command
Use %1POWR 1.This standard PJLink Class 1 command is sent only after authentication and the configured manufacturer, model, and serial checks pass.
Power Off Command
Use %1POWR 0.This standard standby command is sent only from eligible locked-kiosk policy or a confirmed administrative commissioning test. Failed booking refreshes never authorize it.
Power Status Command
Use %1POWR ?.AccessControl interprets Standby, On, Cooling, and Warming and uses those states for startup gating, transition protection, commissioning tests, and runtime decisions.
CourtReserveLive booking API connection, PIN retrieval, court filtering, and display window
API Base URL
Sets the CourtReserve API endpoint used for booking requests.Enter the approved HTTPS base address for the CourtReserve API environment used by this location. AccessControl combines it with its booking request paths. Changing environments can return a completely different schedule, so verify the URL before Save.
API Key ID
Sets the CourtReserve API credential identifier.Enter the key identifier issued for this location's CourtReserve integration. It is paired with the API Key Secret when AccessControl authenticates booking requests. The identifier alone does not grant kiosk access and should not be confused with a customer PIN.
API Key Secret
Sets the secret paired with the CourtReserve API Key ID.Enter the secret issued for this CourtReserve integration and keep it private. The reveal button changes only its editing display. An incorrect ID or secret prevents authenticated booking refreshes and can leave the kiosk without current schedule data.
Request PIN codes
Requests booking PIN values from CourtReserve.Enable this when the CourtReserve integration is authorized to return the pin-code data used by the configured Access Code Source. Disabling it can remove the values needed for customer access-code validation. The API credentials must also have the required permission.
Access Code Source
Selects which CourtReserve booking value supplies kiosk access codes.Enter the configured CourtReserve field or source used to obtain each booking PIN. It must match the data returned for this integration, including whether pin codes are requested. Changing it can make otherwise valid customer codes fail validation.
Upcoming Booking Window Hours
Sets how many future hours of bookings AccessControl requests.Enter the forward-looking CourtReserve schedule window used during refresh. A larger value shows more upcoming reservations but requests more data; a smaller value may omit bookings customers expect to see later. This does not change the normal refresh interval.
CourtReserve Debug panel
Admin Mode records the HTTP method, exact request URL, status, duration, returned JSON, and any error for each request in the current kiosk session. The URL makes date-boundary and court-filter troubleshooting visible, including the previous-day-through-tomorrow 24/7 window. Authentication credentials and the Authorization header are never shown.
Customer Reboots Debug tab
Shows genuine WinSysMaint 1025 events for the last 30 days, newest first, with available reason/comments. Refresh History reloads the list. Generate Report requests administrator elevation and writes a dated report to a selected folder; Show Report in Folder opens its location. Recent incidents may produce a partial after-window. No report is generated automatically, and exiting Admin Mode clears the displayed incident details.
TokensComplete reference for six general dynamic tokens and the Help-only grace-period placeholder
[BOOKING-OWNER]
Replacement value: current booking.Shows the same privacy-safe owner name displayed on the booking. The token never reveals or uses a full customer name as identity proof.
[BOOKING-START]
Replacement value: CourtReserve StartTime.Shows the authoritative simulator-local start time for the current booking.
[BOOKING-END]
Replacement value: CourtReserve EndTime.Shows the authoritative simulator-local end time for the current booking.
[SETTING-SIM-NAME]
Replacement value: General > Simulator Name.Shows the Simulator Name saved in AccessControl settings and provisioned by Deployment Manager.
[SETTING-LOCATION-NAME]
Replacement value: General > Location Name.Shows the optional Location Name saved in AccessControl settings and provisioned by Deployment Manager.
[SETTING-MINUTES-BEFORE-BOOKING-END]
Reads Booking Notifications > Pre End Time Notification > Minutes Before Booking End. The default 10 becomes 10 minutes; 1 becomes 1 minute. Works without an active booking and on every general token surface. Demo scheduling uses its separate threshold, but this token still reads the live setting. Unknown tokens stay literal.
[POST-BOOKING-GRACE]
Help-only replacement value: the applicable post-booking buffer in minutes.This established policy placeholder is rendered only inside Help Markdown. It shows the Demo post-booking buffer while Demo Mode is active and the active reservation type's Booking Buffers value during normal operation. It is not one of the six general Tokens-tab replacements and should not be used in titles, kiosk branding, notification messages, URLs, or other settings.
Closing-message token safety
The title and Markdown message use the ending session captured before locking clears it. Replacement values are inserted literally and are never expanded twice; punctuation in a customer or facility name cannot create Markdown formatting. All six general tokens are case-insensitive.
Unavailable and unknown values
If a general booking token is displayed when no booking is active, or a configured location value is blank, the customer-facing text displays Not available. Unknown bracketed text remains visible so an owner can find and correct the configuration mistake during Preview Dialog before selecting Save.
GuidelinesRequired customer rules shown after a valid code and before the simulator unlocks
Customer text size
Selects the customer-facing Markdown text size for this dialog.Choose Small, Medium, or Large using the three letter-A buttons. Small preserves the current base size; Medium increases all rendered Markdown text by 4 points; Large increases it by 8 points. Each customer dialog stores its own selection, and preview uses the current unsaved choice.
Booking Guidelines Markdown
Sets the Markdown guidelines customers review before a session starts.Enter the safety and usage guidance shown after a valid access code and before the simulator unlocks. Dynamic tokens may include the current booking or installed Simulator/Location values. The customer must review the complete content before accepting. Preview uses current unsaved Markdown and the selected text size; Save publishes the wording to future sessions.
Preview Booking Guidelines
Renders current unsaved Markdown in the real dialog. Long content wraps, supports touch scrolling, and requires the customer to reach the bottom before I ACCEPT becomes available when the document overflows.

Demo Data

Build repeatable owner demonstrations without touching live bookings

Demo Mode is available only inside an authenticated Admin session. It uses synthetic bookings, privacy-safe names, fresh temporary PINs, and an isolated timing/policy profile. Every application start begins in Live Mode, and ending Admin Mode clears the imported Demo timeline from memory.

No CourtReserve writesDemo schedules are created in memory and never create, extend, cancel, or modify a live reservation.
No reusable PIN fileCSV files contain no access codes. AccessControl creates new unique four-digit PINs on load and refresh and avoids Admin and Shutdown codes.
No real customer namesUse synthetic first-name-plus-last-initial labels. Demo cards, countdowns, dialogs, and exported timelines follow the same privacy boundary.
No machine secretsPortable Demo files exclude credentials, customer messages, absolute clock times, machine paths, Admin Codes, and Shutdown Codes.
Demo settings reference

The isolated profile controls timing and policy

Demo controls reuse the same short and detailed descriptions as their Live equivalents whenever the behavior is the same. Only the stored values are separate; Booking Continuity is intentionally shared.

Booking Early Access (minutes)
Allows a booking to unlock shortly before its scheduled start.A booking enters Early Access when the simulator computer's current local time is this many minutes or less before its scheduled start. Its access code becomes valid during that window, and the displayed card changes from Early Access to Active exactly at the scheduled start without requesting a booking refresh. Enter 0 to require the scheduled start.
Booking Continuity: Treat Same Customer Bookings As One When Gap Is At Most (Minutes)
Joins sequential bookings for the same verified member when their gap is within this maximum.AccessControl treats chronological, non-overlapping bookings on the same court as one continuous session only when both bookings have the same positive CourtReserve OrganizationMemberId and the gap is equal to or less than this value. The setting is shared by Live and Demo Mode, supports exact back-to-back bookings when set to 0, and follows chains of two or more bookings. Display names are never used to prove identity. A linked transition stays unlocked, suppresses Make A Booking inside the chain, and counts only paid booking minutes—not the transition gap—when checking Extend My Time duration eligibility.
Minimum Demo Booking Duration (Minutes)
Sets the shortest booking that Demo generation may create.Enter a whole number of minutes of at least 1. Generate Demo randomly selects durations from the inclusive minimum-to-maximum range. A loaded Demo CSV supplies its own durations and is not rewritten to match this generator value.
Maximum Demo Booking Duration (Minutes)
Sets the longest booking that Demo generation may create.Enter a whole number no smaller than the minimum and no greater than 720 minutes. Generate Demo randomly selects durations from the inclusive range. This value affects generated Demo bookings only and never changes live CourtReserve reservations.
Gap Before First Booking (Minutes)
Sets the opening placed before the first generated Demo booking.Enter 0 to start the first generated booking immediately, or a positive whole number to create an opening before it. Normal Booking Early Access rules still apply to that first booking. A loaded CSV supplies its own starting timeline.
Number of Bookings to Generate
Sets how many bookings are created by Generate Demo.Enter a whole number from 1 through 100. The generator creates that many chronological Demo reservations with safe public names and unique PINs; its sample player names may repeat when more examples are requested. Loading a CSV uses the bookings contained in that file instead.
Unique Demo Booking PINs
Creates a different safe four-digit PIN for every generated Demo booking.Demo PINs are generated automatically and are shown on booking cards only while Admin Mode is active. They never reuse the configured Admin Code or Shutdown Code. This is an informational generated value rather than a manually editable credential.
Allow Booking Gap (Minutes)
Shows Make A Booking when an opening meets this minimum length.The Make A Booking action appears on a complete opening, including an opening before the first booking, when the gap is equal to or greater than this value. Blank or 0 keeps gap durations visible but disables the booking action on gap rows. A same-member opening already joined by Booking Continuity is part of that customer's session and never offers Make A Booking. This setting does not control Extend My Time or courtesy-buffer handoffs, which use Booking Gap.
Show When Minutes Remaining
Controls when the unlocked-session countdown becomes visible.Keep the countdown hidden until this many minutes remain in the current booking. Enter 0 to show it for the entire unlocked session. Live and Demo Mode store separate visibility thresholds so compressed Demo timelines can be tested without changing production timing.
Notification Timeout (Minutes)
Sets how long a booking notification waits for customer action.If no one selects an available action before this period expires, AccessControl locks the kiosk, including when a Pre End notification times out. Live and Demo Mode store separate timeout values, while the dialog titles, messages, and buttons remain shared. Booking End Closing uses this same timeout (two minutes by default in Live Mode) only to dismiss its message; the kiosk is already locked.
Booking Gap (Minutes)
Requires this much open time after a booking before extension is allowed.After AccessControl first joins every qualifying same-member booking into the current session, the remaining opening before the next booking must be positive and equal to or greater than this value. This inclusive gap requirement and Bookings Must Be Longer Than must both pass before Extend My Time is offered. For courtesy buffer, the next booking must instead start strictly beyond this minimum; equality denies buffer. This is separate from Same Customer Gap, which joins qualifying bookings at or below its maximum. It is independent from Kiosk Allow Booking Gap, and Live and Demo Mode store separate values.
Bookings Must Be Longer Than (Minutes)
Requires the current booking to meet this duration before extension is allowed.The sum of confirmed paid booking minutes in the current same-member continuity chain must be equal to or greater than this value; any unbooked transition gap inside the chain is excluded. This inclusive duration requirement works together with the Extend My Time Booking Gap requirement, and both must pass. Live and Demo Mode store separate thresholds so owner testing cannot change live eligibility.
Minutes Before Booking End
Sets how early the pre-end notification is shown.AccessControl shows the Pre End notification this many minutes before the authoritative booking end time. The notification may offer Extend My Time only when both extension requirements pass. Live and Demo Mode store separate timing values while sharing the title and both buffer-specific messages.
Post-Booking Time Policy
Chooses which completed bookings may receive courtesy time.Allow every booking, allow only bookings that meet the Post-Booking Duration Threshold, or disable post-booking courtesy time entirely. This policy controls the Booking End outcome and does not control Extend My Time. Live and Demo Mode store separate policy choices.
Post-Booking Duration Threshold (Minutes)
Sets the booking-length boundary for conditional courtesy time.This value is used only when Post-Booking Time Policy allows courtesy time by booking duration. A booking must satisfy that policy boundary before the configured post-booking buffer can apply. It is intentionally separate from the Extend My Time duration threshold.
Post-Booking Buffer (Minutes)
Sets the courtesy period available after an eligible booking ends.When the Post-Booking Time Policy permits it, AccessControl uses this many minutes as the post-booking buffer and displays the configured Post-Booking notification. Live and Demo Mode store separate buffer values while sharing the customer-facing title and message.
Shared content
Countdown position/details, titles, messages, schedulers, QR content, and visual choices come from Booking Notifications so the Demo looks like the customer experience without changing live timing.
Built-in generation

Generate Demo creates a useful varied schedule

AccessControl starts from the current local computer clock plus Gap Before First Booking, creates the requested number of synthetic bookings, chooses whole-minute durations inside the configured range, and adds back-to-back and below/equal/above-threshold gaps as space permits.

Select Generate Demo at any time in Admin Demo Mode to leave an imported timeline and return to a newly generated schedule based on the current saved Demo Settings.

Save and load settings

Demo Settings JSON moves the isolated profile

Save Demo Settings JSON validates and exports the current Demo-tab values, including unsaved edits. Load Demo Settings JSON validates a versioned profile and stages only those Demo controls. Review the timeline summary, then select the normal Settings Save button to apply it.

Save and load data

Demo CSV preserves a relative booking timeline

Save Demo CSV exports the bookings and positive gaps currently shown. Load Demo CSV validates the sequential Booking/Gap rows, re-anchors booking 1 to the current clock, applies the saved Demo timing/policy settings, generates fresh safe PINs, and displays the scenario immediately.

Each Booking row also carries an UnpaidAmount. Use 0 for a valid paid or no-fee Demo booking. A positive value creates a red Invalid Booking card, displays that value as Amount Pending, rejects its PIN, and prevents it from joining a continuity chain. Its complete scheduled interval still participates in every availability-gap decision. Gap rows use N/A.

Refresh behavior

Refresh keeps the scenario shape but moves it to now

Refresh Bookings retains an imported CSV during the authenticated Admin session, moves its first booking to the new current local time plus Gap Before First Booking, recalculates every following booking and gap, and creates a new set of PINs. Ending Admin Mode clears the imported scenario.

Recommended import order

Settings first, timeline second

  1. Enter Admin ModeOpen Settings and select Demo Mode.
  2. Load Demo Settings JSONReview every staged timing and policy value, then select Save.
  3. Return to Admin Demo ModeSelect Load Demo CSV beside Refresh Bookings.
  4. Confirm cards and gapsCompare the displayed sequence with the planned scenario and note the newly generated PINs.
  5. Run the workflowObserve Early Access, countdown, Pre End, Booking End, extension, and buffer behavior in timeline order.
ChatGPT and Claude assistance

New skill packages turn a plain-language demo goal into validated files

The repository now includes a portable AccessControl Demo Scenarios skill designed for ChatGPT, Codex, Claude, Claude Code, and other skill-aware tools. Its package provides the AI with the JSON and CSV contracts, supported scenario catalog, example files, privacy rules, boundary behavior, and an automated validator.

An owner can describe an outcome such as “show gaps immediately below, equal to, and above both booking thresholds” or “demonstrate a short booking that does not receive wrap-up time and a longer booking that does.” The skill can review an exported settings profile, explain conflicts, preserve unrelated valid values, propose a coverage table, generate a coordinated settings/timeline pair, and validate both files before import.

ChatGPT can use the installed skill in a file-capable work session; Claude can use the complete packaged skill through its supported custom-skill or code workflow. Owners should attach only the secret-free Demo Settings export, request synthetic privacy-safe names, review the proposed settings, and import the validated files in the order above. The skill source and its Markdown are intentionally not published or downloadable from this website.

What the portable timeline does not simulate

Demo CSV is intentionally one sequential series of bookings and gaps. It does not represent simultaneous overlapping reservations, API outages, stale CourtReserve responses, court-filtering failures, or malformed live timestamps. Those remain controlled integration tests rather than portable owner demo data.

Booking Management Logic

How AccessControl protects the schedule and presents open time

CourtReserve remains the source of truth. AccessControl turns that schedule into a kiosk-safe customer experience: it validates the right code and payment state, remembers the booking that opened the session, protects later customers, highlights openings that may support a new booking, and never grants extra time until a fresh live reservation passes every extension rule.

Two messages before the booking ends

Before showing Pre End, AccessControl refreshes CourtReserve in the background, reconciles the current booking, and evaluates the full buffer policy: reservation-type opt-in, confirmed paid duration, a verified schedule, and enough room before the next booking. It selects the qualifying message only when every requirement passes; otherwise it selects the no-buffer message.

When the booking qualifies for buffer time — default:

You have [SETTING-MINUTES-BEFORE-BOOKING-END] remaining. Use the Extend Time button or make a new booking for simulator: [SETTING-SIM-NAME] with the 24/7 Golf Mobile app or online at https://24-7golf.com.

When the booking does not qualify for buffer time — default:

You have [SETTING-MINUTES-BEFORE-BOOKING-END] remaining. Extending your time is not available, please Keep Playing. The simulator will lock at your booking end time. Thank you for choosing 24/7 Golf.

Token source: [SETTING-MINUTES-BEFORE-BOOKING-END] reads the live Pre End Minutes setting, including in Demo Mode. It expands to 10 minutes by default or 1 minute for 1. It is available everywhere the general tokens are supported, even without a current booking, and is not a live countdown.

Buffer eligibility and permission to extend paid time are independent. Customize these messages for the policy combinations you enable; the Extend Time button follows its own rules. The generic extension-denial message never replaces the selected Pre End message. The existing inactivity timeout can still lock an unattended kiosk before booking end.

WPF Pre End settings showing two editable messages, minutes token, and independent preview choices

Actual Settings XAML rendered with current defaults. Preview either buffer outcome and the extension button independently without changing booking policy.

Source of truth

24/7 retrieval protects early-morning and overnight bookings

AccessControl requests the previous day through tomorrow using local simulator-clock boundaries without a timezone offset, then filters the result to the configured court. This keeps early-morning, exact-midnight, and overnight reservations available across a calendar change. The locked screen removes completed rows, begins with the first non-ended booking, and includes upcoming reservations inside the configured display window.

Session identity

Continuity uses verified member identity, not a display name

The exact reservation matched by the successful code remains the displayed owner for the session. Sequential, non-overlapping bookings on the same court are joined only when both have the same positive CourtReserve OrganizationMemberId and their gap is at most the shared continuity setting. Customer-facing surfaces still use first name plus last initial, but that privacy-safe label is never used to prove identity.

Customer access

Paid status, paid time, and Early Access are explicit

A PIN works only for a payment-valid reservation during paid time or the location's configurable Early Access window, and never before the previous reservation ends. PriceToPay of 0 is always valid. For a positive price, PaidAmount must meet or exceed it; a missing PaidAmount is treated as 0. The locked screen still distinguishes Active, Early Access, and Upcoming time states for valid reservations.

Duration-aware Booking End

Eligible sessions may receive wrap-up time

Live buffer time requires Enable Buffer for the reservation type, its inclusive minimum paid duration, and a safe refreshed schedule. New reservation types start with buffer permission off. A competing booking at or below Booking Gap after the final paid end denies buffer; a larger gap caps the configured buffer at the next start. Demo Mode retains its separate duration and buffer controls. Done is always available to finish and lock the kiosk. Keep Playing appears only while eligible time remains. Every timed notification locks the kiosk on timeout, including Pre End.

Automatic notification checks after unlock

Purchases made on a customer's phone or elsewhere in CourtReserve are checked before each timed notification. This is a refresh at the notification boundary, not an instant purchase alert. No additional Refresh Bookings click is required.

1. RefreshBefore Pre End, Booking End, or Post Booking, AccessControl requests the current CourtReserve schedule without blocking the customer interface. 2. ReconcileVerify the unlocked booking's identity, court, payment and timing. Join qualifying same-owner bookings within the inclusive Same Customer Gap maximum; transition gaps do not count as paid minutes. 3. Apply policyRecalculate the final paid end, paid duration, reservation-type permissions and next-booking restrictions. Failed or unverified data cannot grant extension or buffer time. 4. UpdateReset the countdown and notification flags when timing changes, close any obsolete notification, and show a window only if it is still due. Recheck the buffer deadline after refresh too.

Connected systems: the Windows kiosk requests CourtReserve through its reservation service; the complete same-court schedule feeds continuity, reservation-type and handoff rules before the countdown and notification are updated. Late responses after a lock or a different customer's unlock are discarded.

Same booking extended

A 12:00–13:00 booking is changed to end at 14:00 after unlock. At the next due notification check, the countdown moves to 14:00. The old warning is suppressed if the new end is outside the warning threshold.

New booking joins the session

With Same Customer Gap set to 10 minutes, a new paid booking for the same customer from 13:10–14:10 joins the 12:00–13:00 booking. The countdown targets 14:10; duration qualification uses 120 paid minutes, excluding the 10-minute transition.

New booking removes buffer time

With Booking Gap set to 10 minutes, a different customer's booking at 13:10 removes the buffer after a 13:00 paid end. The exact minimum gap is excluded. A gap above 10 minutes may allow an otherwise eligible buffer, ending no later than the next booking start.

Extend My Time: customer-to-confirmation flow

1. OpenThe booking notification pauses its inactivity countdown and opens an owned, glass-themed Extend My Time modal. 2. GuideA Markdown panel shows friendly booking steps and the owner captured from the original unlocked booking. 3. BookWebView2 loads the location's validated CourtReserve Custom Scheduler so the customer can log in, choose adjacent time, and pay. 4. CloseThe customer's Close action restores the notification and automatically starts the same check used by Refresh Bookings. 5. VerifyLive Mode evaluates the exact fresh CourtReserve snapshot; Demo Mode simulates the confirmed extension without changing live data. 6. ApplyOnly a confirmed result advances the enforced end and shows Time Extended. A failed check adds no time and offers a safe retry. 7. ReevaluateThe new confirmed end is compared with the original paid-session start, so an extension can move a short session above the owner's post-booking threshold.
Fail-closed matching

Closing the browser never grants time by itself

A live extension requires a fresh successful response, the same positive CourtReserve member ID, the same court, an exact boundary or another continuity-qualified booking, and no overlap, ambiguity, conflicting customer, stale response, or elapsed end. The current continuity chain must also meet both owner-configured extension rules.

Notification safety

Engagement and abandonment are handled differently

Continue and Refresh cancel inactivity relock. Extend My Time pauses it while CourtReserve is open; scheduler Close cancels it before the automatic API check. An unanswered notification relocks the kiosk while leaving simulator and other applications untouched behind it. Final Booking End or Post-Booking completion then shows the closing message; a pre-end inactivity lock does not.

Admin control

Six previews use current unsaved settings

Owners can preview Pre End, Booking End, Post Booking, Time Extended, Extend My Time, and Booking End Closing without waiting for a session. Booking End also accepts a preview duration: 30 minutes demonstrates Finish & Lock, while 31 minutes demonstrates Continue to Wrap Up. Widget markup is treated as untrusted text and only a supported CourtReserve HTTPS iframe source is allowed into the browser.

Independent extension policy

Both inclusive Extend My Time requirements must pass

AccessControl first joins every qualifying same-member booking. The remaining opening before the next reservation must be positive and equal to or greater than Booking Gap (Minutes), and the sum of confirmed paid booking minutes in the chain must be equal to or greater than Bookings Must Be Longer Than (Minutes). Unbooked transition gaps do not count toward duration. Both conditions must pass before the scheduler is offered.

Bookable time before the first reservation

When no booking is active and the time from now to the first future reservation is equal to or longer than the owner's positive Allow Booking Gap setting, the kiosk shows a compact violet availability row and Make A Booking action before that first reservation.

Short gap between reservations

Every positive opening between reservations is explained. When it is shorter than the configured threshold—or booking actions are disabled—the kiosk uses a restrained green line to show the duration without offering a booking button. If the two bookings belong to the same verified member and the opening is within Booking Continuity, the cards instead show that they form one session and no booking action is offered inside the chain.

Bookable gap between reservations

When an opening equals or exceeds the positive Allow Booking Gap threshold, the row changes to a violet/plum glass treatment and adds Make A Booking. Gaps under 60 minutes use minutes; longer gaps use concise wording such as 1 hour or 1.5 hours available.

Invalid booking with an unpaid balance

When PriceToPay is greater than 0 and PaidAmount is missing or lower, the booking stays in chronological order with red styling, an Invalid Booking pill, and Amount Pending equal to PriceToPay minus PaidAmount (using 0 when PaidAmount is null). Its PIN cannot unlock the kiosk, and it cannot start, continue, or validate a booking chain. The reservation still occupies its entire scheduled interval when AccessControl calculates the opening before it and the opening after it.

Runtime safeguards and operating modes

Live startupEvery process starts in Live Mode, even when a legacy settings file says Demo Mode was previously selected. Admin-only demoDemo Mode becomes selectable only after the Admin code is accepted, is never persisted as active, and turns off immediately when Admin mode ends. Separate test profileDemo early access, duration range, first-booking gap, booking count, gap rules, warning timing, and wrap-up behavior are configured independently from production settings. Booking-specific PINsEvery generated booking receives a different four-digit PIN that follows its own Early Access and Active window, closely matching the live CourtReserve experience. Useful demo scheduleThe first booking begins after the owner-selected opening, and the selected number of bookings repeats below, equal, back-to-back, and above-threshold gap scenarios as space permits. Countdown placementOwners may anchor the persistent session timer at Top Left, Top Center, Top Right, Bottom Left, Bottom Center, or Bottom Right on the kiosk monitor. Countdown diagnosticsAn optional expanded view adds labeled Booking Name, Start Time, End Time, and live Current Time rows beneath the normal remaining-time display. FreshnessA live extension snapshot older than two minutes, a failed request, or a late response for a different session cannot add time. ChainingTwo or more chronological same-court reservations with the same positive OrganizationMemberId join when every transition gap is equal to or less than Booking Continuity. A setting of 0 supports exact back-to-back handoffs, the original display owner remains stable, and linked cards identify one continuous session. Payment validationFor a positive PriceToPay, PaidAmount must meet or exceed the price. Null is treated as 0. An underpaid booking remains visible with Amount Pending but cannot unlock, join continuity, or validate an extension. PriceToPay of 0 is always valid. Invalid-booking gapsPayment validity does not erase reserved time. Invalid bookings remain boundary reservations for every before/between-booking gap and Make A Booking decision. Demo unpaid amountA positive UnpaidAmount in the five-column Demo CSV creates the same fail-closed invalid state and displays that exact amount due. A value of 0 creates a normal valid Demo reservation. Admin minimizeAfter Admin authentication, Minimize AccessControl temporarily hides the application for testing. The notification-area icon remains available with a clear Restore AccessControl command. Name privacyLive and Demo schedules, countdowns, notifications, extension instructions, and diagnostics all use first name plus last initial; full customer names are not stored in reservation display fields. Browser privacyCourtReserve owns login and payment content. AccessControl isolates the WebView2 profile and prevents arbitrary external navigation or pasted script execution.

What owners and customers can rely on now

Embedded scheduling, instructions, booking-owner placeholder replacement, automatic and manual reconciliation, Time Extended behavior, notification relock, Admin previews, and Admin-session Demo safeguards are implemented. Compact availability rows and their qualifying Make A Booking actions are also implemented. Continuity-qualified same-member chains now stay unlocked across their linked transitions, display a clear linked-session indicator, suppress Make A Booking within the chain, and drive the same pre-end, booking-end, and Extend My Time decisions in Live and Demo Mode. Invalid-payment bookings remain visible and continue to reserve their scheduled time for gap calculations, while their PINs, continuity membership, and extension matching all fail closed.

Debug 1.46.18 · Booking End Closing

A thank-you message above the locked kiosk

The session finishes, the simulator locks, and the customer sees a calm closing card. One green Close button dismisses it. The customer cannot reopen the ending session from this card.

Customer closing card

Markdown Thank You for Playing card with golf emojis, personal thanks, a TrackMan callout, Simulator locked status and green Close button

The card has no QR, extension, refresh, or Keep Playing action. Its footer says Message closes in because access is already locked.

Administrator configuration

Booking End Closing Settings showing the title, Markdown message and Preview Dialog button

Open Settings → Booking Notifications → Booking End Closing Notification. Edit Title and Message (Markdown), select Preview Dialog, then Save. Preview uses unsaved text without ending a booking.

October 1 source-rendered WPF previews using the shipping Markdown defaults and synthetic token values. These establish appearance; a live 1.46.18 simulator/TPS acceptance run was not performed during package verification.

Final Done or timeoutBooking End Done/timeout and final Post-Booking Done/timeout restore the kiosk cover before displaying the closing message. Eligible Keep PlayingCourtesy play continues under the existing policy. The closing card waits for final completion or revoked courtesy eligibility. Close or no responseThe card disappears and the kiosk remains locked. Live Mode defaults to two minutes; Demo Mode uses its separate notification timeout. Other lock pathsPre-end inactivity, manual/startup locks, notification recovery, and failed unlocks do not show a misleading booking-complete message. Text and tokensThe plain-text title and Markdown body support all six general tokens, using the ending booking context and privacy-safe display name. Long text scrolls while Close stays available.

The new default thank-you

Title: Thank You for Playing! ⛳

The message uses two golf emojis across the title and body. These exact defaults are shared by AccessControl and Deployment Manager:

**Thanks for spending part of your day with us, [BOOKING-OWNER]!** We hope you had a great round on **[SETTING-SIM-NAME]**.

> **Still signed in to Trackman?** No worries — Trackman Performance Studio automatically signs you out after **20 minutes without a shot or menu selection**.

**There is no need to unlock the simulator to sign out.** Thank you for choosing **[SETTING-LOCATION-NAME]** — we look forward to welcoming you back for your next round! 🏌️

Formatting and all six tokens

The message supports level 1–3 headings, **bold**, > callouts, ordered and bulleted lists, paragraph breaks, and a trailing backslash for a hard line break. The title stays plain text. HTML and unsupported syntax display literally.

Both fields support [BOOKING-OWNER], [BOOKING-START], [BOOKING-END], [SETTING-SIM-NAME], [SETTING-LOCATION-NAME], and [SETTING-MINUTES-BEFORE-BOOKING-END], without regard to letter case. Missing values show Not available. See Settings → Tokens for each value's meaning.

Names and other token values are inserted literally after Markdown is parsed. An asterisk or token-shaped phrase inside a name cannot add formatting or trigger another replacement. The existing WPF renderer supplies the formatted text locally, without adding a browser, package, or online service.

Already deployed simulators keep their saved wording until an owner edits it or selects the focused deployment replacement.

What the TPS wording means

The default message describes the pilot's reported TPS sign-out after 20 minutes without a shot or menu selection. AccessControl neither requests that sign-out nor checks the TrackMan account state. Owners should verify their installed simulator's behavior and adjust the copy; the default opening is facility-neutral.

How the components work together

  1. 1. Finish the sessionThe existing booking-end flow selects final completion and preserves the ending booking context.
  2. 2. Restore the kioskAccessControl invalidates access and covers TPS before presenting any closing content.
  3. 3. Show shield and cardThe existing window coordinator keeps the WPF card above the locked kiosk. Close or timeout releases the card, shield, and timer.
  4. 4. Continue reconciliationExisting CourtReserve refresh runs independently. TPS manages its own process and sign-in; no new API, service, or package is required.

Failure behavior: a closing-card display failure is logged while the lock continues. Application shutdown and session reset clean up the window and timer. Lifecycle diagnostics record display, dismissal, and presentation failure without recording configured customer copy.

Operator acceptance: after installing the verified Debug package, exercise final Done, timeout, courtesy completion, Close, long text, and a pre-end timeout. Confirm the kiosk remains locked and check the location's TPS inactivity behavior.

System architecture

What runs on each simulator computer

CourtReserve remains the booking source of truth. The simulator PC presents the access-control kiosk, controls the handoff to the owner-configured simulator software, and keeps simulator-vendor hardware and software responsibilities outside the access-control boundary, and runs WinSysMaint for operational maintenance. RemoteLock manages the physical door PIN behind CourtReserve; projector power automation uses the PJLink standard over TCP/IP from the simulator PC to the compatible projector.

For every component, data store, external service and connection traced to its source files, open the interactive 247SimManager Suite knowledge graph.

Booking source

CourtReserve cloud

Stores location, simulator court, reservation window, member details, and the RemoteLock/Brivo PIN returned as reservation pin-code data.

Door access

RemoteLock SaaS

Provisions the front-door PIN through CourtReserve. 247GolfAccessControl reuses that PIN without integrating with RemoteLock APIs.

Access gateway

247GolfAccessControl kiosk

Runs full screen without normal window controls. Displays the live or Admin-session demo schedule, validates booking codes, shows guidelines and notifications, hosts the CourtReserve scheduler, and hands off to simulator software. At final booking completion it restores the locked kiosk before showing the closing message; TPS continues beneath it and manages its own account state.

Golf experience

Simulator software

Full-screen golf simulator software shown after access is granted. It receives simulator device data and provides the customer session.

Projector automation

PJLink projector control

AccessControl turns PJLink-compatible projectors on and off from booking and unlock state using standard PJLink commands over the wired projector network.

Operations service

WinSysMaint

A .NET 8 Windows Worker Service that enforces simulator PC settings during scheduled maintenance and logs to Event Viewer.

Projector automation

Panasonic PT-VMZ51U7 setup and PJLink power automation

This is the location-owner reference for wiring, commissioning, and operating the Panasonic projector currently used at 24/7 Golf locations. AccessControl uses the cross-manufacturer PJLink standard over TCP/IP, but the menu paths and approved values below are intentionally specific to the Panasonic PT-VMZ51U7.

Simulator bay network wiring: router to five-port switch, PC USB Ethernet adapter and Panasonic projector to the switch, optional TV to the switch, and simulator device directly to the PC motherboard Ethernet port
Required bay topology. The five-port switch carries the facility network and PJLink path; simulator device remains on a separate direct Cat6 connection to the motherboard Ethernet adapter.

Five-port switch path

Connect the router or upstream facility switch to the bay switch uplink. Connect the PC through its USB Ethernet adapter, the Panasonic projector through its dedicated <LAN> port, and the optional TV to separate switch ports.

simulator device path

Run Cat6 directly from simulator device to the network adapter built into the PC motherboard. Never connect simulator device to the five-port switch or USB Ethernet adapter, and do not bridge the two PC adapters in Windows.

PJLink path

The PC reaches the projector through the USB Ethernet adapter and five-port switch on TCP 4352. Give the projector one stable IPv4 address and keep this management path off guest Wi-Fi. Leave Local Bind Address blank for this normal topology.

Panasonic commissioning

Configure the projector before enabling automation

  1. Connect the switch cable to the Panasonic port labeled <LAN>, not <DIGITAL LINK/LAN>.
  2. Set NETWORK → ETHERNET TYPE to LAN and configure a unique, stable IPv4 address.
  3. Set PROJECTOR SETUP → ECO MANAGEMENT → STANDBY MODE to NORMAL so TCP 4352 remains available in standby.
  4. Set POWER MANAGEMENT to OFF and HDMI CEC to OFF so Panasonic timers and HDMI devices do not compete with booking policy.
  5. Initialize the Panasonic administrator account, then configure a separate, unique PJLink password.
  6. In AccessControl Settings → PJLink, enter the endpoint, identity guards, password, timing, and commands. Run Test Connection, Turn Projector On, and Turn Projector Off before selecting Enable projector control.

Ludington SIM1 baseline

Approved development and test values

Projector
Panasonic PT-VMZ51U7
IPv4 / port
192.168.1.21:4352
Manufacturer
Panasonic
Model-family prefix
PT-VMZ51
Exact serial
GA5449466
On / Off / Status
%1POWR 1 / %1POWR 0 / %1POWR ?

These values identify the physical SIM1 projector. Every other bay needs its own IPv4 address, serial number, and commissioning record; never copy SIM1's device identity to another projector.

AccessControl Settings → PJLink

Every field has a defined commissioning purpose

The PJLink tab contains one enable switch, owner-facing booking and message timing, the physical endpoint and identity guards, bounded network timing, and three standard power commands. Expand the PJLink entry in the Settings guide above for the complete field-by-field reference.

SettingSIM1 defaultOwner guidance
Enable projector controlOff until commissioning passesThe single switch for startup gating, booking policy, Help recovery, and manual/runtime PJLink use.
Booking Gap To Turn Projector Off30 minutesEqual-or-longer idle time to the next Early Access boundary permits standby after an authoritative refresh.
Show Starting Message20 secondsTotal visible time for the immediate status/starting dialog; its timer begins before the first query.
Endpoint192.168.1.21:4352Stable projector address and standard PJLink TCP port. Other bays require unique addresses.
IdentityPanasonic / PT-VMZ51 / GA5449466Manufacturer, model-family, and exact serial must pass before power changes.
PJLink passwordSite secretSeparate from the Panasonic administrator password and protected by Windows DPAPI when saved.
Local Bind AddressBlankWindows uses the USB-adapter route. Set only for a support-diagnosed multi-NIC issue.
Connection / command timeout5 / 5 secondsBounded maximum for each TCP connection and command response.
Warmup / cooldown30 / 60 secondsBounded status-polling windows for hardware power transitions.
Retry attempts / status poll2 / 10 secondsBounded transient retries and normal status interval; commands never overlap.

Application startup gate

If PJLink is disabled, startup continues normally with no projector dialog or connection. If enabled, AccessControl shows the dialog before its first network query, checks status, and requests power when needed. Startup application Row 1 waits until the projector reports On and the dialog has closed. One shared 60-second maximum prevents projector trouble from blocking the rest of application startup.

Power-on decisions

AccessControl requests On at enabled application startup, when a paid booking reaches Early Access, after a valid customer or Admin Code unlock, when Help → Turn On Projector is selected, or when a successful or cached refresh confirms a currently eligible booking. Booking access never waits for warmup, and a PJLink failure cannot grant or deny kiosk access.

Power-off decisions

Automatic standby is considered only while the locked kiosk is showing and only after a successful authoritative CourtReserve refresh. No future bookings requests standby. Otherwise, the time to the next valid booking's Early Access boundary must be equal to or greater than Booking Gap To Turn Projector Off. A shorter gap preserves the current state.

Refresh and payment protection

The booking list refreshes whenever the locked kiosk is newly presented and on ordinary refresh intervals. Failed or unavailable booking data never means an empty schedule and never authorizes shutdown. Unpaid or invalid bookings occupy their scheduled interval but cannot request power, unlock the bay, or join customer continuity.

Help recovery override

Help → Turn On Projector is a customer recovery action. Closing Help does not immediately turn the projector back off. The override remains through later refreshes until a valid customer unlock is followed by the kiosk returning at session end. Entering Admin Mode does not clear it; turning Admin Mode off clears it, refreshes bookings, and resumes normal policy when PJLink is enabled.

Hardware and failure protection

AccessControl serializes intent, allows Warming and Cooling to stabilize before an opposite command, and lets the newest request supersede older intent. Authentication, identity, network, and device errors are logged without crashing the kiosk or changing booking access.

September 25 research · Deferred

Power savings between bookings: what is available now

Existing PJLink automation can place the projector in standby during a sufficiently long confirmed booking gap and restore power for Early Access. Debug 1.46.18 does not add Windows sleep, monitor dimming/standby, or automatic GPU power changes.

The research proposes qualifying optional monitor brightness control first, followed by standby only if the exact monitor, cable, GPU driver, and touch connection recover reliably. The computer must continue running TPS and communicating with the simulator device. Windows sleep or hibernation does not meet that operating requirement.

Before implementation: measure actual power savings, prove touch and scheduled recovery, preserve fresh booking coverage and Early Access, and wait until the closing message has finished. TPS rendering changes need vendor guidance and measurement. No savings amount or supported hardware list has been established.

AccessControl Projector Startup dialog showing Turning Projector On, Please wait, a glowing projector illustration, close button, and 20-second message
Actual AccessControl dialog in the Turning Projector On phase.

Immediate customer feedback

One dialog, two live phases

AccessControl first renders Checking Projector Status, Please wait... before it performs any PJLink network operation. If the projector is in Standby or Warming, the same dialog changes to Turning Projector On, Please wait.... The countdown starts with the first phase and does not reset.

The X closes only the presentation. It does not cancel the power request, projector warmup, booking access, Help override, or the application-startup validation gate.

Panasonic PT-VMZ51U7 commissioning guide

Configure the projector before enabling PJLink automation

The current AccessControl build includes authenticated identity checks, manual power tests, booking-aware automatic on/off logic, failed-refresh shutdown protection, the customer Help power-on override, and the two-phase Projector Startup dialog. Complete the documented projector setup and all three manual tests before enabling unattended control.

Download the PJLink setup guide Microsoft Word DOCX · 35 illustrated pages · approximately 892 KB

Application functionality

Access control before the golf session starts

247GolfAccessControl is the customer-facing gate in front of the owner-configured simulator software. The customer sees the 24/7 Golf branded kiosk, enters the booking access code, accepts the Sim Use Guidelines, and then continues into simulator software. From the locked kiosk, customers can also open Help, send Feedback, or make a new CourtReserve booking. Near booking end, the application can open CourtReserve so the customer can purchase adjacent time and have the resulting reservation checked automatically. Final completion restores the locked kiosk and shows the owner-configured closing message.

Booking schedule

Shows the first non-ended booking and upcoming bookings for the configured simulator bay after filtering CourtReserve results by court name. Customer labels consistently use first name plus last initial. Compact gap rows explain open time and offer Make A Booking only when the owner's threshold permits it.

Code validation

Compares the entered 4-digit code with the already-loaded active or early-access booking PIN. Manual refresh is available when a customer books on-site.

Guidelines checkpoint

Valid codes open a markdown-configurable Sim Use Guidelines modal with Small, Medium, or Large customer text. Long content wraps without horizontal scrolling, and the customer must reach the bottom before I ACCEPT is enabled when the document overflows.

Admin override

A local 4-digit admin code supports maintenance and owner review. Demo Mode becomes available only inside that Admin session and is never carried into the next process start. The Admin Mode and Live/Demo indicators can return or toggle the kiosk state directly. A dedicated settings tab keeps the owner-testing timeline separate from live CourtReserve timing and availability rules.

Customer assistance

Help displays owner-authored Markdown, Feedback opens the hosted location form, and Make A Booking combines instructions with the embedded CourtReserve scheduler. When PJLink is enabled, Help also provides a Turn On Projector action at the top of the dialog. All three dialogs use one shared timeout.

Beta recovery

When enabled, a separate shutdown code requests feedback before closing the kiosk and writes an error-level Windows Application Event Log entry for the location's monitoring workflow.

Extend My Time

A large, themed WebView2 modal combines location-defined Markdown instructions with the validated CourtReserve scheduler. Closing it automatically checks for a qualifying same-customer extension.

TrackMan Performance Studio home screen available after simulator unlock
TPS becomes visible only after the kiosk grants access. The normal Startup application workflow starts missing configured applications. A watchdog restart of AccessControl leaves a surviving TPS process running.

Booking validation flow

How a code unlocks a simulator

  1. Customer books online CourtReserve creates the reservation and provisions a RemoteLock-compatible PIN.
  2. Customer opens front door The same 4-digit PIN unlocks the entrance through RemoteLock / keyincloud.remotelock.com.
  3. Kiosk polls reservations The app calls CourtReserve /api/v1/reservationreport/listactive for the previous day through tomorrow, using simulator-local boundaries that preserve early-morning, midnight, and overnight reservations.
  4. Customer enters code The kiosk validates the entered code against the active or early-access simulator reservation PIN.
  5. Valid code shows guidelines The customer reviews rules for equipment, timing, cleanup, and simulator use.
  6. simulator software takes over After acceptance, the kiosk hides and simulator software is launched or shown.

Integration boundary

CourtReserve exposes the booking and PIN data AccessControl needs

The current live integration uses CourtReserve's active reservation report, narrows the result set to the configured simulator court, selects the appropriate booking owner from the players list, and uses the reservation or player PIN for kiosk unlock validation.

Primary source

247GolfAccessControl validates against the PIN for an active or early-access booking on the configured simulator court.

No direct door API

RemoteLock remains behind CourtReserve. The kiosk does not need credentials or calls to keyincloud.remotelock.com.

Current scaffold

Solution
247GolfSimManager.sln
WPF app
src/247GolfAccessControl
Config example
configuration/SimulatorConfig.example.json

The current app build includes a vendor-neutral kiosk and ordered simulator-process startup layer, monitor shields, live CourtReserve retrieval, customer Help and Feedback, new-booking and extension schedulers, booking-gap opportunities, automatic and manual extension reconciliation, owned dialogs that remain above the kiosk until action or timeout, notification relock, beta shutdown monitoring, complete Admin previews, Admin-session Demo Mode, and owner-facing Debug tools for API troubleshooting.

CourtReserve location licensing

Every simulator proves its licensed CourtReserve location before startup

AccessControl authenticates with the configured CourtReserve API on every launch and calls /api/v1/websitesettings/locations. At least one returned location ID must be present in the protected entitlement catalog. This check finishes before the kiosk, projector preparation, simulator software, Startup applications, booking access, or Demo Mode can begin.

API requirement

WebSite Settings read access

The installed API Key ID and Secret must be valid and authorized to read CourtReserve website settings. The package deliberately ships with blank credentials so each deployment supplies its own protected values.

Protected catalog

No plaintext approved-location list

Approved IDs are held in an authenticated encrypted resource compiled into AccessControl Core. The application performs membership checks without offering an owner editor, deployment setting, or enumerable license list.

Fail-closed boundary

No offline or Demo bypass

Missing credentials, network or permission failures, malformed responses, protected-catalog failures, and unlicensed locations all stop AccessControl before customer or simulator applications are exposed.

  1. Load protected settings AccessControl decrypts the API Secret under the kiosk Windows account and normalizes the current settings schema.
  2. Call CourtReserve The locations endpoint returns the authenticated location ID and Name records for the configured credentials.
  3. Check entitlement Each returned ID is compared with the encrypted membership-only catalog; approved IDs that were not returned are never exposed.
  4. Show startup proof After success, General Settings shows Licensed CourtReserve Location - ID: ..., Name: ... for the current run.
  5. Log API failure Verification failure writes Windows Application Error event 24702 and AccessControl exits immediately.
  6. Notify unlicensed location Event 24703 records the returned ID and Name; an always-on-top support notification remains visible until it is closed, then AccessControl exits.

Licensing and support

To request licensing for another CourtReserve location, email ludington@24-7golf.com. The unlicensed-location notification directs onsite users to info@24-7Golf.com for assistance. General Settings also includes a mock notification preview that performs no logging, configuration change, or shutdown.

WinSysMaint service

Background maintenance for simulator PCs

WinSysMaint is not part of the customer screen. It runs as LocalSystem, starts automatically with delayed start, reads C:\ProgramData\WinSysMaint\service.json, and writes operational events to the Windows Application Event Log. Owners administer its deployed settings from a dedicated AccessControl Admin Settings tab without exposing service control to kiosk customers.

Maintenance window

On configured days and time, the service enforces system settings, then follows one selected action: Settings enforcement only leaves applications running; Restart System performs the controlled Windows reboot.

Settings enforcement

Re-applies Windows Update, the selected firewall, App & browser control, and Defender-exclusion policies, W32Time, NTP, time zone, GPU preferences, the enabled taskbar baseline, and the selected simulator device wired-adapter properties if they drift.

TrackMan log monitoring

Independent scans summarize recognized failures, resource warnings, persistent connection/readiness problems, recoveries, and content issues. Owners choose whether to scan and how often. See monitoring settings and event IDs.

Connectivity alerting

Optional ping checks against www.24-7golf.com log outage and restoration events when troubleshooting is enabled.

Owner administration

The WinSysMaint Admin Settings tab validates every service option, saves complete valid changes directly to the deployed JSON, repairs compatible settings by property, and offers administrator-approved Validate System Settings, Apply Required Settings, Restart WinSysMaint, and Test Maintenance actions.

AccessControl watchdog

Every five minutes, WinSysMaint checks the registered AccessControl process in the active kiosk logon. Unexpected absence can trigger recovery; intentional administrator and Customer Shutdown exits remain closed. A surviving TPS process is left running.

Locked-kiosk service recovery

AccessControl checks WinSysMaint whenever the locked kiosk is presented. A stopped service is logged and started with narrowly scoped query/start rights; success or failure is recorded for remote support.

Unexpected-exit recovery that respects an intentional close

Recovery path: WinSysMaint (LocalSystem) → independent five-minute check → current interactive logon and installed EXE validation → shared operation/state locks → durable restart intent and process inspection → launch AccessControl as the kiosk user. AccessControl then performs its normal licensing, projector, and ordered application startup and presents a locked kiosk.

An administrator close in Admin Mode or the final Customer Shutdown exit flushes an intentional-stop record before closing. Entering Admin Mode, canceling the shutdown warning, or merely accepting it before a later crash does not suppress recovery. Manual launch of the next primary instance re-arms the watchdog; duplicate launches cannot change the primary instance's intent.

Deployment and full-system restart share the operation lock with recovery. Retry timing persists through a service restart; old Windows-logon state cannot launch into a new sign-in. The watchdog does not bootstrap an app that has never registered in the current logon and does not detect a live but frozen process. Keep normal Windows logon Auto Start configured where required.

Customer effect: detection normally takes up to five minutes when the service and session are healthy; startup adds its normal delays. Customers enter their booking code again. The journal stores process/logon identity and restart intent, without customer PINs, names, booking payloads, or API secrets. TPS alone exiting does not trigger this watchdog.

Maintenance: Settings enforcement only applies the shared Windows configuration pipeline and leaves applications running. Restart System applies settings, records a watchdog hold, closes visible applications with the configured timeout, waits five seconds, and requests Windows restart. Customer Help reboot uses this same pipeline.

Removed September 13: TPS QR reset settings, booking-gap scheduling, reset command/pipe, warning and approval workflow, readiness signaling, reset-state storage, and events 1040–1047 / 1080–1082. TrackMan startup, GPU/Defender policy, customer booking QR images, and restricted-application recovery remain.

Incident-review findings: correlate Windows and TrackMan logs with application lifecycle records and booking-end timing. A vendor ERROR label or a Windows report timestamp alone does not prove a crash or identify who closed an application. Selected-pattern TrackMan monitoring, introduced in Debug 1.46.9, remains available alongside the broader manual reboot diagnostic report. It does not determine every crash cause, measure GPU health, or prove that AccessControl is leak-free.

New in Debug 1.46.9

TrackMan log monitoring: settings, signals, and limits

Owner setup: in Deployment Manager, review the TrackMan Log Monitoring card below the WinSysMaint installation choice. After installation, use Admin Settings → WinSysMaint in AccessControl. Monitor TrackMan related log files defaults on; Scan Frequency (minutes) defaults to 5 and accepts 1–1,440. Restart WinSysMaint after saving changes. Turning this off leaves the other service features independent.

End-to-end flow: Deployment Manager or AccessControl settings → C:\ProgramData\WinSysMaint\service.json → independent service scanner → selected local TrackMan logs → checkpoint and incident classification → Windows Application log, source WinSysMaint → separately configured remote monitoring. No CourtReserve call or TrackMan API connection is required.

Selected sources: TPS, Remote, device, Golf/Challenge/DrivingRange/Practice and supported game logs; iO service/state/bootstrapper logs; VideoManagement; fusion/radar tracking logs; and vision cleanup disk-space logs. Discovery uses known directories and filename patterns under C:\ProgramData\TrackMan. Optional hardware folders may be absent. API payloads, player databases, and shot recordings are outside the scan.

Quiet startup and recovery: first activation establishes positions at the ends of existing files. Subsequent scans read new complete lines and resume saved positions after restart, including supported rotation and truncation. Connection/readiness warnings wait through a five-minute grace period; repeated incident reports use a 30-minute cooldown. Expected shutdown and routine vendor ERROR/WARN noise are filtered by recognized patterns.

1120 · InformationMonitoring started; includes simulator name and scan frequency. 1121 · ErrorRecognized fatal/unhandled failure or nonzero game/bootstrapper exit. 1122 · WarningAllocation failure or cleanup-reported disk space below its requested target. This does not identify which application consumed memory. 1123 · WarningConnection or iO readiness remained unavailable beyond the five-minute grace period. 1124 · InformationA previously reported connection, readiness, or disk-space incident recovered. 1125 · WarningMissing content or failed asset load; alone this does not establish a crash. 1126 · InformationTPS startup or an orderly exit. 1127 · WarningCoverage, read, checkpoint, configuration, unread-backlog, or oversized-line problem.

Resource budget: scans never overlap. At most 128 eligible files are selected, with 1 MiB of log data per file and 8 MiB total per scan, plus small identity checks. Each selected directory is limited to 2,048 entries; diagnostic lines are limited to 8 KiB and recognized signals to 2,048 per scan. Up to 256 checkpoints are retained, with unseen identities removed after seven days. Backlogs continue on later scans; vendor deletion can remove unread data.

Privacy and persistence: C:\ProgramData\WinSysMaint\TrackManMonitor\checkpoints.json stores positions and classified state. Event summaries include a source filename and time, without raw log lines, player identifiers, cloud URLs, or exception payloads. A stop or failure between publication and checkpoint saving can repeat a batch.

Validation and next step: isolated checks on Simulator #1 found 118 eligible files. Warm unchanged-log scans took about 6 ms; bounded historical replay took about 52–110 ms for 8 MiB. These were read-only component checks, with no live shots or real event publication. After installing both matching components, restart WinSysMaint and check for event 1120; use the safe sample writer to test remote filters. Live-play CPU, memory, display/GPU, and blank-screen investigation remain separate.

AccessControl administrator settings

AccessControl TrackMan Log Monitoring card with monitoring enabled and a five-minute scan frequency

Production XAML card rendered in isolation. Valid edits save automatically; restart WinSysMaint to apply them.

Deployment Manager settings

Deployment Manager TrackMan Log Monitoring card with enabled checkbox and scan frequency

Production XAML card rendered in isolation. Both choices are included in preflight and guided settings review. These previews do not show live installed settings.

Access Control Watchdog

WPF Access Control Watchdog settings with enabled toggle and installed paths

Source-rendered settings preview; enable/disable recovery independently from maintenance.

Maintenance actions

WPF maintenance settings with Settings enforcement only and Restart System options

Source-rendered settings preview of the two supported maintenance choices.

Maintenance configuration

Maintenance and service settings supported by WinSysMaint

These settings are stored in C:\ProgramData\WinSysMaint\service.json and are managed from AccessControl Admin Settings > WinSysMaint. The package defaults provide a safe starting point; Deployment Manager writes machine-specific paths, simulator identity, and the selected simulator device adapter during installation or repair.

Swipe or scroll the table sideways to compare all four columns.

Maintenance setting Package default Accepted owner configuration What WinSysMaint does
Simulator / Court Name Simulator Bay A nonblank owner-facing bay name Identifies the affected simulator in maintenance messages and Windows Application events. Deployment Manager normally writes the selected Simulator Name.
Enable Scheduled Maintenance Enabled Enabled or Disabled When enabled, the service evaluates the selected days and local maintenance-window time. Disabling it leaves WinSysMaint running and preserves the saved schedule, manual validation, manual Apply, and administrator test capabilities.
Configure the required Windows taskbar settings Enabled Enabled or Disabled Controls the complete fixed taskbar baseline during deployment, manual Apply/Validate, and scheduled maintenance. Disable it to skip all ten taskbar requirements; the individual taskbar values are intentionally not separate owner settings.
Maintenance ActionSettings enforcement onlySettings enforcement only or Restart SystemValidate and correct managed settings, then either finish with applications running or perform the controlled full Windows restart.
Maintenance Days Monday through Sunday One or more full English day names Calculates the next eligible local maintenance window. AccessControl requires at least one selected day; the service logs invalid entries and falls back to every day if no valid day remains.
Maintenance Window Time 1:00 AM 12-hour local time in h:mm AM/PM format Starts no more than one maintenance action for the eligible local-time window. An invalid service-file value is logged and temporarily falls back to 1:00 AM until the administrator corrects it.
Enable Access Control WatchdogEnabledEnabled or Disabled; fixed five-minute intervalRecovers an unexpectedly absent registered AccessControl process. Deliberate administrator and final Customer Shutdown exits stay closed until the next primary launch.
Monitor TrackMan related log filesEnabledEnabled or DisabledIndependent selected-log observer. First activation tails existing files; subsequent scans publish recognized incidents as events 1120–1127. Save and restart WinSysMaint to apply changes.
Scan Frequency (minutes)5 minutesWhole number 1–1,440Delay after each completed TrackMan scan. Scans never overlap; invalid values are rejected in both settings editors.
Connectivity Monitoring Disabled Enabled or Disabled Optionally runs internet reachability checks independently of scheduled maintenance and records outage/restoration events 1001 and 1002.
Connectivity Check Interval 30 seconds 5 seconds or greater Sets how often the configured host is checked while connectivity monitoring is enabled.
Connectivity Check Host www.24-7golf.com A hostname or IP address without spaces Provides the ping target used only for connectivity status logging; it does not replace CourtReserve or simulator application health checks.
AccessControl ExecutableC:\Program Files\247Golf\SimManager\AccessControl\247GolfAccessControl.exeAbsolute .exe pathMust match the executable registered by the primary AccessControl instance. The watchdog launches it only after verifying absence and restart permission for the current interactive Windows logon.
AccessControl Settings FileC:\ProgramData\247Golf\SimManager\AccessControl\SimulatorConfig.jsonAbsolute .json pathLocates the shared Watchdog journal and coordination locks beside the installed settings file. Must match the application settings location.
Application Close Timeout 30 seconds 5 seconds or greater Sets the graceful-close period for each visible application before WinSysMaint force-terminates it during system restart maintenance.

Computer configuration compliance

Computer Configuration Settings WinSysMaint validates and updates

The read-only Validate System Settings action displays each row's Current Value, Required/New Value, and Result without changing Windows. Apply Required Settings uses the production correction pipeline and then runs the complete read-only validation again. Every scheduled maintenance action uses that same correction pipeline before its selected terminal action and logs each correction. Deployment Manager uses this exact engine as well: Install and Repair apply and validate it, while Verify performs validation only. An unsupported or failed individual value is never reported as compliant, but it is nonblocking: WinSysMaint records the failure in the Windows Application log, continues every remaining policy area, and then continues the selected maintenance action.

Swipe or scroll the table sideways to compare all four columns.

Category Validation row Required / new value Update performed when needed
Windows Time W32Time policy overrides Policy Parameters, Config, and NtpClient keys are not present Removes policy-level registry keys that would override the service-level NTP configuration.
Windows Time Time zone The owner-selected Windows time-zone ID; package default Eastern Standard Time Uses Windows tzutil to set the selected fixed simulator time zone.
Windows Time Automatic time-zone detection Service start=4, state=Stopped, policy=1 Disables and stops tzautoupdate and sets DisableAutoTimeZoneUpdate=1.
Windows Time Windows Time service startup Automatic Sets the W32Time startup registry value to Automatic.
Windows Time Windows Time service state Running Starts or restarts W32Time when its state or related NTP values require correction.
Windows Time NTP server Owner-selected host plus ,0x9; package default time.nist.gov,0x9 Writes the manual peer, applies the W32Time configuration, and requests an initial forced resynchronization.
Windows Time NTP synchronization mode Type=NTP Replaces a missing or conflicting synchronization type with the required NTP mode.
Windows Time NTP client provider Enabled=1; InputProvider=1 Enables the Windows NTP client provider and its input-provider role.
Windows Firewall Private profile Runtime=Disabled; policy=Disabled Turns the profile off immediately and writes both persistent service and policy registry state.
Windows Firewall Public profile Runtime=Disabled; policy=Disabled Turns the profile off immediately and writes both persistent service and policy registry state.
Windows Firewall Domain profile Runtime=Disabled; policy=Disabled Turns the profile off immediately and writes both persistent service and policy registry state when the owner-controlled firewall switch is enabled.
App & browser control Check apps and files Policy=Disabled; Windows=Off Disables Windows application-reputation SmartScreen when the owner-controlled App & browser control switch is enabled.
App & browser control App Install Control Enabled policy=Disabled; mode=Anywhere Allows applications from anywhere without Store-only or recommendation enforcement.
App & browser control Microsoft Edge SmartScreen SmartScreen=Disabled; PUA=Disabled Disables Microsoft Edge SmartScreen and its SmartScreen-backed potentially unwanted download protection.
App & browser control Potentially unwanted apps Policy=0; Defender preference=0 or default Disables Defender PUA blocking through persistent policy and the supported Defender preference.
App & browser control Enhanced Phishing Protection All five policies disabled Disables the Windows 11 reputation-based phishing protection policies independently of Smart App Control.
App & browser control SmartScreen for Microsoft Store apps Disabled for every loaded real-user profile Updates loaded kiosk and administrator profiles while excluding Windows system and service-account hives.
Smart App Control Verified and Reputable policy state Off (VerifiedAndReputablePolicyState=0) when explicitly selected On Windows 11 version 22H2 or newer, writes the Code Integrity policy state, refreshes policy with CiTool.exe -r, and reads the value back. The previous value is restored if refresh fails.
Windows Defender One validation row for every configured exclusion folder Every configured folder is present; new-computer defaults cover the two TrackMan folders and the 247Golf, SimManager, and AccessControl Program Files folders Adds only missing trusted folders through the supported Defender exclusion command when its owner-controlled switch is enabled. Microsoft Defender remains enabled.
Graphics One validation row for every configured simulator executable GpuPreference=2; in every loaded real-user profile Writes the Windows High Performance GPU preference for each installed executable and each loaded non-system user profile. Missing executables remain visible as nonblocking, non-applicable mismatches.
Taskbar Search Hide Hides the taskbar Search control through Windows policy and each loaded real-user profile.
Taskbar Pinned applications No applications pinned to the taskbar Uses Windows taskbar policy to remove the visible pinned-program list and prevent new pins without editing Explorer's undocumented binary favorites database.
Taskbar Task view Off Hides Task View through policy and the matching preference for every loaded real-user profile.
Taskbar Widgets Off Disables the Windows Widgets entry point through policy and the matching per-user taskbar preference.
Taskbar Resume Off Turns off the Windows cross-device and OneDrive Resume taskbar experiences for every loaded real-user profile.
Taskbar Other system tray icons > Hidden icon menu On Keeps the hidden-icon menu available while allowing Windows to collect background notification icons there.
Taskbar behavior Taskbar alignment Center Centers the Start button and taskbar controls for every loaded real-user profile.
Taskbar behavior Automatically hide the taskbar Checked / selected Enables Windows auto-hide while preserving all unrelated taskbar layout data.
Taskbar behavior Combine taskbar buttons and hide labels Always Combines buttons and hides labels on the primary and multi-monitor taskbars.
Taskbar behavior Show smaller taskbar buttons Always Applies the current Windows policy for always using the smaller taskbar-button presentation.
Simulator Device Adapter Auto Disable Gigabit Disabled Updates only the selected physical wired adapter's supported driver property. If the driver does not expose it, WinSysMaint logs the unsupported value and continues.
Simulator Device Adapter Energy-Efficient Ethernet Disabled Updates only the selected physical wired adapter's supported driver property. If the driver does not expose it, WinSysMaint logs the unsupported value and continues.
Simulator Device Adapter Power Saving Mode Disabled Updates only the selected physical wired adapter's supported driver property. If the driver does not expose it, WinSysMaint logs the unsupported value and continues.
Simulator Device Adapter Speed & Duplex 1.0 Gbps Full Duplex Applies the driver-supported one-gigabit full-duplex value. If any adapter value changes, WinSysMaint restarts that adapter once and reads all four properties back. Unsupported values or failed read-back are logged without stopping later settings.
File Explorer Hidden files and folders Show hidden files, folders, and drives (Hidden=1) Shows hidden content in every loaded real-user profile so onsite support can reach normally concealed configuration and diagnostic files.
File Explorer Display full path in the title bar Checked (FullPath=1) Shows the full folder location in Explorer title bars for clearer support evidence.
File Explorer Hide empty drives Unchecked (HideDrivesWithNoMedia=0) Keeps empty removable-media drives visible instead of making the drive list change unexpectedly.
File Explorer Hide extensions for known file types Unchecked (HideFileExt=0) Shows every filename extension so executable, JSON, script, and log file types are unambiguous.
File Explorer Hide folder merge conflicts Unchecked (HideMergeConflicts=0) Keeps folder-merge conflict prompts visible during support and file-copy work.
File Explorer Show drive letters Checked (ShowDriveLettersFirst=0) Shows Windows drive letters with drive names. Windows uses the documented value 0 for this checked Folder Options state.
File Explorer Show encrypted or compressed NTFS files in color Checked (ShowCompColor=1) Uses Explorer color cues to make compressed or encrypted NTFS content visible to support staff.
File Explorer Use Sharing Wizard (Recommended) Unchecked (SharingWizardOn=0) Uses the advanced sharing workflow so administrators can see and control the actual share and permission configuration.
Windows Update Automatic updates NoAutoUpdate=1; AUOptions=1 Writes the Windows Update policy values that prevent unattended automatic-update installation.
Windows Update Preview builds Disabled (AllowBuildPreview=0) Disables preview-build enrollment in Windows Update policy.
Windows Update Get the latest updates SetAllowOptionalContent=0; IsContinuousInnovationOptedIn=0 Disables optional-update policy and the Windows 11 Get the latest updates as soon as they're available opt-in.
Windows Update Other Microsoft products Policy=0; UX=0; Microsoft Update service registered=False Turns off both policy and Windows Settings state for Receive updates for other Microsoft products, then unregisters a Microsoft Update service enrollment left from prior PC use.
Taskbar profile scope The taskbar layout is a per-user Windows experience. SimManager applies the owner-approved policy and each required user preference to every loaded real-user registry hive while excluding Windows system and service profiles. A sign-out/sign-in or Explorer restart may be needed before an already-running taskbar redraws every changed control.
File Explorer profile scope Folder Options are per-user Windows preferences. SimManager writes and validates every loaded real-user registry hive while deliberately excluding .DEFAULT, LocalSystem, LocalService, NetworkService, and _Classes hives. Reopen File Explorer—or sign out and back in—after deployment if an already-open Explorer window has not refreshed its presentation.
How failures are handled WinSysMaint never reports an unreadable, missing, or unsupported value as compliant. A missing executable, unloaded user profile, missing adapter, unsupported driver property, permission problem, or failed read-back remains highlighted for the administrator and is written to the Windows Application log for support. That individual condition does not block deployment, stop the remaining settings, or prevent the selected nightly or administrator-requested maintenance action. Required package, service, and configuration infrastructure failures remain blocking.

Install dependency checklist

WindowsWindows 10/11 64-bit x64 simulator PC. AdminRun the installer with local Administrator approval so it can create the service, write Program Files/ProgramData, and register Event Log source WinSysMaint. RuntimeNo separate .NET runtime, .NET SDK, Visual Studio, NuGet restore, or QR-code library is required on the simulator PC. WinSysMaint.exe is self-contained. PackageDownload the complete, versioned one-click Deployment Manager EXE. Its bootstrap and payload manifest verify the embedded archive and every packaged file before launch. Debug pilot packages are intentionally unsigned; the production Release pipeline requires Microsoft Artifact Signing Public Trust signatures and trusted timestamps on every first-party executable, library, and the final outer EXE before handoff. AccountThe service should run as LocalSystem. No custom service account or manual service-account permission change is needed. AccessControl watchdogRequires updated AccessControl and WinSysMaint, matching installed executable/settings paths, and a primary AccessControl run in the current logged-in kiosk session. Task Scheduler supplies logon startup; the watchdog handles later unexpected exits.

Event Log reference

1000Service started 1001No internet connectivity 1002Connectivity restored 1010-1018System settings enforcement, including taskbar, Windows Update, and File Explorer corrections 1019Unexpected individual setting operation failed, was logged and skipped, and remaining settings and maintenance continued 1020-1024Maintenance start, process handling, reboot, and settings-only completion; customer-requested event 1020 includes reason/comments 1025Error: customer restart-command boundary with submitted reason/comments; genuine retained events populate Debug Customer Reboots for 30 days 1050AccessControl or WinSysMaint settings compatibility repair 1060-1064Administrator Test Maintenance request, execution, result, failure, and confirmation cancellation 1070-1072Locked-kiosk service stopped, recovery started, and recovery failed 1090-1092simulator device adapter settings verified, corrected and re-verified, or failed 1100-1104Manual system-settings validation/apply started, completed, found mismatches, or failed 1110-1113Watchdog enabled, unexpected-exit restart requested, inspection/state/launch failure, and operation-lock deferral 1120-1127TrackMan monitoring startup, application failure, resource/device/content warnings, recovery, lifecycle, and monitoring coverage problems 24710-24711AccessControl lifecycle evidence (including watchdog armed/intentional stop) and failure diagnostics 24701Customer explicitly accepted the protected shutdown warning 24702CourtReserve location API or license verification failed before startup 24703CourtReserve returned an unlicensed location ID and Name

General Settings can write 55 clearly labeled monitoring samples without performing the real operational action. For broad TeamViewer coverage, monitor the Application log with six exact-source conditions: each of 247GolfAccessControl and WinSysMaint at Error, Warning, and Information, with Event IDs left blank. This includes general WinSysMaint diagnostics under ID 0. Verify remote alert delivery separately.

Owner and vendor support reference

Managed System Settings

This is the complete support-facing record of the Windows settings managed by 24/7 Golf SimManager during deployment, manual owner validation, and scheduled WinSysMaint maintenance. It is intended to be shared with a simulator vendor, a PC vendor, or remote-support staff when a simulator, network adapter, Windows clock, security policy, taskbar, or graphics preference needs to be investigated.

Deployment

Complete configuration is the default

Deployment Manager verifies package and machine readiness, requires a new-PC WinSysMaint settings review, and selects complete system configuration by default. Install and Repair correct only drift, then validate the result. The operator must make an explicit choice to install application binaries without applying the baseline.

Ongoing maintenance

One canonical enforcement pipeline

Every scheduled maintenance action begins with the same WinSysMaint settings enforcement. Settings enforcement only then leaves applications running; Restart System proceeds after the settings phase even when an individual unsupported value was logged and skipped.

Owner proof

Validate without changing Windows

AccessControl Admin Settings can show every current and required value. Apply Required Settings runs the production enforcer, validates again, and highlights anything that still differs or cannot be changed safely.

Important support boundary

These are Windows workstation settings, not simulator-vendor firmware settings

SimManager does not change simulator-device firmware, vendor application preferences, facility router configuration, or projector/PJLink configuration in this policy. It manages the Windows PC and the one physical Ethernet adapter selected for the direct simulator device connection. Windows connection names and adapter models may differ by PC vendor; the saved identity is the interface GUID.

Required Windows end state

What Deployment Manager and WinSysMaint verify

Deployment Manager and WinSysMaint share one canonical enforcer and validator. Install and Repair apply the complete baseline and then read it back; Verify is read-only. AccessControl administrator actions and scheduled maintenance use the same requirements, so no separate deployment script can drift from the service's policy.

Category Required state Deployment Manager WinSysMaint Support intent
W32Time policy overrides Policy-level W32Time Parameters, Config, and NtpClient keys absent Removed when simulator Windows policy is selected Checked and removed during enforcement Prevents an old Group Policy registry key from silently overriding the service-level NTP configuration.
Windows time zone Configured Windows time-zone ID; package default Eastern Standard Time Initial simulator policy Configurable in Admin Settings and enforced Keeps the PC wall clock aligned with CourtReserve booking start and end values for the simulator location.
Automatic time-zone detection tzautoupdate disabled and stopped; DisableAutoTimeZoneUpdate=1 Disabled during initial simulator policy Checked and corrected Stops Windows location detection from moving a fixed simulator into another time zone.
Windows Time service W32Time startup Automatic and service Running Configured and started Checked, started, and updated when required Ensures the durable clock-synchronization service is available after every reboot.
NTP synchronization Configured server plus ,0x9; Type=NTP; NtpClient Enabled=1 and InputProvider=1 Package baseline uses time.nist.gov NTP host is owner-configurable and enforced Maintains accurate booking boundaries. A temporary external-server failure is logged and Windows retries later.
Windows Firewall Domain, Private, and Public profiles Disabled in effective runtime and persistent policy Default-enabled owner choice during Install/Repair; read-only during Verify Checked and disabled when drift is found while its service switch is enabled This is an intentional, individually configurable simulator policy. Clearing its switch leaves the firewall unchanged.
Windows App & browser control Windows and Microsoft Edge SmartScreen, App Install Control, PUA blocking, Microsoft Store app web-content evaluation, and Enhanced Phishing Protection Disabled Default-enabled owner choice during Install/Repair; read-only during Verify Six validation results are checked and corrected when drift is found while its service switch is enabled Reduces reputation-based blocking of approved simulator software. Smart App Control remains independently configurable.
Windows Smart App Control Off when explicitly selected on Windows 11 version 22H2 or newer Independent default-off owner choice during Install/Repair; read-only during Verify Checks one validation result and corrects drift through Code Integrity policy while its service switch is enabled Turning Smart App Control off can require a Windows reset or reinstallation before Windows permits it to be enabled again. Unsupported or failed operations remain visible as nonblocking warnings.
Microsoft Defender exclusions Every configured trusted folder present; new-computer defaults cover TrackMan ProgramData, TrackMan Performance Studio, 247Golf, SimManager, and AccessControl Default-enabled owner choice with an editable one-path-per-line list during Install/Repair; read-only during Verify Adds missing entries while its service switch is enabled Reduces antivirus interference with trusted simulator application and data folders. Clearing the switch leaves exclusions unchanged, and Microsoft Defender remains enabled.
High-performance GPU preferences GpuPreference=2; for every configured executable and every loaded real-user profile Applies configured simulator application paths during workstation setup Checks every loaded non-system user profile and corrects drift Requests the Windows High Performance GPU for the configured applications. The package defaults cover TPS and current TrackMan Virtual Golf paths; a missing executable is reported as a nonblocking warning rather than invented.
Windows taskbar Search hidden; no pinned applications; Task View, Widgets, and Resume off; hidden-icon menu on; centered and automatically hidden; buttons always combined without labels; smaller buttons always used Enabled by default for Install/Repair, available as one deployment choice, and read-only during Verify Ten individual validation rows are applied and checked for every loaded real-user profile when the owner-controlled taskbar switch is enabled Creates one predictable kiosk-ready desktop while letting an owner disable the complete taskbar policy area. An individual taskbar failure is logged as a warning and does not stop remaining settings or maintenance.
Windows Update Automatic updates and preview builds disabled; optional/latest updates disabled; other Microsoft product updates disabled and the Microsoft Update service unregistered Applied and validated during Install/Repair; read-only during Verify Checked and enforced during administrator Apply and every scheduled maintenance pass Prevents an unattended Windows or Microsoft-product change from interrupting or materially changing a simulator PC. Owners can still perform a deliberate, attended update when they choose.
File Explorer Folder Options Hidden items, full paths, drive letters, filename extensions, and NTFS color cues visible; empty-drive hiding, merge-conflict hiding, and Sharing Wizard disabled Applied and validated for every loaded real-user profile during Install/Repair; read-only during Verify Eight individual validation rows are checked and corrected for every loaded real-user profile Gives onsite and remote support an unambiguous view of files, paths, extensions, drives, sharing, and NTFS state. Reopen Explorer or sign out/in to refresh an existing shell window.
Simulator device wired adapter The selected physical interface is checked against all four driver-property requirements below Required selection; every driver-supported value is configured and verified during WinSysMaint install/repair Checked every enforcement pass; supported drift is corrected, the adapter is restarted once when changed, and unsupported or failed values are logged without stopping later work Stabilizes the direct one-gigabit simulator device link independently of the facility internet adapter while remaining compatible with cards that do not expose every requested property.

Simulator vendor handoff

Dedicated wired-adapter policy

The administrator selects the active physical Ethernet connection used only by the simulator device. Wi-Fi, protocol-filter adapters, WAN miniports, Bluetooth, kernel-debug, VPN, and clearly virtual interfaces are excluded. A connected adapter without a default gateway is recommended only when exactly one choice matches.

Auto Disable GigabitDisabled
Energy-Efficient EthernetDisabled
Power Saving ModeDisabled
Speed & Duplex1.0 Gbps Full Duplex

Driver vendors may use different display labels or registry values. SimManager first uses the driver's stable registry keyword and then supported display-name aliases, selects a value the driver actually publishes, applies only mismatches, restarts the selected adapter once, and reads all four properties back. An absent or unsupported property fails visibly instead of being reported as compliant, writes event 1092, and is skipped so deployment, the remaining settings, and maintenance continue.

WinSysMaint operational configuration

What owners can configure around the enforcement policy

These values live in C:\ProgramData\WinSysMaint\service.json and are edited from AccessControl Admin Settings > WinSysMaint. Save validates the complete file; Restart WinSysMaint is required when the running service must reload changed values.

Setting Package default Operational intent
Court NameSimulator BayIdentifies the affected bay in maintenance messages and Event Viewer. Deployment Manager writes the per-machine Simulator Name.
Enable scheduled maintenanceEnabledAllows the selected days and local maintenance-window time to start the ordered workflow. Disabling it does not erase the schedule or prevent an explicit administrator test.
Enable Access Control WatchdogEnabledIndependent five-minute process-presence recovery that honors intentional shutdown and coordinates with deployment and system restart.
Monitor TrackMan related log filesEnabledControls independent log scanning and recognized incident summaries in the WinSysMaint Application log.
TrackMan Scan Frequency (minutes)5; allowed range 1–1,440Delay after each completed scan; editable during deployment and in AccessControl. Restart WinSysMaint after saving.
Maintenance actionSettings enforcement onlyChoose Settings enforcement only or Restart System. Both begin by enforcing managed system settings.
Maintenance days and timeEvery day at 1:00 AMDefines the local scheduled window. Only one maintenance action runs for a window.
Connectivity monitoringDisabled; 30 seconds; www.24-7golf.comOptionally pings the configured host and records outage/restoration events independently of the nightly maintenance action.
Windows time zone and NTP serverEastern Standard Time; time.nist.govDefines the owner-approved clock policy used by manual and scheduled enforcement.
Simulator device adapterBlank reusable-package valueDeployment Manager writes the selected machine's stable interface GUID. The friendly name/model remains visible to the administrator.
Turn off Windows FirewallEnabledControls whether Domain, Private, and Public firewall profiles are disabled and validated. Turning it off leaves every firewall profile unchanged.
Turn off App & browser controlEnabledControls the supported Windows and Edge reputation-based protections. Turning it off leaves those Windows values unchanged. Smart App Control has its own independent setting.
Turn off Windows Smart App ControlDisabledWhen explicitly enabled on Windows 11 version 22H2 or newer, sets Smart App Control to Off and validates the result. The default is off because reenabling Smart App Control can require a Windows reset or reinstallation.
Configure Defender antivirus exclusionsEnabledControls whether the saved exclusion list is applied and validated. Turning it off retains the list for later use and leaves current exclusions unchanged.
Defender exclusion pathsTrackMan ProgramData, TrackMan Performance Studio, 247Golf, SimManager, and AccessControl foldersDefines the trusted application and data folders maintained as Microsoft Defender antivirus exclusions while the related switch is enabled. Owners can edit the list.
High Performance GPU applicationsTPS and current TrackMan Virtual Golf executable pathsDefines the TrackMan applications that receive the Windows High Performance GPU preference for real user profiles. Owners can edit the list for their installed version. Duplicate normalized executable paths are rejected; existing duplicates retain the first configured row and order.
AccessControl executable/settings pathsCanonical Program Files and ProgramData pathsIdentifies the installed kiosk and shared watchdog journal location. Deployment Manager writes the actual installation paths.
Process termination timeout30 secondsSets the graceful-close period before a visible process is force-terminated during system restart maintenance.
Read-only

Validate System Settings

Requests administrator approval, reads every supported current value, and shows Category, Setting, Current Value, Required/New Value, and Result. It never changes Windows, closes applications, resets simulator software, or reboots.

Corrective

Apply Required Settings

Runs the same SystemSettingsEnforcer.EnforceAll() pipeline used by nightly maintenance, validates again, and scrolls to the first remaining mismatch. Individual failures are logged and skipped; this manual action does not continue into the selected system restart action.

Scheduled

Nightly maintenance

Enforces settings first and then stops for Settings enforcement only or proceeds to the selected terminal action. An unsupported or failed individual setting does not cancel that action. Each correction, skipped policy operation, and manual or adapter outcome is recorded for remote support.

Support evidence and file locations

Service configuration
C:\ProgramData\WinSysMaint\service.json
Service executable
C:\Program Files\WinSysMaint\WinSysMaint.exe
Windows events
Event Viewer > Windows Logs > Application > source WinSysMaint
Deployment logs
C:\ProgramData\247Golf\SimManager\Deployment\Logs
Deployment GPU warnings
C:\ProgramData\247Golf\SimConfigLog.txt

Event IDs for managed settings

1010-1018
Windows Update, time/NTP, firewall, Defender, GPU, taskbar, and File Explorer corrections
1019
Unexpected individual setting operation failed, was skipped, and remaining work continued
1030
Supported App & browser control settings were corrected to the owner-selected disabled baseline
1031
Smart App Control was set to Off and Code Integrity policy was refreshed after the owner explicitly enabled its independent setting
1090
Selected simulator device adapter verified compliant
1091
Adapter corrected, restarted once, and re-verified
1092
Adapter missing, unsupported, or still noncompliant; logged without blocking later work
1100 / 1101
Manual validation or Apply started
1102 / 1103 / 1104
All values matched, mismatches remain, or command failed

Recommended vendor troubleshooting handoff

Record the simulator name, Windows computer name, SimManager version, and WinSysMaint version.
Capture the selected adapter's Windows connection name, hardware model, link state, and whether it has a default gateway.
Run Validate System Settings and capture the three firewall, six App & browser control, one Smart App Control, configured Defender, ten taskbar, four Windows Update, eight File Explorer, and four simulator device result groups with Current and Required values.
Export or screenshot relevant WinSysMaint events 1010-1019, 1030-1031, 1090-1092, and 1100-1104 from the Windows Application log.
Confirm simulator device is wired directly to the selected physical adapter and the facility internet connection uses the other adapter.
Share the deployment log when the issue began during Install, Upgrade, Repair, or Verify. Remove credentials before sharing unrelated configuration files.

Deployment guide

Deploying and maintaining a simulator computer

This section is intended for colleagues preparing a new simulator PC. The interactive Deployment Manager installs AccessControl and WinSysMaint together, performs prerequisite and package-integrity checks, collects Simulator Name, Location Name, Location Code, the shared scheduler widget, and CourtReserve credentials, provisions both secrets securely, creates familiar launch shortcuts, preserves site configuration during upgrades unless overwrite is explicitly selected, and records a detailed deployment log. The same application supports Upgrade, Repair, Verify, and Uninstall after the first installation.

Update only the deployed Thank You title and message

Deployment Manager options with full settings overwrite cleared and Replace only Thank You for Playing title and message selected

October 1 WPF source preview of the new opt-in checkbox. It starts cleared in each new Deployment Manager session.

  1. Run the current Deployment Manager on the simulator with AccessControl selected.
  2. Leave Overwrite existing AccessControl and WinSysMaint settings cleared.
  3. Select Replace only Thank You for Playing title and message.
  4. Run Preflight. Complete Review Settings Changes if requested, apply the review, and rerun Preflight.
  5. Run Install / Upgrade or Repair, then use AccessControl's closing-message preview to check the facility's copy.

This selection replaces just BookingEndClosing.Title and BookingEndClosing.Message with the packaged Markdown defaults. It does not reset other dialog copy, timeouts, credentials, booking policies, or WinSysMaint values. Other deployment selections still apply normally.

The normal value-preserving update backs up the settings file before writing. The replacement runs after settings merge, deployment-profile values and reviewed overrides, so an old saved value cannot undo the choice. Changing the flag invalidates the previous review approval; the two replacement fields show the packaged values as read-only during review.

Verify does not apply this replacement. It is an option within AccessControl Install / Upgrade or Repair, not a standalone settings-only action. Leave it cleared to preserve custom wording.

1

Download and run the versioned EXE

The latest independently verified package is the version 1.46.18 one-click Debug EXE. Its launcher first checks the embedded ZIP length and SHA-256, extracts a versioned cache under the current administrator's LocalAppData, recalculates every payload-manifest hash, rejects unexpected files, writes a local support log, and then starts Deployment Manager through Windows administrator approval. An exclusive version/hash cache lease remains held through the full manager session, preventing another launch from replacing files while they are in use. The complete source build passed all 971 tests. Independent package verification matched all 988 manifest-controlled files across 989 internal ZIP entries, confirmed every first-party executable reports 1.46.18.0, preserved blank reusable CourtReserve credentials and the machine-specific adapter GUID, and retained the valid Microsoft signature on the bundled WebView2 installer. The unsigned Debug EXE is 394,211,328 bytes and its SHA-256 is AD39BE884EE6135E62DCD98C9C6D41A1078E18A64CAE39B120F1F75A6BA24A64. A production Release additionally signs and timestamps the completed outer EXE and every first-party payload file before handoff.

# Complete Debug build, tests, and one-click EXE
pwsh .\DeploymentManager\Build-FullSuite.ps1 -Configuration Debug

# Complete signed Release, or both configurations
pwsh .\DeploymentManager\Build-FullSuite.ps1 -Configuration Release
pwsh .\DeploymentManager\Build-FullSuite.ps1 -Configuration All

Full Debug, full Release, and ALL requests now rebuild the complete solution, run every test, generate and independently verify the one-click package, and use the matching Google Drive handoff folder. Debug packages remain intentionally unsigned for pilot testing. Creating a signed Release remains an explicit production action after the organization's Public Trust signing profile is available.

2

Run preflight checks

After the one-click launcher opens Deployment Manager as an administrator, enter the required Simulator Name, Location Name, and Location Code, identify the existing kiosk Windows account, and confirm the visible four-digit Admin Code. Paste one CourtReserve scheduler widget for both booking flows and enter both API credential fields. Deployment Manager retrieves the matching reservation types before writing AccessControl configuration; a failed API request or empty match set stops safely so an incorrect site catalog is never deployed. The API key must allow WebSite Settings read access for mandatory startup licensing. Select the connected physical wired adapter used only by simulator device; the friendly connection name and hardware model are displayed while the stable interface GUID is saved internally. Review the Windows Security card's three default-enabled choices, the independent default-off Smart App Control choice, and the one-path-per-line Defender exclusion list. Every exclusion must be a full Windows path. If this simulator already has a compatible C:\ProgramData\WinSysMaint\service.json, Deployment Manager preloads its saved firewall, App & browser control, Smart App Control, Defender switch, and exclusion paths; otherwise it uses the approved new-computer defaults. Review Monitor TrackMan related log files and Scan Frequency (minutes) on the main deployment screen; both values are included in preflight and the guided review. Their defaults are enabled and 5 minutes. When installing WinSysMaint on a new computer, review every service setting before continuing. Preflight also inspects each configured High Performance GPU executable. A missing path is a visible, nonblocking warning so the operator can replace a vendor default with the actual installed simulator-software path without preventing the rest of deployment. The code defaults to 0000 for onsite verification, while both the Admin Code and API Secret are protected before they leave the deployment process. Preflight verifies these values along with Windows and account readiness, package hashes, payload layout, install paths, WebView2 registration, and settings-file compatibility.

3

Review deployment scope

Keep AccessControl and WinSysMaint selected for a full simulator deployment. AccessControl auto start is a separate choice, so the application can be installed for manual launch from its shortcuts and registered later from General Settings. For a new computer, complete the required WinSysMaint settings review; every supported service field is available before anything is installed. For an existing simulator, leave settings overwrite cleared, run preflight, and select Review Settings Changes. The guided review shows every retained, missing, invalid, retired, and version value without requiring JSON editing. Values already selected on the main screen—including the friendly simulator device adapter—appear as green read-only results; only optional package values remain editable. Opening the review writes a support report before installation. Copy diagnostics copies the report and log location; errors and the path are selectable, while individual setting values and overrides are excluded from the report. Apply that reviewed plan before installation. Select complete overwrite only when the packaged defaults and deployment values should replace both installed configurations. For just the closing copy, use the independent Thank You title/message replacement while leaving full overwrite cleared. Complete system configuration is selected by default. Its shared policy covers time service, NTP, time zone, the individually configurable firewall, App & browser control, Smart App Control, and Defender exclusions, GPU, the simulator device adapter, the enabled ten-setting taskbar baseline, all Windows Update lockouts, and all eight File Explorer preferences. The firewall, App & browser control, Defender exclusions, and taskbar policies each have a default-enabled deployment control. Smart App Control is an independent default-off control because turning it off can require a Windows reset or reinstallation before it can be enabled again. Every choice is written to WinSysMaint for future manual and scheduled maintenance. Installing application binaries without applying this computer baseline is an explicit opt-out. Every setting is inspected, logged as already correct when appropriate, and changed only when it has drifted.

4

Install and configure

Select Install and follow the live activity log. AccessControl is placed under Program Files, mutable machine configuration under ProgramData, and all-users 247AccessControl shortcuts are created in the Start Menu and on the Public Desktop. The optional kiosk-user logon task follows the selected auto-start choice. A SID-restricted encrypted Admin Code handoff is staged for only the selected kiosk account. The API Secret uses its own purpose-separated encrypted handoff. Simulator Name, Location Name, Location Code, the reconciled reservation-type Booking Buffers rows, both scheduler fields, API Key ID, and the approved defaults are written into the installed configuration. WinSysMaint receives the canonical service.json and is installed as LocalSystem with delayed automatic start and recovery actions. Deployment also grants the kiosk account query/start/interrogate rights for locked-kiosk service recovery while retaining service stop and configuration rights for administrators. The deployment engine then calls WinSysMaint's canonical settings command to apply and validate the complete Windows baseline; any remaining mismatch is reported with its current and required values instead of being hidden by a separate installer script. Unsupported or failed individual settings are logged to Deployment Activity and the Windows Application log, then deployment continues.

5

Complete first launch as the kiosk user

Sign in to the exact Windows kiosk account selected during deployment and start AccessControl. Its first launch decrypts the one-time handoffs, protects the Admin Code and API Secret for that current user, saves the canonical user settings, and deletes each handoff only after a successful save. AccessControl then calls the CourtReserve locations endpoint and must confirm an entitled ID before it starts simulator software or presents the kiosk. Confirm the installed Simulator Name, Location Name, Location Code, reservation-type rows, scheduler, and the read-only Licensed CourtReserve Location ID and Name in General Settings. The WinSysMaint tab can load its deployed service.json, validate and save later maintenance changes, validate or apply all managed Windows settings, preview or test the selected maintenance action, and request an elevated service restart when changes should take effect. Reopen File Explorer, or sign out and back in, if an Explorer window that was already open has not yet refreshed the newly applied Folder Options.

6

Verify and retain the deployment record

Run Verify and confirm the installed version and manifest, Start Menu and Public Desktop shortcuts, optional kiosk startup, WebView2 customer flows, Internet Time, selected policy state, the ten taskbar result rows, four Windows Update result rows, eight File Explorer result rows, the four simulator device adapter properties, AccessControl launch, the running WinSysMaint service, and the kiosk account's file-only permission on the service configuration. Open General Settings to confirm the licensed CourtReserve identity, use the mock unlicensed-notification preview if desired, and verify WinSysMaint health when the locked kiosk is presented. Keep the downloaded versioned EXE and its deployment log together for later Upgrade or Repair work; bootstrap logs remain under the launching administrator's LocalAppData, while backups and deployment history remain under ProgramData on the simulator computer.

What the deployment manager controls

Explicit, logged deployment actions

Verifies every packaged payload file with SHA-256
Validates and self-extracts the one-click location-admin EXE before launch
Validates signed Release authenticity and trusted timestamps
Installs or safely upgrades AccessControl
Preserves site configuration during repair and upgrade
Guides value-preserving settings review before installation
Requires a complete WinSysMaint settings review for a new computer
Requires and installs Simulator Name, Location Name, and Location Code
Retrieves and verifies the matching CourtReserve reservation types before configuration is written
Applies one scheduler widget to Make A Booking and Extend My Time
Transfers encrypted Admin Code and API Secret handoffs only to the selected kiosk user
Requires CourtReserve WebSite Settings read permission for startup licensing
Overwrites AccessControl and WinSysMaint settings only when explicitly selected
Offers a separate default-off replacement of only the Thank You title and Markdown message during AccessControl Install / Upgrade or Repair
Creates and verifies all-users Start Menu and Public Desktop shortcuts
Optionally registers or removes the kiosk-user interactive startup task
Detects the canonical WebView2 Runtime and installs it when needed
Stops and removes WinSysMaint before replacing locked binaries
Recreates WinSysMaint with delayed start and recovery actions
Grants the kiosk account write access only to WinSysMaint service.json
Grants narrow query/start rights for locked-kiosk WinSysMaint recovery
Writes deployment history, backups, and logs under ProgramData
Preloads valid installed firewall, App & browser control, and Defender choices when available
Defaults new computers to the approved three-part Windows security baseline with five trusted Defender folders
Applies selected workstation policy only when settings have drifted
Uses WinSysMaint's canonical engine for Install, Repair, Verify, administrator Apply, and nightly maintenance
Provides one default-enabled switch for the fixed ten-setting taskbar baseline
Provides separate default-enabled switches for the firewall, App & browser control, and Defender exclusions
Disables automatic, optional/latest, preview, and other-Microsoft-product updates
Applies and validates all eight owner-approved File Explorer preferences
Supports repeatable Install, Upgrade, Repair, Verify, and Uninstall

The deployment engine uses Windows PowerShell and standard Windows tools. The packaged applications are self-contained, so a simulator PC does not need a separate .NET runtime, SDK, Visual Studio, or database server. Bookings remain authoritative in CourtReserve and in memory.

Public website hosting

Where this portal is hosted

This portal is static and dependency-free. It does not require server-side rendering, Worker code, bindings, Node packages, or private workspace access. Cloudflare serves it from the 247simmanager.com zone, next to the 247SimManager Suite marketing site.

Automatic deploys

Changes to the public-website folder publish automatically when they reach the main branch. Other branches get a private preview version, so the live portal changes only after a merge.

Cloudflare settings

Worker
247simmanager-portal (static assets only)
Custom domain
portal.247simmanager.com
Source folder
public-website
Deploy command
npx wrangler deploy

wrangler.toml holds the Worker and domain settings, _headers the response headers, and .assetsignore keeps configuration files from being served.