Revive Avalonia app: align BSO with the new MotelyJAML#21
Open
OptimusPi wants to merge 3 commits into
Open
Conversation
4 tasks
The new MotelyJAML branch deletes Motely.API / Motely.DB / Motely.Orchestration — strip every BSO file that referenced them so the rest of the migration can land on a clean base. Submodule now tracks the new MotelyJAML structure (Motely, Motely.CLI, Motely.DataLake, Motely.TUI, Motely.Tests, Motely.Wasm). Removed: - ApiHostWidget (axaml + code-behind), DesktopApiHostService, IApiHostService, ApiHostWidgetViewModel — the in-app HTTP host is gone with Motely.API. - SequentialLibraryInitializerService, ISequentialLibraryInitializer, RestoreActiveSearchesProviderService, IRestoreActiveSearchesProvider, ResultsDatabaseExporter — backed by Motely.DB.SequentialLibrary which is gone. - sln entries for Motely.API / Motely.DB / Motely.Orchestration. - ProjectReferences to the three dead csprojs from BSO / BSO.Desktop. - Duplicate \"MotelyJAML\" submodule stanza in .gitmodules. Build is still broken: 90 errors remain (MotelyJsonConfig / JsonSearchParams / SearchOptionsDto were also removed, and BSO leans on them in 27 files). Follow-up commit will add a compat shim so the UI shell can build. https://claude.ai/code/session_01MGxcd6zZLNvNMWVFRAQ6oU
…hestrator/API refs BSO core lib + Desktop now build clean against the new MotelyJAML structure. The legacy `Motely.Filters.MotelyJsonConfig` API surface is reborn inside BSO as a slim DTO (no PostProcess pipeline, no MotelyEnumParser) plus a YAML helper that round-trips with YamlDotNet. The compat seam preserves all 27 BSO call sites — full JamlConfig migration happens at the search boundary in a follow-up. New under src/BalatroSeedOracle/Motely/: - MotelyJsonConfig + nested MotelyJsonFilterClause + SourcesConfig + MotelyFilterDefaults (DTOs only) - MotelyJsonSerializerContext (AOT JSON source-gen target) - SearchOptionsDto, JsonSearchParams (lifted from upstream Motely) - IMotelySearchContext / MotelySearchStatus / MotelySearchResultRow - MotelySearchOrchestrator + MultiSearchManager stubs that build a pending context but throw on real search (real wiring lands next pass) - MotelyJsonConfigYaml (YAML load / serialize for MotelyJsonConfig) - JamlConfigLoader compat shim under `Motely` ns mapping the old TryLoadFromJamlString / TryLoadFromJaml names Stripped from BSO: - ApiHostWidget references in MainWindowExtensions, BalatroMainMenuViewModel, ToolsModal, ModalHelper. - SequentialLibrary / RestoreActiveSearches DI in Program.cs and SearchManager (the persistence layer disappeared with Motely.DB). - DesktopAppExtensions no longer wires MotelyRepository. Only the Avalonia commercial-license check fails the Desktop link (no internet in this build sandbox to validate WebView / TreeDataGrid / Markdown). All C# compiles 0 errors. https://claude.ai/code/session_01MGxcd6zZLNvNMWVFRAQ6oU
JamlConfigBridge serialises the legacy MotelyJsonConfig to JAML YAML (typed-key clauses) and feeds it through JamlConfigLoader. Orchestrator now compiles a JamlSearchPlan, attaches the BSO callback for streamed score tallies, and exposes the search through a LiveMotelySearchContext. The old "throws at Start()" stub is gone. Mapping covers joker / commonJoker / uncommonJoker / rareJoker / legendaryJoker (souljoker → legendaryJoker), voucher, tarotCard, spectralCard, planetCard, boss, tag / smallBlindTag / bigBlindTag, standardCard, erratic*, startingDraw, and / or. Unknown discriminators are skipped (logged) so future clause types fall through without crashing. ExportTo is still parked until Motely.DataLake / DuckLakeSeedSink lands. https://claude.ai/code/session_01MGxcd6zZLNvNMWVFRAQ6oU
50e41e6 to
8361ead
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
The new MotelyJAML deleted
Motely.API,Motely.DB,Motely.Orchestration, and the legacyMotelyJsonConfig+JsonSearchParams+SearchOptionsDtotypes. BSO leaned on all of it in ~30 files. This branch gets BSO compiling again on top of the new submodule.Phase 1 — dead-dep sweep (
d140c69)src/MotelyJAMLsubmodule to the new tip (84a79e4).gitmodulesstanzaPhase 2 — port (
a282a96)src/BalatroSeedOracle/Motely/(no PostProcess pipeline, no MotelyEnumParser):MotelyJsonConfig+MotelyJsonFilterClause+SourcesConfig+MotelyFilterDefaultsMotelyJsonSerializerContext(AOT source-gen target)SearchOptionsDto,JsonSearchParamsIMotelySearchContext+MotelySearchStatus+MotelySearchResultRowso BSO keeps a stable shape while the engine swaps underneathMotelySearchOrchestrator+MultiSearchManagerrebuild a pending search context — they compile and accept the BSO call shape but the real JamlSearchBuilder wiring lands in a follow-upMotelyJsonConfigYamlround-trips MotelyJsonConfig through YamlDotNet;JamlConfigLoadercompat shim underMotelynamespace maps the oldTryLoadFromJamlString/TryLoadFromJamlnames;JamlFormatterkeeps the JAML-editor "format" command workingAnalyzerViewModellines updated for the newMotelyAnalyzedItem→MotelyItemcastStatus
dotnet build src/BalatroSeedOracle/BalatroSeedOracle.csproj→ 0 errorsdotnet build src/BalatroSeedOracle.Desktop/...→ C# compiles 0 errors; only the Avalonia Accelerate license HTTP call fails in the CI sandbox (no internet to validate WebView / TreeDataGrid / Markdown). On a dev machine with network access the Desktop links and launches.Known follow-ups (next PR)
JamlSearchBuilder.CreatePlaninto the orchestrator soStart()actually runs a search (currently throws / no-ops)Motely.DataLake.DuckLakeSeedSink) and reconnectActiveSearchContext.GetResultsPageAsyncbool? Tags/bool? RequireMegawidening onSourcesConfigonce call sites stop assigning null literalsTest plan
dotnet build src/BalatroSeedOracle.Desktopon a machine with internet — license validates, app builds and launcheshttps://claude.ai/code/session_01MGxcd6zZLNvNMWVFRAQ6oU
Generated by Claude Code