feat(tui-v2): tighten board density by removing redundant headers

Remove plain-text section labels above card frames since card titles
are self-descriptive. Remove compact-mode noise line. Cap note preview
at 100 chars. Saves 2-4 lines per board for better viewport fit.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.6 committed 2026-03-02 20:59:37 -05:00
1 parent d1807ddab6
commit 5af052499b
4 files changed
+45 -20

No files matched your search

+30
View File
@@ -1198,3 +1198,33 @@ Strict closeout impact:
1. All 9 board types now have consistent card-section framing.
2. SSH/PGP/Nostr/Seed boards moved from visual-gap to card-parity with Password/Note.
## 33) Progress Update (2026-03-03, Slice: Board Density Tightening)
Completed:
1. Removed redundant plain-text section headers above card frames:
- "Login Fields", "Document Fields", "2FA Fields", "Seed Fields", "Key Material", "Operations"
- Card titles (`Credentials`, `Content`, `Parameters`, `Seed Info`, `Keys`, `Quick Actions`) are self-descriptive.
2. Removed "Compact: Notes/Tags shown inline." noise line from compact mode boards.
3. Capped note/document preview length from 180 to 100 chars to prevent oversized Content cards.
Density improvement:
1. Password board: ~21 lines -> 17 lines (-4 lines per board).
2. All boards save 2-3 lines from removed section headers.
3. Note board Content card width reduced by ~45%.
Code references:
1. `src/seedpass/tui_v2/app.py` (all board sections + `_notes_tags_panel_hint`)
Regression coverage:
1. Updated assertions from section headers to card-frame prefixes.
2. Removed "Compact:" noise assertion.
Validation:
1. `poetry run pytest -q src/tests/test_tui_v2_textual_interactions.py src/tests/test_tui_v2_action_matrix.py`
2. Result: `58 passed`.
+11
View File
@@ -189,3 +189,14 @@
### Next
- Capture fresh state dump/screenshots for updated boards.
- Update strict closeout scoreboard (Password/Stored Password/Note now at card parity; remaining Minor Gap items are density/rhythm only).
## Session Update (2026-03-03, Slice 7)
### Board density tightening
- Removed redundant section headers above card frames (saves 2-3 lines per board).
- Removed "Compact: Notes/Tags shown inline." noise from compact mode.
- Capped note preview at 100 chars (was 180) to prevent oversized Content cards.
- Password board now 17 lines (was ~21). All boards similarly tighter.
### Verification
- Focused TUI v2 gate: `58 passed`.
+1 -16
View File
@@ -1893,7 +1893,6 @@ def launch_tui2(
notes_text if len(notes_text) <= 88 else f"{notes_text[:85]}..."
)
return [
"Compact: Notes/Tags shown inline.",
f"Tags: {tags_preview}",
f"Notes: {notes_preview}",
]
@@ -1973,9 +1972,7 @@ def launch_tui2(
f"{self._kind_icon(kind)} {board_name}",
f"Kind: {kind} | Modified: {modified} | Archived: {archived}",
f"Index Num*: {index_num}",
"Login Fields",
*self._board_card("Credentials", credential_rows),
"Operations",
*self._board_card("Quick Actions", operation_rows),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -1993,7 +1990,7 @@ def launch_tui2(
content = str(entry.get("content") or "")
preview = content.strip()
if preview:
preview = preview.replace("\n", " ")[:180]
preview = preview.replace("\n", " ")[:100]
else:
preview = "(empty)"
entry_id = (
@@ -2019,9 +2016,7 @@ def launch_tui2(
f"{self._kind_icon(kind)} Note Board",
f"Kind: {kind} | Modified: {modified} | Archived: {archived}",
f"Index Num*: {index_num} | File Type: {file_type}",
"Document Fields",
*self._board_card("Content", document_rows),
"Operations",
*self._board_card("Quick Actions", ["▣ Edit ▣ Export"]),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -2055,9 +2050,7 @@ def launch_tui2(
]
lines = header + [
f"{self._kind_icon(kind)} {board_name}",
"Seed Fields",
*self._board_card("Seed Info", seed_rows),
"Operations",
*self._board_card("Quick Actions", operation_rows),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -2102,9 +2095,7 @@ def launch_tui2(
f"{self._kind_icon(kind)} 2FA Board",
f"Kind: {kind} | Modified: {modified} | Archived: {archived}",
f"Index Num*: {index_num}",
"2FA Fields",
*self._board_card("Parameters", field_rows),
"Operations",
*self._board_card("Quick Actions", operation_rows),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -2153,9 +2144,7 @@ def launch_tui2(
f"{self._kind_icon(kind)} SSH Board",
f"Kind: ssh | Modified: {modified} | Archived: {archived}",
f"Index Num*: {index_num} | Entry Num: {entry_id}",
"Key Material",
*self._board_card("Keys", key_rows),
"Operations",
*self._board_card("Quick Actions", operation_rows),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -2199,9 +2188,7 @@ def launch_tui2(
f"{self._kind_icon(kind)} PGP Board",
f"Kind: pgp | Modified: {modified} | Archived: {archived}",
f"Index Num*: {index_num} | Entry Num: {entry_id}",
"Key Material",
*self._board_card("Keys", key_rows),
"Operations",
*self._board_card("Quick Actions", operation_rows),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -2244,9 +2231,7 @@ def launch_tui2(
f"{self._kind_icon(kind)} Nostr Board",
f"Kind: nostr | Modified: {modified} | Archived: {archived}",
f"Index Num*: {index_num} | Entry Num: {entry_id}",
"Key Material",
*self._board_card("Keys", key_rows),
"Operations",
*self._board_card("Quick Actions", operation_rows),
*self._notes_tags_panel_hint(
tags_text=tags_text, notes_text=notes_text
@@ -1265,7 +1265,6 @@ async def test_tui2_textual_compact_layout_hides_link_panel_and_can_restore() ->
assert link_detail.has_class("hidden")
assert "Compact" in _widget_text(app, "#action-strip")
detail = _widget_text(app, "#entry-detail")
assert "Compact: Notes/Tags shown inline." in detail
assert "Tags: alpha, beta" in detail
assert "Notes: compact note" in detail
@@ -1541,7 +1540,7 @@ async def test_tui2_textual_note_and_totp_boards_include_common_metadata() -> No
assert "Note Board" in board
assert "Kind: document | Modified:" in board
assert "Index Num*:" in board
assert "Document Fields" in board
assert "+- Content " in board
assert "+- Content " in board
assert "+- Quick Actions " in board
@@ -1551,7 +1550,7 @@ async def test_tui2_textual_note_and_totp_boards_include_common_metadata() -> No
assert "2FA Board" in board
assert "Kind: totp | Modified:" in board
assert "Index Num*:" in board
assert "2FA Fields" in board
assert "+- Parameters " in board
assert "+- Parameters " in board
assert "+- Quick Actions " in board
@@ -1578,7 +1577,7 @@ async def test_tui2_textual_password_board_uses_card_sections() -> None:
await pilot.pause()
board = _widget_text(app, "#entry-detail")
assert "Password Board" in board
assert "Login Fields" in board
assert "+- Credentials " in board
assert "+- Credentials " in board
assert "Password*: hidden (v reveal, g qr)" in board
assert "+- Quick Actions " in board