fix: clear codacy focus and history highs
This commit is contained in:
@@ -36,11 +36,11 @@ function buildSortItems(locale: AppLocale, customProperties?: string[]): SortIte
|
||||
}
|
||||
|
||||
function resolveFocusedIndex(groupLabel: string, current: SortOption, sortItems: SortItem[]) {
|
||||
const activeElement = document.activeElement
|
||||
if (activeElement instanceof HTMLElement) {
|
||||
const activeIndexText = activeElement.dataset.sortItemIndex
|
||||
const activeHTMLElement = document.activeElement
|
||||
if (activeHTMLElement instanceof HTMLElement) {
|
||||
const activeIndexText = activeHTMLElement.dataset.sortItemIndex
|
||||
const activeIndex = activeIndexText === undefined ? -1 : Number(activeIndexText)
|
||||
if (activeElement.dataset.sortGroupLabel === groupLabel && activeIndex >= 0) return activeIndex
|
||||
if (activeHTMLElement.dataset.sortGroupLabel === groupLabel && activeIndex >= 0) return activeIndex
|
||||
}
|
||||
|
||||
const currentIndex = sortItems.findIndex((item) => item.value === current)
|
||||
|
||||
@@ -400,13 +400,13 @@ export function useNoteListSort({
|
||||
|
||||
// --- useMultiSelectKeyboard ---
|
||||
|
||||
function isInputFocused(): boolean {
|
||||
const activeElement = document.activeElement
|
||||
if (!(activeElement instanceof HTMLElement)) return false
|
||||
function isInputHtmlElementFocused(): boolean {
|
||||
const activeHTMLElement = document.activeElement
|
||||
if (!(activeHTMLElement instanceof HTMLElement)) return false
|
||||
|
||||
return activeElement.tagName === 'INPUT'
|
||||
|| activeElement.tagName === 'TEXTAREA'
|
||||
|| activeElement.isContentEditable
|
||||
return activeHTMLElement.tagName === 'INPUT'
|
||||
|| activeHTMLElement.tagName === 'TEXTAREA'
|
||||
|| activeHTMLElement.isContentEditable
|
||||
}
|
||||
|
||||
function handleEscapeKey(e: KeyboardEvent, multiSelect: MultiSelectState) {
|
||||
@@ -416,7 +416,7 @@ function handleEscapeKey(e: KeyboardEvent, multiSelect: MultiSelectState) {
|
||||
}
|
||||
|
||||
function handleSelectAllKey(e: KeyboardEvent, multiSelect: MultiSelectState, isEntityView: boolean) {
|
||||
if (e.key !== 'a' || !(e.metaKey || e.ctrlKey) || isEntityView || isInputFocused()) return
|
||||
if (e.key !== 'a' || !(e.metaKey || e.ctrlKey) || isEntityView || isInputHtmlElementFocused()) return
|
||||
e.preventDefault()
|
||||
multiSelect.selectAll()
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@ interface UseMultiSelectKeyboardOptions {
|
||||
enableActionShortcuts?: boolean
|
||||
}
|
||||
|
||||
function isInputFocused(): boolean {
|
||||
const activeElement = document.activeElement
|
||||
if (!(activeElement instanceof HTMLElement)) return false
|
||||
function isInputHtmlElementFocused(): boolean {
|
||||
const activeHTMLElement = document.activeElement
|
||||
if (!(activeHTMLElement instanceof HTMLElement)) return false
|
||||
|
||||
return activeElement.tagName === 'INPUT'
|
||||
|| activeElement.tagName === 'TEXTAREA'
|
||||
|| activeElement.isContentEditable
|
||||
return activeHTMLElement.tagName === 'INPUT'
|
||||
|| activeHTMLElement.tagName === 'TEXTAREA'
|
||||
|| activeHTMLElement.isContentEditable
|
||||
}
|
||||
|
||||
function usesCommandModifier(event: KeyboardEvent): boolean {
|
||||
@@ -29,7 +29,7 @@ function clearSelectionOnEscape(event: KeyboardEvent, multiSelect: MultiSelectSt
|
||||
}
|
||||
|
||||
function selectVisibleNotes(event: KeyboardEvent, multiSelect: MultiSelectState, isEntityView: boolean) {
|
||||
if (event.key !== 'a' || !(event.metaKey || event.ctrlKey) || isEntityView || isInputFocused()) return
|
||||
if (event.key !== 'a' || !(event.metaKey || event.ctrlKey) || isEntityView || isInputHtmlElementFocused()) return
|
||||
event.preventDefault()
|
||||
multiSelect.selectAll()
|
||||
}
|
||||
|
||||
@@ -71,16 +71,15 @@ const CONVERSATION_HISTORY_CLOSE_MARKER = ['</', 'conversation_history', '>'].jo
|
||||
/** Keep the most recent messages that fit within `maxTokens`. Drops oldest first. */
|
||||
export function trimHistory(history: ChatMessage[], maxTokens: number): ChatMessage[] {
|
||||
let tokenCount = 0
|
||||
const result: ChatMessage[] = []
|
||||
for (let i = history.length - 1; i >= 0; i--) {
|
||||
const message = history.at(i)
|
||||
if (!message) continue
|
||||
const newestFirst = [...history].reverse()
|
||||
const keptNewestFirst: ChatMessage[] = []
|
||||
for (const message of newestFirst) {
|
||||
const tokens = estimateTokens(message.content)
|
||||
if (tokenCount + tokens > maxTokens) break
|
||||
result.unshift(message)
|
||||
keptNewestFirst.push(message)
|
||||
tokenCount += tokens
|
||||
}
|
||||
return result
|
||||
return keptNewestFirst.reverse()
|
||||
}
|
||||
|
||||
/** Format conversation history + new message into a single prompt for the CLI. */
|
||||
@@ -158,11 +157,11 @@ function handleChatStreamEvent(
|
||||
* can verify that history is actually being sent.
|
||||
*/
|
||||
function mockChatResponse(message: string): string {
|
||||
if (message.includes(CONVERSATION_HISTORY_OPEN_MARKER)) {
|
||||
if (message.indexOf(CONVERSATION_HISTORY_OPEN_MARKER) >= 0) {
|
||||
const allUserLines = message.match(/\[user\]: .+/g) ?? []
|
||||
const turnCount = allUserLines.length
|
||||
// The last [user] line is the actual new message
|
||||
const lastLine = allUserLines[allUserLines.length - 1] ?? ''
|
||||
const lastLine = allUserLines.at(-1) ?? ''
|
||||
const lastUserMsg = lastLine.replace('[user]: ', '')
|
||||
return `[mock-with-history turns=${turnCount}] You asked: "${lastUserMsg}"`
|
||||
}
|
||||
|
||||
@@ -36,10 +36,10 @@ const CONVERSATION_HISTORY_OPEN_MARKER = ['<', 'conversation_history', '>'].join
|
||||
|
||||
function mockAgentResponse(agent: AiAgentId, message: string): string {
|
||||
const agentLabel = getAiAgentDefinition(agent).label
|
||||
if (message.includes(CONVERSATION_HISTORY_OPEN_MARKER)) {
|
||||
if (message.indexOf(CONVERSATION_HISTORY_OPEN_MARKER) >= 0) {
|
||||
const allUserLines = message.match(/\[user\]: .+/g) ?? []
|
||||
const turnCount = allUserLines.length
|
||||
const lastLine = allUserLines[allUserLines.length - 1] ?? ''
|
||||
const lastLine = allUserLines.at(-1) ?? ''
|
||||
const lastUserMsg = lastLine.replace('[user]: ', '')
|
||||
return `[mock-${agentLabel.toLowerCase()} turns=${turnCount}] You asked: "${lastUserMsg}" — This note is related to [[Build Laputa App]] and [[Matteo Cellini]].`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user