Skip to content

Docs: add goal, base guidelines, and base implemetation - #268

Open
marvin1099 wants to merge 5 commits into
rewrite/v2from
shymega/rewrite-v2/project-docs
Open

Docs: add goal, base guidelines, and base implemetation#268
marvin1099 wants to merge 5 commits into
rewrite/v2from
shymega/rewrite-v2/project-docs

Conversation

@marvin1099

Copy link
Copy Markdown
Collaborator

docs/base-guidelines.md — launcher flow overview (moved from src/wand_launcher/Docs.md and renamed).
docs/goals.md — project goals and direction (rewritten). docs/implementation.md — detailed implementation guide covering each phase's internal logic, no code.

This is not needed but i just made it as an option.

@marvin1099
marvin1099 requested a review from shymega May 27, 2026 15:50

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces comprehensive documentation for the Wand Launcher project, including the base guidelines flow draft, project goals and direction, and a detailed implementation guide. The reviewer feedback highlights a couple of inconsistencies in the documentation: a mismatch in the number of options described versus listed in the prefix setup section, and conflicting paths specified for the metadata.json file. Both comments provide clear, actionable suggestions to resolve these documentation issues.

Comment thread docs/base-guidelines.md
Comment thread docs/implementation.md Outdated
@marvin1099
marvin1099 force-pushed the shymega/rewrite-v2/project-docs branch from a48b985 to 157c637 Compare May 27, 2026 16:22
@shymega
shymega force-pushed the shymega/rewrite-v2/remove-old-code branch from d15660f to c0c0b01 Compare May 28, 2026 18:27
Base automatically changed from shymega/rewrite-v2/remove-old-code to rewrite/v2 May 28, 2026 19:15
@marvin1099
marvin1099 force-pushed the shymega/rewrite-v2/project-docs branch from 157c637 to 249b233 Compare May 28, 2026 19:23
@marvin1099 marvin1099 changed the title Add project documentation Docs: Add project documentation May 28, 2026
@marvin1099

marvin1099 commented May 28, 2026

Copy link
Copy Markdown
Collaborator Author

^ Renamed PR to fit convention (^^ There i also re-based on rewrite/v2).

@marvin1099
marvin1099 force-pushed the shymega/rewrite-v2/project-docs branch from 80de712 to 48f10d0 Compare May 28, 2026 22:22
@marvin1099 marvin1099 changed the title Docs: Add project documentation Docs: add goal, base guide, and implemetation May 28, 2026
@marvin1099 marvin1099 changed the title Docs: add goal, base guide, and implemetation Docs: add goal, base guidelines, and base implemetation May 28, 2026
@marvin1099

Copy link
Copy Markdown
Collaborator Author

Added some more details and some refinements.
Still optional to merge directly in main project to folder docs.
We can also put this in a other folder or hide it or delegate to somewhere else.

@marvin1099
marvin1099 force-pushed the shymega/rewrite-v2/project-docs branch from 238f3ea to e557637 Compare May 28, 2026 23:01
@shymega

shymega commented May 30, 2026

Copy link
Copy Markdown
Member

Again, this feels very overengineered (although I now understand the rationale for StepRunner and migrations), and I think we need to take a step back and adhere to the KISS philosophy.

It's commendable that you're trying to do so much good in the rewrite, but I worry it'll end up like before, where its unmaintainable, and quite complex to work with.

@marvin1099
marvin1099 force-pushed the shymega/rewrite-v2/project-docs branch from 1b7cff2 to 76b660b Compare June 2, 2026 19:17
@marvin1099

marvin1099 commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator Author

Again, this feels very overengineered (although I now understand the rationale for StepRunner and migrations), and I think we need to take a step back and adhere to the KISS philosophy.

It's commendable that you're trying to do so much good in the rewrite, but I worry it'll end up like before, where its unmaintainable, and quite complex to work with.

As mentioned, I don't want useless stuff, but I'm willing to add a bit more complexity for a nicer experience with the code-base or when using the launcher as a user or for modularity.

I don't think is a good idea to try to squash complexity at all opportunity's.
If there is a good use for complexity, I still think its worth it.

@shymega

shymega commented Jun 15, 2026

Copy link
Copy Markdown
Member

I suppose my point is that this launcher has historically been very simple. It has a rather straightforward execution flow, in terms of the launch options.

I'm not necessarily squashing complexity, I just question about certain processes being proposed.

I would encourage critical scrutiny of the LLM-generated content (will work on a policy for this, as I've used LLMs too!), and keeping it as barebones as possible. The KISS philosophy is worth bearing in mind.

@marvin1099

Copy link
Copy Markdown
Collaborator Author

I'm not necessarily squashing complexity, I just question about certain processes being proposed.

Ok, shure we can rethink, just don't want to run after simplicity, but of course we can still change stuff.
Its a suggestion on the main flow after all so changes are of course intended.
What do you think then needs to be reworked,
dont have to go after the entire thing we can just change what we get to.

I would encourage critical scrutiny of the LLM-generated content

I do try to reprompts and make manual edits, to try to make shure its inline with what I imagin for the launcher, sounds like I missed some things.
Can happen will just change what is not inline.

@marvin1099
marvin1099 force-pushed the shymega/rewrite-v2/project-docs branch from 76b660b to 4457a30 Compare June 16, 2026 21:48
@shymega

shymega commented Jun 23, 2026

Copy link
Copy Markdown
Member

I'm not necessarily squashing complexity, I just question about certain processes being proposed.

Ok, shure we can rethink, just don't want to run after simplicity, but of course we can still change stuff. Its a suggestion on the main flow after all so changes are of course intended. What do you think then needs to be reworked, dont have to go after the entire thing we can just change what we get to.

I think the idea of a flow is good, and I'd also like to see some sort of versioned schema for configs that the launcher could pull from GitHub. However, we really need to document a new versioning process.

I would encourage critical scrutiny of the LLM-generated content

I do try to reprompts and make manual edits, to try to make shure its inline with what I imagin for the launcher, sounds like I missed some things. Can happen will just change what is not inline.

Yeah. I only used Claude originally because the 'legacy' codebase was spaghetti-like. But I think we need to work on documenting in issues what we want, then directing Claude to that, with minimal LLM-input, and human oversight.

@marvin1099

Copy link
Copy Markdown
Collaborator Author

Yeah. I only used Claude originally because the 'legacy' codebase was spaghetti-like. But I think we need to work on documenting in issues what we want, then directing Claude to that, with minimal LLM-input, and human oversight.

I dont really have that kind of money, so I usually use opencode's free model big-pickle.
The quality is good enough because I know what I want, Claude is probably a bit better in that regard.

Other then that the idea of the docs folder was to have the ai also be able to use docs/ to understand the project.
If we where to document in issues, I would not know how to get the docs localy and I prefer to have the data the ai works on be downloaded so it dosnt have to make a bunch of web requests.
Also there is the risk of the ai reading issues intended for v1, something well crafted description to what we want like these files is pretty good for having ai references as well as humans can also use it for relevance.

I think the idea of a flow is good, and I'd also like to see some sort of versioned schema for configs that the launcher could pull from GitHub. However, we really need to document a new versioning process.

I that would be what the manifest file was supposed to be.
A collection of settings that are pulled and contain things like a UA, a build prefixes repo link, conifg version and things like that.

The config in .config was the user config file so thats just empty by default or has like a small template like entry as example.

Exact details I have not jet created, foot no note for shure.

@shymega

shymega commented Jun 27, 2026

Copy link
Copy Markdown
Member

Yeah. I only used Claude originally because the 'legacy' codebase was spaghetti-like. But I think we need to work on documenting in issues what we want, then directing Claude to that, with minimal LLM-input, and human oversight.

I dont really have that kind of money, so I usually use opencode's free model big-pickle. The quality is good enough because I know what I want, Claude is probably a bit better in that regard.

I tried Big Pickle, didn't know about it. Seems pretty good.

Other then that the idea of the docs folder was to have the ai also be able to use docs/ to understand the project. If we where to document in issues, I would not know how to get the docs localy and I prefer to have the data the ai works on be downloaded so it dosnt have to make a bunch of web requests. Also there is the risk of the ai reading issues intended for v1, something well crafted description to what we want like these files is pretty good for having ai references as well as humans can also use it for relevance.

I think we should use issues, so we can collaborate on them, and the AI is smart enough to figure out the latest context - I've done this on a different project. We could even setup a CI workflow to download an issue and its comments into a Markdown file, and the LLM can be pointed there if that works. But the planning documents would be best in an issue, with a Kanban board.

I think the idea of a flow is good, and I'd also like to see some sort of versioned schema for configs that the launcher could pull from GitHub. However, we really need to document a new versioning process.

I that would be what the manifest file was supposed to be. A collection of settings that are pulled and contain things like a UA, a build prefixes repo link, conifg version and things like that.

Yes, I see.

The config in .config was the user config file so thats just empty by default or has like a small template like entry as example.

Exact details I have not jet created, foot no note for shure.

Not sure what you mean here?

@marvin1099

marvin1099 commented Jun 28, 2026

Copy link
Copy Markdown
Collaborator Author

The config in .config was the user config file so thats just empty by default or has like a small template like entry as example
Exact details I have not jet created, foot no note for shure.

Not sure what you mean here?

I meant like setting global settings for the games; like disable the troubleshooter is saved there, just settings that can be changed and we want to allow to be changeable via the .config file, so user can then override things.

That config would be after game setting overrides if there are any like environment vars.

@shymega

shymega commented Jul 1, 2026 via email

Copy link
Copy Markdown
Member

@marvin1099

Copy link
Copy Markdown
Collaborator Author

I'd imagine you mean locally-scoped settings for the games?

Global setting are also intended.
I thoght:
config.json
games.json

For global and game settings.

I think we could use the Steam app ID, or fallback to heuristics and guess from the
Wine path.

No real need for guess work, we can just use the game path as json key, the path will usualy not change and works is run with regular wine as well

The script already needs to extract the gameexe path for running it with the bat, we can use that one.

@shymega shymega removed the tagets v2 label Jul 3, 2026
@shymega shymega modified the milestone: wand-launcher V2.0.0 Jul 3, 2026
@shymega shymega moved this from Backlog to In progress in `wand-launcher` V2.0.0 Jul 3, 2026
docs/base-guidelines.md — launcher flow overview (moved from
src/wand_launcher/Docs.md and renamed).
docs/goals.md — project goals and direction (rewritten).
docs/implementation.md — detailed implementation guide covering
each phase's internal logic, no code.
- Clarify ArgManager scope (most flags not finalised, --help optional)
- Document SettingsManager priority: CLI > env > game config > global config > defaults
- Separate game config (games.json) and global config (config.json)
- Note metadata.json is read-only via SettingsManager, only some keys overridable
- Interface abstraction auto-routes; specific impls in separate files
- Rename 'Dev mode' to 'Run from source mode' (git pull only in git context)
- Archive checksum, not extracted file checksum
- Explain why archive checksum is sufficient (no need to pre-gen per-version checksums)
- Monitor section: launcher side only, separate repo from launcher and wand app
- Data sync adds conflict prompt when both prefix and shared store have data
- Add initial file structure overview
…nto SettingsManager

- Remove separate PathManager, ArgManager sections from implementation.md
- Rewrite bootstrap order: SettingsManager -> LogManager -> Interface -> guards -> load_all -> StepRunner
- StepRunner now takes (settings, interface, log), no path_mgr or p flag
- Update file structure to remove core/args.py and core/paths.py
- Update base-guidelines.md bootstrap and merge Argument Parsing into SettingsManager
@shymega
shymega force-pushed the shymega/rewrite-v2/project-docs branch from 4457a30 to 18c6e05 Compare July 3, 2026 22:41
@shymega

shymega commented Jul 16, 2026

Copy link
Copy Markdown
Member

I'd imagine you mean locally-scoped settings for the games?

Global setting are also intended. I thoght: config.json games.json

For global and game settings.

I'm happy with this, as long as the local scope of game settings take precedence over global settings.

I think we could use the Steam app ID, or fallback to heuristics and guess from the
Wine path.

No real need for guess work, we can just use the game path as json key, the path will usualy not change and works is run with regular wine as well

I think this is flimsy. We should use the Steam App DB API to work out the game title, as not all games will have it in their path.

The script already needs to extract the gameexe path for running it with the bat, we can use that one.

Yes, but its not necessarily going to be 100% flawless - therefore, it is ever-so-slightly fragile.

@marvin1099

Copy link
Copy Markdown
Collaborator Author

I think this is flimsy. We should use the Steam App DB API to work out the game title, as not all games will have it in their path.

I meant we just use the full path as json key then we dont need the Steam app I'd at all, not all games will have that, like some itch games that are not on steam.
All games have a path and 2 games are never on the same path.

@marvin1099

Copy link
Copy Markdown
Collaborator Author

Yes, but its not necessarily going to be 100% flawless - therefore, it is ever-so-slightly fragile.

True the script could miss the game path, bit if it did it would start anyway because we need the game path to run the game in the first place.

@marvin1099

Copy link
Copy Markdown
Collaborator Author

m happy with this, as long as the local scope of game settings take precedence over global settings.

Was intended to yes, if there is no game config we can fallback to the global one. Something like that.

@shymega

shymega commented Aug 5, 2026

Copy link
Copy Markdown
Member

I think this is flimsy. We should use the Steam App DB API to work out the game title, as not all games will have it in their path.

I meant we just use the full path as json key then we dont need the Steam app I'd at all, not all games will have that, like some itch games that are not on steam. All games have a path and 2 games are never on the same path.

That's true, we do need to account for non-Steam games. However, using the SteamDB API to determine game titles could be used for more rich data in the launcher, so we shouldn't dismiss that right away.

I also would like us to finish finalising what issues we want to create for the Kanban board, then upload them based on this branch. I'm going up to the office soon, so I can spend time on the train writing up issues based on what you've done - and create from there. Thoughts on that?

@marvin1099

Copy link
Copy Markdown
Collaborator Author

That's true, we do need to account for non-Steam games. However, using the SteamDB API to determine game titles could be used for more rich data in the launcher, so we shouldn't dismiss that right away.

Personaly I prefer if we dont relied on steams db.
I prefer the launcher to be a general tool and not nessesary have a extra code path for steam games. I'm not saying I completly against it but I prefer the launcher to be a general game tool.

Using full paths must be different for all games so we can save data, but as the launcher really works the same across all games and the stored settings are more preferences then anything else so steam data won't really be that useful. I would be more inclined to consider using steam db is the settings we want to store for the game are like needed for game compatibility, but as we just let proton or similar handle it the steam db info is not that useful really.

I also would like us to finish finalising what issues we want to create for the Kanban board, then upload them based on this branch. I'm going up to the office soon, so I can spend time on the train writing up issues based on what you've done - and create from there. Thoughts on that?

Shure we can always add or remove from the Bord. See what the Bord should have I will also check on that soonish.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants