convo-cli 0.1.0__tar.gz → 0.1.1__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.
Files changed (68) hide show
  1. {convo_cli-0.1.0 → convo_cli-0.1.1}/.gitignore +5 -0
  2. convo_cli-0.1.1/CHANGELOG.md +19 -0
  3. {convo_cli-0.1.0 → convo_cli-0.1.1}/PKG-INFO +64 -17
  4. {convo_cli-0.1.0 → convo_cli-0.1.1}/README.md +63 -16
  5. convo_cli-0.1.1/apps/web/README.md +22 -0
  6. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/__init__.py +1 -1
  7. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/bootstrap.py +3 -1
  8. {convo_cli-0.1.0 → convo_cli-0.1.1}/pyproject.toml +2 -1
  9. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_bootstrap.py +9 -2
  10. {convo_cli-0.1.0 → convo_cli-0.1.1}/CODE_OF_CONDUCT.md +0 -0
  11. {convo_cli-0.1.0 → convo_cli-0.1.1}/CONTRIBUTING.md +0 -0
  12. {convo_cli-0.1.0 → convo_cli-0.1.1}/LICENSE +0 -0
  13. {convo_cli-0.1.0 → convo_cli-0.1.1}/alembic.ini +0 -0
  14. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/__main__.py +0 -0
  15. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/core/__init__.py +0 -0
  16. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/core/config.py +0 -0
  17. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/core/contracts.py +0 -0
  18. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/core/exceptions.py +0 -0
  19. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/__init__.py +0 -0
  20. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/base.py +0 -0
  21. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/chunks.py +0 -0
  22. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/conversations.py +0 -0
  23. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/documents.py +0 -0
  24. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/models.py +0 -0
  25. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/db/session.py +0 -0
  26. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/llm/__init__.py +0 -0
  27. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/llm/auth.py +0 -0
  28. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/llm/client.py +0 -0
  29. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/llm/credentials.py +0 -0
  30. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/llm/models.py +0 -0
  31. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/llm/streaming.py +0 -0
  32. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/__init__.py +0 -0
  33. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/chat.py +0 -0
  34. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/chunking.py +0 -0
  35. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/embeddings.py +0 -0
  36. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/index.py +0 -0
  37. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/ingestion.py +0 -0
  38. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/reranking.py +0 -0
  39. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/routing.py +0 -0
  40. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/sessions.py +0 -0
  41. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/pipeline/worker.py +0 -0
  42. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/prompts/__init__.py +0 -0
  43. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/prompts/answers.py +0 -0
  44. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/prompts/schema.py +0 -0
  45. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/__init__.py +0 -0
  46. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/app.py +0 -0
  47. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/commands.py +0 -0
  48. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/files.py +0 -0
  49. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/models.py +0 -0
  50. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/preview.py +0 -0
  51. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/sessions.py +0 -0
  52. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/theme.tcss +0 -0
  53. {convo_cli-0.1.0 → convo_cli-0.1.1}/convo/ui/thinking.py +0 -0
  54. {convo_cli-0.1.0 → convo_cli-0.1.1}/migrations/env.py +0 -0
  55. {convo_cli-0.1.0 → convo_cli-0.1.1}/migrations/script.py.mako +0 -0
  56. {convo_cli-0.1.0 → convo_cli-0.1.1}/migrations/versions/5c3b75f9c5c1_describe_your_schema_change.py +0 -0
  57. {convo_cli-0.1.0 → convo_cli-0.1.1}/migrations/versions/732cf62e465c_create_rag_tables.py +0 -0
  58. {convo_cli-0.1.0 → convo_cli-0.1.1}/migrations/versions/README.md +0 -0
  59. {convo_cli-0.1.0 → convo_cli-0.1.1}/migrations/versions/a42e9d8f0b31_hybrid_search_and_chat_sessions.py +0 -0
  60. {convo_cli-0.1.0 → convo_cli-0.1.1}/scripts/install.sh +0 -0
  61. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_answers.py +0 -0
  62. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_backend.py +0 -0
  63. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_cli.py +0 -0
  64. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_database.py +0 -0
  65. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_generation.py +0 -0
  66. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_preparation.py +0 -0
  67. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_retrieval.py +0 -0
  68. {convo_cli-0.1.0 → convo_cli-0.1.1}/tests/test_ui.py +0 -0
@@ -7,3 +7,8 @@ __pycache__/
7
7
  dist/
8
8
  *.egg-info/
9
9
  screenshots/
10
+ node_modules/
11
+ .vite/
12
+ .vite-plus/
13
+ .next/
14
+ *.tsbuildinfo
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ ## 0.1.1 — 2026-10-16
4
+
5
+ - Fix Fedora/Podman startup by using the fully qualified `docker.io/pgvector/pgvector:pg16` image. This also supports systems where `docker` is a Podman compatibility wrapper.
6
+ - Cover both Docker and Podman image creation in bootstrap regression tests.
7
+ - Add the Convo logo and an illustrated guide to opening a project folder, signing in, selecting a file, asking questions, and resuming saved sessions.
8
+ - Keep README images accessible when displayed on PyPI.
9
+ - Update the standalone landing page to Next.js, React, TypeScript, Tailwind CSS, and npm, with Geist fonts, a pure black background, and the `#FFAD00` accent.
10
+
11
+ ### Install or update
12
+
13
+ ```sh
14
+ uv tool install --python 3.12 convo-cli
15
+ # Existing installation:
16
+ uv tool upgrade --refresh convo-cli
17
+ ```
18
+
19
+ Docker Desktop or Podman is required for Convo's managed local database. Existing conversations and local database data are preserved.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: convo-cli
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: A local terminal RAG assistant for chatting with selected files.
5
5
  Project-URL: Homepage, https://github.com/madvillax/convo
6
6
  Project-URL: Repository, https://github.com/madvillax/convo
@@ -38,7 +38,11 @@ Requires-Dist: textual<9,>=8.2
38
38
  Requires-Dist: transformers>=4.51
39
39
  Description-Content-Type: text/markdown
40
40
 
41
- # Convo
41
+ <div align="center">
42
+ <img src="https://raw.githubusercontent.com/madvillax/convo/main/apps/web/public/favicon.svg" alt="Convo logo" width="64" height="64" />
43
+ <h1>Convo</h1>
44
+ <p><strong>Your files. A quiet conversation.</strong></p>
45
+ </div>
42
46
 
43
47
  Convo is an open-source, local-first terminal app for chatting with a selected file. Qwen3 embeddings and PostgreSQL full-text search retrieve passages together; a local cross-encoder reranks them; your connected ChatGPT account returns a structured answer with supporting quotations.
44
48
 
@@ -46,28 +50,23 @@ It is released under the [MIT License](LICENSE). Contributions are welcome—see
46
50
 
47
51
  ## Install and start
48
52
 
49
- The supported release install uses [uv](https://docs.astral.sh/uv/):
53
+ Install Convo from PyPI with [uv](https://docs.astral.sh/uv/):
50
54
 
51
55
  ```sh
52
- uv tool install convo-cli
53
- convo
56
+ uv tool install --python 3.12 convo-cli
54
57
  ```
55
58
 
56
- On first launch, `convo` creates a private settings file at `~/.config/convo/.env`, pulls `pgvector/pgvector:pg16`, starts a loopback-only `convo-postgres` container, and runs migrations before opening the terminal app. It generates a random database password and preserves existing data. Later launches restart Convo's local container if needed and apply pending migrations.
59
+ To update an existing installation, run `uv tool upgrade --refresh convo-cli`.
57
60
 
58
- Local storage needs Docker Desktop or Podman installed. Start Docker Desktop first if you use Docker. On macOS, Convo starts or initializes a Podman machine when Podman is installed. First use downloads Python dependencies, a database image, and—when indexing your first file—the embedding/reranker models.
61
+ Convo needs Docker Desktop or Podman for its local database. The install downloads its Python dependencies. On first launch, it creates a private settings file at `~/.config/convo/.env`, pulls `docker.io/pgvector/pgvector:pg16`, starts a loopback-only `convo-postgres` container, and runs migrations. It generates a random database password and preserves existing data. Later launches restart Convo's local container if needed and apply pending migrations.
59
62
 
60
- If you already use PostgreSQL, set `DATABASE_URL` to a `postgresql+psycopg://...` URL, run `convo --setup` once to migrate that database, then run `convo`. Explicit database connections are used as configured; startup only manages storage created by Convo.
63
+ On macOS, Convo starts or initializes a Podman machine when Podman is installed. First use downloads a database image and, when indexing your first file, the embedding and reranker models.
61
64
 
62
- For a one-command install on macOS/Linux, inspect and then run the repository installer:
65
+ Convo 0.1.1 fixes Fedora/Podman startup failures reporting `short-name resolution enforced but cannot prompt without a TTY`. Upgrade if you see this error on an older version. Convo now uses the full Docker Hub image name, including when the `docker` command is a Podman compatibility wrapper.
63
66
 
64
- ```sh
65
- curl -LsSf https://raw.githubusercontent.com/madvillax/convo/main/scripts/install.sh | sh
66
- ```
67
-
68
- It installs uv if needed, installs `convo-cli`, and adds uv's tool directory to your shell path. Then type `convo` to start. Open a new terminal if `convo` is not immediately found.
67
+ If you already use PostgreSQL, set `DATABASE_URL` to a `postgresql+psycopg://...` URL, run `convo --setup` once to migrate that database, then run `convo`. Explicit database connections are used as configured; startup only manages storage created by Convo.
69
68
 
70
- To use an unreleased checkout while developing:
69
+ To install from a local checkout while developing, run this from the repository root:
71
70
 
72
71
  ```sh
73
72
  uv sync --python 3.12
@@ -90,9 +89,44 @@ For a UI preview without services or backend dependencies:
90
89
  uv run convo --shell
91
90
  ```
92
91
 
93
- ## Use
92
+ ## How to use
93
+
94
+ ### 1. Open the folder you want to ask about
95
+
96
+ Run Convo from your project directory. It starts its file browser there.
97
+
98
+ ```sh
99
+ cd ~/path/to/your/project
100
+ convo
101
+ ```
102
+
103
+ To browse another folder, pass it directly: `convo --directory ~/Documents`.
104
+
105
+ ### 2. Connect your ChatGPT account
94
106
 
95
- Type `/` for command suggestions. Filter by typing, use ↑/↓ to move, Tab to complete, Enter to run, and Esc to dismiss.
107
+ In Convo, type `/login`, press Enter, and finish sign-in in your browser. Then type `/models` to choose an account model. You can type `/` at any time to see command suggestions; use ↑/↓ to move, Tab to complete, Enter to run, and Esc to close the list.
108
+
109
+ ### 3. Choose a file
110
+
111
+ Type `/file` and press Enter, or use Ctrl+O. Choose a supported file from the current folder and press Enter. Convo prepares and indexes it before you ask questions.
112
+
113
+ <p align="center">
114
+ <img src="https://raw.githubusercontent.com/madvillax/convo/main/docs/images/file-picker.svg" alt="Convo file picker with README.md selected from a sample project folder." width="760" />
115
+ </p>
116
+
117
+ ### 4. Ask a question
118
+
119
+ Type a question in plain language and press Enter. Convo searches the selected file and answers with numbered citations and a source block showing the file and line numbers.
120
+
121
+ <p align="center">
122
+ <img src="https://raw.githubusercontent.com/madvillax/convo/main/apps/web/public/images/convo-chat.png" alt="Example Convo conversation with a cited answer about a project architecture file." width="760" />
123
+ </p>
124
+
125
+ ### 5. Come back to a conversation
126
+
127
+ Type `/sessions` to search and resume a saved conversation. Type `/new` to start another conversation while keeping the selected file, or `/reset` to start fresh without one.
128
+
129
+ ## Commands and shortcuts
96
130
 
97
131
  | Command/key | Action |
98
132
  | --- | --- |
@@ -139,6 +173,19 @@ convo/
139
173
 
140
174
  [ARCHITECTURE.md](ARCHITECTURE.md) explains the files, schema, data flow, tuning, and verification. [changes.md](changes.md) records implementation approaches and validation.
141
175
 
176
+ ## Website
177
+
178
+ The Next.js, React, TypeScript, and Tailwind CSS landing page in [`apps/web`](apps/web/README.md) is an independent app with its own package manifest and lockfile.
179
+
180
+ ```sh
181
+ cd apps/web
182
+ npm install
183
+ npm run dev # website at http://127.0.0.1:3000
184
+ npm run build # Next.js production build in .next
185
+ npm run start # serve the production website
186
+ npm run check # website checks
187
+ ```
188
+
142
189
  ## Checks
143
190
 
144
191
  ```sh
@@ -1,4 +1,8 @@
1
- # Convo
1
+ <div align="center">
2
+ <img src="https://raw.githubusercontent.com/madvillax/convo/main/apps/web/public/favicon.svg" alt="Convo logo" width="64" height="64" />
3
+ <h1>Convo</h1>
4
+ <p><strong>Your files. A quiet conversation.</strong></p>
5
+ </div>
2
6
 
3
7
  Convo is an open-source, local-first terminal app for chatting with a selected file. Qwen3 embeddings and PostgreSQL full-text search retrieve passages together; a local cross-encoder reranks them; your connected ChatGPT account returns a structured answer with supporting quotations.
4
8
 
@@ -6,28 +10,23 @@ It is released under the [MIT License](LICENSE). Contributions are welcome—see
6
10
 
7
11
  ## Install and start
8
12
 
9
- The supported release install uses [uv](https://docs.astral.sh/uv/):
13
+ Install Convo from PyPI with [uv](https://docs.astral.sh/uv/):
10
14
 
11
15
  ```sh
12
- uv tool install convo-cli
13
- convo
16
+ uv tool install --python 3.12 convo-cli
14
17
  ```
15
18
 
16
- On first launch, `convo` creates a private settings file at `~/.config/convo/.env`, pulls `pgvector/pgvector:pg16`, starts a loopback-only `convo-postgres` container, and runs migrations before opening the terminal app. It generates a random database password and preserves existing data. Later launches restart Convo's local container if needed and apply pending migrations.
19
+ To update an existing installation, run `uv tool upgrade --refresh convo-cli`.
17
20
 
18
- Local storage needs Docker Desktop or Podman installed. Start Docker Desktop first if you use Docker. On macOS, Convo starts or initializes a Podman machine when Podman is installed. First use downloads Python dependencies, a database image, and—when indexing your first file—the embedding/reranker models.
21
+ Convo needs Docker Desktop or Podman for its local database. The install downloads its Python dependencies. On first launch, it creates a private settings file at `~/.config/convo/.env`, pulls `docker.io/pgvector/pgvector:pg16`, starts a loopback-only `convo-postgres` container, and runs migrations. It generates a random database password and preserves existing data. Later launches restart Convo's local container if needed and apply pending migrations.
19
22
 
20
- If you already use PostgreSQL, set `DATABASE_URL` to a `postgresql+psycopg://...` URL, run `convo --setup` once to migrate that database, then run `convo`. Explicit database connections are used as configured; startup only manages storage created by Convo.
23
+ On macOS, Convo starts or initializes a Podman machine when Podman is installed. First use downloads a database image and, when indexing your first file, the embedding and reranker models.
21
24
 
22
- For a one-command install on macOS/Linux, inspect and then run the repository installer:
25
+ Convo 0.1.1 fixes Fedora/Podman startup failures reporting `short-name resolution enforced but cannot prompt without a TTY`. Upgrade if you see this error on an older version. Convo now uses the full Docker Hub image name, including when the `docker` command is a Podman compatibility wrapper.
23
26
 
24
- ```sh
25
- curl -LsSf https://raw.githubusercontent.com/madvillax/convo/main/scripts/install.sh | sh
26
- ```
27
-
28
- It installs uv if needed, installs `convo-cli`, and adds uv's tool directory to your shell path. Then type `convo` to start. Open a new terminal if `convo` is not immediately found.
27
+ If you already use PostgreSQL, set `DATABASE_URL` to a `postgresql+psycopg://...` URL, run `convo --setup` once to migrate that database, then run `convo`. Explicit database connections are used as configured; startup only manages storage created by Convo.
29
28
 
30
- To use an unreleased checkout while developing:
29
+ To install from a local checkout while developing, run this from the repository root:
31
30
 
32
31
  ```sh
33
32
  uv sync --python 3.12
@@ -50,9 +49,44 @@ For a UI preview without services or backend dependencies:
50
49
  uv run convo --shell
51
50
  ```
52
51
 
53
- ## Use
52
+ ## How to use
53
+
54
+ ### 1. Open the folder you want to ask about
55
+
56
+ Run Convo from your project directory. It starts its file browser there.
57
+
58
+ ```sh
59
+ cd ~/path/to/your/project
60
+ convo
61
+ ```
62
+
63
+ To browse another folder, pass it directly: `convo --directory ~/Documents`.
64
+
65
+ ### 2. Connect your ChatGPT account
54
66
 
55
- Type `/` for command suggestions. Filter by typing, use ↑/↓ to move, Tab to complete, Enter to run, and Esc to dismiss.
67
+ In Convo, type `/login`, press Enter, and finish sign-in in your browser. Then type `/models` to choose an account model. You can type `/` at any time to see command suggestions; use ↑/↓ to move, Tab to complete, Enter to run, and Esc to close the list.
68
+
69
+ ### 3. Choose a file
70
+
71
+ Type `/file` and press Enter, or use Ctrl+O. Choose a supported file from the current folder and press Enter. Convo prepares and indexes it before you ask questions.
72
+
73
+ <p align="center">
74
+ <img src="https://raw.githubusercontent.com/madvillax/convo/main/docs/images/file-picker.svg" alt="Convo file picker with README.md selected from a sample project folder." width="760" />
75
+ </p>
76
+
77
+ ### 4. Ask a question
78
+
79
+ Type a question in plain language and press Enter. Convo searches the selected file and answers with numbered citations and a source block showing the file and line numbers.
80
+
81
+ <p align="center">
82
+ <img src="https://raw.githubusercontent.com/madvillax/convo/main/apps/web/public/images/convo-chat.png" alt="Example Convo conversation with a cited answer about a project architecture file." width="760" />
83
+ </p>
84
+
85
+ ### 5. Come back to a conversation
86
+
87
+ Type `/sessions` to search and resume a saved conversation. Type `/new` to start another conversation while keeping the selected file, or `/reset` to start fresh without one.
88
+
89
+ ## Commands and shortcuts
56
90
 
57
91
  | Command/key | Action |
58
92
  | --- | --- |
@@ -99,6 +133,19 @@ convo/
99
133
 
100
134
  [ARCHITECTURE.md](ARCHITECTURE.md) explains the files, schema, data flow, tuning, and verification. [changes.md](changes.md) records implementation approaches and validation.
101
135
 
136
+ ## Website
137
+
138
+ The Next.js, React, TypeScript, and Tailwind CSS landing page in [`apps/web`](apps/web/README.md) is an independent app with its own package manifest and lockfile.
139
+
140
+ ```sh
141
+ cd apps/web
142
+ npm install
143
+ npm run dev # website at http://127.0.0.1:3000
144
+ npm run build # Next.js production build in .next
145
+ npm run start # serve the production website
146
+ npm run check # website checks
147
+ ```
148
+
102
149
  ## Checks
103
150
 
104
151
  ```sh
@@ -0,0 +1,22 @@
1
+ # Convo website
2
+
3
+ The Convo landing page is an independent Next.js App Router app using React, TypeScript, and Tailwind CSS v4. The hero and usage guide use Vercel's Geist Sans and Geist Mono through the official `geist` package and `next/font`.
4
+
5
+ Run from `apps/web` (use `cd apps/web` first when starting at the repository root):
6
+
7
+ ```sh
8
+ npm install
9
+ npm run dev # http://127.0.0.1:3000
10
+ npm run check # ESLint and TypeScript checks
11
+ npm run build # Next.js production build in .next
12
+ npm run start # serve the production build on port 3000
13
+ npm run preview # alias for the production server
14
+ ```
15
+
16
+ This folder has its own `package.json`, `package-lock.json`, and `node_modules`. Use Node.js and npm to install and run it. The Python CLI in `convo/` uses the repository's `pyproject.toml` and `uv.lock`. Run it from the repository root with `uv run convo`. No database or ChatGPT connection is needed to run the website.
17
+
18
+ `src/app/page.tsx` composes the page as a Server Component. Small Client Components in `src/components` handle installation tabs, command categories, and clipboard feedback. Layout and responsive styling use Tailwind utilities; `globals.css` defines the theme and shared browser defaults. `postcss.config.mjs` runs the Tailwind PostCSS plugin.
19
+
20
+ For Vercel, choose `apps/web` as the project root and the Next.js framework preset. The production build also runs on any host that supports `next start`.
21
+
22
+ This site uses real CLI commands from `convo/__main__.py` and `convo/ui/commands.py`; keep its guide in sync when those change. The terminal image is a repository screenshot in tracked public assets. Fonts are bundled from the installed `geist` package, so builds do not fetch Google Fonts.
@@ -1,3 +1,3 @@
1
1
  """A local terminal RAG assistant for chatting with selected files."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.1.1"
@@ -18,7 +18,9 @@ from urllib.parse import quote
18
18
 
19
19
  CONTAINER_NAME = "convo-postgres"
20
20
  VOLUME_NAME = "convo-postgres-data"
21
- IMAGE = "pgvector/pgvector:pg16"
21
+ # Podman (including Fedora's docker shim) cannot prompt for a registry when
22
+ # startup captures subprocess output. Always use a fully qualified image name.
23
+ IMAGE = "docker.io/pgvector/pgvector:pg16"
22
24
  DATABASE_NAME = "convo"
23
25
  DATABASE_USER = "convo"
24
26
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "convo-cli"
7
- version = "0.1.0"
7
+ version = "0.1.1"
8
8
  description = "A local terminal RAG assistant for chatting with selected files."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -62,6 +62,7 @@ include = [
62
62
  "tests",
63
63
  "scripts",
64
64
  "README.md",
65
+ "CHANGELOG.md",
65
66
  "LICENSE",
66
67
  "CONTRIBUTING.md",
67
68
  "CODE_OF_CONDUCT.md",
@@ -10,7 +10,10 @@ from convo.core import config
10
10
  from convo.core.config import user_settings_path
11
11
 
12
12
 
13
- def test_setup_writes_private_user_settings_and_creates_loopback_container(tmp_path, monkeypatch):
13
+ @pytest.mark.parametrize("runtime", ["docker", "podman"])
14
+ def test_setup_writes_private_user_settings_and_creates_loopback_container(
15
+ tmp_path, monkeypatch, runtime
16
+ ):
14
17
  commands: list[list[str]] = []
15
18
 
16
19
  def fake_run(command, *, allow_failure=False):
@@ -21,7 +24,7 @@ def test_setup_writes_private_user_settings_and_creates_loopback_container(tmp_p
21
24
  monkeypatch.setattr(bootstrap, "_run", fake_run)
22
25
  monkeypatch.setattr(bootstrap.secrets, "token_urlsafe", lambda _size: "safe-password")
23
26
 
24
- database_url = bootstrap._ensure_container("podman", None)
27
+ database_url = bootstrap._ensure_container(runtime, None)
25
28
 
26
29
  assert database_url == "postgresql+psycopg://convo:safe-password@localhost:5432/convo"
27
30
  assert user_settings_path().read_text(encoding="utf-8") == (
@@ -35,6 +38,10 @@ def test_setup_writes_private_user_settings_and_creates_loopback_container(tmp_p
35
38
  )
36
39
  assert user_settings_path().stat().st_mode & 0o777 == 0o600
37
40
  create_command = next(command for command in commands if command[1] == "run")
41
+ # Both Podman and its Docker-compatible shim must avoid interactive
42
+ # short-name registry resolution on distributions such as Fedora.
43
+ assert create_command[0] == runtime
44
+ assert create_command[-1] == "docker.io/pgvector/pgvector:pg16"
38
45
  assert "127.0.0.1:5432:5432" in create_command
39
46
  assert "convo-postgres-data:/var/lib/postgresql/data" in create_command
40
47
  assert "io.convo.managed=true" in create_command
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes