8000 feat(faces): name a namespace's unnamed faces in a row by adeelahmad · Pull Request #694 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(faces): name a namespace's unnamed faces in a row - #694

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-xfmkzn
Oct 19, 2026
Merged

adeelahmad merged 1 commit into
mainfrom
claude/project-thread-xfmkzn

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: faces found in videos could only be named one at a time from each video's People tab, so a namespace with many unnamed faces took many trips.

After: Settings → People has an Unnamed faces tab listing every face nobody has named yet, largest group first, with a few crops, the assets each appears in and a suggested name. The first name field has focus; Enter names the face and moves to the next, with Undo. A video's People tab links there. Agents get the same through GET /namespaces/{name}/faces/unnamed / MCP list_unnamed_faces and POST /faces/{fid}/name / MCP name_face.

Naming reuses rename, or merge when another face already carries that name, so the face joins that person; both undo.

Motivation and Context

Personal feature plan: name people across a library quickly.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change; ! in the title)

Checklist:

Done questions (AGENTS.md)

  • Goal: delivers what the user wanted, merged on green CI.
  • Agents: usable through the API and MCP (list_unnamed_faces, name_face).
  • Zero setup: no new prerequisite, .env edit or manual step.
  • Fewest clicks and keystrokes: first field focused, Enter names and advances, Undo instead of confirm.
  • Configurable: n/a, no new setting.
  • Light: no new dependency; reuses the existing face groups.
  • Private and secure: same namespace-member checks as rename/merge; no new outward surface.
  • Cost: no model calls.
  • User decides: names are only applied when the user enters them; defaults unchanged.
  • Upgrades: n/a, no stored-data shape change.
  • Honest: added to README built list with checks in docs/requirements.md.
  • Tests, docs and generated files updated (make openapi).
  • Open standards; no new dependencies.
  • Result reported with evidence; nothing left to refine.
  • Reuse: rename and merge paths reused.

Local CI: pytest tests/api/test_unnamed_faces.py tests/api/test_mcp.py (23 passed), ruff, mypy, jest name-faces.test.tsx (3 passed), tsc --noEmit, ci/check_requirements.py all clean; OpenAPI regenerated with no drift.


Generated by Claude Code

List the faces nobody has named yet, largest group first, with a few
crops, the assets each is in and a name to offer (GET
/namespaces/{name}/faces/unnamed, MCP list_unnamed_faces). Naming one
(POST /faces/{fid}/name, MCP name_face) reuses rename, or merge when
another face already has that name, so it joins that person; both undo.
Settings -> People gets an Unnamed faces tab where faces are recognised:
the first name field has focus, Enter names it and moves to the next,
with Undo; a video's People tab links to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QFUNzy1QZy5HhKAyJxTAYJ
@adeelahmad adeelahmad self-assigned this Oct 19, 2026
@adeelahmad
adeelahmad merged commit b1c274e into main Oct 19, 2026
12 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-xfmkzn branch October 19, 2026 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0