Skip to content

feat: add icon and icon_color fields to Place proto #1

@MarkCesium

Description

@MarkCesium

Context

Place currently has no visual identity beyond its name. On the frontend this is filled by a deterministic colored-initial placeholder (PlaceAvatar in the frontend repo). We want users to pick a curated icon (from a Lucide preset) and a palette color per place, persisted server-side so the choice follows the user across devices.

This issue covers only the contracts side. Backend and frontend changes are tracked in sibling issues.

Changes

Extend contracts/proto/places.proto with two optional string fields on:

  • CreatePlaceRequest
  • GetPlaceResponse
  • PlaceSummary
  • UpdatePlaceRequest

Fields:

  • icon — curated key string (e.g. home, building, warehouse). Kept as an opaque string for forward-compatibility; the frontend maps it to a Lucide component. Do not hardcode an enum server-side.
  • icon_color — palette key string (e.g. blue, green). Never a hex — palette is defined in the frontend CSS variables for proper light/dark theme support.

Bump contracts/pyproject.toml to the next minor version and push. Follow the standard contracts update workflow from the root CLAUDE.md.

Acceptance

  • Proto updated, version bumped, CI publishes to PyPI.
  • No Kafka event changes: icons are UI metadata; consumers (devices, collector) do not need them.

Blocks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions