mirror of
https://github.com/ancsemi/Haven.git
synced 2026-10-31 19:16:08 +00:00
* fix(braid): keep main channels out of sub-channel cards _markRuns marked a channel card run from "is my neighbour also a .channel-item", with no notion of parentage, so any unbroken run of rows became one card. The first main channel after another channel's sub-channels continued their card, and read as belonging to a tag it has no relation to. Reported on both the web client and the Android app. A card is now a family: siblings under one parent, or a parent followed by its own subs. famOf() keys a sub row by dataset.parentId and a main row by "main". joinsRun() continues a run only inside one key, or from a parent into its own subs, so sub -> main always breaks the card. The sub-tag-label row carries the same parentId, so a tag stays with the subs it labels. Version 1.7 -> 1.8. * fix(braid): a main channel always starts its own card Follow-up to review: the first rule still let two adjacent main channels share a card. A main channel now always begins a new group, so it can never sit inside a run that reads as a sub-channel family. A card is a main channel plus its own subs, or a run of sibling subs, or the DM list. joinsRun() continues a run only into a sub row: from that sub's parent, or from a sibling sub with the same parentId. Anything into a main row breaks. DM rows keep grouping among themselves. * fix(braid): a tag header takes over the grouping, so its channels read flat Matches the Android app. When sub-channels are re-grouped under their own tag header, the header already carries the grouping, so indenting the rows under it as well claims the sub arrow for channels that only look nested because of where they sit. Rows the core marks with data-sub-tag (exactly those under a tag label) get data-braid-flat, and the arrow is painted over with # in Braid form. Private subs keep their lock, since only a literal arrow is replaced, and a sub shown directly beneath its parent with no header still keeps it. Purely cosmetic and scoped to data-braid-form, so toggling the form off restores the original glyph with no DOM left behind.