OOKAMI
91c3defe66
Add configurable terminal tab double-click behavior
...
Introduce a new TerminalTabDoubleClickBehavior setting (duplicate | copy | disabled) with default 'duplicate'. Add model field, normalization, default, and sync key (tabDoubleClickBehavior). UI: TerminalBehaviorSettings adds a Select; AppView and TopTabs pass the setting through; TopTabItems implements createTopTabSessionDoubleClickHandler to perform duplicate/copy with a safe fallback. Add i18n strings, settings search entry, and update tests to cover behavior and serialization. Improves user control over double-click actions on session tabs.
2026-09-15 16:56:55 +08:00
lengyuqu
605dc94b13
fix: clarify CodeBuddy session persistence scope
2026-09-14 17:02:06 +08:00
lengyuqu
9e74618f2e
feat: upgrade CodeBuddy SDK integration
2026-09-14 16:38:33 +08:00
bincxz
210879b848
fix: prepare sync credentials before protected apply begins
2026-09-13 16:22:11 +08:00
bincxz
db0238ce6e
fix: prepare provider headers before applying sync data
2026-09-13 16:07:26 +08:00
bincxz
6f30bbefb5
Merge main into custom provider headers PR
2026-09-13 15:46:12 +08:00
bincxz
7205c40a7c
Merge latest main into right-click hold menu PR
2026-09-13 15:31:53 +08:00
陈大猫
7cf8ebac7e
Merge pull request #3359 from binaricat/ai/issue-3358-34674962452
...
feat(ai): add reasoning effort option to provider advanced params
2026-09-13 15:29:24 +08:00
陈大猫
756f332db5
Merge pull request #3371 from binaricat/codex/issue-2383-sftp-command-refresh
...
feat(sftp): refresh visible sidebar after terminal commands
2026-09-13 15:29:16 +08:00
陈大猫
2e588630a1
Merge pull request #3366 from binaricat/codex/issue-2407-tabs-position
...
feat(ui): allow placing the tab bar at the bottom
2026-09-13 15:29:07 +08:00
陈大猫
e9cc0d54d2
Merge pull request #3367 from binaricat/codex/issue-2450-ip-sort
...
feat: add optional IP sorting for vault hosts
2026-09-13 15:29:03 +08:00
陈大猫
57cd40a192
Merge pull request #3365 from binaricat/codex/issue-2645-compose-history
...
feat: recall compose history within the current terminal session
2026-09-13 15:28:59 +08:00
bincxz
26278a8694
fix(ai): reject transport-owned custom framing headers
2026-09-12 18:08:55 +08:00
bincxz
e10e5ccbc2
Revert "fix: address Codex review on PR #3373 "
...
This reverts commit dd5749460f .
2026-09-12 17:59:28 +08:00
bincxz
d9ca951cc9
fix: restore compose draft when leaving session history
2026-09-12 17:47:27 +08:00
bincxz
00ec0d04c4
fix: keep compose history browsing stable during late sends
2026-09-12 17:45:00 +08:00
netcatty-bot
dd5749460f
fix: address Codex review on PR #3373
2026-09-12 09:43:28 +00:00
bincxz
3b1a4adc82
fix: keep compose history in submission order
2026-09-12 17:27:36 +08:00
bincxz
758029bc29
feat(ai): configure and securely store custom provider headers
2026-09-12 17:12:34 +08:00
bincxz
8b5db49001
fix(terminal): sync hold preference and allow disconnected menu
2026-09-12 17:09:49 +08:00
bincxz
87f794d17d
fix: preserve compose drafts and await send results
2026-09-12 17:09:05 +08:00
bincxz
ce86e8e426
feat(sftp): refresh visible sidebar after terminal commands
2026-09-12 17:07:35 +08:00
bincxz
131ed03ffa
fix(ui): align bottom controls and preserve chrome theme
2026-09-12 17:06:07 +08:00
bincxz
a05e004259
feat(terminal): add optional right-click hold menu
2026-09-12 17:02:46 +08:00
bincxz
cae4169948
fix: translate IP sorting in Spanish
2026-09-12 17:02:45 +08:00
bincxz
7ec9cd652b
feat(ui): allow placing the tab bar at the bottom
2026-09-12 16:56:53 +08:00
bincxz
3987e465b6
feat: add optional IP sorting for vault hosts
2026-09-12 16:56:25 +08:00
bincxz
d8761c156e
feat(terminal): save the current rendered screen
2026-09-12 16:55:18 +08:00
bincxz
47bb5c2b55
feat: recall compose bar history within each terminal session
2026-09-12 16:51:52 +08:00
netcatty-bot
0b96d70702
fix: address Codex review on PR #3359
2026-09-12 05:59:48 +00:00
86d8c5279d
fix(port-forwarding): add per-rule auto-reconnect on disconnect ( #3328 )
...
* fix(#3326 ): automated AI fix
* fix: address Codex review on PR #3328
* fix: address Codex review on PR #3328
* fix(port-forwarding): honor explicit reconnect preference
* fix(port-forwarding): save auto-start alongside reconnect preference
* fix(port-forwarding): coordinate tray starts in main window
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 13:47:34 +08:00
e0cb6034fe
fix(ai): surface Codex config.toml third-party models in chat picker ( #3345 )
...
* fix(#3344 ): automated AI fix
* fix: address Codex review on PR #3345
* fix: address Codex review on PR #3345
* fix(ai): honor Codex config models before sends in both runtimes
* fix(ai): use managed Codex environment for login actions
* fix(ai): reuse Codex auth checks within the effective environment
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 13:45:19 +08:00
keroroyuki and bincxz
15b16ab7b2
fix: serial backspace leaves hidden chars for multi-byte CJK input ( #3325 )
...
* fix: serial backspace leaves hidden chars for multi-byte CJK input
Serial terminals process backspace at the byte level: one 0x7F removes
one byte from the device input buffer. For multi-byte CJK characters
(UTF-8: 3 bytes, GB18030: 2 bytes), a single backspace leaves orphan
bytes that render as hidden or garbled characters.
Fixes three layers of the problem:
1. Character mode (createXTermRuntime.ts): when backspace is received
and the command-buffer's last character is wider than one byte,
send as many backspace bytes as the character occupies on the wire
so the device deletes the whole character.
2. Local echo (serialLocalEcho.ts): formatSerialLocalEcho now accepts
a backspaceCells parameter so CJK ideographs (2 terminal cells)
erase both cells instead of just one.
3. Line mode (serialLineInput.ts, Terminal.tsx): backspace local echo
now erases the correct number of cells based on the deleted
character's display width.
Adds serialCharMetrics.ts with getCharDisplayWidth (East Asian Width)
and getCharByteLength (UTF-8 / GB18030) utilities.
39 new and updated tests all pass.
* fix: address codex review — surrogate pairs, effective encoding, cursor guard, broadcast
Address all 5 P2 Codex review comments on PR #3325 :
1. GB18030 4-byte supplementary chars: CJK Extension B+ (cp > 0xFFFF)
now returns 4 bytes instead of 2, matching iconv-lite's GB18030
encoder.
2. Effective session encoding: add currentEncodingRef to runtime
context so toolbar encoding changes propagate to backspace byte
length calculation (not just the saved host.charset).
3. Cursor-movement guard: track lastInputWasPrintable so backspace
byte expansion only fires when the cursor is at the end of the
typed buffer, not after arrow-key escape sequences.
4. Surrogate-pair-safe slicing: getLastChar/removeLastChar helpers
handle UTF-16 surrogate pairs (emoji, CJK Extension B) so slice(0, -1)
never leaves an orphan high surrogate.
5. Broadcast expansion: when backspace is expanded for the source
serial session, the same expanded data is sent to broadcast peers
instead of the original single-byte backspace.
Adds isPrintableInput, getLastChar, removeLastChar helpers.
56 tests pass.
* fix: address codex review — scope, bracketed paste, cursor confidence
Address 3 new Codex review comments on PR #3325 :
1. P1: isExpanded/outData were declared inside the character-mode else
block but referenced after it (ReferenceError in serial line mode).
Moved declarations before the if/else so both branches share scope.
2. P2: Bracketed paste (\x1b[200~...\x1b[201~) starts with ESC so
isPrintableInput returned false, losing tail confidence. Now detected
and lastInputWasPrintable set to true.
3. P2: Printable input after a cursor movement reset lastInputWasPrintable
to true even though the cursor was not at the buffer end. Now the flag
is kept as-is when printable text is typed — only escape sequences
reset it to false.
* fix: establish cursor-tail confidence for initial and post-submission typing
Address Codex review: lastInputWasPrintable started false, so the first
printable input after session start or line submission would keep it
false, defeating the backspace byte expansion guard.
- Initialize to true: cursor is at the end of an empty buffer at
session start and after each line submission.
- Reset to true after Enter (handledSubmittedInput), Ctrl+C, and
Ctrl+U — all three clear the command buffer, placing the cursor
at the beginning of a fresh line.
This restores the original fix for the common case: type 你, press
Backspace, device receives 3 bytes and deletes the whole character.
* fix: address codex review — broadcast safety, paste cursor state, hibernation wake
Address 3 new Codex review comments on PR #3325 :
1. Broadcast safety: stop forwarding expanded backspaces to broadcast
peers. Each peer has its own protocol, encoding, and command buffer,
so the source's repeated DELs can over-delete on non-serial peers
(SSH character-level) or on serial peers with different encodings
(GB18030 needs 2 DELs, not 3). The source session still receives
the expanded data; broadcast peers get the original single DEL.
2. Bracketed paste cursor state: no longer unconditionally set
lastInputWasPrintable=true on paste. After a cursor movement the
paste inserts at the moved cursor, not the buffer tail, so the
flag is now preserved as-is (false stays false).
3. Hibernation wake: initialize lastInputWasPrintable conservatively
when commandBufferRef is nonempty. A hibernated session retains
its buffer but the pre-hibernation cursor may have been moved,
so we start with false instead of true.
* fix: grapheme-safe backspace + gate expansion behind byteOrientedBackspace
Address 2 new Codex review comments on PR #3325 :
1. Remove the whole grapheme on backspace (P2):
getLastChar/removeLastChar only handled UTF-16 surrogate pairs, so a
decomposed grapheme like e + U+0301 returned only the combining mark
and left the base. Rewrite both with Intl.Segmenter (grapheme
granularity) so surrogate pairs, combining marks, variation
selectors, and ZWJ sequences are removed as one unit. getCharByteLength
and getCharDisplayWidth already compose correctly for graphemes.
2. Gate byte expansion on byte-oriented line editing (P2):
Character-aware serial endpoints (e.g. a UTF-8 Linux console with
readline) delete one whole character per DEL, so repeating the
backspace 3x for a 3-byte char over-deletes. Add an explicit
serialConfig.byteOrientedBackspace flag (default true, preserving the
original fix) that users can disable for character-aware editors.
Wired through the serial connect modal and host details panel, with
i18n in en/zh-CN/zh-TW/ru/es, vault host validation, and session
restore/snapshot preservation.
170 tests pass.
* fix: xterm grapheme width for local echo + always compute cell width
Address 2 new Codex review comments on PR #3325 :
1. Use xterm's grapheme width for local-echo erasure (P2):
getCharDisplayWidth returned 1 for emoji-presentation graphemes
(e.g. ❤️ , 1️⃣ , ©️ ) whose base characters fall outside the standard
emoji range. The 15-graphemes Unicode provider active in
createXTermRuntime renders these as 2 cells. Now import
stringCellWidth from terminalStringCellWidth.ts (which uses
_core.unicodeService.getStringCellWidth when available) in both
character mode (createXTermRuntime) and line mode (Terminal.tsx,
serialLineInput). Add VS16 (U+FE0F) detection to both the xterm
fallback and the domain getCharDisplayWidth so emoji-presentation
graphemes are correctly 2 cells even without xterm.
2. Compute local-echo width when byte deletion is disabled (P2):
When byteOrientedBackspace is false, the entire backspace block was
skipped, leaving backspaceCells at 1 and erasing only half of a
2-cell CJK/emoji glyph in local echo. Restructured the condition:
display width is now always computed when backspacing a non-empty
buffer, while wire-byte expansion is independently gated on
byteOrientedBackspace.
182 tests pass.
* fix: read byteOrientedBackspace from session snapshot, not live host
Address Codex review (P2): a restored or hibernated session's
snapshotted serialConfig.byteOrientedBackspace can differ from the
current vault host (e.g. session saved false, host later changed to
true). The runtime read the live host instead of the snapshot, so
after recreation a character-aware session could start expanding DEL
and over-delete again.
Add serialByteOrientedBackspace to the runtime context (mirroring
serialLineMode and serialLocalEcho) and pass it from the session
snapshot in useTerminalEffects. Default true preserves the existing
fix for byte-oriented devices.
182 tests pass.
* fix: carry serialByteOrientedBackspace and currentEncodingRef into hibernation wake context
Address Codex review (P2): xTermRuntimeContextRef.current in Terminal.tsx
omitted serialByteOrientedBackspace and currentEncodingRef, so when
hibernateHiddenTabs woke a serial tab the runtime fell back to default
values (byte-oriented=true, host charset). A session snapshot with
byteOrientedBackspace=false would re-enable byte expansion after waking,
and a toolbar-selected encoding would be lost.
Added both fields to the wake context alongside serialLocalEcho and
serialLineMode, mirroring the useTerminalEffects mount path.
182 tests pass.
* fix: tail confidence after line submission, GB18030 4-byte BMP, free-form encodings
Address 3 Codex review comments (all P2):
1. Preserve tail confidence after line submission:
After Enter submission sets lastInputWasPrintable = true, the same
\r/\n went through the generic control-char branch and immediately
reset it to false. This disabled byte expansion and correct local-echo
width for every subsequent command. Now skip the reset when
handledSubmittedInput is true.
2. Measure GB18030 bytes with the backend encoder:
getCharByteLength assumed every BMP non-ASCII character is 2 bytes.
But BMP characters outside the GBK character set (e.g. U+0100 'Ā')
encode to 4 bytes in GB18030. Added isGbkCharacter() to check the
GBK character set ranges; non-GBK BMP characters now return 4.
3. Use the backend charset for free-form serial encodings:
currentEncodingRef is now always present (hibernation wake fix), so
the ?? fallback to host.charset never triggered. For a Shift_JIS host
with no toolbar override, currentEncodingRef.current is 'utf-8' (the
default), causing UTF-8 byte lengths (3 for あ) instead of Shift_JIS
(2). Now prefer host.charset when it's non-UTF-8 and the toolbar
encoding is the default. Also added Shift_JIS support to
resolveWireEncoding and getCharByteLength (1 byte ASCII, 2 bytes
non-ASCII).
182 tests pass.
* fix: honor remembered UTF-8 when counting serial bytes
Address Codex review (P2): the previous fix treated every
toolbarEnc === 'utf-8' as an unselected default and overrode it with
the host charset. But a GB18030 host with a remembered UTF-8 preference
has its backend session synced to UTF-8 (via shouldSyncTerminalEncodingOnAttach),
so using the host's GB18030 charset for byte counting is wrong.
Now use resolveTerminalEncodingFromCharset to check if the host charset
is recognized by the toolbar system (UTF-8 or GB18030). For recognized
charsets, the toolbar encoding is authoritative (it may reflect a
remembered override). For unrecognized charsets (e.g. Shift_JIS), the
toolbar encoding falls back to the default (utf-8), so the host charset
is the correct wire encoding.
193 tests pass (including terminalEncodingPreference.test.ts).
* fix: honor toolbar changes for free-form charsets + GB18030 4-byte CJK Ext A
Address 2 Codex review comments (both P2):
1. Honor toolbar changes for free-form serial charsets:
When a Shift_JIS session starts and the user later selects UTF-8 in
the toolbar, setSessionEncoding switches the backend to UTF-8, but
the runtime continued using host.charset because it is outside the
two-option resolver. Now pass userPickedEncodingRef to the runtime
context (mirroring existing use in shouldSyncTerminalEncodingOnAttach).
The effective encoding logic:
- Non-utf-8 toolbar → trust toolbar (explicit selection)
- utf-8 toolbar + userPickedEncoding → trust toolbar (explicit utf-8)
- utf-8 toolbar + recognized charset → trust toolbar (remembered override)
- utf-8 toolbar + unrecognized charset → use host.charset (backend default)
2. GB18030 4-byte for CJK Extension A:
isGbkCharacter classified U+3400–U+4DBF (CJK Extension A) as 2-byte
GBK characters, but iconv-lite encodes this block as 4 bytes in
GB18030. Removed the range; these characters now correctly return 4.
193 tests pass.
* fix: simplify effective encoding logic with backendSynced flag
Follow-up to previous fix: the 4-level decision tree had an edge case
where a Shift_JIS host with remembered UTF-8 would use host.charset
instead of the synced toolbar encoding. Simplified to a 3-level logic
using backendSynced = userPicked || hasRemembered:
- backendSynced OR recognized charset → trust toolbar encoding
- NOT synced AND unrecognized charset → use host.charset (backend default)
Added hasRememberedEncodingRef to runtime context (alongside existing
userPickedEncodingRef) so the logic mirrors shouldSyncTerminalEncodingOnAttach.
193 tests pass.
* fix: sum grapheme code points, remove Latin-1 from GBK, generic multi-byte fallback
Address 3 Codex review comments (all P2):
1. Sum every code point in non-UTF-8 graphemes:
GB18030 and Shift_JIS returned after the first non-ASCII code point
instead of counting the complete grapheme that getLastChar returns.
❤️ (U+2764 U+FE0F) is 8 GB18030 bytes, but the old code returned 4.
Now accumulate byte lengths for all code points, like the UTF-8 path.
2. Stop classifying Latin-1 as two-byte GBK:
U+00A1–U+00FE was in isGbkCharacter, but iconv-lite encodes these
as 4 bytes in GB18030. Removed the range; these characters now
correctly return 4 bytes.
3. Count bytes for every backend-supported serial charset:
Unknown encodings fell back to UTF-8 byte length, but the backend
uses iconv-lite for Big5, EUC-JP, Johab, etc. (2 bytes for CJK).
Changed fallback to 1 byte ASCII + 2 bytes non-ASCII, matching
iconv-lite's multi-byte encoding for common serial charsets.
Comment 4 (remembered override for free-form charsets) was already
fixed in commit fca4e7c0 : backendSynced = userPicked || hasRemembered.
193 tests pass.
* fix: Shift_JIS half-width Katakana as 1 byte (iconv-lite 0xA1-0xDF)
Address Codex review (P2): half-width Katakana characters like ア
(U+FF71) are encoded as single bytes (0xB1) in Shift_JIS by iconv-lite,
but the previous code counted every non-ASCII character as 2 bytes.
Backspace sent 2 DELs, deleting the character and one preceding byte.
Now handle the three 1-byte non-ASCII cases in Shift_JIS:
- Half-width Katakana (U+FF61-U+FF9F, mapped to 0xA1-0xDF) → 1 byte
- ¥ (U+00A5, mapped to 0x5C) → 1 byte
- All other non-ASCII → 2 bytes
Self-review: traced all 4 encoding paths (UTF-8, GB18030, Shift_JIS,
unknown fallback) × all edge cases (single/multi-code-point graphemes,
ASCII/BMP/supplementary, GBK/non-GBK ranges). All paths verified correct.
193 tests pass.
* fix: deduplicate terminal width import after main merge
* test: retain input safety checks with serial erase metadata
* fix: restore serial editing after paste and document byte mode
* fix: keep pending serial input on its original encoding
* fix: restore serial backspace after urgent interruption
* fix: retain editable serial snippet input for backspace
* fix(serial): synchronize pending snippet tail state
* fix(serial): unify empty-line input state across text sources
* fix(serial): track editable startup snippets
* fix(serial): share pending-tail tracking for multiline input
---------
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 13:10:52 +08:00
f83b5f6693
fix(sftp): allow copy and paste within the same pane ( #3318 )
...
* fix(#3317 ): automated AI fix
* fix: address Codex review on PR #3318
* fix: address Codex review on PR #3318
* fix: address Codex review on PR #3318
* fix: address Codex review on PR #3318
* fix: address Codex review on PR #3318
* fix: address Codex review on PR #3318
* fix: address Codex review on PR #3318
* fix(sftp): preserve source links during same-pane replacement
* fix(sftp): leave self-directory merge and replace unchanged
* fix(sftp): scope local traversal limits to same-pane copies
* refactor(sftp): centralize same-pane paste filesystem checks
* fix(sftp): preserve source links through bind-mounted parents
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 12:25:18 +08:00
4288948d94
feat(terminal): add theme foregroundIntense color for bold default-foreground text ( #3353 )
...
* fix(#3352 ): automated AI fix
* fix: address Codex review on PR #3353
* fix: address Codex review on PR #3353
* fix(terminal): render intense foreground without rewriting output
* fix(terminal): refresh intense colors and preserve plugin theme contract
* fix(ci): use archived Bullseye security snapshot after LTS expiry
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 11:55:36 +08:00
66deeb8dd9
feat(vault): 新增 FinalShell 主机导入功能 ( #3331 )
...
* feat(vault): 新增 FinalShell 主机导入功能
本次提交完整实现了 FinalShell 连接的导入支持,包括:
1. 新增导入格式检测与解析逻辑,支持解密 FinalShell 加密密码
2. 适配导入流程 UI,新增导入选项与批量目录导入支持
3. 补充多语言国际化文案与测试用例
4. 更新所有相关文档与配置文件
* fix(vault): align FinalShell import guards and agent guidance
* fix(vault): detect FinalShell connections without usernames
* fix(vault): keep password validation lint compliant
* fix(ci): use archived Bullseye security packages for ARM builds
* fix(vault): retain FinalShell profiles and accept BOM JSON
* fix(ci): align archived security source with main
---------
Co-authored-by: YS-zdck <admin@zdck8.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 11:53:24 +08:00
f0b3bca13f
fix(ssh): measure stats latency with SSH ping instead of raw TCP probes ( #3321 )
...
* fix(#3320 ): automated AI fix
* fix: address Codex review on PR #3321
* fix: address Codex review on PR #3321
* fix: address Codex review on PR #3321
* fix(ssh): honor keepalive opt-out during stats latency checks
* fix(ci): pin retired Bullseye security packages to official snapshot
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 11:22:43 +08:00
aaced70fc6
fix(tabs): add Close Tabs to the Left to tab context menu ( #3340 )
...
* fix(#3339 ): automated AI fix
* fix: address Codex review on PR #3340
* fix: address Codex review on PR #3340
* fix: address Codex review on PR #3340
* fix: address Codex review on PR #3340
* fix: address Codex review on PR #3340
* fix: address Codex review on PR #3340
* fix: address Codex review on PR #3340
* fix(tabs): guard complete batch close and verify editor safety
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-12 10:55:36 +08:00
Eric Chan and Cursor
891faff31c
feat(workspace): search hosts by tag ( #3001 ) ( #3337 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-12 10:46:42 +08:00
Netcatty-Bot and netcatty-bot
561f4b3c71
fix( #3327 ): automated AI fix ( #3329 )
...
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
2026-09-12 10:44:49 +08:00
陈大猫
65afea01e0
fix: unify host system detection and simplify host details ( #3312 )
...
* fix: unify host system detection and simplify host details
* fix: retain detected systems for temporary terminal hosts
* fix: detect remote systems after Mosh becomes ready
* fix: show the effective device mode in host system details
2026-09-07 16:31:11 +08:00
fe2f14f032
feat(ai): add Mention Note context picker for Vault Notes ( #3290 )
...
* fix(#3289 ): automated AI fix
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix: address Codex review on PR #3290
* fix(ai): apply note attachment budgets synchronously
* fix(ai): reuse normalized note search fields while typing
* fix(ai): retain draft state binding in panel host
* fix(ai): reject carriage returns in note references
* fix(ai): protect continuation before pruning note payloads
* refactor(ai): keep note mentions as lightweight references
* fix(ai): gate note references on reader availability
* fix(ai): retain note references ahead of replay prose
* refactor(ai): share one instruction across note references
* fix(ai): keep accepted note references within replay space
* Bound agent note reads and add resumable literal search
* Preserve compact note requests and announce picker selection
* Retain mixed attachment context in compact note replay
* Keep imported long note identities readable
* Keep note picker selection and untitled labels consistent
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-07 14:32:08 +08:00
陈大猫
aaac962179
fix(sftp): share pending resume feedback across transfer views ( #3305 )
2026-09-07 10:30:42 +08:00
陈大猫 and netcatty-bot
1babda6fa9
fix(sync): resume auto-sync after first master-key setup ( #3302 )
...
* fix(sync): retry peer unlock when the shared password becomes available
* fix(sync): retain deliberate locks after availability notifications
* fix(sync): preserve deliberate locks after peer password events
* fix(sync): retain deliberate locks across consumer remounts
* fix: address Codex review on PR #3302
* fix: address Codex review on PR #3302
* fix: address Codex review on PR #3302
* fix: address Codex review on PR #3302
* test(sync): cover pending unlock owner handoff
* fix(sync): distinguish stale unlocks from invalid passwords
* fix(sync): retry completed auto unlock after consumers remount
* fix(sync): share auto unlock retry generation across consumers
---------
Co-authored-by: netcatty-bot <308658023+netcatty-bot@users.noreply.github.com >
2026-09-07 10:30:30 +08:00
陈大猫
10ad14223f
fix(sftp): isolate side panel snapshots across tab switches ( #3296 )
2026-09-07 10:30:15 +08:00
陈大猫
fd54339367
fix(sftp): settle direct folder downloads after pause and resume ( #3291 )
2026-09-07 10:30:03 +08:00
陈大猫
c9d22b3b4d
fix(sftp): preserve latest pause across delayed transfer controls ( #3284 )
...
* fix(sftp): preserve newer pause decisions across delayed transfer controls
* fix(sftp): stop obsolete recovery after held transfers settle
* fix(sftp): treat superseded cross-window controls as no-ops
* fix(sftp): preserve latest folder control in pause watcher
* fix(sftp): reconcile superseded controls across windows
* test(sftp): expect authoritative action on superseded pause
* fix(sftp): distinguish mixed resume outcomes and IPC failures
* docs(sftp): publish audit findings and validation boundaries
* docs(sftp): record final publication and restart validation
* fix(sftp): reflect partial resumes and reconcile remote watcher controls
* fix(sftp): preserve resolved resume failures in partial folders
2026-09-06 14:13:49 +08:00
陈大猫
446e82180b
fix(sftp): settle folder children before history compaction removes their rows ( #3287 )
...
* fix(sftp): observe folder child completion before history compaction
* fix(sftp): carry current child identity through recovery events
* fix(sftp): admit recovered children before waiting for completion
* test(sftp): keep independent audit regressions mergeable
* fix(sftp): resume retained pauses without bypassing newer controls
2026-09-06 13:29:05 +08:00
陈大猫
2eaddf0baf
fix(sftp): refuse ambiguous or replaced resume endpoints ( #3285 )
2026-09-06 13:29:02 +08:00
Atirna and bincxz
0ea8fa4943
fix(port-forwarding): reconnect auto-start rules after inactive status ( #3279 )
...
* fix(port-forwarding): reconnect auto-start rules after inactive status
* fix(port-forwarding): honor current auto-start setting during reconnect
* fix(port-forwarding): ignore retries from replaced connections
* fix(port-forwarding): preserve exhausted retries after close
* fix(port-forwarding): schedule one retry per failed connection
* fix(port-forwarding): retain pending retry status after repeated errors
---------
Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com >
2026-09-05 23:01:41 +08:00