From the full review of 2026-11-10. Moved out of 1.1.1 by the owner's decision; planned for 1.2.0. Found by reading the shell's code at 1.1.0: re-verify each against current main (some may have changed with #167 and #168).
Window and lifetime
An update can be applied, and the app restarted, while syncs are running.
Closing the window cancels running work but does not wait for it to end.
A failure to read the credential store at startup leaves a process without a window; a corrupt accounts.json is logged but not shown to the user.
The update check at startup does not take part in the "an update action is in flight" guard.
Dialogs and forms
The mask shown for a saved token is ordinary editable text: typing or pasting into the box without clearing it first saves the mask's characters together with the new text.
A failure to save Settings happens after the dialog has closed and is not shown.
A failure while the account wizard advances closes the dialog as if it had been canceled.
A page that is rebuilt stays referenced by a handler on a long-lived collection (a leak per rebuild).
Navigation pane
Accounts are inserted in sorted order by a text that default-token accounts do not have, so their position is wrong; Sync all runs in pane order.
Log window
The whole day's log is read again on the UI thread every second.
Accessibility
The state shown by an account's badge in the pane is visual only.
The Settings dialog's status text does not announce its changes.
Account items created at run time have no AutomationId.
Notes
Fix in place where small; what needs logic belongs in a view model (the 1.2.0 plan moves shell logic there).
Every fix that has logic needs a regression test that fails without it.
From the full review of 2026-11-10. Moved out of 1.1.1 by the owner's decision; planned for 1.2.0. Found by reading the shell's code at 1.1.0: re-verify each against current `main` (some may have changed with #167 and #168).
## Window and lifetime
- An update can be applied, and the app restarted, while syncs are running.
- Closing the window cancels running work but does not wait for it to end.
- A failure to read the credential store at startup leaves a process without a window; a corrupt `accounts.json` is logged but not shown to the user.
- The update check at startup does not take part in the "an update action is in flight" guard.
## Dialogs and forms
- The mask shown for a saved token is ordinary editable text: typing or pasting into the box without clearing it first saves the mask's characters together with the new text.
- A failure to save Settings happens after the dialog has closed and is not shown.
- A failure while the account wizard advances closes the dialog as if it had been canceled.
- A page that is rebuilt stays referenced by a handler on a long-lived collection (a leak per rebuild).
## Navigation pane
- Accounts are inserted in sorted order by a text that default-token accounts do not have, so their position is wrong; Sync all runs in pane order.
## Log window
- The whole day's log is read again on the UI thread every second.
## Accessibility
- The state shown by an account's badge in the pane is visual only.
- The Settings dialog's status text does not announce its changes.
- Account items created at run time have no `AutomationId`.
## Notes
- Fix in place where small; what needs logic belongs in a view model (the 1.2.0 plan moves shell logic there).
- Every fix that has logic needs a regression test that fails without it.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
From the full review of 2026-11-10. Moved out of 1.1.1 by the owner's decision; planned for 1.2.0. Found by reading the shell's code at 1.1.0: re-verify each against current
main(some may have changed with #167 and #168).Window and lifetime
accounts.jsonis logged but not shown to the user.Dialogs and forms
Navigation pane
Log window
Accessibility
AutomationId.Notes