Compare commits

...

7 Commits

4 changed files with 17 additions and 45 deletions
+1 -1
View File
@@ -1 +1 @@
0.1.1.8
0.1.1.11
+3 -3
View File
@@ -8,7 +8,7 @@ server {
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(self), geolocation=(self), microphone=(self)" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://plausible.elpatron.me; connect-src 'self' https://plausible.elpatron.me; img-src 'self' data: blob: https://*.tile.openstreetmap.org; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://plausible.elpatron.me; connect-src 'self' https://plausible.elpatron.me; img-src 'self' data: blob: https://*.tile.openstreetmap.org; media-src 'self' blob: data:; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
# Service worker and app shell must revalidate so PWA updates are detected
location ~* ^/(sw\.js|workbox-.*\.js|manifest\.webmanifest|version\.json)$ {
@@ -18,7 +18,7 @@ server {
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(self), geolocation=(self), microphone=(self)" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://plausible.elpatron.me; connect-src 'self' https://plausible.elpatron.me; img-src 'self' data: blob: https://*.tile.openstreetmap.org; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://plausible.elpatron.me; connect-src 'self' https://plausible.elpatron.me; img-src 'self' data: blob: https://*.tile.openstreetmap.org; media-src 'self' blob: data:; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
}
location = /index.html {
@@ -28,7 +28,7 @@ server {
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(self), geolocation=(self), microphone=(self)" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://plausible.elpatron.me; connect-src 'self' https://plausible.elpatron.me; img-src 'self' data: blob: https://*.tile.openstreetmap.org; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://plausible.elpatron.me; connect-src 'self' https://plausible.elpatron.me; img-src 'self' data: blob: https://*.tile.openstreetmap.org; media-src 'self' blob: data:; style-src 'self' 'unsafe-inline'; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
}
location / {
+12 -4
View File
@@ -5297,8 +5297,9 @@ html.theme-cupertino .events-scroll-container {
/* PWA install prompt */
.pwa-install-banner {
position: fixed;
left: 16px;
right: 16px;
left: 0;
right: 0;
width: calc(100% - 32px);
bottom: calc(36px + env(safe-area-inset-bottom, 0px));
z-index: 1200;
display: grid;
@@ -5461,8 +5462,9 @@ html.theme-cupertino .events-scroll-container {
.pwa-update-banner {
position: fixed;
top: calc(12px + env(safe-area-inset-top, 0px));
left: 16px;
right: 16px;
left: 0;
right: 0;
width: calc(100% - 32px);
z-index: 1300;
display: grid;
grid-template-columns: auto 1fr auto;
@@ -5585,6 +5587,12 @@ html.theme-cupertino .events-scroll-container {
pointer-events: none;
}
@media (max-width: 768px) {
body:has(.app-bottom-nav) .app-version-footer {
display: none;
}
}
.app-version-footer a,
.app-version-footer button {
pointer-events: auto;
+1 -37
View File
@@ -43,11 +43,8 @@ export default function LiveVoiceCapture({
const [previewMime, setPreviewMime] = useState('audio/webm')
const [previewDurationSec, setPreviewDurationSec] = useState(0)
const [saving, setSaving] = useState(false)
const [logs, setLogs] = useState<string[]>([])
const log = useCallback((msg: string) => {
console.log(`[VoiceDebug] ${msg}`)
setLogs((prev) => [...prev, `${new Date().toLocaleTimeString()}: ${msg}`])
}, [])
const previewAudioRef = useRef<HTMLAudioElement | null>(null)
@@ -375,40 +372,7 @@ export default function LiveVoiceCapture({
</>
)}
{/* Debug Logs Panel */}
<div style={{
marginTop: '20px',
padding: '10px',
background: 'rgba(0,0,0,0.6)',
border: '1px solid rgba(255,255,255,0.15)',
borderRadius: '8px',
maxHeight: '180px',
overflowY: 'auto',
textAlign: 'left',
fontSize: '11px',
fontFamily: 'monospace',
color: '#4ade80',
width: '100%',
boxSizing: 'border-box'
}}>
<div style={{ fontWeight: 'bold', marginBottom: '4px', borderBottom: '1px solid rgba(255,255,255,0.2)', paddingBottom: '2px', display: 'flex', justifyContent: 'space-between' }}>
<span>Debug Console Logs:</span>
<button
type="button"
onClick={() => setLogs([])}
style={{ background: 'none', border: 'none', color: '#fda4af', cursor: 'pointer', fontSize: '10px', padding: '0 4px', textDecoration: 'underline' }}
>
Clear
</button>
</div>
{logs.length === 0 ? (
<span style={{ color: '#94a3b8' }}>No logs yet. Start recording to debug.</span>
) : (
logs.map((l, i) => (
<div key={i} style={{ wordBreak: 'break-all', marginBottom: '2px' }}>{l}</div>
))
)}
</div>
</div>
</div>
)