feat(vcs): PyCharm-style Commit view and one shared message dialog

- workbench/messages: one promise-based ask/confirm/confirmChecked/showError
  host replaces the per-feature confirm dialogs (app, services, vcs,
  project tree, keymap, run, database, find, LSP choice popup).
- Commit tool window: Commit | Shelf | Stash tabs as the title, IDEA's
  toolbar (Update Project, View Options, Select Opened File), Unversioned
  collapsed, Commit / Commit and Push on one row, empty-message error.
- Commit Options popup: author, sign-off, before-commit checks, Git hooks;
  vcs_commit takes CommitOptions (--author, --no-verify).
- Remove from Recent Projects asks first; refused history rewrites show an
  error dialog.

Claude-Session: https://claude.ai/code/session_01B65qLEKnkeYTGdbwhLpjCu
Цей коміт міститься в:
l0ng-ai committed 2026-10-23 22:59:06 +08:00
1 джерело 76d33f0306
коміт c59f93988b
61 files changed
+948 -942

No files matched your search

+6
Переглянути файл
@@ -8,6 +8,10 @@ interface CommitState {
message: string;
amend: boolean;
signOff: boolean;
/** Commit Options › Author (`Name <mail>`); blank uses the configured user. */
author: string;
/** Commit Options › Run Git hooks. */
runHooks: boolean;
groupByDir: boolean;
/** User overrides of the inclusion checkboxes (absolute path → state). */
checks: Map<string, CheckState>;
@@ -28,6 +32,8 @@ export const useCommit = create<CommitState>(() => ({
message: "",
amend: false,
signOff: false,
author: "",
runHooks: true,
groupByDir: readBool("openidea.vcs.groupByDir", false),
checks: new Map(),
selection: [],