This repository was archived by the owner on Aug 22, 2026. It is now read-only.
Fix three override-layer regressions and add an opt-in Style Settings section - #2
Open
RoversX wants to merge 6 commits into
Open
Fix three override-layer regressions and add an opt-in Style Settings section#2RoversX wants to merge 6 commits into
RoversX wants to merge 6 commits into
Conversation
Minimal turns the tab strip divider off for its Modern tab style so the tabs read as detached chips. mnml's own tab variable block has identical specificity (0,4,0) and is concatenated after the upstream base, so it silently won and drew the hairline back, re-attaching the tabs to the note. Scope an override to body.tabs-modern so the chosen tab style wins. The selector sits a specificity band above the base rule, which keeps it correct regardless of how normalize-theme.mjs orders the output.
The body block already defines --inline-title-font, --inline-title-size, and --inline-title-color, but the .inline-title rule hardcoded the font and size again from the --mnml-note-identity-* pair. The hardcoded declarations won, so Minimal's Style Settings controls for inline title font, size, and color had no effect at all. Point the rule at the variables it is meant to read. The rendered defaults are unchanged because those variables already resolve to the same values. Also drop the extra opacity: 0.72. Stacking 28% transparency on top of --text-muted washed out any color chosen through Style Settings, which defeated the control this commit restores. The title is a touch brighter as a result; the muted color still carries the quiet treatment.
mnml deliberately mutes the inline title so the filename reads as context rather than as the loudest heading on the page. The properties heading directly beneath it was left at its default size, weight, and --text-normal color, so it became the most prominent text in the note and inverted the hierarchy the muted title exists to create. Quieting one element only works if its neighbours are quiet too. Bring the heading down to the same note-identity register.
mnml had no @settings block of its own, so every choice it made was fixed. Minimal already ships three such blocks, so a fourth is a natural fit rather than a new dependency. All four options are off by default, which keeps the rendered appearance unchanged for anyone who does not open Style Settings: - Hide the tab bar divider, for a seamless strip under tab styles that do not already drop it. - Prominent note title, for readers who want the filename to carry the page. It sets colour only, so it never overwrites a size or weight picked through Minimal's own inline title controls. - Fade sidebar scroll edges. The file list is a scroll container whose overflow boundary slices rows in half against the toolbar above and the vault profile below. - Fade the note scroll edge, for the same seam where a note passes under its header. The fades use mask-image rather than an overlay: a mask removes pixels instead of painting over them, so macOS vibrancy survives behind the sidebar. Their gradient distance is shared through --mnml-scroll-fade. Each toggle selector carries a body class, placing it a specificity band above the rule it overrides, so the ordering normalize-theme.mjs applies to the generated file cannot change the outcome.
Minimal leaves the root view header without a bottom border, so a scrolling note runs ragged straight into the breadcrumb bar with nothing marking the boundary. Draw it deliberately with the divider width and colour already used for the tab strip and backlinks, so no new hardcoded value enters the theme. A drawn edge and a faded one are alternative answers to the same seam, so this hairline stands down when the Fade the note scroll edge option is switched on, and the two treatments never stack.
The modal close and header buttons are the one piece of dialog chrome neither Minimal nor mnml had an opinion about, so they kept Obsidian's default treatment while the rest of the theme moved to softer shapes. Add a fifth Style Settings toggle, off by default like the others, that draws both as circular targets. Their background appears only on hover or keyboard focus, matching how mnml already treats the status bar, tab close buttons, and backlink controls: quiet at rest, responsive on contact. Two details the implementation has to handle: - Obsidian declares corner-shape from --corner-shape to give its controls a squircle, which renders a 50% radius as a superellipse rather than a circle. The rule retargets that variable rather than the property, because corner-shape is too new for the pinned Stylelint and normalize-theme.mjs treats an unknown property as a build error. - The box is squared explicitly, with matching min and max bounds, no padding or border, and align-self: center, so the circle survives whatever sizing the core stylesheet gives these elements now or later. Also fix the Style Settings table intro, which still said mnml adds one option of its own while listing four.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Thank you for making this. I finally have a sufficiently simple theme. Three fixes where mnml's override layer was fighting Minimal or itself, plus three opt-in refinements.
Fixes
e440a78— mnml's tab block has the same specificity as Minimal'stabs-modernrule and lands after it, so it re-drew the divider Modern deliberately removes. Now scoped tobody.tabs-modern.db5dcd6—.inline-titlerestated font and size instead of reading the--inline-title-*variables, so Minimal's Style Settings controls for the title did nothing. Also dropsopacity: 0.72, which washed out any colour set through them.7c33997— the properties heading kept its default size and--text-normal, so it outranked the muted note title directly above it.Additions
49a10a3— mnml's first@settingsblock: hide the tab bar divider, prominent note title, fade sidebar scroll edges, fade the note scroll edge.55f84de— a fifth option: round modal buttons.f6604b2— a hairline under the note header, using the divider width and colour already in the theme. It stands down when the note fade is on, so the two treatments never stack.Every Style Settings option is off by default.
Default appearance changes
Two, each droppable on its own:
db5dcd6— the inline title is slightly brighter.f6604b2— the new hairline. This is the opinionated one.Tested on macOS with translucency, toggling each option, and checking the note fade against the editor caret,
[[autocomplete, and hover previews.Happy to split this up or drop anything you don't want.