Skip to content

Collapsed column header renders CJK upside-down (rotate(180deg) flips glyphs in vertical writing mode) #1217

Description

@mixflavor

Environment

Kanban 2.0.51, Obsidian on iOS 26 / iPadOS 26 / macOS.

Symptom

When a lane (column) is collapsed (collapse-horizontal), a CJK (Chinese/Japanese/Korean) title renders upside-down — the glyphs themselves are flipped 180°, not merely reversed in order. The lane card-count number is likewise rotated away from horizontal.

Latin titles don't show it obviously, because Latin is laid on its side in vertical writing mode anyway.

Reproduce

  1. Create a board with a column whose title contains CJK, e.g. 日本語テスト or 測試欄.
  2. Collapse that column.
  3. The title characters appear upside-down.

Root cause

src/styles.less (~lines 414–428):

.kanban-plugin__lane-wrapper.collapse-horizontal {
  .kanban-plugin__lane-header-wrapper { writing-mode: vertical-lr; } // CJK already upright here — correct
  .kanban-plugin__lane-title-count,
  .kanban-plugin__lane-title-text {
    transform: rotate(180deg); // flips the already-upright CJK glyphs upside down
  }
}

In writing-mode: vertical-lr, CJK characters are displayed upright. The extra transform: rotate(180deg) then turns them upside down (and rotates the count number).

Suggested fix

Don't rotate the glyphs:

  • Drop transform: rotate(180deg) on .kanban-plugin__lane-title-text — CJK then reads correctly top-to-bottom; Latin reads as standard vertical text.
  • For .kanban-plugin__lane-title-count, use writing-mode: horizontal-tb so the number stays horizontal.

Workaround users can apply today:

.kanban-plugin__lane-wrapper.collapse-horizontal .kanban-plugin__lane-title-text { transform: none !important; }
.kanban-plugin__lane-title-count { transform: none !important; writing-mode: horizontal-tb; }

If the rotate(180deg) was intentional (e.g. to make labels read bottom-to-top), that direction could be preserved without flipping CJK glyphs — happy to open a PR once you confirm the intended collapsed look.

(No screenshot — the board content is private — but it reproduces with any CJK column title; the cause is the CSS above.)

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions