<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv" -->

---
title: Mea Culpa – Dark Hours | daily.dev
description: A developer publicly apologizes after discovering that a web app they built using Claude closely resembled an existing open-source project called DarkHours.app...
canonical: https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Mea Culpa – Dark Hours | daily.dev
og:description: A developer publicly apologizes after discovering that a web app they built using Claude closely resembled an existing open-source project called DarkHours.app...
og:url: https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv
og:image: https://api.daily.dev/og/posts/LsxzPOgxV.png
og:image:alt: Mea Culpa – Dark Hours
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Mea Culpa – Dark Hours

**[Hacker News](https://daily.dev/sources/hn)** · 2 min read · 14 upvotes · 3 comments

## Summary

A developer publicly apologizes after discovering that a web app they built using Claude closely resembled an existing open-source project called DarkHours.app — including reproducing a bug the original author had already fixed. The author redirected their domain to the original project, cancelled plans for an iOS app, and committed to not using AI to generate full projects going forward. The post serves as a cautionary tale about the risks of vibe coding without verifying originality.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.terrygodier.com/2026/08/09/mea-culpa-dark-hours.html>

## Questions this post answers

### Can AI coding tools like Claude accidentally reproduce existing open source projects?

Yes — a developer building a night-sky visibility web app with Claude unknowingly reproduced an existing open source project called DarkHours.app so closely that the AI even replicated a bug the original author had already fixed. The developer had never seen the original project, but the AI-generated output was strikingly similar in features and name, raising serious questions about due diligence when vibe coding.

_Developers shipping AI-generated projects track incidents like this on daily.dev to avoid the same pitfall._

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 99 comments across hackernews (as of 2026-09-14).

**TL;DR:** The community is overwhelmingly skeptical of the developer's claim that Claude accidentally reproduced an existing open-source project bug-for-bug and name-for-name, viewing the 'AI did it' excuse as a cover-up layered on top of a broader pattern of deception that already forced John Gruber to issue his first-ever retraction in 25 years.

**Sentiment:** 5% positive · 15% mixed · 80% skeptical

**The case for**

- The developer did redirect his domain to the original project and cancelled his iOS app plans, which some see as at least a partial corrective action.
- A few commenters note that the broader point about AI-generated code lacking originality checks is a real and valid concern worth discussing.

**The pushback**

- Commenters find it implausible that Claude would independently reproduce the same project name, same branding, and the same highly specific bug without being explicitly directed to do so.
- The apology is widely read as a 'limited hangout' — admitting just enough to deflect from the more serious deception: misleading John Gruber into writing a now-retracted article about Apple's App Store review process.
- The original controversy involved an astrology app being rejected, not an astronomy app, and the developer allegedly omitted that key fact when pitching the story to Gruber.
- Commenters argue that blaming an AI tool for one's own publishing decisions sets a dangerous precedent for accountability, comparing it to politicians claiming they were 'hacked.'
- The identical bug reproduction is seen as particularly damning, as LLMs are not deterministic and would not recreate a unique bug from a specific repo without being pointed to it.
- The developer's credibility is further undermined because he reportedly reviewed Gruber's article before publication without correcting the misleading framing.

**By community**

- hackernews (skeptical): Commenters are broadly unconvinced by the 'Claude did it' explanation, view the post as damage control after a multi-layered deception unraveled, and are particularly focused on the Gruber retraction as the more serious underlying issue.

**Hottest debate:** Whether Claude could have plausibly reproduced another project's name, branding, and a unique bug entirely on its own, or whether the copying was intentional and the AI is being used as a scapegoat.

**Open questions**

- Can the developer produce Claude session history or commit logs to verify the AI-generated-clone claim?
- Was an updated astronomy app build ever actually submitted to Apple for review, or was the App Store rejection story fabricated around the wrong app?
- How did the cloned project end up with the same highly specific bug if Claude was generating code independently?

**Highlights**

> On the previous HN posts I got this impression: The developer's astrology app containing tarot reading features was rejected from Apple's App Store that prohibits astrology apps. He then replaced the app's content with a clone of, if not the identical open source astronomy app "Dark Hours", copying even the name. The original is here: https://darkhours.app The developer was then in contact with John Gruber, who wrote an article claiming Apple's reviewers confuse a nice, scientific astronomy app with astrology. The developer reviewed the article before publication. It then turned out that the developer forgot to mention that originally he did upload an astrology app for review. Gruber felt duped, and noted that it's unclear whether an updated build containing the new astronomy app was ever submitted to Apple for review: https://daringfireball.net/2026/08/retraction_app_store_reje... Now the developer seems to claim that he merely accidentally cloned that open source app when working with Claude. I am not buying it.
> — [user43928 on hackernews · 9 comments](https://news.ycombinator.com/item?id=49231407)

> > It then turned out that the developer forgot to mention that originally he did upload an astrology app for review. Gruber felt duped, and noted that it's unclear whether an updated build containing the new astronomy app was ever submitted to Apple for review I think it’s clear that he didn’t “forget” to mention it. This was an intentional play for attention. It worked very well. Too well, in fact, which drew enough eyes on to the situation to start noticing the cracks in his story. A key part of the Gruber retraction article is that Apple rejected a different app named Asterly. He then copied the Dark Hours app, including the name, from someone else and tried to imply that was the app at the center of the controversy. If he had actually written his own astronomy app and swapped it into the story he may have gotten away with it. Doing the wholesale copying of someone else’s work, including the name of the project and stripping the license in the process, is what got him caught. App Store rejection stories are always popular. I see at least one post a month on Hacker News from an app developer trying to get attention because their app was rejected and it usually receives moderate social media attention. I think this person saw an opportunity to ride that anger for some personal publicity and went for it. He flew too close to the sun and got too much attention, though, so his mistruths were revealed. Now he’s trying some CYA techniques because the original ruse backfired.
> — [Aurornis on hackernews](https://news.ycombinator.com/item?id=49232103)

> This is the Bluesky thread that Gruber linked where the original author calls out the copy: https://bsky.app/profile/mmmeh.bsky.social/post/3mslc3b3u4c2... You can trace back to the original repo from that thread. The key points are that the copy had 1. The same name. One was "Dark Hours" and the other was "DarkHours". 2. The same highly specific bug. I didn't investigate closely but from the description the bug sounds too unique to have been identically created in a fresh Claude-style duplication. The duplicated name is the most damning part to me. I've never tried to copy a project with Claude, but I can't imagine the sequence of events that would lead to Claude copying the name of a repo but going to lengths to disguise other things like stripping the license. This all seems highly intentional, like someone thought it would never be noticed.
> — [Aurornis on hackernews](https://news.ycombinator.com/item?id=49232437)

> Fun and useful PR jargon to describe what this post smells like: a “limited hangout”. (a damage-control strategy where an organization or individual admits to a portion of a secret or scandal after a cover story fails, while still hiding the most damaging key facts.)
> — [pohl on hackernews · 2 comments](https://news.ycombinator.com/item?id=49231571)

> The thing that stands out to me with all of this is how little accountability there is left within the field. Published a rip-off? "Sorry, Claude must have done this".  Published a shitty/wrong/insensitive/<insert other adjectives here> post somewhere? "Sorry, the AI wrote it" Regardless of how we view LLMs as a whole, if you produce content with AI and publish it, you personally own every line of what you published. "Claude did it" cannot ever be a valid excuse.
> — [NikxDa on hackernews · 2 comments](https://news.ycombinator.com/item?id=49231889)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=49231154) · 205 points · 99 comments

## Community discussion

Top comments from developers on daily.dev.

**@rubenheymans** · 2 upvotes

> so this is just an ad or what?

## Similar posts on daily.dev

- [Copyright Walls Demolished by Vibe Coding, and the Developer's New Moat -- Fatbobman's Swift Weekly \#131](https://daily.dev/posts/copyright-walls-demolished-by-vibe-coding-and-the-developer-s-new-moat----fatbobman-s-swift-weekly--rlbbtmi1z) · Fatbobman · 3 upvotes · 0 comments
- [I keep finding vibe coded apps that leak user data, and I'm not even looking for it](https://daily.dev/posts/i-keep-finding-vibe-coded-apps-that-leak-user-data-and-i-m-not-even-looking-for-it-74ydqzotl) · XDA Developers · 4 upvotes · 0 comments
- [Aaron \(@aaronp613\)](https://daily.dev/posts/aaron-aaronp613--nfzfo0gau) · Hacker News · 0 upvotes · 0 comments

---

Tags: [#open-source](https://daily.dev/tags/open-source), [#ai-coding](https://daily.dev/tags/ai-coding), [#claude](https://daily.dev/tags/claude), [#vibe-coding](https://daily.dev/tags/vibe-coding)

[View this post on daily.dev](https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Mea Culpa – Dark Hours","url":"https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv"},"datePublished":"2026-08-09T14:14:16.159Z","dateModified":"2026-09-14T09:12:18.221Z","description":"A developer publicly apologizes after discovering that a web app they built using Claude closely resembled an existing open-source project called DarkHours.app...","image":"https://media.daily.dev/image/upload/s--CxzD6vbw--/f_auto/v1722860399/public/Placeholder%2005","thumbnailUrl":"https://media.daily.dev/image/upload/s--CxzD6vbw--/f_auto/v1722860399/public/Placeholder%2005","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":3,"discussionUrl":"https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":14},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":3}],"keywords":"open-source,ai-coding,claude,vibe-coding","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Mea Culpa – Dark Hours"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv","comment":[{"@type":"Comment","text":"so this is just an ad or what?","datePublished":"2026-08-10T05:25:43.471Z","url":"https://daily.dev/posts/LsxzPOgxV#c-2NzFPLAqJ","author":{"@type":"Person","name":"Ruben Heymans","url":"https://daily.dev/rubenheymans","image":"https://lh3.googleusercontent.com/a/ACg8ocKNcAZIX4GYctHk4--q2ol4ZoTK1quHuiRYdyXJ1DFwo3856lox=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/mea-culpa-dark-hours-lsxzpogxv#faq","mainEntity":[{"@type":"Question","name":"Can AI coding tools like Claude accidentally reproduce existing open source projects?","acceptedAnswer":{"@type":"Answer","text":"Yes — a developer building a night-sky visibility web app with Claude unknowingly reproduced an existing open source project called DarkHours.app so closely that the AI even replicated a bug the original author had already fixed. The developer had never seen the original project, but the AI-generated output was strikingly similar in features and name, raising serious questions about due diligence when vibe coding. Developers shipping AI-generated projects track incidents like this on daily.dev to avoid the same pitfall."}}]}
```

