feat: polish nav-row tooltips (delay, localization, persistence) - #30
Merged
Conversation
Obsidian's native aria-label tooltips use a 1000ms cold-start delay and a 100ms warm window, so hovering across the chat toolbar feels inconsistent and sluggish compared to common web toolbars (200-700ms initial, ~300ms warm). Route the navigation buttons (new tab, new conversation, chat history) and the tab-bar badges through a shared setButtonTooltip helper built on the official setTooltip API with a 300ms delay, keeping native rendering and accessibility intact. The obsidian test mock mirrors setTooltip so unit tests exercise the new path. Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
…uttons
The credits usage button set a browser `title` attribute with the live
usage percentage, so its tooltip rendered in the OS/browser style and
read differently from the other nav-row buttons, which use aria-label
and Obsidian's native tooltip. Drop the percentage from the trigger
copy in all ten locales and set a static aria-label ("Usage") instead,
so the gauge button looks and behaves like its neighbors; the popover
panel keeps the detailed numbers.
Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
The nav-row buttons hardcoded English strings ("New tab",
"New conversation", "Chat history") and getTabTitle fell back to a
hardcoded "New Chat", so non-English locales (e.g. zh-CN) saw English
tooltips next to the localized credits button. Route them through the
i18n catalog: reuse commands.newTab for the new-tab button and add a
nav group (newConversation / chatHistory / newChat) in all ten locales.
Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
…witch On Obsidian 1.13+ the declarative settings base class persists control changes into the plugin data file, but Qoderian loads its settings from .qoderian/qoderian-settings.json, so simple controls (language, auto-scroll, and the other toggles) silently reverted on restart. Per the API contract, override setControlValue to write to our own data source: mutate the settings bag and save once through saveSettings(), skipping the base class' data.json write. After a language change, open chat views also re-apply localized static text (nav-row tooltips, tab titles, and the credits button label/panel) via a new refreshLocalizedChrome() instead of keeping the old language until the view reopens. Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
The credits button still wrote its aria-label directly, keeping the default 1s native delay while the other nav-row buttons use the shared setButtonTooltip helper (300ms). Use the same helper so the button is built and hinted exactly like its neighbors; only its click behavior (opening the usage popover) differs. Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
luoxuanzao
force-pushed
the
feat/nav-tooltip-polish
branch
from
August 18, 2026 00:48
9d8e4fb to
b441916
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
setTooltipAPI with a 300ms hover delay via a sharedsetButtonTooltiphelper, instead of Obsidian's 1000ms cold-start default that felt sluggish and inconsistent between adjacent buttons.titlewith the live percentage, rendering in a different tooltip style. Only its click behavior (opening the usage popover) differs.commands.newTabreused, newnavgroup) in all ten locales, so zh-CN etc. no longer show English tooltips next to localized controls..qoderian/qoderian-settings.json, so simple controls (language, auto-scroll, other toggles) silently reverted on restart.setControlValuenow writes to our own data source per the API contract (single write, no data.json duplicate).refreshLocalizedChrome()instead of keeping the old language until the view reopens.Verification
npm run typechecknpm run lintnpm run test(3341 passed)npm run buildnpm run release:checknpm run audit:prod(0 vulnerabilities)Safety
CHANGELOG.md