difflicious


Namedifflicious JSON
Version 0.9.2 PyPI version JSON
download
home_pageNone
SummaryA sleek web-based git diff visualization tool for developers
upload_time2025-11-03 19:11:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords development diff git visualization web
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Difflicious

A sleek web-based git diff visualization tool used when working locally on branches. Difflicious provides a lightweight local web application that transforms git diffs into an intuitive, interactive experience.

## What is Difflicious?

Difflicious is a developer-focused tool that runs locally and provides a beautiful interface for viewing git changes. Instead of squinting at terminal output, you get a clean, searchable, and toggleable view of your work-in-progress changes.

Perfect for:
- Reviewing changes before committing
- Understanding complex diffs across multiple files
- Quickly navigating through modifications in your current branch
- Getting a bird's-eye view of your development progress

## Features

- **Side-by-Side Diff Visualization**: Professional-grade side-by-side view with accurate line numbering
- **Syntax Highlighting**: Beautiful code highlighting for 30+ programming languages using Highlight.js
- **Intelligent Diff Parsing**: Advanced git diff parser with proper alignment of additions and deletions
- **Smart UI Controls**: Expand/collapse all buttons with intelligent disabled states
- **Interactive Interface**: Toggle visibility, search through changes, and filter content
- **Clean File Paths**: Automatic removal of git diff artifacts (a/, b/ prefixes)
- **Secure Git Integration**: Safe git command execution with subprocess sanitization
- **Real-time Status**: Live git repository status and branch information
- **Modern UI**: Clean Tailwind CSS design with responsive layout
- **Lightweight**: Minimal infrastructure using Flask backend and Alpine.js frontend
- **Developer-Friendly**: Designed by developers, for developers

## Installation & Quick Start

### Option 1: Install from PyPI (Recommended)
```bash
# Install via pip
pip install difflicious

# Run the application
difflicious

# Open your browser to localhost:5000
```

### Option 2: Docker (Containerized)
```bash
# Pull and run the Docker image
docker run -p 5000:5000 -v $(pwd):/workspace difflicious/difflicious

# Open your browser to localhost:5000
```

### Option 3: From Source (Development)
```bash
# Clone the repository
git clone https://github.com/insipid/difflicious.git
cd difflicious

# Install uv if not already installed
xoxo
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create virtual environment and install dependencies
uv sync

# Run the application
uv run difflicious
```

## Font Customization

Difflicious supports beautiful programming fonts via Google Fonts CDN integration. You can customize the font used for code and diff content.

### Available Fonts

- **JetBrains Mono** (default) - Designed specifically for developers
- **Fira Code** - Popular programming font with ligatures
- **Source Code Pro** - Adobe's professional programming font
- **IBM Plex Mono** - Modern, clean monospace design
- **Roboto Mono** - Google's versatile monospace font
- **Inconsolata** - Humanist monospace font

### Font Configuration

Set the `DIFFLICIOUS_FONT` environment variable to choose your preferred font:

```bash
# Use Fira Code
export DIFFLICIOUS_FONT=fira-code
difflicious

# Use Source Code Pro
export DIFFLICIOUS_FONT=source-code-pro
difflicious

# List all available fonts
difflicious --list-fonts
```

### Available Font Keys

- `jetbrains-mono` - JetBrains Mono (default)
- `fira-code` - Fira Code
- `source-code-pro` - Source Code Pro  
- `ibm-plex-mono` - IBM Plex Mono
- `roboto-mono` - Roboto Mono
- `inconsolata` - Inconsolata

### Disable Google Fonts

If you prefer to use system fonts only (no external CDN requests):

```bash
export DIFFLICIOUS_DISABLE_GOOGLE_FONTS=true
difflicious
```

This will fall back to system monospace fonts like SF Mono, Cascadia Code, Monaco, and Consolas.

## Technology Stack

- **Backend**: Python Flask for minimal setup and excellent git integration
- **Frontend**: Alpine.js + vanilla CSS for lightweight, declarative UI
- **Real-time**: Server-Sent Events for live git status updates
- **Security**: Proper subprocess sanitization for safe git command execution
- **Distribution**: Modern Python packaging (PyPI) and Docker containers
- **Development**: uv for fast Python package management and virtual environments

## Development Status

✅ **Production-ready diff visualization** - Advanced side-by-side interface implemented!

### Completed ✅
- Modern Python project structure with pyproject.toml and uv
- Flask backend with comprehensive API endpoints
- Advanced git diff parser with side-by-side structure
- Professional side-by-side diff visualization interface
- Secure git command execution wrapper with subprocess sanitization
- Interactive Alpine.js frontend with Tailwind CSS styling
- Comprehensive test suite (28 tests, 73% coverage)
- Real git integration (status, diff, branch detection, parsing)

### Coming Soon 🚧
- Docker containerization with uv
- PyPI package publishing
- Enhanced syntax highlighting for code content
- Advanced search and filtering capabilities
- Keyboard shortcuts and accessibility features
- Server-Sent Events for real-time updates

## Contributing

This project is in early development. More contribution guidelines will be available as the core functionality is completed.

## License

MIT License - see LICENSE file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "difflicious",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "development, diff, git, visualization, web",
    "author": null,
    "author_email": "Drew <noreply@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/82/cf/04c126a7273ee1cbadcbcf9b5b54c5544ce16eed0c252d5a6f9aec1339df/difflicious-0.9.2.tar.gz",
    "platform": null,
    "description": "# Difflicious\n\nA sleek web-based git diff visualization tool used when working locally on branches. Difflicious provides a lightweight local web application that transforms git diffs into an intuitive, interactive experience.\n\n## What is Difflicious?\n\nDifflicious is a developer-focused tool that runs locally and provides a beautiful interface for viewing git changes. Instead of squinting at terminal output, you get a clean, searchable, and toggleable view of your work-in-progress changes.\n\nPerfect for:\n- Reviewing changes before committing\n- Understanding complex diffs across multiple files\n- Quickly navigating through modifications in your current branch\n- Getting a bird's-eye view of your development progress\n\n## Features\n\n- **Side-by-Side Diff Visualization**: Professional-grade side-by-side view with accurate line numbering\n- **Syntax Highlighting**: Beautiful code highlighting for 30+ programming languages using Highlight.js\n- **Intelligent Diff Parsing**: Advanced git diff parser with proper alignment of additions and deletions\n- **Smart UI Controls**: Expand/collapse all buttons with intelligent disabled states\n- **Interactive Interface**: Toggle visibility, search through changes, and filter content\n- **Clean File Paths**: Automatic removal of git diff artifacts (a/, b/ prefixes)\n- **Secure Git Integration**: Safe git command execution with subprocess sanitization\n- **Real-time Status**: Live git repository status and branch information\n- **Modern UI**: Clean Tailwind CSS design with responsive layout\n- **Lightweight**: Minimal infrastructure using Flask backend and Alpine.js frontend\n- **Developer-Friendly**: Designed by developers, for developers\n\n## Installation & Quick Start\n\n### Option 1: Install from PyPI (Recommended)\n```bash\n# Install via pip\npip install difflicious\n\n# Run the application\ndifflicious\n\n# Open your browser to localhost:5000\n```\n\n### Option 2: Docker (Containerized)\n```bash\n# Pull and run the Docker image\ndocker run -p 5000:5000 -v $(pwd):/workspace difflicious/difflicious\n\n# Open your browser to localhost:5000\n```\n\n### Option 3: From Source (Development)\n```bash\n# Clone the repository\ngit clone https://github.com/insipid/difflicious.git\ncd difflicious\n\n# Install uv if not already installed\nxoxo\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Create virtual environment and install dependencies\nuv sync\n\n# Run the application\nuv run difflicious\n```\n\n## Font Customization\n\nDifflicious supports beautiful programming fonts via Google Fonts CDN integration. You can customize the font used for code and diff content.\n\n### Available Fonts\n\n- **JetBrains Mono** (default) - Designed specifically for developers\n- **Fira Code** - Popular programming font with ligatures\n- **Source Code Pro** - Adobe's professional programming font\n- **IBM Plex Mono** - Modern, clean monospace design\n- **Roboto Mono** - Google's versatile monospace font\n- **Inconsolata** - Humanist monospace font\n\n### Font Configuration\n\nSet the `DIFFLICIOUS_FONT` environment variable to choose your preferred font:\n\n```bash\n# Use Fira Code\nexport DIFFLICIOUS_FONT=fira-code\ndifflicious\n\n# Use Source Code Pro\nexport DIFFLICIOUS_FONT=source-code-pro\ndifflicious\n\n# List all available fonts\ndifflicious --list-fonts\n```\n\n### Available Font Keys\n\n- `jetbrains-mono` - JetBrains Mono (default)\n- `fira-code` - Fira Code\n- `source-code-pro` - Source Code Pro  \n- `ibm-plex-mono` - IBM Plex Mono\n- `roboto-mono` - Roboto Mono\n- `inconsolata` - Inconsolata\n\n### Disable Google Fonts\n\nIf you prefer to use system fonts only (no external CDN requests):\n\n```bash\nexport DIFFLICIOUS_DISABLE_GOOGLE_FONTS=true\ndifflicious\n```\n\nThis will fall back to system monospace fonts like SF Mono, Cascadia Code, Monaco, and Consolas.\n\n## Technology Stack\n\n- **Backend**: Python Flask for minimal setup and excellent git integration\n- **Frontend**: Alpine.js + vanilla CSS for lightweight, declarative UI\n- **Real-time**: Server-Sent Events for live git status updates\n- **Security**: Proper subprocess sanitization for safe git command execution\n- **Distribution**: Modern Python packaging (PyPI) and Docker containers\n- **Development**: uv for fast Python package management and virtual environments\n\n## Development Status\n\n\u2705 **Production-ready diff visualization** - Advanced side-by-side interface implemented!\n\n### Completed \u2705\n- Modern Python project structure with pyproject.toml and uv\n- Flask backend with comprehensive API endpoints\n- Advanced git diff parser with side-by-side structure\n- Professional side-by-side diff visualization interface\n- Secure git command execution wrapper with subprocess sanitization\n- Interactive Alpine.js frontend with Tailwind CSS styling\n- Comprehensive test suite (28 tests, 73% coverage)\n- Real git integration (status, diff, branch detection, parsing)\n\n### Coming Soon \ud83d\udea7\n- Docker containerization with uv\n- PyPI package publishing\n- Enhanced syntax highlighting for code content\n- Advanced search and filtering capabilities\n- Keyboard shortcuts and accessibility features\n- Server-Sent Events for real-time updates\n\n## Contributing\n\nThis project is in early development. More contribution guidelines will be available as the core functionality is completed.\n\n## License\n\nMIT License - see LICENSE file for details.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A sleek web-based git diff visualization tool for developers",
    "version": "0.9.2",
    "project_urls": {
        "Homepage": "https://github.com/insipid/difflicious",
        "Issues": "https://github.com/insipid/difflicious/issues",
        "Repository": "https://github.com/insipid/difflicious"
    },
    "split_keywords": [
        "development",
        " diff",
        " git",
        " visualization",
        " web"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ad158c9df6023dfd548af2d82a767e68724f94aeda8744fa1317e457117ff982",
                "md5": "22eebaafdc1ff044723ba6480b95512c",
                "sha256": "dcc64357b14e2ba3204ca9781abfe0e05c1cb48d0a77ca43b3d26397747c5366"
            },
            "downloads": -1,
            "filename": "difflicious-0.9.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "22eebaafdc1ff044723ba6480b95512c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 77412,
            "upload_time": "2025-11-03T19:10:59",
            "upload_time_iso_8601": "2025-11-03T19:10:59.951313Z",
            "url": "https://files.pythonhosted.org/packages/ad/15/8c9df6023dfd548af2d82a767e68724f94aeda8744fa1317e457117ff982/difflicious-0.9.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "82cf04c126a7273ee1cbadcbcf9b5b54c5544ce16eed0c252d5a6f9aec1339df",
                "md5": "ac49d437c662ee9bc440b8f17f0a73dd",
                "sha256": "32843929803427f22f237645d371fe470ee69fb55cb1e0b0c5f0c265f3b96cee"
            },
            "downloads": -1,
            "filename": "difflicious-0.9.2.tar.gz",
            "has_sig": false,
            "md5_digest": "ac49d437c662ee9bc440b8f17f0a73dd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 368187,
            "upload_time": "2025-11-03T19:11:01",
            "upload_time_iso_8601": "2025-11-03T19:11:01.335989Z",
            "url": "https://files.pythonhosted.org/packages/82/cf/04c126a7273ee1cbadcbcf9b5b54c5544ce16eed0c252d5a6f9aec1339df/difflicious-0.9.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-03 19:11:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "insipid",
    "github_project": "difflicious",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "difflicious"
}
        
Elapsed time: 0.52889s