Repository navigation
fix: #4890 use file extension for side bar icons - #4910
Merged
Merged
Conversation
…f name prefix file-icons tests whole-name rules before extension rules, so a markdown file named like another tool's file (e.g. Dockerfile-Notes.md) picked up that tool's icon in the side bar. The tree only lists files with markdown extensions, so match the icon on the extension first and fall back to the full name only for extensionless names. Co-Authored-By: Claude Fable 5 <[email protected]>
niyo-oyin
added a commit
to niyo-oyin/marktext-ja
that referenced
this pull request
Jul 30, 2026
Upstream PRs applied (all diff-reviewed, tests included and passing): - marktext#4776: preserve ordered-list source markers — opening and saving no longer rewrites 1./1./1. to 1./2./3. (marktext#4772, silent doc mutation) - marktext#4788: UNC/WSL paths become valid file:// authority URLs (file://server/share/…, not file:////…) so network images load (marktext#4577, marktext#4563) - marktext#4952: table columns size to content (min-width 10em → 2em, marktext#4894) - marktext#4773: malformed percent-escape in a clicked link no longer throws an unhandled URIError (marktext#4749) - marktext#4873: Shift+digit/punctuation keybindings recordable and matchable again (patch-package fix for @hfelix/electron-localshortcut, marktext#4863) - marktext#4910: sidebar icons match by extension first, so Dockerfile-Notes.md gets the markdown icon (marktext#4890) - marktext#4317: restored windows are clamped to the target display's work area (multi-monitor / DPI, marktext#2928, marktext#1947) Found while integrating marktext#4776: cloneStateTree shallow-copied meta, so array-valued fields (order-list sourceMarkers, table aligns) stayed SHARED between a getState() clone and the live document — mutating a returned tree corrupted the document. Meta arrays are now copied, and the clone walks an explicit work list instead of recursing, so pathological nesting (600-level lists, marktext#4747) can no longer overflow the call stack (10k-depth regression test). Also: folder search debounces its per-keystroke ripgrep run (300ms, Enter searches immediately, IME-composing keys ignored) (marktext#3556), and a new undoFloor spec pins that undoing past the opened baseline never empties the document (marktext#5028 — legacy-engine bug, does not reproduce on @muyajs/core). muya 1536/1536, desktop 783/783, lint/tsc/madge clean. PLANS.md gains a prioritized backlog from the full 563-item issue/PR survey.
Jocs
approved these changes
Sep 7, 2026
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.
Description
Fixes #4890 — a markdown file whose name starts with
Dockerfile(e.g.Dockerfile-Notes.md) was shown with the Docker icon in the side bar instead of the Markdown icon.Root cause
@marktext/file-iconstests whole-name rules before extension rules, and its Docker rule is an unanchored prefix match (/^(?:Dockerfile|docker-compose)|\.docker(?:file|ignore)$/i), so any file name starting withDockerfilematches it — including markdown files.Fix
The side bar tree only lists files with markdown extensions (the directory watcher in
main/filesystem/watcher.tsfilters out everything else), so the extension is the reliable signal. The icon lookup (extracted fromicon.vueintofileIconClass.tsso it can be unit-tested) now matches on the extension first and falls back to the full name only for extensionless names:Dockerfile-Notes.md→ markdown icon ✅ (was docker)notes.md, unknown/empty names → markdown icon (unchanged)Dockerfile,app.dockerfile→ docker icon (unchanged)The durable upstream fix would be anchoring the Docker regex in marktext/file-icons (e.g.
/^(?:Dockerfile|docker-compose)(?:$|\.)/), which would also benefit the other consumers — happy to send that PR too if wanted.Tests
Added
test/unit/specs/file-icon-class.spec.tscovering the cases above; it passes against the current (unfixed)@marktext/file-icons, i.e. the fix is fully app-side.pnpm run lintandpnpm run typecheckpass.🤖 Generated with Claude Code