[Windows app] Source-only project changes leave Save disabled until metadata changes
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
App version
Microsoft Store package OpenAI.Codex 26.901.6511.0; desktop application 26.901.51231.
Subscription
Pro 20×
Platform
Windows 11 x64.
Issue and reproduction
- Open an existing ChatGPT project's settings.
- Add or delete a reference file and wait for the operation to finish.
- Leave the name and other metadata unchanged.
Save remains disabled. Changing the project name makes it available. Expected: successful reference-file changes should count as a change, with Save unavailable while a file operation is pending.
Root cause in the distributed client
The native project form u2n calculates its save eligibility from metadata fields such as name, icon, theme, and instructions, but excludes source uploads and deletions. Those source operations already persist through separate APIs, so this report is about inconsistent dialog state, not proof that uploaded files were lost.
The local repair tracks successful source mutations per dialog, counts concurrent pending operations, and includes that state in the existing save predicate. Failures retain the native error path. The existing metadata writer already skips unchanged fields; file-only Save therefore does not issue a redundant rename or overwrite project metadata.
Validation
Six tracker tests and twelve tests executing the full form and native writer cover upload/delete success, failures, concurrent deletions, pending saves, reentry, unmounts, invalid names, permissions, and metadata-only changes. The user confirmed that reference-file changes can now be saved without changing the name.
Entry points: assets/local-project-settings-v1.mjs, tests/project-sources.mjs, and tests/project-settings.mjs.
Reproducible implementation
Complete English source, English release, and upstream evidence guide. The original project is wjtianze/codex-desktop-repair; its main branch remains in Chinese.
The package contains checked patch fragments and synthetic regression cases, not complete proprietary client bundles or account data. Both language editions passed 242 tests: 76 portable cases and 166 cases executing functions extracted from the supported official app. This is a local repair and evidence submission, not an official source merge.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with assets/local-project-settings-v1.mjs and trace the save eligibility state for successful, pending, and failed source operations. Run tests/project-sources.mjs and tests/project-settings.mjs, including the concurrent-operation and reentry cases. Done means successful reference-file changes enable Save without metadata changes, while pending or failed operations preserve the existing behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 38/100