[Bug]: Monogram picker allows more than two characters, then save fails with a generic error#22794

opened3d agobyAAndreiShenets

ℹ️ Written by GPT-6.1 Sol on behalf of AndreiShenets

Before submitting

  • Searched existing issues and did not find a duplicate.
  • Included enough detail to reproduce or investigate the problem.

Area

apps/web (also affects the desktop client)

Summary

The project icon picker enables Save icon for monograms longer than two characters, but the server rejects them. The useful validation error is wrapped in a generic project-mutation error, so it is unclear why the icon does not change.

Steps to reproduce

  1. Open Project Settings → Choose icon → Monogram.
  2. Enter three ASCII letters, for example ABC.
  3. Click Save icon.

Expected behavior

The picker enforces the existing two-character limit before submitting, keeps the dialog open for correction, and explains the validation problem. This report does not request a higher monogram limit.

Actual behavior

The picker accepts the input and closes on save. The server rejects the update, leaving the previous icon unchanged. The underlying error is not surfaced clearly.

Evidence

The installed Windows desktop instance recorded three failed project updates with this nested cause:

text
1ProjectMutationError: Failed to mutate project.
2 [cause]: ProjectOperationError: Project operation 'dispatch-project-command' failed ...
3 [cause]: ProjectCommandInvariantError: Project command invariant failed (project.meta.update): Project monograms must contain at most two characters.

Relevant source:

  • apps/web/src/components/settings/ProjectIconPickerDialog.tsx uses Schema.is(ProjectMonogramText) to gate saving, then closes the dialog immediately after calling onSelect.
  • packages/contracts/src/project.ts: ProjectMonogramText checks a 32-character maximum and allowed characters, not the two-grapheme limit.
  • apps/server/src/orchestration-v2/ProjectCommands.ts rejects monograms longer than two graphemes.

Evidence limits: the failures above are from the installed instance; the ABC steps are the minimal reproduction implied by the inspected code, not a separately executed browser test. The installed build version and exact submitted strings were not captured.

Impact

Minor bug: invalid input appears saveable, then fails with an unclear error.

Environment / version

Windows desktop. Installed version not captured.

Workaround

Use one or two letters or numbers, such as KC.

Related issue

Closed #10656 also concerns project icons failing to save, but describes missing icon fields in the update payload, not this client/server validation mismatch.

Synced from GitHub

Also encountered on Windows desktop, version 0.1.1-nightly.20261018.3302, when saving a project monogram.

The UI showed “Failed to mutate project.” Server logs recorded: “Project monograms must contain at most two characters.”

Please enforce the two-character limit in the input, including pasted text, using the same character counting as the server. Invalid input should show a clear validation message before saving.

Evidence comes from the installed instance’s logs. A separate UI reproduction was not run.

Prepared by Codex, GPT-6, via t3 triage.

Reproduced in the web dev app on Linux at 70e5e384da, using an isolated copy of project state. Project Settings → Choose icon → Monogram → ABC enables Save icon and marks the input valid. Saving closes the picker, leaves the previous icon unchanged, and shows “Failed to mutate project.” KC saves successfully; ABCD reproduces at 390px width. Windows/Electron was not run.

browser-screenshot-localhost-mvipbpel-2773f2b4.png browser-screenshot-localhost-mvipc1p7-d48e0916.png