Security cleanup + /links page (self-hosted Linktree) - #52
Merged
Conversation
The Abdul-Moiz31 account was compromised and force-pushed forged copies of real commits (same message, author and date) to every branch on 2026-05-30, 2026-08-17, 2026-09-03 and 2026-09-08. The current tip 6492330 is a forged copy of the real PR #51 merge 875319d that hides an obfuscated loader after `export default config;` in postcss.config.mjs (it runs on every build) and adds attacker tooling entries to .gitignore. The first forgery, 2d5ed64, also removed `.env` and `.env.local` from .gitignore. Restore postcss.config.mjs to the clean config and .gitignore byte-for-byte to the legitimate commit 8d31f82. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Replicate every link from linktr.ee/DevWeekends on devweekends.com/links with a Linktree-style layout: avatar, bio, social icons and one pill button per link on the same dark theme. Thumbnails are downloaded, deduplicated and resized into public/links so the page does not depend on Linktree's CDN. The page renders without the site header and footer, like Linktree. The footer's Linktree icon now points to /links, and the route is added to the sitemap and llms.txt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Swap linktr.ee/DevWeekends for our own /links page on the careers page, the home page CTAs, README, CONTRIBUTING and the issue template contact link. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔒 Security: remove the injected payload
The
Abdul-Moiz31account was compromised. It force-pushed forged copies of real commits to every branch on 2026-05-30, 08-17, 09-03 and 09-08, keeping the original message, author and date. The currentmain(6492330) is a forged copy of the real PR #51 merge875319d. It does two things:export default config;inpostcss.config.mjs. The loader runs on everynext devandnext build, fetches its next stage through Ethereum RPC endpoints, and spawns a detachedchild_process.temp_auto_push.bat,temp_interactive_push.bat,branch_structure.json) to.gitignore.The first forgery (
2d5ed64, disguised as "feat: revert vps deployment") also removed.envand.env.localfrom.gitignore.The first commit in this PR restores
postcss.config.mjsto the clean 8-line config and restores.gitignorebyte-for-byte to the legitimate8d31f82. After that commit, the tree matches the real875319dexcept for the restored.gitignore.Don't run
npm install,npm run devornpm run buildon any checkout ofmainfrom before this PR is merged.Follow-ups outside this PR: rotate the Vercel env secrets, restore the other branches, and protect
mainagainst force-pushes.✨ Add /links (self-hosted Linktree)
Adds devweekends.com/links. Every link from linktr.ee/DevWeekends now lives on our own site.
app/links/page.tsx: a Linktree-style page with the avatar, bio, social icons (Instagram, YouTube, LinkedIn, Facebook, GitHub, Discord), the "Join our Communities" header and 51 pill buttons. It uses the same dark theme as our Linktree:#040404background,#444soft-shadow buttons, DM Sans.lib/links-data.ts: all links as typed data, in Linktree order. Adding or removing a link is a one-line change.public/links/: thumbnails downloaded from Linktree, deduplicated (51 → 36 files) and resized to 128px (~180 KB total). The page doesn't depend on Linktree's CDN.components/links-share-button.tsx: a share button in the corner (native share sheet, with clipboard fallback)./links, so it reads like a Linktree page./linksis added tositemap.tsandllms.txt./links: the footer icon, the careers "Share a Job" button, the home page CTAs, README, CONTRIBUTING and the issue-template contact link.I also fixed some content while copying: "Calander" → "Calendar", consistent title case ("DJANGO COMMUNITY" → "Django Community", "Vue js community" → "Vue.js Community", and so on), and trimmed trailing spaces. All URLs are unchanged.
Testing
I didn't build this locally, because we're not running repo code on dev machines during the incident. CI (
npm ci, lint, build) runs on this PR against the cleaned tree./linksrenders, each button opens the right link, and the share button works on mobile🤖 Generated with Claude Code