adada
LifeLab · lens · iteration on the real thing
My earlier mock cheated: every result was a one-liner. The real lens carries bodies, subtasks, bullet lists, ordered lists, links — a result can be twenty lines tall. So "make it not a list" isn't the problem; it's already not a list. The actual problems are measure, density, and the fact that a flat tint is the only thing the panel says. Below: today recreated at fidelity, then the same content with five moves applied.
The tint is the only signal, and it says one thing: "transcluded". It can't tell you the contract (does × delete or unlink?), where your keys land, or whether this lens is writable. The loudest channel in the design is spent on the least useful fact.
The right rail is orphaned. :tags: sits a thousand pixels from the headline it belongs to. At this width a result stops reading as one object — your eye can't span it, so the tags become decoration.
Empty sections take a full row to say nothing. subpages … 0 is pure noise, and it appears on every lens of every page forever.
No density control. Five results fill a whole screen because every body renders in full. There's no "show me the shape of the answer" state — and a lens is most often a question, not a document.
Nesting inside a result has no vocabulary. Subtasks, bullets, ordered lists and links all render at the same weight in the same lane, so structure that exists in the text is invisible in the render.
What's already right: section rules with counts, fold in the header, tag-coloured provenance, and the fact that the whole thing is one continuous surface rather than a stack of cards. Keep all four.
adada
+ Add to tags — :tags: applied
ayyy
⌄ 3 more lines
it shoudl be kinda aligned
edited should go
subpages 0 · show empty sections
page / subpages / linked become foldable lens headers with their own counts, chips, and contract — not decorative dividers. Empty ones collapse to one grey line in the footer.On the tint. Dropping it entirely is the aggressive read. The conservative version keeps a very faint panel (2–3% purple) and adds the gutter — the tint says "framed content", the gutter says "and here's the deal". What I'd resist is making the tint darker with depth: darker reads as heavier and more important, which is backwards for a nested lens, and it's exhausted by level three.
a · gutter only — no fill
it shoudl be kinda aligned
⌄ 9 more lines
Weightless, infinitely nestable, most in character with a text-first app. Depth two visible above.
b · faint fill + gutter — the conservative merge
it shoudl be kinda aligned
⌄ 9 more lines
Nested goes lighter, not darker — reads as light through an aperture rather than a card stacked on top, and never accumulates into mud.
c · focus by ink — one lens is hot, the rest recede
it shoudl be kinda aligned
⌄ 9 more lines
Cheap and unmistakable about where keys land — but on real bodies 50% ink risks reading as disabled. Safer variant: fade only the chrome (labels, counts, rails) and leave block text at full contrast.
d · the header is a lens too
project /
the view is a lens · 5 of 31 · ⏎ reframe · p pin
If the page view is a lens, the title is its source and the filter chips are its terms — so re-asking the question is an edit, not a new tab. This is the piece that makes summoning enough.
1 · Cap the measure and pull the rail in. Pure win, no new concepts, fixes the worst readability problem in the screenshot. 2 · Collapse empty sections into one footer line. 3 · Fold bodies by default with an n more lines affordance — this is what turns a lens from a document into an answer. 4 · Add the contract gutter and decide tint-or-no-tint from variants a/b side by side in the real app, on a real page with three nested levels. 5 · Make the page header a lens — the change that removes the reason for tabs.
The one thing I'd hold back: render:cols and any side-by-side tiling. Real results are twenty lines of prose with sublists; they need width. Columns are a review-page mode, not the river.