Skip to content

Latest commit

Β 

History

History
69 lines (48 loc) Β· 2.98 KB

File metadata and controls

69 lines (48 loc) Β· 2.98 KB

Contributing to ImageWriter

Thank you for contributing. ImageWriter performs destructive low-level disk operations, so changes to device selection, IPC, service installation, archive handling, and verification require especially careful review.

Reporting issues

Include the ImageWriter version, Windows version, edition (Standard or Pro), exact steps, expected and observed behavior, logs, and screenshots where useful. Report security vulnerabilities privately according to SECURITY.md, not in a public issue.

Development setup

Requirements:

  • Windows development environment;
  • Delphi 12 Athens (Embarcadero Studio 23.0), Win32 target;
  • Git with submodule support.

Clone and initialize dependencies:

git clone --recurse-submodules https://github.com/tixset/ImageWriter.git
cd ImageWriter
git submodule update --init --recursive

lib/HtmlViewer/source/htmlview.pas must exist before opening the GUI projects.

Build from the Delphi IDE in this order:

  1. ImageWriter.dproj
  2. ImageWriterPro.dproj
  3. ImageWriterSvc.dproj

Delphi Community Edition does not provide a supported command-line build. The repository has no build.bat. See BUILD_CONFIGURATION.md for project options and output directories.

Project structure

ImageWriter/
β”œβ”€β”€ ImageWriter*.dpr/.dproj   # Standard, Pro, and service projects
β”œβ”€β”€ src/                      # Core units and VCL forms
β”‚   β”œβ”€β”€ managers/             # 16 business-logic units
β”‚   └── studio/               # Hashing, RNG, and helper units
β”œβ”€β”€ resources/                # Manifests, icons, RC/RES files
β”œβ”€β”€ lib/HtmlViewer/           # Required Git submodule
β”œβ”€β”€ tests/                    # DUnit and PowerShell test sources
β”œβ”€β”€ docs/                     # User and technical documentation
└── reports/                  # Dated audit snapshots

Pull requests

  • Branch from main.
  • Keep changes focused and preserve unrelated user work.
  • Follow the existing Pascal style and use try..finally for owned resources.
  • Add or update tests for behavioral changes.
  • Update current documentation and CHANGELOG.md for user-visible changes.
  • For privileged code, document the trust boundary and fail-closed behavior.
  • Do not claim a build or test passed unless the corresponding command actually ran.
  • Follow COMMIT_CONVENTIONS.md.

Before submitting, build all three projects in Delphi 12 and test on disposable removable media. Never use a system disk for destructive testing.

Current test limitations

The repository contains useful test sources, but tests/IPCIntegrationTests.pas currently prevents the complete DUnit runner from compiling. GitHub workflows perform repository checks only; they are not a Delphi build/test pipeline. State exactly which individual checks you ran in the pull request.

License

Contributions are licensed under GNU GPL v3.0. The project is based on dd for Windows by John Newbigin.