# town.chalky.config

> Published by [chalky.town](https://lexicon.garden/identity/did:plc:mthv22lb4hhaxupzjnqvijwk)

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:mthv22lb4hhaxupzjnqvijwk/town.chalky.config)
- [Documentation](https://lexicon.garden/lexicon/did:plc:mthv22lb4hhaxupzjnqvijwk/town.chalky.config/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:mthv22lb4hhaxupzjnqvijwk/town.chalky.config/examples)

## Definitions

### `town.chalky.config`

**Type**: `record`

A user's chalky.town configuration, stored once in the author's PDS repo at rkey `self`. Read right after sign-in to route task data — `dataMode` decides whether tasks live in the public PDS repo or in chalky.town's private per-DID store — and to restore theme/preferences across devices. The mode choice is currently sticky once set.

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `theme` | `string` | No | Preferred color mode. |
| `autoDone` | `boolean` | No | Mark a task done automatically once all its subtasks complete. |
| `dataMode` | `string` | Yes | Where the author's task records live. `public` = the author's own PDS repo (world-readable). `private` = chalky.town's per-DID private store, exportable on demand. |
| `carryOver` | `boolean` | No | Auto-roll incomplete past tasks onto today on load. |
| `createdAt` | `string` (datetime) | Yes |  |
| `updatedAt` | `string` (datetime) | Yes | Last edit; the last-write-wins clock for the config record. |
| `somedayOpen` | `boolean` | No | Whether the Someday drawer is expanded. |
| `sortStrategy` | `string` | No | How each day's tasks are auto-ordered. `none` keeps the manual drag order; `color` groups by the palette order (uncolored last); `completion` floats incomplete tasks up and sinks done ones by finish time; `color-completion` groups by color, then by completion within each group. |

## Raw Schema

```json
{
  "id": "town.chalky.config",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "dataMode",
          "createdAt",
          "updatedAt"
        ],
        "properties": {
          "theme": {
            "enum": [
              "light",
              "dark",
              "system"
            ],
            "type": "string",
            "description": "Preferred color mode."
          },
          "autoDone": {
            "type": "boolean",
            "description": "Mark a task done automatically once all its subtasks complete."
          },
          "dataMode": {
            "enum": [
              "public",
              "private"
            ],
            "type": "string",
            "description": "Where the author's task records live. `public` = the author's own PDS repo (world-readable). `private` = chalky.town's per-DID private store, exportable on demand."
          },
          "carryOver": {
            "type": "boolean",
            "description": "Auto-roll incomplete past tasks onto today on load."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime"
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime",
            "description": "Last edit; the last-write-wins clock for the config record."
          },
          "somedayOpen": {
            "type": "boolean",
            "description": "Whether the Someday drawer is expanded."
          },
          "sortStrategy": {
            "enum": [
              "none",
              "color",
              "completion",
              "color-completion"
            ],
            "type": "string",
            "description": "How each day's tasks are auto-ordered. `none` keeps the manual drag order; `color` groups by the palette order (uncolored last); `completion` floats incomplete tasks up and sinks done ones by finish time; `color-completion` groups by color, then by completion within each group."
          }
        }
      },
      "description": "A user's chalky.town configuration, stored once in the author's PDS repo at rkey `self`. Read right after sign-in to route task data — `dataMode` decides whether tasks live in the public PDS repo or in chalky.town's private per-DID store — and to restore theme/preferences across devices. The mode choice is currently sticky once set."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
