GRACE Context Manager
A modern GUI tool for assembling high-quality context for LLM coding assistants. Built with PyQt6.
pip install grace-context-manager
grace
Upgrading
pip install --upgrade grace-context-manager
Your data is safe. All settings, context blocks, extension presets, and recent projects are stored in ~/.grace_manager/ — they persist across upgrades.
Key Features
- Context Blocks: Reusable text snippets organized by category (tech stack, constraints, rules). Toggle on/off as needed.
- Smart File Selection: Tree view with checkboxes, file size display, and quick select/deselect.
- Advanced Filtering: Filter by extension (typed manually or by checkboxes with two-way binding), keyword filename filter, and built-in ignore rules (dot-files,
node_modules,__pycache__,venv). - Dynamic Extension Detection: Auto-detect all file extensions in your project with select/deselect all for quick filtering.
- Typed Extension Filter: Extensions can be typed directly as comma-separated values (
.py, .json, .yaml) or selected via checkboxes — both stay in sync. - Extension Presets: Save frequently used extension combinations (e.g.,
python_ml,web_dev) and reload them across sessions. - Live Preview: See assembled context with token count estimation before copying.
- Preview Modes: Full context, structure only, or files only.
- Dynamic Context Refresh: Refresh selected file contents when files change on disk without re-selecting.
- Scalable UI: Adjustable interface scaling (75%-200%) for different screen sizes and devices.
- Manual Directory Entry: Type the project root path directly or use Browse/Recent selectors.
- Keyboard Shortcuts: Ctrl+C copy, Ctrl+N new block, Ctrl+R refresh, Ctrl+O browse, Ctrl+A/D select all/none.
One-Click Installers (no Python required)
For users without Python, download and run the platform installer which bundles everything:
| Platform | Installer |
|---|---|
| Windows | install.bat (right-click → "Run") |
| Linux / macOS | ./install.sh |
Manual Install (from source)
git clone https://github.com/VanUST/GRACE.git
cd grace-context-manager
pip install -e .
Workflow
- Select Project: Click Browse to choose your project directory, select from Recent, or type the path directly.
- Add Context Blocks: Create reusable blocks for tech stack, coding rules, etc.
- Filter Extensions: Click Detect to auto-discover all file extensions, then:
- Click checkboxes to toggle individual extensions
- Type extensions directly in the text field (
.py, .json, .yaml) - Use All/None for quick toggle
- Save/Load presets for reuse across projects
- Keyword Filter: Set a keyword to only show files matching that keyword in their filename.
- Select Files: Check files/directories to include in context.
- Add Instruction: Write your task in the instruction box.
- Refresh: Click Refresh Context to reload changed files from disk.
- Copy: Click Copy Context and paste into your LLM.
Extension Presets
Save and load extension filter combinations:
- Select your desired extensions (via checkboxes or typing)
- Click Save to store as a named preset (e.g.,
python_ml) - Click Load▾ to apply a previously saved preset
- Presets persist globally in
~/.grace_manager/extension_presets.json
Built-in defaults: python_ml, web_dev, data_science, rust, golang, python, all.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+C |
Copy context to clipboard |
Ctrl+N |
New context block |
Ctrl+R |
Refresh context |
Ctrl+O |
Browse directory |
Ctrl+A |
Select all files |
Ctrl+D |
Deselect all files |
Running Tests
# Install test dependencies
pip install -e ".[test]"
# Run all tests
pytest tests/ -v
# Run specific test file
pytest tests/test_engine.py -v
pytest tests/test_tree_model.py -v
pytest tests/test_config.py -v
# Quick smoke test (no pytest required)
python -m pytest tests/
Tests run headless (virtual display) and cover:
- Engine: Token estimation, file scanning with extension/keyword filters, context assembly across all modes
- Tree model: Check/uncheck propagation, partial uncheck (Bug 1+2 fix), eager loading, extension & keyword filters, nested directory handling, dot-file exclusion
- Config: Built-in constants, ignore rules, extension presets
Context Blocks
Context blocks are saved in ~/.grace_manager/profiles.json. They persist across sessions.
Organize blocks by category:
tech- Technology stack infoconstraints- Coding rules and constraintscontext- Project-specific context- Any custom category
UI Scaling
Use the scale buttons in the sidebar to adjust the UI. Scaling preference is saved in ~/.grace_manager/settings.json and persists across sessions.
Configuration Files
| File | Purpose |
|---|---|
~/.grace_manager/profiles.json |
Context blocks |
~/.grace_manager/recent_projects.json |
Recently opened projects |
~/.grace_manager/settings.json |
UI preferences (scaling, etc.) |
~/.grace_manager/extension_presets.json |
Saved extension presets |
Metadata
Release files for grace-context-manager 4.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| grace_context_manager-4.0.6.tar.gz | 6.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| grace_context_manager-4.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.7 MB
Release files / grace_context_manager-4.0.6.tar.gz
| Download URL | grace_context_manager-4.0.6.tar.gz |
|---|---|
| Size | 6.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f18755740c762647243f24c3b252e4829f12100a603e06f62e563f9c8bd9d251
|
|
BLAKE2b-256 checksum How to use checksums |
0aa897fceb7605cbdcc653078c0eb50bd98c8d628a2de2d39fcf54ee5144a7a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.5
|
Release files / grace_context_manager-4.0.6-py3-none-any.whl
| Download URL | grace_context_manager-4.0.6-py3-none-any.whl |
|---|---|
| Size | 6.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a5d2bd8d10c492a88c21efd3361ed67fb3983e040a88a90bcc0e0decdc4d6214
|
|
BLAKE2b-256 checksum How to use checksums |
41d39e2a70ef54adc32d21ea19f9389ca54b85e50a513de39b34117fb11f76a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.5
|