Browse Source

bug-fixes

master
Silberengel 1 month ago
parent
commit
fe7fade9d7
  1. 4
      public/healthz.json
  2. 242
      src/app.css
  3. 26
      src/lib/components/modals/DeleteAllEventsModal.svelte
  4. 8
      src/lib/components/modals/DeleteEventModal.svelte
  5. 8
      src/lib/components/modals/ReportEventModal.svelte
  6. 8
      src/lib/components/modals/ReportUserModal.svelte
  7. 8
      src/lib/components/modals/VersionHistoryModal.svelte

4
public/healthz.json

@ -2,7 +2,7 @@
"status": "ok", "status": "ok",
"service": "aitherboard", "service": "aitherboard",
"version": "0.3.0", "version": "0.3.0",
"buildTime": "2026-02-11T10:22:29.390Z", "buildTime": "2026-02-11T10:31:42.382Z",
"gitCommit": "unknown", "gitCommit": "unknown",
"timestamp": 1770805349390 "timestamp": 1770805902382
} }

242
src/app.css

@ -1612,6 +1612,248 @@ body::before {
border-color: #00ff00 !important; border-color: #00ff00 !important;
} }
/* Terminal Theme - Profile Page */
[data-design-theme="terminal"] .profile-page {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .profile-header {
background-color: #000000 !important;
color: #00ff00 !important;
border-bottom: 1px solid #00ff00 !important;
}
[data-design-theme="terminal"] .profile-name {
color: #00ff00 !important;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.8) !important;
font-family: 'Courier New', 'Courier', monospace !important;
}
[data-design-theme="terminal"] .profile-header p,
[data-design-theme="terminal"] .profile-header .text-fog-text,
[data-design-theme="terminal"] .profile-header .text-fog-text-light,
[data-design-theme="terminal"] .profile-header .text-fog-dark-text,
[data-design-theme="terminal"] .profile-header .text-fog-dark-text-light {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .profile-header a,
[data-design-theme="terminal"] .profile-header .text-fog-accent,
[data-design-theme="terminal"] .profile-header .text-fog-dark-accent {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .profile-header a:hover {
text-shadow: 0 0 5px rgba(0, 255, 0, 0.9) !important;
box-shadow: 0 0 5px rgba(0, 255, 0, 0.3) !important;
}
[data-design-theme="terminal"] .npub-text,
[data-design-theme="terminal"] .npub-display code {
background-color: #000000 !important;
border-color: #00ff00 !important;
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
font-family: 'Courier New', 'Courier', monospace !important;
box-shadow: 0 0 5px rgba(0, 255, 0, 0.3) !important;
}
[data-design-theme="terminal"] .profile-npub-section {
border-color: #00ff00 !important;
}
[data-design-theme="terminal"] .profile-posts {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .profile-posts .tabs {
border-bottom-color: #00ff00 !important;
}
[data-design-theme="terminal"] .profile-posts .tabs button {
border-radius: 0 !important;
border: 1px solid transparent !important;
border-bottom: 2px solid transparent !important;
background-color: transparent !important;
color: #00ff00 !important;
font-family: 'Courier New', 'Courier', monospace !important;
text-transform: uppercase !important;
letter-spacing: 1px !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .profile-posts .tabs button:hover {
border-color: #00ff00 !important;
box-shadow: 0 0 5px rgba(0, 255, 0, 0.3) !important;
background-color: rgba(0, 255, 0, 0.05) !important;
}
[data-design-theme="terminal"] .profile-posts .tabs button.border-b-2,
[data-design-theme="terminal"] .profile-posts .tabs button[class*="border-fog-accent"],
[data-design-theme="terminal"] .profile-posts .tabs button[class*="border-fog-dark-accent"] {
border-bottom-color: #00ff00 !important;
border-bottom-width: 2px !important;
box-shadow: 0 0 10px rgba(0, 255, 0, 0.5) !important;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.8) !important;
}
[data-design-theme="terminal"] .wall-section {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .wall-title {
color: #00ff00 !important;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.8) !important;
font-family: 'Courier New', 'Courier', monospace !important;
text-transform: uppercase !important;
letter-spacing: 1px !important;
}
[data-design-theme="terminal"] .wall-form {
background-color: #000000 !important;
border-color: #00ff00 !important;
color: #00ff00 !important;
box-shadow: 0 0 5px rgba(0, 255, 0, 0.3) !important;
}
[data-design-theme="terminal"] .wall-comments-section {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .wall-comments {
background-color: #000000 !important;
}
[data-design-theme="terminal"] .pins-list,
[data-design-theme="terminal"] .notifications-list,
[data-design-theme="terminal"] .interactions-list {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .nip05-valid {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.8) !important;
}
[data-design-theme="terminal"] .nip05-invalid,
[data-design-theme="terminal"] .nip05-invalid-button {
color: #ff0000 !important;
text-shadow: 0 0 3px rgba(255, 0, 0, 0.8) !important;
}
[data-design-theme="terminal"] .nip05-invalid-button:hover {
background-color: rgba(255, 0, 0, 0.1) !important;
box-shadow: 0 0 5px rgba(255, 0, 0, 0.5) !important;
}
[data-design-theme="terminal"] .nip05-checking {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
/* Terminal Theme - Payment Addresses */
[data-design-theme="terminal"] .payment-addresses {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .payment-addresses .text-fog-text-light,
[data-design-theme="terminal"] .payment-addresses .text-fog-dark-text-light,
[data-design-theme="terminal"] .payment-addresses .text-sm {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .addresses-list {
background-color: #000000 !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .addresses-list h3 {
color: #00ff00 !important;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.8) !important;
font-family: 'Courier New', 'Courier', monospace !important;
text-transform: uppercase !important;
letter-spacing: 1px !important;
}
[data-design-theme="terminal"] .payment-event-info {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .payment-event-info .text-xs,
[data-design-theme="terminal"] .payment-event-info .text-fog-text-light,
[data-design-theme="terminal"] .payment-event-info .text-fog-dark-text-light {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .address-item {
background-color: #001a00 !important;
border: none !important;
color: #00ff00 !important;
}
[data-design-theme="terminal"] .address-item .text-sm,
[data-design-theme="terminal"] .address-item .font-medium {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
font-family: 'Courier New', 'Courier', monospace !important;
}
[data-design-theme="terminal"] .address-item code {
background-color: #000000 !important;
border: 1px solid #00ff00 !important;
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
font-family: 'Courier New', 'Courier', monospace !important;
box-shadow: 0 0 5px rgba(0, 255, 0, 0.3) !important;
}
[data-design-theme="terminal"] .address-item .bg-fog-highlight,
[data-design-theme="terminal"] .address-item .bg-fog-dark-highlight {
background-color: #000000 !important;
border: 1px solid #00ff00 !important;
}
[data-design-theme="terminal"] .address-item button {
background-color: transparent !important;
border: 1px solid #00ff00 !important;
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
font-family: 'Courier New', 'Courier', monospace !important;
text-transform: uppercase !important;
letter-spacing: 1px !important;
padding: 0.25rem 0.5rem !important;
border-radius: 0 !important;
box-shadow: 0 0 5px rgba(0, 255, 0, 0.3) !important;
}
[data-design-theme="terminal"] .address-item button:hover {
background-color: rgba(0, 255, 0, 0.1) !important;
box-shadow: 0 0 10px rgba(0, 255, 0, 0.6) !important;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.9) !important;
}
[data-design-theme="terminal"] .address-item .text-fog-accent,
[data-design-theme="terminal"] .address-item .text-fog-dark-accent {
color: #00ff00 !important;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.6) !important;
}
[data-design-theme="terminal"] .address-item .hover\:underline:hover {
text-decoration: underline !important;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.9) !important;
}
[data-design-theme="terminal"] .branch-name, [data-design-theme="terminal"] .branch-name,
[data-design-theme="terminal"] .branch-commit, [data-design-theme="terminal"] .branch-commit,
[data-design-theme="terminal"] .branch-message, [data-design-theme="terminal"] .branch-message,

26
src/lib/components/modals/DeleteAllEventsModal.svelte

@ -24,9 +24,14 @@
let publicationResults = $state<{ success: string[]; failed: Array<{ relay: string; error: string }> } | null>(null); let publicationResults = $state<{ success: string[]; failed: Array<{ relay: string; error: string }> } | null>(null);
let availableRelays = $state<string[]>([]); let availableRelays = $state<string[]>([]);
// Load available relays when modal opens // Track previous open state (non-reactive to avoid infinite loops)
$effect(() => { let previousOpen = false;
if (open) {
// Load available relays when modal opens (only on transition from closed to open)
$effect.pre(() => {
const wasOpen = previousOpen;
previousOpen = open;
if (open && !wasOpen) {
loadAvailableRelays(); loadAvailableRelays();
} }
}); });
@ -137,11 +142,13 @@
// Clear the form after successful publication // Clear the form after successful publication
reason = ''; reason = '';
selectedRelays = new Set(); selectedRelays = new Set();
// Close the modal after a delay and refresh the profile page // Close the modal immediately to prevent any state issues
close();
// Navigate to home page after a delay (to show publication status)
// Navigate away instead of reloading to avoid doom loop
// The profile page would be blank anyway since all events are deleted
setTimeout(() => { setTimeout(() => {
close(); goto('/');
// Reload the current page to refresh the UI (profile should be blank)
window.location.reload();
}, 2000); }, 2000);
} }
} catch (error) { } catch (error) {
@ -171,7 +178,10 @@
aria-labelledby="delete-all-modal-title" aria-labelledby="delete-all-modal-title"
tabindex="-1" tabindex="-1"
> >
<div class="modal-content"> <div
class="modal-content"
role="document"
>
<div class="modal-header"> <div class="modal-header">
<h2 id="delete-all-modal-title">Delete All Events</h2> <h2 id="delete-all-modal-title">Delete All Events</h2>
<button onclick={close} class="close-button" aria-label="Close">×</button> <button onclick={close} class="close-button" aria-label="Close">×</button>

8
src/lib/components/modals/DeleteEventModal.svelte

@ -115,7 +115,13 @@
aria-labelledby="delete-modal-title" aria-labelledby="delete-modal-title"
tabindex="-1" tabindex="-1"
> >
<div class="modal-content"> <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
<div
class="modal-content"
onclick={(e) => e.stopPropagation()}
onkeydown={(e) => e.stopPropagation()}
role="document"
>
<div class="modal-header"> <div class="modal-header">
<h2 id="delete-modal-title">Delete Event</h2> <h2 id="delete-modal-title">Delete Event</h2>
<button onclick={close} class="close-button" aria-label="Close">×</button> <button onclick={close} class="close-button" aria-label="Close">×</button>

8
src/lib/components/modals/ReportEventModal.svelte

@ -99,7 +99,13 @@
aria-labelledby="report-modal-title" aria-labelledby="report-modal-title"
tabindex="-1" tabindex="-1"
> >
<div class="modal-content"> <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
<div
class="modal-content"
onclick={(e) => e.stopPropagation()}
onkeydown={(e) => e.stopPropagation()}
role="document"
>
<div class="modal-header"> <div class="modal-header">
<h2 id="report-modal-title">Report Event</h2> <h2 id="report-modal-title">Report Event</h2>
<button onclick={close} class="close-button" aria-label="Close">×</button> <button onclick={close} class="close-button" aria-label="Close">×</button>

8
src/lib/components/modals/ReportUserModal.svelte

@ -97,7 +97,13 @@
aria-labelledby="report-modal-title" aria-labelledby="report-modal-title"
tabindex="-1" tabindex="-1"
> >
<div class="modal-content"> <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
<div
class="modal-content"
onclick={(e) => e.stopPropagation()}
onkeydown={(e) => e.stopPropagation()}
role="document"
>
<div class="modal-header"> <div class="modal-header">
<h2 id="report-modal-title">Report User</h2> <h2 id="report-modal-title">Report User</h2>
<button onclick={close} class="close-button" aria-label="Close">×</button> <button onclick={close} class="close-button" aria-label="Close">×</button>

8
src/lib/components/modals/VersionHistoryModal.svelte

@ -79,7 +79,13 @@
aria-labelledby="version-history-modal-title" aria-labelledby="version-history-modal-title"
tabindex="-1" tabindex="-1"
> >
<div class="modal-content"> <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
<div
class="modal-content"
onclick={(e) => e.stopPropagation()}
onkeydown={(e) => e.stopPropagation()}
role="document"
>
<div class="modal-header"> <div class="modal-header">
<h2 id="version-history-modal-title">Version History</h2> <h2 id="version-history-modal-title">Version History</h2>
<button onclick={onClose} class="close-button" aria-label="Close">×</button> <button onclick={onClose} class="close-button" aria-label="Close">×</button>

Loading…
Cancel
Save