Feat MVP #1

Merged
JMR-dev merged 13 commits from feat-mvp into main 2026-04-29 02:16:38 +00:00
13 Commits
Author SHA1 Message Date
copilot-swe-agent[bot]andJMR-dev 74e37e8899 fix: apply review comment fixes for README, project_mvp, Program.cs, win.rs
Agent-Logs-Url: https://github.com/JMR-dev/covenant-setup/sessions/351376c1-0b93-4176-9cab-35d4cc72957a

Co-authored-by: JMR-dev <51939451+JMR-dev@users.noreply.github.com>
2026-04-29 02:07:20 +00:00
JMR-dev 1d832bc518 fix Rust toolchain to run against proper C binary 2026-04-28 20:58:58 -05:00
JMR-dev d64fa5bc29 status check workflow update 2026-04-28 20:48:28 -05:00
JMR-dev 0a2195bb35 status check workflow added 2026-04-28 20:29:53 -05:00
JMR-dev c87a805534 core mvp complete 2026-04-28 20:19:27 -05:00
Claude 15ba3995a5 quote args in relaunch_as_admin per CommandLineToArgvW
The previous implementation joined std::env::args() with single spaces,
which silently broke any argument containing whitespace, double quotes,
or trailing backslashes — most importantly manifest paths under
'C:\Program Files' or 'C:\Users\<name with space>'. After elevation
the relaunched process saw a different argv than the original.

quote_command_line_arg follows the standard MSVCRT / CommandLineToArgvW
encoding: quote on space/tab/quote/empty, escape embedded quotes with a
preceding backslash, and double any run of backslashes that would
otherwise be consumed by a following quote (including the closing one).

Tests cover the canonical edge cases plus a round-trip that re-parses
each encoded form with a reference argv parser to confirm fidelity.
2026-04-28 21:48:02 +00:00
Claude 65c415a59a document optional Linux cross-build path
Wine runs the test binary cleanly when targeting x86_64-pc-windows-gnu,
so wire that target's runner to wine in .cargo/config.toml. The default
windows-msvc build is unaffected.

README gains a 'Linux Cross-Build (Optional)' section with the dotnet
10 / mingw-w64 / wine prerequisites and the EnableWindowsTargeting=true
recipe needed to cross-build the net8.0-windows C# UI from Linux.
2026-04-28 17:02:38 +00:00
Claude 3adb61b751 drop unused PathResolver fields
program_files_x86 and windows_dir were stored but never read after
construction; only their string forms via admin_roots are used.
Compute them as locals in PathResolver::new instead, silencing the
dead_code warning without expanding the public surface.
2026-04-28 16:48:34 +00:00
Claude d72250eb73 resolve admin-required roots via SHGetKnownFolderPath
Replace the hardcoded "c:\\program files" / "c:\\windows" prefix
heuristic with a PathResolver::requires_admin method that matches
against runtime-resolved FOLDERID_ProgramFilesX64,
FOLDERID_ProgramFilesX86, and FOLDERID_Windows. Honors the MVP
"no hardcoded paths" rule, catches Program Files (x86) explicitly,
and works on non-C: Windows installs.

Match logic uses path-component boundaries so "C:\\Program Files
Custom" no longer false-positives against "C:\\Program Files".

Adds unit tests for the new method via a #[cfg(test)] constructor
that lets us seed roots without invoking Win32.
2026-04-28 16:39:12 +00:00
JMR-dev b31cca652b doc of the session 2026-04-27 22:21:30 -05:00
JMR-dev 506dfbd669 working install and uninstall flow in Vagrant 2026-04-27 22:06:57 -05:00
JMR-dev ea006827f5 wip 2026-04-27 18:58:52 -05:00
JMR-dev a5d6c8aa99 wip 2026-03-27 21:18:48 -05:00