How akruijff/horizon works
Horizon monitors a user-selected app or window: a client captures screenshots and sends them to the server, which routes analysis to a plugin and returns instructions for the client to execute or display. Android and Windows clients share the client-side monitoring and connection libraries, while providing platform-specific capture and execution. Plugins include game-specific analysis, notably Nonogram solving, poker-hand evaluation, and Hustle Castle simulation. The graph combines the README’s product description, the tree, and sampled entry-point and protocol code; unsampled subsystem wiring is shown only where the documented workflow supports it.
Main entry points: MonitorTarget.java Monitor workflow · Plugin.java Plugin API · ConnectionToServer.java Client connection · ConnectionProtocolRunnable.java Protocol runner
Components 22
Client applications
- Android service
Client-Android/app/src/main/java/org/mazarineblue/horizon/client/android/ui/MainService.java - Android executor
Client-Android/app/src/main/java/org/mazarineblue/horizon/client/android/executor/AndroidExecutor.java - Windows UI
Client-Windows/src/main/java/org/mazarineblue/horizon/client/windows/ui/Main.java - Windows executor
Client-Windows/src/main/java/org/mazarineblue/horizon/client/windows/application/executor/WindowsExecutor.java
Client runtime
- Monitor workflow
Library-Client/src/main/java/org/mazarineblue/horizon/library/client/application/MonitorTarget.java - Client connection
Library-Client/src/main/java/org/mazarineblue/horizon/library/client/connection/ConnectionToServer.java - Stream protocol
Library-Client/src/main/java/org/mazarineblue/horizon/library/client/connection/util/StreamServiceImpl.java - Screenshot capture
Library-Client/src/main/java/org/mazarineblue/horizon/library/client/application/ports/ScreenshotCaptor.java
Server
- Server application
Server/src/main/java/org/mazarineblue/horizon/server/Main.java - Protocol runner
Server/src/main/java/org/mazarineblue/horizon/server/ConnectionProtocolRunnable.java - Connection handler
Server/src/main/java/org/mazarineblue/horizon/server/connection/ConnectionHandler.java - Socket service
Server/src/main/java/org/mazarineblue/horizon/server/connection/ConnectionService.java - Plugin registry
Server/src/main/java/org/mazarineblue/horizon/server/plugins/registry/PluginRegistryImpl.java
Plugin runtime
- Plugin API
Library/src/main/java/org/mazarineblue/horizon/library/plugins/Plugin.java - Instructions
Library/src/main/java/org/mazarineblue/horizon/library/instruction/Instruction.java - Screenshot model
Library/src/main/java/org/mazarineblue/horizon/library/screenshot/Screenshot.java
Analysis plugins
- Nonogram plugin
Plugin-Nonogram.com/src/main/java/org/mazarineblue/horizon/plugin/com/easybrain/nonogram/ui/NonogramPlugin.java - Puzzle solver
Plugin-Nonogram.com/src/main/java/org/mazarineblue/horizon/plugin/com/easybrain/nonogram/application/NonogramSolver.java - Poker evaluator
Plugin-GOP3/src/main/java/org/mazarineblue/horizon/plugins/gop3/version2 - Kingdom simulator
Plugin-HustleCastle/src/main/java/org/mazarineblue/horizon/plugins/com/my/hc/kingdom/simulator/HustleCastlePlugin.java
Other components
- User
- Target app or window
Connections 25
- User → Android service: selects target
- User → Windows UI: configures monitoring
- Android service → Monitor workflow: starts monitoring
- Windows UI → Monitor workflow: starts monitoring
- Monitor workflow → Screenshot capture: captures screenshot
- Target app or window → Screenshot capture: provides screen
- Monitor workflow → Client connection: sends screenshot
- Client connection → Stream protocol: uses streams
- Client connection → Connection handler: exchanges data
- Connection handler → Socket service: reads and writes
- Protocol runner → Connection handler: handles connection
- Server application → Protocol runner: starts protocol
- Server application → Plugin registry: lists plugins
- Protocol runner → Plugin registry: resolves plugin
- Protocol runner → Plugin API: dispatches analysis
- Connection handler → Screenshot model: supplies image
- Plugin API → Instructions: returns actions
- Plugin API → Screenshot model: analyzes image
- Nonogram plugin → Puzzle solver: solves puzzle
- Nonogram plugin → Plugin API: implements
- Poker evaluator → Plugin API: plugin capability
- Kingdom simulator → Plugin API: implements
- Monitor workflow → Android executor: executes actions
- Monitor workflow → Windows executor: executes actions
- Client connection → Instructions: receives actions