ace-git-copilot 0.4.3__tar.gz → 0.4.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/PKG-INFO +28 -18
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/README.md +27 -17
- ace_git_copilot-0.4.4/ace/__init__.py +1 -0
- ace_git_copilot-0.4.4/media/cli_in_action.svg +196 -0
- ace_git_copilot-0.4.4/media/dashboard.svg +215 -0
- ace_git_copilot-0.4.4/media/stats.svg +160 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/pyproject.toml +1 -1
- ace_git_copilot-0.4.3/ace/__init__.py +0 -1
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/AGENTS.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/e2e_testing_track/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/e2e_testing_track/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/e2e_testing_track/SCOPE.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/e2e_testing_track/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/emojis_list.txt +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/find_unused_modules.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/handoff.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/measure_lazy_startup.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/measure_startup.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/profile_imports.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/run_importtime.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/search_banner.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/search_emojis.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/search_git_usages.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/search_usages.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/test_import_profiler.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/explorer_init/test_mocked_sys.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/handoff.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/implementation_track/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/implementation_track/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/implementation_track/explorer_initial_report.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/implementation_track/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/orchestrator/.gitkeep +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/orchestrator/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/orchestrator/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/orchestrator/PROJECT.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/orchestrator/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/teamwork_preview_explorer_e2e_explore/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/teamwork_preview_explorer_e2e_explore/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/teamwork_preview_explorer_e2e_explore/handoff.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/teamwork_preview_explorer_e2e_explore/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/worker_e2e_testing/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/worker_e2e_testing/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/worker_e2e_testing/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/worker_m1_startup/BRIEFING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/worker_m1_startup/ORIGINAL_REQUEST.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.agents/worker_m1_startup/progress.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.env.example +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.github/workflows/tests.yml +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/.gitignore +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/CODE_OF_CONDUCT.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/CONTRIBUTING.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/LICENSE +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/PROJECT.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/SECURITY.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/SUPPORT.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/TEST_INFRA.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/TEST_READY.md +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/__main__.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/changelog_generator.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/code_reviewer.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/commit_generator.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/conflict_resolver.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/gitignore_generator.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/history_analyzer.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/intent_parser.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/llm_factory.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/pr_drafter.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/blame.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/changelog.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/commit.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/conflict.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/doctor.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/explain.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/ignore.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/intent.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/pr.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/rebase.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/review.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/search.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/standup.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/prompts/undo.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ai/rebase_helper.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/cli.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/core/config.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/core/context.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/core/diagnostics.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/core/git_ops.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/core/hooks.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/core/safety.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ui/banner.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ui/dashboard.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ui/display.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ui/prompts.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/ui/themes.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/utils/conflict_parser.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/utils/diff_parser.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/utils/json_utils.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/ace/utils/string_utils.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/conftest.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/e2e/conftest.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/e2e/test_tier1_features.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/e2e/test_tier2_boundaries.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/e2e/test_tier3_combinations.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/e2e/test_tier4_workloads.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_blame.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_changelog_generator.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_code_reviewer.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_config_atomic_write.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_conflict_resolver.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_conflict_resolver_backup.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_context_gitdir_detection.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_diagnostics.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_diff_trimmer.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_git_ops.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_git_ops_execute.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_help.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_history_analyzer.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_hooks.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_ignore.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_intent_parser.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_interceptor.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_llm_factory.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_llm_factory_ollama.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_merge_state.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_pr_drafter.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_rebase_helper.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_safety.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_search.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_standup.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_string_utils.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_undo.py +0 -0
- {ace_git_copilot-0.4.3 → ace_git_copilot-0.4.4}/tests/test_workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ace-git-copilot
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: AI-powered Git copilot — talk to Git in plain English
|
|
5
5
|
Project-URL: Homepage, https://github.com/jachinsamuel/Ace
|
|
6
6
|
Project-URL: Documentation, https://github.com/jachinsamuel/Ace#readme
|
|
@@ -52,6 +52,8 @@ Author: Jachin Samuel <jachinsamuel007@gmail.com>
|
|
|
52
52
|
|
|
53
53
|
Ace is an intelligent command-line tool that brings AI assistance directly to your Git workflow. Talk to Git in plain English — Ace translates your intents into Git commands, explains what it is doing, and runs them safely. It also features a fully interactive terminal user interface (TUI) dashboard to help manage your repositories with ease.
|
|
54
54
|
|
|
55
|
+

|
|
56
|
+
|
|
55
57
|
---
|
|
56
58
|
|
|
57
59
|
## Features
|
|
@@ -72,9 +74,19 @@ Ace is an intelligent command-line tool that brings AI assistance directly to yo
|
|
|
72
74
|
|
|
73
75
|
## Installation
|
|
74
76
|
|
|
77
|
+
### Option A: Install via standard pip (Recommended)
|
|
78
|
+
You can install Ace globally using standard pip:
|
|
79
|
+
```bash
|
|
80
|
+
pip install ace-git-copilot
|
|
81
|
+
```
|
|
82
|
+
*Note: If you run into a `command not found` error, you can bypass your system PATH and run the tool directly through Python module execution:*
|
|
83
|
+
```bash
|
|
84
|
+
python -m ace dash
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Option B: Install via pipx (Alternative)
|
|
75
88
|
For Python command-line applications like Ace, it is highly recommended to install using **pipx**. pipx automatically installs the application in an isolated environment and manages your system PATH so the executable works globally without conflict.
|
|
76
89
|
|
|
77
|
-
### Option A: Install via pipx (Recommended)
|
|
78
90
|
1. Install pipx and configure your system PATH (only needs to be done once):
|
|
79
91
|
```bash
|
|
80
92
|
pip install pipx
|
|
@@ -92,16 +104,6 @@ For Python command-line applications like Ace, it is highly recommended to insta
|
|
|
92
104
|
ace dash
|
|
93
105
|
```
|
|
94
106
|
|
|
95
|
-
### Option B: Install via standard pip (Alternative)
|
|
96
|
-
You can also install Ace globally using standard pip:
|
|
97
|
-
```bash
|
|
98
|
-
pip install ace-git-copilot
|
|
99
|
-
```
|
|
100
|
-
*Note: If you run into a `command not found` error, you can bypass your system PATH and run the tool directly through Python module execution:*
|
|
101
|
-
```bash
|
|
102
|
-
python -m ace dash
|
|
103
|
-
```
|
|
104
|
-
|
|
105
107
|
---
|
|
106
108
|
|
|
107
109
|
## Configuration and Setup
|
|
@@ -112,17 +114,17 @@ ace setup
|
|
|
112
114
|
```
|
|
113
115
|
Ace saves your configuration file to `~/.ace/config.toml`. It supports the following AI model providers:
|
|
114
116
|
|
|
115
|
-
### 1.
|
|
116
|
-
Uses cloud-hosted high-performance models.
|
|
117
|
-
* You will need an NVIDIA developer API key. Get one for free at [NVIDIA build](https://build.nvidia.com/).
|
|
118
|
-
* Default model: `meta/llama-3.3-70b-instruct`
|
|
119
|
-
|
|
120
|
-
### 2. Ollama (Local Models)
|
|
117
|
+
### 1. Ollama (Local Models)
|
|
121
118
|
For a 100% private, offline, and free experience.
|
|
122
119
|
* Ensure [Ollama](https://ollama.com/) is installed and running on your system.
|
|
123
120
|
* Default model: `qwen2.5-coder:7b`
|
|
124
121
|
* If the selected model is not downloaded yet, Ace will automatically pull it for you during setup.
|
|
125
122
|
|
|
123
|
+
### 2. NVIDIA NIM API (Cloud)
|
|
124
|
+
Uses cloud-hosted high-performance models.
|
|
125
|
+
* You will need an NVIDIA developer API key. Get one for free at [NVIDIA build](https://build.nvidia.com/).
|
|
126
|
+
* Default model: `meta/llama-3.3-70b-instruct`
|
|
127
|
+
|
|
126
128
|
### 3. OpenAI
|
|
127
129
|
Uses OpenAI GPT models.
|
|
128
130
|
* You will need an OpenAI API key.
|
|
@@ -188,6 +190,8 @@ Launch the repository dashboard by running:
|
|
|
188
190
|
ace dash
|
|
189
191
|
```
|
|
190
192
|
|
|
193
|
+

|
|
194
|
+
|
|
191
195
|
The dashboard features:
|
|
192
196
|
* A start-up logo.
|
|
193
197
|
* Active branch info, tracking status, and repository charts.
|
|
@@ -195,6 +199,12 @@ The dashboard features:
|
|
|
195
199
|
|
|
196
200
|
---
|
|
197
201
|
|
|
202
|
+
## Repository Statistics (`ace stats`)
|
|
203
|
+
|
|
204
|
+
View beautiful contributor graphs, commit frequency charts, and file extension breakdowns:
|
|
205
|
+
|
|
206
|
+

|
|
207
|
+
|
|
198
208
|
## License
|
|
199
209
|
|
|
200
210
|
Distributed under the MIT License. See [LICENSE](LICENSE) for more details.
|
|
@@ -19,6 +19,8 @@ Author: Jachin Samuel <jachinsamuel007@gmail.com>
|
|
|
19
19
|
|
|
20
20
|
Ace is an intelligent command-line tool that brings AI assistance directly to your Git workflow. Talk to Git in plain English — Ace translates your intents into Git commands, explains what it is doing, and runs them safely. It also features a fully interactive terminal user interface (TUI) dashboard to help manage your repositories with ease.
|
|
21
21
|
|
|
22
|
+

|
|
23
|
+
|
|
22
24
|
---
|
|
23
25
|
|
|
24
26
|
## Features
|
|
@@ -39,9 +41,19 @@ Ace is an intelligent command-line tool that brings AI assistance directly to yo
|
|
|
39
41
|
|
|
40
42
|
## Installation
|
|
41
43
|
|
|
44
|
+
### Option A: Install via standard pip (Recommended)
|
|
45
|
+
You can install Ace globally using standard pip:
|
|
46
|
+
```bash
|
|
47
|
+
pip install ace-git-copilot
|
|
48
|
+
```
|
|
49
|
+
*Note: If you run into a `command not found` error, you can bypass your system PATH and run the tool directly through Python module execution:*
|
|
50
|
+
```bash
|
|
51
|
+
python -m ace dash
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Option B: Install via pipx (Alternative)
|
|
42
55
|
For Python command-line applications like Ace, it is highly recommended to install using **pipx**. pipx automatically installs the application in an isolated environment and manages your system PATH so the executable works globally without conflict.
|
|
43
56
|
|
|
44
|
-
### Option A: Install via pipx (Recommended)
|
|
45
57
|
1. Install pipx and configure your system PATH (only needs to be done once):
|
|
46
58
|
```bash
|
|
47
59
|
pip install pipx
|
|
@@ -59,16 +71,6 @@ For Python command-line applications like Ace, it is highly recommended to insta
|
|
|
59
71
|
ace dash
|
|
60
72
|
```
|
|
61
73
|
|
|
62
|
-
### Option B: Install via standard pip (Alternative)
|
|
63
|
-
You can also install Ace globally using standard pip:
|
|
64
|
-
```bash
|
|
65
|
-
pip install ace-git-copilot
|
|
66
|
-
```
|
|
67
|
-
*Note: If you run into a `command not found` error, you can bypass your system PATH and run the tool directly through Python module execution:*
|
|
68
|
-
```bash
|
|
69
|
-
python -m ace dash
|
|
70
|
-
```
|
|
71
|
-
|
|
72
74
|
---
|
|
73
75
|
|
|
74
76
|
## Configuration and Setup
|
|
@@ -79,17 +81,17 @@ ace setup
|
|
|
79
81
|
```
|
|
80
82
|
Ace saves your configuration file to `~/.ace/config.toml`. It supports the following AI model providers:
|
|
81
83
|
|
|
82
|
-
### 1.
|
|
83
|
-
Uses cloud-hosted high-performance models.
|
|
84
|
-
* You will need an NVIDIA developer API key. Get one for free at [NVIDIA build](https://build.nvidia.com/).
|
|
85
|
-
* Default model: `meta/llama-3.3-70b-instruct`
|
|
86
|
-
|
|
87
|
-
### 2. Ollama (Local Models)
|
|
84
|
+
### 1. Ollama (Local Models)
|
|
88
85
|
For a 100% private, offline, and free experience.
|
|
89
86
|
* Ensure [Ollama](https://ollama.com/) is installed and running on your system.
|
|
90
87
|
* Default model: `qwen2.5-coder:7b`
|
|
91
88
|
* If the selected model is not downloaded yet, Ace will automatically pull it for you during setup.
|
|
92
89
|
|
|
90
|
+
### 2. NVIDIA NIM API (Cloud)
|
|
91
|
+
Uses cloud-hosted high-performance models.
|
|
92
|
+
* You will need an NVIDIA developer API key. Get one for free at [NVIDIA build](https://build.nvidia.com/).
|
|
93
|
+
* Default model: `meta/llama-3.3-70b-instruct`
|
|
94
|
+
|
|
93
95
|
### 3. OpenAI
|
|
94
96
|
Uses OpenAI GPT models.
|
|
95
97
|
* You will need an OpenAI API key.
|
|
@@ -155,6 +157,8 @@ Launch the repository dashboard by running:
|
|
|
155
157
|
ace dash
|
|
156
158
|
```
|
|
157
159
|
|
|
160
|
+

|
|
161
|
+
|
|
158
162
|
The dashboard features:
|
|
159
163
|
* A start-up logo.
|
|
160
164
|
* Active branch info, tracking status, and repository charts.
|
|
@@ -162,6 +166,12 @@ The dashboard features:
|
|
|
162
166
|
|
|
163
167
|
---
|
|
164
168
|
|
|
169
|
+
## Repository Statistics (`ace stats`)
|
|
170
|
+
|
|
171
|
+
View beautiful contributor graphs, commit frequency charts, and file extension breakdowns:
|
|
172
|
+
|
|
173
|
+

|
|
174
|
+
|
|
165
175
|
## License
|
|
166
176
|
|
|
167
177
|
Distributed under the MIT License. See [LICENSE](LICENSE) for more details.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.4"
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
<svg class="rich-terminal" viewBox="0 0 1177 855.1999999999999" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- Generated with Rich https://www.textualize.io -->
|
|
3
|
+
<style>
|
|
4
|
+
|
|
5
|
+
@font-face {
|
|
6
|
+
font-family: "Fira Code";
|
|
7
|
+
src: local("FiraCode-Regular"),
|
|
8
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
|
|
9
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
|
|
10
|
+
font-style: normal;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
}
|
|
13
|
+
@font-face {
|
|
14
|
+
font-family: "Fira Code";
|
|
15
|
+
src: local("FiraCode-Bold"),
|
|
16
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
|
|
17
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
|
|
18
|
+
font-style: bold;
|
|
19
|
+
font-weight: 700;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.terminal-2405438817-matrix {
|
|
23
|
+
font-family: Fira Code, monospace;
|
|
24
|
+
font-size: 20px;
|
|
25
|
+
line-height: 24.4px;
|
|
26
|
+
font-variant-east-asian: full-width;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.terminal-2405438817-title {
|
|
30
|
+
font-size: 18px;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
font-family: arial;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.terminal-2405438817-r1 { fill: #00d5ff;font-style: italic; }
|
|
36
|
+
.terminal-2405438817-r2 { fill: #d9d9d9 }
|
|
37
|
+
.terminal-2405438817-r3 { fill: #00e676 }
|
|
38
|
+
.terminal-2405438817-r4 { fill: #98e024;font-weight: bold }
|
|
39
|
+
.terminal-2405438817-r5 { fill: #555555 }
|
|
40
|
+
.terminal-2405438817-r6 { fill: #ff6d00;font-weight: bold }
|
|
41
|
+
.terminal-2405438817-r7 { fill: #58d1eb;font-weight: bold }
|
|
42
|
+
.terminal-2405438817-r8 { fill: #c4c5b5 }
|
|
43
|
+
.terminal-2405438817-r9 { fill: #00d5ff;font-weight: bold }
|
|
44
|
+
.terminal-2405438817-r10 { fill: #767676 }
|
|
45
|
+
.terminal-2405438817-r11 { fill: #00e676;font-weight: bold }
|
|
46
|
+
</style>
|
|
47
|
+
|
|
48
|
+
<defs>
|
|
49
|
+
<clipPath id="terminal-2405438817-clip-terminal">
|
|
50
|
+
<rect x="0" y="0" width="1158.0" height="804.1999999999999" />
|
|
51
|
+
</clipPath>
|
|
52
|
+
<clipPath id="terminal-2405438817-line-0">
|
|
53
|
+
<rect x="0" y="1.5" width="1159" height="24.65"/>
|
|
54
|
+
</clipPath>
|
|
55
|
+
<clipPath id="terminal-2405438817-line-1">
|
|
56
|
+
<rect x="0" y="25.9" width="1159" height="24.65"/>
|
|
57
|
+
</clipPath>
|
|
58
|
+
<clipPath id="terminal-2405438817-line-2">
|
|
59
|
+
<rect x="0" y="50.3" width="1159" height="24.65"/>
|
|
60
|
+
</clipPath>
|
|
61
|
+
<clipPath id="terminal-2405438817-line-3">
|
|
62
|
+
<rect x="0" y="74.7" width="1159" height="24.65"/>
|
|
63
|
+
</clipPath>
|
|
64
|
+
<clipPath id="terminal-2405438817-line-4">
|
|
65
|
+
<rect x="0" y="99.1" width="1159" height="24.65"/>
|
|
66
|
+
</clipPath>
|
|
67
|
+
<clipPath id="terminal-2405438817-line-5">
|
|
68
|
+
<rect x="0" y="123.5" width="1159" height="24.65"/>
|
|
69
|
+
</clipPath>
|
|
70
|
+
<clipPath id="terminal-2405438817-line-6">
|
|
71
|
+
<rect x="0" y="147.9" width="1159" height="24.65"/>
|
|
72
|
+
</clipPath>
|
|
73
|
+
<clipPath id="terminal-2405438817-line-7">
|
|
74
|
+
<rect x="0" y="172.3" width="1159" height="24.65"/>
|
|
75
|
+
</clipPath>
|
|
76
|
+
<clipPath id="terminal-2405438817-line-8">
|
|
77
|
+
<rect x="0" y="196.7" width="1159" height="24.65"/>
|
|
78
|
+
</clipPath>
|
|
79
|
+
<clipPath id="terminal-2405438817-line-9">
|
|
80
|
+
<rect x="0" y="221.1" width="1159" height="24.65"/>
|
|
81
|
+
</clipPath>
|
|
82
|
+
<clipPath id="terminal-2405438817-line-10">
|
|
83
|
+
<rect x="0" y="245.5" width="1159" height="24.65"/>
|
|
84
|
+
</clipPath>
|
|
85
|
+
<clipPath id="terminal-2405438817-line-11">
|
|
86
|
+
<rect x="0" y="269.9" width="1159" height="24.65"/>
|
|
87
|
+
</clipPath>
|
|
88
|
+
<clipPath id="terminal-2405438817-line-12">
|
|
89
|
+
<rect x="0" y="294.3" width="1159" height="24.65"/>
|
|
90
|
+
</clipPath>
|
|
91
|
+
<clipPath id="terminal-2405438817-line-13">
|
|
92
|
+
<rect x="0" y="318.7" width="1159" height="24.65"/>
|
|
93
|
+
</clipPath>
|
|
94
|
+
<clipPath id="terminal-2405438817-line-14">
|
|
95
|
+
<rect x="0" y="343.1" width="1159" height="24.65"/>
|
|
96
|
+
</clipPath>
|
|
97
|
+
<clipPath id="terminal-2405438817-line-15">
|
|
98
|
+
<rect x="0" y="367.5" width="1159" height="24.65"/>
|
|
99
|
+
</clipPath>
|
|
100
|
+
<clipPath id="terminal-2405438817-line-16">
|
|
101
|
+
<rect x="0" y="391.9" width="1159" height="24.65"/>
|
|
102
|
+
</clipPath>
|
|
103
|
+
<clipPath id="terminal-2405438817-line-17">
|
|
104
|
+
<rect x="0" y="416.3" width="1159" height="24.65"/>
|
|
105
|
+
</clipPath>
|
|
106
|
+
<clipPath id="terminal-2405438817-line-18">
|
|
107
|
+
<rect x="0" y="440.7" width="1159" height="24.65"/>
|
|
108
|
+
</clipPath>
|
|
109
|
+
<clipPath id="terminal-2405438817-line-19">
|
|
110
|
+
<rect x="0" y="465.1" width="1159" height="24.65"/>
|
|
111
|
+
</clipPath>
|
|
112
|
+
<clipPath id="terminal-2405438817-line-20">
|
|
113
|
+
<rect x="0" y="489.5" width="1159" height="24.65"/>
|
|
114
|
+
</clipPath>
|
|
115
|
+
<clipPath id="terminal-2405438817-line-21">
|
|
116
|
+
<rect x="0" y="513.9" width="1159" height="24.65"/>
|
|
117
|
+
</clipPath>
|
|
118
|
+
<clipPath id="terminal-2405438817-line-22">
|
|
119
|
+
<rect x="0" y="538.3" width="1159" height="24.65"/>
|
|
120
|
+
</clipPath>
|
|
121
|
+
<clipPath id="terminal-2405438817-line-23">
|
|
122
|
+
<rect x="0" y="562.7" width="1159" height="24.65"/>
|
|
123
|
+
</clipPath>
|
|
124
|
+
<clipPath id="terminal-2405438817-line-24">
|
|
125
|
+
<rect x="0" y="587.1" width="1159" height="24.65"/>
|
|
126
|
+
</clipPath>
|
|
127
|
+
<clipPath id="terminal-2405438817-line-25">
|
|
128
|
+
<rect x="0" y="611.5" width="1159" height="24.65"/>
|
|
129
|
+
</clipPath>
|
|
130
|
+
<clipPath id="terminal-2405438817-line-26">
|
|
131
|
+
<rect x="0" y="635.9" width="1159" height="24.65"/>
|
|
132
|
+
</clipPath>
|
|
133
|
+
<clipPath id="terminal-2405438817-line-27">
|
|
134
|
+
<rect x="0" y="660.3" width="1159" height="24.65"/>
|
|
135
|
+
</clipPath>
|
|
136
|
+
<clipPath id="terminal-2405438817-line-28">
|
|
137
|
+
<rect x="0" y="684.7" width="1159" height="24.65"/>
|
|
138
|
+
</clipPath>
|
|
139
|
+
<clipPath id="terminal-2405438817-line-29">
|
|
140
|
+
<rect x="0" y="709.1" width="1159" height="24.65"/>
|
|
141
|
+
</clipPath>
|
|
142
|
+
<clipPath id="terminal-2405438817-line-30">
|
|
143
|
+
<rect x="0" y="733.5" width="1159" height="24.65"/>
|
|
144
|
+
</clipPath>
|
|
145
|
+
<clipPath id="terminal-2405438817-line-31">
|
|
146
|
+
<rect x="0" y="757.9" width="1159" height="24.65"/>
|
|
147
|
+
</clipPath>
|
|
148
|
+
</defs>
|
|
149
|
+
|
|
150
|
+
<rect fill="#0c0c0c" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1175" height="853.2" rx="8"/><text class="terminal-2405438817-title" fill="#d9d9d9" text-anchor="middle" x="587" y="27">Ace Commit Flow</text>
|
|
151
|
+
<g transform="translate(26,22)">
|
|
152
|
+
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
153
|
+
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
154
|
+
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
155
|
+
</g>
|
|
156
|
+
|
|
157
|
+
<g transform="translate(9, 41)" clip-path="url(#terminal-2405438817-clip-terminal)">
|
|
158
|
+
|
|
159
|
+
<g class="terminal-2405438817-matrix">
|
|
160
|
+
<text class="terminal-2405438817-r1" x="0" y="20" textLength="671" clip-path="url(#terminal-2405438817-line-0)">🧠 Understanding request: "add everything and commit"...</text><text class="terminal-2405438817-r2" x="1159" y="20" textLength="12.2" clip-path="url(#terminal-2405438817-line-0)">
|
|
161
|
+
</text><text class="terminal-2405438817-r2" x="1159" y="44.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-1)">
|
|
162
|
+
</text><text class="terminal-2405438817-r3" x="0" y="68.8" textLength="24.4" clip-path="url(#terminal-2405438817-line-2)">┌─</text><text class="terminal-2405438817-r3" x="24.4" y="68.8" textLength="402.6" clip-path="url(#terminal-2405438817-line-2)">─────────────────────────────────</text><text class="terminal-2405438817-r4" x="439.2" y="68.8" textLength="280.6" clip-path="url(#terminal-2405438817-line-2)">Proposed Execution Plan</text><text class="terminal-2405438817-r3" x="732" y="68.8" textLength="402.6" clip-path="url(#terminal-2405438817-line-2)">─────────────────────────────────</text><text class="terminal-2405438817-r3" x="1134.6" y="68.8" textLength="24.4" clip-path="url(#terminal-2405438817-line-2)">─┐</text><text class="terminal-2405438817-r2" x="1159" y="68.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-2)">
|
|
163
|
+
</text><text class="terminal-2405438817-r3" x="0" y="93.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-3)">│</text><text class="terminal-2405438817-r5" x="24.4" y="93.2" textLength="1110.2" clip-path="url(#terminal-2405438817-line-3)">┌───────┬──────────────┬──────────────────────────────────────────────────────────────────┐</text><text class="terminal-2405438817-r3" x="1146.8" y="93.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-3)">│</text><text class="terminal-2405438817-r2" x="1159" y="93.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-3)">
|
|
164
|
+
</text><text class="terminal-2405438817-r3" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">│</text><text class="terminal-2405438817-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">│</text><text class="terminal-2405438817-r6" x="61" y="117.6" textLength="36.6" clip-path="url(#terminal-2405438817-line-4)">  #</text><text class="terminal-2405438817-r5" x="122" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">│</text><text class="terminal-2405438817-r6" x="158.6" y="117.6" textLength="122" clip-path="url(#terminal-2405438817-line-4)">Command   </text><text class="terminal-2405438817-r5" x="305" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">│</text><text class="terminal-2405438817-r6" x="341.6" y="117.6" textLength="756.4" clip-path="url(#terminal-2405438817-line-4)">What it does                                                  </text><text class="terminal-2405438817-r5" x="1122.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">│</text><text class="terminal-2405438817-r2" x="1159" y="117.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-4)">
|
|
165
|
+
</text><text class="terminal-2405438817-r3" x="0" y="142" textLength="12.2" clip-path="url(#terminal-2405438817-line-5)">│</text><text class="terminal-2405438817-r5" x="24.4" y="142" textLength="1110.2" clip-path="url(#terminal-2405438817-line-5)">├───────┼──────────────┼──────────────────────────────────────────────────────────────────┤</text><text class="terminal-2405438817-r3" x="1146.8" y="142" textLength="12.2" clip-path="url(#terminal-2405438817-line-5)">│</text><text class="terminal-2405438817-r2" x="1159" y="142" textLength="12.2" clip-path="url(#terminal-2405438817-line-5)">
|
|
166
|
+
</text><text class="terminal-2405438817-r3" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">│</text><text class="terminal-2405438817-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">│</text><text class="terminal-2405438817-r2" x="61" y="166.4" textLength="36.6" clip-path="url(#terminal-2405438817-line-6)">  1</text><text class="terminal-2405438817-r5" x="122" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">│</text><text class="terminal-2405438817-r7" x="158.6" y="166.4" textLength="122" clip-path="url(#terminal-2405438817-line-6)">git add . </text><text class="terminal-2405438817-r5" x="305" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">│</text><text class="terminal-2405438817-r8" x="341.6" y="166.4" textLength="756.4" clip-path="url(#terminal-2405438817-line-6)">Stages all changes, including 'src/app/not-found.tsx' and     </text><text class="terminal-2405438817-r5" x="1122.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">│</text><text class="terminal-2405438817-r2" x="1159" y="166.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-6)">
|
|
167
|
+
</text><text class="terminal-2405438817-r3" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">│</text><text class="terminal-2405438817-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">│</text><text class="terminal-2405438817-r5" x="122" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">│</text><text class="terminal-2405438817-r5" x="305" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">│</text><text class="terminal-2405438817-r8" x="341.6" y="190.8" textLength="756.4" clip-path="url(#terminal-2405438817-line-7)">'src/components/fuzzy-text.tsx'                               </text><text class="terminal-2405438817-r5" x="1122.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">│</text><text class="terminal-2405438817-r2" x="1159" y="190.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-7)">
|
|
168
|
+
</text><text class="terminal-2405438817-r3" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">│</text><text class="terminal-2405438817-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">│</text><text class="terminal-2405438817-r2" x="61" y="215.2" textLength="36.6" clip-path="url(#terminal-2405438817-line-8)">  2</text><text class="terminal-2405438817-r5" x="122" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">│</text><text class="terminal-2405438817-r7" x="158.6" y="215.2" textLength="122" clip-path="url(#terminal-2405438817-line-8)">ace commit</text><text class="terminal-2405438817-r5" x="305" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">│</text><text class="terminal-2405438817-r8" x="341.6" y="215.2" textLength="756.4" clip-path="url(#terminal-2405438817-line-8)">Analyzes the changes and opens the interactive Conventional   </text><text class="terminal-2405438817-r5" x="1122.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">│</text><text class="terminal-2405438817-r2" x="1159" y="215.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-8)">
|
|
169
|
+
</text><text class="terminal-2405438817-r3" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">│</text><text class="terminal-2405438817-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">│</text><text class="terminal-2405438817-r5" x="122" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">│</text><text class="terminal-2405438817-r5" x="305" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">│</text><text class="terminal-2405438817-r8" x="341.6" y="239.6" textLength="756.4" clip-path="url(#terminal-2405438817-line-9)">Commit wizard.                                                </text><text class="terminal-2405438817-r5" x="1122.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">│</text><text class="terminal-2405438817-r2" x="1159" y="239.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-9)">
|
|
170
|
+
</text><text class="terminal-2405438817-r3" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2405438817-line-10)">│</text><text class="terminal-2405438817-r5" x="24.4" y="264" textLength="1110.2" clip-path="url(#terminal-2405438817-line-10)">└───────┴──────────────┴──────────────────────────────────────────────────────────────────┘</text><text class="terminal-2405438817-r3" x="1146.8" y="264" textLength="12.2" clip-path="url(#terminal-2405438817-line-10)">│</text><text class="terminal-2405438817-r2" x="1159" y="264" textLength="12.2" clip-path="url(#terminal-2405438817-line-10)">
|
|
171
|
+
</text><text class="terminal-2405438817-r3" x="0" y="288.4" textLength="1159" clip-path="url(#terminal-2405438817-line-11)">└─────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="terminal-2405438817-r2" x="1159" y="288.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-11)">
|
|
172
|
+
</text><text class="terminal-2405438817-r2" x="1159" y="312.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-12)">
|
|
173
|
+
</text><text class="terminal-2405438817-r9" x="0" y="337.2" textLength="536.8" clip-path="url(#terminal-2405438817-line-13)">  › Do you want to execute this plan?  [Y/n]</text><text class="terminal-2405438817-r2" x="1159" y="337.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-13)">
|
|
174
|
+
</text><text class="terminal-2405438817-r10" x="0" y="361.6" textLength="292.8" clip-path="url(#terminal-2405438817-line-14)"> ›  Executing: git add .</text><text class="terminal-2405438817-r2" x="1159" y="361.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-14)">
|
|
175
|
+
</text><text class="terminal-2405438817-r10" x="0" y="386" textLength="305" clip-path="url(#terminal-2405438817-line-15)"> ›  Executing: ace commit</text><text class="terminal-2405438817-r2" x="1159" y="386" textLength="12.2" clip-path="url(#terminal-2405438817-line-15)">
|
|
176
|
+
</text><text class="terminal-2405438817-r2" x="1159" y="410.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-16)">
|
|
177
|
+
</text><text class="terminal-2405438817-r3" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2405438817-line-17)">┌─</text><text class="terminal-2405438817-r3" x="24.4" y="434.8" textLength="439.2" clip-path="url(#terminal-2405438817-line-17)">────────────────────────────────────</text><text class="terminal-2405438817-r4" x="475.8" y="434.8" textLength="195.2" clip-path="url(#terminal-2405438817-line-17)">Suggested Commit</text><text class="terminal-2405438817-r3" x="683.2" y="434.8" textLength="451.4" clip-path="url(#terminal-2405438817-line-17)">─────────────────────────────────────</text><text class="terminal-2405438817-r3" x="1134.6" y="434.8" textLength="24.4" clip-path="url(#terminal-2405438817-line-17)">─┐</text><text class="terminal-2405438817-r2" x="1159" y="434.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-17)">
|
|
178
|
+
</text><text class="terminal-2405438817-r3" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-18)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="459.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-18)">│</text><text class="terminal-2405438817-r2" x="1159" y="459.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-18)">
|
|
179
|
+
</text><text class="terminal-2405438817-r3" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-19)">│</text><text class="terminal-2405438817-r8" x="36.6" y="483.6" textLength="744.2" clip-path="url(#terminal-2405438817-line-19)">feat(components): add fuzzy-text component and not-found page</text><text class="terminal-2405438817-r3" x="1146.8" y="483.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-19)">│</text><text class="terminal-2405438817-r2" x="1159" y="483.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-19)">
|
|
180
|
+
</text><text class="terminal-2405438817-r3" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2405438817-line-20)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="508" textLength="12.2" clip-path="url(#terminal-2405438817-line-20)">│</text><text class="terminal-2405438817-r2" x="1159" y="508" textLength="12.2" clip-path="url(#terminal-2405438817-line-20)">
|
|
181
|
+
</text><text class="terminal-2405438817-r3" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-21)">│</text><text class="terminal-2405438817-r8" x="36.6" y="532.4" textLength="1049.2" clip-path="url(#terminal-2405438817-line-21)">Added a new FuzzyText component that provides a fuzzy text effect, and a new NotFound </text><text class="terminal-2405438817-r3" x="1146.8" y="532.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-21)">│</text><text class="terminal-2405438817-r2" x="1159" y="532.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-21)">
|
|
182
|
+
</text><text class="terminal-2405438817-r3" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-22)">│</text><text class="terminal-2405438817-r8" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2405438817-line-22)">page</text><text class="terminal-2405438817-r3" x="1146.8" y="556.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-22)">│</text><text class="terminal-2405438817-r2" x="1159" y="556.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-22)">
|
|
183
|
+
</text><text class="terminal-2405438817-r3" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-23)">│</text><text class="terminal-2405438817-r8" x="36.6" y="581.2" textLength="1061.4" clip-path="url(#terminal-2405438817-line-23)">that utilizes this component. The FuzzyText component allows for customization of font </text><text class="terminal-2405438817-r3" x="1146.8" y="581.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-23)">│</text><text class="terminal-2405438817-r2" x="1159" y="581.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-23)">
|
|
184
|
+
</text><text class="terminal-2405438817-r3" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-24)">│</text><text class="terminal-2405438817-r8" x="36.6" y="605.6" textLength="61" clip-path="url(#terminal-2405438817-line-24)">size,</text><text class="terminal-2405438817-r3" x="1146.8" y="605.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-24)">│</text><text class="terminal-2405438817-r2" x="1159" y="605.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-24)">
|
|
185
|
+
</text><text class="terminal-2405438817-r3" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2405438817-line-25)">│</text><text class="terminal-2405438817-r8" x="36.6" y="630" textLength="1073.6" clip-path="url(#terminal-2405438817-line-25)">weight, family, color, and more, and also supports hover and click effects. The NotFound</text><text class="terminal-2405438817-r3" x="1146.8" y="630" textLength="12.2" clip-path="url(#terminal-2405438817-line-25)">│</text><text class="terminal-2405438817-r2" x="1159" y="630" textLength="12.2" clip-path="url(#terminal-2405438817-line-25)">
|
|
186
|
+
</text><text class="terminal-2405438817-r3" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-26)">│</text><text class="terminal-2405438817-r8" x="36.6" y="654.4" textLength="915" clip-path="url(#terminal-2405438817-line-26)">page uses this component to display a 404 message with a fuzzy text effect.</text><text class="terminal-2405438817-r3" x="1146.8" y="654.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-26)">│</text><text class="terminal-2405438817-r2" x="1159" y="654.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-26)">
|
|
187
|
+
</text><text class="terminal-2405438817-r3" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-27)">│</text><text class="terminal-2405438817-r3" x="1146.8" y="678.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-27)">│</text><text class="terminal-2405438817-r2" x="1159" y="678.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-27)">
|
|
188
|
+
</text><text class="terminal-2405438817-r3" x="0" y="703.2" textLength="1159" clip-path="url(#terminal-2405438817-line-28)">└─────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="terminal-2405438817-r2" x="1159" y="703.2" textLength="12.2" clip-path="url(#terminal-2405438817-line-28)">
|
|
189
|
+
</text><text class="terminal-2405438817-r2" x="1159" y="727.6" textLength="12.2" clip-path="url(#terminal-2405438817-line-29)">
|
|
190
|
+
</text><text class="terminal-2405438817-r6" x="0" y="752" textLength="1122.4" clip-path="url(#terminal-2405438817-line-30)">  [Enter] Accept & Commit  ·  [E] Edit  ·  [R] Regenerate  ·  [C] Switch format  ·  [S] Skip</text><text class="terminal-2405438817-r2" x="1159" y="752" textLength="12.2" clip-path="url(#terminal-2405438817-line-30)">
|
|
191
|
+
</text><text class="terminal-2405438817-r11" x="0" y="776.4" textLength="427" clip-path="url(#terminal-2405438817-line-31)"> ✔  Committed changes successfully!</text><text class="terminal-2405438817-r2" x="1159" y="776.4" textLength="12.2" clip-path="url(#terminal-2405438817-line-31)">
|
|
192
|
+
</text><text class="terminal-2405438817-r11" x="0" y="800.8" textLength="378.2" clip-path="url(#terminal-2405438817-line-32)"> ✔  Plan executed successfully!</text><text class="terminal-2405438817-r2" x="1159" y="800.8" textLength="12.2" clip-path="url(#terminal-2405438817-line-32)">
|
|
193
|
+
</text>
|
|
194
|
+
</g>
|
|
195
|
+
</g>
|
|
196
|
+
</svg>
|