Show HN: NeatShift – Organize Windows files with symbolic links (github.com)
I built a lightweight Windows tool to organize files by relocating them while maintaining their accessibility through symbolic links.
The idea came from needing to tidy up my cluttered file system without breaking file paths used by other applications. NeatShift solves this by automating symbolic link creation whenever files or folders are moved.
Key Features:
- Relocate files without breaking existing references.
- Automatic system restore points for added safety.
- Modern Windows 11-style UI with drag-and-drop support.
- Manage and validate symbolic links easily.
It’s free, open source, and still evolving, so I’d love to hear your feedback, suggestions, or contributions!
GitHub: [https://github.com/BytexGrid/NeatShift](https://github.com/B...
Thanks for checking it out—I’m happy to answer any questions or hear ideas for improvement!
17 comments
[ 6.5 ms ] story [ 28.8 ms ] threadIt seems to be a UI for creating symlinks on Windows?
I'm not clear on what problem that solves. What's a situation where you need to move a file that another program depends on for the sake of organization? I can imagine organizing my photos or music, but this makes it sound like I'm going to organize random DLLs in system32.
One of the advertised features is " Error Prevention: Smart validation and error handling." I checked the wiki for more information, and found this:
>Error Prevention
>Validates operations before execution
>Checks for:
>Write permissions
>Disk space
>Existing files
>Valid paths
That seems highly AI-generated. If not, it sounds like it's needlessly reimplementing a lot of what the OS already does automatically.
That the software does some error handling while performing it's goal is not a red flag?
It's usually much better to build them as runtime-dependent but single-file binaries.
E.g. 'dotnet publish -p:PublishSingleFile=true --no-self-contained'* produces a 5.9 MB binary (but obviously needs a .NET desktop runtime installed, it helpfully offers to do so on launch if it's missing).
I assume modifying the solution to use https://github.com/kant2002/WinFormsComInterop + NativeAOT would result in ~30-40MB binary (maybe smaller now? I haven't tested it in a while) as it packages a GUI framework. It could also help with just self-contained and getting trimming to work.
There is a bit of learning curve to all sorts of ways you can build an application with .NET but that's what you pay for having flexible choices over more limited options with Java or Go.
* also retargeted to .NET 9, there is no reason to use out-of-support targets or even sticking to LTS for a distributed application in this case.
I'm interested in how using symlinks helped you declutter the file system - doesn't leaving links around in the old place just lead to more clutter? A concrete use case in the readme will also help others better understand the purpose of the project.
One cool thing you can do is to treat directories as tags when you symlink into them, since a file can 'belong' to multiple directories.
If you're using Windows, you can just use WSL and then you don't need administrative access as the OP's program does.
Here are some simple tools to let you use symlinks as tags:
https://github.com/perses76/refmat-symlink
https://mikeknowl.es/projects/ztag/
https://github.com/michaelknowles/ztag
But if anyone is curious about ways to better organize their files in general, I would check the writings of Karl Voit:
https://archive.baty.net/2018/using-karl-voits-file-naming-s...
https://karl-voit.at/2022/01/29/How-to-Use-Tags/
Simple and portable self describing filenames has served me really well for a long time across many platforms.
This script has done a lot of lifting for me and it will work with WSL with little effort:
https://github.com/mdom/squaretag
Further exploration of this repo makes me think this is even sketchier. The wiki tells the user that they can trust the app because, "All our releases are signed using Sigstore for authenticity."[0] This text was added in a commit titled "refactor: remove Sigstore and update license to GPL 3.0."[1] And I don't see evidence that the app has ever used Sigstore at all.
Further, the LICENSE file includes the beginning of the GPLv3 and abruptly cuts it off 20 lines in with "[... rest of GPL 3.0 text ...]."[2]
A low-effort probably AI-generated Windows app that requires Admin privileges and makes false security claims: seems like malware.
[0] https://github.com/BytexGrid/NeatShift/blob/aac860504f093bb1...
[1] https://github.com/BytexGrid/NeatShift/commit/aac860504f093b...
[2] https://github.com/BytexGrid/NeatShift/blob/51a264cf5d5619ee...
I hope you understand that English is not my first language , for text I do depend on AI . But my code speaks for itself.
Yes,about Sigstore , I added sigstore to get relief from microsoft unsigned application prompt , but it didn't work hence I removed it but creating a wiki takes efforts , I will update it .
I challenge you to make a similar software but different purpose completely with AI , I took my months writing and this guy just says AI application.
About Malware go check it on virustotal or whatever scan you believe . GOT It ?
Don't be disheartened by negative unconstructive comments.
I think maybe adding a disclaimer that you use an LLM since English is not your first language will preempt such comments in the future.
Keep at it, I think such tools are great to build, share and learn from.
Keep focusing on functionality!