cjohnson wrote: First, I noticed that the custom icon on my Downloads folder disappears. Checking the console.log, I realized this was because it moved the hidden file "Icon" into the subdirectory. Is there anything I can add to the rules to ignore any hidden/system files?
You can set up a rule (make it first in the list) that matches the Icon file and set the action to "Ignore file". Since the first rule to match gets applied, this will catch the files before any of the other rules get a crack at it. You can also exempt the file on a specific rule by just adding a condition like "Name is not 'Icon'".
Nonetheless, the Icon file is a common case. I'd have to think about it but I may consider always having Hazel always ignore the Icon file unless I can come up with a case where someone would want to apply rules to it.
Second, Hazel keeps trying to move the Archive directory into the Archive directory (a circular reference). I have worked around this by adding another clause to the rule (where name is not "Archive"), but I think it would make sense for Hazel to automatically exclude the destination folder as an argument for any Move operations.
The problem here is that when you create a rule, Hazel does not know ahead of time what files will match it until it actually runs. So, it can't prevent you from choosing a folder that may not make sense later on down the line. Plus, in your case, the argument of the move operation does make sense for every file except for the "Archive" folder. It shouldn't prevent you from selecting "Archive" as a destination just because the folder exists in the same folder. Sorry if this is getting a bit hard to follow but that tends to happen when you get into these more conceptual discussions.
In the future, I may consider putting in an analysis engine for rules but it would be imperfect. In the end, though, it's up to you to make sure the rules make sense.