feat: Enable file editing and saving#252
Conversation
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23616188660 Artifacts expire in 7 days. |
|
Does not implement the other file management features, e.g. create new, rename, delete. |
|
@jchadwick - Thanks for the PR |
|
I want you to perform the gatekeeper checks for latest PR state
|
|
I reviewed the latest PR state as a gatekeeper against What I understood: this PR adds editable file viewing plus save support for workspace files. I checked for regressions in the save flow, correctness of the server write path, and whether the implementation matches existing project patterns. Verdict: not ready to merge yet. I found a few user-facing correctness issues.
Verification notes:
Recommendation: fix items 1-3 before merge. After that, item 4 would be a nice cleanup if you want this to align better with the existing client architecture. -- |
|
@jchadwick - Can you please review the issues identified |
When switching files with unsaved changes, the previous implementation would always proceed to open the new file regardless of whether save succeeded. Now checks the save result and only proceeds if save was successful. If user cancels, clears dirty state before switching.
Also increases alert dialog z-index to appear above unpinned sidebar and adds writeWorkspaceFile helper to api-client for consistency.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23618242558 Artifacts expire in 7 days. |
- Use fixed positioning with transform for reliable centering - Remove wrapper div that was causing positioning issues - Add proper aria attributes to Dialog.Content
- Overlay: z-[60] - Content: z-[70] - Sidebar: z-40 - Backdrop: z-30
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23619879820 Artifacts expire in 7 days. |
|
@shantur fixed and ready. |
|
Do your thing again |
|
I reviewed the latest PR state again against What I understood: you wanted a fresh gatekeeper pass after the follow-up fixes, including the dialog layering change. I re-checked the previously reported save/refresh regressions, the new conflict detection flow, and the alert dialog behavior. Verdict: much better, but I still see one remaining correctness issue before merge.
Suggested fix:
What looks good now:
Verification notes:
Recommendation: fix the confirm-dialog dismiss-vs-discard behavior, then this should be in much better shape for merge. Side note: -- |
|
@jchadwick - Please check the new review |
…ia Escape/backdrop Add dismissible prop to AlertDialogState. When false, the dialog can only be closed via explicit button clicks (Confirm or Cancel), preventing Escape key or backdrop click from dismissing destructive confirmations. This fixes data loss where unsaved edits were discarded when users closed the save confirmation dialog without explicitly choosing 'Discard Changes'.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23622710761 Artifacts expire in 7 days. |
|
Do your thing again |
|
I reviewed the latest PR state again against What I understood: you wanted one more gatekeeper pass after the confirm-dialog dismissal fix. I re-checked the save/discard flows, the new Verdict: this looks good to merge. What changed correctly:
Gatekeeper result:
One non-blocking note:
From a gatekeeper/code-quality standpoint, I do not see anything left here that should stop merge. -- |
|
@jchadwick - Thanks for fixing the issues raised. It needs a few changes
Rest looks good. I will be happy to merge in |
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23718738352 Artifacts expire in 7 days. |
|
@shantur no problem, here's the fix: Also includes a bug fix for the dialog z-index so that it shows over the sidebars - was previously showing behind them. |
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23718822880 Artifacts expire in 7 days. |
|
BTW, this is pretty cool, using CodeNomad to code CodeNomad 😆 |
|
I want you to perform the gatekeeper checks for latest PR state
|
|
I reviewed the latest PR state again against What I understood: you wanted a fresh gatekeeper pass on the newest revision, especially the follow-up save-button UX tweak and dialog layering fix. I re-checked regressions in the file-editing flow, looked for better implementation choices, and reviewed the latest changes with a PR-gatekeeper mindset. Verdict: I still see 2 issues worth addressing before merge.
What still looks good:
Verification notes:
Non-blocking note:
Recommendation: fix the modal overlay stacking and add the missing locale keys, then I would be comfortable clearing this again. -- |
|
@jchadwick - Can you please review the issues identified by CodeNomadBot |
|
@shantur First issue is unfounded. The z-index is working fine with sidebar pinned and unpinned:
2: Do you want me to have AI generate the locale strings for those languages? |
|
Oh wait, I misunderstood. I guess that first image is what issue 1 is referring to... I'll take a look. |
Yes please |
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23719461524 Artifacts expire in 7 days. |
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/23719556852 Artifacts expire in 7 days. |
|
@shantur alright, both issues fixed. |
|
|
I reviewed the latest PR state again against What I understood: you wanted another gatekeeper pass after the two follow-up fixes from the previous review. I re-checked the latest delta specifically for the modal layering issue and the missing locale coverage, while also sanity-checking the existing file-editing/save flow for regressions. Verdict: the newly raised issues appear addressed, and I do not see any new blockers in this pass. What changed correctly:
Gatekeeper result:
Non-blocking note:
From a PR gatekeeper perspective, I do not currently see anything left here that should stop merge. -- |
|
Thanks @jchadwick |
## Thanks for contributions - PR #252 “feat: Enable file editing and saving” by @jchadwick - PR #256 “feat(ui): add session yolo mode controls” by @pascalandr - PR #257 “fix(tauri): sync native app version with package releases” by @pascalandr - PR #258 “fix(tauri): stop stale UI assets from shadowing desktop builds” by @pascalandr - PR #260 “fix(ui): escape raw HTML in user prompt messages” by @app/codenomadbot ## Highlights - **Edit and save files directly in CodeNomad**: Update workspace files in the built-in editor, save them without leaving the app, and get safer handling for unsaved changes or edit conflicts. - **More control over session automation**: Turn on per-session YOLO mode from the Status tab, keep it visible with a clear badge, and let long-running sessions continue auto-accepting prompts as expected. - **Better voice conversation options**: Use spoken summary mode for replies and keep conversation speech settings isolated per client, so one device’s voice preferences do not unexpectedly affect another. - **Faster session recovery**: Reload a session transcript from the sidebar and see when a session is retrying, including live status feedback. ## What’s Improved - **Smoother desktop setup**: Desktop builds now bundle the right CLI resources and handle microphone access more cleanly. - **More reliable cross-platform desktop behavior**: Windows process handling and npm invocation are safer, reducing environment-specific issues. - **Clearer session status visibility**: Retrying sessions now show more useful state in the sidebar and header, so it is easier to tell what is happening. - **Cleaner in-app feedback**: Long toast messages wrap properly, GitHub star counts display more cleanly, and message/code rendering behaves more predictably. ## Fixes - **Safer prompt rendering**: Raw HTML in user prompts is escaped so messages display safely instead of being interpreted. - **More reliable code previews**: Incomplete syntax highlighting results are no longer cached, which helps prevent broken-looking file views. - **Better voice handoff**: Conversation playback stops when voice input starts, avoiding overlapping speech. - **More dependable desktop releases**: Native app versions now stay aligned with package releases, and stale UI assets no longer shadow new desktop builds. ### Contributors - @jchadwick - @pascalandr




Summary
Bug Fixes (Review Feedback)
if (content)toif (content !== undefined && content !== null)Related Issues