{"id":25452988,"url":"https://github.com/aurelitec/injuredpixels","last_synced_at":"2026-02-18T22:06:39.303Z","repository":{"id":217203860,"uuid":"80097923","full_name":"aurelitec/injuredpixels","owner":"aurelitec","description":"InjuredPixels (for Windows) can help you check your PC, laptop or tablet screen for dead pixels, scratches or defects.","archived":false,"fork":false,"pushed_at":"2026-02-17T21:42:12.000Z","size":142,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-18T03:28:43.881Z","etag":null,"topics":["csharp","dead-pixel","defects","dotnet","lcd","pixel","screen","test","windows"],"latest_commit_sha":null,"homepage":"https://www.aurelitec.com/injuredpixels/windows/","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aurelitec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-01-26T08:37:36.000Z","updated_at":"2026-02-17T21:42:15.000Z","dependencies_parsed_at":"2024-01-15T01:55:47.163Z","dependency_job_id":"362932de-419d-4372-a7dc-c765bf69ebd1","html_url":"https://github.com/aurelitec/injuredpixels","commit_stats":null,"previous_names":["aurelitec/injuredpixels-windows","aurelitec/injuredpixels"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aurelitec/injuredpixels","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurelitec%2Finjuredpixels","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurelitec%2Finjuredpixels/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurelitec%2Finjuredpixels/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurelitec%2Finjuredpixels/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aurelitec","download_url":"https://codeload.github.com/aurelitec/injuredpixels/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurelitec%2Finjuredpixels/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29596382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T20:59:56.587Z","status":"ssl_error","status_checked_at":"2026-02-18T20:58:41.434Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dead-pixel","defects","dotnet","lcd","pixel","screen","test","windows"],"created_at":"2025-02-17T23:42:03.827Z","updated_at":"2026-02-18T22:06:39.297Z","avatar_url":"https://github.com/aurelitec.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InjuredPixels\n\n[![Version badge](https://img.shields.io/github/v/tag/aurelitec/injuredpixels?color=forestgreen\u0026label=version)](https://github.com/aurelitec/injuredpixels/releases)\n[![PWA Installable badge](https://img.shields.io/badge/-installable-5A0FC8?logo=pwa)](https://injuredpixels.aurelitec.com/)\n[![MIT License badge](https://img.shields.io/github/license/aurelitec/injuredpixels?color=9c0000)](LICENSE)\n[![GitHub Code Size badge](https://img.shields.io/github/languages/code-size/aurelitec/injuredpixels)](https://github.com/aurelitec/injuredpixels)\n[![Style badge](https://img.shields.io/badge/style-Dart_lints-4BC0F5.svg)](https://pub.dev/packages/lints)\n[![Contributions Welcome badge](https://img.shields.io/badge/contributions-welcome-cornflowerblue)](#contributions)\n[![Downloads from GitHub Releases](https://img.shields.io/github/downloads/aurelitec/injuredpixels/total)](https://github.com/aurelitec/injuredpixels/releases)\n\nInjuredPixels helps you check your screen for dead, stuck, or hot pixels on LCD and OLED displays.\n\nUse it to test a new monitor before purchasing, or during the warranty period - you may qualify for a replacement under the manufacturer's dead pixel policy. InjuredPixels fills the entire screen with a solid color, allowing you to inspect every pixel for defects.\n\nInjuredPixels runs in any modern browser - on desktop, laptop, tablet, or phone. Use it online, install it as a PWA, or download the portable version and run it directly from your filesystem.\n\n![InjuredPixels Screenshot](repo-assets/screenshots/injuredpixels-main-screenshot.png)\n\n## Features\n\n- **8 test colors** - Red, Green, Blue, Cyan, Magenta, Yellow, Black, White - covering RGB primaries, CMY secondaries, and extremes\n- **Fullscreen mode** - test edge pixels without browser chrome\n- **Keyboard shortcuts** - number keys (1-8), arrow keys, F for fullscreen, Space to toggle controls, ? for help\n- **Mouse and touch** - double-click/tap to cycle colors, right-click/long-press to toggle controls\n- **Works offline** - after the first visit, or from a portable ZIP\n- **Installable** - add to your home screen or desktop as a Progressive Web App\n- **Remembers your last color** - pick up where you left off\n\n## Quotes\n\n\u003e \"As hardware diagnostics applications go, then, InjuredPixels is just about as simple a program as you'll see. But it's also capable, effective and easy to use.\" (BetaNews)\n\n\u003e \"If you aren't exactly sure where your pixel problem is, you can use the aptly-titled InjuredPixels. This pixel detector allows you to blank out your screen in multiple colors to test the display.\" (Digital Trends)\n\n\u003e \"The interface is pretty slick for a simple dead pixel checker\" (Download3K: Excellent)\n\n\u003e \"Dead pixels can't escape from you now\" (Scroll Magazine)\n\n[More Reviews](https://www.aurelitec.com/injuredpixels/reviews/)\n\n## Use InjuredPixels\n\n**Web app** - Open [injuredpixels.aurelitec.com](https://injuredpixels.aurelitec.com/) in any modern browser. You can install it as a PWA for quick access and offline use.\n\n**Portable ZIP** - Download from [GitHub Releases](https://github.com/aurelitec/injuredpixels/releases). Extract the archive and open `InjuredPixels.html` in your browser - no server or installation needed.\n\n## Built with Dart\n\nInjuredPixels is written in [Dart](https://dart.dev/), compiled to JavaScript with [dart2js](https://dart.dev/tools/dart2js), and styled with [Tailwind CSS v4](https://tailwindcss.com/). The only runtime dependency is [`package:web`](https://pub.dev/packages/web) for browser API access - no frameworks, no virtual DOM, just direct DOM manipulation through typed browser APIs.\n\nThe application logic is ~500 lines of Dart across 7 files. Dart is a natural fit for this kind of web app:\n\n- **Top-level functions, no class boilerplate** - Controllers and services are library-level modules. Unlike Java or C#, Dart doesn't force everything into a class.\n- **Typed like TypeScript, concise like JavaScript** - Sound null safety and type inference catch errors at compile time, while arrow functions, closures, and first-class functions keep the code light.\n- **Natural DOM access** - `package:web` provides typed bindings to browser APIs that feel almost like writing vanilla JavaScript.\n- **Optimized output** - dart2js performs whole-program type inference and tree-shaking, producing compact JavaScript.\n\n## Build System\n\nThe build system is a set of small Dart scripts - about 300 lines total across 7 files. No Node.js, no bundler configuration - the same language is used for the app and its tooling.\n\n| Command | Description | Output |\n|---------|-------------|--------|\n| `dart run tool/dev.dart` | Start dev server with live reload | localhost |\n| `dart run tool/build_web.dart` | Build for web/PWA deployment | `build-web/` |\n| `dart run tool/build_portable.dart` | Build portable ZIP edition | `build-portable/` |\n| `dart run tool/clean.dart` | Delete all build outputs | - |\n\nThree standalone CLI tools handle the heavy lifting: [webdev](https://pub.dev/packages/webdev) compiles Dart to JavaScript, [Tailwind CSS CLI](https://tailwindcss.com/) processes the styles, and [minify](https://github.com/tdewolff/minify) handles HTML/JS minification for production builds.\n\n## Building from Source\n\n**Prerequisites:** [Dart SDK](https://dart.dev/get-dart) 3.11+, [webdev](https://pub.dev/packages/webdev), [Tailwind CSS standalone CLI](https://tailwindcss.com/blog/standalone-cli), and [minify](https://github.com/tdewolff/minify).\n\n```bash\ndart pub get                         # Install dependencies\ndart run tool/build_web.dart         # Web/PWA build → build-web/\ndart run tool/build_portable.dart    # Portable ZIP build → build-portable/\ndart run tool/dev.dart               # Start dev server with live reload\n```\n\nUse `dart analyze` to check code for errors and `dart format .` to format code.\n\n## History\n\nInjuredPixels started in 2009 as a Windows desktop application built with C# and .NET Framework Windows Forms, and was later released as a native Android app. For over 15 years, it was a popular free tool for testing LCD monitors.\n\nIn 2026, InjuredPixels was rewritten from scratch as a cross-platform Dart web app - replacing both the Windows desktop version and the Android native app. The new version runs on any device with a modern browser.\n\nThe original Windows Forms source code is available in the [`legacy/winforms`](https://github.com/aurelitec/injuredpixels/tree/legacy/winforms) branch. The last Windows release can be downloaded from [Aurelitec](https://www.aurelitec.com/injuredpixels/windows/download/).\n\n## Contributions\n\nContributions are welcome: code, text, documentation, design, graphics, suggestions. Please fork this repository and contribute back using [pull requests](https://github.com/aurelitec/injuredpixels/pulls), [submit an issue](https://github.com/aurelitec/injuredpixels/issues), or [send an email](https://www.aurelitec.com/support/).\n\n## License\n\nInjuredPixels is licensed under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faurelitec%2Finjuredpixels","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faurelitec%2Finjuredpixels","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faurelitec%2Finjuredpixels/lists"}