Show HN: NeatShift – Organize Windows files with symbolic links

github.com

13 points by BytexGrid a day ago

Hi HN,

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!

mtlynch 21 hours ago

OP has updated their post, but originally the HN intro included prefixes like "*Title*" and "*Content*."

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...

  • BytexGrid 17 hours ago

    Why do you lie ? If you don't want to use any software its user choice you dont have to spread misinformation. I never edited this post for removing some title or content

    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 ?

    • smallnix 8 hours ago

      Thanks for sharing your code.

      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!

unqueued a day ago

I think symlinks are really underappreciated for organizing files.

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

  • lytedev 21 hours ago

    I have never thought of this and it's brilliant. I should definitely be able to whip up a relatively simple script for tagging arbitrary files with arbitrary tags. I was wondering how to achieve something like this for backup purposes and this should make it a breeze.

mtlynch a day ago

This seems AI-generated. Both the project itself and the HN intro sound fishy.

It 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.

  • smallnix a day ago

    I think it's ok if e.g. people with a different first language than English use LLMs as some sort of "smart spellchecker".

    That the software does some error handling while performing it's goal is not a red flag?

    • mtlynch 21 hours ago

      It's not a red flag that the program does error handling. It's a red flag that the docs advertise standard filesystem error conditions as a flagship feature of this app.

      • BytexGrid 17 hours ago

        And? Error handling mention makes the software AI generated ?

  • BytexGrid 17 hours ago

    I am the developer of this software and I myself re implemented those features . And I wanted to mention those in wiki too . I did use AI to write wiki for my program , as a sole developer I have better things to watch out than writing wiki. Thank you

dankons a day ago

The AI generated docs definitely need work - a lot of volume without explaining much. For example, figuring out whether the tool will make the links in the target directory, or replace the source with a link to a moved file, is not immediately obvious.

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.

  • BytexGrid 17 hours ago

    Also the sys link created are set to hidden , Hence yes the files will be better organized without clutter. And yes it creates sym link from where you want to move the file NOT where you want to move files . Thanks for the suggestion

  • BytexGrid 17 hours ago

    Thanks for the suggestion, I will audit all readme and wiki too

smallnix a day ago

Is the usecase to /1 "make symlink" clones that can be organized in a different way or to /2 move the originals somewhere else and replace with symlinks?

baal80spam a day ago

Sorry, but I have to. 70MB for what amounts to a simple command line wrapper?

  • mrcsharp a day ago

    The reason for the size is that it is shipped as a self contained package which means it includes what it needs from the .net runtime to function.

  • neonsunset 21 hours ago

    It's a WinForms application. However, it is indeed somewhat user-unfriendly to distribute (untrimmable) WinForms applications in a self-contained form.

    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.