Skip to content

Releases: EMILIO888real/Packer

v0.27.0 - Font Enhancements, GUI Rew

Choose a tag to compare

@EMILIO888real EMILIO888real released this 13 Sep 14:28
281697f

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

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

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

4. Standalone Executable (No Python Required)

Download the binary for your platform from the Assets section below:

  • Linux: packer (run chmod +x packer to make it executable)
  • Windows: packer.exe

Changes in 0.27.0

Added

  • [0056648] CLI completion function for settings --version-font fonts to give nice-random font selection.
  • [0056648] Documentation for various functions that were missing, most importantly the Global_exception_handler is also now documented.
  • [689559d] trigger_exit function in ege.py to handle clean GUI exit by triggering pygame quit event.
  • [689559d] compatability settings for the GUI users that are on Windows.
  • [2c30382] Doctype for the _smooth_output function, so that all of those function have doctype and type notations, so when you inspect print_and_log the documentation remains the same.

Changed

  • [5f5e478] Added a no_index parameter to the main() function in change.py, allowing to disable automatic full git indexation of the project (default is False).
  • [0056648] Officially made Packer's Global_exception_handler only run in a terminal interface, not when Packer is imported.
  • [0056648] print_colored_text function in the etf.py module to accept None as an option for color, in that case the function doesn't call the change_color function.
  • [0056648] Updated all use cases of print_colored_text function to not manually check if color is None, but now just simply pass it to the print_colored_text function without a seperate print function call.
  • [0056648] Global_exception_handler update method to allow accepting IO queues, making it easy to plug in an interface after creating the object.
  • [689559d] Removed temporary section in the GUI that mutes Pygame warnings.
  • [689559d] Reworked _refresh_output function 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_output to 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_output to not allow accepting mouse inputs by clearing the menu_buttons list.
  • [689559d] _send_queue_request dictionary 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_queue function doctype and type notations to match it's other similar functions, to be more readable.
  • [bb5a2c9] Update GoFile Packer folder share code from the old bsT5ix to the new KtA9pExt, since GoFile had again updated their website and the folder was removed.

Fixed

  • [3e15e4b] Made git still automatically index or stage the CHANGELOG.md file regardless of the --no-index flag.
  • [0056648] Documentation on the bool_answer function in the etf.py module.
  • [0056648] Global_exception_handler to use provided IO queues.
  • [2c30382] Type notation for the Packer class variable IO queues, to show that they accept None as a value.
  • [2c30382] Output for missing ollama client in the Packer class to not have a random comma after a line, accidental syntax mistake.
  • [2c30382] Output for GoFile retrying message to correctly pass values to the function, the level argument was being passed to the color parameter.

Full changelog

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 packer

Compare 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

Choose a tag to compare

@EMILIO888real EMILIO888real released this 29 Aug 19:39
351294f

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

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

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

4. Standalone Executable (No Python Required)

Download the binary for your platform from the Assets section below:

  • Linux: packer (run chmod +x packer to 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_time function et.py to convert seconds into other units, like the file size one.

Changed

  • [a586148] Cleaned up a few random parts.
  • [a586148] stderr to be routed to stdout in _Popen, to be logged and outputted.
  • [59fd3fa] Added a Queue import and modified the run() function in actions.py to accept two additional optional queues for input and output.
  • [59fd3fa] _finish_stream function in core.py to only do something if Packer's native terminal interface is being used.

Fixed

  • [a586148] _process_partial_output function call to actually input the entire text, including the if present.
  • [a586148] Ordering of code execution in _process_partial_output to first log the text before clearing the buffer.
  • [a586148] _Popen method to actually pass the correct parameter flush, instead of force.
  • [ec4c691] Change in Packer.get() method: Instead of using self.input.get(), it now uses self.input_queue.get().

Full changelog

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 packer

Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.

v0.25.0 - Color Pallets

Choose a tag to compare

@EMILIO888real EMILIO888real released this 22 Aug 06:53
7e7a856

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

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

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

4. Standalone Executable (No Python Required)

Download the binary for your platform from the Assets section below:

  • Linux: packer (run chmod +x packer to make it executable)
  • Windows: packer.exe

Changes in 0.25.0

Added

  • [c77e209] flush and end parameters to print_bg_colored_text, they are just passed straight to print function.
  • [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 --version flag, like --static, --version-font, --version-color.
  • [68b3505] open_project parameter to the setup function, which opens the project with the text editor defined in your settings after creation.
  • [0ad2664] _process_partial_output helper function for Packer to do just that, it's called for both output functions _print_and_log and _log_and_output_queue.
  • [3e19037] A new method queue_prompt_edit_text to handle text editing interaction within the input queue.
  • [3e19037] self.prompt_edit_text variable which is a dynamic function that is either self.queue_prompt_edit_text or _input_via_text_editor, based on if input_queue is provided.
  • [990e057] all_settings_status validation 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_output for managing output with smoother rendering when all_settings.smooth_output is 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] --version flag in the run command to now just be --new-version, -n instead 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 git interactions in change.py to use the GitPython Repo object, instead of running commands through subprocess.run.
  • [4389405] Output to be colored for warnings and errors using a custom function print_colored_text from packer.custom_modules.etf.
  • [0ad2664] _print_and_log to 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_editor with self.prompt_edit_text in all places for handling version description, title, and potentially other text edits.
  • [3e19037] _get_queue_input output type from Any to bool | None, since that's what bool_answer function used in it returns, None is 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 side all_settings_status.
  • [990e057] Moved terminal interfaces all_settings_status processing and output to happen right after parsing provided arguments in the cli.py, instead of after all commands.
  • [990e057] all_settings_status variable creation to be a bit more robust in config.py.
  • [d30d74b] Long single line imports into multiple lines using parentheses.

Fixed

  • [c77e209] _Popen streamed 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_changes method to instead check if Packer has an attribute run_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_log function 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_editor to _input_via_text_editor to import the internal one from config.py, to actually use the settings defined in Packer global settings.
  • [0ad2664] Documentation for _log_and_output_queue to not just be a copy of _print_and_log, since the function doesn't print anything.
  • [6df5595] _process_partial_output function 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.

Full changelog

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 packer

Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.

v0.24.0-1 - Path Altered

Choose a tag to compare

@EMILIO888real EMILIO888real released this 15 Aug 12:47
be18cc9

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

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

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

4. Standalone Executable (No Python Required)

Download the binary for your platform from the Assets section below:

  • Linux: packer (run chmod +x packer to make it executable)
  • Windows: packer.exe

Changes in 0.24.0-1

Added

  • [3cd1f5f] Requirements section in the README.
  • [1712c6c] $pypi_program_name as another key available for you release template, also used in the default.
  • [c0f2b33] An ollama_available variable 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_commit a helper method to Packer to 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 release to MANUAL_REVERT, just like in the revert_changes method of Packer.
  • [b9e88ab] post index to version numbers.
  • [36ffe0e] Support for keeping the current version when no new version input is provided (empty string) in the resolve_version function and its callers in cli.py, tui.py, and et.py.
  • [efbb24c] A method call _process_environments to the revert_changes method 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-production in the "publish" workflow, which will pause the workflow execution requiring approval before continuing.
  • [b9e88ab] wait_smooth_output Packer method call for _Popen method 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_text to handle post version index if present and add it if not present.
  • [b9e88ab] resolve_version function to correctly bump version with post index in the mix, adds it if missing, not the previous function format_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_environments function to be a method of Packer and to also call automatically itself find_environments imported function without needing another private method for Packer.

Fixed

  • [e63f601] Made pypi_api_token an optional field to the Project class in src/packer/config.py. This change makes the field nullable by assigning a default value of None.
  • [ad87fb6] Project size comparison has been reversed in print_and_log function 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_category with 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'

Full changelog

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 packer

Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.

v0.23.0 - Colorful Tracking

Choose a tag to compare

@EMILIO888real EMILIO888real released this 07 Aug 15:12
bc5a599

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:

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_pull function to be able to easily track installing models in any interface in cli.py it uses the TqdmProgressRenderer.
  • [416eb92] A check before creating the Packer object to check if the ollama client is available on PATH.
  • [9bc0e18] pypi integration with build and twine to 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_lines to 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_list function in src/packer/custom_modules/etf.py now 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_log internal functions to allow partial line coloring while retaining only full lines in the log, by utilizing an internal buffer self.print_message_parts.
  • [d8c09e8] Documentation for internal print_and_log functions 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] run function in actions.py to be much simpler to use model_dump method with kwargs for the Packer's constructor.
  • [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.toml to 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_output instead of just calling the join method self.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_id to gofile_folder_id parameter 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.spec by adding copy_metadata("twine") to datas to 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 wait parameter in revert_changes, _exit methods, and _wait_smooth_output function 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.

Full changelog

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

Choose a tag to compare

@EMILIO888real EMILIO888real released this 25 Jul 20:42
cbb627b

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:

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 the run method 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_color in the global settings for configuring streamed commands output background color.
  • [cd8f578] The ability to skip interactive debugger in 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.py a 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_sections to remove empty sections from changelog.

Changed

  • [ea25344] text editor, wait flag and model user 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.py to 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_version parameter from Packer constructor, since Packer can just get it himself dymanicly during boot up.
  • [daf18ee] Completely changed main.py to be much leaner and not so mixed up with the terminal interfaces or any interfaces for that matter, instead it just runs 2 functions tui and cli, the 2 interfaces and in the future the gui interface as well, possibly by main, possibly by cli via a flag.
  • [daf18ee] CLI and TUI to use the only action stored in actions.py for now run which just runs the main Packer class on whatever project chosen that is saved in packer configs.
  • [daf18ee] TUI now 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_changes method to first wait for all output to output before running (trying to output anything).

Full changelog

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

Choose a tag to compare

@EMILIO888real EMILIO888real released this 17 Jul 12:11
e72188a

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:

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-suggestions parameter to the CLI for disabling AI suggestions in the change command.
  • [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] Packer class 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, and list_end_identifier have been moved to Project class in config.py, Packer just references them from there. This change was made to be able to have settings validation.
  • [16f98aa] TODO in setup.py to 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] main function in change.py now accepts text_editor and wait_flag parameters.
  • [7b4af00] input_via_text_editor function in config.py now 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_size function 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 Queue object 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 of path.getsize(f) to get file size in the _upload_github_asset function.

Full changelog

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

Choose a tag to compare

@EMILIO888real EMILIO888real released this 13 Jul 09:58
2375d3e

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:

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_size function in et to 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 Packer class. Thresholds are also displayed, but don't automatically clear in the CLI -p flag.
  • [84dda6b] Saving the software archive version size in metadata.json to be able to compare in the next run method 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-ai flag to the change command. If specified disables AI summaries for the change command.
  • [1cfa4f0] input_queue and output_queue to the Global_exception_handler to 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_kwargs and title_prompt_kwargs configuration options to the Project model with default empty dict and specific options for title prompt.
  • [7bf8edc] New configuration option suggestions_prompt for customizing AI suggestion prompts.
  • [7bf8edc] Text editor integration for input handling across the application.

Changed

  • [77826a0] -p flag 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 -p flag output to be colorful for the thresholds and also added metadata.json as one of the file paths.
  • [1cfa4f0] Updated Global_exception_handler to dynamically handle all std IO actions, like printing and requesting input to use queue if provided.
  • [1cfa4f0] prompt_user to simple_prompt to simplify the code, since the prompts in the program are simple.
  • [a0e5863] Moved options with temperature and word limitations to the kwargs, of Project settings, so they are more configurable.
  • [7bf8edc] Refactored the text editor interaction logic in change.py to use a centralized _input_via_text_editor function 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 offset 17 for extracting task lists, improving robustness when the identifier length changes.

Full changelog

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

Choose a tag to compare

@EMILIO888real EMILIO888real released this 08 Jul 18:10
1743c3f

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:

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_manager class to improve architecture, including logic to get the config, setting it and an easy function get_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_configurations to use the new manager's methods (get() and get_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_dialogue function to print_with_delay and 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_output to self.stream_output_chunk and 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.

Full changelog

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

Choose a tag to compare

@EMILIO888real EMILIO888real released this 06 Jul 21:36
6676c3a

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:

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_handler to __all__ in src/packer/__init__.py to expose the exception handler module.
  • [bf77fa4] global_exception_handler function to a Global_exception_handler class 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_size function to exclude all patterns in the .gitignore just like the tree function 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_retries to 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.py to not create exceptions.py, but instead if the user wants to use the same style as Packer, they can just import it from Packer.
  • [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_name configuration field from Project model and related code, replacing it with dynamic extraction from project_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_log function 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.json file 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_answer to 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.

Full changelog

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.