feat(contacts): name-based blocking, fix CSS breakpoint

- New blocked_names table for blocking bots without known public_key
- get_blocked_contact_names() returns union of pubkey-blocked + name-blocked
- POST /api/contacts/block-name endpoint for name-based blocking
- GET /api/contacts/blocked-names-list for management UI
- Block button always visible in chat (falls back to name-based block)
- Blocked Names section shown in Existing Contacts Blocked filter
- CSS breakpoint for icon-only buttons: 768px → 428px (iPhone-sized)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MarekWo
2026-03-10 21:03:19 +01:00
parent 0d5c021e40
commit b0076c3739
6 changed files with 186 additions and 25 deletions
+13 -12
View File
@@ -333,18 +333,6 @@ main {
font-size: 0.875rem;
}
/* Contact card buttons: icon-only on mobile */
.pending-contact-card .btn-label,
.existing-contact-card .btn-label {
display: none;
}
/* Allow button wrapping on small screens */
.pending-contact-card .d-flex.gap-2,
.existing-contact-card .d-flex.gap-2 {
flex-wrap: wrap;
}
/* Modal: Better mobile layout */
.modal-dialog {
margin: 0.5rem;
@@ -360,6 +348,19 @@ main {
}
}
/* Small phone screens: icon-only buttons in contact cards */
@media (max-width: 428px) {
.pending-contact-card .btn-label,
.existing-contact-card .btn-label {
display: none;
}
.pending-contact-card .d-flex.gap-2,
.existing-contact-card .d-flex.gap-2 {
flex-wrap: wrap;
}
}
/* Loading State */
.loading-spinner {
display: flex;