Repository navigation
Releases: EMILIO888real/Packer
Release list
v0.27.0 - Font Enhancements, GUI Rew
packer Update [0.27.0]
This release enhances the CLI, GUI, and documentation with new features such as font randomization, terminal-specific exception handling, and dynamic text rendering in the GUI. Additionally, it addresses several improvements and bug fixes, including automatic Git indexation of the CHANGELOG.md file and updated documentation for various functions. But most importantly remember that the GUI is a still in progress feature!
Installation
Use the assets attached to this release page or PyPI to install this exact version.
1. Via PyPI
pip install packer-release==0.27.02. Via Attached Wheel File
Download packer-0.27.0-py3-none-any.whl from the Assets section below, then run:
pip install ./packer-0.27.0-py3-none-any.whl3. From GoFile Source Archive
Download the source archive from https://gofile.io/d/KtA9pExt and install it locally with pip:
pip install /path/to/packer-0.27.0.zip4. Standalone Executable (No Python Required)
Download the binary for your platform from the Assets section below:
- Linux:
packer(runchmod +x packerto make it executable) - Windows:
packer.exe
Changes in 0.27.0
Added
- [0056648] CLI completion function for settings
--version-fontfonts to give nice-random font selection. - [0056648] Documentation for various functions that were missing, most importantly the
Global_exception_handleris also now documented. - [689559d]
trigger_exitfunction inege.pyto handle clean GUI exit by triggeringpygamequit event. - [689559d]
compatabilitysettings for the GUI users that are on Windows. - [2c30382] Doctype for the
_smooth_outputfunction, so that all of those function have doctype and type notations, so when you inspectprint_and_logthe documentation remains the same.
Changed
- [5f5e478] Added a
no_indexparameter to themain()function inchange.py, allowing to disable automatic full git indexation of the project (default is False). - [0056648] Officially made Packer's
Global_exception_handleronly run in a terminal interface, not when Packer is imported. - [0056648]
print_colored_textfunction in theetf.pymodule to acceptNoneas an option for color, in that case the function doesn't call thechange_colorfunction. - [0056648] Updated all use cases of
print_colored_textfunction to not manually check if color is None, but now just simply pass it to theprint_colored_textfunction without a seperateprintfunction call. - [0056648]
Global_exception_handlerupdatemethod to allow acceptingIO queues, making it easy to plug in an interface after creating the object. - [689559d] Removed temporary section in the GUI that mutes
Pygamewarnings. - [689559d] Reworked
_refresh_outputfunction in the GUI to correctly render text, lines are warped by character a new blit is created for each text they are aligned as close to each other as possible on the x axi, in the future font size will be dynamic for y axi alignment as well. - [689559d]
_handle_outputto correctly save the end characters if there are any and added an automatic GUI exit if an exit event is received from Packer after a delay. - [689559d]
_draw_outputto not allow accepting mouse inputs by clearing themenu_buttonslist. - [689559d]
_send_queue_requestdictionary object strucure to not contain the expected output type, since it doesn't ever change based on the question. - [689559d] Output window in the GUI to have 2 buttons at the bottom a yes and no whenever a question pops up.
- [2c30382]
_log_and_output_queuefunction doctype and type notations to match it's other similar functions, to be more readable. - [bb5a2c9] Update
GoFilePacker folder share code from the oldbsT5ixto the newKtA9pExt, sinceGoFilehad again updated their website and the folder was removed.
Fixed
- [3e15e4b] Made git still automatically index or stage the
CHANGELOG.mdfile regardless of the--no-indexflag. - [0056648] Documentation on the
bool_answerfunction in theetf.pymodule. - [0056648]
Global_exception_handlerto use providedIO queues. - [2c30382] Type notation for the
Packerclass variable IO queues, to show that they accept None as a value. - [2c30382] Output for missing ollama client in the
Packerclass to not have a random comma after a line, accidental syntax mistake. - [2c30382] Output for
GoFileretrying message to correctly pass values to the function, the level argument was being passed to the color parameter.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256- Linux (Terminal):
Open your terminal and run:
sha256sum packerCompare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.26.0 - Time-locked GUI emergence, Lockdown
packer Update [0.26.0]
This release enhances system safety, introduces a preliminary GUI, and refines the terminal interface for improved Packer functionality.
Installation
Use the assets attached to this release page or PyPI to install this exact version.
1. Via PyPI
pip install packer-release==0.26.02. Via Attached Wheel File
Download packer-0.26.0-py3-none-any.whl from the Assets section below, then run:
pip install ./packer-0.26.0-py3-none-any.whl3. From GoFile Source Archive
Download the source archive from https://gofile.io/d/bsT5ix and install it locally with pip:
pip install /path/to/packer-0.26.0.zip4. Standalone Executable (No Python Required)
Download the binary for your platform from the Assets section below:
- Linux:
packer(runchmod +x packerto make it executable) - Windows:
packer.exe
Changes in 0.26.0
Added
- [a586148] A new safety mechanism for the revert_changes method to only be allowed to run once with threading.Lock for a thread safe system.
- [59fd3fa] A really rough, early access and kinda bad GUI.
- [59fd3fa]
format_timefunctionet.pyto convert seconds into other units, like the file size one.
Changed
- [a586148] Cleaned up a few random parts.
- [a586148]
stderrto be routed tostdoutin_Popen, to be logged and outputted. - [59fd3fa] Added a
Queueimport and modified therun()function inactions.pyto accept two additional optional queues for input and output. - [59fd3fa]
_finish_streamfunction incore.pyto only do something ifPacker'snative terminal interface is being used.
Fixed
- [a586148]
_process_partial_outputfunction call to actually input the entire text, including theif present. - [a586148] Ordering of code execution in
_process_partial_outputto first log the text before clearing the buffer. - [a586148]
_Popenmethod to actually pass the correct parameterflush, instead offorce. - [ec4c691] Change in
Packer.get()method: Instead of usingself.input.get(), it now usesself.input_queue.get().
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256- Linux (Terminal):
Open your terminal and run:
sha256sum packerCompare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.25.0 - Color Pallets
packer Update [0.25.0]
This release introduces color customization features, updates to CLI documentation, improvements to the upcoming GUI, and various output formatting enhancements. Additionally, there are fixes addressing issues with GitHub workflow rejection, import locations, and function documentation.
Installation
Use the assets attached to this release page or PyPI to install this exact version.
1. Via PyPI
pip install packer-release==0.25.02. Via Attached Wheel File
Download packer-0.25.0-py3-none-any.whl from the Assets section below, then run:
pip install ./packer-0.25.0-py3-none-any.whl3. From GoFile Source Archive
Download the source archive from https://gofile.io/d/bsT5ix and install it locally with pip:
pip install /path/to/packer-0.25.0.zip4. Standalone Executable (No Python Required)
Download the binary for your platform from the Assets section below:
- Linux:
packer(runchmod +x packerto make it executable) - Windows:
packer.exe
Changes in 0.25.0
Added
- [c77e209]
flushandendparameters toprint_bg_colored_text, they are just passed straight toprintfunction. - [778e892] Color pallets to config.py, for some nice color combinations that can simply be imported.
- [778e892] A few more flags to control the newly changed
--versionflag, like--static,--version-font,--version-color. - [68b3505]
open_projectparameter to thesetupfunction, which opens the project with the text editor defined in your settings after creation. - [0ad2664]
_process_partial_outputhelper function forPackerto do just that, it's called for both output functions_print_and_logand_log_and_output_queue. - [3e19037] A new method
queue_prompt_edit_textto handle text editing interaction within the input queue. - [3e19037]
self.prompt_edit_textvariable which is a dynamic function that is eitherself.queue_prompt_edit_textor_input_via_text_editor, based on ifinput_queueis provided. - [990e057]
all_settings_statusvalidation variable to also catch any other exceptions when reading the settings file, like file permissions, invalid JSON and anything else. - [77c7aa0] A lot of new settings for the upcoming GUI.
- [ef74d40] Introduces a new method
_smooth_outputfor managing output with smoother rendering whenall_settings.smooth_outputis enabled, it was supposed to already exist when I changed the architecture, my bad.
Changed
- [3a1d4dd] Prettified by adding a ton of colors in various random output for variables for the most part.
- [3a1d4dd]
+character before output the net size change if it's positive. - [778e892] Version flag to look much nicer.
- [778e892]
--versionflag in theruncommand to now just be--new-version,-ninstead of the--version, since they were conflicting, which might be confusing. - [2ed0780] Updated CLI documentation to include the new global options for version display, static banner, font and color selection.
- [4389405] The
gitinteractions inchange.pyto use theGitPythonRepoobject, instead of running commands throughsubprocess.run. - [4389405] Output to be colored for warnings and errors using a custom function
print_colored_textfrompacker.custom_modules.etf. - [0ad2664]
_print_and_logto not handle output queue, since the function won't be called there is a different function responsible for that_log_and_output_queue. - [3e19037] Replaced
_input_via_text_editorwithself.prompt_edit_textin all places for handling version description, title, and potentially other text edits. - [3e19037]
_get_queue_inputoutput type fromAnytobool | None, since that's whatbool_answerfunction used in it returns,Noneis only for invalid answers. - [990e057] Moved some of the constants or variables containing default and available user choices to
config.py, so that they can easily be reused in other interfaces along sideall_settings_status. - [990e057] Moved terminal interfaces
all_settings_statusprocessing and output to happen right after parsing provided arguments in thecli.py, instead of after all commands. - [990e057]
all_settings_statusvariable creation to be a bit more robust inconfig.py. - [d30d74b] Long single line imports into multiple lines using parentheses.
Fixed
- [c77e209]
_Popenstreamed output to actually output by flushing the input buffer. - [5b09b80] Replaced the flimsy check for rejecting the GitHub workflow through Packer automatically via the
revert_changesmethod to instead check ifPackerhas an attributerun_id, no need to check if it's valid just in case the id is 0, if it's present we good. - [3a1d4dd] Various
print_and_logfunction calls to correctly pass the log level to the parameter instead of passing it to the color parameter. - [56363f3] The assets directory place in the README example, instead of at root, but instead it's actually inside the program's folder.
- [8aa36a2] Changed the import of
input_via_text_editorto_input_via_text_editorto import the internal one fromconfig.py, to actually use the settings defined inPackerglobal settings. - [0ad2664] Documentation for
_log_and_output_queueto not just be a copy of_print_and_log, since the function doesn't print anything. - [6df5595]
_process_partial_outputfunction to correctly work with the new way that part of code works, had the old namespace when it was refactored into it's own function.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256- Linux (Terminal):
Open your terminal and run:
sha256sum packerCompare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.24.0-1 - Path Altered
packer Update [0.24.0-1]
This release enhances documentation, introduces new project setup, and streamlines trusted publishing for Packer releases on PyPI through GitHub actions, also introducing a new Security policy and UI for version bumping.
Installation
Use the assets attached to this release page or PyPI to install this exact version.
1. Via PyPI
pip install packer-release==0.24.0-12. Via Attached Wheel File
Download packer-0.24.0-1-py3-none-any.whl from the Assets section below, then run:
pip install ./packer-0.24.0-1-py3-none-any.whl3. From GoFile Source Archive
Download the source archive from https://gofile.io/d/bsT5ix and install it locally with pip:
pip install /path/to/packer-0.24.0-1.zip4. Standalone Executable (No Python Required)
Download the binary for your platform from the Assets section below:
- Linux:
packer(runchmod +x packerto make it executable) - Windows:
packer.exe
Changes in 0.24.0-1
Added
- [3cd1f5f] Requirements section in the README.
- [1712c6c]
$pypi_program_nameas another key available for you release template, also used in the default. - [c0f2b33] An
ollama_availablevariable to check if Ollama is available on PATH. - [c0f2b33] An option to disable all general AI features in packer in global settings in case the user doesn't want to use any of them.
- [a135d6c] Trusted publishing for Packer releases for PyPI through GitHub actions with publish.yaml, which now handles building and uploading to PyPI safely, old method is still available and Packer still builds the wheel file for the GitHub release.
- [118ae06] A basic Security policy via Security.md in the project root.
- [4186f12] Removal of 'build' directory unless excluded in exclusions.
- [b9e88ab]
git_commita helper method toPackerto easily make commits by trying signed first and if that fails then unsigned. - [b9e88ab] Confirm/cancel prompt for PyPI upload when using GitHub for trusted publishing instead of
Packer. - [b9e88ab] A step:
Yank the uploaded PyPI releasetoMANUAL_REVERT, just like in therevert_changesmethod ofPacker. - [b9e88ab]
postindex to version numbers. - [36ffe0e] Support for keeping the current version when no new version input is provided (empty string) in the
resolve_versionfunction and its callers incli.py,tui.py, andet.py. - [efbb24c] A method call
_process_environmentsto therevert_changesmethod to also reject the pending task on GitHub.
Changed
- [3cd1f5f] Installation section in README.
- [3cd1f5f] Usage section in README.
- [3cd1f5f] Other various sections like features, Honorable mentions in the README.
- [3cd1f5f] Updated CLI documentation to the latest implementation.
- [3cd1f5f] Updated project settings documentation to the latest implementation.
- [3cd1f5f] Removed the typical release template in PROJECT.md, instead the user can check out the default template.
- [3cd1f5f] Updated Packer settings documentation to the latest implementation.
- [3cd1f5f] Updated Doctype for Settings object and the module itself config.py to the latest implementation.
- [3cd1f5f] The name of the archive created by Packer of your software from "$program_name x.y.z.zip" to "$program_name-x.y.z.zip" and saved it as a variable.
- [3cd1f5f] The default release template's installation section to be much simpler and include PyPI as a another method.
- [3cd1f5f] Version bump token or the prompt for which version to bump up to from "M, m, p" to "x, y, z".
- [3cd1f5f] Doctype of the Packer class to the latest implementation.
- [3cd1f5f] Removed tips section in the default release template RELEASE.md.
- [3cd1f5f] Updated ROADMAP.md to state that I will try to write it when Packer comes closer to releasing.
- [3cd1f5f] Added mention of the 3 main interfaces that will be available in Packer later, GUI (pygame), TUI (textual), CLI (primary).
- [c0f2b33] Rearrange config.py a little around, so it's a little easier to use.
- [4f8f7a9] All file links in all of the documentation, mostly just README to link to GitHub hosted file location instead of local files, so that other platforms like PyPI can correctly link them.
- [85b36b9] Removed extra notes section in the README about Packer's integration with GoFile, GitHub, and Nuitka.
- [6c2f1dd] Replaced the config section with a much more useful setup section, that explains Packer's new project setup.
- [cb77721] Introduced an environment variable
pypi-productionin the "publish" workflow, which will pause the workflow execution requiring approval before continuing. - [b9e88ab]
wait_smooth_outputPackermethod call for_Popenmethod to be called before setting the wait flag for commands, so they can freely output instead of calling the method inside the _Popen method. - [b9e88ab] Moved all kinds of cleaning and post release tasks to happen after prompting the user to revert if necessary, instead of right before it.
- [b9e88ab]
format_version_textto handlepostversion index if present and add it if not present. - [b9e88ab]
resolve_versionfunction to correctly bump version with post index in the mix, adds it if missing, not the previous functionformat_version_text, it skips post if it's 0. - [b9e88ab] UI implementation of bumping the version to only prompt for a version bump if no post version is present.
- [efbb24c]
_process_environmentsfunction to be a method of Packer and to also call automatically itselffind_environmentsimported function without needing another private method for Packer.
Fixed
- [e63f601] Made
pypi_api_tokenan optional field to the Project class insrc/packer/config.py. This change makes the field nullable by assigning a default value ofNone. - [ad87fb6] Project size comparison has been reversed in
print_and_logfunction calls for both project and new versions sizes. - Extraction of latest changelog by replacing end point with `full_changelog.find(
- [ee611b6] Changelog adding git hashes logic to use a helper function
_insert_hash_into_categorywith pattern matching instead of the previous fragile approach. - [e968d2a] Moved the block of code for removing the build directory from the projects directory to post clean up.
- [70d7c0c] Instead of calling .json method on the requests module, now it gets called on the response instead. f'
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256- Linux (Terminal):
Open your terminal and run:
sha256sum packerCompare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.23.0 - Colorful Tracking
packer Update [0.23.0]
This release enhances user interfaces with color options, improves build automation, and strengthens error handling, while also streamlining Packer's Python package creation and upload process to PyPI.
Installation
Available via:
- GitHub: GitHub Releases
- Third-party website (GoFile): Archive (click the download button).
Binary Downloads
When downloading, please choose the correct build for your operating system:
| File Name | Platform | Description |
|---|---|---|
packer |
Linux/macOS | Executable for Unix-based systems. |
packer.exe |
Windows | Executable for Windows systems. |
To install:
- GitHub:
Download the appropriate binary for your system from the Releases page. - Third-party website (GoFile):
Head to the website Archive and download the specific arhive with the appropriate version.
After installing, continue following instructions via the README.
Changes in 0.23.0
Added
- [9495cd6]
track_model_pullfunction to be able to easily track installing models in any interface in cli.py it uses theTqdmProgressRenderer. - [416eb92] A check before creating the Packer object to check if the ollama client is available on PATH.
- [9bc0e18]
pypiintegration withbuildandtwineto build the python package and upload it respectively. - [63f0ffc] A fallback for when output data text dict is malformed in that case just print out the problem.
Changed
- [a2590f0] Hardened blank line filtering by adding a list variable
pending_blank_linesto manage extra blank lines between sections in the changelog. - [dc206c5] Ollama models suggestion to filter out any models that don't have completion in their capabilities metadata, like text embedded models, also to sort by size and choose mistral if possible otherwise the smallest available.
- [9495cd6] The
print_listfunction insrc/packer/custom_modules/etf.pynow accepts optional RGB color for text, index number color. - [639f317] Packer to use pytest for internal functionality testing, for better future development of Packer.
- [d8c09e8]
print_and_loginternal functions to allow partial line coloring while retaining only full lines in the log, by utilizing an internal bufferself.print_message_parts. - [d8c09e8] Documentation for internal
print_and_logfunctions to have the same doctype copied over for simplicity, IDE support and clear intent. - [d8c09e8] TUI run project choice to also check for an IndexError, in case the user provided an index that isn't listed, not just the name of the project.
- [6589965] Renamed project name from "packer" to "packer-release" in pyproject.toml for in the future you will be able to install this project from pypi using a package manager like pip, this name change only applies to pypi, project's official name is still packer.
- [9bc0e18] Some output to report when uploading begins on GitHub assets.
- [9bc0e18]
runfunction in actions.py to be much simpler to usemodel_dumpmethod with kwargs for thePacker'sconstructor. - [b593dbb] The output of the error if ollama isn't on PATH to have spaces to look nicer.
- [00cb5a9] Python package wheel build waiting and uploading to GitHub release assets to happen before pyinstaller and nuitka.
Fixed
- [3626a68] Type notation for a cycle object to use Iterable instead of runtime cycle object.
- [f104a51] Build script
pyproject.tomlto correctly package the assets to also include everything inside the assets folder, not just the top directory, but everything recursively. - [639f317] Corrected the filtering logic to be a bit more robust, tests had failed.
- [d8c09e8] Instances of waiting for smooth_output to finish before printing to the terminal in normal mode to utilize a general function
self.wait_smooth_outputinstead of just calling the join methodself.buffer_queue.join, which fails if smooth_output is disabled. - [6589965] Move Git repo initialization in Packer's constructor to happen after changing CWD if needed.
- [05c45ce] Renamed
folder_idtogofile_folder_idparameter in the constructor of Packer class, to be simpler and use the same naming scheme as saved project settings keys. - [b593dbb] The check if ollama isn't on path to correctly evaluate first whether we need to check if any prompts are provided and if so check if ollama is available on PATH.
- [63f0ffc]
main.specby addingcopy_metadata("twine")todatasto correctly bundle all necessary data for twine. - [63f0ffc] Output handling for GoFile errors, arguments were incorrectly passed.
- [e3cbea1] Another argument passing error in GoFile error output log level was passed instead of a color.
- [804d9a6] Build python package wheel upload to pypi to find the correct file.
- [804d9a6] Addition of a
waitparameter inrevert_changes,_exitmethods, and_wait_smooth_outputfunction to control whether they wait for smooth output before exiting or not, in case of failure in the output the software might wait forever. - [00cb5a9] Built python package wheel upload to GitHub release assets by correctly formulating a full path.
- [00cb5a9] To wait until all output has finished outputting before returning the revert_changes method in case output follows straight after.
- [b145d87] Minor syntax mistakes regarding python package built wheel upload to GitHub release assets.
Tips
If you prefer to build from source via GitHub, you can clone the repository using:
git clone https://github.com/EMILIO888real/Packer --depth 1
Using --depth 1 creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
While downloading the pre-compiled binaries (like packer or packer.exe) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with git pull as they are released.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256
- Linux/macOS (Terminal):
Open your terminal and run:
sha256sum packer
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.22.0 - Enhanced Output Control, User Settings Setup
packer Update [0.22.0]
This release enhances user settings handling, introduces a new actions module, improves terminal interface and output formatting, streamlines main execution flow, and optimizes various functionalities throughout the application.
Installation
Available via:
- GitHub: GitHub Releases
- Third-party website (GoFile): Archive (click the download button).
Binary Downloads
When downloading, please choose the correct build for your operating system:
| File Name | Platform | Description |
|---|---|---|
packer |
Linux/macOS | Executable for Unix-based systems. |
packer.exe |
Windows | Executable for Windows systems. |
To install:
- GitHub:
Download the appropriate binary for your system from the Releases page. - Third-party website (GoFile):
Head to the website Archive and download the specific arhive with the appropriate version.
After installing, continue following instructions via the README.
Changes in 0.22.0
Added
- [6f00753] A new method call
self.buffer_queue.join()at the end therunmethod to ensure waiting for the output to finish before returning and possibly exiting. - [ea25344] Setup for user settings if the file is missing in
config.py, by prompting for the 3 required settings with also searching for available and offering Packer defaults as an option as well. - [ea25344] Proper Invalid settings output, instead of triggering an exception now Packer displays the problematic setting with the type of problem and a message attached in a nice colorful clean output.
- [1e358db] Colors to a lot of the output.
- [cd8f578] Introduced a new settings
stream_background_colorin the global settings for configuring streamed commands output background color. - [cd8f578] The ability to skip
interactive debuggerin the exception handler with a keyboard interrupt (ctrl+c), no need to answer in that case. - [4b531b8] Dynamically fetch licenses from GitHub for autocomplete in the CLI using the rest API.
- [daf18ee]
actions.pya new module for storing actions the user can choose to do in any of the provided interfaces, like CLI, TUI and in the future a GUI and a proper TUI with textual or some other fancy TUI library. - [113ec8a] A function
_filter_empty_changelog_sectionsto remove empty sections from changelog.
Changed
- [ea25344]
text editor,wait flagandmodeluser settings to be mandatory set, since the user might not be using or installing Packer defaults. - [1e358db] Default value handling for the text editor and AI model to display the first found option, for text editors this is enhanced since it looks for a few presets.
- [1e358db] Settings saving to have nice indentation and mention automatic error reporting with a path to the settings file.
- [cd8f578] All background color printing functionality in
etf.pyto be less rigid, more modular and simpler to use. - [cd8f578] Terminal clearing logic to instead of only check at the constructor the terminal size to determine the amount of lines to clear, but instead each time it prints them making it possible to adjust the terminal size while the stream is going without any visual artifacts.
- [daf18ee] Removed the
old_versionparameter fromPackerconstructor, sincePackercan just get it himself dymanicly during boot up. - [daf18ee] Completely changed
main.pyto be much leaner and not so mixed up with the terminal interfaces or any interfaces for that matter, instead it just runs 2 functionstuiandcli, the 2 interfaces and in the future the gui interface as well, possibly by main, possibly by cli via a flag. - [daf18ee]
CLIandTUIto use the only action stored inactions.pyfor nowrunwhich just runs the mainPackerclass on whatever project chosen that is saved in packer configs. - [daf18ee]
TUInow also includes the prompt for a new version prompt which allows the TUI instead of returning values, but run actions himself. - [a395d7f] Moved all terminal like interface logic for prompting or outputting missing settings in the cli.py module instead of config.py, so that the info can be injected into any interface, only downside of this approach is the forced default settings in case of any problem to them like missing values or validation problems, might change in the future.
- [a395d7f] The forced settings to be enforced in a softer way instead of the setting pydantic object outright having no default value for the 3 settings, it does, but config.py looks if the user has provided these settings if not add them as a status that any interface can use to display and prompt for the missing settings.
- [a395d7f] Reworked the logic around settings to validate and check and use fallbacks or defaults to complete defaults settings in config.py in case of any problems.
- [ed9dd7b] Moved the Gofile user token and folder ID input and storage logic to be conditionally executed based on the presence of the Gofile user token.
- [ed9dd7b] Only prompts for the GoFile code if the user token was provided.
- [113ec8a]
revert_changesmethod to first wait for all output to output before running (trying to output anything).
Tips
If you prefer to build from source via GitHub, you can clone the repository using:
git clone https://github.com/EMILIO888real/Packer --depth 1
Using --depth 1 creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
While downloading the pre-compiled binaries (like packer or packer.exe) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with git pull as they are released.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256
- Linux/macOS (Terminal):
Open your terminal and run:
sha256sum packer
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.21.0 - Momentum: Improved Speed
packer Update [0.21.0]
This release enhances project configuration documentation, introduces AI suggestions control, supports streaming to GitHub assets and GoFile uploads, Introduces threading for smoother output, reorganizes setup process, simplifies temporary file handling, and rectifies various template and waiting logic issues.
Installation
Available via:
- GitHub: GitHub Releases
- Third-party website (GoFile): Archive (click the download button).
Binary Downloads
When downloading, please choose the correct build for your operating system:
| File Name | Platform | Description |
|---|---|---|
packer |
Linux/macOS | Executable for Unix-based systems. |
packer.exe |
Windows | Executable for Windows systems. |
To install:
- GitHub:
Download the appropriate binary for your system from the Releases page. - Third-party website (GoFile):
Head to the website Archive and download the specific arhive with the appropriate version.
After installing, continue following instructions via the README.
Changes in 0.21.0
Added
- [16f98aa] Various documentation updates to reflect new features and options in the project configuration.
- [16f98aa]
--ai-suggestionsparameter to theCLIfor disabling AI suggestions in thechangecommand. - [7b4af00] Optional file path parameter for text editor input function to use existing files, if None it wil act as before and create it's own temporary file.
- [d3a7d56] Streaming to GitHub assets and GoFile uploads.
- [f15bb84] Option to skip AI suggestions via keyboard interrupts (ctrl+c).
- [f15bb84]
Packerclass now creates a project specific cache dir to allow running multiple instances. - [feff634] Threading for smooth output to allow the program to run at near full speed instead of creating artificial slow down for looks, also dynamic speed is possible with this approach.
Changed
- [16f98aa] The latest parameters of
Packer, like,check_todo,todo_rel_path,list_start_identifier, andlist_end_identifierhave been moved toProjectclass in config.py, Packer just references them from there. This change was made to be able to have settings validation. - [16f98aa] TODO in
setup.pyto have sections for all entries, like before committing, before release and so on. This will help in organizing the setup process and ensuring that all necessary steps are completed before committing or releasing the package, Packer also checks these by default. - [7b4af00]
mainfunction inchange.pynow acceptstext_editorandwait_flagparameters. - [7b4af00]
input_via_text_editorfunction inconfig.pynow delegates to the module-level function with additional parameters. - [70bd993] Simplified and sped up the logic for waiting the buffer to be processed and emptied.
- [3f21cd7] The
format_sizefunction to handle negative size values.
Fixed
- [16f98aa] Release notes template to use program name variable instead of hardcoded 'packer' and 'packer.exe'.
- [7b4af00] Proper handling of temporary files in text editor input, ensuring cleanup when not using existing files.
- [7b4af00] Correct passing of wait flag to text editor commands when specified.
- [3923266] Changed the smooth output threading
Queueobject to be one of the queue modules instead of Multiprocessing. - [6a29654]
"versions size"to"version size"key of the metadata.json to actually check and compare to last version's size. - [7120d68] Waiting for the printing to finish before prompting for anything through stdin.
- [b392cf1] Added a wait condition before streaming compile or bundling commands via
_Popen. - [b392cf1] The upload_asset_from_memory method now uses
path.getsize(file_path)instead ofpath.getsize(f)to get file size in the _upload_github_asset function.
Tips
If you prefer to build from source via GitHub, you can clone the repository using:
git clone https://github.com/EMILIO888real/Packer --depth 1
Using --depth 1 creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
While downloading the pre-compiled binaries (like packer or packer.exe) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with git pull as they are released.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256
- Linux/macOS (Terminal):
Open your terminal and run:
sha256sum packer
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.20.0 - Enchanted Refinements & Inventive
packer Update [0.20.0]
This release enhances functionality by adding an interactive debugger, text editor integration, and configuration options for AI prompts, cache thresholds, file size display, and TODO list checks. Additionally, it refines code by simplifying prompts, standardizing exception handling.
Installation
Available via:
- GitHub: GitHub Releases
- Third-party website (GoFile): Archive (click the download button).
Binary Downloads
When downloading, please choose the correct build for your operating system:
| File Name | Platform | Description |
|---|---|---|
packer |
Linux/macOS | Executable for Unix-based systems. |
packer.exe |
Windows | Executable for Windows systems. |
To install:
- GitHub:
Download the appropriate binary for your system from the Releases page. - Third-party website (GoFile):
Head to the website Archive and download the specific arhive with the appropriate version.
After installing, continue following instructions via the README.
Changes in 0.20.0
Added
- [77826a0]
format_sizefunction inetto able to easily format bytes into a string version of other sizes, like KiB, MiB and so on up to TiB. - [84dda6b] New configuration settings for cache and log size thresholds, along with auto-clear flags for both. The auto clearing runs after a release process in the run method of the
Packerclass. Thresholds are also displayed, but don't automatically clear in the CLI-pflag. - [84dda6b] Saving the software archive version size in
metadata.jsonto be able to compare in the nextrunmethod execution for the change in size. - [9ae426b] An interactive debugger in the
Global_exception_handler, if the user wants to try launching a post-mortem session to explore the problem further. - [9ae426b] The CLI
--no-aiflag to thechangecommand. If specified disables AI summaries for the change command. - [1cfa4f0]
input_queueandoutput_queueto theGlobal_exception_handlerto be able to use it easily in other interfaces as well, like a GUI and so on. - [9d8febb] Functionality to check for TODO lists before committing/packing, with configurable paths and identifiers.
- [a0e5863]
description_prompt_kwargsandtitle_prompt_kwargsconfiguration options to the Project model with default empty dict and specific options for title prompt. - [7bf8edc] New configuration option
suggestions_promptfor customizing AI suggestion prompts. - [7bf8edc] Text editor integration for input handling across the application.
Changed
- [77826a0]
-pflag in the CLI to also display the size of the item whether it's a file or a folder. Also made the path's relative to Home to shorten them. - [84dda6b]
CLI-pflag output to be colorful for the thresholds and also addedmetadata.jsonas one of the file paths. - [1cfa4f0] Updated
Global_exception_handlerto dynamically handle all std IO actions, like printing and requesting input to use queue if provided. - [1cfa4f0]
prompt_usertosimple_promptto simplify the code, since the prompts in the program are simple. - [a0e5863] Moved
optionswith temperature and word limitations to the kwargs, ofProjectsettings, so they are more configurable. - [7bf8edc] Refactored the text editor interaction logic in
change.pyto use a centralized_input_via_text_editorfunction instead of manually handling temporary files. - [7bf8edc] Simplified text editor usage by removing
which()checks and direct path resolution.
Fixed
- [ca30feb] List parsing logic to use
len(list_start_identifier)instead of hardcoded offset17for extracting task lists, improving robustness when the identifier length changes.
Tips
If you prefer to build from source via GitHub, you can clone the repository using:
git clone https://github.com/EMILIO888real/Packer --depth 1
Using --depth 1 creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
While downloading the pre-compiled binaries (like packer or packer.exe) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with git pull as they are released.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256
- Linux/macOS (Terminal):
Open your terminal and run:
sha256sum packer
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.19.0 - Evolved Fortress Guardian
packer Update [0.19.0]
This release introduces a new configuration manager for improved project handling, encryption of sensitive data, smoother output settings, and streamlined AI response display, alongside various refinements to the application's architecture and usability.
Installation
Available via:
- GitHub: GitHub Releases
- Third-party website (GoFile): Archive (click the download button).
Binary Downloads
When downloading, please choose the correct build for your operating system:
| File Name | Platform | Description |
|---|---|---|
packer |
Linux/macOS | Executable for Unix-based systems. |
packer.exe |
Windows | Executable for Windows systems. |
To install:
- GitHub:
Download the appropriate binary for your system from the Releases page. - Third-party website (GoFile):
Head to the website Archive and download the specific arhive with the appropriate version.
After installing, continue following instructions via the README.
Changes in 0.19.0
Added
- [6211d70] A new step to verify that the release exists before uploading artifacts.
- [27fc292] Error handling with try-except block to catch KeyError when accessing projects dictionary, improving robustness of project selection.
- [091fcef] Cryptography dependency and implemented encryption/decryption functionality for projects.json file to secure sensitive data like tokens.
- [8742357] Refactored project configurations handling into a
_Projects_configurations_managerclass to improve architecture, including logic to get the config, setting it and an easy functionget_w_tui. - [b83adfa] Smooth output settings (smooth_output, smooth_output_speed) to control delayed text printing.
- [0c605b2] Streaming output functionality for description and title generation, allowing real-time display of AI responses.
Changed
- [091fcef] Notification-related logic so it now lives in the shared configuration layer instead of the older utility path.
- [091fcef] The import/merge behavior so imported project and settings data are applied more directly to the active configuration.
- [091fcef] The setup flow to offer more flexible prompts and safer default handling for optional details.
- [091fcef] Project configuration loading so encrypted project files are handled differently from plain JSON files.
- [8742357] All usages of
projects_configurationsto use the new manager's methods (get()andget_w_tui()) instead of direct dictionary access, ensuring proper handling of encrypted files and password validation. - [8742357] The TUI logic to use the new configuration manager for project selection and configuration updates, ensuring consistent access patterns across the application.
- [b83adfa]
cinematic_dialoguefunction toprint_with_delayand simplified it significantly. - [c7b0700] Stream_output calls to extract and pass chunk.message.content directly instead of the entire chunk object for both version description and version title generation flows.
- [78a3cd9] Renamed
self.stream_outputtoself.stream_output_chunkand for the 2 other helper functions the same and updated all references to use the new naming convention. - [78a3cd9] Added initial chunk handling to remove leading whitespace.
Fixed
- [091fcef] Project data persistence so existing saved projects are merged and written more reliably.
- [091fcef] Setup handling for empty or missing values so the flow behaves more gracefully.
- [c7b0700] Increased smooth_output_speed from 0.01 to 0.005 in settings configuration.
- [504f4d7] Added flush=True parameter to print and print_colored_text calls in _stream_print method to ensure immediate output flushing.
- [78a3cd9] Version title generation by added the stream parameter to it as well, instead of just for the version description, I forgot.
- [d470e12] Added logic to collect and store the first chunk of stream output for both version description and version title generation.
Tips
If you prefer to build from source via GitHub, you can clone the repository using:
git clone https://github.com/EMILIO888real/Packer --depth 1
Using --depth 1 creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
While downloading the pre-compiled binaries (like packer or packer.exe) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with git pull as they are released.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256
- Linux/macOS (Terminal):
Open your terminal and run:
sha256sum packer
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
v0.18.0 - Demo videos
packer Update [0.18.0]
This release enhances exception handling, introduces a new project size calculation feature, adds a demo section to the README, and streamlines importing and configuration of modules, among other improvements in user interface, build automation, and refactoring.
Installation
Available via:
- GitHub: GitHub Releases
- Third-party website (GoFile): Archive (click the download button).
Binary Downloads
When downloading, please choose the correct build for your operating system:
| File Name | Platform | Description |
|---|---|---|
packer |
Linux/macOS | Executable for Unix-based systems. |
packer.exe |
Windows | Executable for Windows systems. |
To install:
- GitHub:
Download the appropriate binary for your system from the Releases page. - Third-party website (GoFile):
Head to the website Archive and download the specific arhive with the appropriate version.
After installing, continue following instructions via the README.
Changes in 0.18.0
Added
- [bf77fa4]
Global_exception_handlerto__all__insrc/packer/__init__.pyto expose the exception handler module. - [bf77fa4]
global_exception_handlerfunction to aGlobal_exception_handlerclass to be able to set it up with the necessary data and run it with it's predefined actions. - [eec6e8b] Warning filter to ignore AVX2 capability warnings from pygame.
- [3d3a76b] Functionality to calculate and display project size in MiB, including tracking size changes in metadata.
- [6c1a113] A new "Demos" section to the README with links to three YouTube demonstration videos showing different aspects of the tool's usage.
- [78d20d2] Exclusion functionality to
get_folder_sizefunction to exclude all patterns in the .gitignore just like thetreefunction does when generating the integrity file. - [78d20d2] New version size, by checking the archive's size.
- [d89627d] 'tree' function to init.py exports and imported it from packer.custom_modules.et.
- [8aae214]
simple_prompt_retriesto add retry logic for user input prompts, instead of immediately assuming False.
Changed
- [bf77fa4] All use cases and modules to import from config.py the handler which is imported from exceptions.py and just set up and configured in config.py.
- [bf77fa4]
setup.pyto not createexceptions.py, but instead if the user wants to use the same style asPacker, they can just import it fromPacker. - [af45dea] Enhanced version output (CLI --version) display by adding a decorative ASCII art header with project information (author name, URL, license) using textwrap.dedent for proper formatting.
- [8ce6d97] Removed
program_nameconfiguration field fromProjectmodel and related code, replacing it with dynamic extraction fromproject_path. - [b355d63] The logging message from "Generating social media post text..." to "Generating release notes..." in the packer core functionality.
- [b25e320] The print_and_log calls for description and version title to include a color code [144, 213, 255] for better visual distinction in the terminal output.
Fixed
- [9daf7ab] Actually wrote the logic for setting the volume of the notification sound based on the user's settings.
- [8ce6d97]
print_and_logfunction call for the git directory not being clean to correctly pass the color and then the log level!. - [6e8c475] Changed the project size output message from just showing the size to "Full project size: {size} MiB" for better clarity.
- [62c7a8e] Metadata to be sorted and use the same approach as the
projects.jsonfile having each projects it's own metadata via their local path as a key. - [d2be477] Changed log message from "Waiting for Github to process the release..." to "Waiting for Github to process the push..." to better reflect the actual operation being performed.
- [d89627d] Output of the new version's size to be rounded to just 2 digits after comma.
- [1b5d9ca]
bool_answerto check if the given answer is None, if so return immediately. - [d3a056f] F: Removed redundant while loop that was repeatedly prompting for user input until a non-empty answer was provided, simplifying the input handling logic to only request input once.
- [a18e7df] Metadata file writing by explicitly passing the file handle to the dump function instead of crashing.
- [578486b] Changed file opening mode from read-only to write-only when saving metadata to ensure proper file handling and prevent potential read/write conflicts.
Tips
If you prefer to build from source via GitHub, you can clone the repository using:
git clone https://github.com/EMILIO888real/Packer --depth 1
Using --depth 1 creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
While downloading the pre-compiled binaries (like packer or packer.exe) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with git pull as they are released.
Verification
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
How to verify:
- Windows (PowerShell):
Open PowerShell and run the following command:
Get-FileHash .\packer.exe -Algorithm SHA256
- Linux/macOS (Terminal):
Open your terminal and run:
sha256sum packer
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.