> For the complete documentation index, see [llms.txt](https://docs.rowsncolumns.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rowsncolumns.app/configuration/features/comments.md).

# Comments

Spreadsheet supports Excel's **legacy comments** model — single-author notes with rich text + author metadata, anchored to a single cell. These map to OOXML `comments.xml` on round-trip.

Excel 2016+ **threaded comments** (with replies and resolved state, stored in `commentsThreaded.xml`) are not yet supported.

## Authoring a comment

A comment lives on `CellData.note` as plain text, or as a richer pointer via `commentThreadId` (reserved for the future threaded model). For the legacy single-author case, `note` is the field:

```ts
const cellData: CellData = {
  ue: { sv: "Q3 revenue" },
  fv: "Q3 revenue",
  note: "Includes the Atlas-2 contract — see slack #revenue for context.",
};
```

The renderer paints a small triangle marker in the cell's corner. Hovering shows the note.

## Round-trip

* **XLSX**: parsed from `xl/comments<N>.xml`, emitted on the way out. Author + creation timestamp preserved.
* **ODS**: parsed from `office:annotation` children of the cell node.

## Threading

Excel 2016 introduced threaded comments stored in `xl/threadedComments/threadedComment<N>.xml` — different file, different schema. These carry replies, resolved state, person IDs, and @mentions in the thread body.

Threading is currently a Tier-1 round-trip gap. Files that use threaded comments will:

* Import: the legacy comment shim (`comments.xml`) is still read; threaded replies + resolved state are dropped.
* Export: written as a flat legacy comment.

Track it on `docs/getting-started/excel-google-sheet-compatibility.md` under "Comments (threaded with replies)".

## Mentions in comments

For `@user` mentions inside notes / comments, see [Mentions](/configuration/features/mentions.md). Mentions work on the live cell editor; persistence into the threaded-comments OOXML store is part of the same gap above.
