How jhonc6797/smental_solver works
Semantle Hebrew Solver searches for the daily answer by scoring guesses against the game API, then presents the run in a terminal or interactive board. The principal workflow probes anchors, estimates and searches a semantic region, and switches to focused nearest-neighbour search; morphology and vocabulary support that engine. For the web, the server streams serialized, projected events and keeps runs replayable; the static site can instead load a published daily recording. The graph follows documented behavior and sampled call sites; daily publishing details are documented but its implementation was not sampled.
Main entry points: app.py HTTP and socket API · App.tsx Board application · engine.py Search engine · runner.py Terminal runner
Components 23
Solver engine
- Search engine
solver/engine.py - Hebrew morphology
solver/morphology.py - Word vocabulary
solver/vocabulary.py - Search settings
solver/config.py - Game client
semantle/client.py
Run server
- HTTP and socket API
server/app.py - Daily run manager
server/daily.py - Run history store
server/daily.py - Solve session
server/session.py - Event serialization
server/serialization.py - Board projection
server/projection.py
Web board
- Board application
web/src/App.tsx - Web API client
web/src/api.ts - 3D guess board
web/src/board/Board.tsx - Guess log
web/src/ui/Log.tsx - Progress chart
web/src/ui/ProgressChart.tsx
Daily publishing
- Recording publisher
scripts/publish_daily.py
Terminal interface
- Terminal runner
cli/runner.py - Summary plot
cli/plotting.py
Other components
- Viewer / operator
- Daily scheduler
- Semantle API
- Published daily recording
Connections 31
- Viewer / operator → Board application: views
- Board application → Web API client: requests / reconnects
- Web API client → HTTP and socket API: starts / streams
- HTTP and socket API → Daily run manager: gets current run
- Daily run manager → Run history store: loads / saves
- Daily run manager → Solve session: creates session
- HTTP and socket API → Word vocabulary: loads vocabulary
- HTTP and socket API → Board projection: builds projection
- HTTP and socket API → Game client: checks answer
- Solve session → Search engine: runs search
- Search engine → Word vocabulary: reads words / vectors
- Search engine → Hebrew morphology: filters duplicates
- Search engine → Search settings: reads settings
- Search engine → Game client: scores guesses
- Game client → Semantle API: requests scores
- Solve session → Event serialization: serializes events
- Solve session → Board projection: projects event data
- HTTP and socket API → Solve session: streams messages
- HTTP and socket API → Web API client: sends messages
- Web API client → Board application: delivers messages
- Board application → 3D guess board: renders guesses
- Board application → Guess log: shows guesses
- Board application → Progress chart: charts progress
- Daily scheduler → Recording publisher: triggers publish
- Recording publisher → Published daily recording: publishes run
- Board application → Published daily recording: loads recording
- Viewer / operator → Terminal runner: runs solver
- Terminal runner → Word vocabulary: loads vocabulary
- Terminal runner → Game client: scores guesses
- Terminal runner → Search engine: consumes events
- Terminal runner → Summary plot: plots history