Skip to content

History / 3D Model System

Revisions

  • Semicolon → period: two more pseudo-period uses 3D-Model-System: "Symbol meshes get PlayStation-specific colors; base meshes default to black" — two factual clauses, period works. Settings-and-Serialization: "Multiple UserSettings may reference the same PadSettingChecksum; only one copy is serialized" — same pattern. Both are the AI-tell "X; Y" where Y is a separately complete clause that doesn't strictly belong inside the first sentence.

    @hifihedgehog hifihedgehog committed May 26, 2026
  • Strip em-dash pseudo-colons and pseudo-period semicolons across wiki prose

    @hifihedgehog hifihedgehog committed May 21, 2026
  • Dev wiki: document all 4 3D model classes and all 5 2D layouts 3D-Model-System.md: add detailed sections for ControllerModelXboxOne and ControllerModelDualSense (mesh groups, color palettes, rotation points, material assignment order). Expand OBJ Mesh Files listing to include XBOXONE (46 meshes) and DualSense (48 meshes) directories. Rewrite EnsureModel() docs to reflect the actual 4-way HMaestroProfileCatalog.ResolveAssetFolders branching plus the xbox-series-* ProfileId Share-button gate. 2D-Overlay-System.md: add Layout sections for DualSenseLayout, XboxOneSLayout, and XboxSeriesXLayout. Expand PNG Asset Structure listing to include XBOXONE, XBOXSERIES, and DualSense directories. Rewrite Model Selection docs to reflect the actual 5-way layout dispatch in BuildCanvas().

    @hifihedgehog hifihedgehog committed May 21, 2026
  • Pass 10: 3D-Model-System architecture diagram includes ControllerModelXboxOne and ControllerModelDualSense (added since the page was last updated)

    @hifihedgehog hifihedgehog committed May 20, 2026
  • Lighting tab reset buttons + v3 terminology sweep Refreshes pad-lighting screenshot to capture the four new reset buttons (Lightbar Mode, LED Brightness, Player Pattern, Mute LED Mode) plus the rest of the slot-0 PadPage tabs and slot-type config bars against the post-deploy build. Wiki prose: drops residual v2 phrasing (ExtendedConfig.IsGamepadPreset, DualShock4 / Xbox 360 enum names, "Microsoft" / "Sony") and routes through the v3 OutputType / VirtualControllerType vocabulary instead.

    @hifihedgehog hifihedgehog committed May 4, 2026
  • Deep v3 resync: vJoy purge, Microsoft→Xbox terminology, current features Sweep residual v2 vJoy / ViGEmBus content out of user-facing pages and replace stale dev-page class names with the v3 unified HIDMaestro pipeline. Restore correct family-name terminology (Xbox / PlayStation / Extended, not Microsoft / Sony — those enum identifiers exist purely for v2 PadForge.xml back-compat per the in-source enum comment). User-facing pages (Home, Dashboard, Controller-Slots, Devices, Settings, Driver-Management, Troubleshooting, Force-Feedback, Web-Controller, 3D-and-2D-Visualization, 2D-Overlay-System, Installation, Stick-Deadzones, Trigger-Deadzones, Input-Precision): - vJoy slot type, "vJoy driver limit", and vJoy install steps removed - Troubleshooting: "vJoy Phantom Controllers" section deleted (v2 N²-bug, doesn't exist in HIDMaestro), other vJoy sections rewritten for HM - Force-Feedback: HID PID 1.0 framing for Extended; new Sony Report 0x01 rumble passthrough section - 3D-and-2D-Visualization: PlayStation touchpad preview (live finger spheres) and click-to-map TouchpadClick documented - 2D-Overlay-System: touchpad highlight visual spec (sampled colors) - Web-Controller: DS4 layout button-11 collapse for TouchpadClick Dev pages (Architecture-Overview, Engine-Library, Build-and-Publish, HIDMaestro-Deep-Dive, Input-Pipeline, SDL3-Integration, Services-Layer, Settings-and-Serialization, Driver-Installation-Internals, ViewModels, XAML-Views, Virtual-Controllers, Button-and-Axis-Mappings): - Stale Xbox360VirtualController / DS4VirtualController / ExtendedVirtualController / VJoyRawState references replaced with the v3 unified HMaestroVirtualController + ExtendedRawState - Step 5 prose updated to HMContext.SubmitState / SubmitRawReport with Sony Report 0x01 passthrough - HIDMaestro-Deep-Dive: HM 1.1.x → 1.2.0 - Services-Layer: false claim that Extended slots reset to "Microsoft (Xbox 360) gamepad preset" replaced with the actual behavior (ProfileId = GetDefaultProfileId(type), Custom "PadForge Game Controller" for Extended) - Three broken [[vJoy Deep Dive]] links retargeted to [[HIDMaestro Deep Dive]] - Virtual-Controllers gets a top-of-page editor's note flagging it for a full hand-rewrite (the deep sections still describe deleted v2 classes) Microsoft references kept where they are real: NuGet package Microsoft.Windows.Devices.Midi2, registry paths under SOFTWARE\Microsoft\, ".NET runtime download from Microsoft", literal VirtualControllerType.Microsoft enum-value citations, MaxXbox360Slots constant name (preserved from v2), [XmlEnum("Sony")] attribute string, OpenXInput Microsoft-trademark disclaimer.

    @hifihedgehog hifihedgehog committed Apr 27, 2026
  • Fix mojibake throughout the wiki + rewrite Input-Precision Stage 5 for v3 Mojibake sweep: 1067 sequences across 17 .md files. Earlier passes had round-tripped UTF-8 punctuation through a CP1252 layer, baking the literal three-character mojibake into the files (em-dash → â + € + ", en-dash, right arrow, box-drawing chars, middle dot, multiplication sign, etc.). Restored to the proper Unicode codepoints: — – → ↔ ← │ ├ └ · ×. Input-Precision Stage 5 rewrite: the page still described 'Stage 5: vJoy Output (15-bit unsigned)' which doesn't exist in v3. v3 has a single HIDMaestro Output stage with three sub-cases: - Microsoft (Xbox 360): signed 16-bit sticks, 8-bit triggers - PlayStation (DS4): 8-bit sticks AND triggers (DS4 protocol) - Extended (HM custom HID): 16-bit unsigned sticks, 8-bit triggers by default, raisable to 16-bit per profile Verified against HIDMaestro's HidDescriptorBuilder.cs (AddStick default bits=16, AddTrigger default bits=8) and PadForge's HMaestroVirtualController.cs (SubmitGamepadState normalizes through float at the SDK boundary). Output Throughput section: dropped the vJoy single-IOCTL note, replaced with HIDMaestro single-call SubmitState description. Summary table axis-resolution rows now reflect per-VC-type wire bit depth. Stage 3 callout pointing at Stage 5. Pseudo-colon em-dash converted to period per the project style rule.

    @hifihedgehog hifihedgehog committed Apr 26, 2026
  • Bulk v3 terminology sweep across remaining wiki pages (23 files) Mechanical s/// pass on the names that don't depend on architectural context: ViGEmBus -> HIDMaestro, ViGEmClient -> HIDMaestro SDK, VJoy -> Extended (the C# enum value name appearing in narrative text), 'DirectInput (vJoy)' -> 'Extended (HIDMaestro)', 'Xbox 360 / DualShock 4' (slot type pair) -> 'Microsoft / PlayStation', etc. Pages already hand-rewritten upstream were left alone (Home, Installation, Driver-Management, HIDMaestro-Deep-Dive). Virtual-Controllers got the same pass since it's a central reference. Caveat: many of the deeper architecture pages (Driver-Installation- Internals, Input-Pipeline, ViewModels, XAML-Views, Engine-Library, etc.) still describe v2-era *implementation* (vjoy.sys SetupAPI device-node creation, ViGEm.Client P/Invoke surface, etc.). The TERMINOLOGY now matches v3 but the IMPLEMENTATION DETAILS in those pages are still v2 and need a follow-up content pass to reflect the HIDMaestro SDK surface, the OpenXInput shim, the HM thread-pool lifecycle, the bubble-up cascade, etc. See HIDMaestro-Deep-Dive.md for the v3-correct version of that material.

    @hifihedgehog hifihedgehog committed Apr 26, 2026
  • Sweep em-dash pseudo-colons across developer reference pages

    @hifihedgehog hifihedgehog committed Apr 18, 2026
  • Wave 5: Visual overhaul, second polish, cross-page consistency, TOCs, diagrams Home.md: Hero section with centered about.jpg, "New in this release" callout, 6 themed sub-sections, Unicode symbols, verb-led descriptions. Visual: 3 unused dropdown screenshots added to Sticks/Triggers pages. TOCs added to 5 long dev docs. 3 new Mermaid diagrams (save/load flow, class relationships, device discovery). Cross-page consistency (user + dev): Bidirectional Related Pages across all 31 pages (94 dev cross-links, 60+ user cross-links). Feature naming standardized ("Force Raw Joystick Mode", "DualShock 4", "DirectInput (vJoy)"). Setting names matched to UI labels. 9 screenshot alt texts made descriptive. Dev doc links removed from user pages. Second polish (all pages): 200+ edits tightening prose, removing AI voice ("robust", "This ensures", "you can"), standardizing See Also sections, cutting filler. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Numeric accuracy sweep: 18 agents verified every number against source code Fixes found by accuracy agents: - Virtual-Controllers: Xbox/DS4 max instances 4→16 (3 locations), 5 Gamepad button bit values corrected (A=0x1000, B=0x2000, X=0x4000, Y=0x8000, GUIDE=0x0400) - Controller-Slots: per-type limit reasons now explain XInput 4-slot visibility vs ViGEm 16-slot creation, SDL/DirectInput see all 16 - Input-Pipeline: VJoyRawState axes "up to 16" → "up to 8" - 3D-and-2D-Visualization + Button-and-Axis-Mappings: triggers "up to 4" → "up to 8" (MaxAxes=8, sticks consume 2 each) - Dashboard: Xbox/DS4 per-type limits 4→16 - Build-and-Publish: removed phantom LICENSE.txt from publish output - SDL3-Integration: added missing padding fields to SDL_HapticCondition and SDL_HapticRamp structs - ViewModels: DeadZoneShape.ScaledRadial=2 not 0, tab order corrected, ViewModelBase code snippet fixed - Engine-Library: mouse button order L,R,M → L,M,R - Driver-Installation-Internals: removed phantom EnsureWhitelisted, added 4 missing HidHide API methods - 2D-Overlay: schematic line count 795→794 - 3D-Model: torus offset 0.4→0.8mm Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Professional polish: proper typography, concise writing, 33 agents Replace all 590+ double-hyphen (--) instances with proper em dashes (—) and en dashes (–) for numeric ranges. Remaining -- only inside code blocks. Rewrite every page for professional conciseness: - Simple English, short sentences, active voice - Prose converted to tables and bullet lists - Filler words and AI-tell phrases eliminated - Parallel structure in descriptions - Every section scannable in seconds Net result: 632 fewer lines across 32 files while preserving all detail. Verified: 0 broken cross-references, all 9 Mermaid diagrams valid, all 21 image references valid, README fully synchronized. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Comprehensive wiki rewrite: 22 agents, 2M+ tokens, all 31 pages improved Every wiki page deeply rewritten by dedicated agents that read full source files (not commit history). Total: ~2 million input tokens across 22 agents. User guide pages (17): - Home: all 32 descriptions rewritten with specific subsection details - Force-Feedback: motor physics, pipeline flow, haptic/condition/audio sections - Macros: 12 action type subsections, 6 practical recipes, fire mode guide - Devices: card layout, raw input viz, GUID persistence, 7 troubleshooting items - Stick-Dead-Zones: per-shape subsections, anti-DZ tuning, 5 genre recommendations - Trigger-Dead-Zones: floor/ceiling examples, 4 genre recommendations - Controller-Slots: "What Is a Slot?", type decision table, limits, reordering - Dashboard: engine states, VC card anatomy, power icon color table - Settings: per-setting guidance, driver comparison table, auto-save behavior - Button-and-Axis-Mappings: source dropdown, descriptor names, mapping tips - Profiles: pipe-separated exe format, 4 practical examples - DSU-Motion-Server: emulator table, sensor requirements, setup guides - Web-Controller: step-by-step setup, network requirements, latency expectations - Installation: Quick Start, auto-elevation, first-launch walkthrough - Driver-Management: graceful degradation, compatibility matrix, troubleshooting - Troubleshooting: 10 new scenarios, Quick Reference 18→33 entries - 3D-and-2D-Visualization: view selection table, MIDI preview, touch tips Developer reference pages (14): - Architecture-Overview: verified project layout, Key Design Decisions, threading - Input-Pipeline: 1538 lines, 3-thread Mermaid, dead zone algorithms, thread safety - Services-Layer: rewritten from scratch, 25+ method table, 5 interaction flows - ViewModels: 1559 lines, all 14 ViewModel classes, 70+ PadSetting properties - Engine-Library: 1811 lines, 31 types, full SDL3 P/Invoke reference - Settings-and-Serialization: 73 CopyablePropertyNames, save/load flowcharts - XAML-Views: layout trees, binding tables, 11 styles, UI Automation IDs - Virtual-Controllers: Mermaid type hierarchy, per-VC axis/button tables - SDL3-Integration: 1133 lines, enumeration flow, rumble, haptic, custom mappings - Build-and-Publish: all build modes, CI/CD, versioning, local NuGet - vJoy-Deep-Dive: HID descriptors, FFB, device lifecycle, restart strategies - Driver-Installation-Internals: Mermaid flowcharts, SetupAPI P/Invoke, registry - DSU-Protocol-Implementation: corrected byte offsets, sequence diagrams, CRC32 - 2D-Overlay-System: MIDI preview, verified file counts, flash timer corrected - 3D-Model-System: material system, coordinate transforms, touch gestures Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Replace double dashes with em dashes in all wiki pages

    @hifihedgehog hifihedgehog committed Mar 6, 2026
  • Enforce content boundary: move dev details from user guide to dev reference - Web-Controller.md: remove Technical Details section (HTTP routes, WebSocket protocol, image cache, WebControllerDevice class, frontend assets) - 3D-and-2D-Visualization.md: remove HelixToolkit implementation note - Macros.md: remove WH_KEYBOARD_LL/WH_MOUSE_LL hook details - Devices.md: remove Windows hook API references - Services-Layer.md: add HTTP routes, WebSocket protocol, MaxClients, WebControllerDevice properties, frontend assets to WebControllerServer section - 3D-Model-System.md: update mouse controls (left=rotate, right=pan), add left-drag fields, update event handler table Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 6, 2026
  • Update wiki for Web Controller, Force Raw Mode, stick calibration, and retake all screenshots - Add Web Controller page: getting started, layouts, touch controls, connection, rumble, technical details - Add Home.md entry for Web Controller - Update Devices: device detail pane (GUID/instance path marquee), Force Raw Joystick Mode, stick calibration - Update Stick Dead Zones: center offset calibration, max range per axis - Update Architecture Overview: WebControllerServer service, Web Controller Server Thread, WebAssets directory - Update Services Layer: WebControllerServer section, update service count to 7 - Update Build and Publish: WebAssets directory in project structure - Update Troubleshooting: buttons map to wrong outputs (force raw mode solution) - Update 3D Model System and 3D/2D Visualization for touch gesture details - Retake all 12 screenshots with latest UI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 6, 2026
  • Fix hallucinations and inaccuracies across 15 wiki pages Audited all 31 wiki pages against source code. Key corrections: Profiles.md: Remove fabricated "Activate" button, add actual "New"/"Load" buttons, fix executable input (Browse dialog, not typed text), fix double-click behavior (loads, not edits) Button-and-Axis-Mappings.md: Fix column names (Target->Output, Modifiers->Options), add missing Value column, fix modifier labels (I/H -> Inv/Half), fix Clear->Clear All, fix Map All description Macros.md: Fix button name (Add Macro->Add), remove fabricated up/down reorder arrows Controller-Slots.md: Remove claim of no per-type cap, fix type switching (Dashboard only, not config page), add Dashboard drag reorder Stick-Dead-Zones.md: Clarify Linear is shared per stick, fix preview to show single output dot (not raw+output) Trigger-Dead-Zones.md: Fix live bar description (single bar, not separate raw/processed) Developer pages: Fix service count (5->6), MaxPads references (8->16), missing enum values (Once, None), wrong method name (LoadObj->LoadModel), asset counts, line count estimates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 3, 2026
  • Add complete PadForge wiki documentation (31 pages)

    @hifihedgehog hifihedgehog committed Mar 3, 2026