clonebox 0.1.20__tar.gz → 0.1.22__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 (31) hide show
  1. {clonebox-0.1.20/src/clonebox.egg-info → clonebox-0.1.22}/PKG-INFO +196 -6
  2. {clonebox-0.1.20 → clonebox-0.1.22}/README.md +195 -5
  3. {clonebox-0.1.20 → clonebox-0.1.22}/pyproject.toml +1 -1
  4. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/cli.py +210 -6
  5. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/cloner.py +345 -2
  6. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/models.py +6 -2
  7. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/validator.py +361 -29
  8. {clonebox-0.1.20 → clonebox-0.1.22/src/clonebox.egg-info}/PKG-INFO +196 -6
  9. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_cli.py +48 -0
  10. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_cloner.py +1 -1
  11. clonebox-0.1.22/tests/test_profiles.py +56 -0
  12. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_validator.py +116 -0
  13. clonebox-0.1.20/tests/test_profiles.py +0 -26
  14. {clonebox-0.1.20 → clonebox-0.1.22}/LICENSE +0 -0
  15. {clonebox-0.1.20 → clonebox-0.1.22}/setup.cfg +0 -0
  16. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/__init__.py +0 -0
  17. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/__main__.py +0 -0
  18. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/container.py +0 -0
  19. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/dashboard.py +0 -0
  20. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/detector.py +0 -0
  21. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/profiles.py +0 -0
  22. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox/templates/profiles/ml-dev.yaml +0 -0
  23. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox.egg-info/SOURCES.txt +0 -0
  24. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox.egg-info/dependency_links.txt +0 -0
  25. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox.egg-info/entry_points.txt +0 -0
  26. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox.egg-info/requires.txt +0 -0
  27. {clonebox-0.1.20 → clonebox-0.1.22}/src/clonebox.egg-info/top_level.txt +0 -0
  28. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_container.py +0 -0
  29. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_detector.py +0 -0
  30. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_models.py +0 -0
  31. {clonebox-0.1.20 → clonebox-0.1.22}/tests/test_network.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clonebox
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: Clone your workstation environment to an isolated VM with selective apps, paths and services
5
5
  Author: CloneBox Team
6
6
  License: Apache-2.0
@@ -85,6 +85,22 @@ CloneBox lets you create isolated virtual machines with only the applications, d
85
85
  - 🧪 **Configuration testing** - Validate VM settings and functionality
86
86
  - 📁 **App data sync** - Include browser profiles, IDE settings, and app configs
87
87
 
88
+ ## Use Cases
89
+
90
+ CloneBox excels in scenarios where developers need:
91
+ - Isolated sandbox environments for testing AI agents, edge computing simulations, or integration workflows without risking host system stability
92
+ - Reproducible development setups that can be quickly spun up with identical configurations across different machines
93
+ - Safe experimentation with system-level changes that can be discarded by simply deleting the VM
94
+ - Quick onboarding for new team members who need a fully configured development environment
95
+
96
+ ## What's Next
97
+
98
+ Project roadmap includes:
99
+ - Container runtime integration (Podman/Docker lightweight mode)
100
+ - Local dashboard for VM and container management
101
+ - Profile system for reusable configuration presets
102
+ - Proxmox export capabilities for production migration
103
+
88
104
 
89
105
 
90
106
 
@@ -95,6 +111,8 @@ Kluczowe komendy:
95
111
  - `clonebox` – interaktywny wizard (detect + create + start)
96
112
  - `clonebox detect` – skanuje usługi/apps/ścieżki
97
113
  - `clonebox clone . --user --run` – szybki klon bieżącego katalogu z użytkownikiem i autostartem
114
+ - `clonebox container up|ps|stop|rm` – lekki runtime kontenerowy (podman/docker)
115
+ - `clonebox dashboard` – lokalny dashboard (VM + containers)
98
116
 
99
117
  ### Dlaczego wirtualne klony workstation mają sens?
100
118
 
@@ -167,6 +185,11 @@ pip install -e .
167
185
  # Or directly
168
186
  pip install clonebox
169
187
  ```
188
+
189
+ Dashboard ma opcjonalne zależności:
190
+ ```bash
191
+ pip install "clonebox[dashboard]"
192
+ ```
170
193
  lub
171
194
  ```bash
172
195
  # Aktywuj venv
@@ -247,7 +270,35 @@ Simply run `clonebox` to start the interactive wizard:
247
270
 
248
271
  ```bash
249
272
  clonebox
250
- clonebox clone . --user --run --replace --base-image ~/ubuntu-22.04-cloud.qcow2
273
+
274
+ clonebox clone . --user --run --replace --base-image ~/ubuntu-22.04-cloud.qcow2 --disk-size-gb 30
275
+
276
+ clonebox test . --user --validate
277
+ clonebox test . --user --validate --require-running-apps
278
+ ```
279
+
280
+ ### Profiles (Reusable presets)
281
+
282
+ Profiles pozwalają trzymać gotowe presety dla VM/container (np. `ml-dev`, `web-dev`) i nakładać je na bazową konfigurację.
283
+
284
+ ```bash
285
+ # Przykład: uruchom kontener z profilem
286
+ clonebox container up . --profile ml-dev --engine podman
287
+
288
+ # Przykład: generuj VM config z profilem
289
+ clonebox clone . --profile ml-dev --user --run
290
+ ```
291
+
292
+ Domyślne lokalizacje profili:
293
+ - `~/.clonebox.d/<name>.yaml`
294
+ - `./.clonebox.d/<name>.yaml`
295
+ - wbudowane: `src/clonebox/templates/profiles/<name>.yaml`
296
+
297
+ ### Dashboard
298
+
299
+ ```bash
300
+ clonebox dashboard --port 8080
301
+ # http://127.0.0.1:8080
251
302
  ```
252
303
 
253
304
  The wizard will:
@@ -268,7 +319,10 @@ clonebox create --name my-dev-vm --config '{
268
319
  },
269
320
  "packages": ["python3", "nodejs", "docker.io"],
270
321
  "services": ["docker"]
271
- }' --ram 4096 --vcpus 4 --start
322
+ }' --ram 4096 --vcpus 4 --disk-size-gb 20 --start
323
+
324
+ # Create VM with larger root disk
325
+ clonebox create --name my-dev-vm --disk-size-gb 30 --config '{"paths": {}, "packages": [], "services": []}'
272
326
 
273
327
  # List VMs
274
328
  clonebox list
@@ -325,10 +379,45 @@ clonebox clone . --user --run
325
379
 
326
380
  # Access in VM:
327
381
  ls ~/.config/google-chrome # Chrome profile
328
- ls ~/.mozilla/firefox # Firefox profile
329
- ls ~/.config/JetBrains # PyCharm settings
382
+
383
+ # Firefox profile (Ubuntu często używa snap):
384
+ ls ~/snap/firefox/common/.mozilla/firefox
385
+ ls ~/.mozilla/firefox
386
+
387
+ # PyCharm profile (snap):
388
+ ls ~/snap/pycharm-community/common/.config/JetBrains
389
+ ls ~/.config/JetBrains
390
+ ```
391
+
392
+ ### Container workflow (podman/docker)
393
+
394
+ ```bash
395
+ # Start a dev container (auto-detect engine if not specified)
396
+ clonebox container up . --engine podman --detach
397
+
398
+ # List running containers
399
+ clonebox container ps
400
+
401
+ # Stop/remove
402
+ clonebox container stop <name>
403
+ clonebox container rm <name>
404
+ ```
405
+
406
+ ### Full validation (VM)
407
+
408
+ `clonebox test` weryfikuje, że VM faktycznie ma zamontowane ścieżki i spełnia wymagania z `.clonebox.yaml`.
409
+
410
+ ```bash
411
+ clonebox test . --user --validate
330
412
  ```
331
413
 
414
+ Walidowane kategorie:
415
+ - **Mounts** (9p)
416
+ - **Packages** (apt)
417
+ - **Snap packages**
418
+ - **Services** (enabled + running)
419
+ - **Apps** (instalacja + dostępność profilu: Firefox/PyCharm/Chrome)
420
+
332
421
  ### Testing and Validating VM Configuration
333
422
 
334
423
  ```bash
@@ -557,6 +646,9 @@ The fastest way to clone your current working directory:
557
646
  # Base OS image is automatically downloaded to ~/Downloads on first run
558
647
  clonebox clone .
559
648
 
649
+ # Increase VM disk size (recommended for GUI + large tooling)
650
+ clonebox clone . --user --disk-size-gb 30
651
+
560
652
  # Clone specific path
561
653
  clonebox clone ~/projects/my-app
562
654
 
@@ -687,8 +779,10 @@ clonebox clone . --network auto
687
779
  | `clonebox clone . --replace` | Replace existing VM (stop, delete, recreate) |
688
780
  | `clonebox clone . --user` | Clone in user session (no root) |
689
781
  | `clonebox clone . --base-image <path>` | Use custom base image |
782
+ | `clonebox clone . --disk-size-gb <gb>` | Set root disk size in GB (generated configs default to 20GB) |
690
783
  | `clonebox clone . --network user` | Use user-mode networking (slirp) |
691
784
  | `clonebox clone . --network auto` | Auto-detect network mode (default) |
785
+ | `clonebox create --config <json> --disk-size-gb <gb>` | Create VM from JSON config with specified disk size |
692
786
  | `clonebox start .` | Start VM from `.clonebox.yaml` in current dir |
693
787
  | `clonebox start . --viewer` | Start VM and open GUI window |
694
788
  | `clonebox start <name>` | Start existing VM by name |
@@ -701,6 +795,11 @@ clonebox clone . --network auto
701
795
  | `clonebox detect --yaml` | Output as YAML config |
702
796
  | `clonebox detect --yaml --dedupe` | YAML with duplicates removed |
703
797
  | `clonebox detect --json` | Output as JSON |
798
+ | `clonebox container up .` | Start a dev container for given path |
799
+ | `clonebox container ps` | List containers |
800
+ | `clonebox container stop <name>` | Stop a container |
801
+ | `clonebox container rm <name>` | Remove a container |
802
+ | `clonebox dashboard` | Run local dashboard (VM + containers) |
704
803
  | `clonebox status . --user` | Check VM health, cloud-init, IP, and mount status |
705
804
  | `clonebox status . --user --health` | Check VM status and run full health check |
706
805
  | `clonebox test . --user` | Test VM configuration (basic checks) |
@@ -721,6 +820,97 @@ clonebox clone . --network auto
721
820
 
722
821
  ## Troubleshooting
723
822
 
823
+ ### Critical: Insufficient Disk Space
824
+
825
+ If you install a full desktop environment and large development tools (e.g. `ubuntu-desktop-minimal`, `docker.io`, large snaps like `pycharm-community`/`chromium`), you may hit low disk space warnings inside the VM.
826
+
827
+ Recommended fix:
828
+ - Set a larger root disk in `.clonebox.yaml`:
829
+
830
+ ```yaml
831
+ vm:
832
+ disk_size_gb: 30
833
+ ```
834
+
835
+ You can also set it during config generation:
836
+ ```bash
837
+ clonebox clone . --user --disk-size-gb 30
838
+ ```
839
+
840
+ Notes:
841
+ - New configs generated by `clonebox clone` default to `disk_size_gb: 20`.
842
+ - You can override this by setting `vm.disk_size_gb` in `.clonebox.yaml`.
843
+
844
+ Workaround for an existing VM (host-side resize + guest filesystem grow):
845
+ ```bash
846
+ clonebox stop . --user
847
+ qemu-img resize ~/.local/share/libvirt/images/<vm-name>/root.qcow2 +10G
848
+ clonebox start . --user
849
+ ```
850
+
851
+ Inside the VM:
852
+ ```bash
853
+ sudo growpart /dev/vda 1
854
+ sudo resize2fs /dev/vda1
855
+ df -h /
856
+ ```
857
+
858
+ ### Known Issue: IBus Preferences crash
859
+
860
+ During validation you may occasionally see a crash dialog from **IBus Preferences** in the Ubuntu desktop environment.
861
+ This is an upstream issue related to the input method daemon (`ibus-daemon`) and obsolete system packages (e.g. `libglib2.0`, `libssl3`, `libxml2`, `openssl`).
862
+ It does **not** affect CloneBox functionality and the VM operates normally.
863
+
864
+ Workaround:
865
+ - Dismiss the crash dialog
866
+ - Or run `sudo apt upgrade` inside the VM to update system packages
867
+
868
+ ### Snap Apps Not Launching (PyCharm, Chromium, Firefox)
869
+
870
+ If snap-installed applications (e.g., PyCharm, Chromium) are installed but don't launch when clicked, the issue is usually **disconnected snap interfaces**. This happens because snap interfaces are not auto-connected when installing via cloud-init.
871
+
872
+ **New VMs created with updated CloneBox automatically connect snap interfaces**, but for older VMs or manual installs:
873
+
874
+ ```bash
875
+ # Check snap interface connections
876
+ snap connections pycharm-community
877
+
878
+ # If you see "-" instead of ":desktop", interfaces are NOT connected
879
+
880
+ # Connect required interfaces
881
+ sudo snap connect pycharm-community:desktop :desktop
882
+ sudo snap connect pycharm-community:desktop-legacy :desktop-legacy
883
+ sudo snap connect pycharm-community:x11 :x11
884
+ sudo snap connect pycharm-community:wayland :wayland
885
+ sudo snap connect pycharm-community:home :home
886
+ sudo snap connect pycharm-community:network :network
887
+
888
+ # Restart snap daemon and try again
889
+ sudo systemctl restart snapd
890
+ snap run pycharm-community
891
+ ```
892
+
893
+ **For Chromium/Firefox:**
894
+ ```bash
895
+ sudo snap connect chromium:desktop :desktop
896
+ sudo snap connect chromium:x11 :x11
897
+ sudo snap connect firefox:desktop :desktop
898
+ sudo snap connect firefox:x11 :x11
899
+ ```
900
+
901
+ **Debug launch:**
902
+ ```bash
903
+ PYCHARM_DEBUG=true snap run pycharm-community 2>&1 | tee /tmp/pycharm-debug.log
904
+ ```
905
+
906
+ **Nuclear option (reinstall):**
907
+ ```bash
908
+ snap remove pycharm-community
909
+ rm -rf ~/snap/pycharm-community
910
+ sudo snap install pycharm-community --classic
911
+ sudo snap connect pycharm-community:desktop :desktop
912
+ ```
913
+
724
914
  ### Network Issues
725
915
 
726
916
  If you encounter "Network not found" or "network 'default' is not active" errors:
@@ -1069,4 +1259,4 @@ qm set 9000 --boot c --bootdisk scsi0
1069
1259
 
1070
1260
  ## License
1071
1261
 
1072
- MIT License - see [LICENSE](LICENSE) file.
1262
+ Apache License - see [LICENSE](LICENSE) file.
@@ -37,6 +37,22 @@ CloneBox lets you create isolated virtual machines with only the applications, d
37
37
  - 🧪 **Configuration testing** - Validate VM settings and functionality
38
38
  - 📁 **App data sync** - Include browser profiles, IDE settings, and app configs
39
39
 
40
+ ## Use Cases
41
+
42
+ CloneBox excels in scenarios where developers need:
43
+ - Isolated sandbox environments for testing AI agents, edge computing simulations, or integration workflows without risking host system stability
44
+ - Reproducible development setups that can be quickly spun up with identical configurations across different machines
45
+ - Safe experimentation with system-level changes that can be discarded by simply deleting the VM
46
+ - Quick onboarding for new team members who need a fully configured development environment
47
+
48
+ ## What's Next
49
+
50
+ Project roadmap includes:
51
+ - Container runtime integration (Podman/Docker lightweight mode)
52
+ - Local dashboard for VM and container management
53
+ - Profile system for reusable configuration presets
54
+ - Proxmox export capabilities for production migration
55
+
40
56
 
41
57
 
42
58
 
@@ -47,6 +63,8 @@ Kluczowe komendy:
47
63
  - `clonebox` – interaktywny wizard (detect + create + start)
48
64
  - `clonebox detect` – skanuje usługi/apps/ścieżki
49
65
  - `clonebox clone . --user --run` – szybki klon bieżącego katalogu z użytkownikiem i autostartem
66
+ - `clonebox container up|ps|stop|rm` – lekki runtime kontenerowy (podman/docker)
67
+ - `clonebox dashboard` – lokalny dashboard (VM + containers)
50
68
 
51
69
  ### Dlaczego wirtualne klony workstation mają sens?
52
70
 
@@ -119,6 +137,11 @@ pip install -e .
119
137
  # Or directly
120
138
  pip install clonebox
121
139
  ```
140
+
141
+ Dashboard ma opcjonalne zależności:
142
+ ```bash
143
+ pip install "clonebox[dashboard]"
144
+ ```
122
145
  lub
123
146
  ```bash
124
147
  # Aktywuj venv
@@ -199,7 +222,35 @@ Simply run `clonebox` to start the interactive wizard:
199
222
 
200
223
  ```bash
201
224
  clonebox
202
- clonebox clone . --user --run --replace --base-image ~/ubuntu-22.04-cloud.qcow2
225
+
226
+ clonebox clone . --user --run --replace --base-image ~/ubuntu-22.04-cloud.qcow2 --disk-size-gb 30
227
+
228
+ clonebox test . --user --validate
229
+ clonebox test . --user --validate --require-running-apps
230
+ ```
231
+
232
+ ### Profiles (Reusable presets)
233
+
234
+ Profiles pozwalają trzymać gotowe presety dla VM/container (np. `ml-dev`, `web-dev`) i nakładać je na bazową konfigurację.
235
+
236
+ ```bash
237
+ # Przykład: uruchom kontener z profilem
238
+ clonebox container up . --profile ml-dev --engine podman
239
+
240
+ # Przykład: generuj VM config z profilem
241
+ clonebox clone . --profile ml-dev --user --run
242
+ ```
243
+
244
+ Domyślne lokalizacje profili:
245
+ - `~/.clonebox.d/<name>.yaml`
246
+ - `./.clonebox.d/<name>.yaml`
247
+ - wbudowane: `src/clonebox/templates/profiles/<name>.yaml`
248
+
249
+ ### Dashboard
250
+
251
+ ```bash
252
+ clonebox dashboard --port 8080
253
+ # http://127.0.0.1:8080
203
254
  ```
204
255
 
205
256
  The wizard will:
@@ -220,7 +271,10 @@ clonebox create --name my-dev-vm --config '{
220
271
  },
221
272
  "packages": ["python3", "nodejs", "docker.io"],
222
273
  "services": ["docker"]
223
- }' --ram 4096 --vcpus 4 --start
274
+ }' --ram 4096 --vcpus 4 --disk-size-gb 20 --start
275
+
276
+ # Create VM with larger root disk
277
+ clonebox create --name my-dev-vm --disk-size-gb 30 --config '{"paths": {}, "packages": [], "services": []}'
224
278
 
225
279
  # List VMs
226
280
  clonebox list
@@ -277,10 +331,45 @@ clonebox clone . --user --run
277
331
 
278
332
  # Access in VM:
279
333
  ls ~/.config/google-chrome # Chrome profile
280
- ls ~/.mozilla/firefox # Firefox profile
281
- ls ~/.config/JetBrains # PyCharm settings
334
+
335
+ # Firefox profile (Ubuntu często używa snap):
336
+ ls ~/snap/firefox/common/.mozilla/firefox
337
+ ls ~/.mozilla/firefox
338
+
339
+ # PyCharm profile (snap):
340
+ ls ~/snap/pycharm-community/common/.config/JetBrains
341
+ ls ~/.config/JetBrains
342
+ ```
343
+
344
+ ### Container workflow (podman/docker)
345
+
346
+ ```bash
347
+ # Start a dev container (auto-detect engine if not specified)
348
+ clonebox container up . --engine podman --detach
349
+
350
+ # List running containers
351
+ clonebox container ps
352
+
353
+ # Stop/remove
354
+ clonebox container stop <name>
355
+ clonebox container rm <name>
356
+ ```
357
+
358
+ ### Full validation (VM)
359
+
360
+ `clonebox test` weryfikuje, że VM faktycznie ma zamontowane ścieżki i spełnia wymagania z `.clonebox.yaml`.
361
+
362
+ ```bash
363
+ clonebox test . --user --validate
282
364
  ```
283
365
 
366
+ Walidowane kategorie:
367
+ - **Mounts** (9p)
368
+ - **Packages** (apt)
369
+ - **Snap packages**
370
+ - **Services** (enabled + running)
371
+ - **Apps** (instalacja + dostępność profilu: Firefox/PyCharm/Chrome)
372
+
284
373
  ### Testing and Validating VM Configuration
285
374
 
286
375
  ```bash
@@ -509,6 +598,9 @@ The fastest way to clone your current working directory:
509
598
  # Base OS image is automatically downloaded to ~/Downloads on first run
510
599
  clonebox clone .
511
600
 
601
+ # Increase VM disk size (recommended for GUI + large tooling)
602
+ clonebox clone . --user --disk-size-gb 30
603
+
512
604
  # Clone specific path
513
605
  clonebox clone ~/projects/my-app
514
606
 
@@ -639,8 +731,10 @@ clonebox clone . --network auto
639
731
  | `clonebox clone . --replace` | Replace existing VM (stop, delete, recreate) |
640
732
  | `clonebox clone . --user` | Clone in user session (no root) |
641
733
  | `clonebox clone . --base-image <path>` | Use custom base image |
734
+ | `clonebox clone . --disk-size-gb <gb>` | Set root disk size in GB (generated configs default to 20GB) |
642
735
  | `clonebox clone . --network user` | Use user-mode networking (slirp) |
643
736
  | `clonebox clone . --network auto` | Auto-detect network mode (default) |
737
+ | `clonebox create --config <json> --disk-size-gb <gb>` | Create VM from JSON config with specified disk size |
644
738
  | `clonebox start .` | Start VM from `.clonebox.yaml` in current dir |
645
739
  | `clonebox start . --viewer` | Start VM and open GUI window |
646
740
  | `clonebox start <name>` | Start existing VM by name |
@@ -653,6 +747,11 @@ clonebox clone . --network auto
653
747
  | `clonebox detect --yaml` | Output as YAML config |
654
748
  | `clonebox detect --yaml --dedupe` | YAML with duplicates removed |
655
749
  | `clonebox detect --json` | Output as JSON |
750
+ | `clonebox container up .` | Start a dev container for given path |
751
+ | `clonebox container ps` | List containers |
752
+ | `clonebox container stop <name>` | Stop a container |
753
+ | `clonebox container rm <name>` | Remove a container |
754
+ | `clonebox dashboard` | Run local dashboard (VM + containers) |
656
755
  | `clonebox status . --user` | Check VM health, cloud-init, IP, and mount status |
657
756
  | `clonebox status . --user --health` | Check VM status and run full health check |
658
757
  | `clonebox test . --user` | Test VM configuration (basic checks) |
@@ -673,6 +772,97 @@ clonebox clone . --network auto
673
772
 
674
773
  ## Troubleshooting
675
774
 
775
+ ### Critical: Insufficient Disk Space
776
+
777
+ If you install a full desktop environment and large development tools (e.g. `ubuntu-desktop-minimal`, `docker.io`, large snaps like `pycharm-community`/`chromium`), you may hit low disk space warnings inside the VM.
778
+
779
+ Recommended fix:
780
+ - Set a larger root disk in `.clonebox.yaml`:
781
+
782
+ ```yaml
783
+ vm:
784
+ disk_size_gb: 30
785
+ ```
786
+
787
+ You can also set it during config generation:
788
+ ```bash
789
+ clonebox clone . --user --disk-size-gb 30
790
+ ```
791
+
792
+ Notes:
793
+ - New configs generated by `clonebox clone` default to `disk_size_gb: 20`.
794
+ - You can override this by setting `vm.disk_size_gb` in `.clonebox.yaml`.
795
+
796
+ Workaround for an existing VM (host-side resize + guest filesystem grow):
797
+ ```bash
798
+ clonebox stop . --user
799
+ qemu-img resize ~/.local/share/libvirt/images/<vm-name>/root.qcow2 +10G
800
+ clonebox start . --user
801
+ ```
802
+
803
+ Inside the VM:
804
+ ```bash
805
+ sudo growpart /dev/vda 1
806
+ sudo resize2fs /dev/vda1
807
+ df -h /
808
+ ```
809
+
810
+ ### Known Issue: IBus Preferences crash
811
+
812
+ During validation you may occasionally see a crash dialog from **IBus Preferences** in the Ubuntu desktop environment.
813
+ This is an upstream issue related to the input method daemon (`ibus-daemon`) and obsolete system packages (e.g. `libglib2.0`, `libssl3`, `libxml2`, `openssl`).
814
+ It does **not** affect CloneBox functionality and the VM operates normally.
815
+
816
+ Workaround:
817
+ - Dismiss the crash dialog
818
+ - Or run `sudo apt upgrade` inside the VM to update system packages
819
+
820
+ ### Snap Apps Not Launching (PyCharm, Chromium, Firefox)
821
+
822
+ If snap-installed applications (e.g., PyCharm, Chromium) are installed but don't launch when clicked, the issue is usually **disconnected snap interfaces**. This happens because snap interfaces are not auto-connected when installing via cloud-init.
823
+
824
+ **New VMs created with updated CloneBox automatically connect snap interfaces**, but for older VMs or manual installs:
825
+
826
+ ```bash
827
+ # Check snap interface connections
828
+ snap connections pycharm-community
829
+
830
+ # If you see "-" instead of ":desktop", interfaces are NOT connected
831
+
832
+ # Connect required interfaces
833
+ sudo snap connect pycharm-community:desktop :desktop
834
+ sudo snap connect pycharm-community:desktop-legacy :desktop-legacy
835
+ sudo snap connect pycharm-community:x11 :x11
836
+ sudo snap connect pycharm-community:wayland :wayland
837
+ sudo snap connect pycharm-community:home :home
838
+ sudo snap connect pycharm-community:network :network
839
+
840
+ # Restart snap daemon and try again
841
+ sudo systemctl restart snapd
842
+ snap run pycharm-community
843
+ ```
844
+
845
+ **For Chromium/Firefox:**
846
+ ```bash
847
+ sudo snap connect chromium:desktop :desktop
848
+ sudo snap connect chromium:x11 :x11
849
+ sudo snap connect firefox:desktop :desktop
850
+ sudo snap connect firefox:x11 :x11
851
+ ```
852
+
853
+ **Debug launch:**
854
+ ```bash
855
+ PYCHARM_DEBUG=true snap run pycharm-community 2>&1 | tee /tmp/pycharm-debug.log
856
+ ```
857
+
858
+ **Nuclear option (reinstall):**
859
+ ```bash
860
+ snap remove pycharm-community
861
+ rm -rf ~/snap/pycharm-community
862
+ sudo snap install pycharm-community --classic
863
+ sudo snap connect pycharm-community:desktop :desktop
864
+ ```
865
+
676
866
  ### Network Issues
677
867
 
678
868
  If you encounter "Network not found" or "network 'default' is not active" errors:
@@ -1021,4 +1211,4 @@ qm set 9000 --boot c --bootdisk scsi0
1021
1211
 
1022
1212
  ## License
1023
1213
 
1024
- MIT License - see [LICENSE](LICENSE) file.
1214
+ Apache License - see [LICENSE](LICENSE) file.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "clonebox"
7
- version = "0.1.20"
7
+ version = "0.1.22"
8
8
  description = "Clone your workstation environment to an isolated VM with selective apps, paths and services"
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}