- Replace SVG icon with ⧉ character (same as code block)
- Match font-size, padding, border-radius, background
- Remove border and flex layout, use simple text button
- Both buttons now visually identical (~16.5x14.7px)
- Add !important to all Flatpickr CSS overrides to beat CDN specificity
- Change dateFormat from ISO 'Y-m-d\TH:i' to 'Y-m-d H:i' (double space)
- Update tokGetFiltered to use .replace(/\s+/,'T') for Safari compat
- Add Flatpickr CDN (CSS + JS + zh locale) to index.html
- Change input type to text with .tok-date class
- Add Flatpickr theme override using CSS variables (light + dark)
- Initialize Flatpickr instances with ISO dateFormat for Safari compat
- Update reset button to use fp.clear() API
Replace hardcoded max-width (760px/560px) with CSS variable
--chat-max-w: clamp(600px, 75%, 1000px) so the chat area
scales naturally on wider displays.
- Remove colored borders and backgrounds from fold components
- Use 2px left border line for visual hierarchy
- Keep subtle color coding (blue=tool, green=result, gold=thinking)
- Fix .bubble.md pre specificity override for fold pre elements
- normalize() now preserves ts field from API response
- restoreElapsedBadges() moved to pollSession finally block
(messages are empty during renderAllMessages)
- sendPrompt() adds ts to local user messages
- restoreElapsedBadges() resets lastUserTs when user msg has no ts
(prevents stale accumulation from previous rounds)
- Show elapsed time badge on assistant messages during task execution
- Timer starts on busy, stops on idle, displays final duration
- Fix badge flicker: preserve badge across typewriter innerHTML rewrites
- Fix layout jump: CSS fixed min-height for .task-elapsed
- Fix summary duplication: strip extracted summary from last turn body
- i18n: zh '已运行 {t}' / en 'Elapsed {t}'
The last turn's <summary> tag content was rendered both in the turn
header (via extractTurnSummary) and in the body (via foldBlocks).
Strip the <summary> tag from seg.body before passing to foldBlocks
when a turn number is present, so it only appears once in the header.
Redo of #8 on top of latest main (97f613d), keeping all merged work intact:
- F4 IME: Enter ignores composition (isComposing / keyCode 229) so CJK input
confirmation no longer fires a send
- F1 copy buttons unified to SVG clipboard/check icons
- F5 assistant bubble width fills the conversation column
- F3 fold history by turn (last turn flat); tool-call/thinking regex aligned
with agent_loop streaming
- F2 per-bubble "copy this turn" (last turn only, strips <summary>)
- F6 smart scroll: only follow when isNearBottom(80px); typewriter rerender
preserves user-expanded <details>
- F7 fold header gets the turn's <summary> as subtitle
Verified to keep #5 interrupt-and-resend, the 97f613d stop-button behavior,
#6 image bubble, and #10 file cards untouched. No hardcoded colors/strings.
DEV_NOTEBOOK.md from the PR is intentionally dropped — it's wjl2023's personal
dev journal (local paths, fork notes), not project documentation.
Closes#11
Co-Authored-By: dd3xp <zhangjingming131@gmail.com>
- Moonshot API (like Kimi) only accepts temperature=1.0
- Added 'moonshot' detection alongside 'kimi' in both raw_ask methods
- Prevents 400 errors when using moonshot models