c7138b541d
Implements ADR-008. native/input-helper is a self-contained .NET 9 console exe speaking the identical JSON-over-stdin/stdout protocol as the old PowerShell helper (ping/cursor/runtime/focus/click/scroll/bounds/capture), so the InputHelperService interface is unchanged. - Win32 interop compiled once (native exe), not per call. - PerMonitorV2 DPI via manifest so click/capture coordinates stay correct on mixed-DPI multi-monitor setups. - capture returns base64 PNG bytes inline (imageBase64) instead of writing a temp file per frame; the client handles both base64 and the PowerShell path. - InputHelperClient prefers the exe and falls back to the embedded PowerShell helper when the exe is absent, so the app still runs without the .NET build. - main.ts resolves the exe (INPUT_HELPER_EXE env -> packaged resources/input-helper -> native/input-helper/bin/publish). electron-builder ships it via extraResources. - npm run helper:build; README documents the build + fallback. Verified end-to-end through the compiled client: sidecar spawns, runtime info and a base64 primary-screen capture return correctly. Build stays green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
75 lines
3.1 KiB
Markdown
75 lines
3.1 KiB
Markdown
# Genshin Artifact Assistant
|
|
|
|
Local Windows-first Electron app for scanning Genshin Impact artifacts, triaging them, and suggesting simple character builds without depending on Inventory Kamera or Genshin Optimizer as the main workflow.
|
|
|
|
## Current MVP
|
|
|
|
- Electron + React + TypeScript app shell.
|
|
- Dark purple fintech/glassmorphism UI direction.
|
|
- Genshin capture source discovery.
|
|
- Smart Capture that focuses Genshin, hides the app, captures the primary screen, and restores the app.
|
|
- Artifact detail-panel crop detection with focused OCR regions.
|
|
- OCR parser for artifact name, slot, main stat, substats, set, equipped character, confidence, and review notes.
|
|
- Demo triage and build suggestion views.
|
|
- Read-only overlay preview shell.
|
|
|
|
## Documentation
|
|
|
|
This project uses the engineering template from `https://git.noveria.net/bao/template` adapted to this app:
|
|
|
|
- [AGENTS.md](AGENTS.md)
|
|
- [docs/PROJECT.md](docs/PROJECT.md)
|
|
- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)
|
|
- [docs/CONVENTIONS.md](docs/CONVENTIONS.md)
|
|
- [docs/DECISIONS.md](docs/DECISIONS.md)
|
|
- [docs/CHECKLISTS.md](docs/CHECKLISTS.md)
|
|
- [docs/workflow.md](docs/workflow.md)
|
|
|
|
## Run
|
|
|
|
```powershell
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Use the Electron app window for scanner work. The browser preview does not expose the local capture bridge.
|
|
|
|
### Input/Capture helper (C# sidecar)
|
|
|
|
Input automation and screen capture run through a compiled C# sidecar
|
|
(`native/input-helper`, see ADR-008). Build it once:
|
|
|
|
```powershell
|
|
npm run helper:build # requires the .NET SDK; produces a self-contained exe
|
|
```
|
|
|
|
The app auto-detects the exe (`INPUT_HELPER_EXE` env override → packaged
|
|
`resources/input-helper` → `native/input-helper/bin/publish`). If the exe is not
|
|
present it falls back to the embedded PowerShell helper, so the app still runs
|
|
without the .NET build - just slower and with the old per-frame temp-file capture.
|
|
|
|
### Automatischer Scan: als Administrator starten
|
|
|
|
Genshin läuft erhöht (Administrator). Windows (UIPI) verwirft dann alle simulierten Maus-Eingaben aus einer nicht-erhöhten App - SendInput meldet dabei trotzdem Erfolg. Für den automatischen Scan muss die App deshalb ebenfalls erhöht laufen:
|
|
|
|
- `npm run dev:admin` (oder Doppelklick auf `dev-admin.cmd`) - öffnet aus einem normalen Terminal heraus einen UAC-Prompt und startet danach `npm run dev` in einem neuen Administrator-Fenster.
|
|
- Alternativ: Terminal per Rechtsklick "Als Administrator ausführen" öffnen und darin normal `npm run dev` starten.
|
|
|
|
Der UAC-Prompt lässt sich nicht dauerhaft abschalten; das ist Windows-Design. Die gepackte App fordert Admin-Rechte über `requestedExecutionLevel: requireAdministrator` selbst an. Die App zeigt im Scanner-Header und in der Scanner-Diagnose nur an, ob sie gerade erhöht läuft - sie startet sich nicht selbst neu.
|
|
|
|
## Validate
|
|
|
|
```powershell
|
|
npm run lint
|
|
npm test
|
|
npm run build
|
|
```
|
|
|
|
## Safety Boundaries
|
|
|
|
- No memory reads.
|
|
- No hooks or process injection.
|
|
- No game file modification.
|
|
- No automatic delete, enhance, feeding, or resource-spending actions.
|
|
- In-game lock/marking is a future opt-in module and remains disabled in this MVP.
|