Commit Graph

334 Commits

Author SHA1 Message Date
Timothy Baldridge
9a6d93524c Use CefSharp instead of CefGlue. Abstracted the Cef bits so we can make future changes easier 2019-12-26 16:26:53 -07:00
Justin Swanson
1be9b49ae9 Offloaded MO2InstallerVM's validity check to the background thread 2019-12-24 00:48:47 -06:00
Timothy Baldridge
b97cabd1e6 Prep for beta 10 2019-12-23 10:29:28 -07:00
Timothy Baldridge
00f702f1f8
Merge pull request #303 from Noggog/bugs-n-features
Bugs n features
2019-12-22 13:57:43 -08:00
Justin Swanson
b392b667cf MO2 proper install folder logic now ignores files in downloads 2019-12-21 19:30:01 -06:00
Justin Swanson
bef5621441 Added slideshow image preload logic 2019-12-21 14:23:39 -06:00
Timothy Baldridge
698a419973
Merge branch 'master' into login-manager 2019-12-20 16:17:08 -07:00
Justin Swanson
7c88b4ea12 Blocks installations into folders /w .wabbajack file 2019-12-20 16:06:20 -06:00
Timothy Baldridge
f5eb4d1d84 WIP 2019-12-20 13:51:10 -07:00
Justin Swanson
caffb6e032 Boolean inverse bugfix 2019-12-20 14:12:01 -06:00
Justin Swanson
f26747bfe5 Readme can be website now 2019-12-20 01:14:43 -06:00
Justin Swanson
74bbb5a4ec Readme opens after install, and after modlist download 2019-12-19 23:09:53 -06:00
Justin Swanson
a4a149d01c Added catch to ModListMetadataVM's needs download check
Was failing to calculate hash while file was locked during download
2019-12-19 22:08:58 -06:00
Justin Swanson
c584666a54 Merge remote-tracking branch 'wabbajack-tools/master' into nasdf 2019-12-19 22:00:51 -06:00
Justin Swanson
5a8c19fbae Failure compiles/installs show red 2019-12-18 23:22:39 -06:00
Justin Swanson
f4f9272858 BeginCommands refactored 2019-12-18 19:14:21 -06:00
Justin Swanson
1673f8a555 LibCef extraction init awaits and improvements 2019-12-18 19:09:45 -06:00
halgari
52b1b57e5d UI wasn't prompting for a new download when the list was updated 2019-12-17 21:30:36 -07:00
Justin Swanson
e0a91036d0 Fixes for progress bars starting at 100% 2019-12-17 21:10:38 -06:00
Justin Swanson
84485af2e1 Under maintenance display 2019-12-16 22:06:30 -06:00
Timothy Baldridge
ff25be8551
Merge pull request #275 from wabbajack-tools/broken-list-warning
Filter gallery by valid lists pulled from the validation service.
2019-12-15 16:54:42 -07:00
halgari
4b11503319 Filter gallery by valid lists pulled from the validation service. 2019-12-15 14:52:12 -07:00
Justin Swanson
4285932ef9 Merge remote-tracking branch 'erri/master' into polish-and-fixes 2019-12-15 15:31:50 -06:00
Justin Swanson
5da5f246ed Modified CPU display to show oldest first. Hid unassigned CPU items
Kept it more visually stable
2019-12-15 13:20:27 -06:00
Justin Swanson
5db61d17ce ModVM and ModListVM utilize UIUtils to create images. Null fix 2019-12-15 13:09:07 -06:00
halgari
ff720cd044 Add anonymous metrics 2019-12-14 21:33:48 -07:00
Justin Swanson
bfd5907bc1 Null fix in VortexCompilerVM 2019-12-14 17:48:20 -06:00
Justin Swanson
e6c98fc3eb Added version display to main window 2019-12-14 17:48:16 -06:00
Justin Swanson
ebd5e4183a Refactoring of installer config views. Fixed visual bug 2019-12-14 16:46:06 -06:00
Justin Swanson
7aa579cf5a Modlist -> ModList 2019-12-14 16:13:31 -06:00
Justin Swanson
dee09f17d4 Fix for modlist images not clearing if N/A 2019-12-14 14:33:26 -06:00
Justin Swanson
078b457857 FilePickerVM unit tests, better filter enforcement 2019-12-14 14:11:39 -06:00
Justin Swanson
1fdfda0edf Post-compile completion menu view 2019-12-13 21:56:42 -06:00
Justin Swanson
b74a183aef Moved OutputFolder to CompilerVM. Added to vortex compiler 2019-12-13 21:44:27 -06:00
Timothy Baldridge
75d37888d2
Merge pull request #265 from Noggog/some-fixes
CompilerVM active intervention variable
2019-12-13 05:15:17 -07:00
Justin Swanson
02f53f4e7c CompilerVM active intervention variable 2019-12-12 19:58:40 -06:00
Justin Swanson
bcd7c95caf Merge branch 'master' into async-exploration 2019-12-12 19:49:40 -06:00
Justin Swanson
35878485e6 Installation complete display 2019-12-10 22:59:15 -06:00
Justin Swanson
9e16b701f9 MO2 installation config overwrite checkbox 2019-12-10 21:39:09 -06:00
Justin Swanson
f139ed2335 ConfirmUpdateOfExistingInstallView /w remember setting 2019-12-10 18:16:36 -06:00
Justin Swanson
7f695a4a9e Install/Compile views display ConfirmationInterventions in CPU area 2019-12-08 18:19:36 -06:00
Justin Swanson
f8f0490047 UserInterventionHandlers cancellation tokens. Removed dispatcher 2019-12-08 13:46:30 -06:00
Timothy Baldridge
3bbbfb3ea2 Finish up LL support. 2019-12-08 10:00:22 -07:00
Justin Swanson
86d4003398 Merge remote-tracking branch 'wabbajack-tools/master' into async-exploration 2019-12-08 01:10:51 -06:00
Justin Swanson
5bd856a7c6 Utils async -> sync methods removed 2019-12-07 00:40:29 -06:00
Justin Swanson
43dc6953c5 AbstractDownloadState download made async 2019-12-07 00:40:22 -06:00
Timothy Baldridge
101d45f20c Can log into the Nexus via the internal browser, and can cancel via the back button. 2019-12-06 22:40:57 -07:00
Justin Swanson
e9deda9f44 Large swap to make WorkQueue able to take Task work items 2019-12-06 22:47:49 -06:00
Timothy Baldridge
a8a344d4be Added libCef, hooked it into a WPF window. Made NexusAPI raise a message. Implemented encrypted caching routines. 2019-12-06 17:13:16 -07:00
Justin Swanson
b1ebd3c362 Removed IUserIntervention.Resume 2019-12-04 23:14:40 -06:00
Justin Swanson
e946fc7ea4 Made Utils.LogToFile private. Removed ExceptionToString 2019-12-04 23:07:44 -06:00
Timothy Baldridge
adbddfa16e Integrate master changes 2019-12-04 16:18:34 -07:00
Timothy Baldridge
f67a235274 Logs and exceptions as classes 2019-12-04 16:17:02 -07:00
Timothy Baldridge
9adfa89fca Logs and exceptions as classes 2019-12-03 21:12:08 -07:00
Justin Swanson
8af8e1bf14 Merge remote-tracking branch 'wabbajack-tools/master' into modlist-image-fix 2019-12-03 13:16:41 -06:00
Justin Swanson
b74c8bf544 Modlist image and readme embedded in .wabbajack and displayable 2019-12-03 00:09:20 -06:00
Justin Swanson
4d7c9a3733 Renaming fix 2019-12-02 23:40:59 -06:00
Justin Swanson
0dc0c11e9f Filepicker bugfix for it not opening to current selected file/folder 2019-12-02 23:38:14 -06:00
Justin Swanson
1a5e052aef Install config no longer breaks if pointed to bad modlist 2019-12-02 23:38:06 -06:00
Justin Swanson
d609e50afb Vortex Installer implemented 2019-12-02 20:38:33 -06:00
Justin Swanson
fb2cb28cf4 Some ISubInstallerVM work 2019-12-01 23:46:34 -06:00
Justin Swanson
5bb291a310 AInstaller ctor parameters made more picky for required input 2019-12-01 14:23:24 -06:00
Timothy Baldridge
1aa55fd7e6 Fix build error, bump to version beta 3 2019-11-30 14:15:55 -07:00
Timothy Baldridge
a484e01451
Merge branch 'master' into mode-selection-browser-revamp 2019-11-30 06:08:49 -07:00
Justin Swanson
d2e5aa88d3 Modlist gallery wired up again 2019-11-30 03:21:20 -06:00
Justin Swanson
4e9f44824c Merge branch 'master' into mode-sel-progress-work 2019-11-29 18:28:56 -06:00
Justin Swanson
107527311d Resource loading fixes 2019-11-29 17:56:56 -06:00
Timothy Baldridge
6f1d12a0e4 Fix progress bar updating in the Metadata VMs 2019-11-29 16:01:17 -07:00
Timothy Baldridge
70fead926f Rework how we download/install curated lists 2019-11-28 22:52:33 -07:00
Justin Swanson
a38a5b1503 ModeSelectionView revamped 2019-11-28 23:52:30 -06:00
Timothy Baldridge
3ea10777e0 Switched CPU status into a blue-color-in-the-background style progress bar. Removed "CPU X" in the status, filter CPU lists to only contain non "Waiting" status 2019-11-28 10:30:19 -07:00
Justin Swanson
5c62038341 Removed .Top() call in log display systems
The virtualization systems invoked by the Top() call seem to have a bug in them when handling duplicate entries (at least on the list-side).  Removing it until it can be investigated further and fixed.
2019-11-26 20:34:22 -06:00
Justin Swanson
9bb6e73fa5 Reversal of safety check added to AInstaller.LoadFromFile
Just does the check in the VM before calling it
2019-11-24 18:03:33 -06:00
Justin Swanson
833213e8f4 Readded start from .wabbajack logic to navigate to installer 2019-11-24 17:48:39 -06:00
Justin Swanson
da75aca5ca Compiler/Installer back buttons 2019-11-24 17:42:28 -06:00
Justin Swanson
d1fec7feec Target Modlist exposure on Install Config View 2019-11-24 16:02:05 -06:00
Justin Swanson
5533b14cda Initial one-window setup 2019-11-24 16:01:13 -06:00
Justin Swanson
3f3bd03cd5 Missing await in InstallerVM BeginCommand 2019-11-23 21:37:07 -06:00
Justin Swanson
4f4e6e0f7e Installation progress rewired. Singleton work queue concepts removed 2019-11-23 21:17:42 -06:00
Justin Swanson
ece11e9f41 Compiler-side progress bars wired up again 2019-11-23 21:17:38 -06:00
Justin Swanson
374178db3b Output location systems implemented 2019-11-23 18:53:04 -06:00
Justin Swanson
4e0f061e05 Bugfix for download path re-filling itself undesirably 2019-11-23 18:40:18 -06:00
Justin Swanson
df62c2ff8c Removed unnecessary compiler instantiation for setting downloads folder 2019-11-23 18:36:57 -06:00
Justin Swanson
3a15d62289 ACompiler explicit implementation enforcement of its required members 2019-11-23 18:30:51 -06:00
erri120
80cdefe33f
Fixed naming in Wabbajack 2019-11-21 16:46:02 +01:00
erri120
d8276fb2ea
Simplified names in Wabbajack 2019-11-21 16:04:33 +01:00
erri120
1737d621bd
Removed unused imports from Wabbajack 2019-11-21 15:25:40 +01:00
Justin Swanson
e77f933ce9 Compiler wired to show CPU status again 2019-11-20 23:17:40 -06:00
Justin Swanson
587395e98b ISubCompilerVM.ActiveCompilation 2019-11-20 23:15:47 -06:00
Justin Swanson
2bebad5fae InstallerVM disposes of CPU subscription 2019-11-20 23:08:21 -06:00
Timothy Baldridge
a8d8d20a99 Several fixes that came up during testing.
* Fixed hashing progress bars
* Wired up the CPUStatus to the UI during installation
* Fixed xxHashing
* Verified modlist optimization works on a real modlist (noise)
* Added an optimizer test for extra files created by the user left in the install directory.
2019-11-19 17:15:46 -07:00
Timothy Baldridge
549d32579c
Merge pull request #190 from erri120/add-morrowind
Re-added Morrowind
2019-11-18 14:42:23 -07:00
erri120
fbb90d698e
Re-added Morrowind 2019-11-18 20:31:55 +01:00
erri120
bb2661f968
Changed ToDescriptionString to return toString if no description is present 2019-11-18 18:06:17 +01:00
Timothy Baldridge
8d5843ecc6 Rename Compiler/Installer to MO2Compiler/MO2Installer, other code cleanup as well 2019-11-17 17:17:06 -07:00
Timothy Baldridge
0c78680c09 Abstract the base components of compilers/installers into a single abstract class 2019-11-17 16:48:32 -07:00
erri120
24378ac553
VortexCompiler include Properties 2019-11-17 15:45:21 +01:00
erri120
8e920296b6
VortexCompilerVM cleanup 2019-11-17 15:00:39 +01:00
erri120
801fa74625
Only Vortex supported games will be shown when selecting Vortex compiler 2019-11-17 15:00:38 +01:00
Timothy Baldridge
702de2cfbe
Merge pull request #183 from Noggog/some-styling
Some Styling
2019-11-17 06:56:05 -07:00
Justin Swanson
dc19fdfe42 CompilerVM exposure of status tracker
Sub compilers control what status tracking to use.  View doesn't currently make use of it, but should have access now
2019-11-17 01:59:00 -06:00
Justin Swanson
cafba5ff81 FilePickerVM ExistCheckOption /w IfNotEmpty features
Some paths aren't an error condition when the path is completely empty
2019-11-17 01:05:27 -06:00
Timothy Baldridge
2e2ced6023 Updated work queue reporting 2019-11-16 23:02:09 -07:00
Timothy Baldridge
d92d05dbf8 Merge remote-tracking branch 'origin/master' into compiler-update-streams 2019-11-16 21:16:51 -07:00
Timothy Baldridge
baab601f09 Rework Work queue to be non-static 2019-11-16 21:16:42 -07:00
Justin Swanson
4978e55e04 VortexCompilerVM staging and downloads picker wiring 2019-11-16 21:09:46 -06:00
Justin Swanson
dec8707ff2 Vortex Compilation game folder location commands 2019-11-16 19:42:42 -06:00
Justin Swanson
228bb3d070 VortexCompiler game selection combobox work 2019-11-16 18:41:59 -06:00
Justin Swanson
40d95cb034 Removed Vortex location from GUI 2019-11-16 17:54:20 -06:00
Justin Swanson
5cfc319822 VortexCompiler VM/View work 2019-11-16 17:11:31 -06:00
Justin Swanson
2e9f222648 ISubCompilerVM.Unload()
To save settings when swapping off a compiler VM
2019-11-16 17:09:45 -06:00
Justin Swanson
6d07c4be87 Default modlist image swapped to Wabba_Mouth
Better empty space use /w the typical image aspect ratio
2019-11-16 17:08:13 -06:00
Justin Swanson
4ff0d8e683 Removed Mo2folder from ModlistSettingsEditorVM ctor 2019-11-16 16:33:32 -06:00
Justin Swanson
cefe52f42e CompilerVM image throttles input, and is distinct 2019-11-14 23:31:46 -06:00
Justin Swanson
9fd06e4c67 Removed none.jpg
null bitmaps should just be used
2019-11-14 22:59:59 -06:00
Justin Swanson
52517dc3e4 Some compiler VM startup optimizations 2019-11-14 22:59:12 -06:00
Justin Swanson
80f96433bc MO2 compiler target path saving was missing 2019-11-14 22:55:41 -06:00
Justin Swanson
fd94df0f10 FilePickerVM optimization for initial values
Was debouncing off its initial value of null, so any initial value set by settings wouldn't take immediate effect until later.
2019-11-14 22:55:27 -06:00
Justin Swanson
320761fbcd Restructured View folder 2019-11-14 20:25:15 -06:00
Justin Swanson
b31f336ddb Lots of compiler backend changes to support multiple
CompilerVM is lightweight now, with sub view models per mod manager mode
2019-11-14 20:25:09 -06:00
Justin Swanson
6aa2908078 Reverted GUI portions. Will readd manually 2019-11-14 20:25:01 -06:00
Justin Swanson
5e03dfaaed Merge branch 'master' into compiler-multi-source 2019-11-14 20:24:15 -06:00
Timothy Baldridge
0f4fec8c69 Disable vortex by default 2019-11-14 16:44:24 -07:00
erri120
ce117513e8 Fixed que and log not showing when compiling 2019-11-14 15:34:11 -07:00
erri120
7ca874551a Added StagingLocation to InstallationSettings 2019-11-14 15:34:11 -07:00
erri120
3724d0d296 More rebase fixes, I love it 2019-11-14 15:34:11 -07:00
erri120
184c891995 CompilerVM rebase fixes 2019-11-14 15:34:11 -07:00
erri120
53b2dd5db1 Rebase fixes 2019-11-14 15:34:11 -07:00
erri120
05791f363b Fixed Begin button never being enabled if installing a Vortex ModList 2019-11-14 15:34:11 -07:00
erri120
4203e394aa Default MO2 Installation/Download location from settings is only applied if the ModManager is MO2 2019-11-14 15:34:11 -07:00
erri120
96bedd3ada InstallerVM will try to detect the Vortex staging and downloads location 2019-11-14 15:34:11 -07:00
erri120
9272e9d67c VortexInstaller will now make use of the paths set by the InstallerView 2019-11-14 15:34:11 -07:00
erri120
a423e33cef InstallerView will show different settings depending on ModManager used during ModList compilation 2019-11-14 15:34:11 -07:00
erri120
1024d4a2e2 Warning message will appear if you try to install a Vortex ModList 2019-11-14 15:34:11 -07:00
erri120
d65085e1ab InstallerVM will switch between ModList.ModManager 2019-11-14 15:34:11 -07:00
erri120
263802c304 Added ModManager property to ModListVM 2019-11-14 15:34:11 -07:00
erri120
d1563c6bf4 InstallerVM will not set Download folder for vortex installation 2019-11-14 15:34:11 -07:00
erri120
263581e50e Fixed typo 2019-11-14 15:34:10 -07:00
erri120
6a4600dcc1 Only for testing: game name and location will come from command line arguments 2019-11-14 15:34:10 -07:00
erri120
8d650fcbd9 Fixed some stuff 2019-11-14 15:34:10 -07:00
Justin Swanson
d1806e0ac3 Merge remote-tracking branch 'erri/master' into compiler-multi-source 2019-11-13 20:48:36 -06:00
Justin Swanson
2d32be10bf Added missing ObserveOn call in Log list construction
Added a few more explicit scheduler definitions to Buffer/Batch for good measure
2019-11-10 17:45:33 -06:00
Justin Swanson
4bb76c57ef Compiler Source radio button setup 2019-11-10 00:48:17 -06:00
Justin Swanson
197d2317f9 Compiler begin button wired up and fixed a bit 2019-11-09 19:26:53 -06:00
Justin Swanson
5b4cb1fa89 CompilerVM: Modlist file picker shows errors if not in MO2 directory 2019-11-09 19:20:30 -06:00
Justin Swanson
0ef91d9da8 CompilerVM: Mo2Folder and MOProfile made derivative 2019-11-09 15:26:23 -06:00
Justin Swanson
18e49b0a7f Merge branch 'FilePickerVM' into CompilerView-revamp 2019-11-09 14:59:49 -06:00
Justin Swanson
f339c633bb CompilerView revamp. Wiring still needs work 2019-11-09 14:28:31 -06:00
Justin Swanson
de9e21f0d1 FilePickerVM
Removed most logic from FilePicker.xaml in favor of a VM
2019-11-09 14:20:32 -06:00
Justin Swanson
c18533e311 DetailImageView 2019-11-09 00:59:30 -06:00
Justin Swanson
da518c7bec Added missing ModListName property 2019-11-08 18:45:00 -06:00
Justin Swanson
e0974a5fc0 TopProgressView and LogCpuView 2019-11-08 18:45:00 -06:00
Timothy Baldridge
6996556642 Feed archive info into the HTTP downloader so we get proper downloader progress bars. 2019-11-07 22:19:39 -07:00
Justin Swanson
9e8ea6d281 Initial settings systems
Waiting to do position/size implementation until new ModeSelection systems are finished
2019-11-05 21:22:38 -06:00
Justin Swanson
becf1c0ecd Bugfix for CompileVM using splat logging
Was vestigial change of me experimenting with Splat.  Didn't roll back all the way
2019-11-05 21:19:07 -06:00
Justin Swanson
9051d28822 WorkQueue and Utils Rx instead of callbacks
Swapped the callback registration systems for Rx subjects exposing observables
2019-11-04 22:17:43 -06:00
Timothy Baldridge
f39fe51328
Merge pull request #140 from Noggog/slideshow-refactoring
Image cache and slideshow refactor
2019-11-03 07:15:38 -07:00
Justin Swanson
a95a5415dc Added Page() as a possible route for precaching slideshow 2019-11-03 00:41:11 -06:00
Justin Swanson
84d7eb0f49 Image cache and slideshow refactor 2019-11-03 00:01:19 -06:00
Justin Swanson
24551b62f4 Installation Configuration path error state improvements
Both inputs start blank, and have error circles to display they're unhappy.

Begin button is disabled and styled differently to match
2019-11-02 21:36:53 -06:00
Justin Swanson
6b7fbb54f7 Fixes for last commit 2019-11-02 18:27:23 -05:00
Justin Swanson
7438413fb6 Added ReactiveUI.Fody 2019-11-02 18:23:11 -05:00
Justin Swanson
5f629f4854 Made lazy sub-VM members, so only one is ever created 2019-11-02 17:21:05 -05:00
Justin Swanson
8eaec1eabb Merge branch 'VM-split-and-styling' 2019-11-02 17:13:12 -05:00
Justin Swanson
707e3cda0c Swapped main WJ banner to text-in-mouth image 2019-11-02 15:51:34 -05:00
Justin Swanson
dc5ad70145 Readded shadow to WJ background. Some styling 2019-11-02 15:51:34 -05:00
Justin Swanson
3b9cec7b5c Some miswired properties 2019-11-02 15:51:34 -05:00
Justin Swanson
313890e526 Modlist website button added to installer view 2019-11-02 15:51:34 -05:00
Justin Swanson
b0d83a6210 Made text shadow not show for default WJ background 2019-11-02 15:51:34 -05:00
Justin Swanson
b96ce29789 Made title/author/summary text derivative in InstallerVM
So it will snap back to modlist info when slideshow not active
2019-11-02 15:51:34 -05:00
Justin Swanson
1c727909ce Offloaded slideshow preloading to background thread 2019-11-02 15:51:34 -05:00
Justin Swanson
b37d5312c4 InstallationView Progress Bar tweaks
Now point to actual properties, but mostly disabled for now until progress reporting can be improved
2019-11-02 15:51:34 -05:00
Justin Swanson
fbbb609fe9 Removed undesired offloading
Normally I'd have this background threading to keep the GUI thread from being blocked.  But in this case, it blocks the window from opening/shifting and displaying a black empty screen in the meantime
2019-11-02 15:51:34 -05:00
Justin Swanson
6eb75e1a9a Compilation View spruces/fixes. Basic FilePicker.Filter 2019-11-02 15:51:34 -05:00
Justin Swanson
75f61c2e18 Install configuration systems readded to view 2019-11-02 15:51:34 -05:00
Justin Swanson
25dcb02cb5 InstallerVM: Made some properties derivative 2019-10-27 23:59:58 -05:00
Justin Swanson
2048dfa0de Moved slideshow preloading logic into SlideshowVM 2019-10-27 23:47:48 -05:00
Justin Swanson
b24abd3187 Slideshow logic modified to allow manual updates when not enabled
This means enable/disable only affects auto rollovers
2019-10-27 23:40:44 -05:00
Justin Swanson
b71d5c76a2 Slideshow ModlistImage made into a derivative OaPH 2019-10-27 23:36:46 -05:00
Justin Swanson
e2ff7efe76 Initial Compiler/Installer split for VM and Views 2019-10-24 23:36:58 -05:00
Justin Swanson
66db4e6ddd Refactored logging to all hook into Utils.Log
Log collection moved up to MainWindow.   Since there will be many sub-VMs moving forward, a singleton based setup was desired.  RxUI's Splat was an option, but we already had Utils.Log right there.  Also now GUI printed messages will go to the log on the disk for later inspection.
2019-10-22 23:16:42 -05:00
Justin Swanson
1eafafcbec WorkQueue concepts migrated to MainWindowVM
Since WorkQueue is static itself, just put it in the main vm.  If it ever gets made into a non-singleton, might refactor installer and compiler VMs to each have work queue systems
2019-10-21 22:55:24 -05:00
Justin Swanson
4f6c8b4aae MainWindowVM 2019-10-21 22:55:24 -05:00
Justin Swanson
4f8167555d Folder restructuring 2019-10-21 22:55:19 -05:00