diff --git a/CHANGELOG.md b/CHANGELOG.md index df7906769..18cef1199 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.9.3] - 2024-09-25 + +- feat: auto save sessions before next user input (#94) +- fix: removed the diff when default profile changes (#92) +- feat: add shell-completions subcommand (#76) +- chore: update readme! (#96) +- chore: update docs again (#77) +- fix: remove overly general match for long running commands (#87) +- fix: default ollama to tested model (#88) +- fix: Resize file in screen toolkit (#81) +- fix: enhance shell() to know when it is interactive (#66) +- docs: document how to run goose fully from source from any dir (#83) +- feat: track cost and token usage in log file (#80) +- chore: add link to docs in read me (#85) +- docs: add in ollama (#82) +- chore: add just command for releasing goose (#55) +- feat: support markdown plans (#79) +- feat: add version options (#74) +- docs: fixing exchange url to public version (#67) +- docs: Update CONTRIBUTING.md (#69) +- chore: create mkdocs for goose (#70) +- docs: fix broken link (#71) +- feat: give commands the ability to execute logic (#63) +- feat: jira toolkit (#59) +- feat: run goose in a docker-style sandbox (#44) + ## [0.9.0] - 2024-09-10 This also updates the minimum version of exchange to 0.9.0. diff --git a/pyproject.toml b/pyproject.toml index 8913104c3..0e55a9a6c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,14 +1,14 @@ [project] name = "goose-ai" description = "a programming agent that runs on your machine" -version = "0.9.0" +version = "0.9.3" readme = "README.md" requires-python = ">=3.10" dependencies = [ "attrs>=23.2.0", "rich>=13.7.1", "ruamel-yaml>=0.18.6", - "ai-exchange>=0.9.2", + "ai-exchange>=0.9.3", "click>=8.1.7", "prompt-toolkit>=3.0.47", ] diff --git a/src/goose/cli/session.py b/src/goose/cli/session.py index 38128d853..bfa869a3c 100644 --- a/src/goose/cli/session.py +++ b/src/goose/cli/session.py @@ -45,8 +45,7 @@ def load_provider() -> str: def load_profile(name: Optional[str]) -> Profile: - (profile_name, profile) = ensure_config(name) - print(Panel(f"[green]Using profile[/]: {profile_name}, {{{profile.profile_info()}}}")) + _, profile = ensure_config(name) return profile @@ -85,9 +84,9 @@ def __init__( ) -> None: if name is None: self.name = droid() - print(Panel(f"Session name not provided, using generated name: {self.name}")) else: self.name = name + self.profile = profile self.status_indicator = Status("", spinner="dots") self.notifier = SessionNotifier(self.status_indicator) @@ -146,6 +145,9 @@ def run(self) -> None: Runs the main loop to handle user inputs and responses. Continues until an empty string is returned from the prompt. """ + print(f"[dim]starting session | name:[cyan]{self.name}[/] profile:[cyan]{self.profile or 'default'}[/]") + print(f"[dim]saving to {self.session_file_path}") + print() message = self.process_first_message() while message: # Loop until no input (empty string). self.notifier.start() @@ -231,16 +233,11 @@ def session_file_path(self) -> Path: return session_path(self.name) def load_session(self) -> List[Message]: - message = ( - f"session is going to be saved to [bold cyan]{self.session_file_path}[/bold cyan]." - + " You can view it anytime." - ) - print(Panel(message)) return read_or_create_file(self.session_file_path) def _log_cost(self) -> None: get_logger().info(get_total_cost_message(self.exchange.get_token_usage())) - print("You can view the cost and token usage in the log directory", LOG_PATH) + print(f"[dim]you can view the cost and token usage in the log directory {LOG_PATH}") if __name__ == "__main__":