Planned
Refine UI layout
As suggested/reported by Joe F (mergesort): He’s not keen on the overall alignment and organisation of all buttons/inputs (it’s true that in certain states there’s a lot of icons, they have no hover states, and perhaps they’re not grouped effectively enough). Joe would prefer a more standard left aligned prompt field, he doesn’t like the way it needs to slide while you type. This is fair enough, we should implement this at the very least as an option. One small thought of my own: could group settings button with model picker, since it’s settings-y. (I don’t think we should remove the settings button entirely since many people don’t even realise the menu bar icon exists).
joethephish 2 days ago
Planned
Refine UI layout
As suggested/reported by Joe F (mergesort): He’s not keen on the overall alignment and organisation of all buttons/inputs (it’s true that in certain states there’s a lot of icons, they have no hover states, and perhaps they’re not grouped effectively enough). Joe would prefer a more standard left aligned prompt field, he doesn’t like the way it needs to slide while you type. This is fair enough, we should implement this at the very least as an option. One small thought of my own: could group settings button with model picker, since it’s settings-y. (I don’t think we should remove the settings button entirely since many people don’t even realise the menu bar icon exists).
joethephish 2 days ago
Planned
Buggy when used with Spaces
As reported by Joe F / Mergesort “There seems to be a bug where I wouldn't be allowed to ⌘Tab to apps on another space when Substage was active, it would just shoot me back to the space I was on. My exact configuration is: 4 spaces, 2 full screen apps, and Finder is set active to all spaces.” Substage window not moving between finder windows (sometimes? when spaces active?)
joethephish 2 days ago
Planned
Buggy when used with Spaces
As reported by Joe F / Mergesort “There seems to be a bug where I wouldn't be allowed to ⌘Tab to apps on another space when Substage was active, it would just shoot me back to the space I was on. My exact configuration is: 4 spaces, 2 full screen apps, and Finder is set active to all spaces.” Substage window not moving between finder windows (sometimes? when spaces active?)
joethephish 2 days ago
Add direct support for AI provider API calls
Currently the only way that LLMs are used, is to convert natural language prompts into Terminal commands, and then to summarise the output of that command. However, if we add support for arbitrary API calls (assuming user is using their own API key), then we could allow stuff like “transcribe this audio”, using OpenAI’s Whisper API. Behind the scenes it would make a curl call, and make use of the API key that the user has already supplied in Substage’s settings.
joethephish 3 days ago
Add direct support for AI provider API calls
Currently the only way that LLMs are used, is to convert natural language prompts into Terminal commands, and then to summarise the output of that command. However, if we add support for arbitrary API calls (assuming user is using their own API key), then we could allow stuff like “transcribe this audio”, using OpenAI’s Whisper API. Behind the scenes it would make a curl call, and make use of the API key that the user has already supplied in Substage’s settings.
joethephish 3 days ago
Rename files according to their content
Again with the idea of ‘scanning’ documents (mainly in PDF format) to find out exactly what they contain and then rename them accordingly. Option: also retrieve the name of the establishment, the date, etc. if it concerns invoices, for example.
Thierry Weber 10 days ago
Rename files according to their content
Again with the idea of ‘scanning’ documents (mainly in PDF format) to find out exactly what they contain and then rename them accordingly. Option: also retrieve the name of the establishment, the date, etc. if it concerns invoices, for example.
Thierry Weber 10 days ago
Completed
Improve keyboard support
Currently you can: Use keyboard shortcut to show/hide Substage. This also tries to be smart, so if you’re in another app it’ll first switch to Finder+Substage, and only on second press (if Substage is fully front/active) will it actually hide. Press Return to confirm, Escape to cancel/clear. Press up/down to cycle through command history Areas for improvement: BUG: Sometimes when activating Substage, the prompt field isn’t selected? Add a way to jump back and forth between Substage and its attached Finder window.
joethephish 10 days ago
Completed
Improve keyboard support
Currently you can: Use keyboard shortcut to show/hide Substage. This also tries to be smart, so if you’re in another app it’ll first switch to Finder+Substage, and only on second press (if Substage is fully front/active) will it actually hide. Press Return to confirm, Escape to cancel/clear. Press up/down to cycle through command history Areas for improvement: BUG: Sometimes when activating Substage, the prompt field isn’t selected? Add a way to jump back and forth between Substage and its attached Finder window.
joethephish 10 days ago
Planned
Add support for reading plain text from PDFs
Currently there’s no built-in command line tool on macOS for reading plain text from PDFs (for summarisation etc), as far as I know. Textutil can be used for reading from RTFs, Word Docs, HTML and more, but not PDF. We’d have to embed some helper binary in the same way that we do for ffmpeg.
joethephish 11 days ago
Planned
Add support for reading plain text from PDFs
Currently there’s no built-in command line tool on macOS for reading plain text from PDFs (for summarisation etc), as far as I know. Textutil can be used for reading from RTFs, Word Docs, HTML and more, but not PDF. We’d have to embed some helper binary in the same way that we do for ffmpeg.
joethephish 11 days ago
Planned
Add support for Finder tags
If we bundle this and add training examples, it should work well: https://github.com/jdberry/tag
joethephish 11 days ago
Planned
Add support for Finder tags
If we bundle this and add training examples, it should work well: https://github.com/jdberry/tag
joethephish 11 days ago
Completed
Select/Perform actions on files
Something useful to me would be to be able to type something like “select all the CSV files in this folder” or “select all the files I created yesterday” or “select all the files with ‘quote’ in the filename” - currently, it reports a count and/or has an icon that you hover over to see a list of files. With all the files selected, I could then issue a command like “move the selected files to the folder named ‘Import Files’”…or “drag to the Trash” (with warning based on danger level of the command, of course).
Julian Daniel 13 days ago
Completed
Select/Perform actions on files
Something useful to me would be to be able to type something like “select all the CSV files in this folder” or “select all the files I created yesterday” or “select all the files with ‘quote’ in the filename” - currently, it reports a count and/or has an icon that you hover over to see a list of files. With all the files selected, I could then issue a command like “move the selected files to the folder named ‘Import Files’”…or “drag to the Trash” (with warning based on danger level of the command, of course).
Julian Daniel 13 days ago
LLM (conditional) conversation history awareness
This could be a bad idea but how about LLM memory/history? As in you can chain requests without having to specify every time. Pressing enter would work as usual, but something like option enter / control enter / etc would let you chain requests in the same 'chat'. For example, File A and File B exist Selecting File A, requesting "make into MP4, 1080p" followed by selecting file B, pressing enter, and requesting "this too" will result in a "No request provided" However, Selecting File A, requesting "make into MP4, 1080p" followed by selecting file B, pressing dedicated hotkey (or a continue button next to the return button on the app), and requesting "this too" will result in file B also getting turned to a 1080p MP4 video. Not sure how this will work with online models and API keys, but for local ones, while the model does get unloaded like how it works rn, request history will shortly be kept on cache until you press enter(which resets to default) An additional option which defaults to keeping conversational data (unless a dedicated hotkey is pressed that resets to default) could be interesting.
lionheo9 13 days ago
LLM (conditional) conversation history awareness
This could be a bad idea but how about LLM memory/history? As in you can chain requests without having to specify every time. Pressing enter would work as usual, but something like option enter / control enter / etc would let you chain requests in the same 'chat'. For example, File A and File B exist Selecting File A, requesting "make into MP4, 1080p" followed by selecting file B, pressing enter, and requesting "this too" will result in a "No request provided" However, Selecting File A, requesting "make into MP4, 1080p" followed by selecting file B, pressing dedicated hotkey (or a continue button next to the return button on the app), and requesting "this too" will result in file B also getting turned to a 1080p MP4 video. Not sure how this will work with online models and API keys, but for local ones, while the model does get unloaded like how it works rn, request history will shortly be kept on cache until you press enter(which resets to default) An additional option which defaults to keeping conversational data (unless a dedicated hotkey is pressed that resets to default) could be interesting.
lionheo9 13 days ago
Planned
Include universal binaries of ffmpeg and ffprobe
Currently the official binaries of ffmpeg and ffprobe are intel only so to use it you need to have Rosetta enabled. There are static binaries here: https://gitlab.com/martinr92/ffmpeg https://ffmpeg.martin-riedl.de/ And you can create universal binaries like this: lipo -create path/to/x86_64/executable path/to/arm64/executable -output path/to/universal/executable
joethephish 16 days ago
Planned
Include universal binaries of ffmpeg and ffprobe
Currently the official binaries of ffmpeg and ffprobe are intel only so to use it you need to have Rosetta enabled. There are static binaries here: https://gitlab.com/martinr92/ffmpeg https://ffmpeg.martin-riedl.de/ And you can create universal binaries like this: lipo -create path/to/x86_64/executable path/to/arm64/executable -output path/to/universal/executable
joethephish 16 days ago
Allow using directly on Desktop
If you have an item on the desktop selected, using the Substage keyboard shortcut could show a floating panel at the bottom of the screen
joethephish 16 days ago
Allow using directly on Desktop
If you have an item on the desktop selected, using the Substage keyboard shortcut could show a floating panel at the bottom of the screen
joethephish 16 days ago
Completed
Distinguish selected files from selected folders
The LLM doesn’t currently know when selected items are in fact folders. We could be smart about the way we prompt by: referring to selected items as folders when they are (when they’re exclusively folders?) Putting trailing slashes on folder paths to make it even clearer
joethephish 17 days ago
Completed
Distinguish selected files from selected folders
The LLM doesn’t currently know when selected items are in fact folders. We could be smart about the way we prompt by: referring to selected items as folders when they are (when they’re exclusively folders?) Putting trailing slashes on folder paths to make it even clearer
joethephish 17 days ago
Support thinking local models
Although they aren’t ideal for Substage since they take longer to answer, we should at least parse and ignore the tags.
joethephish 17 days ago
Support thinking local models
Although they aren’t ideal for Substage since they take longer to answer, we should at least parse and ignore the tags.
joethephish 17 days ago
Alternative presentation to the full width docked bar
Some people would prefer a different presentation to the docked bar, for example if they feel it takes up too much space, or would prefer to interact by right-clicking on files and choosing a contextual menu option. We could consider the ability to dock and undock, so you could drag it on/off a Finder window and resize it.
joethephish 19 days ago
Alternative presentation to the full width docked bar
Some people would prefer a different presentation to the docked bar, for example if they feel it takes up too much space, or would prefer to interact by right-clicking on files and choosing a contextual menu option. We could consider the ability to dock and undock, so you could drag it on/off a Finder window and resize it.
joethephish 19 days ago
Completed
Find a way around the 20 file limit
Currently there’s a 20 file limit because of the way that Substage functions, passing in the names of all the individual files to a command - it would force the LLM to create a potentially extremely long Terminal command with a large number of files, and is likely to break down at some point. What if you have 10,000 files selected in a directory of 11,000 files, and want to zip them? Probably Substage isn’t the right tool for the job! But is there anything we can do to improve behaviour?
joethephish 20 days ago
Completed
Find a way around the 20 file limit
Currently there’s a 20 file limit because of the way that Substage functions, passing in the names of all the individual files to a command - it would force the LLM to create a potentially extremely long Terminal command with a large number of files, and is likely to break down at some point. What if you have 10,000 files selected in a directory of 11,000 files, and want to zip them? Probably Substage isn’t the right tool for the job! But is there anything we can do to improve behaviour?
joethephish 20 days ago
Built-in local LLM support
Currently to use local LLMs via LM Studio or Ollama. While this works and is relatively straightforward, some people would prefer to have a more streamlined “batteries included” approach. The design would be that you need to download an optional extra model via the settings (we would recommend a model so it’s one click), and then it would “just work”. The compromise is that it would take up rather a lot of your computer’s memory for a supposedly lightweight “simple” task.
joethephish 21 days ago
Built-in local LLM support
Currently to use local LLMs via LM Studio or Ollama. While this works and is relatively straightforward, some people would prefer to have a more streamlined “batteries included” approach. The design would be that you need to download an optional extra model via the settings (we would recommend a model so it’s one click), and then it would “just work”. The compromise is that it would take up rather a lot of your computer’s memory for a supposedly lightweight “simple” task.
joethephish 21 days ago