HOME/DEVLOG

SYSTEM LOGS

Patch notes, feature updates, and developer logs. Stay informed about the latest changes to the Devception platform.

Editor stability: Yjs desync fixed + anti-grief guardrails

v0.3.4

Squashed the nastiest sync bug so far: undo operations could desync the shared document when they raced against remote updates. The fix defers undo until pending remote updates apply, and keeps remote edits out of your local undo stack. Also added a guardrail against low-effort griefing — normal typing is untouched, but sweeping multi-line deletes and copies are blocked in the shared editor.

Server-side socket protection + demo account seeder

v0.3.3

Hardened the real-time layer: privileged socket events are now validated server-side instead of trusting the client, and the login flow got a round of fixes. Also built a seeder for demo accounts so playtest lobbies can be spun up quickly without everyone needing to sign in with Google.

Content and SEO overhaul

v0.3.2

Rewrote the About page, replaced a set of generic blog drafts with fewer, longer, cited articles under a real byline, moved to a static sitemap with accurate lastmod dates, and cleaned up structured data. Less content, but all of it real — that trade was deliberate.

Cinematic landing experience

v0.3.1

The landing page became a game screen: illustrated pixel-art hero with parallax scrolling, a loading-console transition when you hit Play, and scroll-triggered animations throughout. Took several iterations of background sizing and stacking-context bugs to get the scene rendering right across viewports.

Conflict-free shared editor (Yjs CRDTs)

v0.3.0

Replaced the early "last write wins" sync with Yjs, a CRDT library, wired into the Monaco editor. Multiple people can now type on the same line without overwriting each other or fighting the cursor. This was the single hardest problem in the project and the change that finally made collaborative coding feel real.

Imposter balancing pass

v0.2.3

Tuned the social-deduction layer end to end: how much power sabotage should have, cooldown lengths, and the emergency-meeting flow with anonymous voting. Sabotage is intentionally subtle — the goal is plausible deniability, not screen-wrecking. Still actively balancing how strong an imposter should be.

Playtest hardening

v0.2.2

A batch of fixes straight from playtest sessions: per-user undo so you cannot revert a teammate’s work, test-case validation for mini tasks, protected code regions, proper disconnect handling, spectator mode for eliminated players, and a Python sandbox for the Run Code feature.

Test cases for the main problem

v0.2.1

The shared codebase now has real test cases, so "is the code fixed?" is decided by tests instead of vibes. Also fixed Monaco editor quirks, made the imposter cooldown shared across abilities, and improved game-end detection.

CodeCrew becomes Devception

v0.2.0

Renamed the project to Devception and shipped a big gameplay batch: unique per-player mini tasks with a task modal, the imposter’s fake-complete ability, expanded starter-code templates, and a proper game-over screen.

Monorepo + first real deploys

v0.1.1

Moved into a proper monorepo: Next.js client on Vercel, Socket.IO server on Railway, MongoDB Atlas for persistence. Added email/password auth for playtesting, configurable discussion and voting timers, and early vote-end when everyone has voted.

First playable build

v0.1.0

The first end-to-end loop, built as a weekend prototype before this repo existed: a lobby, random role assignment, a shared code editor, and real-time state over Socket.IO. Rough around the edges, but enough to play a full match start to finish. This devlog is where the real changes get written down.