Codetations: Intelligent, Persistent Notes and UIs for Programs and Other Documents
Edward Misback, Erik Vank, Zachary Tatlock, Steven Tanimoto
TL;DR
Codetations addresses the problem of missing, duct-taped programming context by introducing document-external, semantically anchored annotations that persist through code evolution. Implemented as a VSCode extension, the system uses real-time edit tracking and LLM-assisted reattachment to keep annotations in sync, while offering interactive annotation types that can execute or test code alongside the host document. A user study with nine participants shows non-intrusive annotations and robust code-tracking are highly valued, along with rapid generation of annotation types via LLM prompts. LLM evaluations indicate that contextual annotations substantially improve bug repair reasoning, though care must be taken to curate relevant context and avoid distraction from irrelevant data. Overall, Codetations demonstrates the feasibility and positive reception of persistent, developer-facing annotations that augment code understanding and AI-assisted development, with clear paths for scaling, language support, and richer annotation types.
Abstract
Software developers maintain extensive mental models of code they produce and its context, often relying on memory to retrieve or reconstruct design decisions, edge cases, and debugging experiences. These missing links and data obstruct both developers and, more recently, large language models (LLMs) working with unfamiliar code. We present Codetations, a system that helps developers contextualize documents with rich notes and tools. Unlike previous approaches, notes in Codetations stay outside the document to prevent code clutter, attaching to spans in the document using a hybrid edit-tracking/LLM-based method. Their content is dynamic, interactive, and synchronized with code changes. A worked example shows that relevant notes with interactively-collected data improve LLM performance during code repair. In our user evaluation, developers praised these properties and saw significant potential in annotation types that we generated with an LLM in just a few minutes.
