@happy-nut/monacori 0.1.0 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -132
- package/assets/icon.png +0 -0
- package/assets/screenshots/diff-review.png +0 -0
- package/assets/screenshots/terminal.png +0 -0
- package/dist/app-main.js +210 -10
- package/dist/assets.d.ts +6 -0
- package/dist/assets.js +51 -0
- package/dist/build.d.ts +13 -0
- package/dist/build.js +77 -0
- package/dist/cli.d.ts +5 -33
- package/dist/cli.js +7 -3529
- package/dist/commands.d.ts +1 -0
- package/dist/commands.js +678 -0
- package/dist/constants.d.ts +10 -0
- package/dist/constants.js +11 -0
- package/dist/diff.d.ts +12 -0
- package/dist/diff.js +396 -0
- package/dist/git.d.ts +4 -0
- package/dist/git.js +23 -0
- package/dist/highlight.d.ts +1 -0
- package/dist/highlight.js +85 -0
- package/dist/i18n.d.ts +1 -0
- package/dist/i18n.js +256 -0
- package/dist/preload.cjs +83 -0
- package/dist/preload.d.cts +1 -0
- package/dist/render.d.ts +33 -0
- package/dist/render.js +406 -0
- package/dist/server.d.ts +20 -0
- package/dist/server.js +175 -0
- package/dist/types.d.ts +99 -0
- package/dist/types.js +1 -0
- package/dist/util.d.ts +18 -0
- package/dist/util.js +144 -0
- package/dist/viewer.client.js +3935 -0
- package/dist/viewer.css +1094 -0
- package/package.json +9 -3
- package/scripts/patch-electron-name.mjs +65 -0
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
// UI message catalog for the live English / Korean switch.
|
|
2
|
+
//
|
|
3
|
+
// The viewer ships both languages and switches client-side with NO reload: every translatable
|
|
4
|
+
// server-rendered element in render.ts carries data-i18n (textContent), data-i18n-ph (placeholder),
|
|
5
|
+
// data-i18n-title (title) or data-i18n-aria (aria-label); applyI18n() in viewer.client.js rewrites
|
|
6
|
+
// them, and t(key) feeds the dynamically-built UI. English is the first-paint default.
|
|
7
|
+
//
|
|
8
|
+
// Keys are stable + dot-namespaced. Excluded by design (NOT translated): diff/code content, file
|
|
9
|
+
// paths, syntax-language names, the "monacori" brand, version strings, and literal <kbd> key names
|
|
10
|
+
// (F7, Cmd/Ctrl+B, …). Korean is written for Korean developers — natural, with common technical
|
|
11
|
+
// terms left readable (커밋, 탭, 인덱스 …) rather than force-translated.
|
|
12
|
+
export const MESSAGES = {
|
|
13
|
+
en: {
|
|
14
|
+
// Tabs (sidebar)
|
|
15
|
+
"tab.changes": "Changes",
|
|
16
|
+
"tab.files": "Files",
|
|
17
|
+
// Sidebar footer / About
|
|
18
|
+
"sidebar.updateAvailable": "update available",
|
|
19
|
+
"about.title": "About monacori",
|
|
20
|
+
"terminal.title": "Terminal",
|
|
21
|
+
"terminal.toggle": "Toggle terminal (Ctrl+`)",
|
|
22
|
+
"terminal.close": "Close terminal",
|
|
23
|
+
// Review status (toolbar) — units; the numeric count stays dynamic and is prepended at runtime.
|
|
24
|
+
"status.files": "files",
|
|
25
|
+
"status.hunks": "hunks",
|
|
26
|
+
"status.wsIgnored": "ws ignored",
|
|
27
|
+
"status.wsIgnored.title": "Whitespace ignored — Cmd/Ctrl+Shift+W",
|
|
28
|
+
"status.indexed": "indexed",
|
|
29
|
+
"status.index.title": "Go-to-definition index",
|
|
30
|
+
"status.indexing": "indexing",
|
|
31
|
+
"status.watching": "watching",
|
|
32
|
+
"status.live.updated": "Live: updated",
|
|
33
|
+
"status.live.waiting": "Live: waiting for diff server",
|
|
34
|
+
// Diff view
|
|
35
|
+
"btn.viewed": "Viewed",
|
|
36
|
+
"btn.viewed.title": "Toggle viewed (<)",
|
|
37
|
+
"diff.noDiff": "No diff to review.",
|
|
38
|
+
// Source toolbar
|
|
39
|
+
"source.title": "Source",
|
|
40
|
+
"source.selectFile": "Select a file from the Files tab.",
|
|
41
|
+
"http.env.title": "HTTP Client environment",
|
|
42
|
+
"http.env.aria": "HTTP environment",
|
|
43
|
+
"btn.diff": "Diff",
|
|
44
|
+
"source.loading": "Loading source…",
|
|
45
|
+
"source.previewUnavailable": "Source preview unavailable.",
|
|
46
|
+
"source.viewRaw": "Raw",
|
|
47
|
+
"source.viewRendered": "Rendered",
|
|
48
|
+
"source.buildingTree": "Building file tree…",
|
|
49
|
+
// Quick open
|
|
50
|
+
"quickopen.aria": "Quick open",
|
|
51
|
+
"quickopen.searchFiles": "Search files",
|
|
52
|
+
"quickopen.recent": "Recent files",
|
|
53
|
+
"quickopen.findInFiles": "Find in Files",
|
|
54
|
+
"quickopen.noFiles": "No files found.",
|
|
55
|
+
// Usages
|
|
56
|
+
"usages.aria": "Usages",
|
|
57
|
+
"usages.title": "Usages",
|
|
58
|
+
// Settings — nav
|
|
59
|
+
"settings.aria": "Settings",
|
|
60
|
+
"settings.title": "Settings",
|
|
61
|
+
"settings.cat.general": "General",
|
|
62
|
+
"settings.cat.prompts": "Merge prompts",
|
|
63
|
+
// Settings — General
|
|
64
|
+
"settings.language": "Language",
|
|
65
|
+
"settings.checkingUpdates": "Checking for updates…",
|
|
66
|
+
"settings.updateRestart": "Update & Restart",
|
|
67
|
+
"settings.upToDate": "Up to date",
|
|
68
|
+
"settings.updateAvailable": "Update available",
|
|
69
|
+
"settings.updating": "Updating… installing latest, the app will restart",
|
|
70
|
+
"settings.updated": "Updated. Restarting…",
|
|
71
|
+
"settings.updateFailed": "Update failed — try again, or run: npm i -g @happy-nut/monacori",
|
|
72
|
+
"settings.kbd.title": "Keyboard shortcuts",
|
|
73
|
+
"settings.kbd.cat.nav": "Navigation",
|
|
74
|
+
"settings.kbd.cat.review": "Review",
|
|
75
|
+
"settings.kbd.cat.terminal": "Terminal",
|
|
76
|
+
// Settings — keyboard-shortcut labels (descriptions only; <kbd> key names stay literal)
|
|
77
|
+
"kbd.nextChange": "Next change",
|
|
78
|
+
"kbd.prevChange": "Previous change",
|
|
79
|
+
"kbd.closeTab": "Close tab",
|
|
80
|
+
"kbd.prevNextTab": "Prev / next tab",
|
|
81
|
+
"kbd.cursorBackForward": "Cursor back / forward",
|
|
82
|
+
"kbd.findFile": "Find file",
|
|
83
|
+
"kbd.findInFiles": "Find in files",
|
|
84
|
+
"kbd.recentFiles": "Recent files",
|
|
85
|
+
"kbd.defUsages": "Definition / usages",
|
|
86
|
+
"kbd.goToDef": "Go to definition",
|
|
87
|
+
"kbd.filesChangesTab": "Files / Changes tab",
|
|
88
|
+
"kbd.sidebarContent": "Sidebar ↔ content",
|
|
89
|
+
"kbd.wordJump": "Word jump (vim w)",
|
|
90
|
+
"kbd.lineStartEnd": "Line start / end",
|
|
91
|
+
"kbd.extendSelection": "Extend selection",
|
|
92
|
+
"kbd.toggleViewed": "Toggle viewed",
|
|
93
|
+
"kbd.addQuestionChange": "Add question / change",
|
|
94
|
+
"kbd.allQuestionsChanges": "All questions / changes",
|
|
95
|
+
"kbd.ignoreWhitespace": "Ignore whitespace",
|
|
96
|
+
"kbd.saveComment": "Save comment",
|
|
97
|
+
"kbd.toggleTerminal": "Toggle terminal",
|
|
98
|
+
"kbd.splitPane": "Split pane",
|
|
99
|
+
"kbd.focusPane": "Focus prev / next pane",
|
|
100
|
+
"kbd.renamePane": "Rename pane",
|
|
101
|
+
"kbd.closeTerminal": "Close terminal (when focused)",
|
|
102
|
+
// Settings — Merge prompts
|
|
103
|
+
"mergePrompts.title": "Merge prompts",
|
|
104
|
+
"mergePrompts.desc": "Heading prepended to the merged prompt opened with Cmd/Ctrl+Shift+/ (questions) and Cmd/Ctrl+Shift+. (change requests). Leave blank to use the default.",
|
|
105
|
+
"mergePrompts.qHeading": "Questions heading",
|
|
106
|
+
"mergePrompts.cHeading": "Change-requests heading",
|
|
107
|
+
"mergePrompts.reset": "Reset to defaults",
|
|
108
|
+
"settings.saved": "Saved",
|
|
109
|
+
// Composer (per-line question / change-request)
|
|
110
|
+
"composer.question": "Ask a question about this line",
|
|
111
|
+
"composer.changeRequest": "Request a change for this line",
|
|
112
|
+
"composer.save": "Comment",
|
|
113
|
+
"composer.cancel": "Cancel",
|
|
114
|
+
"composer.hint": "Cmd/Ctrl+Enter to save, Esc to cancel",
|
|
115
|
+
"composer.delete": "Delete",
|
|
116
|
+
"comment.kind.q": "❓ Question",
|
|
117
|
+
"comment.kind.c": "✎ Change request",
|
|
118
|
+
"badge.questions": "question(s)",
|
|
119
|
+
"badge.changeRequests": "change request(s)",
|
|
120
|
+
// Merged comments modal
|
|
121
|
+
"merged.qTitle": "Question comments",
|
|
122
|
+
"merged.cTitle": "Change-request comments",
|
|
123
|
+
"merged.copyAll": "Copy all",
|
|
124
|
+
"merged.sendToTerminal": "Send to terminal",
|
|
125
|
+
"merged.copied": "Copied",
|
|
126
|
+
"merged.copyFailed": "Copy failed",
|
|
127
|
+
"merged.close": "Close",
|
|
128
|
+
"merged.qHeading": "# Questions",
|
|
129
|
+
"merged.cHeading": "# Change requests",
|
|
130
|
+
// Merge-prompt default agent contracts (these follow the locale — a Korean user gets Korean defaults)
|
|
131
|
+
"mergePrompt.default.q": "The following are questions about code you just wrote. Answer each one — explain the intent, rationale, or context. Do not change any code; this clarifies understanding before any revisions.",
|
|
132
|
+
"mergePrompt.default.c": "The following are change requests for code you just wrote. For each, edit the code at the quoted location to satisfy the request. Keep changes minimal and focused; do not make unrelated edits.",
|
|
133
|
+
},
|
|
134
|
+
ko: {
|
|
135
|
+
// Tabs (sidebar)
|
|
136
|
+
"tab.changes": "변경사항",
|
|
137
|
+
"tab.files": "파일",
|
|
138
|
+
// Sidebar footer / About
|
|
139
|
+
"sidebar.updateAvailable": "업데이트 있음",
|
|
140
|
+
"about.title": "monacori 정보",
|
|
141
|
+
"terminal.title": "터미널",
|
|
142
|
+
"terminal.toggle": "터미널 토글 (Ctrl+`)",
|
|
143
|
+
"terminal.close": "터미널 닫기",
|
|
144
|
+
// Review status (toolbar)
|
|
145
|
+
"status.files": "개 파일",
|
|
146
|
+
"status.hunks": "개 변경 묶음",
|
|
147
|
+
"status.wsIgnored": "공백 무시",
|
|
148
|
+
"status.wsIgnored.title": "공백 무시 — Cmd/Ctrl+Shift+W",
|
|
149
|
+
"status.indexed": "개 인덱싱됨",
|
|
150
|
+
"status.index.title": "정의로 이동 인덱스",
|
|
151
|
+
"status.indexing": "인덱싱 중",
|
|
152
|
+
"status.watching": "감시 중",
|
|
153
|
+
"status.live.updated": "실시간: 업데이트됨",
|
|
154
|
+
"status.live.waiting": "실시간: diff 서버 대기 중",
|
|
155
|
+
// Diff view
|
|
156
|
+
"btn.viewed": "확인함",
|
|
157
|
+
"btn.viewed.title": "확인 표시 토글 (<)",
|
|
158
|
+
"diff.noDiff": "검토할 변경사항이 없습니다.",
|
|
159
|
+
// Source toolbar
|
|
160
|
+
"source.title": "소스",
|
|
161
|
+
"source.selectFile": "파일 탭에서 파일을 선택하세요.",
|
|
162
|
+
"http.env.title": "HTTP 클라이언트 환경",
|
|
163
|
+
"http.env.aria": "HTTP 환경",
|
|
164
|
+
"btn.diff": "Diff",
|
|
165
|
+
"source.loading": "소스 불러오는 중…",
|
|
166
|
+
"source.previewUnavailable": "소스 미리보기를 사용할 수 없습니다.",
|
|
167
|
+
"source.viewRaw": "원문",
|
|
168
|
+
"source.viewRendered": "렌더링",
|
|
169
|
+
"source.buildingTree": "파일 트리 만드는 중…",
|
|
170
|
+
// Quick open
|
|
171
|
+
"quickopen.aria": "빠른 열기",
|
|
172
|
+
"quickopen.searchFiles": "파일 검색",
|
|
173
|
+
"quickopen.recent": "최근 파일",
|
|
174
|
+
"quickopen.findInFiles": "파일 내용 검색",
|
|
175
|
+
"quickopen.noFiles": "파일을 찾을 수 없습니다.",
|
|
176
|
+
// Usages
|
|
177
|
+
"usages.aria": "사용처",
|
|
178
|
+
"usages.title": "사용처",
|
|
179
|
+
// Settings — nav
|
|
180
|
+
"settings.aria": "설정",
|
|
181
|
+
"settings.title": "설정",
|
|
182
|
+
"settings.cat.general": "일반",
|
|
183
|
+
"settings.cat.prompts": "병합 프롬프트",
|
|
184
|
+
// Settings — General
|
|
185
|
+
"settings.language": "언어",
|
|
186
|
+
"settings.checkingUpdates": "업데이트 확인 중…",
|
|
187
|
+
"settings.updateRestart": "업데이트 후 재시작",
|
|
188
|
+
"settings.upToDate": "최신 버전입니다",
|
|
189
|
+
"settings.updateAvailable": "업데이트 있음",
|
|
190
|
+
"settings.updating": "업데이트 중… 최신 버전을 설치하면 앱이 재시작됩니다",
|
|
191
|
+
"settings.updated": "업데이트 완료. 재시작 중…",
|
|
192
|
+
"settings.updateFailed": "업데이트 실패 — 다시 시도하거나 실행하세요: npm i -g @happy-nut/monacori",
|
|
193
|
+
"settings.kbd.title": "키보드 단축키",
|
|
194
|
+
"settings.kbd.cat.nav": "탐색",
|
|
195
|
+
"settings.kbd.cat.review": "리뷰",
|
|
196
|
+
"settings.kbd.cat.terminal": "터미널",
|
|
197
|
+
// Settings — keyboard-shortcut labels
|
|
198
|
+
"kbd.nextChange": "다음 변경",
|
|
199
|
+
"kbd.prevChange": "이전 변경",
|
|
200
|
+
"kbd.closeTab": "탭 닫기",
|
|
201
|
+
"kbd.prevNextTab": "이전 / 다음 탭",
|
|
202
|
+
"kbd.cursorBackForward": "커서 뒤로 / 앞으로",
|
|
203
|
+
"kbd.findFile": "파일 찾기",
|
|
204
|
+
"kbd.findInFiles": "파일 내용 찾기",
|
|
205
|
+
"kbd.recentFiles": "최근 파일",
|
|
206
|
+
"kbd.defUsages": "정의 / 사용처",
|
|
207
|
+
"kbd.goToDef": "정의로 이동",
|
|
208
|
+
"kbd.filesChangesTab": "파일 / 변경사항 탭",
|
|
209
|
+
"kbd.sidebarContent": "사이드바 ↔ 본문",
|
|
210
|
+
"kbd.wordJump": "단어 단위 이동 (vim w)",
|
|
211
|
+
"kbd.lineStartEnd": "줄 시작 / 끝",
|
|
212
|
+
"kbd.extendSelection": "선택 영역 확장",
|
|
213
|
+
"kbd.toggleViewed": "확인 표시 토글",
|
|
214
|
+
"kbd.addQuestionChange": "질문 / 변경요청 추가",
|
|
215
|
+
"kbd.allQuestionsChanges": "전체 질문 / 변경요청",
|
|
216
|
+
"kbd.ignoreWhitespace": "공백 무시",
|
|
217
|
+
"kbd.saveComment": "코멘트 저장",
|
|
218
|
+
"kbd.toggleTerminal": "터미널 토글",
|
|
219
|
+
"kbd.splitPane": "패널 분할",
|
|
220
|
+
"kbd.focusPane": "이전 / 다음 패널로 이동",
|
|
221
|
+
"kbd.renamePane": "패널 이름 변경",
|
|
222
|
+
"kbd.closeTerminal": "터미널 닫기 (포커스 시)",
|
|
223
|
+
// Settings — Merge prompts
|
|
224
|
+
"mergePrompts.title": "병합 프롬프트",
|
|
225
|
+
"mergePrompts.desc": "Cmd/Ctrl+Shift+/ (질문) 및 Cmd/Ctrl+Shift+. (변경요청)로 여는 병합 프롬프트 맨 앞에 붙는 머리말입니다. 비워 두면 기본값을 사용합니다.",
|
|
226
|
+
"mergePrompts.qHeading": "질문 머리말",
|
|
227
|
+
"mergePrompts.cHeading": "변경요청 머리말",
|
|
228
|
+
"mergePrompts.reset": "기본값으로 초기화",
|
|
229
|
+
"settings.saved": "저장됨",
|
|
230
|
+
// Composer
|
|
231
|
+
"composer.question": "이 줄에 대해 질문하기",
|
|
232
|
+
"composer.changeRequest": "이 줄에 대한 변경 요청하기",
|
|
233
|
+
"composer.save": "코멘트",
|
|
234
|
+
"composer.cancel": "취소",
|
|
235
|
+
"composer.hint": "Cmd/Ctrl+Enter로 저장, Esc로 취소",
|
|
236
|
+
"composer.delete": "삭제",
|
|
237
|
+
"comment.kind.q": "❓ 질문",
|
|
238
|
+
"comment.kind.c": "✎ 변경 요청",
|
|
239
|
+
"badge.questions": "개 질문",
|
|
240
|
+
"badge.changeRequests": "개 변경 요청",
|
|
241
|
+
// Merged comments modal
|
|
242
|
+
"merged.qTitle": "질문 코멘트",
|
|
243
|
+
"merged.cTitle": "변경 요청 코멘트",
|
|
244
|
+
"merged.copyAll": "전체 복사",
|
|
245
|
+
"merged.sendToTerminal": "터미널로 전송",
|
|
246
|
+
"merged.copied": "복사됨",
|
|
247
|
+
"merged.copyFailed": "복사 실패",
|
|
248
|
+
"merged.close": "닫기",
|
|
249
|
+
// Structural markers stay English in both locales (the preamble prose below follows the locale).
|
|
250
|
+
"merged.qHeading": "# Questions",
|
|
251
|
+
"merged.cHeading": "# Change requests",
|
|
252
|
+
// Merge-prompt default agent contracts (Korean default for Korean users)
|
|
253
|
+
"mergePrompt.default.q": "다음은 방금 작성한 코드에 대한 질문입니다. 각 질문에 답하면서 의도, 근거, 맥락을 설명하세요. 코드는 변경하지 마세요. 이 단계는 수정에 앞서 이해를 명확히 하기 위한 것입니다.",
|
|
254
|
+
"mergePrompt.default.c": "다음은 방금 작성한 코드에 대한 변경 요청입니다. 각 요청에 대해 인용된 위치의 코드를 수정하여 요구사항을 충족하세요. 변경은 최소한으로 집중해서 하고, 관련 없는 수정은 하지 마세요.",
|
|
255
|
+
},
|
|
256
|
+
};
|
package/dist/preload.cjs
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const electron_1 = require("electron");
|
|
4
|
+
// Bridges the sandboxed renderer to the main process so .http requests can be
|
|
5
|
+
// executed without CORS or sandbox restrictions. Kept intentionally tiny: the
|
|
6
|
+
// renderer only ever asks main to perform a single fetch and return the result.
|
|
7
|
+
electron_1.contextBridge.exposeInMainWorld("monacoriHttp", {
|
|
8
|
+
send: (request) => electron_1.ipcRenderer.invoke("monacori:http-send", request),
|
|
9
|
+
});
|
|
10
|
+
// Lets the Review menu's Cmd/Ctrl+Shift+/ and +. accelerators open the merged comment views in
|
|
11
|
+
// the renderer (the keys macOS would otherwise reserve for its Help search).
|
|
12
|
+
electron_1.contextBridge.exposeInMainWorld("monacoriMenu", {
|
|
13
|
+
onMergedView: (cb) => {
|
|
14
|
+
electron_1.ipcRenderer.on("monacori:merged-view", (_event, kind) => cb(kind));
|
|
15
|
+
},
|
|
16
|
+
// Cmd/Ctrl+W from the Window menu -> close the active Files-mode tab in the renderer.
|
|
17
|
+
onCloseTab: (cb) => {
|
|
18
|
+
electron_1.ipcRenderer.on("monacori:close-tab", () => cb());
|
|
19
|
+
},
|
|
20
|
+
// Terminal menu accelerators (Ctrl+`/Alt+F12 toggle, Cmd+D split) — routed via the menu because
|
|
21
|
+
// Chromium swallows Cmd+D before it reaches the renderer's keydown handler.
|
|
22
|
+
onTerminalToggle: (cb) => {
|
|
23
|
+
electron_1.ipcRenderer.on("monacori:terminal-toggle", () => cb());
|
|
24
|
+
},
|
|
25
|
+
onTerminalSplit: (cb) => {
|
|
26
|
+
electron_1.ipcRenderer.on("monacori:terminal-split", () => cb());
|
|
27
|
+
},
|
|
28
|
+
onTerminalPaneFocus: (cb) => {
|
|
29
|
+
electron_1.ipcRenderer.on("monacori:terminal-pane-focus", (_event, delta) => cb(delta));
|
|
30
|
+
},
|
|
31
|
+
onTerminalPaneRename: (cb) => {
|
|
32
|
+
electron_1.ipcRenderer.on("monacori:terminal-pane-rename", () => cb());
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
// Phase 2 lazy-LOAD: fetch a single file's diff body from the main process on demand, so the initial
|
|
36
|
+
// HTML can omit the embedded diff bodies (tens of MB on big repos) and stay small.
|
|
37
|
+
electron_1.contextBridge.exposeInMainWorld("monacoriFile", {
|
|
38
|
+
get: (index, kind) => electron_1.ipcRenderer.invoke("monacori:get-file", { index, kind }),
|
|
39
|
+
getSourceData: () => electron_1.ipcRenderer.invoke("monacori:get-source-data"),
|
|
40
|
+
});
|
|
41
|
+
// Self-update: ask the main process to install the latest version globally and relaunch. Only present
|
|
42
|
+
// in the Electron app (not browser/watch mode), so the renderer hides the in-app update button there.
|
|
43
|
+
electron_1.contextBridge.exposeInMainWorld("monacoriUpdate", {
|
|
44
|
+
run: () => electron_1.ipcRenderer.invoke("monacori:self-update"),
|
|
45
|
+
});
|
|
46
|
+
// Integrated terminal: bridge the renderer's xterm view to a node-pty owned by the main process (the
|
|
47
|
+
// sandboxed renderer can't spawn a pty). Only present in the Electron app; browser/serve mode lacks it,
|
|
48
|
+
// so the renderer keeps the terminal panel hidden there.
|
|
49
|
+
electron_1.contextBridge.exposeInMainWorld("monacoriPty", {
|
|
50
|
+
spawn: (size) => electron_1.ipcRenderer.invoke("monacori:pty-spawn", size),
|
|
51
|
+
write: (msg) => electron_1.ipcRenderer.send("monacori:pty-write", msg),
|
|
52
|
+
resize: (msg) => electron_1.ipcRenderer.send("monacori:pty-resize", msg),
|
|
53
|
+
kill: (msg) => electron_1.ipcRenderer.send("monacori:pty-kill", msg),
|
|
54
|
+
onData: (cb) => {
|
|
55
|
+
electron_1.ipcRenderer.on("monacori:pty-data", (_event, msg) => cb(msg));
|
|
56
|
+
},
|
|
57
|
+
onExit: (cb) => {
|
|
58
|
+
electron_1.ipcRenderer.on("monacori:pty-exit", (_event, msg) => cb(msg));
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
// Global settings (locale, …) persisted by the main process under userData so they survive app
|
|
62
|
+
// restarts — the renderer's file:// localStorage is not reliably persisted across reopens. `all` is
|
|
63
|
+
// read synchronously at preload so the renderer can pick the locale before first paint; `set` writes
|
|
64
|
+
// asynchronously. Only present in the Electron app; browser/serve mode falls back to localStorage.
|
|
65
|
+
const persistedSettings = (() => {
|
|
66
|
+
try {
|
|
67
|
+
return electron_1.ipcRenderer.sendSync("monacori:get-settings") || {};
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
})();
|
|
73
|
+
electron_1.contextBridge.exposeInMainWorld("monacoriSettings", {
|
|
74
|
+
all: persistedSettings,
|
|
75
|
+
set: (key, value) => {
|
|
76
|
+
try {
|
|
77
|
+
electron_1.ipcRenderer.send("monacori:set-setting", { key, value });
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* noop */
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/render.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { DiffFile, ReviewFileState, SourceFile } from "./types.js";
|
|
2
|
+
export declare function renderNotGitRepoHtml(root: string): string;
|
|
3
|
+
export declare function shouldLazyRender(fileCount: number, totalLines: number): boolean;
|
|
4
|
+
export declare function splitDiffForLazy(diffHtml: string, files: DiffFile[]): {
|
|
5
|
+
container: string;
|
|
6
|
+
islands: string;
|
|
7
|
+
bodies: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare function renderDiffHtml(input: {
|
|
10
|
+
files: DiffFile[];
|
|
11
|
+
diffHtml: string;
|
|
12
|
+
diffIslands?: string;
|
|
13
|
+
lazy?: boolean;
|
|
14
|
+
lazyLoad?: boolean;
|
|
15
|
+
sourceFiles: SourceFile[];
|
|
16
|
+
fileStates: ReviewFileState[];
|
|
17
|
+
httpEnvironments: Record<string, Record<string, string>>;
|
|
18
|
+
title: string;
|
|
19
|
+
subtitle: string;
|
|
20
|
+
projectName: string;
|
|
21
|
+
projectPath: string;
|
|
22
|
+
watch?: boolean;
|
|
23
|
+
ignoreWhitespace?: boolean;
|
|
24
|
+
app?: boolean;
|
|
25
|
+
signature?: string;
|
|
26
|
+
generatedAt?: string;
|
|
27
|
+
}): string;
|
|
28
|
+
export declare function diffSubtitle(options: {
|
|
29
|
+
base?: string;
|
|
30
|
+
staged: boolean;
|
|
31
|
+
includeUntracked: boolean;
|
|
32
|
+
context: number;
|
|
33
|
+
}): string;
|