mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-31 18:02:05 +00:00
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:
1 parent
d1807ddab6
commit
5af052499b
4 files changed
+45
-20
No files matched your search
@@ -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`.
|
||||
@@ -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`.
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user