Files
roa2web-service-auto/index.html
Claude Agent 30f55cf18b feat: Add A-Z filter for clients/suppliers in Telegram bot
- Add A-Z alphabetical filter keyboard for clients and suppliers lists
  (same pattern as company selection, without emoji)
- Increase clients/suppliers list pagination from 10 to 20 items per page
- Remove emoji from company A-Z filter button for consistency
- Add 6 new callback handlers: clients_alpha_menu, clients_alpha:LETTER,
  clients_alpha_page:PAGE:LETTER, and supplier equivalents
- Dashboard service and models updates
- Telegram bot: email handlers, auth, DB operations, internal API improvements
- Frontend: dashboard cards updates (CashFlow, Clienti, Furnizori, Treasury)
- Frontend: SolduriCompactCard and CollapsibleCard improvements
- DashboardView enhancements
- start.sh and run-with-restart.sh script updates
- IIS web.config and service worker updates

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 14:34:15 +00:00

75 lines
2.8 KiB
HTML

<!DOCTYPE html>
<html lang="ro">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ROA2WEB - Unified App</title>
<link rel="icon" href="/favicon.ico" />
<!-- BUILD_TIMESTAMP placeholder for cache busting -->
<meta name="build-time" content="BUILD_TIMESTAMP" />
<!-- PWA Support -->
<link rel="manifest" href="%BASE_URL%manifest.json" />
<meta name="theme-color" content="#2563eb" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="ROA2WEB" />
<link rel="apple-touch-icon" href="/roa2web/icon-192.png" />
<!-- Theme initialization - MUST be before any rendering to prevent flash -->
<script>
(function() {
var theme = localStorage.getItem('user-theme');
if (theme && theme !== 'auto') {
document.documentElement.setAttribute('data-theme', theme);
}
})();
</script>
<!-- Service Worker Registration for PWA -->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
const swBase = document.querySelector('link[rel="manifest"]')
?.getAttribute('href')?.replace('manifest.json', '') || '/';
navigator.serviceWorker.register(swBase + 'sw.js')
.then(reg => {
console.log('[PWA] Service Worker registered:', reg.scope);
// Auto-reload when a new SW takes control (picks up new deploy)
navigator.serviceWorker.addEventListener('controllerchange', () => {
console.log('[PWA] New Service Worker active - reloading for fresh version');
window.location.reload();
});
// Check for SW updates each time user returns to the tab (handles PWA on mobile)
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
reg.update();
}
});
})
.catch(err => console.error('[PWA] Service Worker registration failed:', err));
});
}
</script>
</head>
<body>
<div id="app"></div>
<!-- Eruda Mobile Console - activare cu ?debug in URL -->
<script>
if (location.search.includes('debug') || localStorage.getItem('eruda') === 'true') {
var script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/eruda';
script.onload = function() {
eruda.init();
localStorage.setItem('eruda', 'true');
console.log('🔧 Eruda Mobile Console ACTIVE');
};
document.body.appendChild(script);
}
</script>
<script type="module" src="/src/main.js"></script>
</body>
</html>