quickhatch 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. quickhatch-0.1.0/.github/CODEOWNERS +4 -0
  2. quickhatch-0.1.0/.github/FUNDING.yml +3 -0
  3. quickhatch-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +74 -0
  4. quickhatch-0.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. quickhatch-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +36 -0
  6. quickhatch-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +22 -0
  7. quickhatch-0.1.0/.github/workflows/ci.yml +31 -0
  8. quickhatch-0.1.0/.github/workflows/full-matrix.yml +40 -0
  9. quickhatch-0.1.0/.github/workflows/publish-pypi.yml +51 -0
  10. quickhatch-0.1.0/.github/workflows/release.yml +74 -0
  11. quickhatch-0.1.0/.gitignore +31 -0
  12. quickhatch-0.1.0/.pre-commit-config.yaml +19 -0
  13. quickhatch-0.1.0/CHANGELOG.md +126 -0
  14. quickhatch-0.1.0/CODE_OF_CONDUCT.md +49 -0
  15. quickhatch-0.1.0/CONTRIBUTING.md +137 -0
  16. quickhatch-0.1.0/GOVERNANCE.md +41 -0
  17. quickhatch-0.1.0/INSTRUCTIONS.md +73 -0
  18. quickhatch-0.1.0/LICENSE +50 -0
  19. quickhatch-0.1.0/PKG-INFO +295 -0
  20. quickhatch-0.1.0/README.md +195 -0
  21. quickhatch-0.1.0/SECURITY.md +67 -0
  22. quickhatch-0.1.0/docs/ARCHITECTURE.md +174 -0
  23. quickhatch-0.1.0/docs/arch-install-example.sh +86 -0
  24. quickhatch-0.1.0/docs/internal/agent-state.md +115 -0
  25. quickhatch-0.1.0/docs/internal/app-package-partial-success-test-design.md +210 -0
  26. quickhatch-0.1.0/docs/internal/live-model-gauntlet-gemini-3.1-flash-lite-holdout.md +75 -0
  27. quickhatch-0.1.0/docs/internal/live-model-gauntlet-gemini-3.1-flash-lite.md +122 -0
  28. quickhatch-0.1.0/docs/internal/vm-certification-arm64-2026-06-02.md +68 -0
  29. quickhatch-0.1.0/docs/model-recommendations.md +61 -0
  30. quickhatch-0.1.0/docs/screenshots/kde-plasma-after-migration.png +0 -0
  31. quickhatch-0.1.0/docs/testing-in-vm.md +108 -0
  32. quickhatch-0.1.0/docs/troubleshooting.md +156 -0
  33. quickhatch-0.1.0/pyproject.toml +96 -0
  34. quickhatch-0.1.0/scripts/live_model_gauntlet.py +825 -0
  35. quickhatch-0.1.0/src/quickhatch/__init__.py +11 -0
  36. quickhatch-0.1.0/src/quickhatch/__main__.py +6 -0
  37. quickhatch-0.1.0/src/quickhatch/ai/__init__.py +1 -0
  38. quickhatch-0.1.0/src/quickhatch/ai/install_primer.py +337 -0
  39. quickhatch-0.1.0/src/quickhatch/ai/instruction_gen.py +231 -0
  40. quickhatch-0.1.0/src/quickhatch/ai/model_list.py +140 -0
  41. quickhatch-0.1.0/src/quickhatch/ai/recipe_apply.py +178 -0
  42. quickhatch-0.1.0/src/quickhatch/analysis/__init__.py +1 -0
  43. quickhatch-0.1.0/src/quickhatch/analysis/app_catalog.py +628 -0
  44. quickhatch-0.1.0/src/quickhatch/analysis/app_mapper.py +193 -0
  45. quickhatch-0.1.0/src/quickhatch/analysis/distro_engine.py +84 -0
  46. quickhatch-0.1.0/src/quickhatch/analysis/driver_check.py +83 -0
  47. quickhatch-0.1.0/src/quickhatch/bridge/__init__.py +1 -0
  48. quickhatch-0.1.0/src/quickhatch/bridge/display.py +136 -0
  49. quickhatch-0.1.0/src/quickhatch/bridge/server.py +886 -0
  50. quickhatch-0.1.0/src/quickhatch/cli.py +1188 -0
  51. quickhatch-0.1.0/src/quickhatch/config.py +463 -0
  52. quickhatch-0.1.0/src/quickhatch/console.py +59 -0
  53. quickhatch-0.1.0/src/quickhatch/data/app_alternatives.json +222 -0
  54. quickhatch-0.1.0/src/quickhatch/data/app_catalog.generated.json +90774 -0
  55. quickhatch-0.1.0/src/quickhatch/data/app_catalog.overrides.json +54159 -0
  56. quickhatch-0.1.0/src/quickhatch/data/distros.json +110 -0
  57. quickhatch-0.1.0/src/quickhatch/data/driver_db.json +18 -0
  58. quickhatch-0.1.0/src/quickhatch/data/gallery/github-1amsimp1e-dots.webp +0 -0
  59. quickhatch-0.1.0/src/quickhatch/data/gallery/github-2kabhishek-dots2k.webp +0 -0
  60. quickhatch-0.1.0/src/quickhatch/data/gallery/github-2ssk-dot-files.webp +0 -0
  61. quickhatch-0.1.0/src/quickhatch/data/gallery/github-3d3f-ii-sddm-theme.webp +0 -0
  62. quickhatch-0.1.0/src/quickhatch/data/gallery/github-acaibowlz-niri-setup.webp +0 -0
  63. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ad1822-hyprdots.webp +0 -0
  64. quickhatch-0.1.0/src/quickhatch/data/gallery/github-adriankarlen-bar-wezterm.webp +0 -0
  65. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ahmad9059-hyprflux.webp +0 -0
  66. quickhatch-0.1.0/src/quickhatch/data/gallery/github-allaman-nvim.webp +0 -0
  67. quickhatch-0.1.0/src/quickhatch/data/gallery/github-anotherhadi-nixy.webp +0 -0
  68. quickhatch-0.1.0/src/quickhatch/data/gallery/github-artart222-codeart.webp +0 -0
  69. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ascaniolamp-hyprlain.webp +0 -0
  70. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ashish0kumar-windots.webp +0 -0
  71. quickhatch-0.1.0/src/quickhatch/data/gallery/github-athxrvx-idempotentsystems.webp +0 -0
  72. quickhatch-0.1.0/src/quickhatch/data/gallery/github-avivace-dotfiles.webp +0 -0
  73. quickhatch-0.1.0/src/quickhatch/data/gallery/github-avtzis-awesome-linux-ricing.webp +0 -0
  74. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ayamir-dotfiles.webp +0 -0
  75. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ayamir-nvimdots.webp +0 -0
  76. quickhatch-0.1.0/src/quickhatch/data/gallery/github-aymanlyesri-archeclipse.webp +0 -0
  77. quickhatch-0.1.0/src/quickhatch/data/gallery/github-benmezger-dotfiles.webp +0 -0
  78. quickhatch-0.1.0/src/quickhatch/data/gallery/github-bertof-nix-rice.webp +0 -0
  79. quickhatch-0.1.0/src/quickhatch/data/gallery/github-bluemancz-hyprmod.webp +0 -0
  80. quickhatch-0.1.0/src/quickhatch/data/gallery/github-caelestia-dots-shell.webp +0 -0
  81. quickhatch-0.1.0/src/quickhatch/data/gallery/github-caioax-lyne-dots.webp +0 -0
  82. quickhatch-0.1.0/src/quickhatch/data/gallery/github-cebem1nt-dotfiles.webp +0 -0
  83. quickhatch-0.1.0/src/quickhatch/data/gallery/github-christianlempa-dotfiles.webp +0 -0
  84. quickhatch-0.1.0/src/quickhatch/data/gallery/github-command-z-z-arch-dotfiles.webp +0 -0
  85. quickhatch-0.1.0/src/quickhatch/data/gallery/github-cosmicnvim-cosmicnvim.webp +0 -0
  86. quickhatch-0.1.0/src/quickhatch/data/gallery/github-crissnb-dynamic-island-sketchybar.webp +0 -0
  87. quickhatch-0.1.0/src/quickhatch/data/gallery/github-cxorz-dotfiles-hyprland.webp +0 -0
  88. quickhatch-0.1.0/src/quickhatch/data/gallery/github-cybersnake223-hypr.webp +0 -0
  89. quickhatch-0.1.0/src/quickhatch/data/gallery/github-cybrcore-cybrdots.webp +0 -0
  90. quickhatch-0.1.0/src/quickhatch/data/gallery/github-danihek-hellwal.webp +0 -0
  91. quickhatch-0.1.0/src/quickhatch/data/gallery/github-danihek-themecord.webp +0 -0
  92. quickhatch-0.1.0/src/quickhatch/data/gallery/github-darkkal44-qylock.webp +0 -0
  93. quickhatch-0.1.0/src/quickhatch/data/gallery/github-datsfilipe-dotfiles.webp +0 -0
  94. quickhatch-0.1.0/src/quickhatch/data/gallery/github-deathbeam-dotfiles.webp +0 -0
  95. quickhatch-0.1.0/src/quickhatch/data/gallery/github-debuggyo-exo.webp +0 -0
  96. quickhatch-0.1.0/src/quickhatch/data/gallery/github-denisse-dev-dotfiles.webp +0 -0
  97. quickhatch-0.1.0/src/quickhatch/data/gallery/github-deridray-dotfiles.webp +0 -0
  98. quickhatch-0.1.0/src/quickhatch/data/gallery/github-diinki-diinki-aero.webp +0 -0
  99. quickhatch-0.1.0/src/quickhatch/data/gallery/github-diinki-diinki-retrofuture.webp +0 -0
  100. quickhatch-0.1.0/src/quickhatch/data/gallery/github-diinki-linux-retroism.webp +0 -0
  101. quickhatch-0.1.0/src/quickhatch/data/gallery/github-dikiaap-dotfiles.webp +0 -0
  102. quickhatch-0.1.0/src/quickhatch/data/gallery/github-dileep-kishore-nixos-config.webp +0 -0
  103. quickhatch-0.1.0/src/quickhatch/data/gallery/github-dmadisetti-dots.webp +0 -0
  104. quickhatch-0.1.0/src/quickhatch/data/gallery/github-driesvints-dotfiles.webp +0 -0
  105. quickhatch-0.1.0/src/quickhatch/data/gallery/github-dusklinux-dusky.webp +0 -0
  106. quickhatch-0.1.0/src/quickhatch/data/gallery/github-dustinlyons-nixos-config.webp +0 -0
  107. quickhatch-0.1.0/src/quickhatch/data/gallery/github-dybdeskarphet-dotfiles.webp +0 -0
  108. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ecosse3-nvim.webp +0 -0
  109. quickhatch-0.1.0/src/quickhatch/data/gallery/github-edu-flores-linux-dotfiles.webp +0 -0
  110. quickhatch-0.1.0/src/quickhatch/data/gallery/github-elifouts-dotfiles.webp +0 -0
  111. quickhatch-0.1.0/src/quickhatch/data/gallery/github-elkowar-yolk.webp +0 -0
  112. quickhatch-0.1.0/src/quickhatch/data/gallery/github-elpritchos-omadora.webp +0 -0
  113. quickhatch-0.1.0/src/quickhatch/data/gallery/github-elysiaos-elysiaos.webp +0 -0
  114. quickhatch-0.1.0/src/quickhatch/data/gallery/github-end-4-dots-hyprland.webp +0 -0
  115. quickhatch-0.1.0/src/quickhatch/data/gallery/github-endeavouros-team-endeavouros-i3wm-setup.webp +0 -0
  116. quickhatch-0.1.0/src/quickhatch/data/gallery/github-exploitoverload-pwnixos.webp +0 -0
  117. quickhatch-0.1.0/src/quickhatch/data/gallery/github-felipecrs-dotfiles.webp +0 -0
  118. quickhatch-0.1.0/src/quickhatch/data/gallery/github-firestreaker2-dotfiles.webp +0 -0
  119. quickhatch-0.1.0/src/quickhatch/data/gallery/github-flyingcakes85-lovebites.webp +0 -0
  120. quickhatch-0.1.0/src/quickhatch/data/gallery/github-folke-dot.webp +0 -0
  121. quickhatch-0.1.0/src/quickhatch/data/gallery/github-frogprog09-my-linux.webp +0 -0
  122. quickhatch-0.1.0/src/quickhatch/data/gallery/github-frost-phoenix-nixos-config.webp +0 -0
  123. quickhatch-0.1.0/src/quickhatch/data/gallery/github-gabrieltenma-dotfiles-gnm.webp +0 -0
  124. quickhatch-0.1.0/src/quickhatch/data/gallery/github-gf3-dotfiles.webp +0 -0
  125. quickhatch-0.1.0/src/quickhatch/data/gallery/github-gh0stzk-dotfiles.webp +0 -0
  126. quickhatch-0.1.0/src/quickhatch/data/gallery/github-gnuunixchad-dotfiles.webp +0 -0
  127. quickhatch-0.1.0/src/quickhatch/data/gallery/github-gpakosz-tmux.webp +0 -0
  128. quickhatch-0.1.0/src/quickhatch/data/gallery/github-gvolpe-nix-config.webp +0 -0
  129. quickhatch-0.1.0/src/quickhatch/data/gallery/github-haaarshsingh-dots.webp +0 -0
  130. quickhatch-0.1.0/src/quickhatch/data/gallery/github-hancore-linux-waybar-themes.webp +0 -0
  131. quickhatch-0.1.0/src/quickhatch/data/gallery/github-heapbytes-dotfiles.webp +0 -0
  132. quickhatch-0.1.0/src/quickhatch/data/gallery/github-heisenburgh-pixarch.webp +0 -0
  133. quickhatch-0.1.0/src/quickhatch/data/gallery/github-hlissner-dotfiles.webp +0 -0
  134. quickhatch-0.1.0/src/quickhatch/data/gallery/github-hyprland-community-hyprls.webp +0 -0
  135. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ikz87-dots-2-0.webp +0 -0
  136. quickhatch-0.1.0/src/quickhatch/data/gallery/github-iogamaster-dotfiles.webp +0 -0
  137. quickhatch-0.1.0/src/quickhatch/data/gallery/github-issmirnov-dotfiles.webp +0 -0
  138. quickhatch-0.1.0/src/quickhatch/data/gallery/github-jakoolit-arch-hyprland.webp +0 -0
  139. quickhatch-0.1.0/src/quickhatch/data/gallery/github-jakoolit-fedora-hyprland.webp +0 -0
  140. quickhatch-0.1.0/src/quickhatch/data/gallery/github-jakoolit-hyprland-dots.webp +0 -0
  141. quickhatch-0.1.0/src/quickhatch/data/gallery/github-jakoolit-opensuse-hyprland.webp +0 -0
  142. quickhatch-0.1.0/src/quickhatch/data/gallery/github-javalsai-lidm.webp +0 -0
  143. quickhatch-0.1.0/src/quickhatch/data/gallery/github-jessfraz-dotfiles.webp +0 -0
  144. quickhatch-0.1.0/src/quickhatch/data/gallery/github-jguer-dotfiles.webp +0 -0
  145. quickhatch-0.1.0/src/quickhatch/data/gallery/github-johackim-dotfiles.webp +0 -0
  146. quickhatch-0.1.0/src/quickhatch/data/gallery/github-justus0405-i3wm-dotfiles.webp +0 -0
  147. quickhatch-0.1.0/src/quickhatch/data/gallery/github-keyitdev-dotfiles.webp +0 -0
  148. quickhatch-0.1.0/src/quickhatch/data/gallery/github-keyitdev-sddm-astronaut-theme.webp +0 -0
  149. quickhatch-0.1.0/src/quickhatch/data/gallery/github-klaxalk-linux-setup.webp +0 -0
  150. quickhatch-0.1.0/src/quickhatch/data/gallery/github-koeqaife-hyprland-material-you.webp +0 -0
  151. quickhatch-0.1.0/src/quickhatch/data/gallery/github-kutsan-dotfiles.webp +0 -0
  152. quickhatch-0.1.0/src/quickhatch/data/gallery/github-lolei-razer-cli.webp +0 -0
  153. quickhatch-0.1.0/src/quickhatch/data/gallery/github-m4xshen-dotfiles.webp +0 -0
  154. quickhatch-0.1.0/src/quickhatch/data/gallery/github-madic-creates-sway-de.webp +0 -0
  155. quickhatch-0.1.0/src/quickhatch/data/gallery/github-marcusmix-dotfiles.webp +0 -0
  156. quickhatch-0.1.0/src/quickhatch/data/gallery/github-martins3-my-linux-config.webp +0 -0
  157. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mastermindzh-dotfiles.webp +0 -0
  158. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mathix420-free-the-web-apps.webp +0 -0
  159. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mattmc3-antidote.webp +0 -0
  160. quickhatch-0.1.0/src/quickhatch/data/gallery/github-maytermux-mytermux.webp +0 -0
  161. quickhatch-0.1.0/src/quickhatch/data/gallery/github-meain-dotfiles.webp +0 -0
  162. quickhatch-0.1.0/src/quickhatch/data/gallery/github-meowrch-meowrch.webp +0 -0
  163. quickhatch-0.1.0/src/quickhatch/data/gallery/github-misterio77-nix-config.webp +0 -0
  164. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mrusme-dotfiles.webp +0 -0
  165. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mrusme-gomphotherium.webp +0 -0
  166. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mubin-thinks-minimal-wm-config.webp +0 -0
  167. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mutewinter-dot-vim.webp +0 -0
  168. quickhatch-0.1.0/src/quickhatch/data/gallery/github-myamusashi-vast-shell.webp +0 -0
  169. quickhatch-0.1.0/src/quickhatch/data/gallery/github-mylinuxforwork-dotfiles.webp +0 -0
  170. quickhatch-0.1.0/src/quickhatch/data/gallery/github-n6v26r-dotfiles.webp +0 -0
  171. quickhatch-0.1.0/src/quickhatch/data/gallery/github-neurarian-matshell.webp +0 -0
  172. quickhatch-0.1.0/src/quickhatch/data/gallery/github-nickjj-dotfiles.webp +0 -0
  173. quickhatch-0.1.0/src/quickhatch/data/gallery/github-nicknisi-dotfiles.webp +0 -0
  174. quickhatch-0.1.0/src/quickhatch/data/gallery/github-nicksp-dotfiles.webp +0 -0
  175. quickhatch-0.1.0/src/quickhatch/data/gallery/github-nix-darwin-nix-darwin.webp +0 -0
  176. quickhatch-0.1.0/src/quickhatch/data/gallery/github-noctalia-dev-noctalia-shell.webp +0 -0
  177. quickhatch-0.1.0/src/quickhatch/data/gallery/github-nocturnussx-hyprland-dotfiles.webp +0 -0
  178. quickhatch-0.1.0/src/quickhatch/data/gallery/github-notmugil-dotfiles.webp +0 -0
  179. quickhatch-0.1.0/src/quickhatch/data/gallery/github-notneelpatel-wallpaperthemeconverter.webp +0 -0
  180. quickhatch-0.1.0/src/quickhatch/data/gallery/github-nwg-piotr-nwg-shell-config.webp +0 -0
  181. quickhatch-0.1.0/src/quickhatch/data/gallery/github-opensuse-opensuseway.webp +0 -0
  182. quickhatch-0.1.0/src/quickhatch/data/gallery/github-orhun-dotfiles.webp +0 -0
  183. quickhatch-0.1.0/src/quickhatch/data/gallery/github-oughie-clock-rs.webp +0 -0
  184. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ozwaldorf-lutgen-rs.webp +0 -0
  185. quickhatch-0.1.0/src/quickhatch/data/gallery/github-pablonoya-awesomewm-configuration.webp +0 -0
  186. quickhatch-0.1.0/src/quickhatch/data/gallery/github-pazl27-dotfiles.webp +0 -0
  187. quickhatch-0.1.0/src/quickhatch/data/gallery/github-pinpox-base16-universal-manager.webp +0 -0
  188. quickhatch-0.1.0/src/quickhatch/data/gallery/github-potamides-dotfiles.webp +0 -0
  189. quickhatch-0.1.0/src/quickhatch/data/gallery/github-prasanthrangan-hyprdots.webp +0 -0
  190. quickhatch-0.1.0/src/quickhatch/data/gallery/github-qxb3-conf.webp +0 -0
  191. quickhatch-0.1.0/src/quickhatch/data/gallery/github-qxb3-fum.webp +0 -0
  192. quickhatch-0.1.0/src/quickhatch/data/gallery/github-r0naldoom-dotfiles.webp +0 -0
  193. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ray-x-nvim.webp +0 -0
  194. quickhatch-0.1.0/src/quickhatch/data/gallery/github-rayhaanfay-xfce-creation-of-adam.webp +0 -0
  195. quickhatch-0.1.0/src/quickhatch/data/gallery/github-redyf-nixdots.webp +0 -0
  196. quickhatch-0.1.0/src/quickhatch/data/gallery/github-retrozinndev-colorshell.webp +0 -0
  197. quickhatch-0.1.0/src/quickhatch/data/gallery/github-riccardopp-dotfiles.webp +0 -0
  198. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ryan4yin-nix-config.webp +0 -0
  199. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ryan4yin-nix-darwin-kickstarter.webp +0 -0
  200. quickhatch-0.1.0/src/quickhatch/data/gallery/github-s4nkalp-hyprland.webp +0 -0
  201. quickhatch-0.1.0/src/quickhatch/data/gallery/github-s4nkalp-modus.webp +0 -0
  202. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sangrokjung-claude-forge.webp +0 -0
  203. quickhatch-0.1.0/src/quickhatch/data/gallery/github-saschagrunert-dotfiles.webp +0 -0
  204. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sbalghari-sbdots.webp +0 -0
  205. quickhatch-0.1.0/src/quickhatch/data/gallery/github-schmeekygeek-dotfiles.webp +0 -0
  206. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sejjy-mechabar.webp +0 -0
  207. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sekiryl-hyprdots.webp +0 -0
  208. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sh1zicus-dots-hyprland.webp +0 -0
  209. quickhatch-0.1.0/src/quickhatch/data/gallery/github-shell-ninja-hyprconf-v2.webp +0 -0
  210. quickhatch-0.1.0/src/quickhatch/data/gallery/github-shell-ninja-hyprconf.webp +0 -0
  211. quickhatch-0.1.0/src/quickhatch/data/gallery/github-shikikan-neko08-nyartix-rice.webp +0 -0
  212. quickhatch-0.1.0/src/quickhatch/data/gallery/github-siduck-chadwm.webp +0 -0
  213. quickhatch-0.1.0/src/quickhatch/data/gallery/github-simonvic-dotfiles.webp +0 -0
  214. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sirethanator-hyprland-dots.webp +0 -0
  215. quickhatch-0.1.0/src/quickhatch/data/gallery/github-sly-harvey-nixos.webp +0 -0
  216. quickhatch-0.1.0/src/quickhatch/data/gallery/github-snowarch-inir.webp +0 -0
  217. quickhatch-0.1.0/src/quickhatch/data/gallery/github-swarsel-dotfiles.webp +0 -0
  218. quickhatch-0.1.0/src/quickhatch/data/gallery/github-swaykh-dotfiles.webp +0 -0
  219. quickhatch-0.1.0/src/quickhatch/data/gallery/github-szorfein-dotfiles.webp +0 -0
  220. quickhatch-0.1.0/src/quickhatch/data/gallery/github-szorfein-dots.webp +0 -0
  221. quickhatch-0.1.0/src/quickhatch/data/gallery/github-techdufus-dotfiles.webp +0 -0
  222. quickhatch-0.1.0/src/quickhatch/data/gallery/github-tsm-061-ctos.webp +0 -0
  223. quickhatch-0.1.0/src/quickhatch/data/gallery/github-vallen217-dotfiles.webp +0 -0
  224. quickhatch-0.1.0/src/quickhatch/data/gallery/github-victorsosamx-vshyprland-manager.webp +0 -0
  225. quickhatch-0.1.0/src/quickhatch/data/gallery/github-victorsosamx-vswaybar-studio.webp +0 -0
  226. quickhatch-0.1.0/src/quickhatch/data/gallery/github-viegphunt-dotfiles.webp +0 -0
  227. quickhatch-0.1.0/src/quickhatch/data/gallery/github-vyrx-dev-symphony.webp +0 -0
  228. quickhatch-0.1.0/src/quickhatch/data/gallery/github-xero-dotfiles.webp +0 -0
  229. quickhatch-0.1.0/src/quickhatch/data/gallery/github-xnm1-linux-nixos-hyprland-config-dotfiles.webp +0 -0
  230. quickhatch-0.1.0/src/quickhatch/data/gallery/github-youwes09-ateon.webp +0 -0
  231. quickhatch-0.1.0/src/quickhatch/data/gallery/github-yunfachi-nix-config.webp +0 -0
  232. quickhatch-0.1.0/src/quickhatch/data/gallery/github-yurihikari-garuda-hyprdots.webp +0 -0
  233. quickhatch-0.1.0/src/quickhatch/data/gallery/github-zemmsoares-awesome-rices.webp +0 -0
  234. quickhatch-0.1.0/src/quickhatch/data/gallery/github-zhaleff-blacknode.webp +0 -0
  235. quickhatch-0.1.0/src/quickhatch/data/gallery/github-ziap-dotfiles.webp +0 -0
  236. quickhatch-0.1.0/src/quickhatch/data/gallery/github-zproger-bspwm-dotfiles.webp +0 -0
  237. quickhatch-0.1.0/src/quickhatch/data/gallery/gnome-12dampb.webp +0 -0
  238. quickhatch-0.1.0/src/quickhatch/data/gallery/hyprland-1b4izs2.webp +0 -0
  239. quickhatch-0.1.0/src/quickhatch/data/gallery/hyprland-1fp86p7.webp +0 -0
  240. quickhatch-0.1.0/src/quickhatch/data/gallery/hyprland-1inxosk.webp +0 -0
  241. quickhatch-0.1.0/src/quickhatch/data/gallery/hyprland-1jtjljz.webp +0 -0
  242. quickhatch-0.1.0/src/quickhatch/data/gallery/hyprland-1jv48oq.webp +0 -0
  243. quickhatch-0.1.0/src/quickhatch/data/gallery/i3wm-m7w790.webp +0 -0
  244. quickhatch-0.1.0/src/quickhatch/data/gallery/unixporn-1k7c8i1.webp +0 -0
  245. quickhatch-0.1.0/src/quickhatch/data/gallery/unixporn-1kcebee.webp +0 -0
  246. quickhatch-0.1.0/src/quickhatch/data/gallery/unixporn-5crgng.webp +0 -0
  247. quickhatch-0.1.0/src/quickhatch/data/gallery/unixporn-nhomed.webp +0 -0
  248. quickhatch-0.1.0/src/quickhatch/data/gallery/unixporn-r5ot7x.webp +0 -0
  249. quickhatch-0.1.0/src/quickhatch/data/gallery.json +8850 -0
  250. quickhatch-0.1.0/src/quickhatch/data/gallery_descriptions.json +426 -0
  251. quickhatch-0.1.0/src/quickhatch/data/install_primers/_index.json +253 -0
  252. quickhatch-0.1.0/src/quickhatch/data/install_primers/alpine.md +118 -0
  253. quickhatch-0.1.0/src/quickhatch/data/install_primers/arch.md +30 -0
  254. quickhatch-0.1.0/src/quickhatch/data/install_primers/artix.md +69 -0
  255. quickhatch-0.1.0/src/quickhatch/data/install_primers/bazzite.md +61 -0
  256. quickhatch-0.1.0/src/quickhatch/data/install_primers/cachyos.md +53 -0
  257. quickhatch-0.1.0/src/quickhatch/data/install_primers/common-pre-reboot-rules.md +200 -0
  258. quickhatch-0.1.0/src/quickhatch/data/install_primers/debian.md +73 -0
  259. quickhatch-0.1.0/src/quickhatch/data/install_primers/elementary.md +67 -0
  260. quickhatch-0.1.0/src/quickhatch/data/install_primers/endeavouros.md +39 -0
  261. quickhatch-0.1.0/src/quickhatch/data/install_primers/families/arch-family.md +294 -0
  262. quickhatch-0.1.0/src/quickhatch/data/install_primers/families/debian-family.md +147 -0
  263. quickhatch-0.1.0/src/quickhatch/data/install_primers/families/fedora-family.md +240 -0
  264. quickhatch-0.1.0/src/quickhatch/data/install_primers/fedora-silverblue.md +78 -0
  265. quickhatch-0.1.0/src/quickhatch/data/install_primers/fedora.md +51 -0
  266. quickhatch-0.1.0/src/quickhatch/data/install_primers/garuda.md +90 -0
  267. quickhatch-0.1.0/src/quickhatch/data/install_primers/gentoo.md +160 -0
  268. quickhatch-0.1.0/src/quickhatch/data/install_primers/kali.md +97 -0
  269. quickhatch-0.1.0/src/quickhatch/data/install_primers/kde-neon.md +61 -0
  270. quickhatch-0.1.0/src/quickhatch/data/install_primers/linux-mint.md +49 -0
  271. quickhatch-0.1.0/src/quickhatch/data/install_primers/manjaro.md +80 -0
  272. quickhatch-0.1.0/src/quickhatch/data/install_primers/mx-linux.md +65 -0
  273. quickhatch-0.1.0/src/quickhatch/data/install_primers/nixos.md +135 -0
  274. quickhatch-0.1.0/src/quickhatch/data/install_primers/nobara.md +55 -0
  275. quickhatch-0.1.0/src/quickhatch/data/install_primers/opensuse-leap.md +44 -0
  276. quickhatch-0.1.0/src/quickhatch/data/install_primers/opensuse-tumbleweed.md +143 -0
  277. quickhatch-0.1.0/src/quickhatch/data/install_primers/parrot.md +70 -0
  278. quickhatch-0.1.0/src/quickhatch/data/install_primers/pop-os.md +80 -0
  279. quickhatch-0.1.0/src/quickhatch/data/install_primers/rhel-clones.md +78 -0
  280. quickhatch-0.1.0/src/quickhatch/data/install_primers/ubuntu.md +99 -0
  281. quickhatch-0.1.0/src/quickhatch/data/install_primers/void.md +121 -0
  282. quickhatch-0.1.0/src/quickhatch/data/install_primers/zorin.md +49 -0
  283. quickhatch-0.1.0/src/quickhatch/export/__init__.py +1 -0
  284. quickhatch-0.1.0/src/quickhatch/gallery/__init__.py +15 -0
  285. quickhatch-0.1.0/src/quickhatch/gallery/build.py +91 -0
  286. quickhatch-0.1.0/src/quickhatch/gallery/common.py +492 -0
  287. quickhatch-0.1.0/src/quickhatch/gallery/components.py +475 -0
  288. quickhatch-0.1.0/src/quickhatch/gallery/curate.py +398 -0
  289. quickhatch-0.1.0/src/quickhatch/gallery/dedupe.py +93 -0
  290. quickhatch-0.1.0/src/quickhatch/gallery/describe.py +204 -0
  291. quickhatch-0.1.0/src/quickhatch/gallery/extract.py +467 -0
  292. quickhatch-0.1.0/src/quickhatch/gallery/filter.py +492 -0
  293. quickhatch-0.1.0/src/quickhatch/gallery/library.py +35 -0
  294. quickhatch-0.1.0/src/quickhatch/gallery/llm_extract.py +495 -0
  295. quickhatch-0.1.0/src/quickhatch/gallery/scrape.py +278 -0
  296. quickhatch-0.1.0/src/quickhatch/gallery/verify.py +60 -0
  297. quickhatch-0.1.0/src/quickhatch/gui/__init__.py +1 -0
  298. quickhatch-0.1.0/src/quickhatch/gui/app.html +5212 -0
  299. quickhatch-0.1.0/src/quickhatch/gui/index.html +38 -0
  300. quickhatch-0.1.0/src/quickhatch/gui/server.py +8775 -0
  301. quickhatch-0.1.0/src/quickhatch/media/__init__.py +1 -0
  302. quickhatch-0.1.0/src/quickhatch/media/iso_download.py +94 -0
  303. quickhatch-0.1.0/src/quickhatch/media/usb_writer.py +184 -0
  304. quickhatch-0.1.0/src/quickhatch/scanners/__init__.py +1 -0
  305. quickhatch-0.1.0/src/quickhatch/scanners/apps.py +458 -0
  306. quickhatch-0.1.0/src/quickhatch/scanners/files.py +118 -0
  307. quickhatch-0.1.0/src/quickhatch/scanners/hardware.py +713 -0
  308. quickhatch-0.1.0/src/quickhatch/scanners/settings.py +286 -0
  309. quickhatch-0.1.0/src/quickhatch/secrets.py +86 -0
  310. quickhatch-0.1.0/src/quickhatch/setup/__init__.py +65 -0
  311. quickhatch-0.1.0/src/quickhatch/setup/attempts.py +199 -0
  312. quickhatch-0.1.0/src/quickhatch/setup/audit.py +1245 -0
  313. quickhatch-0.1.0/src/quickhatch/setup/capabilities.py +1617 -0
  314. quickhatch-0.1.0/src/quickhatch/setup/certify.py +527 -0
  315. quickhatch-0.1.0/src/quickhatch/setup/debugtools.py +139 -0
  316. quickhatch-0.1.0/src/quickhatch/setup/facts.py +646 -0
  317. quickhatch-0.1.0/src/quickhatch/setup/failure.py +137 -0
  318. quickhatch-0.1.0/src/quickhatch/setup/families/__init__.py +39 -0
  319. quickhatch-0.1.0/src/quickhatch/setup/families/arch.py +44 -0
  320. quickhatch-0.1.0/src/quickhatch/setup/families/base.py +362 -0
  321. quickhatch-0.1.0/src/quickhatch/setup/families/debian.py +80 -0
  322. quickhatch-0.1.0/src/quickhatch/setup/families/fedora.py +83 -0
  323. quickhatch-0.1.0/src/quickhatch/setup/families/ubuntu.py +54 -0
  324. quickhatch-0.1.0/src/quickhatch/setup/fuzz.py +478 -0
  325. quickhatch-0.1.0/src/quickhatch/setup/health.py +869 -0
  326. quickhatch-0.1.0/src/quickhatch/setup/operations.py +91 -0
  327. quickhatch-0.1.0/src/quickhatch/setup/orchestrator.py +11042 -0
  328. quickhatch-0.1.0/src/quickhatch/setup/planner.py +1470 -0
  329. quickhatch-0.1.0/src/quickhatch/setup/preflight.py +1479 -0
  330. quickhatch-0.1.0/src/quickhatch/setup/release_smoke.py +297 -0
  331. quickhatch-0.1.0/src/quickhatch/setup/replay.py +1126 -0
  332. quickhatch-0.1.0/src/quickhatch/setup/resolver.py +342 -0
  333. quickhatch-0.1.0/src/quickhatch/setup/runlog.py +281 -0
  334. quickhatch-0.1.0/src/quickhatch/setup/support_bundle.py +594 -0
  335. quickhatch-0.1.0/src/quickhatch/setup/types.py +281 -0
  336. quickhatch-0.1.0/src/quickhatch/wizard/__init__.py +1 -0
  337. quickhatch-0.1.0/src/quickhatch/wizard/additional.py +36 -0
  338. quickhatch-0.1.0/src/quickhatch/wizard/ai_setup.py +292 -0
  339. quickhatch-0.1.0/src/quickhatch/wizard/bridge.py +231 -0
  340. quickhatch-0.1.0/src/quickhatch/wizard/compatibility.py +99 -0
  341. quickhatch-0.1.0/src/quickhatch/wizard/distro.py +110 -0
  342. quickhatch-0.1.0/src/quickhatch/wizard/export.py +579 -0
  343. quickhatch-0.1.0/src/quickhatch/wizard/questionnaire.py +132 -0
  344. quickhatch-0.1.0/src/quickhatch/wizard/scan.py +75 -0
  345. quickhatch-0.1.0/src/quickhatch/wizard/ssh.py +172 -0
  346. quickhatch-0.1.0/src/quickhatch/wizard/usb.py +252 -0
  347. quickhatch-0.1.0/src/quickhatch/wizard/vm_verify.py +1473 -0
  348. quickhatch-0.1.0/src/quickhatch/wizard/welcome.py +43 -0
  349. quickhatch-0.1.0/tests/__init__.py +0 -0
  350. quickhatch-0.1.0/tests/conftest.py +25 -0
  351. quickhatch-0.1.0/tests/fixtures/app_mapping_scenarios.yaml +490 -0
  352. quickhatch-0.1.0/tests/fixtures/app_partial_success_scenarios.yaml +2768 -0
  353. quickhatch-0.1.0/tests/fixtures/configure_existing_command_groups.yaml +1564 -0
  354. quickhatch-0.1.0/tests/fixtures/design_feedback_scenarios.yaml +2660 -0
  355. quickhatch-0.1.0/tests/fixtures/desktop_session_scenarios.yaml +3046 -0
  356. quickhatch-0.1.0/tests/fixtures/driver_uncertainty_scenarios.yaml +3067 -0
  357. quickhatch-0.1.0/tests/fixtures/final_audit_repair_scenarios.yaml +2608 -0
  358. quickhatch-0.1.0/tests/fixtures/live_model_gauntlet_holdout_requests.yaml +382 -0
  359. quickhatch-0.1.0/tests/fixtures/live_model_gauntlet_requests.yaml +736 -0
  360. quickhatch-0.1.0/tests/fixtures/mode_awareness_scenarios.yaml +268 -0
  361. quickhatch-0.1.0/tests/fixtures/model_contract_scenarios.yaml +1290 -0
  362. quickhatch-0.1.0/tests/fixtures/model_reliability_scenarios.yaml +1057 -0
  363. quickhatch-0.1.0/tests/fixtures/preflight_command_corpus.yaml +3866 -0
  364. quickhatch-0.1.0/tests/fixtures/provider_model_diversity_scenarios.yaml +211 -0
  365. quickhatch-0.1.0/tests/fixtures/reboot_reconnect_scenarios.yaml +2004 -0
  366. quickhatch-0.1.0/tests/fixtures/repair_loop_scenarios.yaml +1356 -0
  367. quickhatch-0.1.0/tests/fixtures/repair_suggestion_quality_scenarios.yaml +635 -0
  368. quickhatch-0.1.0/tests/fixtures/research_grounding_scenarios.yaml +494 -0
  369. quickhatch-0.1.0/tests/fixtures/stop_abort_scenarios.yaml +2445 -0
  370. quickhatch-0.1.0/tests/fixtures/support_bundle_diagnostics_scenarios.yaml +3704 -0
  371. quickhatch-0.1.0/tests/fixtures/theme_design_mapping_scenarios.yaml +449 -0
  372. quickhatch-0.1.0/tests/test_advise_on_failure.py +168 -0
  373. quickhatch-0.1.0/tests/test_analysis_agent.py +129 -0
  374. quickhatch-0.1.0/tests/test_app_catalog_builder.py +242 -0
  375. quickhatch-0.1.0/tests/test_app_catalog_contract.py +144 -0
  376. quickhatch-0.1.0/tests/test_app_catalog_promotion.py +252 -0
  377. quickhatch-0.1.0/tests/test_app_mapper.py +354 -0
  378. quickhatch-0.1.0/tests/test_block_stickiness.py +144 -0
  379. quickhatch-0.1.0/tests/test_bridge_state.py +571 -0
  380. quickhatch-0.1.0/tests/test_checkpoint_path.py +349 -0
  381. quickhatch-0.1.0/tests/test_cli.py +381 -0
  382. quickhatch-0.1.0/tests/test_configure_existing_command_groups.py +221 -0
  383. quickhatch-0.1.0/tests/test_execute_search.py +131 -0
  384. quickhatch-0.1.0/tests/test_export_bundle.py +107 -0
  385. quickhatch-0.1.0/tests/test_flag_escalation.py +156 -0
  386. quickhatch-0.1.0/tests/test_gallery_build.py +44 -0
  387. quickhatch-0.1.0/tests/test_gallery_common.py +19 -0
  388. quickhatch-0.1.0/tests/test_gallery_curate.py +232 -0
  389. quickhatch-0.1.0/tests/test_gallery_dedupe.py +36 -0
  390. quickhatch-0.1.0/tests/test_gallery_endpoint.py +88 -0
  391. quickhatch-0.1.0/tests/test_gallery_extract.py +69 -0
  392. quickhatch-0.1.0/tests/test_gallery_filter.py +286 -0
  393. quickhatch-0.1.0/tests/test_gallery_llm_extract.py +223 -0
  394. quickhatch-0.1.0/tests/test_gui_e2e.py +352 -0
  395. quickhatch-0.1.0/tests/test_gui_endpoints.py +1135 -0
  396. quickhatch-0.1.0/tests/test_hardware_reasoning.py +54 -0
  397. quickhatch-0.1.0/tests/test_install_primer.py +297 -0
  398. quickhatch-0.1.0/tests/test_linux_desktop_gui_contract.py +226 -0
  399. quickhatch-0.1.0/tests/test_live_env.py +227 -0
  400. quickhatch-0.1.0/tests/test_live_model_gauntlet_runner.py +378 -0
  401. quickhatch-0.1.0/tests/test_model_reliability_scenarios.py +88 -0
  402. quickhatch-0.1.0/tests/test_parsers.py +175 -0
  403. quickhatch-0.1.0/tests/test_pre_reboot_checks.py +155 -0
  404. quickhatch-0.1.0/tests/test_preflight_capability_policy.py +327 -0
  405. quickhatch-0.1.0/tests/test_preflight_command_corpus.py +491 -0
  406. quickhatch-0.1.0/tests/test_prompt_builders.py +310 -0
  407. quickhatch-0.1.0/tests/test_provider_routing.py +145 -0
  408. quickhatch-0.1.0/tests/test_recipe_apply.py +45 -0
  409. quickhatch-0.1.0/tests/test_regression_bugsweep.py +375 -0
  410. quickhatch-0.1.0/tests/test_regression_bugsweep_v2.py +909 -0
  411. quickhatch-0.1.0/tests/test_regression_bugsweep_v4.py +187 -0
  412. quickhatch-0.1.0/tests/test_release_smoke.py +184 -0
  413. quickhatch-0.1.0/tests/test_scanners_smoke.py +290 -0
  414. quickhatch-0.1.0/tests/test_secret_pattern_hygiene.py +84 -0
  415. quickhatch-0.1.0/tests/test_secrets.py +51 -0
  416. quickhatch-0.1.0/tests/test_setup_agent.py +293 -0
  417. quickhatch-0.1.0/tests/test_setup_app_mapping.py +524 -0
  418. quickhatch-0.1.0/tests/test_setup_app_partial_success.py +801 -0
  419. quickhatch-0.1.0/tests/test_setup_attempts.py +39 -0
  420. quickhatch-0.1.0/tests/test_setup_capabilities.py +498 -0
  421. quickhatch-0.1.0/tests/test_setup_certify.py +426 -0
  422. quickhatch-0.1.0/tests/test_setup_debugtools.py +128 -0
  423. quickhatch-0.1.0/tests/test_setup_design_feedback_loop.py +576 -0
  424. quickhatch-0.1.0/tests/test_setup_desktop_audit.py +739 -0
  425. quickhatch-0.1.0/tests/test_setup_desktop_session.py +682 -0
  426. quickhatch-0.1.0/tests/test_setup_driver_uncertainty.py +672 -0
  427. quickhatch-0.1.0/tests/test_setup_facts.py +516 -0
  428. quickhatch-0.1.0/tests/test_setup_facts_refresh.py +453 -0
  429. quickhatch-0.1.0/tests/test_setup_families.py +342 -0
  430. quickhatch-0.1.0/tests/test_setup_final_audit.py +358 -0
  431. quickhatch-0.1.0/tests/test_setup_final_audit_repair_loop.py +492 -0
  432. quickhatch-0.1.0/tests/test_setup_fuzz.py +22 -0
  433. quickhatch-0.1.0/tests/test_setup_health.py +35 -0
  434. quickhatch-0.1.0/tests/test_setup_mode_awareness.py +307 -0
  435. quickhatch-0.1.0/tests/test_setup_model_contract.py +407 -0
  436. quickhatch-0.1.0/tests/test_setup_orchestrator.py +10850 -0
  437. quickhatch-0.1.0/tests/test_setup_planner.py +949 -0
  438. quickhatch-0.1.0/tests/test_setup_preflight.py +1097 -0
  439. quickhatch-0.1.0/tests/test_setup_provider_model_diversity.py +574 -0
  440. quickhatch-0.1.0/tests/test_setup_reboot_reconnect.py +611 -0
  441. quickhatch-0.1.0/tests/test_setup_repair_loop_control.py +669 -0
  442. quickhatch-0.1.0/tests/test_setup_repair_suggestion_quality.py +318 -0
  443. quickhatch-0.1.0/tests/test_setup_replay.py +646 -0
  444. quickhatch-0.1.0/tests/test_setup_research_grounding.py +470 -0
  445. quickhatch-0.1.0/tests/test_setup_resolver.py +155 -0
  446. quickhatch-0.1.0/tests/test_setup_runlog.py +160 -0
  447. quickhatch-0.1.0/tests/test_setup_stage_routing.py +402 -0
  448. quickhatch-0.1.0/tests/test_setup_stop_abort.py +552 -0
  449. quickhatch-0.1.0/tests/test_setup_theme_design_mapping.py +435 -0
  450. quickhatch-0.1.0/tests/test_stall_detector.py +88 -0
  451. quickhatch-0.1.0/tests/test_support_bundle.py +313 -0
  452. quickhatch-0.1.0/tests/test_support_bundle_diagnostics.py +272 -0
  453. quickhatch-0.1.0/tests/test_untested_modules_smoke.py +367 -0
  454. quickhatch-0.1.0/tests/test_vm_verify.py +1211 -0
  455. quickhatch-0.1.0/tools/build_app_catalog.py +412 -0
  456. quickhatch-0.1.0/tools/promote_app_catalog_suggestions.py +342 -0
@@ -0,0 +1,4 @@
1
+ # Jan Bartos is the sole code owner for the official QuickHatch repository.
2
+ # To enforce this on GitHub, enable branch protection for `main` and require
3
+ # review from Code Owners before merging pull requests.
4
+ * @JanBartos6
@@ -0,0 +1,3 @@
1
+ # GitHub shows these links in the Sponsor button.
2
+ github: [JanBartos6]
3
+ ko_fi: janbartos6
@@ -0,0 +1,74 @@
1
+ name: Bug report
2
+ description: Something isn't working as expected
3
+ labels: ["bug"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for reporting! Please give us enough info to reproduce.
9
+
10
+ **Security issues:** do NOT use this form — see [SECURITY.md](https://github.com/JanBartos6/QuickHatch/blob/main/SECURITY.md).
11
+
12
+ - type: input
13
+ id: version
14
+ attributes:
15
+ label: QuickHatch version
16
+ placeholder: e.g. 0.1.0 (run `python -m quickhatch --version` if available, or check the GUI footer)
17
+ validations:
18
+ required: true
19
+
20
+ - type: input
21
+ id: os
22
+ attributes:
23
+ label: Host OS
24
+ description: The machine running QuickHatch
25
+ placeholder: e.g. Windows 11 23H2
26
+ validations:
27
+ required: true
28
+
29
+ - type: input
30
+ id: target
31
+ attributes:
32
+ label: Target Linux distro (if relevant)
33
+ placeholder: e.g. Arch Linux 2026.04, fresh install in VirtualBox
34
+
35
+ - type: dropdown
36
+ id: ai_provider
37
+ attributes:
38
+ label: AI provider
39
+ options:
40
+ - LM Studio (local)
41
+ - Ollama (local)
42
+ - Claude API (Anthropic)
43
+ - OpenAI API
44
+ - Codex CLI
45
+ - Other / N/A
46
+ validations:
47
+ required: true
48
+
49
+ - type: input
50
+ id: model
51
+ attributes:
52
+ label: Model name
53
+ placeholder: e.g. google/gemma-4-26b-a4b, claude-sonnet-4-6, gpt-4o
54
+
55
+ - type: textarea
56
+ id: what_happened
57
+ attributes:
58
+ label: What happened?
59
+ description: What did you do, what did you expect, what actually happened?
60
+ validations:
61
+ required: true
62
+
63
+ - type: textarea
64
+ id: logs
65
+ attributes:
66
+ label: Relevant logs
67
+ description: Agent output, console errors, terminal output. Paste as text or attach a file.
68
+ render: shell
69
+
70
+ - type: textarea
71
+ id: extra
72
+ attributes:
73
+ label: Anything else
74
+ description: Screenshots, hypotheses, related issues — drop them here.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: mailto:appdeveloper.honza@gmail.com
5
+ about: Please email instead of opening a public issue.
6
+ - name: Question or general discussion
7
+ url: https://github.com/JanBartos6/QuickHatch/discussions
8
+ about: Use Discussions for "how do I…" or "is this a good idea?"
@@ -0,0 +1,36 @@
1
+ name: Feature request
2
+ description: Suggest a new capability or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Have an idea? Tell us the problem first, then your proposed solution.
9
+
10
+ - type: textarea
11
+ id: problem
12
+ attributes:
13
+ label: What problem are you trying to solve?
14
+ description: Describe the user-facing pain point. Don't jump straight to the solution.
15
+ validations:
16
+ required: true
17
+
18
+ - type: textarea
19
+ id: solution
20
+ attributes:
21
+ label: Proposed solution
22
+ description: How would you like QuickHatch to handle this?
23
+ validations:
24
+ required: true
25
+
26
+ - type: textarea
27
+ id: alternatives
28
+ attributes:
29
+ label: Alternatives considered
30
+ description: Other ways to solve this. Why is your proposal better?
31
+
32
+ - type: textarea
33
+ id: extra
34
+ attributes:
35
+ label: Additional context
36
+ description: Mockups, links, related tools.
@@ -0,0 +1,22 @@
1
+ <!-- Thanks for contributing! -->
2
+
3
+ ## What this changes
4
+
5
+ <!-- One or two sentences. What's different after this PR? -->
6
+
7
+ ## Why
8
+
9
+ <!-- The motivating problem. Link an issue if there is one. -->
10
+
11
+ ## How to verify
12
+
13
+ <!-- Steps a reviewer can run. "I tested X and Y" or "Run pytest". -->
14
+
15
+ ## Checklist
16
+
17
+ - [ ] `pytest` passes locally
18
+ - [ ] `ruff check src/ tests/` is clean
19
+ - [ ] `ruff format --check src/ tests/` is clean
20
+ - [ ] `CHANGELOG.md` updated under `## [Unreleased]` if this is user-visible
21
+ - [ ] No secrets, API keys, or paths from your real machine in the diff
22
+ - [ ] I have the right to submit this work and agree to the contribution ownership/license terms in `CONTRIBUTING.md`
@@ -0,0 +1,31 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ci-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ check:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+ - name: Install dependencies
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install -e ".[dev]"
26
+ - name: Ruff check
27
+ run: ruff check src/ tests/
28
+ - name: Ruff format check
29
+ run: ruff format --check src/ tests/
30
+ - name: Run pytest
31
+ run: pytest -q
@@ -0,0 +1,40 @@
1
+ name: Full test matrix
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ concurrency:
7
+ group: full-test-matrix-${{ github.ref }}
8
+ cancel-in-progress: true
9
+
10
+ jobs:
11
+ full-test:
12
+ name: full test (${{ matrix.os }}, py${{ matrix.python-version }})
13
+ runs-on: ${{ matrix.os }}
14
+ strategy:
15
+ fail-fast: true
16
+ matrix:
17
+ include:
18
+ - os: ubuntu-latest
19
+ python-version: "3.10"
20
+ - os: ubuntu-latest
21
+ python-version: "3.11"
22
+ - os: ubuntu-latest
23
+ python-version: "3.12"
24
+ - os: ubuntu-latest
25
+ python-version: "3.13"
26
+ - os: windows-latest
27
+ python-version: "3.11"
28
+ - os: macos-latest
29
+ python-version: "3.11"
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ - uses: actions/setup-python@v5
33
+ with:
34
+ python-version: ${{ matrix.python-version }}
35
+ - name: Install dependencies
36
+ run: |
37
+ python -m pip install --upgrade pip
38
+ pip install -e ".[dev]"
39
+ - name: Run pytest
40
+ run: pytest -v
@@ -0,0 +1,51 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ tag:
7
+ description: "Release tag to publish, for example v0.1.0"
8
+ required: true
9
+ type: string
10
+
11
+ permissions:
12
+ contents: read
13
+ id-token: write
14
+
15
+ jobs:
16
+ publish-pypi:
17
+ runs-on: ubuntu-latest
18
+ environment:
19
+ name: pypi
20
+ url: https://pypi.org/p/quickhatch
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ ref: ${{ inputs.tag }}
25
+ fetch-depth: 0
26
+
27
+ - uses: actions/setup-python@v5
28
+ with:
29
+ python-version: "3.11"
30
+
31
+ - name: Install build deps
32
+ run: |
33
+ python -m pip install --upgrade pip
34
+ pip install build
35
+
36
+ - name: Build sdist + wheel
37
+ run: python -m build
38
+
39
+ - name: Check tag matches package version
40
+ run: |
41
+ TAG="${{ inputs.tag }}"
42
+ VERSION="${TAG#v}"
43
+ PKG=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
44
+ if [ "$VERSION" != "$PKG" ]; then
45
+ echo "Tag $TAG does not match pyproject.toml version $PKG"; exit 1
46
+ fi
47
+
48
+ - name: Publish to PyPI
49
+ uses: pypa/gh-action-pypi-publish@release/v1
50
+ with:
51
+ skip-existing: true
@@ -0,0 +1,74 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ build:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ with:
17
+ fetch-depth: 0 # so changelog generation can see history
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Install build deps
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install build
27
+
28
+ - name: Build sdist + wheel
29
+ run: python -m build
30
+
31
+ - name: Check tag matches package version
32
+ run: |
33
+ TAG="${GITHUB_REF#refs/tags/v}"
34
+ PKG=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
35
+ if [ "$TAG" != "$PKG" ]; then
36
+ echo "Tag v$TAG does not match pyproject.toml version $PKG"; exit 1
37
+ fi
38
+
39
+ - name: Upload artifact
40
+ uses: actions/upload-artifact@v4
41
+ with:
42
+ name: dist
43
+ path: dist/
44
+
45
+ github-release:
46
+ needs: build
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+ - uses: actions/download-artifact@v4
51
+ with:
52
+ name: dist
53
+ path: dist/
54
+ - name: Extract release notes from CHANGELOG
55
+ id: notes
56
+ run: |
57
+ TAG="${GITHUB_REF#refs/tags/}"
58
+ VERSION="${TAG#v}"
59
+ # Capture from "## [VERSION]" up to the next "## ["
60
+ awk -v v="$VERSION" '
61
+ index($0, "## [" v "]") == 1 { capture=1; next }
62
+ capture && /^## \[/ { exit }
63
+ capture { print }
64
+ ' CHANGELOG.md > release-notes.md
65
+ if [ ! -s release-notes.md ]; then
66
+ echo "Release $TAG" > release-notes.md
67
+ fi
68
+ - name: Create GitHub release
69
+ uses: softprops/action-gh-release@v2
70
+ with:
71
+ files: dist/*
72
+ body_path: release-notes.md
73
+ generate_release_notes: false
74
+ prerelease: true
@@ -0,0 +1,31 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.pyo
4
+ *.egg-info/
5
+ .pytest_cache/
6
+ .ruff_cache/
7
+ .tmp/
8
+ dist/
9
+ build/
10
+ .quickhatch-checkpoint.json
11
+ *.iso
12
+ .env
13
+ .quickhatch/
14
+
15
+ # Agent temp files
16
+ .quickhatch-prompt.txt
17
+ .quickhatch-agent-cmd.sh
18
+ .quickhatch-agent-cmd.ps1
19
+ .quickhatch-server*.log
20
+ .codex_tmp_*
21
+ .scrape-cache/
22
+
23
+ # IDE / editor
24
+ .vscode/
25
+ .idea/
26
+ *.swp
27
+ *.swo
28
+ .DS_Store
29
+
30
+ # Claude Code working files
31
+ .claude/
@@ -0,0 +1,19 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-toml
9
+ - id: check-added-large-files
10
+ args: ["--maxkb=512"]
11
+ - id: check-merge-conflict
12
+ - id: detect-private-key
13
+
14
+ - repo: https://github.com/astral-sh/ruff-pre-commit
15
+ rev: v0.7.4
16
+ hooks:
17
+ - id: ruff
18
+ args: [--fix]
19
+ - id: ruff-format
@@ -0,0 +1,126 @@
1
+ # Changelog
2
+
3
+ All notable changes to QuickHatch will be documented here. Format loosely
4
+ follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ ## [Unreleased]
7
+
8
+ No changes yet.
9
+
10
+ ## [0.1.0] - 2026-06-12
11
+
12
+ First public alpha release.
13
+
14
+ ### Added
15
+
16
+ - Added community recipe gallery with about 100 curated Linux desktop
17
+ configurations.
18
+ - Added host-side post-install data transfer for the "keep this PC on" path:
19
+ selected local files or folders are copied over SSH into
20
+ `~/QuickHatch-Imported-Windows`, while external-drive and cloud methods stay
21
+ guided/manual.
22
+ - Fresh installs now use `password` as the temporary first-login password,
23
+ remove the QuickHatch NOPASSWD sudo drop-in at the end of setup, and mark the
24
+ installed user account to require a real password change on first login.
25
+ - Added a strict Linux desktop GUI contract test suite for promised theme,
26
+ icon, cursor, wallpaper, and desktop-effect elements. Strict desktop runs now
27
+ require each promised element to have a concrete expected value or an explicit
28
+ manual-follow-up reason before success can be claimed.
29
+ - Documented contribution and fork licensing terms, made commercial-use contact
30
+ language visible in the README, added sponsorship links, and noted the June 4,
31
+ 2026 real-PC Arch install driven by Gemini 3.1 Flash Lite.
32
+ - Added commercial licensing contact email, stronger source-available license
33
+ terms, contribution assignment/licensing language, CODEOWNERS, and governance
34
+ notes for maintainer-controlled merges to `main`.
35
+ - Added secret-pattern hygiene coverage so release sources fail tests if
36
+ provider-token-shaped strings are introduced into tracked release files.
37
+ - Gallery Phase 1.5: loosened the Reddit filter so r/unixporn and DE-specific
38
+ subs contribute entries. The previous "median + 1 stdev" upvote gate was
39
+ replaced with per-subreddit absolute floors (500 for r/unixporn, 30-100 for
40
+ DE subs) combined with a top-40%-of-bucket rule. Reddit entries with no
41
+ detectable OSI license are admitted with `license_status: "unknown"` and a
42
+ "No license" chip in the gallery; apply logic skips them so QuickHatch does
43
+ not copy unlicensed work.
44
+
45
+ ### Highlights
46
+
47
+ - Two modes: "Migrate from Windows" for fresh Linux installs on a target
48
+ machine, and "Customize Linux" for tuning an existing install.
49
+ - Agentic SSH setup loop: the LLM picks one command, sees exit code plus
50
+ stdout/stderr, and decides the next step. It adapts to errors such as missing
51
+ packages, low disk space, and failed verifications.
52
+ - Live web and image search: the analysis phase can fetch DuckDuckGo results so
53
+ the model gets current context on driver support, app alternatives, and
54
+ desktop environment screenshots.
55
+ - End-to-end verified on Arch Linux on a real PC on June 4, 2026, driven by
56
+ Gemini 3.1 Flash Lite.
57
+ - Web GUI with stepper navigation, agent feed, technical log, apps step with
58
+ search and compatibility badges, error states, and toast notifications.
59
+
60
+ ### Wizard
61
+
62
+ - Welcome -> AI setup -> Preferences -> Scan -> Apps & Data -> Notes ->
63
+ Analysis -> Bootable USB -> SSH key -> Export -> Remote setup.
64
+ - Scans Windows hardware, installed apps, settings, file summary, fonts,
65
+ browser profiles, and disk layout.
66
+ - Apps step shows scanned apps grouped by category, searchable, with native,
67
+ alternative, or unknown compatibility badges.
68
+ - Apps & Data includes a structured data-transfer choice.
69
+ - Generates a sectioned migration plan covering distro, apps, drivers, desktop,
70
+ migration steps, and quick-reference summary.
71
+ - Re-runs analysis when the user gives feedback to the agent.
72
+
73
+ ### AI providers
74
+
75
+ - Claude API.
76
+ - OpenAI API.
77
+ - LM Studio, with auto-detection of loaded models via
78
+ `localhost:1234/v1/models`.
79
+ - Ollama via `localhost:11434`.
80
+ - Codex CLI launched in a separate terminal.
81
+
82
+ ### Remote setup
83
+
84
+ - SSH-based agent loop with Stop button.
85
+ - Test-connection button to verify SSH before launch.
86
+ - `host:port` format supported for the IP input.
87
+ - Setup agent reads the analysis suggestions as the blueprint instead of
88
+ re-planning from scratch.
89
+ - Final audit and support-bundle paths redact secret-bearing values before
90
+ exposing run artifacts.
91
+
92
+ ### Repo and tooling
93
+
94
+ - 2663 pytest tests covering parsers, BridgeState, app mapping, prompt builders,
95
+ search execution, setup orchestration, desktop GUI contracts, support bundle
96
+ redaction, release smoke checks, and HTTP endpoints.
97
+ - GitHub Actions CI runs Ruff lint, Ruff format check, and pytest on normal
98
+ pushes and pull requests.
99
+ - Manual "Full test matrix" workflow covers supported OS/Python combinations.
100
+ - GitHub Actions release workflow builds artifacts and creates a GitHub Release
101
+ on `v*.*.*` tags, with PyPI trusted publishing configured in the workflow.
102
+ - `.pre-commit-config.yaml` for Ruff and standard hygiene hooks.
103
+ - `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `SECURITY.md`, issue templates,
104
+ PR template, `GOVERNANCE.md`, `.github/CODEOWNERS`, and funding metadata.
105
+ - Docs: `docs/ARCHITECTURE.md`, `docs/testing-in-vm.md`,
106
+ `docs/model-recommendations.md`, and `docs/troubleshooting.md`.
107
+ - Source-available personal-use license with commercial use by separate written
108
+ arrangement.
109
+
110
+ ### Known limitations
111
+
112
+ - Data transfer is method-dependent. If the Windows/host PC stays online during
113
+ remote setup, QuickHatch can copy selected scanned folders to the installed
114
+ Linux user after setup. External-drive and cloud-sync methods remain
115
+ guided/manual.
116
+ - No automated USB flashing. The "Bootable USB" step is a guided walkthrough;
117
+ use Rufus, Ventoy, or balenaEtcher yourself.
118
+ - GPU passthrough is not handled in VirtualBox testing.
119
+ - Wayland plus VirtualBox mouse integration can be flaky without Guest
120
+ Additions.
121
+ - The setup agent requires SSH key authentication. Password-only SSH is not
122
+ supported.
123
+ - Arch is the most tested distro. Fedora and Ubuntu should work; other distros
124
+ are at your own risk.
125
+ - Current modes are Windows-to-fresh-Linux migration and existing-Linux
126
+ customization. Distro-to-distro switching is not implemented.
@@ -0,0 +1,49 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behavior that contributes to a positive environment for our community include:
12
+
13
+ * Demonstrating empathy and kindness toward other people
14
+ * Being respectful of differing opinions, viewpoints, and experiences
15
+ * Giving and gracefully accepting constructive feedback
16
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ * Focusing on what is best not just for us as individuals, but for the overall community
18
+
19
+ Examples of unacceptable behavior include:
20
+
21
+ * The use of sexualized language or imagery, and sexual attention or advances of any kind
22
+ * Trolling, insulting or derogatory comments, and personal or political attacks
23
+ * Public or private harassment
24
+ * Publishing others' private information, such as a physical or email address, without their explicit permission
25
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
26
+
27
+ ## Enforcement Responsibilities
28
+
29
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ ## Scope
32
+
33
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.
34
+
35
+ ## Enforcement
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported to appdeveloper.honza@gmail.com. Do not publish reports containing
39
+ personal information in public issues or discussions. All complaints will be
40
+ reviewed and investigated promptly and fairly.
41
+
42
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
43
+
44
+ ## Attribution
45
+
46
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
47
+
48
+ [homepage]: https://www.contributor-covenant.org
49
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html