Update Version: 1.4.5
This commit is contained in:
@@ -358,7 +358,6 @@
|
||||
try {
|
||||
data = JSON.parse(dataString);
|
||||
} catch (err) {
|
||||
// For backward compatibility if it's just an id
|
||||
data = { type: 'document', id: dataString };
|
||||
}
|
||||
|
||||
@@ -512,13 +511,11 @@
|
||||
</div>
|
||||
</div>
|
||||
{:else}
|
||||
<!-- Folders section — always visible at root (includes "Shared with me" virtual folder) -->
|
||||
{#if currentFolderId === null || folders.length > 0}
|
||||
<div class="mb-8">
|
||||
<div class="px-2 py-3 text-sm font-semibold text-gray-700 dark:text-gray-300">Folders</div>
|
||||
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4">
|
||||
{#if currentFolderId === null}
|
||||
<!-- Shared with me — permanent, undeletable virtual folder -->
|
||||
<div
|
||||
class="flex flex-row items-center p-3 bg-white/50 dark:bg-black/20 border border-gray-200 dark:border-white/10 rounded-xl shadow-sm hover:shadow-md cursor-pointer group transition-all duration-200 hover:-translate-y-0.5 hover:border-purple-300 dark:hover:border-purple-500/30"
|
||||
role="button"
|
||||
@@ -565,7 +562,6 @@
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Empty states -->
|
||||
{#if documents.length === 0 && files.length === 0 && currentFolderId !== null && folders.length === 0}
|
||||
<div class="min-h-[30vh] flex items-center justify-center">
|
||||
<p class="text-gray-500 dark:text-gray-400">This folder is empty.</p>
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
const view = $editorViewStore;
|
||||
if (!view) return;
|
||||
|
||||
// Ensure context menu only triggers on editor
|
||||
const target = e.target as HTMLElement;
|
||||
if (!target.closest('.cm-editor') && !target.closest('.cm-content')) return;
|
||||
|
||||
@@ -148,7 +147,6 @@
|
||||
<DocFooter />
|
||||
</div>
|
||||
|
||||
<!-- Custom Context Menu for Editor -->
|
||||
{#if contextMenu.show}
|
||||
<div
|
||||
class="fixed z-[9999] bg-[var(--theme-bg)] text-[var(--theme-text)] rounded-lg shadow-xl border border-[var(--theme-border)] py-1 min-w-[200px] overflow-hidden"
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// Auto login after successful registration using email
|
||||
const loginRes = await fetch('/api/auth/login', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -65,7 +64,6 @@
|
||||
|
||||
<div class="min-h-screen flex flex-col relative overflow-hidden">
|
||||
<div class="flex-grow flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<!-- Background decorative elements -->
|
||||
<div class="absolute -top-40 right-20 w-96 h-96 bg-emerald-400/20 dark:bg-emerald-600/10 rounded-full blur-3xl mix-blend-multiply z-0"></div>
|
||||
<div class="absolute top-40 -left-20 w-96 h-96 bg-teal-400/20 dark:bg-teal-600/10 rounded-full blur-3xl mix-blend-multiply z-0"></div>
|
||||
<div class="absolute -bottom-40 right-40 w-96 h-96 bg-blue-400/20 dark:bg-blue-600/10 rounded-full blur-3xl mix-blend-multiply z-0"></div>
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
let confirmRegenerateId = $state<string | null>(null);
|
||||
let regeneratingKeyId = $state<string | null>(null);
|
||||
|
||||
// Usage chart
|
||||
type UsagePoint = { date: string; count: number };
|
||||
type UsagePeriod = '1hr' | '1day' | '1week';
|
||||
let usageData = $state<UsagePoint[]>([]);
|
||||
@@ -200,7 +199,6 @@
|
||||
const labels: string[] = [];
|
||||
const counts: number[] = [];
|
||||
if (period === '1hr') {
|
||||
// Floor to current UTC minute, then step back 59 more
|
||||
const now = new Date();
|
||||
const baseMs = now.getTime() - (now.getUTCSeconds() * 1000 + now.getUTCMilliseconds());
|
||||
for (let i = 59; i >= 0; i--) {
|
||||
@@ -211,7 +209,6 @@
|
||||
counts.push(pt ? pt.count : 0);
|
||||
}
|
||||
} else if (period === '1day') {
|
||||
// Floor to current UTC hour, then step back 23 more
|
||||
const now = new Date();
|
||||
const baseMs = now.getTime() - (now.getUTCMinutes() * 60000 + now.getUTCSeconds() * 1000 + now.getUTCMilliseconds());
|
||||
for (let i = 23; i >= 0; i--) {
|
||||
@@ -626,7 +623,6 @@
|
||||
<a href="/api-docs" class="text-blue-600 dark:text-blue-400 hover:underline ml-1">View API docs →</a>
|
||||
</p>
|
||||
|
||||
<!-- Usage chart -->
|
||||
<div class="mb-6 p-4 rounded-xl border border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-black/30">
|
||||
<div class="flex items-center justify-between mb-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400">
|
||||
@@ -814,7 +810,6 @@
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Admin Section -->
|
||||
{#if activeSection === 'admin' && $userStore?.is_admin}
|
||||
<div class="bg-white dark:bg-black/20 rounded-xl shadow-sm border border-gray-200 dark:border-white/10 overflow-hidden">
|
||||
<div class="p-6 sm:p-8">
|
||||
|
||||
Reference in New Issue
Block a user