Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
2fa4a34
fix: eliminated auth flicker and layout jump on Ask page v1.1.44
pavanpaik Dec 19, 2025
f9b8038
feat: redesigned guidance chat to use premium modal interface v1.1.45
pavanpaik Dec 19, 2025
2b18016
style: refined modal to premium floating popover v1.1.46
pavanpaik Dec 19, 2025
4025b66
feat: implemented iOS-style chat sent feedback and auto-scroll v1.1.47
pavanpaik Dec 19, 2025
fe97358
feat: updated labels to Ongoing and Archived for better seeker intuit…
pavanpaik Dec 19, 2025
7d86661
feat: improved delivered feedback with premium animation v1.1.49
pavanpaik Dec 19, 2025
a40da8f
feat: implemented iOS-style unread indicator for answered tickets v1.…
pavanpaik Dec 19, 2025
b0096ee
feat: enhanced archive inquiry button prominence with icon v1.1.51
pavanpaik Dec 19, 2025
4387fd9
feat: implemented persistent read state for answered inquiries v1.1.52
pavanpaik Dec 19, 2025
a47ce7f
feat: implemented admin-closed feedback with red dot dot in ongoing t…
pavanpaik Dec 19, 2025
a258aa1
feat: enhanced unread guidance prominence and fixed missing archive b…
pavanpaik Dec 19, 2025
1add193
fix: red dot on finished inquiries disappears after reading v1.1.56
pavanpaik Dec 19, 2025
8b39884
style: CLOSED items now use blue theme to match regular updates v1.1.57
pavanpaik Dec 19, 2025
83ff278
fix: added prisma db push to build script for vercel sync v1.1.58
pavanpaik Dec 19, 2025
a4a4b69
feat: implemented auto-archive for read closed inquiries and removed …
pavanpaik Dec 19, 2025
3bfc42a
feat: implement global inquiry unread bubbles and sticky archival logic
pavanpaik Dec 19, 2025
2dd11a5
feat: add PWA app icon badging for unread counts
pavanpaik Dec 19, 2025
9096191
feat: implement official PWA Service Worker for offline support and a…
pavanpaik Dec 19, 2025
7dc5a4b
style: update PWA assets with premium ochre/saffron branding
pavanpaik Dec 19, 2025
23db3b4
style: enhance mobile PWA native feel with scroll locking and status …
pavanpaik Dec 19, 2025
1177f86
feat: reach Platinum PWA standard with visibility polling, offline fa…
pavanpaik Dec 19, 2025
324d5fc
style: replace PWA icons with custom Recraft generated premium icon
pavanpaik Dec 19, 2025
4e35f1f
style: fix PWA icon logic for clean rounded corners and sharp favicon…
pavanpaik Dec 19, 2025
0fc9b92
style: rename PWA short name and metadata to 'Sai Rahasya'
pavanpaik Dec 19, 2025
bafb390
feat: add native lock-screen media controls for audio player
pavanpaik Dec 19, 2025
0b4ccdb
fix: resolve persistent loading spinner in audio player
pavanpaik Dec 19, 2025
16a80d5
fix: ensure pause button appears when audio plays by relying on 'play…
pavanpaik Dec 19, 2025
d8b20c7
fix: restore loading state clearing and properly stop audio on close
pavanpaik Dec 19, 2025
f9ec2ed
revert: restore working audio player before Media Session API changes
pavanpaik Dec 19, 2025
1770038
fix: restore fully working audio player with proper close functionality
pavanpaik Dec 19, 2025
d67f3c6
style: update app icon with new a0.dev generated design
pavanpaik Dec 19, 2025
c0a4f2e
style: update favicon to use new PNG icon for consistency
pavanpaik Dec 19, 2025
bd95438
style: unify branding by using app icon in header and sidebar
pavanpaik Dec 19, 2025
175d868
style: match mobile header logo and title size to desktop sidebar
pavanpaik Dec 19, 2025
e02ce44
fix: remove success toast notification in favor of implicit feedback
pavanpaik Dec 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion web/next.config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
/* config options here */
experimental: {
serverActions: {
bodySizeLimit: '2mb',
},
},
};

export default nextConfig;
4 changes: 2 additions & 2 deletions web/package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "web",
"version": "1.1.43",
"version": "1.1.59",
"private": true,
"scripts": {
"dev": "next dev",
"build": "prisma generate && next build",
"build": "prisma generate && prisma db push --accept-data-loss && next build",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Critical: Remove --accept-data-loss flag from production build script.

The --accept-data-loss flag in the build script will drop data during destructive schema changes without confirmation. This is extremely dangerous for production deployments and CI/CD pipelines.

Why this is critical:

  • Production builds may silently drop columns, tables, or entire databases
  • No warnings or confirmations are shown
  • Data loss is irreversible

Recommendations:

  1. Remove --accept-data-loss from the build script
  2. Use prisma migrate deploy for production builds (applies migration history)
  3. Keep prisma db push --accept-data-loss only in local dev scripts
🔎 Proposed fix
-    "build": "prisma generate && prisma db push --accept-data-loss && next build",
+    "build": "prisma generate && prisma migrate deploy && next build",

For local development, add a separate script:

+    "dev:push": "prisma db push --accept-data-loss",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"build": "prisma generate && prisma db push --accept-data-loss && next build",
"build": "prisma generate && prisma migrate deploy && next build",
🤖 Prompt for AI Agents
In web/package.json around line 7, the production "build" script includes the
dangerous "--accept-data-loss" flag for "prisma db push"; remove that flag from
the production build, replace the Prisma step with "prisma migrate deploy" (so
migrations are applied safely in CI/production), and move "prisma db push
--accept-data-loss" into a new local-only script (e.g., "dev:db:reset") for
developer use; also ensure CI/build pipelines are updated to run "prisma migrate
deploy" instead of "prisma db push".

"start": "next start",
"lint": "eslint",
"release": "node -e \"const fs=require('fs'); const v=JSON.parse(fs.readFileSync('./public/version.json')); v.buildTime=new Date().toISOString(); fs.writeFileSync('./public/version.json', JSON.stringify(v, null, 2));\" && npm run build",
Expand Down
Binary file added web/public/app-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed web/public/favicon.png
Binary file not shown.
Binary file removed web/public/icon-192.png
Binary file not shown.
Binary file removed web/public/icon-512.png
Binary file not shown.
Binary file removed web/public/icon.png
Binary file not shown.
Binary file removed web/public/logo.jpg
Binary file not shown.
84 changes: 84 additions & 0 deletions web/public/offline.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Offline | Sai Leela Rahasya</title>
<style>
:root {
--ochre: #cc7722;
--background: #ffffff;
--text: #1f2937;
}
body {
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: var(--background);
color: var(--text);
text-align: center;
padding: 20px;
}
.icon-container {
width: 80px;
height: 80px;
background: var(--ochre);
border-radius: 20px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 24px;
box-shadow: 0 10px 25px -5px rgba(204, 119, 34, 0.4);
}
svg {
width: 40px;
height: 40px;
color: white;
}
h1 {
font-size: 24px;
font-weight: 800;
margin-bottom: 8px;
color: #111827;
}
p {
font-size: 16px;
color: #6b7280;
max-width: 280px;
line-height: 1.5;
margin-bottom: 32px;
}
.retry-button {
background-color: var(--ochre);
color: white;
border: none;
padding: 12px 24px;
border-radius: 12px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 14px;
}
.retry-button:active {
transform: scale(0.95);
}
</style>
</head>
<body>
<div class="icon-container">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z" />
</svg>
</div>
<h1>Seek Grace in Silence</h1>
<p>It seems your connection is resting. Please check your network to continue your spiritual journey.</p>
<button class="retry-button" onclick="window.location.reload()">Retry Connection</button>
</body>
</html>
Binary file added web/public/splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
68 changes: 68 additions & 0 deletions web/public/sw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const CACHE_NAME = 'slr-cache-v1';

// Assets to cache immediately
const PRECACHE_ASSETS = [
'/',
'/manifest.webmanifest',
'/icon-192.png',
'/icon-512.png',
'/offline.html'
];

self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => {
return cache.addAll(PRECACHE_ASSETS);
})
);
self.skipWaiting();
});

self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((cacheNames) => {
return Promise.all(
cacheNames.map((cacheName) => {
if (cacheName !== CACHE_NAME) {
return caches.delete(cacheName);
}
})
);
})
);
self.clients.claim();
});

self.addEventListener('fetch', (event) => {
// Skip cross-origin requests (like Clerk or Neon)
if (!event.request.url.startsWith(self.location.origin)) return;

// Special handling for navigation requests (full page loads)
if (event.request.mode === 'navigate') {
event.respondWith(
fetch(event.request).catch(() => {
return caches.match('/offline.html');
})
);
return;
}

// Stale-while-revalidate strategy for assets
event.respondWith(
caches.open(CACHE_NAME).then((cache) => {
return cache.match(event.request).then((response) => {
const fetchPromise = fetch(event.request).then((networkResponse) => {
// Cache the new response if it's a valid GET request
if (event.request.method === 'GET' && networkResponse.status === 200) {
cache.put(event.request, networkResponse.clone());
}
return networkResponse;
}).catch(() => {
// If network fails and no cache, returns the cached response if available
return response;
});
return response || fetchPromise;
});
})
);
});
Comment thread
coderabbitai[bot] marked this conversation as resolved.
4 changes: 2 additions & 2 deletions web/public/version.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"version": "1.1.43",
"buildTime": "2025-12-19T09:25:00.000Z"
"version": "1.1.59",
"buildTime": "2025-12-19T12:15:00.000Z"
}
Loading