d2phap/ImageGlass
π A lightweight, versatile image viewer
Single-maintainer risk β review before adopting
worst of 4 axesnon-standard license (Other); top contributor handles 94% of recent commitsβ¦
Has a license, tests, and CI β clean foundation to fork and modify.
Documented and popular β useful reference codebase to read through.
No critical CVEs, sane security posture β runnable as-is.
- βLast commit 3w ago
- β4 active contributors
- βOther licensed
Show 5 more βShow less
- β Small team β 4 contributors active in recent commits
- β Single-maintainer risk β top contributor 94% of recent commits
- β Non-standard license (Other) β review terms
- β No CI workflows detected
- β No test directory detected
What would change the summary?
- βUse as dependency Concerns β Mixed if: clarify license terms
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Forkable" badge
Paste into your README β live-updates from the latest cached analysis.
[](https://repopilot.app/r/d2phap/imageglass)Paste at the top of your README.md β renders inline like a shields.io badge.
βΈPreview social card (1200Γ630)
This card auto-renders when someone shares https://repopilot.app/r/d2phap/imageglass on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: d2phap/ImageGlass
Generated by RepoPilot Β· 2026-05-09 Β· Source
π€Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale β STOP and ask the user to regenerate it before proceeding. - Treat the AI Β· unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/d2phap/ImageGlass shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything β but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
π―Verdict
WAIT β Single-maintainer risk β review before adopting
- Last commit 3w ago
- 4 active contributors
- Other licensed
- β Small team β 4 contributors active in recent commits
- β Single-maintainer risk β top contributor 94% of recent commits
- β Non-standard license (Other) β review terms
- β No CI workflows detected
- β No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
β Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live d2phap/ImageGlass
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale β regenerate it at
repopilot.app/r/d2phap/ImageGlass.
What it runs against: a local clone of d2phap/ImageGlass β the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in d2phap/ImageGlass | Confirms the artifact applies here, not a fork |
| 2 | License is still Other | Catches relicense before you depend on it |
| 3 | Default branch develop exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit β€ 52 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of d2phap/ImageGlass. If you don't
# have one yet, run these first:
#
# git clone https://github.com/d2phap/ImageGlass.git
# cd ImageGlass
#
# Then paste this script. Every check is read-only β no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of d2phap/ImageGlass and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "d2phap/ImageGlass(\\.git)?\\b" \\
&& ok "origin remote is d2phap/ImageGlass" \\
|| miss "origin remote is not d2phap/ImageGlass (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(Other)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"Other\"" package.json 2>/dev/null) \\
&& ok "license is Other" \\
|| miss "license drift β was Other at generation time"
# 3. Default branch
git rev-parse --verify develop >/dev/null 2>&1 \\
&& ok "default branch develop exists" \\
|| miss "default branch develop no longer exists"
# 4. Critical files exist
test -f ".github/ISSUE_TEMPLATE/config.yml" \\
&& ok ".github/ISSUE_TEMPLATE/config.yml" \\
|| miss "missing critical file: .github/ISSUE_TEMPLATE/config.yml"
test -f ".github/FUNDING.yml" \\
&& ok ".github/FUNDING.yml" \\
|| miss "missing critical file: .github/FUNDING.yml"
test -f ".gitignore" \\
&& ok ".gitignore" \\
|| miss "missing critical file: .gitignore"
test -f "Assets/Color Profiles/RGB/AdobeRGB1998.icc" \\
&& ok "Assets/Color Profiles/RGB/AdobeRGB1998.icc" \\
|| miss "missing critical file: Assets/Color Profiles/RGB/AdobeRGB1998.icc"
test -f "Assets/Ext Icons/AnotherDimension-Ex/ICO/JPEG.ico" \\
&& ok "Assets/Ext Icons/AnotherDimension-Ex/ICO/JPEG.ico" \\
|| miss "missing critical file: Assets/Ext Icons/AnotherDimension-Ex/ICO/JPEG.ico"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 52 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~22d)"
else
miss "last commit was $days_since_last days ago β artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) β safe to trust"
else
echo "artifact has $fail stale claim(s) β regenerate at https://repopilot.app/r/d2phap/ImageGlass"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
β‘TL;DR
ImageGlass is a lightweight Windows image viewer written in C# that supports 90+ image formats (WEBP, GIF, SVG, PNG, JXL, HEIC, RAW formats, etc.) with an emphasis on clean UI and performance. It replaces Windows Photo Viewer for users who need fast, versatile image browsing with advanced color management via ICC profiles (assets contain CMYK and RGB profiles) and extensive format support. Single monorepo structure: C# WinForms/WPF desktop app in root with Assets/ containing image resources (Color Profiles/CMYK and RGB ICC files, Ext Icons for 40+ file formats). TypeScript/SCSS/HTML in .github and web assets suggest companion web tooling (likely documentation or installer). No visible src/ split; likely main logic is in root .csproj files.
π₯Who it's for
Windows users (casual to power users, designers, photographers) who need a fast, format-rich image viewer with advanced features like color profile management, Explorer integration, and CLI support. Contributors are primarily .NET/C# developers maintaining a cross-platform desktop application.
π±Maturity & risk
Production-ready and actively maintained. ImageGlass has 11.5k+ GitHub stars, substantial codebase (2.1M lines of C#), and recently released v10 beta with ongoing development. The project distributes via both GitHub releases and Microsoft Store, indicating stability and broad adoption. Commits appear recent and issue triage is active.
Low risk for core functionalityβsingle maintainer (d2phap) is an active risk for long-term sustainability, but project has community Discord (818852544859209748) and Crowdin localization indicating some ecosystem support. No visible dependency hell from file list; main risks are OS API deprecation (Windows-specific) and breaking changes during v10 transition. Large asset directory (color profiles, extension icons) suggests good test coverage for format handling.
Active areas of work
Version 10 beta is active (v10 beta 1 mentioned in README with recent preview image). Focus appears to be on expanding format support (JXOL, HEIC added recently) and modernizing UI. GitHub issues template mentions bugs and feature requests; Crowdin integration shows ongoing localization effort across multiple languages.
πGet running
Clone and open in Visual Studio 2022+ (inferred from C# 2.1M LOC and .NET stack): git clone https://github.com/d2phap/ImageGlass.git && cd ImageGlass. Look for .sln file and build with dotnet build or open in Visual Studio IDE. No npm/yarn needed; Windows-only build environment.
Daily commands:
Clone repo, open .sln in Visual Studio 2022 or run dotnet build from root, then execute the compiled .exe. No dev serverβnative Windows app. Likely requires Windows 10+ and .NET 6.0+ runtime.
πΊοΈMap of the codebase
.github/ISSUE_TEMPLATE/config.ymlβ Defines issue template configuration and contribution guidelines that shape how the project receives bug reports and feature requests..github/FUNDING.ymlβ Specifies funding and sponsorship mechanisms critical for project sustainability and contributor recognition..gitignoreβ Defines what files are excluded from version control; essential for understanding build artifacts, dependencies, and local configuration handling.Assets/Color Profiles/RGB/AdobeRGB1998.iccβ Core color profile asset used by the image viewer's color management pipeline for accurate image rendering.Assets/Ext Icons/AnotherDimension-Ex/ICO/JPEG.icoβ File extension icons that appear throughout the UI, representing the visual identity for supported image formats..github/pull_request_template.mdβ Pull request template that standardizes contribution workflow and ensures quality of incoming changes.
π§©Components & responsibilities
- Format Manager (Icon asset files (.ico), extension registry) β Maps file extensions to supported image formats; retrieves and displays appropriate extension icons from the Assets/Ext Icons collection.
- Failure mode: Unsupported format β display generic icon; missing icon asset β fallback to default image icon.
- Color Management System (ICC profile files, color transformation engine) β Selects and applies ICC color profiles (RGB or CMYK) to ensure accurate image rendering across display and print workflows.
- Failure mode: Missing color profile β use default sRGB; corrupted profile β revert to unmanaged color rendering.
- Image Renderer (Format decoders, color profile lookup, graphics rendering API) β Decodes image pixel data and applies color transformations before display; handles all 90+ supported formats.
- Failure mode: Unsupported codec β error dialog; memory exhaustion on large files β user prompted or image downsampled.
- UI/Icon Layer (AnotherDimension-Ex icon set, UI framework) β Displays file icons in file browsers and tabs; provides visual feedback for image format types.
- Failure mode: Missing icon asset β fallback to generic file icon; icon render failure β blank placeholder.
πData flow
File SystemβFormat Managerβ User selects or drags image file; extension is extracted and matched against supported format registry.Format ManagerβImage Rendererβ Validated format triggers appropriate decoder selection; image bytes are streamed to renderer.Image RendererβColor Managerβ Renderer queries color space metadata from image (e.g., embedded ICC profile or color space tag) and requests matching profile.Color ManagerβAsset Store (Assets/Color Profiles/)β Profile lookup loads .icc file from RGB/ or CMYK/ subfolder and passes transformation matrix to renderer.Image RendererβUI/Displayβ Color-corrected pixel data is rendered to screen; file icon is looked up from Assets/Ext Icons/ and displayed in UI.Issue/PR TemplateβGitHub Issue/PR Creationβ User fills template from .github/ISSUE_TEMPLATE/ directory; structured data improves triage and developer communication.
π οΈHow to make changes
Add Support for a New Image Format
- Create a new .ico file in Assets/Ext Icons/AnotherDimension-Ex/ICO/ following the naming convention (FORMATNAME.ico) (
Assets/Ext Icons/AnotherDimension-Ex/ICO/) - Create the corresponding .psd source file in Assets/Ext Icons/AnotherDimension-Ex/PSD/ for future design modifications (
Assets/Ext Icons/AnotherDimension-Ex/PSD/) - Update the image format registry in the core viewer code to recognize the new extension and map it to its icon asset (
[core viewer codebase - not visible in file list])
Add Color Profile Support for a New Standard
- Place the ICC color profile file (.icc) in the appropriate subfolder: Assets/Color Profiles/RGB/ for RGB or Assets/Color Profiles/CMYK/ for CMYK (
Assets/Color Profiles/) - Register the profile path in the color management configuration module to make it available to the rendering pipeline (
[core viewer codebase - not visible in file list])
Update Issue/PR Templates for New Contribution Workflow
- Edit the relevant template file in .github/ISSUE_TEMPLATE/ (e.g., 01-bug.yml, 02-feature-request.yml) to add or modify required fields (
.github/ISSUE_TEMPLATE/) - Update .github/pull_request_template.md to reflect any new checklist items or contribution requirements (
.github/pull_request_template.md) - Review .github/ISSUE_TEMPLATE/config.yml to verify the template routing and help text are correctly configured (
.github/ISSUE_TEMPLATE/config.yml)
π§Why these technologies
- ICC Color Profiles (.icc files) β Essential for professional-grade color accuracy across CMYK and RGB color spaces; supports industry-standard print and display standards.
- File Extension Icons (AnotherDimension-Ex set) β Provides visual differentiation for 90+ supported image formats; improves UX by making file types instantly recognizable in the UI.
- GitHub Issues/PR Templates β Standardizes contribution quality and ensures bug reports include reproducible steps; reduces maintenance overhead and improves issue triaging.
βοΈTrade-offs already made
-
Bundling 90+ file extension icons in the repository
- Why: Enables offline availability and guaranteed icon consistency with the viewer release.
- Consequence: Increases repository size and build artifact footprint; requires manual updates when new formats are added.
-
Including color profiles for multiple print standards (FOGRA, Japan Color, SWOP)
- Why: Supports global professional workflows without requiring users to manually install profiles.
- Consequence: Adds asset weight and complicates color management configuration; may confuse users with many profile choices.
-
Lightweight image viewer design (inferred from README)
- Why: Targets users wanting fast, responsive image browsing without bloated features.
- Consequence: May lack advanced editing or batch-processing features; positioned as viewer-only, not editor.
π«Non-goals (don't propose these)
- Does not provide image editing capabilities (crop, filter, transform)
- Does not handle authentication or cloud storage integration
- Not a batch image processing or conversion tool
- Does not include advanced metadata editing beyond EXIF viewing
- Not a real-time collaborative tool
β οΈAnti-patterns to avoid
- Hardcoded Icon Asset Paths (Medium) β
Assets/Ext Icons/AnotherDimension-Ex/ICO/ (inferred usage in viewer core): If format-to-icon mappings are hardcoded in the main viewer code rather than using a registry or configuration file, adding new formats requires code changes instead of simple asset additions. - Incomplete Color Profile Coverage (Low) β
Assets/Color Profiles/ (missing profiles): If users frequently encounter images in color spaces not covered by bundled profiles (e.g., Lab, DCI-P3, Rec. 2020), the viewer falls back to poor color management. - No Profile Validation at Build Time (Medium) β
Assets/Color Profiles/: ICC profile files are not validated during the build process; corrupted or malformed .icc files could cause runtime failures only when users select that profile.
π₯Performance hotspots
undefined(undefined) β undefined
πͺ€Traps & gotchas
Windows-only: entire codebase is Windows desktop (WinForms/WPF); cross-platform builds will fail. ICC profile path assumptions: Color Profiles must be deployed with app or embedded in resources; missing profiles silently degrades color accuracy. Explorer integration: file type association via registry; requires admin on fresh install. Format decoder dependencies: exotic formats (JXL, HEIC) may require specific codec libraries (libjxl, HEIF library) as native dependenciesβcheck build scripts. v10 migration: breaking changes from v9 may affect plugins/extensions; check migration guide if extending.
ποΈArchitecture
π‘Concepts to learn
- ICC Color Profiles β ImageGlass bundles 22 ICC profiles (CMYK, RGB variants) to handle professional color-managed workflows; understanding color space conversion (sRGB β AdobeRGB β CMYK) is essential to this app's value
- Windows Picture Format (WIC) / GDI+ β Core Windows APIs for image decoding; ImageGlass likely uses WIC for native formats and wraps third-party decoders for exotic ones
- File Type Associations via Registry β ImageGlass integrates into Explorer context menu; requires HKEY_CLASSES_ROOT registry edits, shell verb registration, and correct CLSID handling on install
- RAW Codec Support β App supports 40+ camera RAW formats (CR2, ARW, DNG, etc.); requires either Windows Camera Codec Pack, WIC extensions, or bundled native decoders
- Icon Resources (.ico) Bundling β Assets/Ext Icons/ contains 100+ .ico files for format detection; proper icon registration improves Explorer UX and sets ImageGlass apart from generic viewers
- MSIX/AppX Packaging β Distributes via Microsoft Store as MSIX; requires understanding app signing, capability declarations, and sandboxing constraints vs classic .exe
- Drag-and-Drop File Handling β Core UX pattern in image viewers; WinForms/WPF implementation must handle multiple file types, folder drops, and async loading without blocking UI
πRelated repos
faststone/FastStone-Image-Viewerβ Direct alternative image viewer for Windows with similar lightweight philosophy; if FastStone were open-source, would be main competitornomacs/nomacsβ Open-source cross-platform image viewer (C++) with color management; shows different architecture approach (Qt instead of WPF)ShareX/ShareXβ Windows screenshot/screen recording tool with image annotation; shares WinForms/C# stack and Explorer integration patternsImageMagick/ImageMagickβ Command-line image processing engine; ImageGlass likely wraps or uses equivalent codecs for format handlinglibjxl/libjxlβ JPEG XL codec library; ImageGlass supports JXL format, likely uses this decoder under the hood
πͺPR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add CI/CD workflow for color profile validation and ICC file testing
The repo contains 14+ ICC color profile files (CMYK and RGB) in Assets/Color Profiles/ but there's no automated validation that these files are valid, not corrupted, and properly formatted. A GitHub Action could validate ICC profile integrity on every commit, preventing accidental corruption of these critical assets that affect image rendering accuracy.
- [ ] Create .github/workflows/validate-color-profiles.yml workflow
- [ ] Add a validation script (e.g., in Python or C#) that checks ICC file headers and structure integrity
- [ ] Test against all files in Assets/Color Profiles/CMYK/ and Assets/Color Profiles/RGB/
- [ ] Fail the workflow if any profile is invalid or corrupted
- [ ] Document the validation approach in CONTRIBUTING.md
Create asset inventory system and CI check for extension icon completeness
The Assets/Ext Icons/AnotherDimension-Ex/ICO/ directory contains 50+ file format icons but there's no validation ensuring all supported image formats have corresponding icons, or that newly supported formats get icons added. A contributor could build a registry mapping supported formats to their icons and enforce it in CI.
- [ ] Create a JSON/YAML manifest file listing all supported image formats and their icon file requirements
- [ ] Add a validation script that checks if every format in the manifest has a corresponding .ico file
- [ ] Integrate this check into a GitHub Action (e.g., .github/workflows/validate-icons.yml)
- [ ] Update any format support lists to reference this manifest
- [ ] Document how to add icons for new formats in CONTRIBUTING.md
Add GitHub Action workflow for localization file synchronization with Crowdin
The README references Crowdin for localization (indicated by the incomplete Crowdin badge URL), but there's no visible automation ensuring translations stay in sync with the codebase. A new contributor could set up a workflow that syncs source strings to Crowdin and imports completed translations back into the repo on a schedule or trigger.
- [ ] Create .github/workflows/crowdin-sync.yml workflow file
- [ ] Configure Crowdin API integration using repository secrets for API token
- [ ] Add steps to upload source language strings (identify where these are defined in the codebase)
- [ ] Add steps to download completed translations back to the appropriate directory
- [ ] Set up scheduled runs (e.g., daily or on release) and manual trigger option
- [ ] Document the translation workflow in CONTRIBUTING.md
πΏGood first issues
- Add AVIF codec support to format list: extend Assets/Ext Icons/ with AVIF.ico and document decoder integration pathβhigh visibility, helps users on modern web
- Create test coverage for color profile loading: write unit tests for ICC profile parsing (CMYK/RGB files in Assets/) to catch profile corruptionβcurrently no visible test directory
- Document Explorer sort order preservation feature in /docs: README mentions "Explorer sort order" as differentiator vs Store version but no user guideβgood docs PR for new contributors
βTop contributors
Click to expand
Top contributors
- @d2phap β 94 commits
- @ThingOfNull β 3 commits
- @nomoemptypointer β 2 commits
- @Poley4229 β 1 commits
πRecent commits
Click to expand
Recent commits
cf49863β updated npm packages + fixed type errors (d2phap)bae7871β updated nuget (d2phap)9c2dec6β Merge pull request #2298 from ThingOfNull/feature/auto-switch-sibling-directory (d2phap)93f435dβ Merge pull request #2299 from Poley4229/develop (d2phap)74b2067β Create pull request template (d2phap)9e40d98β Delete pull_request_template.md (d2phap)301c89aβ create PR template (d2phap)47ada11β added CLA (d2phap)a387e4bβ update nuget (d2phap)61baf9aβ Update README (d2phap)
πSecurity observations
ImageGlass appears to be a desktop image viewer application with a reasonable security posture based on available information. No critical vulnerabilities were identified in the visible file structure. However, the analysis is limited due to missing dependency manifests and source code files. Key areas for improvement include: (1) providing dependency manifests for automated vulnerability scanning, (2) strengthening the security disclosure policy with clear contact information, and (3) ensuring regular dependency updates are applied. The codebase follows good practices by maintaining a SECURITY.md file and using version-based support policies. For a complete security assessment, review of actual source code for injection vulnerabilities, input validation, and secure file handling would be necessary.
- Medium Β· Incomplete Security Policy β
SECURITY.md. The SECURITY.md file indicates that versions β€ 8.12 are no longer supported with security updates. Users on older versions may be vulnerable to known security issues without access to patches. Fix: Ensure clear communication to users about upgrade paths. Consider providing security advisories for known vulnerabilities in unsupported versions. Maintain a vulnerability disclosure process. - Low Β· Missing Dependency Manifest β
Root directory / Package management files. No package dependency file (package.json, .csproj, .cargo, requirements.txt, etc.) was provided in the analysis. This prevents verification of third-party dependency vulnerabilities. Fix: Provide dependency manifests for analysis. Implement automated dependency scanning using tools like Dependabot, Snyk, or OWASP Dependency-Check to identify vulnerable packages. - Low Β· No Evidence of HTTPS/TLS Configuration β
Infrastructure / Application code. While this is a desktop application (not a web service), if it communicates with remote servers or downloads resources, HTTPS enforcement should be verified. Fix: If the application fetches remote resources (updates, images, etc.), ensure all communications use HTTPS/TLS. Implement certificate pinning for critical connections. - Low Β· Missing Security Headers Configuration β
Infrastructure / Configuration files. No evidence of security headers configuration visible in the repository structure. If the application serves any web content or has a web-based component, security headers should be implemented. Fix: If applicable to the application architecture, implement standard security headers (CSP, X-Frame-Options, X-Content-Type-Options, etc.).
LLM-derived; treat as a starting point, not a security audit.
πWhere to read next
- Open issues β current backlog
- Recent PRs β what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals β see the live page for receipts. Re-run on a new commit to refresh.