Skip to main content

GRACE Context Manager

PyPI version Python versions License

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

  1. Select Project: Click Browse to choose your project directory, select from Recent, or type the path directly.
  2. Add Context Blocks: Create reusable blocks for tech stack, coding rules, etc.
  3. 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
  4. Keyword Filter: Set a keyword to only show files matching that keyword in their filename.
  5. Select Files: Check files/directories to include in context.
  6. Add Instruction: Write your task in the instruction box.
  7. Refresh: Click Refresh Context to reload changed files from disk.
  8. Copy: Click Copy Context and paste into your LLM.

Extension Presets

Save and load extension filter combinations:

  1. Select your desired extensions (via checkboxes or typing)
  2. Click Save to store as a named preset (e.g., python_ml)
  3. Click Load▾ to apply a previously saved preset
  4. 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 info
  • constraints - Coding rules and constraints
  • context - 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)

Source distribution for grace-context-manager 4.0.6
File Size Uploaded
grace_context_manager-4.0.6.tar.gz 6.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for grace-context-manager 4.0.6
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

4.0.6 This release

2 release files

4.0.5

2 release files

4.0.4

2 release files

4.0.3

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page