# MossyUpdater

A modern Windows desktop application for downloading and unblocking files, featuring an entertaining quote rotation system and robust download management.

## Features

### 🚀 **Core Functionality**
- **Smart Downloads**: Download files with real-time progress tracking
- **Automatic Unblocking**: Removes Windows security restrictions (Zone.Identifier)
- **Update Detection**: Checks if remote files have changed
- **Retry Logic**: Automatically retries failed downloads (3 attempts)
- **Cancellation Support**: Cancel downloads in progress

### 🎨 **User Experience**
- **Quote Rotation**: 50 hilarious "Time According to Alex" quotes with smooth fade transitions
- **Progress Visualization**: Real-time download progress with status updates
- **Responsive Design**: Resizable window with modern WPF interface
- **Settings Persistence**: Remembers your preferences between sessions
- **Custom Icon**: Features favicon.ico as the application icon

### 🔧 **Technical Features**
- **MVVM Architecture**: Clean separation of concerns with data binding
- **Dependency Injection**: Modern IoC container with service registration
- **Streaming Downloads**: Efficient handling of large files
- **Comprehensive Logging**: Detailed logs saved to `%AppData%/MossyUpdater/log.txt`
- **Error Handling**: User-friendly error messages with detailed logging

## Quick Start

1. **Build the application**:
   ```bash
   dotnet build
   ```

2. **Run the application**:
   ```bash
   dotnet run
   ```

3. **Use the application**:
   - Enter a download URL (defaults to MosswartMassacre.dll)
   - Browse and select destination folder
   - Click "Check Updates" to see if file has changed
   - Click "Download & Unblock" to start the download
   - Enjoy the rotating quotes while you wait!

## System Requirements

- **Platform**: Windows 10/11
- **Framework**: .NET 8.0
- **Architecture**: x64

## Publishing

Create a single-file executable:
```bash
dotnet publish -c Release -p:PublishProfile=FolderProfile
```

Output location: `bin\Release\net8.0-windows\publish\win-x64\`

## Configuration

Settings are automatically saved to:
- **Settings**: `%AppData%/MossyUpdater/settings.json`
- **Logs**: `%AppData%/MossyUpdater/log.txt`

## Quote System

Features 50 witty quotes from "Time According to Alex" about time management, rotating every 5 seconds with smooth fade transitions. Sample quotes include:

> "I don't run late. I glide fashionably through time." - Time According to Alex

> "Time is an illusion. My ETA is performance art." - Time According to Alex

## Development

Built with modern C# and WPF, featuring:
- **Services Pattern**: Modular business logic
- **MVVM Pattern**: Clean UI separation
- **Async/Await**: Non-blocking operations
- **Dependency Injection**: Testable architecture
- **Resource Management**: Proper disposal patterns

## License

Built for the SawatoMosswartsEnjoyersClub/MosswartMassacre project.
