# Contributing to ObsidianDragon

Thank you for your interest in contributing! This guide will help you get started.

## Getting Started

1. Fork the repository
2. Clone your fork and create a branch:
   ```bash
   git clone https://git.dragonx.is/<your-username>/ObsidianDragon.git
   cd ObsidianDragon
   git checkout -b my-feature
   ```
3. Install dependencies:
   ```bash
   ./scripts/setup.sh
   ```
4. Build:
   ```bash
   ./build.sh --linux-release   # or --win-release, --mac-release
   ```

## Development Workflow

### Code Style

- C++17 standard
- Use the Material Design icon font (`ICON_MD_*` defines) — never raw Unicode symbols
- UI layout values go in `res/themes/ui.toml`, read via `schema::UI()` — never hardcode pixel sizes
- Use the `RPCWorker` for all RPC calls — never block the main thread with synchronous curl

See `.github/copilot-instructions.md` for detailed coding standards.

### Building

```bash
# Linux debug build (fastest iteration)
cd build && make -j$(nproc)

# Full release builds
./build.sh --linux-release
./build.sh --win-release
./build.sh --mac-release
```

### Testing

Run the wallet and verify:
- Daemon connection and sync
- Lock screen / PIN unlock
- Send and receive transactions
- All tabs render correctly

## Submitting Changes

1. Commit with clear, descriptive messages
2. Push to your fork
3. Open a Pull Request against `main`
4. Describe what changed and why

### Pull Request Guidelines

- Keep PRs focused — one feature or fix per PR
- Ensure the project builds on Linux (`make -j$(nproc)`)
- Test cross-compilation if touching platform-specific code (`./build.sh --win-release`)
- Update `res/themes/ui.toml` if adding new UI layout values

## Reporting Issues

- Use the [issue tracker](https://git.dragonx.is/dragonx/ObsidianDragon/issues)
- Include: OS, wallet version, steps to reproduce, expected vs actual behaviour
- For crashes: include any terminal output

## License

By contributing, you agree that your contributions will be licensed under the GPLv3.
