fix : File/Folder path swimlanes - key by full path, with a readable, pinnable header | #839#845
Conversation
PR Summary by QodoFix path swimlane keying; add truncation + sticky, correctly sized headers
AI Description
Diagram
High-Level Assessment
Files changed (9)
|
Code Review by Qodo
Context used 1.
|
…s width | tu2-atmanand#839 - counter stays after the name, overflow clipped, value no longer collapses (flex min-width) - size the horizontal header to the columns' width via contain:inline-size (scrolls with them)
…tart/middle/end) | tu2-atmanand#839 Adds a headerTruncation option (start / middle / end) so the full vault path stays readable. Default middle: keeps the path root and last 3 segments (distinguishes same-named files; folder tails keep the trailing slash).
…125px | tu2-atmanand#839 Measure each row with a ResizeObserver so the rotated header spans the row's real height instead of a hard-coded 125px.
… width | tu2-atmanand#839 A minimized swimlane renders no columns, so its header stretched to the full container instead of the columns' width - in both the horizontal and vertical header layouts. Measure the always-rendered column-header width and apply it to collapsed rows so they match the expanded ones. The ResizeObserver is created in the header element's own window, so the measurement also works when the board is in a popout window.
… spacing | tu2-atmanand#839 The header carries position:sticky but filled its row (flex:1), so it had no room to travel and scrolled away with the columns. Size the inner label/count group to its content (flex: 0 1 auto) instead of filling the row, so sticky engages: the label and count pin to the left while the full-width bar scrolls with the columns. The group shrinks to the bar and truncates only at its edge, so the label uses all the available width rather than a fixed fraction. Both the horizontal and vertical collapsed headers. Also align the collapsed header spacing so the horizontal and vertical layouts match: equal label-to-value (0.5rem) and value-to-count (1rem) gaps, and the chevron flush to the label (the vertical layout previously used one flex gap that also spread the chevron away).
34c8ff4 to
c57fa74
Compare
|
Hi @NikolayYakovlev ! Thank you very much for joining the development of this plugin project! I have not gone through the whole PR yet, just saw the video (thanks for sharing that and testing all possible cases), the suggested solution looks promising to me. I was wondering about the problem you have raised in the #839 but couldnt able to find a better solution earlier. Your solution might be the right way to go about it. I am actually very busy these days, and not sure, if I will going to get much time to get active again in this project any time soon. But, will find some time to finish off some of the very important things on the roadmap. Actually, I was supposed to release the next series of this plugin, In next few weeks, Ill find some time to release the I have also seen your another PR, that PR might not be required, as I believe |
|
Hi @tu2-atmanand, thanks a lot for the kind welcome, and for building Task Board in the first place. A few weeks ago I realized I could no longer keep my tasks under control. I keep my knowledge base in Obsidian, and separately a Git repo full of small utility projects, each with its own docs and its own task list with different levels of importance, urgency, and so on. It became clear I needed a Kanban board, but one that could gather tasks from many files. After some searching I narrowed it down to a few main candidates and looked into what each could do. Your plugin turned out to be the best fit: one place that pulls together tasks from across the whole vault, with filtering and exclusion, and support for different sets of columns (I saw PR #583, and honestly I'd like to adapt it for my own use when I find the time, or wait for it to land in main / 2.0.0). Using it day to day, though, a number of defects surfaced almost immediately, ones that currently keep me from fully relying on it in my setup. My vault has a lot of files, so I hit problems with scanning and with unpredictable task display. Right now the folder I've scoped the board to for a demo actually holds more task files than the board shows: at first the filtering worked, then after a restart the tasks disappeared, then a few minutes later three appeared, then a few more. So the next thing I want to dig into is the scanning mechanism itself, along with clearer status messages. There's also the board's sizing in a popout window: it can show the board list collapsed into a hamburger menu even when there's room to stretch across the whole screen. As with the filter display in #838, the cause is that it listens to events on the main window rather than the popout. The list of issues like these keeps growing, but I'm genuinely enthusiastic about it, because nothing else out there comes close to what Task Board already does. As I work out fixes for the rough edges I find, I'll keep opening PRs. 2.0.0 being actively underway, with a fundamentally reworked architecture, is a little daunting, but I'll try to find time to study the differences and will probably move over to the 2.0.0 branch soon, so I don't re-solve problems that are already solved there. And a redesign may well be the only way for a project to keep moving forward; sometimes you have to revisit earlier decisions to meet new demands. So no problem at all if #840 isn't needed. If 1.10 won't be maintained and 2.0.0 already solves it differently, I'm completely fine with that PR being closed. Thanks again for the time you've put into this plugin; it's really good. And take your time with 2.0.0. |
Fixes #839. Swimlanes grouped by File path or Folder path were keyed by the leaf name (the file or folder name), so identically-named files/folders in different locations (several
TODO.md, or adocs/folder under each project) showed up as separate but indistinguishable lanes with identical headers, and shared a single collapse state - minimizing one minimized all of them.They are now keyed by the full vault-relative path, and the header shows that path. Showing the full path surfaced several pre-existing header issues (the header was built for short leaf names), so this PR also makes the header readable and usable: it no longer clips the file name off the end, sizes correctly to the columns, offers a truncation mode, keeps a collapsed lane's header from stretching across the whole board, and pins the header to the left on horizontal scroll.
What changed
fix : key File/Folder path swimlanes by full path, not leaf name- the core fix. Both the collapse state and the header use the fullswimlaneValueinstead of the leafswimlaneName, so same-named files/folders become distinct lanes and collapse independently.fix : swimlane header layout - keep full path visible, size to columns width- keeps the full path from being clipped too early (flexmin-width) and sizes the header to the columns' width viacontain: inline-size(replacing a dependency on a CSS variable that isn't reliably set).feat : selectable path truncation for File/Folder swimlane headers (start/middle/end)- aheaderTruncationoption so long paths stay readable. Default middle (keeps the path root and the last segments, so the file name stays visible); start keeps the tail; end is the classic trailing ellipsis. Applies only to path swimlanes.fix : vertical swimlane header height follows row content, not fixed 125px- the rotated (vertical) header spans the row's real height instead of a hard-coded 125px.fix : collapsed swimlane header no longer stretches to the full board width- a minimized lane rendered no columns, so its full-width header stretched across the whole board; it now matches the columns' width.fix : swimlane header now pins to the left on horizontal scroll (sticky never engaged before)- the header carriedposition: stickybut filled its row, so it had no room to travel and scrolled away. The inner label/count group is made narrow so sticky engages: the label pins to the left while the full-width header bar scrolls with the columns. Works in both the horizontal and vertical header layouts.Before / after
Recorded on stock 1.10.11 (before) and this branch (after):
TODO.md, indistinguishable, collapsing one collapses all (shared state); after: full vault paths, distinct lanes, independent collapse.docsfolders get identical, indistinguishable headers and share a collapse state (same as File path); after: distinct full folder paths.2026.07.08.16.24.57.mp4
2026.07.08.19.27.46.2.mp4
Notes
title=(tooltip) already carried it.position: stickywas already meant to do; there is no new setting - it is always on.