LifeLab · tag system

Tagging — show, edit, manage

The tag-in-title approach is fused: one CodeMirror slice does display, edit, and add all at once, so tag count fights title length on a single line. These mocks pull the three jobs apart — keep a calm inline display that handles overflow, move deliberate editing to the minibuffer, keep inline : for fast-add, and push rename/merge to a tags surface.

Show · progressive

Right-aligned column with +N collapse at rest; expands to a full second line when the block has the cursor.

Edit · C-c C-q

org's own set-tags chord opens the minibuffer — removable chips + completion against the tag index.

Add · inline :

Type : on a headline and the completion popup fires — the same source [[ and (( use.

Manage · tags surface

The [all] filter bar grows into rename / merge / browse. Cleanup lives off the block.

nowTHE SNAG

Tags and title share one line

A couple of tags right-align fine — that's the org look you want. But a long headline plus five tags collide, and there's nowhere to read either. The slice that shows tags is also the only place to edit them, so the crowding hurts twice.

Home
FINE · two tags, short title
*groceries :errand:home:
CROWDED · long title, five tags
* weekly review log of everything from this week :study:habit:review:personal:planning:
Two failures at once: the title is unreadable where the tags butt in, and to edit any tag you have to land the cursor in that exact crushed region. More tags only makes both worse.
ASHOW · column + collapse

Hard right column, overflow → +N

Tags get a fixed column boundary. The title truncates with before it reaches the column, so the two never collide. When the tag set itself overflows, it collapses to :study:habit: +3 — the +18 more pattern you already use.

tag column
Home
* weekly review log of everything from this week :study:habit:+3
* groceries :errand:home:
* third-tone sandhi notes — when 3+3 becomes 2+3 :study:grammar:
* portfolio dashboard :finance:+2
Smallest change — stays pure org. Cost: long titles clip at rest. Best when titles are short and you scan many blocks. Hovering +3 previews the rest; focusing the block reveals all (see A→B).
A→BSHOW · progressive

Collapsed at rest, full on focus

The recommended default. At rest a block reads as A — truncated title, +N tags. The moment your cursor is in the block, tags drop to a full left-aligned second line (B) and the title stops truncating. Calm while scanning, complete while editing.

Home
AT REST · A
* weekly review log of everything from this week :study:habit:+3
cursor enters the block ↓
FOCUSED · B
* weekly review log of everything from this week
:study:habit:review:personal:planning:
No new vocabulary — just progressive disclosure. The full title is always readable on the block you're working, the full tag set is always present to edit, and the river stays dense everywhere else.
CSHOW · drawer

Fold extras into a :tags: drawer

For blocks that carry a lot of tags, reuse the ▸ :PROPERTIES: … :END: drawer you already render on trades. Show the first two inline; fold the rest into a collapsible ▸ :tags: drawer. Hides noise hard — costs one click to see everything.

Home
COLLAPSED
* weekly review log :study:habit:
:tags: (5)
click the drawer ↓
EXPANDED
* weekly review log :study:habit:
:tags:
:study:habit:review:personal:planning:
Most consistent with existing chrome — it's the same drawer machinery as :PROPERTIES:. Best if heavy-tag blocks are the exception, not the rule; otherwise the click tax adds up versus A→B.
editDELIBERATE · minibuffer

C-c C-q opens the tag editor

org's real org-set-tags-command chord. Stop editing tags wedged in the title — point on a block, C-c C-q, and the bottom minibuffer takes over with full width: current tags as removable chips, type-to-filter against the tag index, commits back to block metadata which re-syncs the inline display.

Home
* weekly review log :study:habit:review:
:LOGBOOK:point is here · editing tags below
*Mandarin study :study:
Why a minibuffer and not inline: editing wants room and completion, which the crushed title slice can't give. The minibuffer is the same widget that drives summon — pointed at the tag index instead of the block index. :tag: stays the only notation; no #, no pill-cards in the river.
-:**-today.org(Org River) L2  ·  set-tags  C-g abort
Tags: :study× :habit× :review× plan
completion · tag index 3 match "plan"
:planning:38 blocksadd ↵
:planning/quarterly:12 blocks
:finance/plan:7 blocks
+ create :plan:new tag
↑↓move add tag remove last Tabcomplete commit on close
addFAST · inline :

Type : and the popup fires

Fast-add stays inline and frictionless. Type : anywhere on a headline and the same completion source that backs [[pages]] and ((blocks)) offers matching tags with their block counts. drops the :tag: in; keep typing for the next.

Home
*spiderman 2 :movies:
TYPING ON THE HEADLINE
* weekly review log :stu
tag completion 3 match "stu"
:study:142 blocks
:study/mandarin:61 blocks
:study/flashcards:23 blocks
Two paths, one index: inline : for one quick tag while you write; C-c C-q for considered editing of the whole set. Both complete against the same tag list, so the vocabulary never drifts.
manageOFF-BLOCK · tags surface

The [all] bar grows up

Rename, merge and browse don't belong on a block. Your existing [all] [page] :Jun 20: filter bar is the seed — expand it into a tags page: every tag with its block count, inline rename, merge-into, and "open all blocks with this tag." Keyboard-first, same row grammar as search results.

Tags
[all]142 · study142 habit38 finance61 movies27 sort: count · name · recent
:study: 142 blocks rrename·mmerge·open all
:study/mandarin: 61 blocks
:finance: 61 blocks
:habit: 38 blocks
:movies: 27 blocks
:review: 19 blocks
rrename across all blocks mmerge into another tag summon every block with this tag
Why off the block: renaming :study: touches 142 blocks at once — that's a corpus operation, not an inline edit. The block-level affordances (A→B, C-c C-q, inline :) handle one block's tags; the tags surface handles the vocabulary itself.