Skip to content

Feat: recognize face photo picker - #5795

Open
Luctia wants to merge 2 commits into
nextcloud:mainfrom
Luctia:feat/recognize-face-photo-picker
Open

Luctia wants to merge 2 commits into
nextcloud:mainfrom
Luctia:feat/recognize-face-photo-picker

Conversation

@Luctia

@Luctia Luctia commented Oct 22, 2026 •

Copy link
Copy Markdown

This PR is part of a three-PR implementation of #5245 and nextcloud/recognize#1285. It also largely addresses nextcloud/recognize#498 (contact photos do not seed clustering in this PR) and nextcloud/recognize#1412 (recognize gets no relation editor, but personally I'm not sure whether that is really the place for it anyway. Perhaps recognize could read out relations from contacts?).

Other PRs

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI (N/A)

I created this code with Claude Fable 5.1. I am a developer, but not in PHP or Vue. I reviewed the code and played with the new features in a local instance, and I think everything looks good.

@hamza221

Copy link
Copy Markdown
Contributor

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Head commit changed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

When the Recognize app announces its contact linking capability, the avatar
menu of a contact offers to pick a picture from the faces Recognize found.
The picker shows the faces of the person linked to the contact, or lets the
user pick the person first, which links them in Recognize. The picked face
goes through the usual cropper before it is saved.

Closes nextcloud#5245

Assisted-by: Claude Code:claude-fable-5-1
Signed-off-by: Luc Timmerman <luc.timmerman@afas.nl>
The avatar menu lists the recognized people linked to the contact, one
"Unlink from …" entry each, next to the entry that picks a face. Links
can therefore be undone where they are made in this app, instead of only
on the person page of the Photos app.

Assisted-by: Claude Code:claude-fable-5-1
Signed-off-by: Luc Timmerman <luc.timmerman@afas.nl>
@hamza221
hamza221 force-pushed the feat/recognize-face-photo-picker branch from 81baa2a to 823d0a2 Compare October 23, 2026 11:08
@hamza221

Copy link
Copy Markdown
Contributor

Rebased to fix CI, No code change submitted

@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown

Review in Change Stack →

✨ Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

tests/javascript/services/recognizeFaces.test.js

Oops! Something went wrong! :(

ESLint: 10.13.0

ReferenceError: module is not defined in ES module scope
This file is being treated as an ES module because it has a '.js' file extension and '/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
at file:///tests/.eslintrc.js?mtime=1792753688851:5:1
at ModuleJob.run (node:internal/modules/esm/module_job:561:25)
at async node:internal/modules/esm/loader:647:26
at async dynamicImportConfig (/.eslint-tmp/node_modules/.pnpm/eslint@10.13.0_supports-color@8.1.1/node_modules/eslint/lib/config/config-loader.js:185:17)
at async loadConfigFile (/.eslint-tmp/node_modules/.pnpm/eslint@10.13.0_supports-color@8.1.1/node_modules/eslint/lib/config/config-loader.js:275:9)
at async ConfigLoader.calculateConfigArray (/.eslint-tmp/node_modules/.pnpm/eslint@10.13.0_supports-color@8.1.1/node_modules/eslint/lib/config/config-loader.js:594:23)
at async #calculateConfigArray (/.eslint-tmp/node_modules/.pnpm/eslint@10.13.0_supports-color@8.1.1/node_modules/eslint/lib/config/config-loader.js:369:19)
at async Promise.all (index 0)
at async findFiles (/.eslint-tmp/node_modules/.pnpm/eslint@10.13.0_supports-color@8.1.1/node_modules/eslint/lib/eslint/eslint-helpers.js:637:25)
at async ESLint.lintFiles (/.eslint-tmp/node_modules/.pnpm/eslint@10.13.0_supports-color@8.1.1/node_modules/eslint/lib/eslint/eslint.js:1025:21)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Oct 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 8.38323% with 153 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
.../components/ContactDetails/RecognizeFacePicker.vue 0.00% 100 Missing ⚠️
...components/ContactDetails/ContactDetailsAvatar.vue 0.00% 47 Missing ⚠️
src/services/recognizeFaces.js 70.00% 6 Missing ⚠️

📢 Thoughts on this report? Let us know!

@hamza221 hamza221 changed the title Feat/recognize face photo picker Feat: recognize face photo picker Oct 23, 2026
@hamza221 hamza221 added the AI assisted This PR contains AI-assisted commits label Oct 23, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews AI assisted This PR contains AI-assisted commits enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants