Compare commits

...

4 Commits

6 changed files with 30 additions and 20 deletions

View File

@@ -1,3 +1,3 @@
834000 834658
834001 834659
834015 834673

View File

@@ -17,7 +17,15 @@ https://:8919 {
} }
# Next.js HMR Support (WebSocket) # Next.js HMR Support (WebSocket)
header_up X-Forwarded-For {remote_host} handle /_next/webpack-hmr {
reverse_proxy http://localhost:8917 {
header_up Upgrade {>Upgrade}
header_up Connection {>Connection}
}
}
reverse_proxy http://localhost:8917 {
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto https header_up X-Forwarded-Proto https
header_up X-Forwarded-Host {host} header_up X-Forwarded-Host {host}
} }
@@ -37,7 +45,7 @@ https://:8918 {
} }
reverse_proxy http://localhost:8916 { reverse_proxy http://localhost:8916 {
header_up X-Forwarded-For {remote_host} header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto https header_up X-Forwarded-Proto https
header_up X-Forwarded-Host {host} header_up X-Forwarded-Host {host}
} }

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
{ {
"version": "1.14.16", "version": "1.14.18",
"last_build": "2026-04-23-1518", "last_build": "2026-04-23-1524",
"codename": "ConfigCore", "codename": "ConfigCore",
"commit": "b87b1ece" "commit": "f77582fd"
} }

View File

@@ -57,21 +57,22 @@ export function ExportPanel() {
<button <button
onClick={() => handleExportSnapshot("csv")} onClick={() => handleExportSnapshot("csv")}
disabled={isLoading} disabled={isLoading}
className="bg-surface border border-slate-800 hover:text-primary hover:border-primary/30 rounded-xl py-2 px-3 text-xs font-normal text-white transition-all active:scale-[0.98] disabled:opacity-50 flex items-center justify-center gap-2" className="px-5 py-1.5 bg-primary hover:bg-primary/90 text-white rounded-xl text-sm font-normal transition-all active:scale-95 shadow-xl shadow-primary/10 tracking-tight border border-primary/30 flex items-center justify-center gap-2 disabled:opacity-50"
aria-label="Export inventory snapshot as CSV"
> >
{isLoading ? <Loader2 size={12} className="animate-spin" /> : <FileText size={12} />} {isLoading ? <Loader2 size={14} className="animate-spin" /> : <FileText size={14} />}
CSV CSV
</button> </button>
<button <button
onClick={() => handleExportSnapshot("xlsx")} onClick={() => handleExportSnapshot("xlsx")}
disabled={isLoading} disabled={isLoading}
className="bg-surface border border-slate-800 hover:text-emerald-400 hover:border-emerald-500/30 rounded-xl py-2 px-3 text-xs font-normal text-white transition-all active:scale-[0.98] disabled:opacity-50 flex items-center justify-center gap-2" className="px-5 py-1.5 bg-primary hover:bg-primary/90 text-white rounded-xl text-sm font-normal transition-all active:scale-95 shadow-xl shadow-primary/10 tracking-tight border border-primary/30 flex items-center justify-center gap-2 disabled:opacity-50"
aria-label="Export inventory snapshot as Excel"
> >
{isLoading ? <Loader2 size={12} className="animate-spin" /> : <FileSpreadsheet size={12} />} {isLoading ? <Loader2 size={14} className="animate-spin" /> : <FileSpreadsheet size={14} />}
Excel Excel
</button> </button>
</div>
</div>
{/* Audit Trail Section */} {/* Audit Trail Section */}
<div className="p-4 bg-background/40 border border-slate-800/40 rounded-2xl hover:border-primary/20 transition-all group flex flex-col justify-between"> <div className="p-4 bg-background/40 border border-slate-800/40 rounded-2xl hover:border-primary/20 transition-all group flex flex-col justify-between">
@@ -84,26 +85,27 @@ export function ExportPanel() {
Complete history of system actions, changes, and user operations. Complete history of system actions, changes, and user operations.
</p> </p>
</div> </div>
<div className="grid grid-cols-2 gap-2"> <div className="grid grid-cols-2 gap-2">
<button <button
onClick={() => handleExportAuditTrail("csv")} onClick={() => handleExportAuditTrail("csv")}
disabled={isLoading} disabled={isLoading}
className="bg-surface border border-slate-800 hover:text-primary hover:border-primary/30 rounded-xl py-2 px-3 text-xs font-normal text-white transition-all active:scale-[0.98] disabled:opacity-50 flex items-center justify-center gap-2" className="px-5 py-1.5 bg-primary hover:bg-primary/90 text-white rounded-xl text-sm font-normal transition-all active:scale-95 shadow-xl shadow-primary/10 tracking-tight border border-primary/30 flex items-center justify-center gap-2 disabled:opacity-50"
aria-label="Export audit trail as CSV"
> >
{isLoading ? <Loader2 size={12} className="animate-spin" /> : <FileText size={12} />} {isLoading ? <Loader2 size={14} className="animate-spin" /> : <FileText size={14} />}
CSV CSV
</button> </button>
<button <button
onClick={() => handleExportAuditTrail("xlsx")} onClick={() => handleExportAuditTrail("xlsx")}
disabled={isLoading} disabled={isLoading}
className="bg-surface border border-slate-800 hover:text-emerald-400 hover:border-emerald-500/30 rounded-xl py-2 px-3 text-xs font-normal text-white transition-all active:scale-[0.98] disabled:opacity-50 flex items-center justify-center gap-2" className="px-5 py-1.5 bg-primary hover:bg-primary/90 text-white rounded-xl text-sm font-normal transition-all active:scale-95 shadow-xl shadow-primary/10 tracking-tight border border-primary/30 flex items-center justify-center gap-2 disabled:opacity-50"
aria-label="Export audit trail as Excel"
> >
{isLoading ? <Loader2 size={12} className="animate-spin" /> : <FileSpreadsheet size={12} />} {isLoading ? <Loader2 size={14} className="animate-spin" /> : <FileSpreadsheet size={14} />}
Excel Excel
</button> </button>
</div> </div>
</div>
</div> </div>
{error && ( {error && (