From c74fa3ad43f6847c5a079aa5af5dc0266ce027d4 Mon Sep 17 00:00:00 2001
From: mirivlad
Date: Mon, 1 Jun 2026 02:16:13 +0800
Subject: [PATCH] today dashboard: activity_events, ListTodayView with events
timeline, frontend TodayDashboard separated from sidebar
---
cmd/verstak-gui/app.go | 345 +++++++++++++++++-
.../frontend-dist/assets/main-684Z-cFJ.css | 1 -
.../frontend-dist/assets/main-6cuAgDnH.css | 1 -
.../frontend-dist/assets/main-B8EIu1OK.js | 16 -
.../frontend-dist/assets/main-BQpRpEfX.js | 6 -
.../frontend-dist/assets/main-BY9JF_6I.js | 16 -
.../frontend-dist/assets/main-BjkBVutb.js | 3 -
.../frontend-dist/assets/main-Bo58X7Pc.css | 1 -
.../frontend-dist/assets/main-CFGnr13n.css | 1 -
.../frontend-dist/assets/main-CHeI8Z54.js | 6 -
.../frontend-dist/assets/main-CRcfl7JD.css | 1 -
.../frontend-dist/assets/main-CXzqY-OQ.js | 3 -
.../frontend-dist/assets/main-CmkweTP0.js | 3 -
.../frontend-dist/assets/main-D2H3H_wv.css | 1 +
.../frontend-dist/assets/main-DMZ01wSM.js | 3 -
.../frontend-dist/assets/main-DTAZ0AQ4.css | 1 -
.../frontend-dist/assets/main-DcPiQSbo.css | 1 -
.../frontend-dist/assets/main-Dt-7hdPr.js | 16 +
.../frontend-dist/assets/main-a-M2pafQ.js | 8 -
.../frontend-dist/assets/main-rybDIgHs.js | 3 -
cmd/verstak-gui/frontend-dist/index.html | 4 +-
cmd/verstak-gui/main.go | 19 +-
frontend/src/App.svelte | 148 +++++++-
internal/core/activity/activity.go | 116 ++++++
internal/core/nodes/repository.go | 21 +-
internal/core/storage/migrations_008.sql.go | 17 +
internal/core/storage/storage.go | 2 +-
27 files changed, 665 insertions(+), 98 deletions(-)
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-684Z-cFJ.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-6cuAgDnH.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-B8EIu1OK.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-BQpRpEfX.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-BY9JF_6I.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-BjkBVutb.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-Bo58X7Pc.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-CFGnr13n.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-CHeI8Z54.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-CRcfl7JD.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-CXzqY-OQ.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-CmkweTP0.js
create mode 100644 cmd/verstak-gui/frontend-dist/assets/main-D2H3H_wv.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-DMZ01wSM.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-DTAZ0AQ4.css
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-DcPiQSbo.css
create mode 100644 cmd/verstak-gui/frontend-dist/assets/main-Dt-7hdPr.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-a-M2pafQ.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-rybDIgHs.js
create mode 100644 internal/core/activity/activity.go
create mode 100644 internal/core/storage/migrations_008.sql.go
diff --git a/cmd/verstak-gui/app.go b/cmd/verstak-gui/app.go
index 61121f0..ceb3198 100644
--- a/cmd/verstak-gui/app.go
+++ b/cmd/verstak-gui/app.go
@@ -6,11 +6,14 @@ import (
"os"
"os/exec"
"path/filepath"
+ "sort"
"strings"
+ "time"
wailsruntime "github.com/wailsapp/wails/v2/pkg/runtime"
"verstak/internal/core/actions"
+ "verstak/internal/core/activity"
"verstak/internal/core/files"
"verstak/internal/core/notes"
"verstak/internal/core/nodes"
@@ -28,6 +31,7 @@ type App struct {
nodes *nodes.Repository
files *files.Service
notes *notes.Service
+ activity *activity.Service
actions *actions.Service
worklog *worklog.Service
search *search.Service
@@ -115,6 +119,45 @@ type SearchResultDTO struct {
Type string `json:"type"`
}
+type EventDTO struct {
+ ID string `json:"id"`
+ NodeID string `json:"nodeId"`
+ ParentID string `json:"parentId"`
+ EventType string `json:"eventType"`
+ Title string `json:"title"`
+ Metadata string `json:"metadata"`
+ CreatedAt string `json:"createdAt"`
+}
+
+type CaseActivityDTO struct {
+ Node NodeDTO `json:"node"`
+ Events []EventDTO `json:"events"`
+}
+
+type SummaryDTO struct {
+ ChangedCases int `json:"changedCases"`
+ Notes int `json:"notes"`
+ Files int `json:"files"`
+ Actions int `json:"actions"`
+ TimeEntries int `json:"timeEntries"`
+}
+
+type TodayGroupDTO struct {
+ NodeID string `json:"nodeId"`
+ NodeTitle string `json:"nodeTitle"`
+ NodeKind string `json:"nodeKind"`
+ Section string `json:"section"`
+ LastActivityAt string `json:"lastActivityAt"`
+ Events []EventDTO `json:"events"`
+}
+
+type TodayDashboardDTO struct {
+ Date string `json:"date"`
+ Summary SummaryDTO `json:"summary"`
+ Groups []TodayGroupDTO `json:"groups"`
+ Events []EventDTO `json:"events"`
+}
+
// ============================================================
// Sections
// ============================================================
@@ -143,13 +186,235 @@ func (a *App) ListNodesBySection(section string) ([]NodeDTO, error) {
return toNodeDTOs(list), nil
}
-// ListTodayView returns nodes created or updated today — a dynamic day view.
-func (a *App) ListTodayView() ([]NodeDTO, error) {
- list, err := a.nodes.ListTodayNodes()
+// ListTodayView returns a dashboard of today's activity.
+func (a *App) ListTodayView() (*TodayDashboardDTO, error) {
+ start, end := activity.TodayBoundaries()
+
+ // 1. Collect events from activity_events table.
+ aeByParent, err := a.activity.ListTodayEventsByParent()
if err != nil {
- return nil, err
+ aeByParent = nil
}
- return toNodeDTOs(list), nil
+
+ // 2. Query notes created/updated today directly from nodes.
+ type noteRow struct {
+ ID string
+ ParentID string
+ Title string
+ CreatedAt string
+ }
+ var todayNotes []noteRow
+ if r, err := a.db.Query(`SELECT n.id, COALESCE(n.parent_id,''), n.title, n.created_at
+ FROM nodes n
+ WHERE n.deleted_at IS NULL AND n.type='note'
+ AND ((n.created_at >= ?1 AND n.created_at < ?2) OR (n.updated_at >= ?1 AND n.updated_at < ?2))`,
+ start, end); err == nil {
+ for r.Next() {
+ var nr noteRow
+ if err := r.Scan(&nr.ID, &nr.ParentID, &nr.Title, &nr.CreatedAt); err == nil {
+ todayNotes = append(todayNotes, nr)
+ }
+ }
+ r.Close()
+ }
+
+ // 3. Query files created today from files table.
+ type fileRow struct {
+ ID string
+ NodeID string
+ Filename string
+ ParentID string
+ CreatedAt string
+ }
+ var todayFiles []fileRow
+ if r, err := a.db.Query(`SELECT f.id, f.node_id, f.filename, COALESCE(n.parent_id,''), f.created_at
+ FROM files f
+ JOIN nodes n ON f.node_id = n.id
+ WHERE n.deleted_at IS NULL
+ AND (f.created_at >= ?1 AND f.created_at < ?2)`, start, end); err == nil {
+ for r.Next() {
+ var fr fileRow
+ if err := r.Scan(&fr.ID, &fr.NodeID, &fr.Filename, &fr.ParentID, &fr.CreatedAt); err == nil {
+ todayFiles = append(todayFiles, fr)
+ }
+ }
+ r.Close()
+ }
+
+ // Also include files updated today (but not created today).
+ if r, err := a.db.Query(`SELECT f.id, f.node_id, f.filename, COALESCE(n.parent_id,''), f.updated_at
+ FROM files f
+ JOIN nodes n ON f.node_id = n.id
+ WHERE n.deleted_at IS NULL
+ AND f.updated_at >= ?1 AND f.updated_at < ?2
+ AND f.created_at < ?1`, start, end); err == nil {
+ for r.Next() {
+ var fr fileRow
+ if err := r.Scan(&fr.ID, &fr.NodeID, &fr.Filename, &fr.ParentID, &fr.CreatedAt); err == nil {
+ todayFiles = append(todayFiles, fr)
+ }
+ }
+ r.Close()
+ }
+
+ // 4. Get root nodes that were created/updated today.
+ todayNodes, _ := a.nodes.ListTodayNodes()
+
+ // Build caseID → events map from all sources.
+ type rawEvent struct {
+ NodeID string
+ ParentID string
+ EventType string
+ Title string
+ CreatedAt string
+ }
+ type caseInfo struct {
+ Node nodes.Node
+ Events []rawEvent
+ }
+ caseMap := make(map[string]*caseInfo)
+
+ // Helper: ensure case entry exists.
+ ensureCase := func(caseID string) *caseInfo {
+ if ci, ok := caseMap[caseID]; ok {
+ return ci
+ }
+ ci := &caseInfo{Events: nil}
+ if n, err := a.nodes.GetActive(caseID); err == nil {
+ ci.Node = *n
+ }
+ caseMap[caseID] = ci
+ return ci
+ }
+
+ // Merge activity_events.
+ for pid, events := range aeByParent {
+ ci := ensureCase(pid)
+ for _, e := range events {
+ ci.Events = append(ci.Events, rawEvent{
+ NodeID: e.NodeID,
+ ParentID: pid,
+ EventType: e.EventType,
+ Title: e.Title,
+ CreatedAt: e.CreatedAt,
+ })
+ }
+ }
+
+ // Merge notes from direct query (avoid duplicates with ae).
+ noteSeen := make(map[string]bool)
+ for _, nr := range todayNotes {
+ if noteSeen[nr.ID] {
+ continue
+ }
+ noteSeen[nr.ID] = true
+ caseID := nr.ParentID
+ ci := ensureCase(caseID)
+ ci.Events = append(ci.Events, rawEvent{
+ NodeID: nr.ID,
+ ParentID: caseID,
+ EventType: activity.TypeNoteCreated,
+ Title: nr.Title,
+ CreatedAt: nr.CreatedAt,
+ })
+ }
+
+ // Merge files.
+ fileSeen := make(map[string]bool)
+ for _, fr := range todayFiles {
+ if fileSeen[fr.ID] {
+ continue
+ }
+ fileSeen[fr.ID] = true
+ caseID := fr.ParentID
+ ci := ensureCase(caseID)
+ ci.Events = append(ci.Events, rawEvent{
+ NodeID: fr.NodeID,
+ ParentID: caseID,
+ EventType: activity.TypeFileAdded,
+ Title: fr.Filename,
+ CreatedAt: fr.CreatedAt,
+ })
+ }
+
+ // Merge today's root nodes (even without events).
+ for _, n := range todayNodes {
+ _ = ensureCase(n.ID)
+ if ci := caseMap[n.ID]; ci.Node.ID == "" {
+ ci.Node = n
+ }
+ }
+
+ // Build final groups and flat timeline.
+ var groups []TodayGroupDTO
+ var flatEvents []EventDTO
+ summary := SummaryDTO{}
+
+ for _, ci := range caseMap {
+ if ci.Node.ID == "" {
+ continue
+ }
+ summary.ChangedCases++
+
+ dtoEvents := make([]EventDTO, 0, len(ci.Events))
+ for _, re := range ci.Events {
+ et := re.EventType
+ dtoEvents = append(dtoEvents, EventDTO{
+ ID: ci.Node.ID + "/" + re.NodeID,
+ NodeID: re.NodeID,
+ ParentID: re.ParentID,
+ EventType: et,
+ Title: re.Title,
+ Metadata: "{}",
+ CreatedAt: re.CreatedAt,
+ })
+ switch et {
+ case activity.TypeNoteCreated, activity.TypeNoteUpdated:
+ summary.Notes++
+ case activity.TypeFileAdded, activity.TypeFileDeleted, activity.TypeFileRenamed, activity.TypeFileCopied, activity.TypeFileMoved:
+ summary.Files++
+ }
+ }
+
+ last := ci.Node.UpdatedAt.Format(time.RFC3339)
+ if len(dtoEvents) > 0 {
+ for _, e := range dtoEvents {
+ if e.CreatedAt > last {
+ last = e.CreatedAt
+ }
+ }
+ }
+
+ groups = append(groups, TodayGroupDTO{
+ NodeID: ci.Node.ID,
+ NodeTitle: ci.Node.Title,
+ NodeKind: ci.Node.Type,
+ Section: ci.Node.Section,
+ LastActivityAt: last,
+ Events: dtoEvents,
+ })
+
+ flatEvents = append(flatEvents, dtoEvents...)
+ }
+
+ // Sort groups by lastActivityAt desc.
+ sort.Slice(groups, func(i, j int) bool {
+ return groups[i].LastActivityAt > groups[j].LastActivityAt
+ })
+
+ // Sort flat events by createdAt desc.
+ sort.Slice(flatEvents, func(i, j int) bool {
+ return flatEvents[i].CreatedAt > flatEvents[j].CreatedAt
+ })
+
+ dateStr := time.Now().Format("2006-01-02")
+
+ return &TodayDashboardDTO{
+ Date: dateStr,
+ Summary: summary,
+ Groups: groups,
+ Events: flatEvents,
+ }, nil
}
func (a *App) ListChildren(parentID string) ([]NodeDTO, error) {
@@ -177,6 +442,7 @@ func (a *App) CreateNode(parentID, nodeType, title, section string) (*NodeDTO, e
if err != nil {
return nil, err
}
+ _ = a.activity.Record(n.ID, parentID, activity.TypeNodeCreated, title, "")
dto := toNodeDTO(n)
return &dto, nil
}
@@ -210,6 +476,7 @@ func (a *App) CreateNote(parentID, title string) (*NodeDTO, error) {
if err != nil {
return nil, err
}
+ _ = a.activity.Record(node.ID, parentID, activity.TypeNoteCreated, title, "")
dto := toNodeDTO(node)
return &dto, nil
}
@@ -221,7 +488,18 @@ func (a *App) ReadNote(noteID string) (string, error) {
// SaveNote saves note content.
func (a *App) SaveNote(noteID, content string) error {
- return a.notes.Save(noteID, content)
+ if err := a.notes.Save(noteID, content); err != nil {
+ return err
+ }
+ // Record note_updated event.
+ if n, err := a.nodes.GetActive(noteID); err == nil {
+ pid := ""
+ if n.ParentID != nil {
+ pid = *n.ParentID
+ }
+ _ = a.activity.Record(noteID, pid, activity.TypeNoteUpdated, n.Title, "")
+ }
+ return nil
}
// ============================================================
@@ -290,6 +568,9 @@ func (a *App) AddPathCopy(nodeID, sourcePath string) ([]NodeDTO, error) {
if err != nil {
return nil, err
}
+ for _, n := range nodes {
+ _ = a.activity.Record(n.ID, nodeID, activity.TypeFileAdded, n.Title, `{"source":"`+sourcePath+`"}`)
+ }
return toNodeDTOs(nodes), nil
}
@@ -298,10 +579,25 @@ func (a *App) AddPathLink(nodeID, sourcePath string) ([]NodeDTO, error) {
if err != nil {
return nil, err
}
+ for _, n := range nodes {
+ _ = a.activity.Record(n.ID, nodeID, activity.TypeFileAdded, n.Title, `{"source":"`+sourcePath+`"}`)
+ }
return toNodeDTOs(nodes), nil
}
func (a *App) DeleteFileOrFolder(nodeID string) error {
+ n, err := a.nodes.GetActive(nodeID)
+ if err == nil {
+ pid := ""
+ if n.ParentID != nil {
+ pid = *n.ParentID
+ }
+ evType := activity.TypeFileDeleted
+ if n.Type == nodes.TypeFolder {
+ evType = activity.TypeFolderDeleted
+ }
+ _ = a.activity.Record(nodeID, pid, evType, n.Title, "")
+ }
return a.files.DeleteNodeAndChildren(nodeID)
}
@@ -310,6 +606,7 @@ func (a *App) CreateEmptyFile(parentID, filename string) (*NodeDTO, error) {
if err != nil {
return nil, err
}
+ _ = a.activity.Record(node.ID, parentID, activity.TypeFileAdded, filename, "")
dto := toNodeDTO(node)
return &dto, nil
}
@@ -319,12 +616,36 @@ func (a *App) DuplicateNode(nodeID string) (*NodeDTO, error) {
if err != nil {
return nil, err
}
+ // Find parent for recording
+ n, err2 := a.nodes.GetActive(nodeID)
+ pid := ""
+ if err2 == nil && n.ParentID != nil {
+ pid = *n.ParentID
+ }
+ _ = a.activity.Record(node.ID, pid, activity.TypeFileCopied, node.Title, "")
dto := toNodeDTO(node)
return &dto, nil
}
func (a *App) RenameNode(nodeID, newTitle string) error {
- return a.nodes.UpdateTitle(nodeID, newTitle)
+ n, err := a.nodes.GetActive(nodeID)
+ if err != nil {
+ return err
+ }
+ oldTitle := n.Title
+ if err := a.nodes.UpdateTitle(nodeID, newTitle); err != nil {
+ return err
+ }
+ pid := ""
+ if n.ParentID != nil {
+ pid = *n.ParentID
+ }
+ evType := activity.TypeFileRenamed
+ if n.Type == nodes.TypeFolder {
+ evType = activity.TypeFolderRenamed
+ }
+ _ = a.activity.Record(nodeID, pid, evType, newTitle, `{"from":"`+oldTitle+`","to":"`+newTitle+`"}`)
+ return nil
}
func (a *App) ValidateName(name string) error {
@@ -351,7 +672,15 @@ func (a *App) MoveNode(nodeID, newParentID string) error {
break
}
}
- return a.nodes.Move(nodeID, newParentID, 0)
+ if err := a.nodes.Move(nodeID, newParentID, 0); err != nil {
+ return err
+ }
+ pid := ""
+ if node.ParentID != nil {
+ pid = *node.ParentID
+ }
+ _ = a.activity.Record(nodeID, pid, activity.TypeFileMoved, node.Title, `{"to":"`+newParentID+`"}`)
+ return nil
}
func (a *App) PreviewImport(sourcePath string) (*files.ImportSummary, error) {
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-684Z-cFJ.css b/cmd/verstak-gui/frontend-dist/assets/main-684Z-cFJ.css
deleted file mode 100644
index 5838622..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-684Z-cFJ.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-actions.svelte-7ixqek{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease}.file-row:hover .file-actions.svelte-7ixqek{opacity:1}.action-btn.svelte-7ixqek{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-7ixqek:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-7ixqek:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-7ixqek:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.file-row.svelte-15klzc3.svelte-15klzc3{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none}.file-row.svelte-15klzc3.svelte-15klzc3:hover{background:#1e1e30}.file-row.svelte-15klzc3.svelte-15klzc3:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-15klzc3.svelte-15klzc3{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-15klzc3.svelte-15klzc3{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-15klzc3.svelte-15klzc3{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-15klzc3.svelte-15klzc3{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-15klzc3.svelte-15klzc3{color:#444}.file-row-actions.svelte-15klzc3.svelte-15klzc3{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-15klzc3:hover .file-row-actions.svelte-15klzc3{opacity:1}.action-btn.svelte-15klzc3.svelte-15klzc3{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-15klzc3.svelte-15klzc3:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-15klzc3.svelte-15klzc3:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-15klzc3.svelte-15klzc3:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1ybaoro{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1ybaoro{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1ybaoro{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1ybaoro{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1ybaoro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1ybaoro{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1ybaoro{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1ybaoro{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1ybaoro:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1ybaoro:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.preview-body.svelte-1ybaoro{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1ybaoro{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1ybaoro{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1ybaoro{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1ybaoro{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1ybaoro{width:100%;height:100%}.preview-pdf.svelte-1ybaoro{width:100%;height:100%;border:none}.btn-sm.svelte-1ybaoro{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1ybaoro:hover{background:#223}.svelte-1rwjkun.svelte-1rwjkun,.svelte-1rwjkun.svelte-1rwjkun:before,.svelte-1rwjkun.svelte-1rwjkun:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-1rwjkun.svelte-1rwjkun{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-1rwjkun.svelte-1rwjkun{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-1rwjkun.svelte-1rwjkun{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-1rwjkun.svelte-1rwjkun{font-size:20px;line-height:1}.brand-name.svelte-1rwjkun.svelte-1rwjkun{font-size:16px;font-weight:600}.sidebar-nav.svelte-1rwjkun.svelte-1rwjkun{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.nav-label.svelte-1rwjkun.svelte-1rwjkun{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-1rwjkun.svelte-1rwjkun{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.nav-item.selected.svelte-1rwjkun.svelte-1rwjkun{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-1rwjkun.svelte-1rwjkun{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-1rwjkun.svelte-1rwjkun{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.main.svelte-1rwjkun.svelte-1rwjkun{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-1rwjkun.svelte-1rwjkun{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-1rwjkun.svelte-1rwjkun{font-size:14px;font-weight:500}.crumb.placeholder.svelte-1rwjkun.svelte-1rwjkun{color:#666}.crumb-type.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-1rwjkun.svelte-1rwjkun{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between}.dismiss.svelte-1rwjkun.svelte-1rwjkun{opacity:.6}.tabs.svelte-1rwjkun.svelte-1rwjkun{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-1rwjkun.svelte-1rwjkun{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-1rwjkun.svelte-1rwjkun:hover{color:#ccc}.tab.active.svelte-1rwjkun.svelte-1rwjkun{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-1rwjkun.svelte-1rwjkun{flex:1;overflow-y:auto}.note-editor.svelte-1rwjkun.svelte-1rwjkun{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-1rwjkun.svelte-1rwjkun{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-1rwjkun.svelte-1rwjkun{font-size:16px;font-weight:500}.dirty-mark.svelte-1rwjkun.svelte-1rwjkun{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-1rwjkun.svelte-1rwjkun{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-1rwjkun.svelte-1rwjkun{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.overview.svelte-1rwjkun h2.svelte-1rwjkun{font-size:24px;margin-bottom:16px}.meta-grid.svelte-1rwjkun.svelte-1rwjkun{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-1rwjkun.svelte-1rwjkun{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-1rwjkun.svelte-1rwjkun{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}.qa-btn.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.qa-btn.svelte-1rwjkun.svelte-1rwjkun:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:24px}.recent-section.svelte-1rwjkun h3.svelte-1rwjkun{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-1rwjkun.svelte-1rwjkun{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-1rwjkun.svelte-1rwjkun:hover{background:#1a1a28}.recent-date.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.recent-entry.svelte-1rwjkun.svelte-1rwjkun{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.tab-toolbar.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.create-form.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-1rwjkun input.svelte-1rwjkun{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-1rwjkun input.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.form-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px}.notes-list.svelte-1rwjkun.svelte-1rwjkun{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-1rwjkun.svelte-1rwjkun:hover{border-color:#3a3a5c}.note-card-title.svelte-1rwjkun.svelte-1rwjkun{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.worklog-tab.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.worklog-form.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-1rwjkun input.svelte-1rwjkun{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-1rwjkun input.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-1rwjkun input[type=text].svelte-1rwjkun{flex:1}.worklog-form.svelte-1rwjkun input[type=number].svelte-1rwjkun{width:70px}.worklog-entry.svelte-1rwjkun.svelte-1rwjkun{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-1rwjkun.svelte-1rwjkun{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-1rwjkun p.svelte-1rwjkun{margin:0;font-size:14px;color:#666}.empty-state.svelte-1rwjkun .empty-icon.svelte-1rwjkun{margin-bottom:12px;color:#444}.empty-state.svelte-1rwjkun .hint.svelte-1rwjkun{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-1rwjkun .empty-actions.svelte-1rwjkun{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-1rwjkun.svelte-1rwjkun{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-1rwjkun.svelte-1rwjkun{padding:48px 24px;text-align:center}.welcome.svelte-1rwjkun h2.svelte-1rwjkun{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-1rwjkun p.svelte-1rwjkun{color:#666;font-size:14px}.error-text.svelte-1rwjkun.svelte-1rwjkun{color:#f88}.fab.svelte-1rwjkun.svelte-1rwjkun{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-1rwjkun.svelte-1rwjkun:hover{background:#4f46e5}.modal-overlay.svelte-1rwjkun.svelte-1rwjkun{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-1rwjkun h3.svelte-1rwjkun{font-size:18px;margin-bottom:16px}.form-group.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:12px}.form-group.svelte-1rwjkun label.svelte-1rwjkun{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-1rwjkun input.svelte-1rwjkun,.form-group.svelte-1rwjkun select.svelte-1rwjkun{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-1rwjkun select.svelte-1rwjkun{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-1rwjkun input.svelte-1rwjkun:focus,.form-group.svelte-1rwjkun select.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-1rwjkun.svelte-1rwjkun{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.btn-primary.svelte-1rwjkun.svelte-1rwjkun{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1rwjkun.svelte-1rwjkun:hover{background:#4f46e5}.btn.svelte-1rwjkun.svelte-1rwjkun:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-1rwjkun.svelte-1rwjkun{padding:4px 10px;font-size:12px}.btn-danger.svelte-1rwjkun.svelte-1rwjkun{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-1rwjkun.svelte-1rwjkun:hover{background:#3a2222}.files-tab.svelte-1rwjkun.svelte-1rwjkun{padding:20px}.files-tab.svelte-1rwjkun .tab-toolbar.svelte-1rwjkun{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-1rwjkun.svelte-1rwjkun{display:flex;flex-direction:column}.back-btn.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:4px}.import-summary.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.summary-row.svelte-1rwjkun.svelte-1rwjkun{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-1rwjkun.svelte-1rwjkun{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-6cuAgDnH.css b/cmd/verstak-gui/frontend-dist/assets/main-6cuAgDnH.css
deleted file mode 100644
index 8ced395..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-6cuAgDnH.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-row.svelte-18mry1k.svelte-18mry1k{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none}.file-row.svelte-18mry1k.svelte-18mry1k:hover{background:#1e1e30}.file-row--selected.svelte-18mry1k.svelte-18mry1k{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-18mry1k.svelte-18mry1k:hover{background:#252545}.file-row.svelte-18mry1k.svelte-18mry1k:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-18mry1k.svelte-18mry1k{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-18mry1k.svelte-18mry1k{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-18mry1k.svelte-18mry1k{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-18mry1k.svelte-18mry1k{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-18mry1k.svelte-18mry1k{color:#444}.file-row-actions.svelte-18mry1k.svelte-18mry1k{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-18mry1k:hover .file-row-actions.svelte-18mry1k{opacity:1}.action-btn.svelte-18mry1k.svelte-18mry1k{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-18mry1k.svelte-18mry1k:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-18mry1k.svelte-18mry1k:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-18mry1k.svelte-18mry1k:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-18mry1k.svelte-18mry1k{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-18mry1k.svelte-18mry1k{position:absolute;right:12px;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;padding:4px;z-index:100;min-width:140px;box-shadow:0 4px 12px #0006}.menu-item.svelte-18mry1k.svelte-18mry1k{display:block;width:100%;padding:6px 12px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-18mry1k.svelte-18mry1k:hover{background:#2a2a3c}.menu-item.svelte-18mry1k.svelte-18mry1k:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1cw3u0m{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1cw3u0m{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1cw3u0m{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1cw3u0m{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1cw3u0m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1cw3u0m{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1cw3u0m{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1cw3u0m:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1cw3u0m:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.action-btn-close.svelte-1cw3u0m{color:#ff6b6b}.action-btn-close.svelte-1cw3u0m:hover{background:#3a2222;color:#f44}.preview-body.svelte-1cw3u0m{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1cw3u0m{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1cw3u0m{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1cw3u0m{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1cw3u0m{width:100%;height:100%}.preview-pdf.svelte-1cw3u0m{width:100%;height:100%;border:none}.btn-sm.svelte-1cw3u0m{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1cw3u0m:hover{background:#223}.overlay.svelte-1fv6yyk{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.modal.svelte-1fv6yyk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:360px;max-width:90vw}h3.svelte-1fv6yyk{font-size:18px;margin-bottom:12px;color:#e4e4ef}.message.svelte-1fv6yyk{font-size:14px;color:#aaa;margin-bottom:20px;line-height:1.4}.actions.svelte-1fv6yyk{display:flex;gap:8px;justify-content:flex-end}.btn.svelte-1fv6yyk{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1fv6yyk:hover{background:#223}.btn-primary.svelte-1fv6yyk{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1fv6yyk:hover{background:#4f46e5}.btn-danger.svelte-1fv6yyk{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger.svelte-1fv6yyk:hover{background:#b91c1c}.btn.svelte-1fv6yyk:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.svelte-9y78h7.svelte-9y78h7,.svelte-9y78h7.svelte-9y78h7:before,.svelte-9y78h7.svelte-9y78h7:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-9y78h7.svelte-9y78h7{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-9y78h7.svelte-9y78h7{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-9y78h7.svelte-9y78h7{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-9y78h7.svelte-9y78h7{font-size:20px;line-height:1}.brand-name.svelte-9y78h7.svelte-9y78h7{font-size:16px;font-weight:600}.sidebar-nav.svelte-9y78h7.svelte-9y78h7{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-9y78h7.svelte-9y78h7{margin-bottom:16px}.nav-label.svelte-9y78h7.svelte-9y78h7{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-9y78h7.svelte-9y78h7{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-9y78h7.svelte-9y78h7:hover{background:#223}.nav-item.selected.svelte-9y78h7.svelte-9y78h7{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-9y78h7.svelte-9y78h7{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-9y78h7.svelte-9y78h7{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-9y78h7.svelte-9y78h7{font-size:11px;color:#555}.main.svelte-9y78h7.svelte-9y78h7{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-9y78h7.svelte-9y78h7{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-9y78h7.svelte-9y78h7{font-size:14px;font-weight:500}.crumb.placeholder.svelte-9y78h7.svelte-9y78h7{color:#666}.crumb-type.svelte-9y78h7.svelte-9y78h7{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-9y78h7.svelte-9y78h7{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.dismiss-btn.svelte-9y78h7.svelte-9y78h7{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-9y78h7.svelte-9y78h7:hover{color:#f44}.tabs.svelte-9y78h7.svelte-9y78h7{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-9y78h7.svelte-9y78h7{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-9y78h7.svelte-9y78h7:hover{color:#ccc}.tab.active.svelte-9y78h7.svelte-9y78h7{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-9y78h7.svelte-9y78h7{flex:1;overflow-y:auto}.note-editor.svelte-9y78h7.svelte-9y78h7{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-9y78h7.svelte-9y78h7{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-9y78h7.svelte-9y78h7{font-size:16px;font-weight:500}.dirty-mark.svelte-9y78h7.svelte-9y78h7{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-9y78h7.svelte-9y78h7{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-9y78h7.svelte-9y78h7{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-9y78h7.svelte-9y78h7{padding:24px}.overview.svelte-9y78h7 h2.svelte-9y78h7{font-size:24px;margin-bottom:16px}.meta-grid.svelte-9y78h7.svelte-9y78h7{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-9y78h7.svelte-9y78h7{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-9y78h7.svelte-9y78h7{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-9y78h7.svelte-9y78h7{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-9y78h7.svelte-9y78h7{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.qa-btn.svelte-9y78h7.svelte-9y78h7:hover{background:#223}.qa-btn.svelte-9y78h7.svelte-9y78h7:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-9y78h7.svelte-9y78h7{margin-bottom:24px}.recent-section.svelte-9y78h7 h3.svelte-9y78h7{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-9y78h7.svelte-9y78h7{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-9y78h7.svelte-9y78h7:hover{background:#1a1a28}.recent-date.svelte-9y78h7.svelte-9y78h7{font-size:11px;color:#555}.recent-entry.svelte-9y78h7.svelte-9y78h7{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-9y78h7.svelte-9y78h7{padding:24px}.tab-toolbar.svelte-9y78h7.svelte-9y78h7{margin-bottom:16px}.create-form.svelte-9y78h7.svelte-9y78h7{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-9y78h7 input.svelte-9y78h7{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-9y78h7 input.svelte-9y78h7:focus{outline:none;border-color:#6366f1}.form-actions.svelte-9y78h7.svelte-9y78h7{display:flex;gap:8px}.notes-list.svelte-9y78h7.svelte-9y78h7{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-9y78h7.svelte-9y78h7{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-9y78h7.svelte-9y78h7:hover{border-color:#3a3a5c}.note-card-title.svelte-9y78h7.svelte-9y78h7{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-9y78h7.svelte-9y78h7{font-size:11px;color:#555}.worklog-tab.svelte-9y78h7.svelte-9y78h7{padding:24px}.worklog-form.svelte-9y78h7.svelte-9y78h7{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-9y78h7 input.svelte-9y78h7{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-9y78h7 input.svelte-9y78h7:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-9y78h7 input[type=text].svelte-9y78h7{flex:1}.worklog-form.svelte-9y78h7 input[type=number].svelte-9y78h7{width:70px}.worklog-entry.svelte-9y78h7.svelte-9y78h7{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-9y78h7.svelte-9y78h7{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-9y78h7.svelte-9y78h7{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-9y78h7.svelte-9y78h7{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-9y78h7.svelte-9y78h7{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-9y78h7 p.svelte-9y78h7{margin:0;font-size:14px;color:#666}.empty-state.svelte-9y78h7 .empty-icon.svelte-9y78h7{margin-bottom:12px;color:#444}.empty-state.svelte-9y78h7 .hint.svelte-9y78h7{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-9y78h7 .empty-actions.svelte-9y78h7{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-9y78h7.svelte-9y78h7{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-9y78h7.svelte-9y78h7{padding:48px 24px;text-align:center}.welcome.svelte-9y78h7 h2.svelte-9y78h7{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-9y78h7 p.svelte-9y78h7{color:#666;font-size:14px}.error-text.svelte-9y78h7.svelte-9y78h7{color:#f88}.fab.svelte-9y78h7.svelte-9y78h7{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-9y78h7.svelte-9y78h7:hover{background:#4f46e5}.modal-overlay.svelte-9y78h7.svelte-9y78h7{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-9y78h7.svelte-9y78h7{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-9y78h7 h3.svelte-9y78h7{font-size:18px;margin-bottom:16px}.form-group.svelte-9y78h7.svelte-9y78h7{margin-bottom:12px}.form-group.svelte-9y78h7 label.svelte-9y78h7{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-9y78h7 input.svelte-9y78h7,.form-group.svelte-9y78h7 select.svelte-9y78h7{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-9y78h7 select.svelte-9y78h7{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-9y78h7 input.svelte-9y78h7:focus,.form-group.svelte-9y78h7 select.svelte-9y78h7:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-9y78h7.svelte-9y78h7{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-9y78h7.svelte-9y78h7{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-9y78h7.svelte-9y78h7:hover{background:#223}.btn-primary.svelte-9y78h7.svelte-9y78h7{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-9y78h7.svelte-9y78h7:hover{background:#4f46e5}.btn.svelte-9y78h7.svelte-9y78h7:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-9y78h7.svelte-9y78h7{padding:4px 10px;font-size:12px}.btn-danger.svelte-9y78h7.svelte-9y78h7{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-9y78h7.svelte-9y78h7:hover{background:#3a2222}.files-tab.svelte-9y78h7.svelte-9y78h7{padding:20px}.files-tab.svelte-9y78h7 .tab-toolbar.svelte-9y78h7{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-9y78h7.svelte-9y78h7{display:flex;flex-direction:column}.back-btn.svelte-9y78h7.svelte-9y78h7{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-9y78h7.svelte-9y78h7{margin-bottom:16px}.summary-row.svelte-9y78h7.svelte-9y78h7{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-9y78h7.svelte-9y78h7{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-B8EIu1OK.js b/cmd/verstak-gui/frontend-dist/assets/main-B8EIu1OK.js
deleted file mode 100644
index 3522987..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-B8EIu1OK.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Yn=Object.defineProperty;var Qn=(n,e,t)=>e in n?Yn(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var tt=(n,e,t)=>Qn(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&l(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function Z(){}function Sl(n){return n()}function Et(){return Object.create(null)}function ce(n){n.forEach(Sl)}function Tl(n){return typeof n=="function"}function Ne(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Ae;function Ve(n,e){return n===e?!0:(Ae||(Ae=document.createElement("a")),Ae.href=e,n===Ae.href)}function xn(n){return Object.keys(n).length===0}function $n(n){return n??""}function f(n,e){n.appendChild(e)}function k(n,e,t){n.insertBefore(e,t||null)}function b(n){n.parentNode&&n.parentNode.removeChild(n)}function _e(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function be(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function Oe(n){return function(e){e.target===this&&n.call(this,e)}}function r(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Ll(n){return n===""?null:+n}function ei(n){return Array.from(n.childNodes)}function G(n,e){e=""+e,n.data!==e&&(n.data=e)}function me(n,e){n.value=e??""}function Nt(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const s=li(e,t,{cancelable:l});return i.slice().forEach(o=>{o.call(n,s)}),!s.defaultPrevented}return!0}}function ni(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const De=[],Ft=[];let Ee=[];const Ht=[],ii=Promise.resolve();let nt=!1;function si(){nt||(nt=!0,ii.then(Nl))}function Re(n){Ee.push(n)}const lt=new Set;let Le=0;function Nl(){if(Le!==0)return;const n=Be;do{try{for(;Len.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),Ee=e}const ze=new Set;let Me;function ke(){Me={r:0,c:[],p:Me}}function ge(){Me.r||ce(Me.c),Me=Me.p}function le(n,e){n&&n.i&&(ze.delete(n),n.i(e))}function oe(n,e,t,l){if(n&&n.o){if(ze.has(n))return;ze.add(n),Me.c.push(()=>{ze.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function se(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function ci(n,e){oe(n,1,1,()=>{e.delete(n.key)})}function ai(n,e,t,l,i,s,o,a,c,m,_,h){let p=n.length,v=s.length,w=p;const g={};for(;w--;)g[n[w].key]=w;const y=[],C=new Map,T=new Map,j=[];for(w=v;w--;){const E=h(i,s,w),I=t(E);let M=o.get(I);M?j.push(()=>M.p(E,e)):(M=m(I,E),M.c()),C.set(I,y[w]=M),I in g&&T.set(I,Math.abs(w-g[I]))}const F=new Set,A=new Set;function O(E){le(E,1),E.m(a,_),o.set(E.key,E),_=E.first,v--}for(;p&&v;){const E=y[v-1],I=n[p-1],M=E.key,D=I.key;E===I?(_=E.first,p--,v--):C.has(D)?!o.has(M)||F.has(M)?O(E):A.has(D)?p--:T.get(M)>T.get(D)?(A.add(M),O(E)):(F.add(D),p--):(c(I,o),p--)}for(;p--;){const E=n[p];C.has(E.key)||c(E,o)}for(;v;)O(y[v-1]);return ce(j),y}function Se(n){n&&n.c()}function ye(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),Re(()=>{const s=n.$$.on_mount.map(Sl).filter(Tl);n.$$.on_destroy?n.$$.on_destroy.push(...s):ce(s),n.$$.on_mount=[]}),i.forEach(Re)}function qe(n,e){const t=n.$$;t.fragment!==null&&(ri(t.after_update),ce(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function fi(n,e){n.$$.dirty[0]===-1&&(De.push(n),si(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const w=v.length?v[0]:p;return m.ctx&&i(m.ctx[h],m.ctx[h]=w)&&(!m.skip_bound&&m.bound[h]&&m.bound[h](w),_&&fi(n,h)),p}):[],m.update(),_=!0,ce(m.before_update),m.fragment=l?l(m.ctx):!1,e.target){if(e.hydrate){const h=ei(e.target);m.fragment&&m.fragment.l(h),h.forEach(b)}else m.fragment&&m.fragment.c();e.intro&&le(n.$$.fragment),ye(n,e.target,e.anchor),Nl()}je(c)}class Fe{constructor(){tt(this,"$$");tt(this,"$$set")}$destroy(){qe(this,1),this.$destroy=Z}$on(e,t){if(!Tl(t))return Z;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!xn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const ui="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(ui);function di(n){let e,t;return{c(){e=R("path"),t=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(b(e),b(t))}}}function mi(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17"),r(s,"points","10 9 9 9 8 9")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),k(o,i,a),k(o,s,a)},d(o){o&&(b(e),b(t),b(l),b(i),b(s))}}}function pi(n){let e,t;return{c(){e=R("polyline"),t=R("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(b(e),b(t))}}}function _i(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(l,"x1","3"),r(l,"y1","8"),r(l,"x2","21"),r(l,"y2","8"),r(i,"x","10"),r(i,"y","12"),r(i,"width","4"),r(i,"height","4"),r(i,"rx","1")},m(s,o){k(s,e,o),k(s,t,o),k(s,l,o),k(s,i,o)},d(s){s&&(b(e),b(t),b(l),b(i))}}}function hi(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","9"),r(l,"y1","12"),r(l,"x2","15"),r(l,"y2","12"),r(i,"x1","9"),r(i,"y1","15"),r(i,"x2","13"),r(i,"y2","15"),r(s,"x1","12"),r(s,"y1","15"),r(s,"x2","12"),r(s,"y2","18")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),k(o,i,a),k(o,s,a)},d(o){o&&(b(e),b(t),b(l),b(i),b(s))}}}function vi(n){let e,t,l,i,s,o;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),o=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14"),r(o,"x1","12"),r(o,"y1","12"),r(o,"x2","12"),r(o,"y2","18")},m(a,c){k(a,e,c),k(a,t,c),k(a,l,c),k(a,i,c),k(a,s,c),k(a,o,c)},d(a){a&&(b(e),b(t),b(l),b(i),b(s),b(o))}}}function bi(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17")},m(s,o){k(s,e,o),k(s,t,o),k(s,l,o),k(s,i,o)},d(s){s&&(b(e),b(t),b(l),b(i))}}}function ki(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),k(o,i,a),k(o,s,a)},d(o){o&&(b(e),b(t),b(l),b(i),b(s))}}}function gi(n){let e,t,l;return{c(){e=R("path"),t=R("circle"),l=R("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(l,"cx","18"),r(l,"cy","16"),r(l,"r","3")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},d(i){i&&(b(e),b(t),b(l))}}}function wi(n){let e,t;return{c(){e=R("rect"),t=R("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(b(e),b(t))}}}function yi(n){let e,t,l;return{c(){e=R("rect"),t=R("circle"),l=R("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(l,"points","21 15 16 10 5 21")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},d(i){i&&(b(e),b(t),b(l))}}}function qi(n){let e;return{c(){e=R("path"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){k(t,e,l)},d(t){t&&b(e)}}}function Ci(n){let e;function t(s,o){return s[0]==="folder"?qi:s[0]==="image"?yi:s[0]==="video"?wi:s[0]==="audio"?gi:s[0]==="pdf"?ki:s[0]==="document"?bi:s[0]==="spreadsheet"?vi:s[0]==="presentation"?hi:s[0]==="archive"?_i:s[0]==="code"?pi:s[0]==="text"?mi:di}let l=t(n),i=l(n);return{c(){e=R("svg"),i.c(),r(e,"width",n[1]),r(e,"height",n[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){k(s,e,o),i.m(e,null)},p(s,[o]){l!==(l=t(s))&&(i.d(1),i=l(s),i&&(i.c(),i.m(e,null))),o&2&&r(e,"width",s[1]),o&2&&r(e,"height",s[1])},i:Z,o:Z,d(s){s&&b(e),i.d()}}}function Mi(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=s=>{"kind"in s&&t(0,l=s.kind),"size"in s&&t(1,i=s.size)},[l,i]}class Il extends Fe{constructor(e){super(),Ie(this,e,Mi,Ci,Ne,{kind:0,size:1})}}function We(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const it={"image/jpeg":"Изображение JPEG","image/png":"Изображение PNG","image/gif":"Изображение GIF","image/webp":"Изображение WebP","image/svg+xml":"Изображение SVG","image/bmp":"Изображение BMP","image/tiff":"Изображение TIFF","image/avif":"Изображение AVIF","application/pdf":"PDF документ","application/msword":"Документ Word","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Документ Word","application/vnd.ms-excel":"Таблица Excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Таблица Excel","application/vnd.ms-powerpoint":"Презентация PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Презентация PowerPoint","application/zip":"ZIP архив","application/gzip":"GZIP архив","application/x-tar":"TAR архив","application/x-7z-compressed":"7z архив","application/x-rar-compressed":"RAR архив","text/plain":"Текстовый файл","text/html":"HTML файл","text/css":"CSS файл","text/javascript":"JavaScript файл","application/json":"JSON файл","application/xml":"XML файл","application/x-yaml":"YAML файл","application/octet-stream":"Бинарный файл","application/x-msdos-program":"Исполняемый файл","inode/directory":"Папка"};function jt(n){return n?it[n]||n:"Неизвестно"}function Si(n){if(n.type==="folder")return"Папка";const e=(n.mime||"").toLowerCase();if(it[e])return it[e];const l=(n.name||"").toLowerCase().split(".").pop();return l?l.toUpperCase():"Файл"}function Fl(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const Ti=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Li=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Di=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Ei=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function Hl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Ti.includes(e)||Ei.includes(l)}function jl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Li.includes(e)||Di.includes(l)&&l!=="md"&&l!=="markdown"}function Bl(n){return(n.mime||"").toLowerCase().includes("pdf")}function Ol(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Ni(n){return Hl(n)||Bl(n)}function Ii(n){return jl(n)||Ol(n)}function Fi(n){let e,t,l,i=We(n[0].size)+"",s;return{c(){e=d("span"),e.textContent="·",t=q(),l=d("span"),s=H(i),r(e,"class","meta-sep svelte-1u905d2")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),f(l,s)},p(o,a){a&1&&i!==(i=We(o[0].size)+"")&&G(s,i)},d(o){o&&(b(e),b(t),b(l))}}}function Hi(n){let e,t,l;return{c(){e=d("button"),e.innerHTML=' ',r(e,"class","action-btn svelte-1u905d2"),r(e,"title","Открыть папку"),r(e,"aria-label","Открыть папку")},m(i,s){k(i,e,s),t||(l=L(e,"click",be(n[27])),t=!0)},p:Z,d(i){i&&b(e),t=!1,l()}}}function ji(n){let e,t,l,i,s;return{c(){e=d("button"),e.innerHTML=' ',t=q(),l=d("button"),l.innerHTML=' ',r(e,"class","action-btn svelte-1u905d2"),r(e,"title","Предпросмотр"),r(e,"aria-label","Предпросмотр"),r(l,"class","action-btn svelte-1u905d2"),r(l,"title","Открыть во внешней программе"),r(l,"aria-label","Открыть внешне")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),i||(s=[L(e,"click",be(n[26])),L(l,"click",be(n[8]))],i=!0)},p:Z,d(o){o&&(b(e),b(t),b(l)),i=!1,ce(s)}}}function Bt(n){let e,t,l,i,s,o,a,c,m,_,h,p,v,w,g,y,C,T,j,F,A,O,E,I=n[5]&&Bi(n);return{c(){e=d("div"),t=q(),l=d("div"),i=d("button"),i.innerHTML=`
- Открыть`,s=q(),o=d("button"),o.innerHTML=`
- Открыть во внешней программе`,a=q(),I&&I.c(),c=q(),m=d("div"),_=q(),h=d("button"),h.innerHTML=`
- Переименовать`,p=q(),v=d("button"),v.innerHTML=`
- Дублировать`,w=q(),g=d("button"),g.innerHTML=`
- Вырезать`,y=q(),C=d("button"),C.innerHTML=`
- Копировать`,T=q(),j=d("div"),F=q(),A=d("button"),A.innerHTML=`
- Удалить`,r(e,"class","menu-backdrop svelte-1u905d2"),r(e,"role","presentation"),r(i,"class","menu-item svelte-1u905d2"),r(i,"role","menuitem"),r(o,"class","menu-item svelte-1u905d2"),r(o,"role","menuitem"),r(m,"class","menu-sep svelte-1u905d2"),r(h,"class","menu-item svelte-1u905d2"),r(h,"role","menuitem"),r(v,"class","menu-item svelte-1u905d2"),r(v,"role","menuitem"),r(g,"class","menu-item svelte-1u905d2"),r(g,"role","menuitem"),r(C,"class","menu-item svelte-1u905d2"),r(C,"role","menuitem"),r(j,"class","menu-sep svelte-1u905d2"),r(A,"class","menu-item menu-item-danger svelte-1u905d2"),r(A,"role","menuitem"),r(l,"class","menu svelte-1u905d2"),r(l,"role","menu")},m(M,D){k(M,e,D),k(M,t,D),k(M,l,D),f(l,i),f(l,s),f(l,o),f(l,a),I&&I.m(l,null),f(l,c),f(l,m),f(l,_),f(l,h),f(l,p),f(l,v),f(l,w),f(l,g),f(l,y),f(l,C),f(l,T),f(l,j),f(l,F),f(l,A),O||(E=[L(e,"click",be(n[17])),L(i,"click",n[15]),L(o,"click",n[8]),L(h,"click",n[11]),L(v,"click",n[12]),L(g,"click",n[13]),L(C,"click",n[14]),L(A,"click",n[10]),L(l,"click",be(n[25]))],O=!0)},p(M,D){M[5]&&I.p(M,D)},d(M){M&&(b(e),b(t),b(l)),I&&I.d(),O=!1,ce(E)}}}function Bi(n){let e,t,l;return{c(){e=d("button"),e.innerHTML=`
- Показать в проводнике`,r(e,"class","menu-item svelte-1u905d2"),r(e,"role","menuitem")},m(i,s){k(i,e,s),t||(l=L(e,"click",n[9]),t=!0)},p:Z,d(i){i&&b(e),t=!1,l()}}}function Oi(n){let e,t,l,i,s,o,a=n[0].name+"",c,m,_,h,p,v,w,g,y,C,T,j,F,A,O,E,I,M,D,U,J,W;l=new Il({props:{kind:n[4],size:22}});let B=!n[5]&&Fi(n);function ee(V,P){return V[5]?Hi:ji}let Q=ee(n)(n),Y=n[2]&&Bt(n);return{c(){e=d("div"),t=d("div"),Se(l.$$.fragment),i=q(),s=d("div"),o=d("div"),c=H(a),_=q(),h=d("div"),p=d("span"),p.textContent=`${n[6]}`,v=q(),B&&B.c(),w=q(),g=d("div"),Q.c(),y=q(),C=d("button"),T=R("svg"),j=R("circle"),F=R("circle"),A=R("circle"),O=q(),E=d("button"),E.innerHTML=' ',M=q(),Y&&Y.c(),D=ve(),r(t,"class","file-row-icon svelte-1u905d2"),r(o,"class","file-row-name svelte-1u905d2"),r(o,"title",m=n[0].name),r(h,"class","file-row-meta svelte-1u905d2"),r(s,"class","file-row-body svelte-1u905d2"),r(j,"cx","12"),r(j,"cy","5"),r(j,"r","2"),r(F,"cx","12"),r(F,"cy","12"),r(F,"r","2"),r(A,"cx","12"),r(A,"cy","19"),r(A,"r","2"),r(T,"width","16"),r(T,"height","16"),r(T,"viewBox","0 0 24 24"),r(T,"fill","currentColor"),r(C,"class","action-btn svelte-1u905d2"),r(C,"title","Ещё"),r(C,"aria-label","Ещё"),r(C,"aria-expanded",n[2]),r(E,"class","action-btn action-btn-danger svelte-1u905d2"),r(E,"title","Удалить"),r(E,"aria-label","Удалить"),r(g,"class","file-row-actions svelte-1u905d2"),r(e,"class","file-row svelte-1u905d2"),r(e,"role","button"),r(e,"tabindex","0"),r(e,"draggable","true"),r(e,"aria-label",I=n[5]?`Папка ${n[0].name}`:`Файл ${n[0].name}`),It(e,"file-row--selected",n[1])},m(V,P){k(V,e,P),f(e,t),ye(l,t,null),f(e,i),f(e,s),f(s,o),f(o,c),f(s,_),f(s,h),f(h,p),f(h,v),B&&B.m(h,null),f(e,w),f(e,g),Q.m(g,null),f(g,y),f(g,C),f(C,T),f(T,j),f(T,F),f(T,A),f(g,O),f(g,E),k(V,M,P),Y&&Y.m(V,P),k(V,D,P),U=!0,J||(W=[L(window,"click",n[17]),L(C,"click",be(n[16])),L(E,"click",be(n[10])),L(e,"click",n[7]),L(e,"contextmenu",n[21]),L(e,"dragstart",n[18]),L(e,"dragover",n[19]),L(e,"drop",n[20])],J=!0)},p(V,[P]){(!U||P&1)&&a!==(a=V[0].name+"")&&G(c,a),(!U||P&1&&m!==(m=V[0].name))&&r(o,"title",m),V[5]||B.p(V,P),Q.p(V,P),(!U||P&4)&&r(C,"aria-expanded",V[2]),(!U||P&1&&I!==(I=V[5]?`Папка ${V[0].name}`:`Файл ${V[0].name}`))&&r(e,"aria-label",I),(!U||P&2)&&It(e,"file-row--selected",V[1]),V[2]?Y?Y.p(V,P):(Y=Bt(V),Y.c(),Y.m(D.parentNode,D)):Y&&(Y.d(1),Y=null)},i(V){U||(le(l.$$.fragment,V),U=!0)},o(V){oe(l.$$.fragment,V),U=!1},d(V){V&&(b(e),b(M),b(D)),qe(l),B&&B.d(),Q.d(),Y&&Y.d(V),J=!1,ce(W)}}}function Pi(n,e,t){let{item:l}=e,{selected:i=!1}=e,{onDragStart:s}=e,{onDragOver:o}=e,{onDrop:a}=e;const c=Ke(),m=Fl(l),_=l.type==="folder",h=Si(l);let p=!1,v=null;function w(N){N.ctrlKey||N.metaKey?c("toggleSelect",l.id):N.shiftKey?c("rangeSelect",l.id):v?(clearTimeout(v),v=null,_?c("navigate",l.id):c("preview",l)):v=setTimeout(()=>{v=null,c("selectOne",l.id)},250)}function g(){c("openExternal",l.fileId)}function y(){c("showInFolder",l.id)}function C(){t(2,p=!1),c("delete",{id:l.id,type:l.type})}function T(){t(2,p=!1),c("rename",{id:l.id,name:l.name})}function j(){t(2,p=!1),c("duplicate",l.id)}function F(){t(2,p=!1),c("cut",l.id)}function A(){t(2,p=!1),c("copy",l.id)}function O(){t(2,p=!1),_?c("navigate",l.id):c("preview",l)}function E(){t(2,p=!p)}function I(){t(2,p=!1)}function M(N){s&&s(N,l.id)}function D(N){o&&_&&o(N,l.id)}function U(N){a&&_&&a(N,l.id)}function J(N){N.preventDefault(),t(2,p=!0)}function W(N){ni.call(this,n,N)}const B=()=>c("preview",l),ee=()=>c("navigate",l.id);return n.$$set=N=>{"item"in N&&t(0,l=N.item),"selected"in N&&t(1,i=N.selected),"onDragStart"in N&&t(22,s=N.onDragStart),"onDragOver"in N&&t(23,o=N.onDragOver),"onDrop"in N&&t(24,a=N.onDrop)},[l,i,p,c,m,_,h,w,g,y,C,T,j,F,A,O,E,I,M,D,U,J,s,o,a,W,B,ee]}class Ai extends Fe{constructor(e){super(),Ie(this,e,Pi,Oi,Ne,{item:0,selected:1,onDragStart:22,onDragOver:23,onDrop:24})}}function Ot(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function zi(n){let e;return{c(){e=d("span"),e.textContent="/",r(e,"class","sep svelte-csi2lb")},m(t,l){k(t,e,l)},d(t){t&&b(e)}}}function Vi(n){let e,t=n[4].name+"",l,i,s;function o(){return n[2](n[6])}return{c(){e=d("button"),l=H(t),r(e,"class","crumb crumb--link svelte-csi2lb")},m(a,c){k(a,e,c),f(e,l),i||(s=L(e,"click",o),i=!0)},p(a,c){n=a,c&1&&t!==(t=n[4].name+"")&&G(l,t)},d(a){a&&b(e),i=!1,s()}}}function Ri(n){let e,t=n[4].name+"",l;return{c(){e=d("span"),l=H(t),r(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){k(i,e,s),f(e,l)},p(i,s){s&1&&t!==(t=i[4].name+"")&&G(l,t)},d(i){i&&b(e)}}}function Pt(n){let e,t,l=n[6]>0&&zi();function i(a,c){return a[6]===a[0].length-1?Ri:Vi}let s=i(n),o=s(n);return{c(){l&&l.c(),e=q(),o.c(),t=ve()},m(a,c){l&&l.m(a,c),k(a,e,c),o.m(a,c),k(a,t,c)},p(a,c){s===(s=i(a))&&o?o.p(a,c):(o.d(1),o=s(a),o&&(o.c(),o.m(t.parentNode,t)))},d(a){a&&(b(e),b(t)),l&&l.d(a),o.d(a)}}}function Wi(n){let e,t=se(n[0]),l=[];for(let i=0;is(a);return n.$$set=a=>{"crumbs"in a&&t(0,l=a.crumbs)},[l,s,o]}class Pl extends Fe{constructor(e){super(),Ie(this,e,Ki,Wi,Ne,{crumbs:0})}}function Gi(n){let e,t,l,i,s,o;return{c(){e=d("div"),t=d("p"),t.textContent="Предпросмотр недоступен для этого типа файлов.",l=q(),i=d("button"),i.textContent="Открыть во внешней программе",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,c){k(a,e,c),f(e,t),f(e,l),f(e,i),s||(o=L(i,"click",n[9]),s=!0)},p:Z,d(a){a&&b(e),s=!1,o()}}}function Ui(n){let e,t;function l(o,a){return a&2&&(e=null),e==null&&(e=!!(o[1]&&o[1].startsWith("data:"))),e?xi:Qi}let i=l(n,-1),s=i(n);return{c(){s.c(),t=ve()},m(o,a){s.m(o,a),k(o,t,a)},p(o,a){i===(i=l(o,a))&&s?s.p(o,a):(s.d(1),s=i(o),s&&(s.c(),s.m(t.parentNode,t)))},d(o){o&&b(t),s.d(o)}}}function Ji(n){let e,t,l;return{c(){e=d("pre"),t=d("code"),l=H(n[1]),r(e,"class","preview-text svelte-1cw3u0m")},m(i,s){k(i,e,s),f(e,t),f(t,l)},p(i,s){s&2&&G(l,i[1])},d(i){i&&b(e)}}}function Xi(n){let e,t,l,i;return{c(){e=d("div"),t=d("img"),Ve(t.src,l=n[1])||r(t,"src",l),r(t,"alt",i=n[0].name),r(t,"class","preview-image svelte-1cw3u0m"),r(e,"class","preview-image-container svelte-1cw3u0m")},m(s,o){k(s,e,o),f(e,t)},p(s,o){o&2&&!Ve(t.src,l=s[1])&&r(t,"src",l),o&1&&i!==(i=s[0].name)&&r(t,"alt",i)},d(s){s&&b(e)}}}function Zi(n){let e,t,l,i,s,o,a;return{c(){e=d("div"),t=d("p"),l=H(n[3]),i=q(),s=d("button"),s.textContent="Открыть во внешней программе",r(s,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,m){k(c,e,m),f(e,t),f(t,l),f(e,i),f(e,s),o||(a=L(s,"click",n[9]),o=!0)},p(c,m){m&8&&G(l,c[3])},d(c){c&&b(e),o=!1,a()}}}function Yi(n){let e;return{c(){e=d("div"),e.innerHTML="Загрузка...
",r(e,"class","preview-status svelte-1cw3u0m")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function Qi(n){let e,t,l,i,s,o;return{c(){e=d("div"),t=d("p"),t.textContent="Предпросмотр PDF недоступен.",l=q(),i=d("button"),i.textContent="Открыть во внешней программе",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,c){k(a,e,c),f(e,t),f(e,l),f(e,i),s||(o=L(i,"click",n[9]),s=!0)},p:Z,d(a){a&&b(e),s=!1,o()}}}function xi(n){let e,t,l;return{c(){e=d("div"),t=d("embed"),Ve(t.src,l=n[1])||r(t,"src",l),r(t,"type","application/pdf"),r(t,"class","preview-pdf svelte-1cw3u0m"),r(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,s){k(i,e,s),f(e,t)},p(i,s){s&2&&!Ve(t.src,l=i[1])&&r(t,"src",l)},d(i){i&&b(e)}}}function $i(n){let e,t,l,i,s,o,a,c=n[0].name+"",m,_,h,p,v=We(n[0].size)+"",w,g,y=jt(n[0].mime)+"",C,T,j,F,A,O,E,I,M,D,U,J;s=new Il({props:{kind:n[8],size:18}});function W(N,Q){return N[2]?Yi:N[3]?Zi:N[6]&&N[1]?Xi:N[5]&&N[1]?Ji:N[4]?Ui:Gi}let B=W(n),ee=B(n);return{c(){e=d("div"),t=d("div"),l=d("header"),i=d("div"),Se(s.$$.fragment),o=q(),a=d("span"),m=H(c),h=q(),p=d("div"),w=H(v),g=H(" · "),C=H(y),T=q(),j=d("div"),F=d("button"),F.innerHTML=' ',A=q(),O=d("button"),O.innerHTML=' ',E=q(),I=d("div"),ee.c(),r(a,"class","preview-name svelte-1cw3u0m"),r(a,"title",_=n[0].name),r(i,"class","preview-title svelte-1cw3u0m"),r(p,"class","preview-meta svelte-1cw3u0m"),r(F,"class","action-btn svelte-1cw3u0m"),r(F,"title","Открыть во внешней программе"),r(F,"aria-label","Открыть внешне"),r(O,"class","action-btn action-btn-close svelte-1cw3u0m"),r(O,"title","Close"),r(O,"aria-label","Close preview"),r(j,"class","preview-actions svelte-1cw3u0m"),r(l,"class","preview-header svelte-1cw3u0m"),r(I,"class","preview-body svelte-1cw3u0m"),r(t,"class","modal svelte-1cw3u0m"),r(e,"class","overlay svelte-1cw3u0m"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",M=`Preview: ${n[0].name}`)},m(N,Q){k(N,e,Q),f(e,t),f(t,l),f(l,i),ye(s,i,null),f(i,o),f(i,a),f(a,m),f(l,h),f(l,p),f(p,w),f(p,g),f(p,C),f(l,T),f(l,j),f(j,F),f(j,A),f(j,O),f(t,E),f(t,I),ee.m(I,null),D=!0,U||(J=[L(F,"click",n[9]),L(O,"click",n[10]),L(e,"click",Oe(n[11]))],U=!0)},p(N,[Q]){(!D||Q&1)&&c!==(c=N[0].name+"")&&G(m,c),(!D||Q&1&&_!==(_=N[0].name))&&r(a,"title",_),(!D||Q&1)&&v!==(v=We(N[0].size)+"")&&G(w,v),(!D||Q&1)&&y!==(y=jt(N[0].mime)+"")&&G(C,y),B===(B=W(N))&&ee?ee.p(N,Q):(ee.d(1),ee=B(N),ee&&(ee.c(),ee.m(I,null))),(!D||Q&1&&M!==(M=`Preview: ${N[0].name}`))&&r(e,"aria-label",M)},i(N){D||(le(s.$$.fragment,N),D=!0)},o(N){oe(s.$$.fragment,N),D=!1},d(N){N&&b(e),qe(s),ee.d(),U=!1,ce(J)}}}function es(n,e,t){let l,i,s,{item:o}=e,{content:a=""}=e,{loading:c=!1}=e,{error:m=""}=e;const _=Ke(),h=Fl(o);function p(y){y.key==="Escape"&&_("close")}function v(){_("openExternal",o.fileId)}Dl(()=>{window.addEventListener("keydown",p)}),El(()=>{window.removeEventListener("keydown",p)});const w=()=>_("close"),g=()=>_("close");return n.$$set=y=>{"item"in y&&t(0,o=y.item),"content"in y&&t(1,a=y.content),"loading"in y&&t(2,c=y.loading),"error"in y&&t(3,m=y.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=Hl(o)&&a&&a.startsWith("data:")),n.$$.dirty&1&&t(5,i=jl(o)||Ol(o)),n.$$.dirty&1&&t(4,s=Bl(o))},[o,a,c,m,s,i,l,_,h,v,w,g]}class ts extends Fe{constructor(e){super(),Ie(this,e,es,$i,Ne,{item:0,content:1,loading:2,error:3})}}function ls(n){let e,t,l,i,s,o,a,c,m,_,h,p,v,w,g,y,C;return{c(){e=d("div"),t=d("div"),l=d("h3"),i=H(n[0]),s=q(),o=d("p"),a=H(n[1]),c=q(),m=d("div"),_=d("button"),h=H(n[2]),v=q(),w=d("button"),g=H(n[3]),r(l,"class","svelte-1fv6yyk"),r(o,"class","message svelte-1fv6yyk"),r(_,"class",p="btn "+(n[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),r(w,"class","btn svelte-1fv6yyk"),r(m,"class","actions svelte-1fv6yyk"),r(t,"class","modal svelte-1fv6yyk"),r(e,"class","overlay svelte-1fv6yyk"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",n[0])},m(T,j){k(T,e,j),f(e,t),f(t,l),f(l,i),f(t,s),f(t,o),f(o,a),f(t,c),f(t,m),f(m,_),f(_,h),f(m,v),f(m,w),f(w,g),y||(C=[L(_,"click",n[6]),L(w,"click",n[7]),L(e,"click",Oe(n[8]))],y=!0)},p(T,[j]){j&1&&G(i,T[0]),j&2&&G(a,T[1]),j&4&&G(h,T[2]),j&16&&p!==(p="btn "+(T[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&r(_,"class",p),j&8&&G(g,T[3]),j&1&&r(e,"aria-label",T[0])},i:Z,o:Z,d(T){T&&b(e),y=!1,ce(C)}}}function ns(n,e,t){let{title:l="Подтверждение"}=e,{message:i=""}=e,{confirmText:s="Удалить"}=e,{cancelText:o="Отмена"}=e,{danger:a=!1}=e;const c=Ke(),m=()=>c("confirm"),_=()=>c("cancel"),h=()=>c("cancel");return n.$$set=p=>{"title"in p&&t(0,l=p.title),"message"in p&&t(1,i=p.message),"confirmText"in p&&t(2,s=p.confirmText),"cancelText"in p&&t(3,o=p.cancelText),"danger"in p&&t(4,a=p.danger)},[l,i,s,o,a,c,m,_,h]}class is extends Fe{constructor(e){super(),Ie(this,e,ns,ls,Ne,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function At(n,e,t){const l=n.slice();return l[148]=e[t],l}function zt(n,e,t){const l=n.slice();return l[151]=e[t],l}function Vt(n,e,t){const l=n.slice();return l[162]=e[t],l}function Rt(n,e,t){const l=n.slice();return l[159]=e[t],l}function Wt(n,e,t){const l=n.slice();return l[154]=e[t],l}function Kt(n,e,t){const l=n.slice();return l[151]=e[t],l}function Gt(n,e,t){const l=n.slice();return l[154]=e[t],l}function Ut(n,e,t){const l=n.slice();return l[167]=e[t],l}function Jt(n,e,t){const l=n.slice();return l[148]=e[t],l}function Xt(n,e,t){const l=n.slice();return l[172]=e[t],l}function Zt(n,e,t){const l=n.slice();return l[175]=e[t],l}function Yt(n){let e,t=n[175].label+"",l,i,s,o,a;function c(){return n[83](n[175])}return{c(){e=d("button"),l=H(t),i=q(),r(e,"class",s="nav-item "+(n[4]===n[175].id?"selected":"")+" svelte-i359q7")},m(m,_){k(m,e,_),f(e,l),f(e,i),o||(a=L(e,"click",c),o=!0)},p(m,_){n=m,_[0]&1&&t!==(t=n[175].label+"")&&G(l,t),_[0]&17&&s!==(s="nav-item "+(n[4]===n[175].id?"selected":"")+" svelte-i359q7")&&r(e,"class",s)},d(m){m&&b(e),o=!1,a()}}}function Qt(n){let e,t,l,i,s,o=n[1].length>0&&xt(n),a=se(n[1]),c=[];for(let _=0;_0?o?o.p(_,h):(o=xt(_),o.c(),o.m(t,null)):o&&(o.d(1),o=null),h[0]&34|h[1]&2048){a=se(_[1]);let p;for(p=0;p ',r(i,"class","dismiss-btn svelte-i359q7"),r(i,"aria-label","Dismiss"),r(e,"class","error-banner svelte-i359q7")},m(a,c){k(a,e,c),f(e,t),f(e,l),f(e,i),s||(o=[L(i,"click",be(n[85])),L(e,"click",n[86])],s=!0)},p(a,c){c[0]&8&&G(t,a[3])},d(a){a&&b(e),s=!1,ce(o)}}}function cs(n){let e,t,l;function i(a,c){if(a[18])return ms;if(a[0].length>0)return ds;if(a[3])return us}let s=i(n),o=s&&s(n);return{c(){e=d("div"),t=d("h2"),t.textContent="Верстак",l=q(),o&&o.c(),r(t,"class","svelte-i359q7"),r(e,"class","welcome svelte-i359q7")},m(a,c){k(a,e,c),f(e,t),f(e,l),o&&o.m(e,null)},p(a,c){s===(s=i(a))&&o?o.p(a,c):(o&&o.d(1),o=s&&s(a),o&&(o.c(),o.m(e,null)))},i:Z,o:Z,d(a){a&&b(e),o&&o.d()}}}function as(n){let e,t,l,i,s,o,a=se(n[40]),c=[];for(let p=0;p{_[w]=null}),ge()),~i?(s=_[i],s?s.p(p,v):(s=_[i]=m[i](p),s.c()),le(s,1),s.m(l,null)):s=null)},i(p){o||(le(s),o=!0)},o(p){oe(s),o=!1},d(p){p&&(b(e),b(t),b(l)),_e(c,p),~i&&_[i].d()}}}function fs(n){let e,t,l,i=n[8].title+"",s,o,a,c,m,_,h,p,v,w,g,y=n[8].dirty&&hl();return{c(){e=d("div"),t=d("div"),l=d("span"),s=H(i),o=q(),y&&y.c(),a=q(),c=d("div"),m=d("button"),m.textContent="Сохранить",_=q(),h=d("button"),h.textContent="Закрыть",p=q(),v=d("textarea"),r(l,"class","note-title svelte-i359q7"),r(m,"class","btn btn-primary svelte-i359q7"),r(h,"class","btn svelte-i359q7"),r(c,"class","note-editor-actions svelte-i359q7"),r(t,"class","note-editor-header svelte-i359q7"),r(v,"class","note-textarea svelte-i359q7"),r(v,"placeholder","Начните писать..."),r(e,"class","note-editor svelte-i359q7")},m(C,T){k(C,e,T),f(e,t),f(t,l),f(l,s),f(t,o),y&&y.m(t,null),f(t,a),f(t,c),f(c,m),f(c,_),f(c,h),f(e,p),f(e,v),me(v,n[8].content),w||(g=[L(m,"click",n[75]),L(h,"click",n[73]),L(v,"input",n[87]),L(v,"input",n[74])],w=!0)},p(C,T){T[0]&256&&i!==(i=C[8].title+"")&&G(s,i),C[8].dirty?y||(y=hl(),y.c(),y.m(t,a)):y&&(y.d(1),y=null),T[0]&256&&me(v,C[8].content)},i:Z,o:Z,d(C){C&&b(e),y&&y.d(),w=!1,ce(g)}}}function us(n){let e,t,l;return{c(){e=d("p"),t=H("Ошибка: "),l=H(n[3]),r(e,"class","error-text svelte-i359q7")},m(i,s){k(i,e,s),f(e,t),f(e,l)},p(i,s){s[0]&8&&G(l,i[3])},d(i){i&&b(e)}}}function ds(n){let e,t,l;return{c(){e=d("p"),e.textContent="Выберите раздел в боковой панели.",t=q(),l=d("p"),l.textContent="Или создайте новое дело кнопкой «+».",r(e,"class","svelte-i359q7"),r(l,"class","hint svelte-i359q7")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},p:Z,d(i){i&&(b(e),b(t),b(l))}}}function ms(n){let e;return{c(){e=d("p"),e.textContent="Загрузка...",r(e,"class","svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function nl(n){let e,t=n[167].label+"",l,i,s;function o(){return n[88](n[167])}return{c(){e=d("button"),l=H(t),r(e,"class",$n(n[82](n[167].id))+" svelte-i359q7")},m(a,c){k(a,e,c),f(e,l),i||(s=L(e,"click",o),i=!0)},p(a,c){n=a},d(a){a&&b(e),i=!1,s()}}}function ps(n){let e;return{c(){e=d("div"),e.innerHTML='Активность появится позже
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,i:Z,o:Z,d(t){t&&b(e)}}}function _s(n){let e,t,l,i,s,o,a,c,m,_,h,p;function v(y,C){return y[10].length===0?ws:gs}let w=v(n),g=w(n);return{c(){e=d("div"),t=d("div"),l=d("input"),i=q(),s=d("input"),o=q(),a=d("button"),c=H("Записать"),_=q(),g.c(),r(l,"type","text"),r(l,"placeholder","Что сделано"),r(l,"class","svelte-i359q7"),r(s,"type","number"),r(s,"placeholder","Мин"),r(s,"min","1"),r(s,"class","svelte-i359q7"),r(a,"class","btn btn-primary svelte-i359q7"),a.disabled=m=!n[12].trim()||!n[11],r(t,"class","worklog-form svelte-i359q7"),r(e,"class","worklog-tab svelte-i359q7")},m(y,C){k(y,e,C),f(e,t),f(t,l),me(l,n[12]),f(t,i),f(t,s),me(s,n[11]),f(t,o),f(t,a),f(a,c),f(e,_),g.m(e,null),h||(p=[L(l,"input",n[111]),L(s,"input",n[112]),L(a,"click",n[76])],h=!0)},p(y,C){C[0]&4096&&l.value!==y[12]&&me(l,y[12]),C[0]&2048&&Ll(s.value)!==y[11]&&me(s,y[11]),C[0]&6144&&m!==(m=!y[12].trim()||!y[11])&&(a.disabled=m),w===(w=v(y))&&g?g.p(y,C):(g.d(1),g=w(y),g&&(g.c(),g.m(e,null)))},i:Z,o:Z,d(y){y&&b(e),g.d(),h=!1,ce(p)}}}function hs(n){let e;function t(s,o){return s[9].length===0?qs:ys}let l=t(n),i=l(n);return{c(){i.c(),e=ve()},m(s,o){i.m(s,o),k(s,e,o)},p(s,o){l===(l=t(s))&&i?i.p(s,o):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},i:Z,o:Z,d(s){s&&b(e),i.d(s)}}}function vs(n){let e,t,l,i,s,o,a,c,m,_,h,p,v,w,g,y,C,T,j,F=n[30].items.length>0&&ol(n);const A=[Ms,Cs],O=[];function E(D,U){return D[22]?0:1}p=E(n),v=O[p]=A[p](n);let I=n[19]&&!n[21]&&cl(),M=n[26]&&al(n);return{c(){e=d("div"),t=d("div"),l=d("button"),i=H("+ Добавить файл"),s=q(),o=d("button"),a=H("+ Добавить папку"),c=q(),m=d("button"),m.textContent="+ Новый файл",_=q(),F&&F.c(),h=q(),v.c(),w=q(),I&&I.c(),g=q(),M&&M.c(),y=ve(),r(l,"class","btn btn-primary svelte-i359q7"),l.disabled=n[19],r(o,"class","btn svelte-i359q7"),o.disabled=n[19],r(m,"class","btn svelte-i359q7"),r(t,"class","tab-toolbar svelte-i359q7"),r(e,"class","files-tab svelte-i359q7")},m(D,U){k(D,e,U),f(e,t),f(t,l),f(l,i),f(t,s),f(t,o),f(o,a),f(t,c),f(t,m),f(t,_),F&&F.m(t,null),f(e,h),O[p].m(e,null),f(e,w),I&&I.m(e,null),k(D,g,U),M&&M.m(D,U),k(D,y,U),C=!0,T||(j=[L(l,"click",n[77]),L(o,"click",n[78]),L(m,"click",n[49])],T=!0)},p(D,U){(!C||U[0]&524288)&&(l.disabled=D[19]),(!C||U[0]&524288)&&(o.disabled=D[19]),D[30].items.length>0?F?F.p(D,U):(F=ol(D),F.c(),F.m(t,null)):F&&(F.d(1),F=null);let J=p;p=E(D),p===J?O[p].p(D,U):(ke(),oe(O[J],1,1,()=>{O[J]=null}),ge(),v=O[p],v?v.p(D,U):(v=O[p]=A[p](D),v.c()),le(v,1),v.m(e,w)),D[19]&&!D[21]?I||(I=cl(),I.c(),I.m(e,null)):I&&(I.d(1),I=null),D[26]?M?(M.p(D,U),U[0]&67108864&&le(M,1)):(M=al(D),M.c(),le(M,1),M.m(y.parentNode,y)):M&&(ke(),oe(M,1,1,()=>{M=null}),ge())},i(D){C||(le(v),le(M),C=!0)},o(D){oe(v),oe(M),C=!1},d(D){D&&(b(e),b(g),b(y)),F&&F.d(),O[p].d(),I&&I.d(),M&&M.d(D),T=!1,ce(j)}}}function bs(n){let e,t,l,i,s,o,a,c=n[16]&&fl(n);function m(p,v){return p[7].length===0&&!p[16]?Ns:Es}let _=m(n),h=_(n);return{c(){e=d("div"),t=d("div"),l=d("button"),l.textContent="+ Добавить заметку",i=q(),c&&c.c(),s=q(),h.c(),r(l,"class","btn btn-primary svelte-i359q7"),r(t,"class","tab-toolbar svelte-i359q7"),r(e,"class","notes-tab svelte-i359q7")},m(p,v){k(p,e,v),f(e,t),f(t,l),f(e,i),c&&c.m(e,null),f(e,s),h.m(e,null),o||(a=L(l,"click",n[69]),o=!0)},p(p,v){p[16]?c?c.p(p,v):(c=fl(p),c.c(),c.m(e,s)):c&&(c.d(1),c=null),_===(_=m(p))&&h?h.p(p,v):(h.d(1),h=_(p),h&&(h.c(),h.m(e,null)))},i:Z,o:Z,d(p){p&&b(e),c&&c.d(),h.d(),o=!1,a()}}}function ks(n){let e,t,l=n[5].title+"",i,s,o,a,c,m,_=n[5].type+"",h,p,v,w,g,y=(n[5].section||"—")+"",C,T,j,F,A,O=we(n[5].createdAt)+"",E,I,M,D,U,J,W,B,ee,N,Q,Y,V,P,te=n[7].length>0&&dl(n),K=n[10].length>0&&pl(n);return{c(){e=d("div"),t=d("h2"),i=H(l),s=q(),o=d("div"),a=d("div"),c=d("span"),c.textContent="Тип",m=d("span"),h=H(_),p=q(),v=d("div"),w=d("span"),w.textContent="Раздел",g=d("span"),C=H(y),T=q(),j=d("div"),F=d("span"),F.textContent="Создано",A=d("span"),E=H(O),I=q(),M=d("div"),D=d("button"),D.innerHTML=`
- Новая заметка`,U=q(),J=d("button"),J.innerHTML=`
- Добавить файл`,W=q(),B=d("button"),B.innerHTML=`
- Добавить действие`,ee=q(),N=d("button"),N.innerHTML=`
- Записать время`,Q=q(),te&&te.c(),Y=q(),K&&K.c(),r(t,"class","svelte-i359q7"),r(c,"class","meta-label svelte-i359q7"),r(m,"class","svelte-i359q7"),r(a,"class","meta-item svelte-i359q7"),r(w,"class","meta-label svelte-i359q7"),r(g,"class","svelte-i359q7"),r(v,"class","meta-item svelte-i359q7"),r(F,"class","meta-label svelte-i359q7"),r(A,"class","svelte-i359q7"),r(j,"class","meta-item svelte-i359q7"),r(o,"class","meta-grid svelte-i359q7"),r(D,"class","qa-btn svelte-i359q7"),r(J,"class","qa-btn svelte-i359q7"),r(B,"class","qa-btn svelte-i359q7"),B.disabled=!0,r(B,"title","Следующий этап"),r(N,"class","qa-btn svelte-i359q7"),r(M,"class","quick-actions svelte-i359q7"),r(e,"class","overview svelte-i359q7")},m(X,$){k(X,e,$),f(e,t),f(t,i),f(e,s),f(e,o),f(o,a),f(a,c),f(a,m),f(m,h),f(o,p),f(o,v),f(v,w),f(v,g),f(g,C),f(o,T),f(o,j),f(j,F),f(j,A),f(A,E),f(e,I),f(e,M),f(M,D),f(M,U),f(M,J),f(M,W),f(M,B),f(M,ee),f(M,N),f(e,Q),te&&te.m(e,null),f(e,Y),K&&K.m(e,null),V||(P=[L(D,"click",n[89]),L(J,"click",n[90]),L(N,"click",n[91])],V=!0)},p(X,$){$[0]&32&&l!==(l=X[5].title+"")&&G(i,l),$[0]&32&&_!==(_=X[5].type+"")&&G(h,_),$[0]&32&&y!==(y=(X[5].section||"—")+"")&&G(C,y),$[0]&32&&O!==(O=we(X[5].createdAt)+"")&&G(E,O),X[7].length>0?te?te.p(X,$):(te=dl(X),te.c(),te.m(e,Y)):te&&(te.d(1),te=null),X[10].length>0?K?K.p(X,$):(K=pl(X),K.c(),K.m(e,null)):K&&(K.d(1),K=null)},i:Z,o:Z,d(X){X&&b(e),te&&te.d(),K&&K.d(),V=!1,ce(P)}}}function gs(n){let e,t=se(n[10]),l=[];for(let i=0;iЗаписей работы пока нет
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function il(n){let e,t,l=n[151].summary+"",i,s,o,a=n[151].minutes+"",c,m,_=we(n[151].createdAt)+"",h,p;return{c(){e=d("div"),t=d("div"),i=H(l),s=q(),o=d("div"),c=H(a),m=H(" мин · "),h=H(_),p=q(),r(t,"class","svelte-i359q7"),r(o,"class","wl-meta svelte-i359q7"),r(e,"class","worklog-entry svelte-i359q7")},m(v,w){k(v,e,w),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(o,m),f(o,h),f(e,p)},p(v,w){w[0]&1024&&l!==(l=v[151].summary+"")&&G(i,l),w[0]&1024&&a!==(a=v[151].minutes+"")&&G(c,a),w[0]&1024&&_!==(_=we(v[151].createdAt)+"")&&G(h,_)},d(v){v&&b(e)}}}function ys(n){let e,t=se(n[9]),l=[];for(let i=0;iДействий пока нет',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function sl(n){let e,t,l=n[162].title+"",i,s,o=n[162].type+"",a,c,m,_,h,p;function v(){return n[110](n[162])}return{c(){e=d("div"),t=d("span"),i=H(l),s=d("span"),a=H(o),c=q(),m=d("button"),m.textContent="Запустить",_=q(),r(t,"class","svelte-i359q7"),r(s,"class","action-type svelte-i359q7"),r(m,"class","btn btn-sm svelte-i359q7"),r(e,"class","action-card svelte-i359q7")},m(w,g){k(w,e,g),f(e,t),f(t,i),f(e,s),f(s,a),f(e,c),f(e,m),f(e,_),h||(p=L(m,"click",v),h=!0)},p(w,g){n=w,g[0]&512&&l!==(l=n[162].title+"")&&G(i,l),g[0]&512&&o!==(o=n[162].type+"")&&G(a,o)},d(w){w&&b(e),h=!1,p()}}}function ol(n){let e,t,l=n[30].items.length+"",i,s,o;return{c(){e=d("button"),t=H("Вставить "),i=H(l),r(e,"class","btn svelte-i359q7")},m(a,c){k(a,e,c),f(e,t),f(e,i),s||(o=L(e,"click",n[54]),s=!0)},p(a,c){c[0]&1073741824&&l!==(l=a[30].items.length+"")&&G(i,l)},d(a){a&&b(e),s=!1,o()}}}function Cs(n){let e,t,l,i,s,o,a;const c=[Ts,Ss],m=[];function _(w,g){return w[24].length>0?0:1}e=_(n),t=m[e]=c[e](n);const h=[Ds,Ls],p=[];function v(w,g){return w[25].length===0?0:1}return i=v(n),s=p[i]=h[i](n),{c(){t.c(),l=q(),s.c(),o=ve()},m(w,g){m[e].m(w,g),k(w,l,g),p[i].m(w,g),k(w,o,g),a=!0},p(w,g){let y=e;e=_(w),e===y?m[e].p(w,g):(ke(),oe(m[y],1,1,()=>{m[y]=null}),ge(),t=m[e],t?t.p(w,g):(t=m[e]=c[e](w),t.c()),le(t,1),t.m(l.parentNode,l));let C=i;i=v(w),i===C?p[i].p(w,g):(ke(),oe(p[C],1,1,()=>{p[C]=null}),ge(),s=p[i],s?s.p(w,g):(s=p[i]=h[i](w),s.c()),le(s,1),s.m(o.parentNode,o))},i(w){a||(le(t),le(s),a=!0)},o(w){oe(t),oe(s),a=!1},d(w){w&&(b(l),b(o)),m[e].d(w),p[i].d(w)}}}function Ms(n){let e;return{c(){e=d("div"),e.innerHTML='Загрузка...
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,i:Z,o:Z,d(t){t&&b(e)}}}function Ss(n){let e,t;return e=new Pl({props:{crumbs:[{name:"Файлы"}]}}),{c(){Se(e.$$.fragment)},m(l,i){ye(e,l,i),t=!0},p:Z,i(l){t||(le(e.$$.fragment,l),t=!0)},o(l){oe(e.$$.fragment,l),t=!1},d(l){qe(e,l)}}}function Ts(n){let e,t,l,i,s,o;return e=new Pl({props:{crumbs:[{name:"Файлы"},...n[24]]}}),e.$on("navigate",n[96]),{c(){Se(e.$$.fragment),t=q(),l=d("button"),l.innerHTML=`
- Back`,r(l,"class","btn btn-sm back-btn svelte-i359q7")},m(a,c){ye(e,a,c),k(a,t,c),k(a,l,c),i=!0,s||(o=L(l,"click",n[45]),s=!0)},p(a,c){const m={};c[0]&16777216&&(m.crumbs=[{name:"Файлы"},...a[24]]),e.$set(m)},i(a){i||(le(e.$$.fragment,a),i=!0)},o(a){oe(e.$$.fragment,a),i=!1},d(a){a&&(b(t),b(l)),qe(e,a),s=!1,o()}}}function Ls(n){let e,t=[],l=new Map,i,s=se(n[25]);const o=a=>a[159].id;for(let a=0;a0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",o,a,c,m,_,h,p,v,w,g;return{c(){e=d("div"),t=d("div"),t.innerHTML=' ',l=q(),i=d("p"),o=H(s),a=q(),c=d("p"),c.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",m=q(),_=d("div"),h=d("button"),h.textContent="Добавить файл",p=q(),v=d("button"),v.textContent="Добавить папку",r(t,"class","empty-icon svelte-i359q7"),r(i,"class","svelte-i359q7"),r(c,"class","hint svelte-i359q7"),r(h,"class","btn btn-primary svelte-i359q7"),r(v,"class","btn svelte-i359q7"),r(_,"class","empty-actions svelte-i359q7"),r(e,"class","empty-state svelte-i359q7")},m(y,C){k(y,e,C),f(e,t),f(e,l),f(e,i),f(i,o),f(e,a),f(e,c),f(e,m),f(e,_),f(_,h),f(_,p),f(_,v),w||(g=[L(h,"click",n[77]),L(v,"click",n[78])],w=!0)},p(y,C){C[0]&16777216&&s!==(s=y[24].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&G(o,s)},i:Z,o:Z,d(y){y&&b(e),w=!1,ce(g)}}}function rl(n,e){let t,l,i;return l=new Ai({props:{item:e[159],selected:e[31].includes(e[159].id),onDragStart:e[58],onDragOver:e[59],onDrop:e[60]}}),l.$on("navigate",e[97]),l.$on("preview",e[98]),l.$on("openExternal",e[99]),l.$on("showInFolder",e[100]),l.$on("delete",e[101]),l.$on("rename",e[102]),l.$on("duplicate",e[103]),l.$on("cut",e[104]),l.$on("copy",e[105]),l.$on("selectOne",e[106]),l.$on("toggleSelect",e[107]),l.$on("rangeSelect",e[108]),{key:n,first:null,c(){t=ve(),Se(l.$$.fragment),this.first=t},m(s,o){k(s,t,o),ye(l,s,o),i=!0},p(s,o){e=s;const a={};o[0]&33554432&&(a.item=e[159]),o[0]&33554432|o[1]&1&&(a.selected=e[31].includes(e[159].id)),l.$set(a)},i(s){i||(le(l.$$.fragment,s),i=!0)},o(s){oe(l.$$.fragment,s),i=!1},d(s){s&&b(t),qe(l,s)}}}function cl(n){let e;return{c(){e=d("div"),e.innerHTML='Сканирование...
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},d(t){t&&b(e)}}}function al(n){let e,t;return e=new ts({props:{item:n[26],content:n[27],loading:n[28],error:n[29]}}),e.$on("close",n[48]),e.$on("openExternal",n[109]),{c(){Se(e.$$.fragment)},m(l,i){ye(e,l,i),t=!0},p(l,i){const s={};i[0]&67108864&&(s.item=l[26]),i[0]&134217728&&(s.content=l[27]),i[0]&268435456&&(s.loading=l[28]),i[0]&536870912&&(s.error=l[29]),e.$set(s)},i(l){t||(le(e.$$.fragment,l),t=!0)},o(l){oe(e.$$.fragment,l),t=!1},d(l){qe(e,l)}}}function fl(n){let e,t,l,i,s,o,a,c,m;return{c(){e=d("div"),t=d("input"),l=q(),i=d("div"),s=d("button"),s.textContent="Создать",o=q(),a=d("button"),a.textContent="Отмена",r(t,"type","text"),r(t,"placeholder","Название заметки"),r(t,"class","svelte-i359q7"),r(s,"class","btn btn-primary svelte-i359q7"),r(a,"class","btn svelte-i359q7"),r(i,"class","form-actions svelte-i359q7"),r(e,"class","create-form svelte-i359q7")},m(_,h){k(_,e,h),f(e,t),me(t,n[17]),f(e,l),f(e,i),f(i,s),f(i,o),f(i,a),c||(m=[L(t,"input",n[93]),L(t,"keydown",n[94]),L(s,"click",n[71]),L(a,"click",n[70])],c=!0)},p(_,h){h[0]&131072&&t.value!==_[17]&&me(t,_[17])},d(_){_&&b(e),c=!1,ce(m)}}}function Es(n){let e,t=se(n[7]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function ul(n){let e,t,l=n[154].title+"",i,s,o,a=we(n[154].createdAt)+"",c,m,_,h;function p(){return n[95](n[154])}return{c(){e=d("div"),t=d("div"),i=H(l),s=q(),o=d("div"),c=H(a),m=q(),r(t,"class","note-card-title svelte-i359q7"),r(o,"class","note-card-date svelte-i359q7"),r(e,"class","note-card svelte-i359q7")},m(v,w){k(v,e,w),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(e,m),_||(h=L(e,"click",p),_=!0)},p(v,w){n=v,w[0]&128&&l!==(l=n[154].title+"")&&G(i,l),w[0]&128&&a!==(a=we(n[154].createdAt)+"")&&G(c,a)},d(v){v&&b(e),_=!1,h()}}}function dl(n){let e,t,l,i=se(n[7].slice(0,5)),s=[];for(let o=0;on[115].call(v)),r(_,"class","form-group svelte-i359q7"),r(y,"class","btn btn-primary svelte-i359q7"),r(T,"class","btn svelte-i359q7"),r(g,"class","modal-actions svelte-i359q7"),r(t,"class","modal svelte-i359q7"),r(e,"class","modal-overlay svelte-i359q7")},m(E,I){k(E,e,I),f(e,t),f(t,l),f(t,i),f(t,s),f(s,o),f(s,a),f(s,c),me(c,n[14]),f(t,m),f(t,_),f(_,h),f(_,p),f(_,v);for(let M=0;M⚒ Верстак ',i=q(),s=d("nav"),o=d("div"),a=d("div"),a.textContent="Разделы",c=q();for(let z=0;z{P[pe]=null}),ge(),A=P[F],A?A.p(z,ie):(A=P[F]=V[F](z),A.c()),le(A,1),A.m(g,O)),!z[8]&&!z[5]?K?K.p(z,ie):(K=vl(z),K.c(),K.m(g,E)):K&&(K.d(1),K=null),z[13]?X?X.p(z,ie):(X=bl(z),X.c(),X.m(g,I)):X&&(X.d(1),X=null),z[21]&&z[20]?$?$.p(z,ie):($=gl(z),$.c(),$.m(g,M)):$&&($.d(1),$=null),z[37]?fe?fe.p(z,ie):(fe=yl(z),fe.c(),fe.m(g,D)):fe&&(fe.d(1),fe=null),z[32]?re?(re.p(z,ie),ie[1]&2&&le(re,1)):(re=Cl(z),re.c(),le(re,1),re.m(g,null)):re&&(ke(),oe(re,1,1,()=>{re=null}),ge())},i(z){U||(le(A),le(re),U=!0)},o(z){oe(A),oe(re),U=!1},d(z){z&&b(e),_e(W,z),B&&B.d(),Q.d(),Y&&Y.d(),P[F].d(),K&&K.d(),X&&X.d(),$&&$.d(),fe&&fe.d(),re&&re.d()}}}function x(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function we(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}const Ml=n=>n.id!=="today"&&n.id!=="inbox";function Fs(n,e,t){let l=[],i=[],s="",o="",a="",c=null,m="overview",_=[],h=null,p=[],v=[],w=[],g="",y="",C=!1,T="",j="clients",F=!1,A="",O=!0,E=!1,I=null,M=!1,D="",U=!1,J=null,W=[],B=[],ee=null,N="",Q=!1,Y="",V={items:[],mode:"copy"},P=[],te=[],K=!1,X="",$="",fe=!1,re="Удалить",z=null,ie=null,pe=!1,ue="",he="",Te="";const Al=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let Ge=null;Dl(async()=>{try{t(2,s=await x("VerstakVersion")||"verstak-gui/v2"),t(0,l=await x("ListSections")||[])}catch(u){t(3,o=String(u)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",un),Ge=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",bt),t(18,O=!1)}),El(()=>{Ge&&Ge(),window.removeEventListener("keydown",bt)});async function Ue(u){t(4,a=u),t(5,c=null),t(6,m="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,w=[]),t(13,C=!1),t(3,o="");try{t(1,i=await x("ListNodesBySection",u)||[])}catch(S){t(3,o=String(S)),t(1,i=[])}}async function ot(u){t(5,c=u),t(6,m="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,w=[]),t(25,B=[]),t(24,W=[]),t(23,J=null),t(26,ee=null),t(27,N=""),t(31,P=[]),te=[],t(8,h=null),t(13,C=!1),t(16,F=!1),t(3,o=""),await rt(u.id)}async function rt(u){try{t(7,_=await x("ListNotes",u)||[])}catch{}try{p=await x("ListFiles",u)||[]}catch{}try{t(9,v=await x("ListActions",u)||[])}catch{}try{t(10,w=await x("ListWorklog",u)||[])}catch{}}async function de(u){t(22,U=!0);try{let S=await x("ListItems",u)||[];S.sort((ne,ae)=>ne.type!==ae.type?ne.type==="folder"?-1:1:(ne.name||"").localeCompare(ae.name||"")),t(25,B=S)}catch{t(25,B=[])}t(22,U=!1)}async function Je(u){if(c){try{const S=await x("GetNodeDetail",u);S&&t(24,W=[...W,{id:u,name:S.title}])}catch{t(24,W=[...W,{id:u,name:"..."}])}t(23,J=u),await de(u)}}function ct(){if(W.length<2)t(24,W=[]),t(23,J=null),de(c.id);else{const u=W[W.length-2];t(24,W=W.slice(0,-1)),t(23,J=u.id),de(u.id)}}function at(u){const S=W[u];t(24,W=W.slice(0,u+1)),t(23,J=S.id),de(S.id)}async function Xe(u){t(26,ee=u),t(27,N=""),t(29,Y=""),t(28,Q=!0);try{Ni(u)?t(27,N=await x("GetFileBase64",u.fileId)||""):Ii(u)&&t(27,N=await x("ReadFileText",u.fileId)||"")}catch(S){t(29,Y=String(S))}t(28,Q=!1)}function Ze(){t(26,ee=null),t(27,N=""),t(29,Y="")}async function zl(){const u=prompt("Введите имя файла:");if(!(!u||!u.trim()))try{const S=J||c.id;await x("CreateEmptyFile",S,u.trim()),await de(S)}catch(S){t(3,o=String(S))}}async function ft(u){try{await x("DuplicateNode",u);const S=J||c.id;await de(S)}catch(S){t(3,o=String(S))}}function ut(u){const S=B.find(ne=>ne.id===u);S&>(S.id,S.name)}function dt(u){t(30,V={items:[u],mode:"cut"})}function mt(u){t(30,V={items:[u],mode:"copy"})}async function pt(){if(V.items.length===0)return;const u=J||c.id;try{if(V.mode==="copy")for(const S of V.items)await x("DuplicateNode",S);else for(const S of V.items)await x("MoveNode",S,u);t(30,V={items:[],mode:"copy"}),await de(u)}catch(S){t(3,o=String(S))}}function _t(u){P.includes(u)?t(31,P=P.filter(S=>S!==u)):t(31,P=[...P,u])}function ht(u){t(31,P=[u])}function Vl(){t(31,P=B.map(u=>u.id))}function vt(u){if(B.length===0)return;const S=P.length>0?P[P.length-1]:B[0].id,ne=B.findIndex(Ce=>Ce.id===S),ae=B.findIndex(Ce=>Ce.id===u);if(ne===-1||ae===-1)return;const He=Math.min(ne,ae),et=Math.max(ne,ae),Zn=B.slice(He,et+1).map(Ce=>Ce.id),Dt=new Set(P);Zn.forEach(Ce=>Dt.add(Ce)),t(31,P=[...Dt])}function Rl(){t(31,P=[])}function Ye(u){return u.length>0?u:B.map(S=>S.id)}async function Wl(){var ne;const u=Ye(P),S=u.length===1&&((ne=B.find(ae=>ae.id===u[0]))==null?void 0:ne.type)==="folder"?"папку":`файлов (${u.length})`;Pe({title:"Удаление",message:`Удалить ${S}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{for(const He of u)try{await x("DeleteFileOrFolder",He)}catch(et){t(3,o=String(et))}t(31,P=[]);const ae=J||c.id;await de(ae)}})}function Kl(){const u=Ye(P);t(30,V={items:u,mode:"cut"}),t(31,P=[])}function Gl(){const u=Ye(P);t(30,V={items:u,mode:"copy"}),t(31,P=[])}function Ul(u,S){const ne=P.includes(S)?P:[S];te=ne,u.dataTransfer.effectAllowed="move",u.dataTransfer.setData("text/plain",ne.join(","))}function Jl(u,S){const ne=B.find(ae=>ae.id===S);ne&&ne.type==="folder"&&(u.preventDefault(),u.dataTransfer.dropEffect="move")}async function Xl(u,S){if(u.preventDefault(),te.length!==0){for(const ne of te)try{await x("MoveNode",ne,S)}catch(ae){t(3,o=String(ae))}te=[],t(31,P=[]),await de(J||c.id)}}function bt(u){if(m==="files"&&!(u.target.tagName==="INPUT"||u.target.tagName==="TEXTAREA"))if(u.ctrlKey||u.metaKey)u.key==="c"||u.key==="C"?(u.preventDefault(),Gl()):u.key==="x"||u.key==="X"?(u.preventDefault(),Kl()):u.key==="v"||u.key==="V"?(u.preventDefault(),pt()):u.key==="a"||u.key==="A"?(u.preventDefault(),Vl()):u.key==="o"||u.key==="O"?(u.preventDefault(),Zl()):u.key==="Enter"&&(u.preventDefault(),kt());else if(u.key==="Enter")u.preventDefault(),kt();else if(u.key==="Delete"||u.key==="Backspace"){if(ee){u.preventDefault(),Ze();return}if(P.length>0){u.preventDefault(),Wl();return}if(u.key==="Backspace"&&W.length>0){u.preventDefault(),ct();return}}else if(u.key==="Escape"){if(ee){Ze();return}if(P.length>0){Rl();return}}else u.key==="F2"&&(u.preventDefault(),Yl())}function kt(){if(P.length===1){const u=B.find(S=>S.id===P[0]);u&&(u.type==="folder"?Je(u.id):Xe(u))}}function Zl(){if(P.length===1){const u=B.find(S=>S.id===P[0]);u&&u.fileId&&x("OpenFile",u.fileId)}}function gt(u,S){ue=u,t(38,he=S),t(39,Te=""),t(37,pe=!0)}function Yl(){if(P.length===1){const u=B.find(S=>S.id===P[0]);u&>(u.id,u.name)}}async function wt(){const u=he.trim();if(!u){t(39,Te="Имя не может быть пустым");return}try{await x("ValidateName",u)}catch{t(39,Te="Недопустимое имя");return}t(37,pe=!1),ue="";try{await x("RenameNode",ue,u);const S=J||c.id;await de(S)}catch(S){t(3,o=String(S))}}function Ql(){t(37,pe=!1),ue="",t(38,he=""),t(39,Te="")}function xl(u){u.key==="Enter"?wt():t(39,Te="")}function Pe(u){t(33,X=u.title||"Подтверждение"),t(34,$=u.message||""),t(35,fe=u.danger!==void 0?u.danger:!0),t(36,re=u.confirmText||"Удалить"),z=u.onConfirm||null,ie=u.onCancel||null,t(32,K=!0)}function yt(){t(32,K=!1),z=null,ie=null}function $l(){z&&z(),yt()}function en(){ie&&ie(),yt()}function tn(){t(13,C=!0),t(14,T=""),t(15,j=a||"clients")}function ln(){t(13,C=!1),t(14,T="")}async function qt(){if(T.trim())try{const u=await x("CreateNode","","case",T.trim(),j);t(13,C=!1),t(14,T=""),await Ue(j)}catch(u){t(3,o=String(u))}}function Ct(){t(16,F=!0),t(17,A="")}function nn(){t(16,F=!1),t(17,A="")}async function Mt(){if(!(!A.trim()||!c))try{const u=await x("CreateNote",c.id,A.trim());t(7,_=[..._,u&&u.id?u:{id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()}]),t(16,F=!1),t(17,A="")}catch{const S={id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()};t(7,_=[..._,S]),t(16,F=!1),t(17,A="")}}async function Qe(u){if(h&&h.dirty){Pe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:async()=>{await St(u)}});return}await St(u)}async function St(u){try{const S=await x("ReadNote",u.id);t(8,h={id:u.id,title:u.title,content:S||"",dirty:!1})}catch{t(8,h={id:u.id,title:u.title,content:"# "+u.title+`
-
-`,dirty:!1})}}function sn(){if(h&&h.dirty){Pe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:()=>{t(8,h=null)}});return}t(8,h=null)}function on(u){h&&(t(8,h.content=u.target.value,h),t(8,h.dirty=!0,h))}async function rn(){if(h)try{await x("SaveNote",h.id,h.content),t(8,h.dirty=!1,h)}catch{t(8,h.dirty=!1,h)}}async function cn(){const u=parseInt(g,10);if(!(!y.trim()||isNaN(u)||u<=0||!c)){try{const S=await x("CreateWorklog",c.id,y.trim(),u);t(10,w=[...w,S&&S.id?S:{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:u,createdAt:new Date().toISOString()}])}catch{t(10,w=[...w,{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:u,createdAt:new Date().toISOString()}])}t(12,y=""),t(11,g="")}}async function Tt(){const u=await x("PickFile");u&&await xe(c.id,u)}async function an(){const u=await x("PickDirectory");u&&await xe(c.id,u)}async function xe(u,S){t(19,E=!0);try{const ne=await x("PreviewImport",S);t(20,I=ne),D=S,t(21,M=!0)}catch(ne){t(3,o=String(ne))}t(19,E=!1)}async function $e(u){try{const S=u==="copy"?await x("AddPathCopy",c.id,D):await x("AddPathLink",c.id,D);t(21,M=!1),t(20,I=null),t(24,W=[]),t(23,J=null),await Promise.all([rt(c.id),de(c.id)])}catch(S){t(3,o=String(S))}}function fn(){t(21,M=!1),t(20,I=null)}async function Lt({id:u,type:S}){Pe({title:"Удаление",message:`Удалить ${S==="folder"?"папку":"файл"}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{try{await x("DeleteFileOrFolder",u),p=p.filter(He=>He.nodeId!==u);const ae=J||c.id;await de(ae)}catch(ae){t(3,o=String(ae))}}})}async function un(u){if(!u||u.length===0)return;if(!c){t(3,o="Сначала выберите дело для добавления файлов");return}const S=u[0];await xe(c.id,S)}function dn(u){return m===u?"tab active":"tab"}const mn=u=>Ue(u.id),pn=u=>ot(u),_n=()=>t(3,o=""),hn=()=>t(3,o="");function vn(){h.content=this.value,t(8,h)}const bn=u=>{t(6,m=u.id),u.id==="files"&&c&&B.length===0&&!J&&de(c.id)},kn=()=>{t(6,m="notes"),Ct()},gn=()=>{t(6,m="files"),Tt()},wn=()=>t(6,m="worklog"),yn=u=>Qe(u);function qn(){A=this.value,t(17,A)}const Cn=u=>u.key==="Enter"&&Mt(),Mn=u=>Qe(u),Sn=u=>{const S=u.detail;S===0?(t(24,W=[]),t(23,J=null),de(c.id)):at(S-1)},Tn=u=>Je(u.detail),Ln=u=>Xe(u.detail),Dn=u=>x("OpenFile",u.detail),En=u=>x("OpenFolder",u.detail),Nn=u=>Lt(u.detail),In=u=>ut(u.detail.id),Fn=u=>ft(u.detail),Hn=u=>dt(u.detail),jn=u=>mt(u.detail),Bn=u=>ht(u.detail),On=u=>_t(u.detail),Pn=u=>vt(u.detail),An=u=>x("OpenFile",u.detail),zn=u=>x("RunAction",u.id);function Vn(){y=this.value,t(12,y)}function Rn(){g=Ll(this.value),t(11,g)}function Wn(){T=this.value,t(14,T)}const Kn=u=>u.key==="Enter"&&qt();function Gn(){j=ti(this),t(15,j),t(0,l)}const Un=()=>$e("copy"),Jn=()=>$e("link");function Xn(){he=this.value,t(38,he)}return[l,i,s,o,a,c,m,_,h,v,w,g,y,C,T,j,F,A,O,E,I,M,U,J,W,B,ee,N,Q,Y,V,P,K,X,$,fe,re,pe,he,Te,Al,Ue,ot,de,Je,ct,at,Xe,Ze,zl,ft,ut,dt,mt,pt,_t,ht,vt,Ul,Jl,Xl,wt,Ql,xl,$l,en,tn,ln,qt,Ct,nn,Mt,Qe,sn,on,rn,cn,Tt,an,$e,fn,Lt,dn,mn,pn,_n,hn,vn,bn,kn,gn,wn,yn,qn,Cn,Mn,Sn,Tn,Ln,Dn,En,Nn,In,Fn,Hn,jn,Bn,On,Pn,An,zn,Vn,Rn,Wn,Kn,Gn,Un,Jn,Xn]}class Hs extends Fe{constructor(e){super(),Ie(this,e,Fs,Is,Ne,{},null,[-1,-1,-1,-1,-1,-1])}}new Hs({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-BQpRpEfX.js b/cmd/verstak-gui/frontend-dist/assets/main-BQpRpEfX.js
deleted file mode 100644
index 6226274..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-BQpRpEfX.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var Il=Object.defineProperty;var El=(l,e,t)=>e in l?Il(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var Pe=(l,e,t)=>El(l,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function D(){}const Ll=l=>l;function qt(l){return l()}function Ue(){return Object.create(null)}function te(l){l.forEach(qt)}function Re(l){return typeof l=="function"}function Ee(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}function Al(l){return Object.keys(l).length===0}function Ol(l){return l??""}const Wt=typeof window<"u";let jl=Wt?()=>window.performance.now():()=>Date.now(),qe=Wt?l=>requestAnimationFrame(l):D;const ve=new Set;function Gt(l){ve.forEach(e=>{e.c(l)||(ve.delete(e),e.f())}),ve.size!==0&&qe(Gt)}function Pl(l){let e;return ve.size===0&&qe(Gt),{promise:new Promise(t=>{ve.add(e={c:l,f:t})}),abort(){ve.delete(e)}}}function a(l,e){l.appendChild(e)}function Kt(l){if(!l)return document;const e=l.getRootNode?l.getRootNode():l.ownerDocument;return e&&e.host?e:l.ownerDocument}function Dl(l){const e=_("style");return e.textContent="/* empty */",Hl(Kt(l),e),e.sheet}function Hl(l,e){return a(l.head||l,e),e.sheet}function v(l,e,t){l.insertBefore(e,t||null)}function h(l){l.parentNode&&l.parentNode.removeChild(l)}function re(l,e){for(let t=0;tl.removeEventListener(e,t,n)}function Jt(l){return function(e){e.target===this&&l.call(this,e)}}function r(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function Ut(l){return l===""?null:+l}function Tl(l){return Array.from(l.childNodes)}function B(l,e){e=""+e,l.data!==e&&(l.data=e)}function oe(l,e){l.value=e??""}function Ze(l,e,t,n){t==null?l.style.removeProperty(e):l.style.setProperty(e,t,"")}function Xe(l,e,t){for(let n=0;n>>0}function ql(l,e){const t={stylesheet:Dl(e),rules:{}};return xe.set(l,t),t}function Ye(l,e,t,n,i,s,o,c=0){const f=16.666/n;let u=`{
-`;for(let k=0;k<=1;k+=f){const x=e+(t-e)*s(k);u+=k*100+`%{${o(x,1-x)}}
-`}const d=u+`100% {${o(t,1-t)}}
-}`,m=`__svelte_${Rl(d)}_${c}`,p=Kt(l),{stylesheet:b,rules:z}=xe.get(p)||ql(p,l);z[m]||(z[m]=!0,b.insertRule(`@keyframes ${m} ${d}`,b.cssRules.length));const g=l.style.animation||"";return l.style.animation=`${g?`${g}, `:""}${m} ${n}ms linear ${i}ms 1 both`,Ne+=1,m}function Wl(l,e){const t=(l.style.animation||"").split(", "),n=t.filter(e?s=>s.indexOf(e)<0:s=>s.indexOf("__svelte")===-1),i=t.length-n.length;i&&(l.style.animation=n.join(", "),Ne-=i,Ne||Gl())}function Gl(){qe(()=>{Ne||(xe.forEach(l=>{const{ownerNode:e}=l.stylesheet;e&&h(e)}),xe.clear())})}let we;function ye(l){we=l}function We(){if(!we)throw new Error("Function called outside component initialization");return we}function Kl(l){We().$$.on_mount.push(l)}function Jl(l){We().$$.on_destroy.push(l)}function Xt(){const l=We();return(e,t,{cancelable:n=!1}={})=>{const i=l.$$.callbacks[e];if(i){const s=Zt(e,t,{cancelable:n});return i.slice().forEach(o=>{o.call(l,s)}),!s.defaultPrevented}return!0}}function De(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const he=[],Se=[];let be=[];const Be=[],Ul=Promise.resolve();let Ve=!1;function Zl(){Ve||(Ve=!0,Ul.then(Yt))}function ze(l){be.push(l)}function Qe(l){Be.push(l)}const He=new Set;let me=0;function Yt(){if(me!==0)return;const l=we;do{try{for(;mel.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),be=e}let ke;function Ql(){return ke||(ke=Promise.resolve(),ke.then(()=>{ke=null})),ke}function Te(l,e,t){l.dispatchEvent(Zt(`${e?"intro":"outro"}${t}`))}const Fe=new Set;let ce;function de(){ce={r:0,c:[],p:ce}}function pe(){ce.r||te(ce.c),ce=ce.p}function Q(l,e){l&&l.i&&(Fe.delete(l),l.i(e))}function ee(l,e,t,n){if(l&&l.o){if(Fe.has(l))return;Fe.add(l),ce.c.push(()=>{Fe.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}const $l={duration:0};function $e(l,e,t,n){let s=e(l,t,{direction:"both"}),o=n?0:1,c=null,f=null,u=null,d;function m(){u&&Wl(l,u)}function p(z,g){const k=z.b-o;return g*=Math.abs(k),{a:o,b:z.b,d:k,duration:g,start:z.start,end:z.start+g,group:z.group}}function b(z){const{delay:g=0,duration:k=300,easing:x=Ll,tick:C=D,css:L}=s||$l,O={start:jl()+g,b:z};z||(O.group=ce,ce.r+=1),"inert"in l&&(z?d!==void 0&&(l.inert=d):(d=l.inert,l.inert=!0)),c||f?f=O:(L&&(m(),u=Ye(l,o,z,k,g,x,L)),z&&C(0,1),c=p(O,k),ze(()=>Te(l,z,"start")),Pl(A=>{if(f&&A>f.start&&(c=p(f,k),f=null,Te(l,c.b,"start"),L&&(m(),u=Ye(l,o,c.b,c.duration,0,x,s.css))),c){if(A>=c.end)C(o=c.b,1-o),Te(l,c.b,"end"),f||(c.b?m():--c.group.r||te(c.group.c)),c=null;else if(A>=c.start){const H=A-c.start;o=c.a+c.d*x(H/c.duration),C(o,1-o)}}return!!(c||f)}))}return{run(z){Re(s)?Ql().then(()=>{s=s({direction:z?"in":"out"}),b(z)}):b(z)},end(){m(),c=f=null}}}function Z(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function en(l,e){ee(l,1,1,()=>{e.delete(l.key)})}function tn(l,e,t,n,i,s,o,c,f,u,d,m){let p=l.length,b=s.length,z=p;const g={};for(;z--;)g[l[z].key]=z;const k=[],x=new Map,C=new Map,L=[];for(z=b;z--;){const N=m(i,s,z),S=t(N);let y=o.get(S);y?L.push(()=>y.p(N,e)):(y=u(S,N),y.c()),x.set(S,k[z]=y),S in g&&C.set(S,Math.abs(z-g[S]))}const O=new Set,A=new Set;function H(N){Q(N,1),N.m(c,d),o.set(N.key,N),d=N.first,b--}for(;p&&b;){const N=k[b-1],S=l[p-1],y=N.key,P=S.key;N===S?(d=N.first,p--,b--):x.has(P)?!o.has(y)||O.has(y)?H(N):A.has(P)?p--:C.get(y)>C.get(P)?(A.add(y),H(N)):(O.add(P),p--):(f(S,o),p--)}for(;p--;){const N=l[p];x.has(N.key)||f(N,o)}for(;b;)H(k[b-1]);return te(L),k}function et(l,e,t){const n=l.$$.props[e];n!==void 0&&(l.$$.bound[n]=t,t(l.$$.ctx[n]))}function Ie(l){l&&l.c()}function Ce(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),ze(()=>{const s=l.$$.on_mount.map(qt).filter(Re);l.$$.on_destroy?l.$$.on_destroy.push(...s):te(s),l.$$.on_mount=[]}),i.forEach(ze)}function Me(l,e){const t=l.$$;t.fragment!==null&&(Yl(t.after_update),te(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function ln(l,e){l.$$.dirty[0]===-1&&(he.push(l),Zl(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const z=b.length?b[0]:p;return u.ctx&&i(u.ctx[m],u.ctx[m]=z)&&(!u.skip_bound&&u.bound[m]&&u.bound[m](z),d&&ln(l,m)),p}):[],u.update(),d=!0,te(u.before_update),u.fragment=n?n(u.ctx):!1,e.target){if(e.hydrate){const m=Tl(e.target);u.fragment&&u.fragment.l(m),m.forEach(h)}else u.fragment&&u.fragment.c();e.intro&&Q(l.$$.fragment),Ce(l,e.target,e.anchor),Yt()}ye(f)}class Ae{constructor(){Pe(this,"$$");Pe(this,"$$set")}$destroy(){Me(this,1),this.$destroy=D}$on(e,t){if(!Re(t))return D;const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!Al(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const nn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(nn);function sn(l){let e,t;return{c(){e=E("path"),t=E("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function on(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","16"),r(n,"y1","13"),r(n,"x2","8"),r(n,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17"),r(s,"points","10 9 9 9 8 9")},m(o,c){v(o,e,c),v(o,t,c),v(o,n,c),v(o,i,c),v(o,s,c)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function rn(l){let e,t;return{c(){e=E("polyline"),t=E("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function fn(l){let e,t,n,i;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(n,"x1","3"),r(n,"y1","8"),r(n,"x2","21"),r(n,"y2","8"),r(i,"x","10"),r(i,"y","12"),r(i,"width","4"),r(i,"height","4"),r(i,"rx","1")},m(s,o){v(s,e,o),v(s,t,o),v(s,n,o),v(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function cn(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","9"),r(n,"y1","12"),r(n,"x2","15"),r(n,"y2","12"),r(i,"x1","9"),r(i,"y1","15"),r(i,"x2","13"),r(i,"y2","15"),r(s,"x1","12"),r(s,"y1","15"),r(s,"x2","12"),r(s,"y2","18")},m(o,c){v(o,e,c),v(o,t,c),v(o,n,c),v(o,i,c),v(o,s,c)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function an(l){let e,t,n,i,s,o;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),o=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","8"),r(n,"y1","12"),r(n,"x2","16"),r(n,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14"),r(o,"x1","12"),r(o,"y1","12"),r(o,"x2","12"),r(o,"y2","18")},m(c,f){v(c,e,f),v(c,t,f),v(c,n,f),v(c,i,f),v(c,s,f),v(c,o,f)},d(c){c&&(h(e),h(t),h(n),h(i),h(s),h(o))}}}function un(l){let e,t,n,i;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","16"),r(n,"y1","13"),r(n,"x2","8"),r(n,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17")},m(s,o){v(s,e,o),v(s,t,o),v(s,n,o),v(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function dn(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","8"),r(n,"y1","12"),r(n,"x2","16"),r(n,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14")},m(o,c){v(o,e,c),v(o,t,c),v(o,n,c),v(o,i,c),v(o,s,c)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function pn(l){let e,t,n;return{c(){e=E("path"),t=E("circle"),n=E("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(n,"cx","18"),r(n,"cy","16"),r(n,"r","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function _n(l){let e,t;return{c(){e=E("rect"),t=E("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function mn(l){let e,t,n;return{c(){e=E("rect"),t=E("circle"),n=E("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(n,"points","21 15 16 10 5 21")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function hn(l){let e;return{c(){e=E("path"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,n){v(t,e,n)},d(t){t&&h(e)}}}function vn(l){let e;function t(s,o){return s[0]==="folder"?hn:s[0]==="image"?mn:s[0]==="video"?_n:s[0]==="audio"?pn:s[0]==="pdf"?dn:s[0]==="document"?un:s[0]==="spreadsheet"?an:s[0]==="presentation"?cn:s[0]==="archive"?fn:s[0]==="code"?rn:s[0]==="text"?on:sn}let n=t(l),i=n(l);return{c(){e=E("svg"),i.c(),r(e,"width",l[1]),r(e,"height",l[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){v(s,e,o),i.m(e,null)},p(s,[o]){n!==(n=t(s))&&(i.d(1),i=n(s),i&&(i.c(),i.m(e,null))),o&2&&r(e,"width",s[1]),o&2&&r(e,"height",s[1])},i:D,o:D,d(s){s&&h(e),i.d()}}}function bn(l,e,t){let{kind:n="generic"}=e,{size:i=20}=e;return l.$$set=s=>{"kind"in s&&t(0,n=s.kind),"size"in s&&t(1,i=s.size)},[n,i]}class zn extends Ae{constructor(e){super(),Le(this,e,bn,vn,Ee,{kind:0,size:1})}}function gn(l){let e,t,n;return{c(){e=E("path"),t=E("polyline"),n=E("line"),r(e,"d","M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"),r(t,"points","15 3 21 3 21 9"),r(n,"x1","10"),r(n,"y1","14"),r(n,"x2","21"),r(n,"y2","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function kn(l){let e,t;return{c(){e=E("path"),t=E("line"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"),r(t,"x1","9"),r(t,"y1","14"),r(t,"x2","15"),r(t,"y2","14")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function yn(l){let e,t,n,i,s,o,c,f,u;function d(b,z){return b[0]?kn:gn}let m=d(l),p=m(l);return{c(){e=_("div"),t=_("button"),n=E("svg"),p.c(),o=F(),c=_("button"),c.innerHTML=' ',r(n,"width","16"),r(n,"height","16"),r(n,"viewBox","0 0 24 24"),r(n,"fill","none"),r(n,"stroke","currentColor"),r(n,"stroke-width","2"),r(n,"stroke-linecap","round"),r(n,"stroke-linejoin","round"),r(t,"class","action-btn svelte-7ixqek"),r(t,"title",i=l[0]?"Open folder":"Open file"),r(t,"aria-label",s=l[0]?"Open folder":"Open file"),r(c,"class","action-btn action-btn-danger svelte-7ixqek"),r(c,"title","Delete"),r(c,"aria-label","Delete"),r(e,"class","file-actions svelte-7ixqek")},m(b,z){v(b,e,z),a(e,t),a(t,n),p.m(n,null),a(e,o),a(e,c),f||(u=[T(t,"click",l[1]),T(c,"click",l[2])],f=!0)},p(b,[z]){m!==(m=d(b))&&(p.d(1),p=m(b),p&&(p.c(),p.m(n,null))),z&1&&i!==(i=b[0]?"Open folder":"Open file")&&r(t,"title",i),z&1&&s!==(s=b[0]?"Open folder":"Open file")&&r(t,"aria-label",s)},i:D,o:D,d(b){b&&h(e),p.d(),f=!1,te(u)}}}function wn(l,e,t){let{isFolder:n=!1}=e,{fileId:i=""}=e,{nodeId:s=""}=e;const o=Xt();function c(){n?o("openFolder",s):o("open",i)}function f(){o("delete",s)}return l.$$set=u=>{"isFolder"in u&&t(0,n=u.isFolder),"fileId"in u&&t(3,i=u.fileId),"nodeId"in u&&t(4,s=u.nodeId)},[n,c,f,i,s]}class Cn extends Ae{constructor(e){super(),Le(this,e,wn,yn,Ee,{isFolder:0,fileId:3,nodeId:4})}}function tt(l){if(l==null||l<0)return"—";if(l===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(l)/Math.log(1024)),e.length-1),n=l/Math.pow(1024,t);return(t===0?n.toFixed(0):n.toFixed(1))+" "+e[t]}const Mn={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function lt(l){return l?Mn[l]||l:"Unknown"}function Fn(l){if(l.type==="folder")return"folder";const e=(l.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const n=(l.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(n)?"code":"generic"}function nt(l,e,t){const n=l.slice();return n[15]=e[t],n}function xn(l){let e;return{c(){e=_("span"),r(e,"class","expand-spacer svelte-1fc98j1")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Nn(l){let e,t,n,i,s,o;const c=[In,Sn],f=[];function u(d,m){return d[4]?0:1}return t=u(l),n=f[t]=c[t](l),{c(){e=_("button"),n.c(),r(e,"class","expand-toggle svelte-1fc98j1"),r(e,"aria-label",i=l[0][l[2].id]?"Collapse":"Expand")},m(d,m){v(d,e,m),f[t].m(e,null),s||(o=T(e,"click",l[6]),s=!0)},p(d,m){let p=t;t=u(d),t===p?f[t].p(d,m):(de(),ee(f[p],1,1,()=>{f[p]=null}),pe(),n=f[t],n?n.p(d,m):(n=f[t]=c[t](d),n.c()),Q(n,1),n.m(e,null)),m&5&&i!==(i=d[0][d[2].id]?"Collapse":"Expand")&&r(e,"aria-label",i)},d(d){d&&h(e),f[t].d(),s=!1,o()}}}function Sn(l){let e,t,n,i;return{c(){e=E("svg"),t=E("path"),r(t,"d","M9 18l6-6-6-6"),r(e,"width","10"),r(e,"height","10"),r(e,"viewBox","0 0 24 24"),r(e,"fill","currentColor")},m(s,o){v(s,e,o),a(e,t),i=!0},p(s,o){l=s},i(s){i||(s&&ze(()=>{i&&(n||(n=$e(e,rotate,l[0][l[2].id]?90:0,!0)),n.run(1))}),i=!0)},o(s){s&&(n||(n=$e(e,rotate,l[0][l[2].id]?90:0,!1)),n.run(0)),i=!1},d(s){s&&h(e),s&&n&&n.end()}}}function In(l){let e,t;return{c(){e=E("svg"),t=E("path"),r(t,"d","M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"),r(e,"width","10"),r(e,"height","10"),r(e,"viewBox","0 0 24 24"),r(e,"fill","currentColor"),r(e,"class","spin svelte-1fc98j1")},m(n,i){v(n,e,i),a(e,t)},p:D,i:D,o:D,d(n){n&&h(e)}}}function En(l){let e,t=tt(l[2].size)+"",n,i,s,o,c,f=lt(l[2].mime)+"",u;return{c(){e=_("span"),n=I(t),i=F(),s=_("span"),s.textContent="·",o=F(),c=_("span"),u=I(f),r(s,"class","meta-sep svelte-1fc98j1")},m(d,m){v(d,e,m),a(e,n),v(d,i,m),v(d,s,m),v(d,o,m),v(d,c,m),a(c,u)},p(d,m){m&4&&t!==(t=tt(d[2].size)+"")&&B(n,t),m&4&&f!==(f=lt(d[2].mime)+"")&&B(u,f)},d(d){d&&(h(e),h(i),h(s),h(o),h(c))}}}function Ln(l){let e,t,n,i=l[1][l[2].id]&&l[1][l[2].id].length>0&&it(l);return{c(){e=_("span"),e.textContent="Folder",t=F(),i&&i.c(),n=ue()},m(s,o){v(s,e,o),v(s,t,o),i&&i.m(s,o),v(s,n,o)},p(s,o){s[1][s[2].id]&&s[1][s[2].id].length>0?i?i.p(s,o):(i=it(s),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},d(s){s&&(h(e),h(t),h(n)),i&&i.d(s)}}}function it(l){let e,t,n,i=l[1][l[2].id].length+"",s,o,c=l[1][l[2].id].length===1?"item":"items",f;return{c(){e=_("span"),e.textContent="·",t=F(),n=_("span"),s=I(i),o=F(),f=I(c),r(e,"class","meta-sep svelte-1fc98j1")},m(u,d){v(u,e,d),v(u,t,d),v(u,n,d),a(n,s),a(n,o),a(n,f)},p(u,d){d&6&&i!==(i=u[1][u[2].id].length+"")&&B(s,i),d&6&&c!==(c=u[1][u[2].id].length===1?"item":"items")&&B(f,c)},d(u){u&&(h(e),h(t),h(n))}}}function st(l){let e,t,n=Z(l[1][l[2].id]),i=[];for(let o=0;oee(i[o],1,1,()=>{i[o]=null});return{c(){for(let o=0;o{S=null}),pe())},i(y){x||(Q(i.$$.fragment,y),Q(z.$$.fragment,y),Q(S),x=!0)},o(y){ee(i.$$.fragment,y),ee(z.$$.fragment,y),ee(S),x=!1},d(y){y&&(h(e),h(g),h(k)),O.d(),Me(i),N.d(),Me(z),S&&S.d(y)}}}function On(l,...e){var t,n,i;try{const s=(i=(n=(t=window==null?void 0:window.go)==null?void 0:t.main)==null?void 0:n.App)==null?void 0:i[l];if(typeof s=="function")return s(...e)}catch(s){console.error("Wails call error:",l,s)}}function jn(l,e,t){let{item:n}=e,{expanded:i={}}=e,{childrenMap:s={}}=e,{depth:o=0}=e;const c=Xt();let f=!1;async function u(){const C=n.id;if(i[C]){t(0,i={...i,[C]:!1});return}if(t(4,f=!0),t(0,i={...i,[C]:!0}),!s[C]){try{t(1,s[C]=await On("ListItems",C)||[],s)}catch{t(1,s[C]=[],s)}t(1,s={...s})}t(4,f=!1)}const d=Fn(n),m=n.type==="folder",p=C=>c("open",C.detail),b=C=>c("openFolder",C.detail),z=C=>c("delete",C.detail);function g(C){De.call(this,l,C)}function k(C){De.call(this,l,C)}function x(C){De.call(this,l,C)}return l.$$set=C=>{"item"in C&&t(2,n=C.item),"expanded"in C&&t(0,i=C.expanded),"childrenMap"in C&&t(1,s=C.childrenMap),"depth"in C&&t(3,o=C.depth)},[i,s,n,o,f,c,u,d,m,p,b,z,g,k,x]}class Qt extends Ae{constructor(e){super(),Le(this,e,jn,An,Ee,{item:2,expanded:0,childrenMap:1,depth:3})}}function rt(l,e,t){const n=l.slice();return n[80]=e[t],n}function ft(l,e,t){const n=l.slice();return n[83]=e[t],n}function ct(l,e,t){const n=l.slice();return n[94]=e[t],n}function at(l,e,t){const n=l.slice();return n[91]=e[t],n}function ut(l,e,t){const n=l.slice();return n[86]=e[t],n}function dt(l,e,t){const n=l.slice();return n[83]=e[t],n}function pt(l,e,t){const n=l.slice();return n[86]=e[t],n}function _t(l,e,t){const n=l.slice();return n[99]=e[t],n}function mt(l,e,t){const n=l.slice();return n[80]=e[t],n}function ht(l,e,t){const n=l.slice();return n[104]=e[t],n}function vt(l,e,t){const n=l.slice();return n[107]=e[t],n}function bt(l){let e,t=l[107].label+"",n,i,s,o,c;function f(){return l[48](l[107])}return{c(){e=_("button"),n=I(t),i=F(),r(e,"class",s="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-1dzzaxf")},m(u,d){v(u,e,d),a(e,n),a(e,i),o||(c=T(e,"click",f),o=!0)},p(u,d){l=u,d[0]&1&&t!==(t=l[107].label+"")&&B(n,t),d[0]&17&&s!==(s="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-1dzzaxf")&&r(e,"class",s)},d(u){u&&h(e),o=!1,c()}}}function zt(l){let e,t,n,i,s,o=l[1].length>0&>(l),c=Z(l[1]),f=[];for(let d=0;d0?o?o.p(d,m):(o=gt(d),o.c(),o.m(t,null)):o&&(o.d(1),o=null),m[0]&268435490){c=Z(d[1]);let p;for(p=0;p0)return qn;if(c[3])return Rn}let s=i(l),o=s&&s(l);return{c(){e=_("div"),t=_("h2"),t.textContent="Верстак",n=F(),o&&o.c(),r(t,"class","svelte-1dzzaxf"),r(e,"class","welcome svelte-1dzzaxf")},m(c,f){v(c,e,f),a(e,t),a(e,n),o&&o.m(e,null)},p(c,f){s===(s=i(c))&&o?o.p(c,f):(o&&o.d(1),o=s&&s(c),o&&(o.c(),o.m(e,null)))},i:D,o:D,d(c){c&&h(e),o&&o.d()}}}function Bn(l){let e,t,n,i,s,o,c=Z(l[26]),f=[];for(let p=0;p{d[z]=null}),pe()),~i?(s=d[i],s?s.p(p,b):(s=d[i]=u[i](p),s.c()),Q(s,1),s.m(n,null)):s=null)},i(p){o||(Q(s),o=!0)},o(p){ee(s),o=!1},d(p){p&&(h(e),h(t),h(n)),re(f,p),~i&&d[i].d()}}}function Vn(l){let e,t,n,i=l[8].title+"",s,o,c,f,u,d,m,p,b,z,g,k=l[8].dirty&&Pt();return{c(){e=_("div"),t=_("div"),n=_("span"),s=I(i),o=F(),k&&k.c(),c=F(),f=_("div"),u=_("button"),u.textContent="Сохранить",d=F(),m=_("button"),m.textContent="Закрыть",p=F(),b=_("textarea"),r(n,"class","note-title svelte-1dzzaxf"),r(u,"class","btn btn-primary svelte-1dzzaxf"),r(m,"class","btn svelte-1dzzaxf"),r(f,"class","note-editor-actions svelte-1dzzaxf"),r(t,"class","note-editor-header svelte-1dzzaxf"),r(b,"class","note-textarea svelte-1dzzaxf"),r(b,"placeholder","Начните писать..."),r(e,"class","note-editor svelte-1dzzaxf")},m(x,C){v(x,e,C),a(e,t),a(t,n),a(n,s),a(t,o),k&&k.m(t,null),a(t,c),a(t,f),a(f,u),a(f,d),a(f,m),a(e,p),a(e,b),oe(b,l[8].content),z||(g=[T(u,"click",l[39]),T(m,"click",l[37]),T(b,"input",l[51]),T(b,"input",l[38])],z=!0)},p(x,C){C[0]&256&&i!==(i=x[8].title+"")&&B(s,i),x[8].dirty?k||(k=Pt(),k.c(),k.m(t,c)):k&&(k.d(1),k=null),C[0]&256&&oe(b,x[8].content)},i:D,o:D,d(x){x&&h(e),k&&k.d(),z=!1,te(g)}}}function Rn(l){let e,t,n;return{c(){e=_("p"),t=I("Ошибка: "),n=I(l[3]),r(e,"class","error-text svelte-1dzzaxf")},m(i,s){v(i,e,s),a(e,t),a(e,n)},p(i,s){s[0]&8&&B(n,i[3])},d(i){i&&h(e)}}}function qn(l){let e,t,n;return{c(){e=_("p"),e.textContent="Выберите раздел в боковой панели.",t=F(),n=_("p"),n.textContent="Или создайте новое дело кнопкой «+».",r(e,"class","svelte-1dzzaxf"),r(n,"class","hint svelte-1dzzaxf")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},p:D,d(i){i&&(h(e),h(t),h(n))}}}function Wn(l){let e;return{c(){e=_("p"),e.textContent="Загрузка...",r(e,"class","svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Mt(l){let e,t=l[99].label+"",n,i,s;function o(){return l[52](l[99])}return{c(){e=_("button"),n=I(t),r(e,"class",Ol(l[47](l[99].id))+" svelte-1dzzaxf")},m(c,f){v(c,e,f),a(e,n),i||(s=T(e,"click",o),i=!0)},p(c,f){l=c},d(c){c&&h(e),i=!1,s()}}}function Gn(l){let e;return{c(){e=_("div"),e.innerHTML='Активность появится позже
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,i:D,o:D,d(t){t&&h(e)}}}function Kn(l){let e,t,n,i,s,o,c,f,u,d,m,p;function b(k,x){return k[10].length===0?Qn:Yn}let z=b(l),g=z(l);return{c(){e=_("div"),t=_("div"),n=_("input"),i=F(),s=_("input"),o=F(),c=_("button"),f=I("Записать"),d=F(),g.c(),r(n,"type","text"),r(n,"placeholder","Что сделано"),r(n,"class","svelte-1dzzaxf"),r(s,"type","number"),r(s,"placeholder","Мин"),r(s,"min","1"),r(s,"class","svelte-1dzzaxf"),r(c,"class","btn btn-primary svelte-1dzzaxf"),c.disabled=u=!l[12].trim()||!l[11],r(t,"class","worklog-form svelte-1dzzaxf"),r(e,"class","worklog-tab svelte-1dzzaxf")},m(k,x){v(k,e,x),a(e,t),a(t,n),oe(n,l[12]),a(t,i),a(t,s),oe(s,l[11]),a(t,o),a(t,c),a(c,f),a(e,d),g.m(e,null),m||(p=[T(n,"input",l[66]),T(s,"input",l[67]),T(c,"click",l[40])],m=!0)},p(k,x){x[0]&4096&&n.value!==k[12]&&oe(n,k[12]),x[0]&2048&&Ut(s.value)!==k[11]&&oe(s,k[11]),x[0]&6144&&u!==(u=!k[12].trim()||!k[11])&&(c.disabled=u),z===(z=b(k))&&g?g.p(k,x):(g.d(1),g=z(k),g&&(g.c(),g.m(e,null)))},i:D,o:D,d(k){k&&h(e),g.d(),m=!1,te(p)}}}function Jn(l){let e;function t(s,o){return s[9].length===0?ei:$n}let n=t(l),i=n(l);return{c(){i.c(),e=ue()},m(s,o){i.m(s,o),v(s,e,o)},p(s,o){n===(n=t(s))&&i?i.p(s,o):(i.d(1),i=n(s),i&&(i.c(),i.m(e.parentNode,e)))},i:D,o:D,d(s){s&&h(e),i.d(s)}}}function Un(l){let e,t,n,i,s,o,c,f,u,d,m,p,b,z;const g=[ni,li,ti],k=[];function x(L,O){return L[25]?0:L[22].length===0?1:2}u=x(l),d=k[u]=g[u](l);let C=l[19]&&!l[21]&&St();return{c(){e=_("div"),t=_("div"),n=_("button"),i=I("+ Добавить файл"),s=F(),o=_("button"),c=I("+ Добавить папку"),f=F(),d.c(),m=F(),C&&C.c(),r(n,"class","btn btn-primary svelte-1dzzaxf"),n.disabled=l[19],r(o,"class","btn svelte-1dzzaxf"),o.disabled=l[19],r(t,"class","tab-toolbar svelte-1dzzaxf"),r(e,"class","files-tab svelte-1dzzaxf")},m(L,O){v(L,e,O),a(e,t),a(t,n),a(n,i),a(t,s),a(t,o),a(o,c),a(e,f),k[u].m(e,null),a(e,m),C&&C.m(e,null),p=!0,b||(z=[T(n,"click",l[41]),T(o,"click",l[42])],b=!0)},p(L,O){(!p||O[0]&524288)&&(n.disabled=L[19]),(!p||O[0]&524288)&&(o.disabled=L[19]);let A=u;u=x(L),u===A?k[u].p(L,O):(de(),ee(k[A],1,1,()=>{k[A]=null}),pe(),d=k[u],d?d.p(L,O):(d=k[u]=g[u](L),d.c()),Q(d,1),d.m(e,m)),L[19]&&!L[21]?C||(C=St(),C.c(),C.m(e,null)):C&&(C.d(1),C=null)},i(L){p||(Q(d),p=!0)},o(L){ee(d),p=!1},d(L){L&&h(e),k[u].d(),C&&C.d(),b=!1,te(z)}}}function Zn(l){let e,t,n,i,s,o,c,f=l[16]&&It(l);function u(p,b){return p[7].length===0&&!p[16]?si:ii}let d=u(l),m=d(l);return{c(){e=_("div"),t=_("div"),n=_("button"),n.textContent="+ Добавить заметку",i=F(),f&&f.c(),s=F(),m.c(),r(n,"class","btn btn-primary svelte-1dzzaxf"),r(t,"class","tab-toolbar svelte-1dzzaxf"),r(e,"class","notes-tab svelte-1dzzaxf")},m(p,b){v(p,e,b),a(e,t),a(t,n),a(e,i),f&&f.m(e,null),a(e,s),m.m(e,null),o||(c=T(n,"click",l[33]),o=!0)},p(p,b){p[16]?f?f.p(p,b):(f=It(p),f.c(),f.m(e,s)):f&&(f.d(1),f=null),d===(d=u(p))&&m?m.p(p,b):(m.d(1),m=d(p),m&&(m.c(),m.m(e,null)))},i:D,o:D,d(p){p&&h(e),f&&f.d(),m.d(),o=!1,c()}}}function Xn(l){let e,t,n=l[5].title+"",i,s,o,c,f,u,d=l[5].type+"",m,p,b,z,g,k=(l[5].section||"—")+"",x,C,L,O,A,H=ae(l[5].createdAt)+"",N,S,y,P,q,G,le,U,X,K,ne,$,ie,J,R=l[7].length>0&&Lt(l),j=l[10].length>0&&Ot(l);return{c(){e=_("div"),t=_("h2"),i=I(n),s=F(),o=_("div"),c=_("div"),f=_("span"),f.textContent="Тип",u=_("span"),m=I(d),p=F(),b=_("div"),z=_("span"),z.textContent="Раздел",g=_("span"),x=I(k),C=F(),L=_("div"),O=_("span"),O.textContent="Создано",A=_("span"),N=I(H),S=F(),y=_("div"),P=_("button"),P.textContent="✏️ Новая заметка",q=F(),G=_("button"),G.textContent="📎 Добавить файл",le=F(),U=_("button"),U.textContent="⚡ Добавить действие",X=F(),K=_("button"),K.textContent="🕐 Записать время",ne=F(),R&&R.c(),$=F(),j&&j.c(),r(t,"class","svelte-1dzzaxf"),r(f,"class","meta-label svelte-1dzzaxf"),r(u,"class","svelte-1dzzaxf"),r(c,"class","meta-item svelte-1dzzaxf"),r(z,"class","meta-label svelte-1dzzaxf"),r(g,"class","svelte-1dzzaxf"),r(b,"class","meta-item svelte-1dzzaxf"),r(O,"class","meta-label svelte-1dzzaxf"),r(A,"class","svelte-1dzzaxf"),r(L,"class","meta-item svelte-1dzzaxf"),r(o,"class","meta-grid svelte-1dzzaxf"),r(P,"class","qa-btn svelte-1dzzaxf"),r(G,"class","qa-btn svelte-1dzzaxf"),r(U,"class","qa-btn svelte-1dzzaxf"),U.disabled=!0,r(U,"title","Следующий этап"),r(K,"class","qa-btn svelte-1dzzaxf"),r(y,"class","quick-actions svelte-1dzzaxf"),r(e,"class","overview svelte-1dzzaxf")},m(M,V){v(M,e,V),a(e,t),a(t,i),a(e,s),a(e,o),a(o,c),a(c,f),a(c,u),a(u,m),a(o,p),a(o,b),a(b,z),a(b,g),a(g,x),a(o,C),a(o,L),a(L,O),a(L,A),a(A,N),a(e,S),a(e,y),a(y,P),a(y,q),a(y,G),a(y,le),a(y,U),a(y,X),a(y,K),a(e,ne),R&&R.m(e,null),a(e,$),j&&j.m(e,null),ie||(J=[T(P,"click",l[53]),T(G,"click",l[54]),T(K,"click",l[55])],ie=!0)},p(M,V){V[0]&32&&n!==(n=M[5].title+"")&&B(i,n),V[0]&32&&d!==(d=M[5].type+"")&&B(m,d),V[0]&32&&k!==(k=(M[5].section||"—")+"")&&B(x,k),V[0]&32&&H!==(H=ae(M[5].createdAt)+"")&&B(N,H),M[7].length>0?R?R.p(M,V):(R=Lt(M),R.c(),R.m(e,$)):R&&(R.d(1),R=null),M[10].length>0?j?j.p(M,V):(j=Ot(M),j.c(),j.m(e,null)):j&&(j.d(1),j=null)},i:D,o:D,d(M){M&&h(e),R&&R.d(),j&&j.d(),ie=!1,te(J)}}}function Yn(l){let e,t=Z(l[10]),n=[];for(let i=0;iЗаписей работы пока нет',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Ft(l){let e,t,n=l[83].summary+"",i,s,o,c=l[83].minutes+"",f,u,d=ae(l[83].createdAt)+"",m,p;return{c(){e=_("div"),t=_("div"),i=I(n),s=F(),o=_("div"),f=I(c),u=I(" мин · "),m=I(d),p=F(),r(t,"class","svelte-1dzzaxf"),r(o,"class","wl-meta svelte-1dzzaxf"),r(e,"class","worklog-entry svelte-1dzzaxf")},m(b,z){v(b,e,z),a(e,t),a(t,i),a(e,s),a(e,o),a(o,f),a(o,u),a(o,m),a(e,p)},p(b,z){z[0]&1024&&n!==(n=b[83].summary+"")&&B(i,n),z[0]&1024&&c!==(c=b[83].minutes+"")&&B(f,c),z[0]&1024&&d!==(d=ae(b[83].createdAt)+"")&&B(m,d)},d(b){b&&h(e)}}}function $n(l){let e,t=Z(l[9]),n=[];for(let i=0;iДействий пока нет',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function xt(l){let e,t,n=l[94].title+"",i,s,o=l[94].type+"",c,f,u,d,m,p;function b(){return l[65](l[94])}return{c(){e=_("div"),t=_("span"),i=I(n),s=_("span"),c=I(o),f=F(),u=_("button"),u.textContent="Запустить",d=F(),r(t,"class","svelte-1dzzaxf"),r(s,"class","action-type svelte-1dzzaxf"),r(u,"class","btn btn-sm svelte-1dzzaxf"),r(e,"class","action-card svelte-1dzzaxf")},m(z,g){v(z,e,g),a(e,t),a(t,i),a(e,s),a(s,c),a(e,f),a(e,u),a(e,d),m||(p=T(u,"click",b),m=!0)},p(z,g){l=z,g[0]&512&&n!==(n=l[94].title+"")&&B(i,n),g[0]&512&&o!==(o=l[94].type+"")&&B(c,o)},d(z){z&&h(e),m=!1,p()}}}function ti(l){let e,t=[],n=new Map,i,s=Z(l[22]);const o=c=>c[91].id;for(let c=0;c ',n=F(),i=_("p"),i.textContent="В этом проекте пока нет файлов",s=F(),o=_("p"),o.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",c=F(),f=_("div"),u=_("button"),u.textContent="Добавить файл",d=F(),m=_("button"),m.textContent="Добавить папку",r(t,"class","empty-icon svelte-1dzzaxf"),r(i,"class","svelte-1dzzaxf"),r(o,"class","hint svelte-1dzzaxf"),r(u,"class","btn btn-primary svelte-1dzzaxf"),r(m,"class","btn svelte-1dzzaxf"),r(f,"class","empty-actions svelte-1dzzaxf"),r(e,"class","empty-state svelte-1dzzaxf")},m(z,g){v(z,e,g),a(e,t),a(e,n),a(e,i),a(e,s),a(e,o),a(e,c),a(e,f),a(f,u),a(f,d),a(f,m),p||(b=[T(u,"click",l[41]),T(m,"click",l[42])],p=!0)},p:D,i:D,o:D,d(z){z&&h(e),p=!1,te(b)}}}function ni(l){let e;return{c(){e=_("div"),e.innerHTML='Загрузка...
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,i:D,o:D,d(t){t&&h(e)}}}function Nt(l,e){let t,n,i,s,o;function c(d){e[60](d)}function f(d){e[61](d)}let u={item:e[91]};return e[23]!==void 0&&(u.expanded=e[23]),e[24]!==void 0&&(u.childrenMap=e[24]),n=new Qt({props:u}),Se.push(()=>et(n,"expanded",c)),Se.push(()=>et(n,"childrenMap",f)),n.$on("delete",e[62]),n.$on("open",e[63]),n.$on("openFolder",e[64]),{key:l,first:null,c(){t=ue(),Ie(n.$$.fragment),this.first=t},m(d,m){v(d,t,m),Ce(n,d,m),o=!0},p(d,m){e=d;const p={};m[0]&4194304&&(p.item=e[91]),!i&&m[0]&8388608&&(i=!0,p.expanded=e[23],Qe(()=>i=!1)),!s&&m[0]&16777216&&(s=!0,p.childrenMap=e[24],Qe(()=>s=!1)),n.$set(p)},i(d){o||(Q(n.$$.fragment,d),o=!0)},o(d){ee(n.$$.fragment,d),o=!1},d(d){d&&h(t),Me(n,d)}}}function St(l){let e;return{c(){e=_("div"),e.innerHTML='Сканирование...
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},d(t){t&&h(e)}}}function It(l){let e,t,n,i,s,o,c,f,u;return{c(){e=_("div"),t=_("input"),n=F(),i=_("div"),s=_("button"),s.textContent="Создать",o=F(),c=_("button"),c.textContent="Отмена",r(t,"type","text"),r(t,"placeholder","Название заметки"),r(t,"class","svelte-1dzzaxf"),r(s,"class","btn btn-primary svelte-1dzzaxf"),r(c,"class","btn svelte-1dzzaxf"),r(i,"class","form-actions svelte-1dzzaxf"),r(e,"class","create-form svelte-1dzzaxf")},m(d,m){v(d,e,m),a(e,t),oe(t,l[17]),a(e,n),a(e,i),a(i,s),a(i,o),a(i,c),f||(u=[T(t,"input",l[57]),T(t,"keydown",l[58]),T(s,"click",l[35]),T(c,"click",l[34])],f=!0)},p(d,m){m[0]&131072&&t.value!==d[17]&&oe(t,d[17])},d(d){d&&h(e),f=!1,te(u)}}}function ii(l){let e,t=Z(l[7]),n=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Et(l){let e,t,n=l[86].title+"",i,s,o,c=ae(l[86].createdAt)+"",f,u,d,m;function p(){return l[59](l[86])}return{c(){e=_("div"),t=_("div"),i=I(n),s=F(),o=_("div"),f=I(c),u=F(),r(t,"class","note-card-title svelte-1dzzaxf"),r(o,"class","note-card-date svelte-1dzzaxf"),r(e,"class","note-card svelte-1dzzaxf")},m(b,z){v(b,e,z),a(e,t),a(t,i),a(e,s),a(e,o),a(o,f),a(e,u),d||(m=T(e,"click",p),d=!0)},p(b,z){l=b,z[0]&128&&n!==(n=l[86].title+"")&&B(i,n),z[0]&128&&c!==(c=ae(l[86].createdAt)+"")&&B(f,c)},d(b){b&&h(e),d=!1,m()}}}function Lt(l){let e,t,n,i=Z(l[7].slice(0,5)),s=[];for(let o=0;ol[70].call(b)),r(d,"class","form-group svelte-1dzzaxf"),r(k,"class","btn btn-primary svelte-1dzzaxf"),r(C,"class","btn svelte-1dzzaxf"),r(g,"class","modal-actions svelte-1dzzaxf"),r(t,"class","modal svelte-1dzzaxf"),r(e,"class","modal-overlay svelte-1dzzaxf")},m(N,S){v(N,e,S),a(e,t),a(t,n),a(t,i),a(t,s),a(s,o),a(s,c),a(s,f),oe(f,l[14]),a(t,u),a(t,d),a(d,m),a(d,p),a(d,b);for(let y=0;y⚒ Верстак ',i=F(),s=_("nav"),o=_("div"),c=_("div"),c.textContent="Разделы",f=F();for(let M=0;M{$[fe]=null}),pe(),A=$[O],A?A.p(M,V):(A=$[O]=ne[O](M),A.c()),Q(A,1),A.m(g,H)),!M[8]&&!M[5]?J?J.p(M,V):(J=Dt(M),J.c(),J.m(g,N)):J&&(J.d(1),J=null),M[13]?R?R.p(M,V):(R=Ht(M),R.c(),R.m(g,S)):R&&(R.d(1),R=null),M[21]&&M[20]?j?j.p(M,V):(j=Bt(M),j.c(),j.m(g,null)):j&&(j.d(1),j=null)},i(M){y||(Q(A),y=!0)},o(M){ee(A),y=!1},d(M){M&&h(e),re(q,M),G&&G.d(),X.d(),K&&K.d(),$[O].d(),J&&J.d(),R&&R.d(),j&&j.d()}}}function Y(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function ae(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}const Rt=l=>l.id!=="today"&&l.id!=="inbox";function ri(l,e,t){let n=[],i=[],s="",o="",c="",f=null,u="overview",d=[],m=null,p=[],b=[],z=[],g="",k="",x=!1,C="",L="clients",O=!1,A="",H=!0,N=!1,S=null,y=!1,P="",q=[],G={},le={},U=!1;const X=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let K=null;Kl(async()=>{try{t(2,s=await Y("VerstakVersion")||"verstak-gui/v2"),t(0,n=await Y("ListSections")||[])}catch(w){t(3,o=String(w)),t(0,n=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",sl),K=()=>window.runtime.EventsOff("files-dropped")),t(18,H=!1)}),Jl(()=>{K&&K()});async function ne(w){t(4,c=w),t(5,f=null),t(6,u="overview"),t(7,d=[]),p=[],t(9,b=[]),t(10,z=[]),t(13,x=!1),t(3,o="");try{t(1,i=await Y("ListNodesBySection",w)||[])}catch(W){t(3,o=String(W)),t(1,i=[])}}async function $(w){t(5,f=w),t(6,u="overview"),t(7,d=[]),p=[],t(9,b=[]),t(10,z=[]),t(22,q=[]),t(23,G={}),t(24,le={}),t(8,m=null),t(13,x=!1),t(16,O=!1),t(3,o=""),await ie(w.id)}async function ie(w){try{t(7,d=await Y("ListNotes",w)||[])}catch{}try{p=await Y("ListFiles",w)||[]}catch{}try{t(9,b=await Y("ListActions",w)||[])}catch{}try{t(10,z=await Y("ListWorklog",w)||[])}catch{}}async function J(w){t(25,U=!0);try{t(22,q=await Y("ListItems",w)||[])}catch{t(22,q=[])}t(25,U=!1)}function R(){t(13,x=!0),t(14,C=""),t(15,L=c||"clients")}function j(){t(13,x=!1),t(14,C="")}async function M(){if(C.trim())try{const w=await Y("CreateNode","","case",C.trim(),L);t(13,x=!1),t(14,C=""),await ne(L)}catch(w){t(3,o=String(w))}}function V(){t(16,O=!0),t(17,A="")}function fe(){t(16,O=!1),t(17,A="")}async function se(){if(!(!A.trim()||!f))try{const w=await Y("CreateNote",f.id,A.trim());t(7,d=[...d,w&&w.id?w:{id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()}]),t(16,O=!1),t(17,A="")}catch{const W={id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()};t(7,d=[...d,W]),t(16,O=!1),t(17,A="")}}async function _e(w){if(!(m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const W=await Y("ReadNote",w.id);t(8,m={id:w.id,title:w.title,content:W||"",dirty:!1})}catch{t(8,m={id:w.id,title:w.title,content:"# "+w.title+`
-
-`,dirty:!1})}}function $t(){m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,m=null)}function el(w){m&&(t(8,m.content=w.target.value,m),t(8,m.dirty=!0,m))}async function tl(){if(m)try{await Y("SaveNote",m.id,m.content),t(8,m.dirty=!1,m)}catch{t(8,m.dirty=!1,m)}}async function ll(){const w=parseInt(g,10);if(!(!k.trim()||isNaN(w)||w<=0||!f)){try{const W=await Y("CreateWorklog",f.id,k.trim(),w);t(10,z=[...z,W&&W.id?W:{id:Date.now().toString(),nodeId:f.id,summary:k.trim(),minutes:w,createdAt:new Date().toISOString()}])}catch{t(10,z=[...z,{id:Date.now().toString(),nodeId:f.id,summary:k.trim(),minutes:w,createdAt:new Date().toISOString()}])}t(12,k=""),t(11,g="")}}async function Ge(){const w=await Y("PickFile");w&&await Oe(f.id,w)}async function nl(){const w=await Y("PickDirectory");w&&await Oe(f.id,w)}async function Oe(w,W){t(19,N=!0);try{const ge=await Y("PreviewImport",W);t(20,S=ge),P=W,t(21,y=!0)}catch(ge){t(3,o=String(ge))}t(19,N=!1)}async function je(w){try{const W=w==="copy"?await Y("AddPathCopy",f.id,P):await Y("AddPathLink",f.id,P);t(21,y=!1),t(20,S=null),t(23,G={}),t(24,le={}),await Promise.all([ie(f.id),J(f.id)])}catch(W){t(3,o=String(W))}}function il(){t(21,y=!1),t(20,S=null)}async function Ke(w){if(confirm("Удалить файл?")){console.log("deleteFile called with:",w);try{const W=await Y("DeleteFileOrFolder",w);console.log("DeleteFileOrFolder result:",W),p=p.filter(ge=>ge.nodeId!==w),t(23,G={}),t(24,le={}),await J(f.id),console.log("Tree reloaded, items:",q.length)}catch(W){console.error("deleteFile error:",W),t(3,o=String(W))}}}async function Je(w){try{await Y("OpenFile",w)}catch(W){t(3,o=String(W))}}async function sl(w){if(!w||w.length===0)return;if(!f){t(3,o="Сначала выберите дело для добавления файлов");return}const W=w[0];await Oe(f.id,W)}function ol(w){return u===w?"tab active":"tab"}const rl=w=>ne(w.id),fl=w=>$(w),cl=()=>t(3,o="");function al(){m.content=this.value,t(8,m)}const ul=w=>{t(6,u=w.id),w.id==="files"&&f&&q.length===0&&J(f.id)},dl=()=>{t(6,u="notes"),V()},pl=()=>{t(6,u="files"),Ge()},_l=()=>t(6,u="worklog"),ml=w=>_e(w);function hl(){A=this.value,t(17,A)}const vl=w=>w.key==="Enter"&&se(),bl=w=>_e(w);function zl(w){G=w,t(23,G)}function gl(w){le=w,t(24,le)}const kl=w=>Ke(w.detail),yl=w=>Je(w.detail),wl=w=>console.log("open folder",w.detail),Cl=w=>Y("RunAction",w.id);function Ml(){k=this.value,t(12,k)}function Fl(){g=Ut(this.value),t(11,g)}function xl(){C=this.value,t(14,C)}const Nl=w=>w.key==="Enter"&&M();function Sl(){L=Bl(this),t(15,L),t(0,n)}return[n,i,s,o,c,f,u,d,m,b,z,g,k,x,C,L,O,A,H,N,S,y,q,G,le,U,X,ne,$,J,R,j,M,V,fe,se,_e,$t,el,tl,ll,Ge,nl,je,il,Ke,Je,ol,rl,fl,cl,al,ul,dl,pl,_l,ml,hl,vl,bl,zl,gl,kl,yl,wl,Cl,Ml,Fl,xl,Nl,Sl,()=>je("copy"),()=>je("link")]}class fi extends Ae{constructor(e){super(),Le(this,e,ri,oi,Ee,{},null,[-1,-1,-1,-1])}}new fi({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-BY9JF_6I.js b/cmd/verstak-gui/frontend-dist/assets/main-BY9JF_6I.js
deleted file mode 100644
index 7939ab0..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-BY9JF_6I.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Yn=Object.defineProperty;var Qn=(n,e,t)=>e in n?Yn(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var tt=(n,e,t)=>Qn(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&l(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function Z(){}function Tl(n){return n()}function Et(){return Object.create(null)}function ce(n){n.forEach(Tl)}function Sl(n){return typeof n=="function"}function Ne(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Ae;function Ve(n,e){return n===e?!0:(Ae||(Ae=document.createElement("a")),Ae.href=e,n===Ae.href)}function xn(n){return Object.keys(n).length===0}function $n(n){return n??""}function f(n,e){n.appendChild(e)}function k(n,e,t){n.insertBefore(e,t||null)}function b(n){n.parentNode&&n.parentNode.removeChild(n)}function _e(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function be(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function Oe(n){return function(e){e.target===this&&n.call(this,e)}}function r(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Ll(n){return n===""?null:+n}function ei(n){return Array.from(n.childNodes)}function G(n,e){e=""+e,n.data!==e&&(n.data=e)}function me(n,e){n.value=e??""}function Nt(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const s=li(e,t,{cancelable:l});return i.slice().forEach(o=>{o.call(n,s)}),!s.defaultPrevented}return!0}}function ni(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const De=[],Ft=[];let Ee=[];const Ht=[],ii=Promise.resolve();let nt=!1;function si(){nt||(nt=!0,ii.then(Nl))}function Re(n){Ee.push(n)}const lt=new Set;let Le=0;function Nl(){if(Le!==0)return;const n=Be;do{try{for(;Len.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),Ee=e}const ze=new Set;let Me;function ke(){Me={r:0,c:[],p:Me}}function ge(){Me.r||ce(Me.c),Me=Me.p}function le(n,e){n&&n.i&&(ze.delete(n),n.i(e))}function oe(n,e,t,l){if(n&&n.o){if(ze.has(n))return;ze.add(n),Me.c.push(()=>{ze.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function se(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function ci(n,e){oe(n,1,1,()=>{e.delete(n.key)})}function ai(n,e,t,l,i,s,o,a,c,m,_,h){let p=n.length,v=s.length,w=p;const g={};for(;w--;)g[n[w].key]=w;const y=[],C=new Map,S=new Map,j=[];for(w=v;w--;){const E=h(i,s,w),I=t(E);let M=o.get(I);M?j.push(()=>M.p(E,e)):(M=m(I,E),M.c()),C.set(I,y[w]=M),I in g&&S.set(I,Math.abs(w-g[I]))}const F=new Set,A=new Set;function O(E){le(E,1),E.m(a,_),o.set(E.key,E),_=E.first,v--}for(;p&&v;){const E=y[v-1],I=n[p-1],M=E.key,D=I.key;E===I?(_=E.first,p--,v--):C.has(D)?!o.has(M)||F.has(M)?O(E):A.has(D)?p--:S.get(M)>S.get(D)?(A.add(M),O(E)):(F.add(D),p--):(c(I,o),p--)}for(;p--;){const E=n[p];C.has(E.key)||c(E,o)}for(;v;)O(y[v-1]);return ce(j),y}function Te(n){n&&n.c()}function ye(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),Re(()=>{const s=n.$$.on_mount.map(Tl).filter(Sl);n.$$.on_destroy?n.$$.on_destroy.push(...s):ce(s),n.$$.on_mount=[]}),i.forEach(Re)}function qe(n,e){const t=n.$$;t.fragment!==null&&(ri(t.after_update),ce(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function fi(n,e){n.$$.dirty[0]===-1&&(De.push(n),si(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const w=v.length?v[0]:p;return m.ctx&&i(m.ctx[h],m.ctx[h]=w)&&(!m.skip_bound&&m.bound[h]&&m.bound[h](w),_&&fi(n,h)),p}):[],m.update(),_=!0,ce(m.before_update),m.fragment=l?l(m.ctx):!1,e.target){if(e.hydrate){const h=ei(e.target);m.fragment&&m.fragment.l(h),h.forEach(b)}else m.fragment&&m.fragment.c();e.intro&&le(n.$$.fragment),ye(n,e.target,e.anchor),Nl()}je(c)}class Fe{constructor(){tt(this,"$$");tt(this,"$$set")}$destroy(){qe(this,1),this.$destroy=Z}$on(e,t){if(!Sl(t))return Z;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!xn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const ui="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(ui);function di(n){let e,t;return{c(){e=R("path"),t=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(b(e),b(t))}}}function mi(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17"),r(s,"points","10 9 9 9 8 9")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),k(o,i,a),k(o,s,a)},d(o){o&&(b(e),b(t),b(l),b(i),b(s))}}}function pi(n){let e,t;return{c(){e=R("polyline"),t=R("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(b(e),b(t))}}}function _i(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(l,"x1","3"),r(l,"y1","8"),r(l,"x2","21"),r(l,"y2","8"),r(i,"x","10"),r(i,"y","12"),r(i,"width","4"),r(i,"height","4"),r(i,"rx","1")},m(s,o){k(s,e,o),k(s,t,o),k(s,l,o),k(s,i,o)},d(s){s&&(b(e),b(t),b(l),b(i))}}}function hi(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","9"),r(l,"y1","12"),r(l,"x2","15"),r(l,"y2","12"),r(i,"x1","9"),r(i,"y1","15"),r(i,"x2","13"),r(i,"y2","15"),r(s,"x1","12"),r(s,"y1","15"),r(s,"x2","12"),r(s,"y2","18")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),k(o,i,a),k(o,s,a)},d(o){o&&(b(e),b(t),b(l),b(i),b(s))}}}function vi(n){let e,t,l,i,s,o;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),o=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14"),r(o,"x1","12"),r(o,"y1","12"),r(o,"x2","12"),r(o,"y2","18")},m(a,c){k(a,e,c),k(a,t,c),k(a,l,c),k(a,i,c),k(a,s,c),k(a,o,c)},d(a){a&&(b(e),b(t),b(l),b(i),b(s),b(o))}}}function bi(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17")},m(s,o){k(s,e,o),k(s,t,o),k(s,l,o),k(s,i,o)},d(s){s&&(b(e),b(t),b(l),b(i))}}}function ki(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),k(o,i,a),k(o,s,a)},d(o){o&&(b(e),b(t),b(l),b(i),b(s))}}}function gi(n){let e,t,l;return{c(){e=R("path"),t=R("circle"),l=R("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(l,"cx","18"),r(l,"cy","16"),r(l,"r","3")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},d(i){i&&(b(e),b(t),b(l))}}}function wi(n){let e,t;return{c(){e=R("rect"),t=R("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(b(e),b(t))}}}function yi(n){let e,t,l;return{c(){e=R("rect"),t=R("circle"),l=R("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(l,"points","21 15 16 10 5 21")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},d(i){i&&(b(e),b(t),b(l))}}}function qi(n){let e;return{c(){e=R("path"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){k(t,e,l)},d(t){t&&b(e)}}}function Ci(n){let e;function t(s,o){return s[0]==="folder"?qi:s[0]==="image"?yi:s[0]==="video"?wi:s[0]==="audio"?gi:s[0]==="pdf"?ki:s[0]==="document"?bi:s[0]==="spreadsheet"?vi:s[0]==="presentation"?hi:s[0]==="archive"?_i:s[0]==="code"?pi:s[0]==="text"?mi:di}let l=t(n),i=l(n);return{c(){e=R("svg"),i.c(),r(e,"width",n[1]),r(e,"height",n[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){k(s,e,o),i.m(e,null)},p(s,[o]){l!==(l=t(s))&&(i.d(1),i=l(s),i&&(i.c(),i.m(e,null))),o&2&&r(e,"width",s[1]),o&2&&r(e,"height",s[1])},i:Z,o:Z,d(s){s&&b(e),i.d()}}}function Mi(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=s=>{"kind"in s&&t(0,l=s.kind),"size"in s&&t(1,i=s.size)},[l,i]}class Il extends Fe{constructor(e){super(),Ie(this,e,Mi,Ci,Ne,{kind:0,size:1})}}function We(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const it={"image/jpeg":"Изображение JPEG","image/png":"Изображение PNG","image/gif":"Изображение GIF","image/webp":"Изображение WebP","image/svg+xml":"Изображение SVG","image/bmp":"Изображение BMP","image/tiff":"Изображение TIFF","image/avif":"Изображение AVIF","application/pdf":"PDF документ","application/msword":"Документ Word","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Документ Word","application/vnd.ms-excel":"Таблица Excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Таблица Excel","application/vnd.ms-powerpoint":"Презентация PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Презентация PowerPoint","application/zip":"ZIP архив","application/gzip":"GZIP архив","application/x-tar":"TAR архив","application/x-7z-compressed":"7z архив","application/x-rar-compressed":"RAR архив","text/plain":"Текстовый файл","text/html":"HTML файл","text/css":"CSS файл","text/javascript":"JavaScript файл","application/json":"JSON файл","application/xml":"XML файл","application/x-yaml":"YAML файл","application/octet-stream":"Бинарный файл","application/x-msdos-program":"Исполняемый файл","inode/directory":"Папка"};function jt(n){return n?it[n]||n:"Неизвестно"}function Ti(n){if(n.type==="folder")return"Папка";const e=(n.mime||"").toLowerCase();if(it[e])return it[e];const l=(n.name||"").toLowerCase().split(".").pop();return l?l.toUpperCase():"Файл"}function Fl(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const Si=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Li=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Di=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Ei=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function Hl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Si.includes(e)||Ei.includes(l)}function jl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Li.includes(e)||Di.includes(l)&&l!=="md"&&l!=="markdown"}function Bl(n){return(n.mime||"").toLowerCase().includes("pdf")}function Ol(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Ni(n){return Hl(n)||Bl(n)}function Ii(n){return jl(n)||Ol(n)}function Fi(n){let e,t,l,i=We(n[0].size)+"",s;return{c(){e=d("span"),e.textContent="·",t=q(),l=d("span"),s=H(i),r(e,"class","meta-sep svelte-1u905d2")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),f(l,s)},p(o,a){a&1&&i!==(i=We(o[0].size)+"")&&G(s,i)},d(o){o&&(b(e),b(t),b(l))}}}function Hi(n){let e,t,l;return{c(){e=d("button"),e.innerHTML=' ',r(e,"class","action-btn svelte-1u905d2"),r(e,"title","Открыть папку"),r(e,"aria-label","Открыть папку")},m(i,s){k(i,e,s),t||(l=L(e,"click",be(n[27])),t=!0)},p:Z,d(i){i&&b(e),t=!1,l()}}}function ji(n){let e,t,l,i,s;return{c(){e=d("button"),e.innerHTML=' ',t=q(),l=d("button"),l.innerHTML=' ',r(e,"class","action-btn svelte-1u905d2"),r(e,"title","Предпросмотр"),r(e,"aria-label","Предпросмотр"),r(l,"class","action-btn svelte-1u905d2"),r(l,"title","Открыть во внешней программе"),r(l,"aria-label","Открыть внешне")},m(o,a){k(o,e,a),k(o,t,a),k(o,l,a),i||(s=[L(e,"click",be(n[26])),L(l,"click",be(n[8]))],i=!0)},p:Z,d(o){o&&(b(e),b(t),b(l)),i=!1,ce(s)}}}function Bt(n){let e,t,l,i,s,o,a,c,m,_,h,p,v,w,g,y,C,S,j,F,A,O,E,I=n[5]&&Bi(n);return{c(){e=d("div"),t=q(),l=d("div"),i=d("button"),i.innerHTML=`
- Открыть`,s=q(),o=d("button"),o.innerHTML=`
- Открыть во внешней программе`,a=q(),I&&I.c(),c=q(),m=d("div"),_=q(),h=d("button"),h.innerHTML=`
- Переименовать`,p=q(),v=d("button"),v.innerHTML=`
- Дублировать`,w=q(),g=d("button"),g.innerHTML=`
- Вырезать`,y=q(),C=d("button"),C.innerHTML=`
- Копировать`,S=q(),j=d("div"),F=q(),A=d("button"),A.innerHTML=`
- Удалить`,r(e,"class","menu-backdrop svelte-1u905d2"),r(e,"role","presentation"),r(i,"class","menu-item svelte-1u905d2"),r(i,"role","menuitem"),r(o,"class","menu-item svelte-1u905d2"),r(o,"role","menuitem"),r(m,"class","menu-sep svelte-1u905d2"),r(h,"class","menu-item svelte-1u905d2"),r(h,"role","menuitem"),r(v,"class","menu-item svelte-1u905d2"),r(v,"role","menuitem"),r(g,"class","menu-item svelte-1u905d2"),r(g,"role","menuitem"),r(C,"class","menu-item svelte-1u905d2"),r(C,"role","menuitem"),r(j,"class","menu-sep svelte-1u905d2"),r(A,"class","menu-item menu-item-danger svelte-1u905d2"),r(A,"role","menuitem"),r(l,"class","menu svelte-1u905d2"),r(l,"role","menu")},m(M,D){k(M,e,D),k(M,t,D),k(M,l,D),f(l,i),f(l,s),f(l,o),f(l,a),I&&I.m(l,null),f(l,c),f(l,m),f(l,_),f(l,h),f(l,p),f(l,v),f(l,w),f(l,g),f(l,y),f(l,C),f(l,S),f(l,j),f(l,F),f(l,A),O||(E=[L(e,"click",be(n[17])),L(i,"click",n[15]),L(o,"click",n[8]),L(h,"click",n[11]),L(v,"click",n[12]),L(g,"click",n[13]),L(C,"click",n[14]),L(A,"click",n[10]),L(l,"click",be(n[25]))],O=!0)},p(M,D){M[5]&&I.p(M,D)},d(M){M&&(b(e),b(t),b(l)),I&&I.d(),O=!1,ce(E)}}}function Bi(n){let e,t,l;return{c(){e=d("button"),e.innerHTML=`
- Показать в проводнике`,r(e,"class","menu-item svelte-1u905d2"),r(e,"role","menuitem")},m(i,s){k(i,e,s),t||(l=L(e,"click",n[9]),t=!0)},p:Z,d(i){i&&b(e),t=!1,l()}}}function Oi(n){let e,t,l,i,s,o,a=n[0].name+"",c,m,_,h,p,v,w,g,y,C,S,j,F,A,O,E,I,M,D,U,J,W;l=new Il({props:{kind:n[4],size:22}});let B=!n[5]&&Fi(n);function ee(V,P){return V[5]?Hi:ji}let Q=ee(n)(n),Y=n[2]&&Bt(n);return{c(){e=d("div"),t=d("div"),Te(l.$$.fragment),i=q(),s=d("div"),o=d("div"),c=H(a),_=q(),h=d("div"),p=d("span"),p.textContent=`${n[6]}`,v=q(),B&&B.c(),w=q(),g=d("div"),Q.c(),y=q(),C=d("button"),S=R("svg"),j=R("circle"),F=R("circle"),A=R("circle"),O=q(),E=d("button"),E.innerHTML=' ',M=q(),Y&&Y.c(),D=ve(),r(t,"class","file-row-icon svelte-1u905d2"),r(o,"class","file-row-name svelte-1u905d2"),r(o,"title",m=n[0].name),r(h,"class","file-row-meta svelte-1u905d2"),r(s,"class","file-row-body svelte-1u905d2"),r(j,"cx","12"),r(j,"cy","5"),r(j,"r","2"),r(F,"cx","12"),r(F,"cy","12"),r(F,"r","2"),r(A,"cx","12"),r(A,"cy","19"),r(A,"r","2"),r(S,"width","16"),r(S,"height","16"),r(S,"viewBox","0 0 24 24"),r(S,"fill","currentColor"),r(C,"class","action-btn svelte-1u905d2"),r(C,"title","Ещё"),r(C,"aria-label","Ещё"),r(C,"aria-expanded",n[2]),r(E,"class","action-btn action-btn-danger svelte-1u905d2"),r(E,"title","Удалить"),r(E,"aria-label","Удалить"),r(g,"class","file-row-actions svelte-1u905d2"),r(e,"class","file-row svelte-1u905d2"),r(e,"role","button"),r(e,"tabindex","0"),r(e,"draggable","true"),r(e,"aria-label",I=n[5]?`Папка ${n[0].name}`:`Файл ${n[0].name}`),It(e,"file-row--selected",n[1])},m(V,P){k(V,e,P),f(e,t),ye(l,t,null),f(e,i),f(e,s),f(s,o),f(o,c),f(s,_),f(s,h),f(h,p),f(h,v),B&&B.m(h,null),f(e,w),f(e,g),Q.m(g,null),f(g,y),f(g,C),f(C,S),f(S,j),f(S,F),f(S,A),f(g,O),f(g,E),k(V,M,P),Y&&Y.m(V,P),k(V,D,P),U=!0,J||(W=[L(window,"click",n[17]),L(C,"click",be(n[16])),L(E,"click",be(n[10])),L(e,"click",n[7]),L(e,"contextmenu",n[21]),L(e,"dragstart",n[18]),L(e,"dragover",n[19]),L(e,"drop",n[20])],J=!0)},p(V,[P]){(!U||P&1)&&a!==(a=V[0].name+"")&&G(c,a),(!U||P&1&&m!==(m=V[0].name))&&r(o,"title",m),V[5]||B.p(V,P),Q.p(V,P),(!U||P&4)&&r(C,"aria-expanded",V[2]),(!U||P&1&&I!==(I=V[5]?`Папка ${V[0].name}`:`Файл ${V[0].name}`))&&r(e,"aria-label",I),(!U||P&2)&&It(e,"file-row--selected",V[1]),V[2]?Y?Y.p(V,P):(Y=Bt(V),Y.c(),Y.m(D.parentNode,D)):Y&&(Y.d(1),Y=null)},i(V){U||(le(l.$$.fragment,V),U=!0)},o(V){oe(l.$$.fragment,V),U=!1},d(V){V&&(b(e),b(M),b(D)),qe(l),B&&B.d(),Q.d(),Y&&Y.d(V),J=!1,ce(W)}}}function Pi(n,e,t){let{item:l}=e,{selected:i=!1}=e,{onDragStart:s}=e,{onDragOver:o}=e,{onDrop:a}=e;const c=Ke(),m=Fl(l),_=l.type==="folder",h=Ti(l);let p=!1,v=null;function w(N){N.ctrlKey||N.metaKey?c("toggleSelect",l.id):N.shiftKey?c("rangeSelect",l.id):v?(clearTimeout(v),v=null,_?c("navigate",l.id):c("preview",l)):v=setTimeout(()=>{v=null,c("selectOne",l.id)},250)}function g(){c("openExternal",l.fileId)}function y(){c("showInFolder",l.id)}function C(){t(2,p=!1),c("delete",{id:l.id,type:l.type})}function S(){t(2,p=!1),c("rename",{id:l.id,name:l.name})}function j(){t(2,p=!1),c("duplicate",l.id)}function F(){t(2,p=!1),c("cut",l.id)}function A(){t(2,p=!1),c("copy",l.id)}function O(){t(2,p=!1),_?c("navigate",l.id):c("preview",l)}function E(){t(2,p=!p)}function I(){t(2,p=!1)}function M(N){s&&s(N,l.id)}function D(N){o&&_&&o(N,l.id)}function U(N){a&&_&&a(N,l.id)}function J(N){N.preventDefault(),t(2,p=!0)}function W(N){ni.call(this,n,N)}const B=()=>c("preview",l),ee=()=>c("navigate",l.id);return n.$$set=N=>{"item"in N&&t(0,l=N.item),"selected"in N&&t(1,i=N.selected),"onDragStart"in N&&t(22,s=N.onDragStart),"onDragOver"in N&&t(23,o=N.onDragOver),"onDrop"in N&&t(24,a=N.onDrop)},[l,i,p,c,m,_,h,w,g,y,C,S,j,F,A,O,E,I,M,D,U,J,s,o,a,W,B,ee]}class Ai extends Fe{constructor(e){super(),Ie(this,e,Pi,Oi,Ne,{item:0,selected:1,onDragStart:22,onDragOver:23,onDrop:24})}}function Ot(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function zi(n){let e;return{c(){e=d("span"),e.textContent="/",r(e,"class","sep svelte-csi2lb")},m(t,l){k(t,e,l)},d(t){t&&b(e)}}}function Vi(n){let e,t=n[4].name+"",l,i,s;function o(){return n[2](n[6])}return{c(){e=d("button"),l=H(t),r(e,"class","crumb crumb--link svelte-csi2lb")},m(a,c){k(a,e,c),f(e,l),i||(s=L(e,"click",o),i=!0)},p(a,c){n=a,c&1&&t!==(t=n[4].name+"")&&G(l,t)},d(a){a&&b(e),i=!1,s()}}}function Ri(n){let e,t=n[4].name+"",l;return{c(){e=d("span"),l=H(t),r(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){k(i,e,s),f(e,l)},p(i,s){s&1&&t!==(t=i[4].name+"")&&G(l,t)},d(i){i&&b(e)}}}function Pt(n){let e,t,l=n[6]>0&&zi();function i(a,c){return a[6]===a[0].length-1?Ri:Vi}let s=i(n),o=s(n);return{c(){l&&l.c(),e=q(),o.c(),t=ve()},m(a,c){l&&l.m(a,c),k(a,e,c),o.m(a,c),k(a,t,c)},p(a,c){s===(s=i(a))&&o?o.p(a,c):(o.d(1),o=s(a),o&&(o.c(),o.m(t.parentNode,t)))},d(a){a&&(b(e),b(t)),l&&l.d(a),o.d(a)}}}function Wi(n){let e,t=se(n[0]),l=[];for(let i=0;is(a);return n.$$set=a=>{"crumbs"in a&&t(0,l=a.crumbs)},[l,s,o]}class Pl extends Fe{constructor(e){super(),Ie(this,e,Ki,Wi,Ne,{crumbs:0})}}function Gi(n){let e,t,l,i,s,o;return{c(){e=d("div"),t=d("p"),t.textContent="Предпросмотр недоступен для этого типа файлов.",l=q(),i=d("button"),i.textContent="Открыть во внешней программе",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,c){k(a,e,c),f(e,t),f(e,l),f(e,i),s||(o=L(i,"click",n[9]),s=!0)},p:Z,d(a){a&&b(e),s=!1,o()}}}function Ui(n){let e,t;function l(o,a){return a&2&&(e=null),e==null&&(e=!!(o[1]&&o[1].startsWith("data:"))),e?xi:Qi}let i=l(n,-1),s=i(n);return{c(){s.c(),t=ve()},m(o,a){s.m(o,a),k(o,t,a)},p(o,a){i===(i=l(o,a))&&s?s.p(o,a):(s.d(1),s=i(o),s&&(s.c(),s.m(t.parentNode,t)))},d(o){o&&b(t),s.d(o)}}}function Ji(n){let e,t,l;return{c(){e=d("pre"),t=d("code"),l=H(n[1]),r(e,"class","preview-text svelte-1cw3u0m")},m(i,s){k(i,e,s),f(e,t),f(t,l)},p(i,s){s&2&&G(l,i[1])},d(i){i&&b(e)}}}function Xi(n){let e,t,l,i;return{c(){e=d("div"),t=d("img"),Ve(t.src,l=n[1])||r(t,"src",l),r(t,"alt",i=n[0].name),r(t,"class","preview-image svelte-1cw3u0m"),r(e,"class","preview-image-container svelte-1cw3u0m")},m(s,o){k(s,e,o),f(e,t)},p(s,o){o&2&&!Ve(t.src,l=s[1])&&r(t,"src",l),o&1&&i!==(i=s[0].name)&&r(t,"alt",i)},d(s){s&&b(e)}}}function Zi(n){let e,t,l,i,s,o,a;return{c(){e=d("div"),t=d("p"),l=H(n[3]),i=q(),s=d("button"),s.textContent="Открыть во внешней программе",r(s,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,m){k(c,e,m),f(e,t),f(t,l),f(e,i),f(e,s),o||(a=L(s,"click",n[9]),o=!0)},p(c,m){m&8&&G(l,c[3])},d(c){c&&b(e),o=!1,a()}}}function Yi(n){let e;return{c(){e=d("div"),e.innerHTML="Загрузка...
",r(e,"class","preview-status svelte-1cw3u0m")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function Qi(n){let e,t,l,i,s,o;return{c(){e=d("div"),t=d("p"),t.textContent="Предпросмотр PDF недоступен.",l=q(),i=d("button"),i.textContent="Открыть во внешней программе",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,c){k(a,e,c),f(e,t),f(e,l),f(e,i),s||(o=L(i,"click",n[9]),s=!0)},p:Z,d(a){a&&b(e),s=!1,o()}}}function xi(n){let e,t,l;return{c(){e=d("div"),t=d("embed"),Ve(t.src,l=n[1])||r(t,"src",l),r(t,"type","application/pdf"),r(t,"class","preview-pdf svelte-1cw3u0m"),r(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,s){k(i,e,s),f(e,t)},p(i,s){s&2&&!Ve(t.src,l=i[1])&&r(t,"src",l)},d(i){i&&b(e)}}}function $i(n){let e,t,l,i,s,o,a,c=n[0].name+"",m,_,h,p,v=We(n[0].size)+"",w,g,y=jt(n[0].mime)+"",C,S,j,F,A,O,E,I,M,D,U,J;s=new Il({props:{kind:n[8],size:18}});function W(N,Q){return N[2]?Yi:N[3]?Zi:N[6]&&N[1]?Xi:N[5]&&N[1]?Ji:N[4]?Ui:Gi}let B=W(n),ee=B(n);return{c(){e=d("div"),t=d("div"),l=d("header"),i=d("div"),Te(s.$$.fragment),o=q(),a=d("span"),m=H(c),h=q(),p=d("div"),w=H(v),g=H(" · "),C=H(y),S=q(),j=d("div"),F=d("button"),F.innerHTML=' ',A=q(),O=d("button"),O.innerHTML=' ',E=q(),I=d("div"),ee.c(),r(a,"class","preview-name svelte-1cw3u0m"),r(a,"title",_=n[0].name),r(i,"class","preview-title svelte-1cw3u0m"),r(p,"class","preview-meta svelte-1cw3u0m"),r(F,"class","action-btn svelte-1cw3u0m"),r(F,"title","Открыть во внешней программе"),r(F,"aria-label","Открыть внешне"),r(O,"class","action-btn action-btn-close svelte-1cw3u0m"),r(O,"title","Close"),r(O,"aria-label","Close preview"),r(j,"class","preview-actions svelte-1cw3u0m"),r(l,"class","preview-header svelte-1cw3u0m"),r(I,"class","preview-body svelte-1cw3u0m"),r(t,"class","modal svelte-1cw3u0m"),r(e,"class","overlay svelte-1cw3u0m"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",M=`Preview: ${n[0].name}`)},m(N,Q){k(N,e,Q),f(e,t),f(t,l),f(l,i),ye(s,i,null),f(i,o),f(i,a),f(a,m),f(l,h),f(l,p),f(p,w),f(p,g),f(p,C),f(l,S),f(l,j),f(j,F),f(j,A),f(j,O),f(t,E),f(t,I),ee.m(I,null),D=!0,U||(J=[L(F,"click",n[9]),L(O,"click",n[10]),L(e,"click",Oe(n[11]))],U=!0)},p(N,[Q]){(!D||Q&1)&&c!==(c=N[0].name+"")&&G(m,c),(!D||Q&1&&_!==(_=N[0].name))&&r(a,"title",_),(!D||Q&1)&&v!==(v=We(N[0].size)+"")&&G(w,v),(!D||Q&1)&&y!==(y=jt(N[0].mime)+"")&&G(C,y),B===(B=W(N))&&ee?ee.p(N,Q):(ee.d(1),ee=B(N),ee&&(ee.c(),ee.m(I,null))),(!D||Q&1&&M!==(M=`Preview: ${N[0].name}`))&&r(e,"aria-label",M)},i(N){D||(le(s.$$.fragment,N),D=!0)},o(N){oe(s.$$.fragment,N),D=!1},d(N){N&&b(e),qe(s),ee.d(),U=!1,ce(J)}}}function es(n,e,t){let l,i,s,{item:o}=e,{content:a=""}=e,{loading:c=!1}=e,{error:m=""}=e;const _=Ke(),h=Fl(o);function p(y){y.key==="Escape"&&_("close")}function v(){_("openExternal",o.fileId)}Dl(()=>{window.addEventListener("keydown",p)}),El(()=>{window.removeEventListener("keydown",p)});const w=()=>_("close"),g=()=>_("close");return n.$$set=y=>{"item"in y&&t(0,o=y.item),"content"in y&&t(1,a=y.content),"loading"in y&&t(2,c=y.loading),"error"in y&&t(3,m=y.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=Hl(o)&&a&&a.startsWith("data:")),n.$$.dirty&1&&t(5,i=jl(o)||Ol(o)),n.$$.dirty&1&&t(4,s=Bl(o))},[o,a,c,m,s,i,l,_,h,v,w,g]}class ts extends Fe{constructor(e){super(),Ie(this,e,es,$i,Ne,{item:0,content:1,loading:2,error:3})}}function ls(n){let e,t,l,i,s,o,a,c,m,_,h,p,v,w,g,y,C;return{c(){e=d("div"),t=d("div"),l=d("h3"),i=H(n[0]),s=q(),o=d("p"),a=H(n[1]),c=q(),m=d("div"),_=d("button"),h=H(n[2]),v=q(),w=d("button"),g=H(n[3]),r(l,"class","svelte-1fv6yyk"),r(o,"class","message svelte-1fv6yyk"),r(_,"class",p="btn "+(n[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),r(w,"class","btn svelte-1fv6yyk"),r(m,"class","actions svelte-1fv6yyk"),r(t,"class","modal svelte-1fv6yyk"),r(e,"class","overlay svelte-1fv6yyk"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",n[0])},m(S,j){k(S,e,j),f(e,t),f(t,l),f(l,i),f(t,s),f(t,o),f(o,a),f(t,c),f(t,m),f(m,_),f(_,h),f(m,v),f(m,w),f(w,g),y||(C=[L(_,"click",n[6]),L(w,"click",n[7]),L(e,"click",Oe(n[8]))],y=!0)},p(S,[j]){j&1&&G(i,S[0]),j&2&&G(a,S[1]),j&4&&G(h,S[2]),j&16&&p!==(p="btn "+(S[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&r(_,"class",p),j&8&&G(g,S[3]),j&1&&r(e,"aria-label",S[0])},i:Z,o:Z,d(S){S&&b(e),y=!1,ce(C)}}}function ns(n,e,t){let{title:l="Подтверждение"}=e,{message:i=""}=e,{confirmText:s="Удалить"}=e,{cancelText:o="Отмена"}=e,{danger:a=!1}=e;const c=Ke(),m=()=>c("confirm"),_=()=>c("cancel"),h=()=>c("cancel");return n.$$set=p=>{"title"in p&&t(0,l=p.title),"message"in p&&t(1,i=p.message),"confirmText"in p&&t(2,s=p.confirmText),"cancelText"in p&&t(3,o=p.cancelText),"danger"in p&&t(4,a=p.danger)},[l,i,s,o,a,c,m,_,h]}class is extends Fe{constructor(e){super(),Ie(this,e,ns,ls,Ne,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function At(n,e,t){const l=n.slice();return l[148]=e[t],l}function zt(n,e,t){const l=n.slice();return l[151]=e[t],l}function Vt(n,e,t){const l=n.slice();return l[162]=e[t],l}function Rt(n,e,t){const l=n.slice();return l[159]=e[t],l}function Wt(n,e,t){const l=n.slice();return l[154]=e[t],l}function Kt(n,e,t){const l=n.slice();return l[151]=e[t],l}function Gt(n,e,t){const l=n.slice();return l[154]=e[t],l}function Ut(n,e,t){const l=n.slice();return l[167]=e[t],l}function Jt(n,e,t){const l=n.slice();return l[148]=e[t],l}function Xt(n,e,t){const l=n.slice();return l[172]=e[t],l}function Zt(n,e,t){const l=n.slice();return l[175]=e[t],l}function Yt(n){let e,t=n[175].label+"",l,i,s,o,a;function c(){return n[83](n[175])}return{c(){e=d("button"),l=H(t),i=q(),r(e,"class",s="nav-item "+(n[4]===n[175].id?"selected":"")+" svelte-i359q7")},m(m,_){k(m,e,_),f(e,l),f(e,i),o||(a=L(e,"click",c),o=!0)},p(m,_){n=m,_[0]&1&&t!==(t=n[175].label+"")&&G(l,t),_[0]&17&&s!==(s="nav-item "+(n[4]===n[175].id?"selected":"")+" svelte-i359q7")&&r(e,"class",s)},d(m){m&&b(e),o=!1,a()}}}function Qt(n){let e,t,l,i,s,o=n[1].length>0&&xt(n),a=se(n[1]),c=[];for(let _=0;_0?o?o.p(_,h):(o=xt(_),o.c(),o.m(t,null)):o&&(o.d(1),o=null),h[0]&34|h[1]&2048){a=se(_[1]);let p;for(p=0;p ',r(i,"class","dismiss-btn svelte-i359q7"),r(i,"aria-label","Dismiss"),r(e,"class","error-banner svelte-i359q7")},m(a,c){k(a,e,c),f(e,t),f(e,l),f(e,i),s||(o=[L(i,"click",be(n[85])),L(e,"click",n[86])],s=!0)},p(a,c){c[0]&8&&G(t,a[3])},d(a){a&&b(e),s=!1,ce(o)}}}function cs(n){let e,t,l;function i(a,c){if(a[18])return ms;if(a[0].length>0)return ds;if(a[3])return us}let s=i(n),o=s&&s(n);return{c(){e=d("div"),t=d("h2"),t.textContent="Верстак",l=q(),o&&o.c(),r(t,"class","svelte-i359q7"),r(e,"class","welcome svelte-i359q7")},m(a,c){k(a,e,c),f(e,t),f(e,l),o&&o.m(e,null)},p(a,c){s===(s=i(a))&&o?o.p(a,c):(o&&o.d(1),o=s&&s(a),o&&(o.c(),o.m(e,null)))},i:Z,o:Z,d(a){a&&b(e),o&&o.d()}}}function as(n){let e,t,l,i,s,o,a=se(n[40]),c=[];for(let p=0;p{_[w]=null}),ge()),~i?(s=_[i],s?s.p(p,v):(s=_[i]=m[i](p),s.c()),le(s,1),s.m(l,null)):s=null)},i(p){o||(le(s),o=!0)},o(p){oe(s),o=!1},d(p){p&&(b(e),b(t),b(l)),_e(c,p),~i&&_[i].d()}}}function fs(n){let e,t,l,i=n[8].title+"",s,o,a,c,m,_,h,p,v,w,g,y=n[8].dirty&&hl();return{c(){e=d("div"),t=d("div"),l=d("span"),s=H(i),o=q(),y&&y.c(),a=q(),c=d("div"),m=d("button"),m.textContent="Сохранить",_=q(),h=d("button"),h.textContent="Закрыть",p=q(),v=d("textarea"),r(l,"class","note-title svelte-i359q7"),r(m,"class","btn btn-primary svelte-i359q7"),r(h,"class","btn svelte-i359q7"),r(c,"class","note-editor-actions svelte-i359q7"),r(t,"class","note-editor-header svelte-i359q7"),r(v,"class","note-textarea svelte-i359q7"),r(v,"placeholder","Начните писать..."),r(e,"class","note-editor svelte-i359q7")},m(C,S){k(C,e,S),f(e,t),f(t,l),f(l,s),f(t,o),y&&y.m(t,null),f(t,a),f(t,c),f(c,m),f(c,_),f(c,h),f(e,p),f(e,v),me(v,n[8].content),w||(g=[L(m,"click",n[75]),L(h,"click",n[73]),L(v,"input",n[87]),L(v,"input",n[74])],w=!0)},p(C,S){S[0]&256&&i!==(i=C[8].title+"")&&G(s,i),C[8].dirty?y||(y=hl(),y.c(),y.m(t,a)):y&&(y.d(1),y=null),S[0]&256&&me(v,C[8].content)},i:Z,o:Z,d(C){C&&b(e),y&&y.d(),w=!1,ce(g)}}}function us(n){let e,t,l;return{c(){e=d("p"),t=H("Ошибка: "),l=H(n[3]),r(e,"class","error-text svelte-i359q7")},m(i,s){k(i,e,s),f(e,t),f(e,l)},p(i,s){s[0]&8&&G(l,i[3])},d(i){i&&b(e)}}}function ds(n){let e,t,l;return{c(){e=d("p"),e.textContent="Выберите раздел в боковой панели.",t=q(),l=d("p"),l.textContent="Или создайте новое дело кнопкой «+».",r(e,"class","svelte-i359q7"),r(l,"class","hint svelte-i359q7")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},p:Z,d(i){i&&(b(e),b(t),b(l))}}}function ms(n){let e;return{c(){e=d("p"),e.textContent="Загрузка...",r(e,"class","svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function nl(n){let e,t=n[167].label+"",l,i,s;function o(){return n[88](n[167])}return{c(){e=d("button"),l=H(t),r(e,"class",$n(n[82](n[167].id))+" svelte-i359q7")},m(a,c){k(a,e,c),f(e,l),i||(s=L(e,"click",o),i=!0)},p(a,c){n=a},d(a){a&&b(e),i=!1,s()}}}function ps(n){let e;return{c(){e=d("div"),e.innerHTML='Активность появится позже
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,i:Z,o:Z,d(t){t&&b(e)}}}function _s(n){let e,t,l,i,s,o,a,c,m,_,h,p;function v(y,C){return y[10].length===0?ws:gs}let w=v(n),g=w(n);return{c(){e=d("div"),t=d("div"),l=d("input"),i=q(),s=d("input"),o=q(),a=d("button"),c=H("Записать"),_=q(),g.c(),r(l,"type","text"),r(l,"placeholder","Что сделано"),r(l,"class","svelte-i359q7"),r(s,"type","number"),r(s,"placeholder","Мин"),r(s,"min","1"),r(s,"class","svelte-i359q7"),r(a,"class","btn btn-primary svelte-i359q7"),a.disabled=m=!n[12].trim()||!n[11],r(t,"class","worklog-form svelte-i359q7"),r(e,"class","worklog-tab svelte-i359q7")},m(y,C){k(y,e,C),f(e,t),f(t,l),me(l,n[12]),f(t,i),f(t,s),me(s,n[11]),f(t,o),f(t,a),f(a,c),f(e,_),g.m(e,null),h||(p=[L(l,"input",n[111]),L(s,"input",n[112]),L(a,"click",n[76])],h=!0)},p(y,C){C[0]&4096&&l.value!==y[12]&&me(l,y[12]),C[0]&2048&&Ll(s.value)!==y[11]&&me(s,y[11]),C[0]&6144&&m!==(m=!y[12].trim()||!y[11])&&(a.disabled=m),w===(w=v(y))&&g?g.p(y,C):(g.d(1),g=w(y),g&&(g.c(),g.m(e,null)))},i:Z,o:Z,d(y){y&&b(e),g.d(),h=!1,ce(p)}}}function hs(n){let e;function t(s,o){return s[9].length===0?qs:ys}let l=t(n),i=l(n);return{c(){i.c(),e=ve()},m(s,o){i.m(s,o),k(s,e,o)},p(s,o){l===(l=t(s))&&i?i.p(s,o):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},i:Z,o:Z,d(s){s&&b(e),i.d(s)}}}function vs(n){let e,t,l,i,s,o,a,c,m,_,h,p,v,w,g,y,C,S,j,F=n[30].items.length>0&&ol(n);const A=[Ms,Cs],O=[];function E(D,U){return D[22]?0:1}p=E(n),v=O[p]=A[p](n);let I=n[19]&&!n[21]&&cl(),M=n[26]&&al(n);return{c(){e=d("div"),t=d("div"),l=d("button"),i=H("+ Добавить файл"),s=q(),o=d("button"),a=H("+ Добавить папку"),c=q(),m=d("button"),m.textContent="+ Новый файл",_=q(),F&&F.c(),h=q(),v.c(),w=q(),I&&I.c(),g=q(),M&&M.c(),y=ve(),r(l,"class","btn btn-primary svelte-i359q7"),l.disabled=n[19],r(o,"class","btn svelte-i359q7"),o.disabled=n[19],r(m,"class","btn svelte-i359q7"),r(t,"class","tab-toolbar svelte-i359q7"),r(e,"class","files-tab svelte-i359q7")},m(D,U){k(D,e,U),f(e,t),f(t,l),f(l,i),f(t,s),f(t,o),f(o,a),f(t,c),f(t,m),f(t,_),F&&F.m(t,null),f(e,h),O[p].m(e,null),f(e,w),I&&I.m(e,null),k(D,g,U),M&&M.m(D,U),k(D,y,U),C=!0,S||(j=[L(l,"click",n[77]),L(o,"click",n[78]),L(m,"click",n[49])],S=!0)},p(D,U){(!C||U[0]&524288)&&(l.disabled=D[19]),(!C||U[0]&524288)&&(o.disabled=D[19]),D[30].items.length>0?F?F.p(D,U):(F=ol(D),F.c(),F.m(t,null)):F&&(F.d(1),F=null);let J=p;p=E(D),p===J?O[p].p(D,U):(ke(),oe(O[J],1,1,()=>{O[J]=null}),ge(),v=O[p],v?v.p(D,U):(v=O[p]=A[p](D),v.c()),le(v,1),v.m(e,w)),D[19]&&!D[21]?I||(I=cl(),I.c(),I.m(e,null)):I&&(I.d(1),I=null),D[26]?M?(M.p(D,U),U[0]&67108864&&le(M,1)):(M=al(D),M.c(),le(M,1),M.m(y.parentNode,y)):M&&(ke(),oe(M,1,1,()=>{M=null}),ge())},i(D){C||(le(v),le(M),C=!0)},o(D){oe(v),oe(M),C=!1},d(D){D&&(b(e),b(g),b(y)),F&&F.d(),O[p].d(),I&&I.d(),M&&M.d(D),S=!1,ce(j)}}}function bs(n){let e,t,l,i,s,o,a,c=n[16]&&fl(n);function m(p,v){return p[7].length===0&&!p[16]?Ns:Es}let _=m(n),h=_(n);return{c(){e=d("div"),t=d("div"),l=d("button"),l.textContent="+ Добавить заметку",i=q(),c&&c.c(),s=q(),h.c(),r(l,"class","btn btn-primary svelte-i359q7"),r(t,"class","tab-toolbar svelte-i359q7"),r(e,"class","notes-tab svelte-i359q7")},m(p,v){k(p,e,v),f(e,t),f(t,l),f(e,i),c&&c.m(e,null),f(e,s),h.m(e,null),o||(a=L(l,"click",n[69]),o=!0)},p(p,v){p[16]?c?c.p(p,v):(c=fl(p),c.c(),c.m(e,s)):c&&(c.d(1),c=null),_===(_=m(p))&&h?h.p(p,v):(h.d(1),h=_(p),h&&(h.c(),h.m(e,null)))},i:Z,o:Z,d(p){p&&b(e),c&&c.d(),h.d(),o=!1,a()}}}function ks(n){let e,t,l=n[5].title+"",i,s,o,a,c,m,_=n[5].type+"",h,p,v,w,g,y=(n[5].section||"—")+"",C,S,j,F,A,O=we(n[5].createdAt)+"",E,I,M,D,U,J,W,B,ee,N,Q,Y,V,P,te=n[7].length>0&&dl(n),K=n[10].length>0&&pl(n);return{c(){e=d("div"),t=d("h2"),i=H(l),s=q(),o=d("div"),a=d("div"),c=d("span"),c.textContent="Тип",m=d("span"),h=H(_),p=q(),v=d("div"),w=d("span"),w.textContent="Раздел",g=d("span"),C=H(y),S=q(),j=d("div"),F=d("span"),F.textContent="Создано",A=d("span"),E=H(O),I=q(),M=d("div"),D=d("button"),D.innerHTML=`
- Новая заметка`,U=q(),J=d("button"),J.innerHTML=`
- Добавить файл`,W=q(),B=d("button"),B.innerHTML=`
- Добавить действие`,ee=q(),N=d("button"),N.innerHTML=`
- Записать время`,Q=q(),te&&te.c(),Y=q(),K&&K.c(),r(t,"class","svelte-i359q7"),r(c,"class","meta-label svelte-i359q7"),r(m,"class","svelte-i359q7"),r(a,"class","meta-item svelte-i359q7"),r(w,"class","meta-label svelte-i359q7"),r(g,"class","svelte-i359q7"),r(v,"class","meta-item svelte-i359q7"),r(F,"class","meta-label svelte-i359q7"),r(A,"class","svelte-i359q7"),r(j,"class","meta-item svelte-i359q7"),r(o,"class","meta-grid svelte-i359q7"),r(D,"class","qa-btn svelte-i359q7"),r(J,"class","qa-btn svelte-i359q7"),r(B,"class","qa-btn svelte-i359q7"),B.disabled=!0,r(B,"title","Следующий этап"),r(N,"class","qa-btn svelte-i359q7"),r(M,"class","quick-actions svelte-i359q7"),r(e,"class","overview svelte-i359q7")},m(X,$){k(X,e,$),f(e,t),f(t,i),f(e,s),f(e,o),f(o,a),f(a,c),f(a,m),f(m,h),f(o,p),f(o,v),f(v,w),f(v,g),f(g,C),f(o,S),f(o,j),f(j,F),f(j,A),f(A,E),f(e,I),f(e,M),f(M,D),f(M,U),f(M,J),f(M,W),f(M,B),f(M,ee),f(M,N),f(e,Q),te&&te.m(e,null),f(e,Y),K&&K.m(e,null),V||(P=[L(D,"click",n[89]),L(J,"click",n[90]),L(N,"click",n[91])],V=!0)},p(X,$){$[0]&32&&l!==(l=X[5].title+"")&&G(i,l),$[0]&32&&_!==(_=X[5].type+"")&&G(h,_),$[0]&32&&y!==(y=(X[5].section||"—")+"")&&G(C,y),$[0]&32&&O!==(O=we(X[5].createdAt)+"")&&G(E,O),X[7].length>0?te?te.p(X,$):(te=dl(X),te.c(),te.m(e,Y)):te&&(te.d(1),te=null),X[10].length>0?K?K.p(X,$):(K=pl(X),K.c(),K.m(e,null)):K&&(K.d(1),K=null)},i:Z,o:Z,d(X){X&&b(e),te&&te.d(),K&&K.d(),V=!1,ce(P)}}}function gs(n){let e,t=se(n[10]),l=[];for(let i=0;iЗаписей работы пока нет',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function il(n){let e,t,l=n[151].summary+"",i,s,o,a=n[151].minutes+"",c,m,_=we(n[151].createdAt)+"",h,p;return{c(){e=d("div"),t=d("div"),i=H(l),s=q(),o=d("div"),c=H(a),m=H(" мин · "),h=H(_),p=q(),r(t,"class","svelte-i359q7"),r(o,"class","wl-meta svelte-i359q7"),r(e,"class","worklog-entry svelte-i359q7")},m(v,w){k(v,e,w),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(o,m),f(o,h),f(e,p)},p(v,w){w[0]&1024&&l!==(l=v[151].summary+"")&&G(i,l),w[0]&1024&&a!==(a=v[151].minutes+"")&&G(c,a),w[0]&1024&&_!==(_=we(v[151].createdAt)+"")&&G(h,_)},d(v){v&&b(e)}}}function ys(n){let e,t=se(n[9]),l=[];for(let i=0;iДействий пока нет',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function sl(n){let e,t,l=n[162].title+"",i,s,o=n[162].type+"",a,c,m,_,h,p;function v(){return n[110](n[162])}return{c(){e=d("div"),t=d("span"),i=H(l),s=d("span"),a=H(o),c=q(),m=d("button"),m.textContent="Запустить",_=q(),r(t,"class","svelte-i359q7"),r(s,"class","action-type svelte-i359q7"),r(m,"class","btn btn-sm svelte-i359q7"),r(e,"class","action-card svelte-i359q7")},m(w,g){k(w,e,g),f(e,t),f(t,i),f(e,s),f(s,a),f(e,c),f(e,m),f(e,_),h||(p=L(m,"click",v),h=!0)},p(w,g){n=w,g[0]&512&&l!==(l=n[162].title+"")&&G(i,l),g[0]&512&&o!==(o=n[162].type+"")&&G(a,o)},d(w){w&&b(e),h=!1,p()}}}function ol(n){let e,t,l=n[30].items.length+"",i,s,o;return{c(){e=d("button"),t=H("Вставить "),i=H(l),r(e,"class","btn svelte-i359q7")},m(a,c){k(a,e,c),f(e,t),f(e,i),s||(o=L(e,"click",n[54]),s=!0)},p(a,c){c[0]&1073741824&&l!==(l=a[30].items.length+"")&&G(i,l)},d(a){a&&b(e),s=!1,o()}}}function Cs(n){let e,t,l,i,s,o,a;const c=[Ss,Ts],m=[];function _(w,g){return w[24].length>0?0:1}e=_(n),t=m[e]=c[e](n);const h=[Ds,Ls],p=[];function v(w,g){return w[25].length===0?0:1}return i=v(n),s=p[i]=h[i](n),{c(){t.c(),l=q(),s.c(),o=ve()},m(w,g){m[e].m(w,g),k(w,l,g),p[i].m(w,g),k(w,o,g),a=!0},p(w,g){let y=e;e=_(w),e===y?m[e].p(w,g):(ke(),oe(m[y],1,1,()=>{m[y]=null}),ge(),t=m[e],t?t.p(w,g):(t=m[e]=c[e](w),t.c()),le(t,1),t.m(l.parentNode,l));let C=i;i=v(w),i===C?p[i].p(w,g):(ke(),oe(p[C],1,1,()=>{p[C]=null}),ge(),s=p[i],s?s.p(w,g):(s=p[i]=h[i](w),s.c()),le(s,1),s.m(o.parentNode,o))},i(w){a||(le(t),le(s),a=!0)},o(w){oe(t),oe(s),a=!1},d(w){w&&(b(l),b(o)),m[e].d(w),p[i].d(w)}}}function Ms(n){let e;return{c(){e=d("div"),e.innerHTML='Загрузка...
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,i:Z,o:Z,d(t){t&&b(e)}}}function Ts(n){let e,t;return e=new Pl({props:{crumbs:[{name:"Файлы"}]}}),{c(){Te(e.$$.fragment)},m(l,i){ye(e,l,i),t=!0},p:Z,i(l){t||(le(e.$$.fragment,l),t=!0)},o(l){oe(e.$$.fragment,l),t=!1},d(l){qe(e,l)}}}function Ss(n){let e,t,l,i,s,o;return e=new Pl({props:{crumbs:[{name:"Файлы"},...n[24]]}}),e.$on("navigate",n[96]),{c(){Te(e.$$.fragment),t=q(),l=d("button"),l.innerHTML=`
- Back`,r(l,"class","btn btn-sm back-btn svelte-i359q7")},m(a,c){ye(e,a,c),k(a,t,c),k(a,l,c),i=!0,s||(o=L(l,"click",n[45]),s=!0)},p(a,c){const m={};c[0]&16777216&&(m.crumbs=[{name:"Файлы"},...a[24]]),e.$set(m)},i(a){i||(le(e.$$.fragment,a),i=!0)},o(a){oe(e.$$.fragment,a),i=!1},d(a){a&&(b(t),b(l)),qe(e,a),s=!1,o()}}}function Ls(n){let e,t=[],l=new Map,i,s=se(n[25]);const o=a=>a[159].id;for(let a=0;a0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",o,a,c,m,_,h,p,v,w,g;return{c(){e=d("div"),t=d("div"),t.innerHTML=' ',l=q(),i=d("p"),o=H(s),a=q(),c=d("p"),c.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",m=q(),_=d("div"),h=d("button"),h.textContent="Добавить файл",p=q(),v=d("button"),v.textContent="Добавить папку",r(t,"class","empty-icon svelte-i359q7"),r(i,"class","svelte-i359q7"),r(c,"class","hint svelte-i359q7"),r(h,"class","btn btn-primary svelte-i359q7"),r(v,"class","btn svelte-i359q7"),r(_,"class","empty-actions svelte-i359q7"),r(e,"class","empty-state svelte-i359q7")},m(y,C){k(y,e,C),f(e,t),f(e,l),f(e,i),f(i,o),f(e,a),f(e,c),f(e,m),f(e,_),f(_,h),f(_,p),f(_,v),w||(g=[L(h,"click",n[77]),L(v,"click",n[78])],w=!0)},p(y,C){C[0]&16777216&&s!==(s=y[24].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&G(o,s)},i:Z,o:Z,d(y){y&&b(e),w=!1,ce(g)}}}function rl(n,e){let t,l,i;return l=new Ai({props:{item:e[159],selected:e[31].includes(e[159].id),onDragStart:e[58],onDragOver:e[59],onDrop:e[60]}}),l.$on("navigate",e[97]),l.$on("preview",e[98]),l.$on("openExternal",e[99]),l.$on("showInFolder",e[100]),l.$on("delete",e[101]),l.$on("rename",e[102]),l.$on("duplicate",e[103]),l.$on("cut",e[104]),l.$on("copy",e[105]),l.$on("selectOne",e[106]),l.$on("toggleSelect",e[107]),l.$on("rangeSelect",e[108]),{key:n,first:null,c(){t=ve(),Te(l.$$.fragment),this.first=t},m(s,o){k(s,t,o),ye(l,s,o),i=!0},p(s,o){e=s;const a={};o[0]&33554432&&(a.item=e[159]),o[0]&33554432|o[1]&1&&(a.selected=e[31].includes(e[159].id)),l.$set(a)},i(s){i||(le(l.$$.fragment,s),i=!0)},o(s){oe(l.$$.fragment,s),i=!1},d(s){s&&b(t),qe(l,s)}}}function cl(n){let e;return{c(){e=d("div"),e.innerHTML='Сканирование...
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},d(t){t&&b(e)}}}function al(n){let e,t;return e=new ts({props:{item:n[26],content:n[27],loading:n[28],error:n[29]}}),e.$on("close",n[48]),e.$on("openExternal",n[109]),{c(){Te(e.$$.fragment)},m(l,i){ye(e,l,i),t=!0},p(l,i){const s={};i[0]&67108864&&(s.item=l[26]),i[0]&134217728&&(s.content=l[27]),i[0]&268435456&&(s.loading=l[28]),i[0]&536870912&&(s.error=l[29]),e.$set(s)},i(l){t||(le(e.$$.fragment,l),t=!0)},o(l){oe(e.$$.fragment,l),t=!1},d(l){qe(e,l)}}}function fl(n){let e,t,l,i,s,o,a,c,m;return{c(){e=d("div"),t=d("input"),l=q(),i=d("div"),s=d("button"),s.textContent="Создать",o=q(),a=d("button"),a.textContent="Отмена",r(t,"type","text"),r(t,"placeholder","Название заметки"),r(t,"class","svelte-i359q7"),r(s,"class","btn btn-primary svelte-i359q7"),r(a,"class","btn svelte-i359q7"),r(i,"class","form-actions svelte-i359q7"),r(e,"class","create-form svelte-i359q7")},m(_,h){k(_,e,h),f(e,t),me(t,n[17]),f(e,l),f(e,i),f(i,s),f(i,o),f(i,a),c||(m=[L(t,"input",n[93]),L(t,"keydown",n[94]),L(s,"click",n[71]),L(a,"click",n[70])],c=!0)},p(_,h){h[0]&131072&&t.value!==_[17]&&me(t,_[17])},d(_){_&&b(e),c=!1,ce(m)}}}function Es(n){let e,t=se(n[7]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',r(e,"class","empty-state svelte-i359q7")},m(t,l){k(t,e,l)},p:Z,d(t){t&&b(e)}}}function ul(n){let e,t,l=n[154].title+"",i,s,o,a=we(n[154].createdAt)+"",c,m,_,h;function p(){return n[95](n[154])}return{c(){e=d("div"),t=d("div"),i=H(l),s=q(),o=d("div"),c=H(a),m=q(),r(t,"class","note-card-title svelte-i359q7"),r(o,"class","note-card-date svelte-i359q7"),r(e,"class","note-card svelte-i359q7")},m(v,w){k(v,e,w),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(e,m),_||(h=L(e,"click",p),_=!0)},p(v,w){n=v,w[0]&128&&l!==(l=n[154].title+"")&&G(i,l),w[0]&128&&a!==(a=we(n[154].createdAt)+"")&&G(c,a)},d(v){v&&b(e),_=!1,h()}}}function dl(n){let e,t,l,i=se(n[7].slice(0,5)),s=[];for(let o=0;on[115].call(v)),r(_,"class","form-group svelte-i359q7"),r(y,"class","btn btn-primary svelte-i359q7"),r(S,"class","btn svelte-i359q7"),r(g,"class","modal-actions svelte-i359q7"),r(t,"class","modal svelte-i359q7"),r(e,"class","modal-overlay svelte-i359q7")},m(E,I){k(E,e,I),f(e,t),f(t,l),f(t,i),f(t,s),f(s,o),f(s,a),f(s,c),me(c,n[14]),f(t,m),f(t,_),f(_,h),f(_,p),f(_,v);for(let M=0;M⚒ Верстак ',i=q(),s=d("nav"),o=d("div"),a=d("div"),a.textContent="Разделы",c=q();for(let z=0;z{P[pe]=null}),ge(),A=P[F],A?A.p(z,ie):(A=P[F]=V[F](z),A.c()),le(A,1),A.m(g,O)),!z[8]&&!z[5]&&z[4]!=="today"&&z[4]!=="inbox"?K?K.p(z,ie):(K=vl(z),K.c(),K.m(g,E)):K&&(K.d(1),K=null),z[13]?X?X.p(z,ie):(X=bl(z),X.c(),X.m(g,I)):X&&(X.d(1),X=null),z[21]&&z[20]?$?$.p(z,ie):($=gl(z),$.c(),$.m(g,M)):$&&($.d(1),$=null),z[37]?fe?fe.p(z,ie):(fe=yl(z),fe.c(),fe.m(g,D)):fe&&(fe.d(1),fe=null),z[32]?re?(re.p(z,ie),ie[1]&2&&le(re,1)):(re=Cl(z),re.c(),le(re,1),re.m(g,null)):re&&(ke(),oe(re,1,1,()=>{re=null}),ge())},i(z){U||(le(A),le(re),U=!0)},o(z){oe(A),oe(re),U=!1},d(z){z&&b(e),_e(W,z),B&&B.d(),Q.d(),Y&&Y.d(),P[F].d(),K&&K.d(),X&&X.d(),$&&$.d(),fe&&fe.d(),re&&re.d()}}}function x(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function we(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}const Ml=n=>n.id!=="today"&&n.id!=="inbox";function Fs(n,e,t){let l=[],i=[],s="",o="",a="",c=null,m="overview",_=[],h=null,p=[],v=[],w=[],g="",y="",C=!1,S="",j="clients",F=!1,A="",O=!0,E=!1,I=null,M=!1,D="",U=!1,J=null,W=[],B=[],ee=null,N="",Q=!1,Y="",V={items:[],mode:"copy"},P=[],te=[],K=!1,X="",$="",fe=!1,re="Удалить",z=null,ie=null,pe=!1,ue="",he="",Se="";const Al=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let Ge=null;Dl(async()=>{try{t(2,s=await x("VerstakVersion")||"verstak-gui/v2"),t(0,l=await x("ListSections")||[])}catch(u){t(3,o=String(u)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",un),Ge=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",bt),t(18,O=!1)}),El(()=>{Ge&&Ge(),window.removeEventListener("keydown",bt)});async function Ue(u){t(4,a=u),t(5,c=null),t(6,m="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,w=[]),t(13,C=!1),t(3,o="");try{u==="today"?t(1,i=await x("ListTodayView")||[]):t(1,i=await x("ListNodesBySection",u)||[])}catch(T){t(3,o=String(T)),t(1,i=[])}}async function ot(u){t(5,c=u),t(6,m="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,w=[]),t(25,B=[]),t(24,W=[]),t(23,J=null),t(26,ee=null),t(27,N=""),t(31,P=[]),te=[],t(8,h=null),t(13,C=!1),t(16,F=!1),t(3,o=""),await rt(u.id)}async function rt(u){try{t(7,_=await x("ListNotes",u)||[])}catch{}try{p=await x("ListFiles",u)||[]}catch{}try{t(9,v=await x("ListActions",u)||[])}catch{}try{t(10,w=await x("ListWorklog",u)||[])}catch{}}async function de(u){t(22,U=!0);try{let T=await x("ListItems",u)||[];T.sort((ne,ae)=>ne.type!==ae.type?ne.type==="folder"?-1:1:(ne.name||"").localeCompare(ae.name||"")),t(25,B=T)}catch{t(25,B=[])}t(22,U=!1)}async function Je(u){if(c){try{const T=await x("GetNodeDetail",u);T&&t(24,W=[...W,{id:u,name:T.title}])}catch{t(24,W=[...W,{id:u,name:"..."}])}t(23,J=u),await de(u)}}function ct(){if(W.length<2)t(24,W=[]),t(23,J=null),de(c.id);else{const u=W[W.length-2];t(24,W=W.slice(0,-1)),t(23,J=u.id),de(u.id)}}function at(u){const T=W[u];t(24,W=W.slice(0,u+1)),t(23,J=T.id),de(T.id)}async function Xe(u){t(26,ee=u),t(27,N=""),t(29,Y=""),t(28,Q=!0);try{Ni(u)?t(27,N=await x("GetFileBase64",u.fileId)||""):Ii(u)&&t(27,N=await x("ReadFileText",u.fileId)||"")}catch(T){t(29,Y=String(T))}t(28,Q=!1)}function Ze(){t(26,ee=null),t(27,N=""),t(29,Y="")}async function zl(){const u=prompt("Введите имя файла:");if(!(!u||!u.trim()))try{const T=J||c.id;await x("CreateEmptyFile",T,u.trim()),await de(T)}catch(T){t(3,o=String(T))}}async function ft(u){try{await x("DuplicateNode",u);const T=J||c.id;await de(T)}catch(T){t(3,o=String(T))}}function ut(u){const T=B.find(ne=>ne.id===u);T&>(T.id,T.name)}function dt(u){t(30,V={items:[u],mode:"cut"})}function mt(u){t(30,V={items:[u],mode:"copy"})}async function pt(){if(V.items.length===0)return;const u=J||c.id;try{if(V.mode==="copy")for(const T of V.items)await x("DuplicateNode",T);else for(const T of V.items)await x("MoveNode",T,u);t(30,V={items:[],mode:"copy"}),await de(u)}catch(T){t(3,o=String(T))}}function _t(u){P.includes(u)?t(31,P=P.filter(T=>T!==u)):t(31,P=[...P,u])}function ht(u){t(31,P=[u])}function Vl(){t(31,P=B.map(u=>u.id))}function vt(u){if(B.length===0)return;const T=P.length>0?P[P.length-1]:B[0].id,ne=B.findIndex(Ce=>Ce.id===T),ae=B.findIndex(Ce=>Ce.id===u);if(ne===-1||ae===-1)return;const He=Math.min(ne,ae),et=Math.max(ne,ae),Zn=B.slice(He,et+1).map(Ce=>Ce.id),Dt=new Set(P);Zn.forEach(Ce=>Dt.add(Ce)),t(31,P=[...Dt])}function Rl(){t(31,P=[])}function Ye(u){return u.length>0?u:B.map(T=>T.id)}async function Wl(){var ne;const u=Ye(P),T=u.length===1&&((ne=B.find(ae=>ae.id===u[0]))==null?void 0:ne.type)==="folder"?"папку":`файлов (${u.length})`;Pe({title:"Удаление",message:`Удалить ${T}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{for(const He of u)try{await x("DeleteFileOrFolder",He)}catch(et){t(3,o=String(et))}t(31,P=[]);const ae=J||c.id;await de(ae)}})}function Kl(){const u=Ye(P);t(30,V={items:u,mode:"cut"}),t(31,P=[])}function Gl(){const u=Ye(P);t(30,V={items:u,mode:"copy"}),t(31,P=[])}function Ul(u,T){const ne=P.includes(T)?P:[T];te=ne,u.dataTransfer.effectAllowed="move",u.dataTransfer.setData("text/plain",ne.join(","))}function Jl(u,T){const ne=B.find(ae=>ae.id===T);ne&&ne.type==="folder"&&(u.preventDefault(),u.dataTransfer.dropEffect="move")}async function Xl(u,T){if(u.preventDefault(),te.length!==0){for(const ne of te)try{await x("MoveNode",ne,T)}catch(ae){t(3,o=String(ae))}te=[],t(31,P=[]),await de(J||c.id)}}function bt(u){if(m==="files"&&!(u.target.tagName==="INPUT"||u.target.tagName==="TEXTAREA"))if(u.ctrlKey||u.metaKey)u.key==="c"||u.key==="C"?(u.preventDefault(),Gl()):u.key==="x"||u.key==="X"?(u.preventDefault(),Kl()):u.key==="v"||u.key==="V"?(u.preventDefault(),pt()):u.key==="a"||u.key==="A"?(u.preventDefault(),Vl()):u.key==="o"||u.key==="O"?(u.preventDefault(),Zl()):u.key==="Enter"&&(u.preventDefault(),kt());else if(u.key==="Enter")u.preventDefault(),kt();else if(u.key==="Delete"||u.key==="Backspace"){if(ee){u.preventDefault(),Ze();return}if(P.length>0){u.preventDefault(),Wl();return}if(u.key==="Backspace"&&W.length>0){u.preventDefault(),ct();return}}else if(u.key==="Escape"){if(ee){Ze();return}if(P.length>0){Rl();return}}else u.key==="F2"&&(u.preventDefault(),Yl())}function kt(){if(P.length===1){const u=B.find(T=>T.id===P[0]);u&&(u.type==="folder"?Je(u.id):Xe(u))}}function Zl(){if(P.length===1){const u=B.find(T=>T.id===P[0]);u&&u.fileId&&x("OpenFile",u.fileId)}}function gt(u,T){ue=u,t(38,he=T),t(39,Se=""),t(37,pe=!0)}function Yl(){if(P.length===1){const u=B.find(T=>T.id===P[0]);u&>(u.id,u.name)}}async function wt(){const u=he.trim();if(!u){t(39,Se="Имя не может быть пустым");return}try{await x("ValidateName",u)}catch{t(39,Se="Недопустимое имя");return}t(37,pe=!1),ue="";try{await x("RenameNode",ue,u);const T=J||c.id;await de(T)}catch(T){t(3,o=String(T))}}function Ql(){t(37,pe=!1),ue="",t(38,he=""),t(39,Se="")}function xl(u){u.key==="Enter"?wt():t(39,Se="")}function Pe(u){t(33,X=u.title||"Подтверждение"),t(34,$=u.message||""),t(35,fe=u.danger!==void 0?u.danger:!0),t(36,re=u.confirmText||"Удалить"),z=u.onConfirm||null,ie=u.onCancel||null,t(32,K=!0)}function yt(){t(32,K=!1),z=null,ie=null}function $l(){z&&z(),yt()}function en(){ie&&ie(),yt()}function tn(){t(13,C=!0),t(14,S=""),t(15,j=a||"clients")}function ln(){t(13,C=!1),t(14,S="")}async function qt(){if(S.trim())try{const u=await x("CreateNode","","case",S.trim(),j);t(13,C=!1),t(14,S=""),await Ue(j)}catch(u){t(3,o=String(u))}}function Ct(){t(16,F=!0),t(17,A="")}function nn(){t(16,F=!1),t(17,A="")}async function Mt(){if(!(!A.trim()||!c))try{const u=await x("CreateNote",c.id,A.trim());t(7,_=[..._,u&&u.id?u:{id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()}]),t(16,F=!1),t(17,A="")}catch{const T={id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()};t(7,_=[..._,T]),t(16,F=!1),t(17,A="")}}async function Qe(u){if(h&&h.dirty){Pe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:async()=>{await Tt(u)}});return}await Tt(u)}async function Tt(u){try{const T=await x("ReadNote",u.id);t(8,h={id:u.id,title:u.title,content:T||"",dirty:!1})}catch{t(8,h={id:u.id,title:u.title,content:"# "+u.title+`
-
-`,dirty:!1})}}function sn(){if(h&&h.dirty){Pe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:()=>{t(8,h=null)}});return}t(8,h=null)}function on(u){h&&(t(8,h.content=u.target.value,h),t(8,h.dirty=!0,h))}async function rn(){if(h)try{await x("SaveNote",h.id,h.content),t(8,h.dirty=!1,h)}catch{t(8,h.dirty=!1,h)}}async function cn(){const u=parseInt(g,10);if(!(!y.trim()||isNaN(u)||u<=0||!c)){try{const T=await x("CreateWorklog",c.id,y.trim(),u);t(10,w=[...w,T&&T.id?T:{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:u,createdAt:new Date().toISOString()}])}catch{t(10,w=[...w,{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:u,createdAt:new Date().toISOString()}])}t(12,y=""),t(11,g="")}}async function St(){const u=await x("PickFile");u&&await xe(c.id,u)}async function an(){const u=await x("PickDirectory");u&&await xe(c.id,u)}async function xe(u,T){t(19,E=!0);try{const ne=await x("PreviewImport",T);t(20,I=ne),D=T,t(21,M=!0)}catch(ne){t(3,o=String(ne))}t(19,E=!1)}async function $e(u){try{const T=u==="copy"?await x("AddPathCopy",c.id,D):await x("AddPathLink",c.id,D);t(21,M=!1),t(20,I=null),t(24,W=[]),t(23,J=null),await Promise.all([rt(c.id),de(c.id)])}catch(T){t(3,o=String(T))}}function fn(){t(21,M=!1),t(20,I=null)}async function Lt({id:u,type:T}){Pe({title:"Удаление",message:`Удалить ${T==="folder"?"папку":"файл"}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{try{await x("DeleteFileOrFolder",u),p=p.filter(He=>He.nodeId!==u);const ae=J||c.id;await de(ae)}catch(ae){t(3,o=String(ae))}}})}async function un(u){if(!u||u.length===0)return;if(!c){t(3,o="Сначала выберите дело для добавления файлов");return}const T=u[0];await xe(c.id,T)}function dn(u){return m===u?"tab active":"tab"}const mn=u=>Ue(u.id),pn=u=>ot(u),_n=()=>t(3,o=""),hn=()=>t(3,o="");function vn(){h.content=this.value,t(8,h)}const bn=u=>{t(6,m=u.id),u.id==="files"&&c&&B.length===0&&!J&&de(c.id)},kn=()=>{t(6,m="notes"),Ct()},gn=()=>{t(6,m="files"),St()},wn=()=>t(6,m="worklog"),yn=u=>Qe(u);function qn(){A=this.value,t(17,A)}const Cn=u=>u.key==="Enter"&&Mt(),Mn=u=>Qe(u),Tn=u=>{const T=u.detail;T===0?(t(24,W=[]),t(23,J=null),de(c.id)):at(T-1)},Sn=u=>Je(u.detail),Ln=u=>Xe(u.detail),Dn=u=>x("OpenFile",u.detail),En=u=>x("OpenFolder",u.detail),Nn=u=>Lt(u.detail),In=u=>ut(u.detail.id),Fn=u=>ft(u.detail),Hn=u=>dt(u.detail),jn=u=>mt(u.detail),Bn=u=>ht(u.detail),On=u=>_t(u.detail),Pn=u=>vt(u.detail),An=u=>x("OpenFile",u.detail),zn=u=>x("RunAction",u.id);function Vn(){y=this.value,t(12,y)}function Rn(){g=Ll(this.value),t(11,g)}function Wn(){S=this.value,t(14,S)}const Kn=u=>u.key==="Enter"&&qt();function Gn(){j=ti(this),t(15,j),t(0,l)}const Un=()=>$e("copy"),Jn=()=>$e("link");function Xn(){he=this.value,t(38,he)}return[l,i,s,o,a,c,m,_,h,v,w,g,y,C,S,j,F,A,O,E,I,M,U,J,W,B,ee,N,Q,Y,V,P,K,X,$,fe,re,pe,he,Se,Al,Ue,ot,de,Je,ct,at,Xe,Ze,zl,ft,ut,dt,mt,pt,_t,ht,vt,Ul,Jl,Xl,wt,Ql,xl,$l,en,tn,ln,qt,Ct,nn,Mt,Qe,sn,on,rn,cn,St,an,$e,fn,Lt,dn,mn,pn,_n,hn,vn,bn,kn,gn,wn,yn,qn,Cn,Mn,Tn,Sn,Ln,Dn,En,Nn,In,Fn,Hn,jn,Bn,On,Pn,An,zn,Vn,Rn,Wn,Kn,Gn,Un,Jn,Xn]}class Hs extends Fe{constructor(e){super(),Ie(this,e,Fs,Is,Ne,{},null,[-1,-1,-1,-1,-1,-1])}}new Hs({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-BjkBVutb.js b/cmd/verstak-gui/frontend-dist/assets/main-BjkBVutb.js
deleted file mode 100644
index ead8961..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-BjkBVutb.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var bl=Object.defineProperty;var zl=(l,e,t)=>e in l?bl(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var Le=(l,e,t)=>zl(l,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function T(){}function Ot(l){return l()}function Ve(){return Object.create(null)}function se(l){l.forEach(Ot)}function jt(l){return typeof l=="function"}function xe(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}function kl(l){return Object.keys(l).length===0}function gl(l){return l??""}function a(l,e){l.appendChild(e)}function v(l,e,t){l.insertBefore(e,t||null)}function h(l){l.parentNode&&l.parentNode.removeChild(l)}function fe(l,e){for(let t=0;tl.removeEventListener(e,t,n)}function Pt(l){return function(e){e.target===this&&l.call(this,e)}}function f(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function Dt(l){return l===""?null:+l}function yl(l){return Array.from(l.childNodes)}function B(l,e){e=""+e,l.data!==e&&(l.data=e)}function oe(l,e){l.value=e??""}function We(l,e,t,n){t==null?l.style.removeProperty(e):l.style.setProperty(e,t,"")}function qe(l,e,t){for(let n=0;n{const i=l.$$.callbacks[e];if(i){const s=Ml(e,t,{cancelable:n});return i.slice().forEach(o=>{o.call(l,s)}),!s.defaultPrevented}return!0}}function Ae(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const _e=[],we=[];let me=[];const je=[],Fl=Promise.resolve();let Pe=!1;function Nl(){Pe||(Pe=!0,Fl.then(Bt))}function Ce(l){me.push(l)}function Re(l){je.push(l)}const Oe=new Set;let pe=0;function Bt(){if(pe!==0)return;const l=ze;do{try{for(;pe<_e.length;){const e=_e[pe];pe++,be(e),Il(e.$$)}}catch(e){throw _e.length=0,pe=0,e}for(be(null),_e.length=0,pe=0;we.length;)we.pop()();for(let e=0;el.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),me=e}const ye=new Set;let ae;function he(){ae={r:0,c:[],p:ae}}function ve(){ae.r||se(ae.c),ae=ae.p}function Q(l,e){l&&l.i&&(ye.delete(l),l.i(e))}function ee(l,e,t,n){if(l&&l.o){if(ye.has(l))return;ye.add(l),ae.c.push(()=>{ye.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}function Z(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function Ll(l,e){ee(l,1,1,()=>{e.delete(l.key)})}function Al(l,e,t,n,i,s,o,r,c,u,d,m){let _=l.length,b=s.length,z=_;const k={};for(;z--;)k[l[z].key]=z;const y=[],F=new Map,M=new Map,L=[];for(z=b;z--;){const S=m(i,s,z),N=t(S);let g=o.get(N);g?L.push(()=>g.p(S,e)):(g=u(N,S),g.c()),F.set(N,y[z]=g),N in k&&M.set(N,Math.abs(z-k[N]))}const A=new Set,O=new Set;function H(S){Q(S,1),S.m(r,d),o.set(S.key,S),d=S.first,b--}for(;_&&b;){const S=y[b-1],N=l[_-1],g=S.key,P=N.key;S===N?(d=S.first,_--,b--):F.has(P)?!o.has(g)||A.has(g)?H(S):O.has(P)?_--:M.get(g)>M.get(P)?(O.add(g),H(S)):(A.add(P),_--):(c(N,o),_--)}for(;_--;){const S=l[_];F.has(S.key)||c(S,o)}for(;b;)H(y[b-1]);return se(L),y}function Ge(l,e,t){const n=l.$$.props[e];n!==void 0&&(l.$$.bound[n]=t,t(l.$$.ctx[n]))}function Me(l){l&&l.c()}function ke(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),Ce(()=>{const s=l.$$.on_mount.map(Ot).filter(jt);l.$$.on_destroy?l.$$.on_destroy.push(...s):se(s),l.$$.on_mount=[]}),i.forEach(Ce)}function ge(l,e){const t=l.$$;t.fragment!==null&&(El(t.after_update),se(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Ol(l,e){l.$$.dirty[0]===-1&&(_e.push(l),Nl(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const z=b.length?b[0]:_;return u.ctx&&i(u.ctx[m],u.ctx[m]=z)&&(!u.skip_bound&&u.bound[m]&&u.bound[m](z),d&&Ol(l,m)),_}):[],u.update(),d=!0,se(u.before_update),u.fragment=n?n(u.ctx):!1,e.target){if(e.hydrate){const m=yl(e.target);u.fragment&&u.fragment.l(m),m.forEach(h)}else u.fragment&&u.fragment.c();e.intro&&Q(l.$$.fragment),ke(l,e.target,e.anchor),Bt()}be(c)}class Fe{constructor(){Le(this,"$$");Le(this,"$$set")}$destroy(){ge(this,1),this.$destroy=T}$on(e,t){if(!jt(t))return T;const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!kl(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const jl="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(jl);function Pl(l){let e,t;return{c(){e=E("path"),t=E("polyline"),f(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),f(t,"points","14 2 14 8 20 8")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function Dl(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("polyline"),f(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),f(t,"points","14 2 14 8 20 8"),f(n,"x1","16"),f(n,"y1","13"),f(n,"x2","8"),f(n,"y2","13"),f(i,"x1","16"),f(i,"y1","17"),f(i,"x2","8"),f(i,"y2","17"),f(s,"points","10 9 9 9 8 9")},m(o,r){v(o,e,r),v(o,t,r),v(o,n,r),v(o,i,r),v(o,s,r)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function Hl(l){let e,t;return{c(){e=E("polyline"),t=E("polyline"),f(e,"points","16 18 22 12 16 6"),f(t,"points","8 6 2 12 8 18")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function Bl(l){let e,t,n,i;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("rect"),f(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),f(t,"points","7 3 12 8 17 3"),f(n,"x1","3"),f(n,"y1","8"),f(n,"x2","21"),f(n,"y2","8"),f(i,"x","10"),f(i,"y","12"),f(i,"width","4"),f(i,"height","4"),f(i,"rx","1")},m(s,o){v(s,e,o),v(s,t,o),v(s,n,o),v(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function Tl(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),f(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),f(t,"points","14 2 14 8 20 8"),f(n,"x1","9"),f(n,"y1","12"),f(n,"x2","15"),f(n,"y2","12"),f(i,"x1","9"),f(i,"y1","15"),f(i,"x2","13"),f(i,"y2","15"),f(s,"x1","12"),f(s,"y1","15"),f(s,"x2","12"),f(s,"y2","18")},m(o,r){v(o,e,r),v(o,t,r),v(o,n,r),v(o,i,r),v(o,s,r)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function Vl(l){let e,t,n,i,s,o;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),o=E("line"),f(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),f(t,"points","14 2 14 8 20 8"),f(n,"x1","8"),f(n,"y1","12"),f(n,"x2","16"),f(n,"y2","12"),f(i,"x1","8"),f(i,"y1","16"),f(i,"x2","16"),f(i,"y2","16"),f(s,"x1","8"),f(s,"y1","14"),f(s,"x2","12"),f(s,"y2","14"),f(o,"x1","12"),f(o,"y1","12"),f(o,"x2","12"),f(o,"y2","18")},m(r,c){v(r,e,c),v(r,t,c),v(r,n,c),v(r,i,c),v(r,s,c),v(r,o,c)},d(r){r&&(h(e),h(t),h(n),h(i),h(s),h(o))}}}function Wl(l){let e,t,n,i;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),f(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),f(t,"points","14 2 14 8 20 8"),f(n,"x1","16"),f(n,"y1","13"),f(n,"x2","8"),f(n,"y2","13"),f(i,"x1","16"),f(i,"y1","17"),f(i,"x2","8"),f(i,"y2","17")},m(s,o){v(s,e,o),v(s,t,o),v(s,n,o),v(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function ql(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),f(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),f(t,"points","14 2 14 8 20 8"),f(n,"x1","8"),f(n,"y1","12"),f(n,"x2","16"),f(n,"y2","12"),f(i,"x1","8"),f(i,"y1","16"),f(i,"x2","16"),f(i,"y2","16"),f(s,"x1","8"),f(s,"y1","14"),f(s,"x2","12"),f(s,"y2","14")},m(o,r){v(o,e,r),v(o,t,r),v(o,n,r),v(o,i,r),v(o,s,r)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function Rl(l){let e,t,n;return{c(){e=E("path"),t=E("circle"),n=E("circle"),f(e,"d","M9 18V5l12-2v13"),f(t,"cx","6"),f(t,"cy","18"),f(t,"r","3"),f(n,"cx","18"),f(n,"cy","16"),f(n,"r","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function Gl(l){let e,t;return{c(){e=E("rect"),t=E("polyline"),f(e,"x","2"),f(e,"y","4"),f(e,"width","20"),f(e,"height","16"),f(e,"rx","2"),f(t,"points","10 9 16 12 10 15 10 9")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function Kl(l){let e,t,n;return{c(){e=E("rect"),t=E("circle"),n=E("polyline"),f(e,"x","3"),f(e,"y","3"),f(e,"width","18"),f(e,"height","18"),f(e,"rx","2"),f(e,"ry","2"),f(t,"cx","8.5"),f(t,"cy","8.5"),f(t,"r","1.5"),f(n,"points","21 15 16 10 5 21")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function Jl(l){let e;return{c(){e=E("path"),f(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,n){v(t,e,n)},d(t){t&&h(e)}}}function Ul(l){let e;function t(s,o){return s[0]==="folder"?Jl:s[0]==="image"?Kl:s[0]==="video"?Gl:s[0]==="audio"?Rl:s[0]==="pdf"?ql:s[0]==="document"?Wl:s[0]==="spreadsheet"?Vl:s[0]==="presentation"?Tl:s[0]==="archive"?Bl:s[0]==="code"?Hl:s[0]==="text"?Dl:Pl}let n=t(l),i=n(l);return{c(){e=E("svg"),i.c(),f(e,"width",l[1]),f(e,"height",l[1]),f(e,"viewBox","0 0 24 24"),f(e,"fill","none"),f(e,"stroke","currentColor"),f(e,"stroke-width","1.5"),f(e,"stroke-linecap","round"),f(e,"stroke-linejoin","round"),f(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){v(s,e,o),i.m(e,null)},p(s,[o]){n!==(n=t(s))&&(i.d(1),i=n(s),i&&(i.c(),i.m(e,null))),o&2&&f(e,"width",s[1]),o&2&&f(e,"height",s[1])},i:T,o:T,d(s){s&&h(e),i.d()}}}function Zl(l,e,t){let{kind:n="generic"}=e,{size:i=20}=e;return l.$$set=s=>{"kind"in s&&t(0,n=s.kind),"size"in s&&t(1,i=s.size)},[n,i]}class Xl extends Fe{constructor(e){super(),Se(this,e,Zl,Ul,xe,{kind:0,size:1})}}function Yl(l){let e,t,n;return{c(){e=E("path"),t=E("polyline"),n=E("line"),f(e,"d","M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"),f(t,"points","15 3 21 3 21 9"),f(n,"x1","10"),f(n,"y1","14"),f(n,"x2","21"),f(n,"y2","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function Ql(l){let e,t;return{c(){e=E("path"),t=E("line"),f(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"),f(t,"x1","9"),f(t,"y1","14"),f(t,"x2","15"),f(t,"y2","14")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function $l(l){let e,t,n,i,s,o,r,c,u;function d(b,z){return b[0]?Ql:Yl}let m=d(l),_=m(l);return{c(){e=p("div"),t=p("button"),n=E("svg"),_.c(),o=x(),r=p("button"),r.innerHTML=' ',f(n,"width","16"),f(n,"height","16"),f(n,"viewBox","0 0 24 24"),f(n,"fill","none"),f(n,"stroke","currentColor"),f(n,"stroke-width","2"),f(n,"stroke-linecap","round"),f(n,"stroke-linejoin","round"),f(t,"class","action-btn svelte-7ixqek"),f(t,"title",i=l[0]?"Open folder":"Open file"),f(t,"aria-label",s=l[0]?"Open folder":"Open file"),f(r,"class","action-btn action-btn-danger svelte-7ixqek"),f(r,"title","Delete"),f(r,"aria-label","Delete"),f(e,"class","file-actions svelte-7ixqek")},m(b,z){v(b,e,z),a(e,t),a(t,n),_.m(n,null),a(e,o),a(e,r),c||(u=[D(t,"click",l[1]),D(r,"click",l[2])],c=!0)},p(b,[z]){m!==(m=d(b))&&(_.d(1),_=m(b),_&&(_.c(),_.m(n,null))),z&1&&i!==(i=b[0]?"Open folder":"Open file")&&f(t,"title",i),z&1&&s!==(s=b[0]?"Open folder":"Open file")&&f(t,"aria-label",s)},i:T,o:T,d(b){b&&h(e),_.d(),c=!1,se(u)}}}function en(l,e,t){let{isFolder:n=!1}=e,{fileId:i=""}=e,{nodeId:s=""}=e;const o=Ht();function r(){n?o("openFolder",s):o("open",i)}function c(){o("delete",s)}return l.$$set=u=>{"isFolder"in u&&t(0,n=u.isFolder),"fileId"in u&&t(3,i=u.fileId),"nodeId"in u&&t(4,s=u.nodeId)},[n,r,c,i,s]}class tn extends Fe{constructor(e){super(),Se(this,e,en,$l,xe,{isFolder:0,fileId:3,nodeId:4})}}function Ke(l){if(l==null||l<0)return"—";if(l===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(l)/Math.log(1024)),e.length-1),n=l/Math.pow(1024,t);return(t===0?n.toFixed(0):n.toFixed(1))+" "+e[t]}const ln={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function Je(l){return l?ln[l]||l:"Unknown"}function nn(l){if(l.type==="folder")return"folder";const e=(l.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const n=(l.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(n)?"code":"generic"}function Ue(l,e,t){const n=l.slice();return n[15]=e[t],n}function sn(l){let e;return{c(){e=p("span"),f(e,"class","expand-spacer svelte-1fc98j1")},m(t,n){v(t,e,n)},p:T,d(t){t&&h(e)}}}function on(l){let e,t,n,i;function s(c,u){return c[4]?cn:fn}let o=s(l),r=o(l);return{c(){e=p("button"),r.c(),f(e,"class","expand-toggle svelte-1fc98j1"),f(e,"aria-label",t=l[0][l[2].id]?"Collapse":"Expand")},m(c,u){v(c,e,u),r.m(e,null),n||(i=D(e,"click",l[6]),n=!0)},p(c,u){o!==(o=s(c))&&(r.d(1),r=o(c),r&&(r.c(),r.m(e,null))),u&5&&t!==(t=c[0][c[2].id]?"Collapse":"Expand")&&f(e,"aria-label",t)},d(c){c&&h(e),r.d(),n=!1,i()}}}function fn(l){let e,t;return{c(){e=E("svg"),t=E("path"),f(t,"d","M9 18l6-6-6-6"),f(e,"width","10"),f(e,"height","10"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor")},m(n,i){v(n,e,i),a(e,t)},d(n){n&&h(e)}}}function cn(l){let e,t;return{c(){e=E("svg"),t=E("path"),f(t,"d","M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"),f(e,"width","10"),f(e,"height","10"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class","spin svelte-1fc98j1")},m(n,i){v(n,e,i),a(e,t)},d(n){n&&h(e)}}}function rn(l){let e,t=Ke(l[2].size)+"",n,i,s,o,r,c=Je(l[2].mime)+"",u;return{c(){e=p("span"),n=I(t),i=x(),s=p("span"),s.textContent="·",o=x(),r=p("span"),u=I(c),f(s,"class","meta-sep svelte-1fc98j1")},m(d,m){v(d,e,m),a(e,n),v(d,i,m),v(d,s,m),v(d,o,m),v(d,r,m),a(r,u)},p(d,m){m&4&&t!==(t=Ke(d[2].size)+"")&&B(n,t),m&4&&c!==(c=Je(d[2].mime)+"")&&B(u,c)},d(d){d&&(h(e),h(i),h(s),h(o),h(r))}}}function an(l){let e,t,n,i=l[1][l[2].id]&&l[1][l[2].id].length>0&&Ze(l);return{c(){e=p("span"),e.textContent="Folder",t=x(),i&&i.c(),n=ue()},m(s,o){v(s,e,o),v(s,t,o),i&&i.m(s,o),v(s,n,o)},p(s,o){s[1][s[2].id]&&s[1][s[2].id].length>0?i?i.p(s,o):(i=Ze(s),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},d(s){s&&(h(e),h(t),h(n)),i&&i.d(s)}}}function Ze(l){let e,t,n,i=l[1][l[2].id].length+"",s,o,r=l[1][l[2].id].length===1?"item":"items",c;return{c(){e=p("span"),e.textContent="·",t=x(),n=p("span"),s=I(i),o=x(),c=I(r),f(e,"class","meta-sep svelte-1fc98j1")},m(u,d){v(u,e,d),v(u,t,d),v(u,n,d),a(n,s),a(n,o),a(n,c)},p(u,d){d&6&&i!==(i=u[1][u[2].id].length+"")&&B(s,i),d&6&&r!==(r=u[1][u[2].id].length===1?"item":"items")&&B(c,r)},d(u){u&&(h(e),h(t),h(n))}}}function Xe(l){let e,t,n=Z(l[1][l[2].id]),i=[];for(let o=0;oee(i[o],1,1,()=>{i[o]=null});return{c(){for(let o=0;o{N=null}),ve())},i(g){F||(Q(i.$$.fragment,g),Q(z.$$.fragment,g),Q(N),F=!0)},o(g){ee(i.$$.fragment,g),ee(z.$$.fragment,g),ee(N),F=!1},d(g){g&&(h(e),h(k),h(y)),A.d(),ge(i),S.d(),ge(z),N&&N.d(g)}}}function dn(l,...e){var t,n,i;try{const s=(i=(n=(t=window==null?void 0:window.go)==null?void 0:t.main)==null?void 0:n.App)==null?void 0:i[l];if(typeof s=="function")return s(...e)}catch(s){console.error("Wails call error:",l,s)}}function pn(l,e,t){let{item:n}=e,{expanded:i={}}=e,{childrenMap:s={}}=e,{depth:o=0}=e;const r=Ht();let c=!1;async function u(){const M=n.id;if(i[M]){t(0,i={...i,[M]:!1});return}if(t(4,c=!0),t(0,i={...i,[M]:!0}),!s[M]){try{t(1,s[M]=await dn("ListItems",M)||[],s)}catch{t(1,s[M]=[],s)}t(1,s={...s})}t(4,c=!1)}const d=nn(n),m=n.type==="folder",_=M=>r("open",M.detail),b=M=>r("openFolder",M.detail),z=M=>r("delete",M.detail);function k(M){Ae.call(this,l,M)}function y(M){Ae.call(this,l,M)}function F(M){Ae.call(this,l,M)}return l.$$set=M=>{"item"in M&&t(2,n=M.item),"expanded"in M&&t(0,i=M.expanded),"childrenMap"in M&&t(1,s=M.childrenMap),"depth"in M&&t(3,o=M.depth)},[i,s,n,o,c,r,u,d,m,_,b,z,k,y,F]}class Tt extends Fe{constructor(e){super(),Se(this,e,pn,un,xe,{item:2,expanded:0,childrenMap:1,depth:3})}}function Qe(l,e,t){const n=l.slice();return n[80]=e[t],n}function $e(l,e,t){const n=l.slice();return n[83]=e[t],n}function et(l,e,t){const n=l.slice();return n[94]=e[t],n}function tt(l,e,t){const n=l.slice();return n[91]=e[t],n}function lt(l,e,t){const n=l.slice();return n[86]=e[t],n}function nt(l,e,t){const n=l.slice();return n[83]=e[t],n}function it(l,e,t){const n=l.slice();return n[86]=e[t],n}function st(l,e,t){const n=l.slice();return n[99]=e[t],n}function ot(l,e,t){const n=l.slice();return n[80]=e[t],n}function ft(l,e,t){const n=l.slice();return n[104]=e[t],n}function ct(l,e,t){const n=l.slice();return n[107]=e[t],n}function rt(l){let e,t=l[107].label+"",n,i,s,o,r;function c(){return l[48](l[107])}return{c(){e=p("button"),n=I(t),i=x(),f(e,"class",s="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-1dzzaxf")},m(u,d){v(u,e,d),a(e,n),a(e,i),o||(r=D(e,"click",c),o=!0)},p(u,d){l=u,d[0]&1&&t!==(t=l[107].label+"")&&B(n,t),d[0]&17&&s!==(s="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-1dzzaxf")&&f(e,"class",s)},d(u){u&&h(e),o=!1,r()}}}function at(l){let e,t,n,i,s,o=l[1].length>0&&ut(l),r=Z(l[1]),c=[];for(let d=0;d0?o?o.p(d,m):(o=ut(d),o.c(),o.m(t,null)):o&&(o.d(1),o=null),m[0]&268435490){r=Z(d[1]);let _;for(_=0;_0)return gn;if(r[3])return kn}let s=i(l),o=s&&s(l);return{c(){e=p("div"),t=p("h2"),t.textContent="Верстак",n=x(),o&&o.c(),f(t,"class","svelte-1dzzaxf"),f(e,"class","welcome svelte-1dzzaxf")},m(r,c){v(r,e,c),a(e,t),a(e,n),o&&o.m(e,null)},p(r,c){s===(s=i(r))&&o?o.p(r,c):(o&&o.d(1),o=s&&s(r),o&&(o.c(),o.m(e,null)))},i:T,o:T,d(r){r&&h(e),o&&o.d()}}}function bn(l){let e,t,n,i,s,o,r=Z(l[26]),c=[];for(let _=0;_{d[z]=null}),ve()),~i?(s=d[i],s?s.p(_,b):(s=d[i]=u[i](_),s.c()),Q(s,1),s.m(n,null)):s=null)},i(_){o||(Q(s),o=!0)},o(_){ee(s),o=!1},d(_){_&&(h(e),h(t),h(n)),fe(c,_),~i&&d[i].d()}}}function zn(l){let e,t,n,i=l[8].title+"",s,o,r,c,u,d,m,_,b,z,k,y=l[8].dirty&&St();return{c(){e=p("div"),t=p("div"),n=p("span"),s=I(i),o=x(),y&&y.c(),r=x(),c=p("div"),u=p("button"),u.textContent="Сохранить",d=x(),m=p("button"),m.textContent="Закрыть",_=x(),b=p("textarea"),f(n,"class","note-title svelte-1dzzaxf"),f(u,"class","btn btn-primary svelte-1dzzaxf"),f(m,"class","btn svelte-1dzzaxf"),f(c,"class","note-editor-actions svelte-1dzzaxf"),f(t,"class","note-editor-header svelte-1dzzaxf"),f(b,"class","note-textarea svelte-1dzzaxf"),f(b,"placeholder","Начните писать..."),f(e,"class","note-editor svelte-1dzzaxf")},m(F,M){v(F,e,M),a(e,t),a(t,n),a(n,s),a(t,o),y&&y.m(t,null),a(t,r),a(t,c),a(c,u),a(c,d),a(c,m),a(e,_),a(e,b),oe(b,l[8].content),z||(k=[D(u,"click",l[39]),D(m,"click",l[37]),D(b,"input",l[51]),D(b,"input",l[38])],z=!0)},p(F,M){M[0]&256&&i!==(i=F[8].title+"")&&B(s,i),F[8].dirty?y||(y=St(),y.c(),y.m(t,r)):y&&(y.d(1),y=null),M[0]&256&&oe(b,F[8].content)},i:T,o:T,d(F){F&&h(e),y&&y.d(),z=!1,se(k)}}}function kn(l){let e,t,n;return{c(){e=p("p"),t=I("Ошибка: "),n=I(l[3]),f(e,"class","error-text svelte-1dzzaxf")},m(i,s){v(i,e,s),a(e,t),a(e,n)},p(i,s){s[0]&8&&B(n,i[3])},d(i){i&&h(e)}}}function gn(l){let e,t,n;return{c(){e=p("p"),e.textContent="Выберите раздел в боковой панели.",t=x(),n=p("p"),n.textContent="Или создайте новое дело кнопкой «+».",f(e,"class","svelte-1dzzaxf"),f(n,"class","hint svelte-1dzzaxf")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},p:T,d(i){i&&(h(e),h(t),h(n))}}}function yn(l){let e;return{c(){e=p("p"),e.textContent="Загрузка...",f(e,"class","svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:T,d(t){t&&h(e)}}}function ht(l){let e,t=l[99].label+"",n,i,s;function o(){return l[52](l[99])}return{c(){e=p("button"),n=I(t),f(e,"class",gl(l[47](l[99].id))+" svelte-1dzzaxf")},m(r,c){v(r,e,c),a(e,n),i||(s=D(e,"click",o),i=!0)},p(r,c){l=r},d(r){r&&h(e),i=!1,s()}}}function wn(l){let e;return{c(){e=p("div"),e.innerHTML='Активность появится позже
',f(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:T,i:T,o:T,d(t){t&&h(e)}}}function Cn(l){let e,t,n,i,s,o,r,c,u,d,m,_;function b(y,F){return y[10].length===0?In:Nn}let z=b(l),k=z(l);return{c(){e=p("div"),t=p("div"),n=p("input"),i=x(),s=p("input"),o=x(),r=p("button"),c=I("Записать"),d=x(),k.c(),f(n,"type","text"),f(n,"placeholder","Что сделано"),f(n,"class","svelte-1dzzaxf"),f(s,"type","number"),f(s,"placeholder","Мин"),f(s,"min","1"),f(s,"class","svelte-1dzzaxf"),f(r,"class","btn btn-primary svelte-1dzzaxf"),r.disabled=u=!l[12].trim()||!l[11],f(t,"class","worklog-form svelte-1dzzaxf"),f(e,"class","worklog-tab svelte-1dzzaxf")},m(y,F){v(y,e,F),a(e,t),a(t,n),oe(n,l[12]),a(t,i),a(t,s),oe(s,l[11]),a(t,o),a(t,r),a(r,c),a(e,d),k.m(e,null),m||(_=[D(n,"input",l[66]),D(s,"input",l[67]),D(r,"click",l[40])],m=!0)},p(y,F){F[0]&4096&&n.value!==y[12]&&oe(n,y[12]),F[0]&2048&&Dt(s.value)!==y[11]&&oe(s,y[11]),F[0]&6144&&u!==(u=!y[12].trim()||!y[11])&&(r.disabled=u),z===(z=b(y))&&k?k.p(y,F):(k.d(1),k=z(y),k&&(k.c(),k.m(e,null)))},i:T,o:T,d(y){y&&h(e),k.d(),m=!1,se(_)}}}function Mn(l){let e;function t(s,o){return s[9].length===0?Ln:En}let n=t(l),i=n(l);return{c(){i.c(),e=ue()},m(s,o){i.m(s,o),v(s,e,o)},p(s,o){n===(n=t(s))&&i?i.p(s,o):(i.d(1),i=n(s),i&&(i.c(),i.m(e.parentNode,e)))},i:T,o:T,d(s){s&&h(e),i.d(s)}}}function xn(l){let e,t,n,i,s,o,r,c,u,d,m,_,b,z;const k=[jn,On,An],y=[];function F(L,A){return L[25]?0:L[22].length===0?1:2}u=F(l),d=y[u]=k[u](l);let M=l[19]&&!l[21]&&kt();return{c(){e=p("div"),t=p("div"),n=p("button"),i=I("+ Добавить файл"),s=x(),o=p("button"),r=I("+ Добавить папку"),c=x(),d.c(),m=x(),M&&M.c(),f(n,"class","btn btn-primary svelte-1dzzaxf"),n.disabled=l[19],f(o,"class","btn svelte-1dzzaxf"),o.disabled=l[19],f(t,"class","tab-toolbar svelte-1dzzaxf"),f(e,"class","files-tab svelte-1dzzaxf")},m(L,A){v(L,e,A),a(e,t),a(t,n),a(n,i),a(t,s),a(t,o),a(o,r),a(e,c),y[u].m(e,null),a(e,m),M&&M.m(e,null),_=!0,b||(z=[D(n,"click",l[41]),D(o,"click",l[42])],b=!0)},p(L,A){(!_||A[0]&524288)&&(n.disabled=L[19]),(!_||A[0]&524288)&&(o.disabled=L[19]);let O=u;u=F(L),u===O?y[u].p(L,A):(he(),ee(y[O],1,1,()=>{y[O]=null}),ve(),d=y[u],d?d.p(L,A):(d=y[u]=k[u](L),d.c()),Q(d,1),d.m(e,m)),L[19]&&!L[21]?M||(M=kt(),M.c(),M.m(e,null)):M&&(M.d(1),M=null)},i(L){_||(Q(d),_=!0)},o(L){ee(d),_=!1},d(L){L&&h(e),y[u].d(),M&&M.d(),b=!1,se(z)}}}function Sn(l){let e,t,n,i,s,o,r,c=l[16]&>(l);function u(_,b){return _[7].length===0&&!_[16]?Dn:Pn}let d=u(l),m=d(l);return{c(){e=p("div"),t=p("div"),n=p("button"),n.textContent="+ Добавить заметку",i=x(),c&&c.c(),s=x(),m.c(),f(n,"class","btn btn-primary svelte-1dzzaxf"),f(t,"class","tab-toolbar svelte-1dzzaxf"),f(e,"class","notes-tab svelte-1dzzaxf")},m(_,b){v(_,e,b),a(e,t),a(t,n),a(e,i),c&&c.m(e,null),a(e,s),m.m(e,null),o||(r=D(n,"click",l[33]),o=!0)},p(_,b){_[16]?c?c.p(_,b):(c=gt(_),c.c(),c.m(e,s)):c&&(c.d(1),c=null),d===(d=u(_))&&m?m.p(_,b):(m.d(1),m=d(_),m&&(m.c(),m.m(e,null)))},i:T,o:T,d(_){_&&h(e),c&&c.d(),m.d(),o=!1,r()}}}function Fn(l){let e,t,n=l[5].title+"",i,s,o,r,c,u,d=l[5].type+"",m,_,b,z,k,y=(l[5].section||"—")+"",F,M,L,A,O,H=re(l[5].createdAt)+"",S,N,g,P,q,R,te,U,X,K,le,$,ne,J,W=l[7].length>0&&wt(l),j=l[10].length>0&&Mt(l);return{c(){e=p("div"),t=p("h2"),i=I(n),s=x(),o=p("div"),r=p("div"),c=p("span"),c.textContent="Тип",u=p("span"),m=I(d),_=x(),b=p("div"),z=p("span"),z.textContent="Раздел",k=p("span"),F=I(y),M=x(),L=p("div"),A=p("span"),A.textContent="Создано",O=p("span"),S=I(H),N=x(),g=p("div"),P=p("button"),P.textContent="✏️ Новая заметка",q=x(),R=p("button"),R.textContent="📎 Добавить файл",te=x(),U=p("button"),U.textContent="⚡ Добавить действие",X=x(),K=p("button"),K.textContent="🕐 Записать время",le=x(),W&&W.c(),$=x(),j&&j.c(),f(t,"class","svelte-1dzzaxf"),f(c,"class","meta-label svelte-1dzzaxf"),f(u,"class","svelte-1dzzaxf"),f(r,"class","meta-item svelte-1dzzaxf"),f(z,"class","meta-label svelte-1dzzaxf"),f(k,"class","svelte-1dzzaxf"),f(b,"class","meta-item svelte-1dzzaxf"),f(A,"class","meta-label svelte-1dzzaxf"),f(O,"class","svelte-1dzzaxf"),f(L,"class","meta-item svelte-1dzzaxf"),f(o,"class","meta-grid svelte-1dzzaxf"),f(P,"class","qa-btn svelte-1dzzaxf"),f(R,"class","qa-btn svelte-1dzzaxf"),f(U,"class","qa-btn svelte-1dzzaxf"),U.disabled=!0,f(U,"title","Следующий этап"),f(K,"class","qa-btn svelte-1dzzaxf"),f(g,"class","quick-actions svelte-1dzzaxf"),f(e,"class","overview svelte-1dzzaxf")},m(C,V){v(C,e,V),a(e,t),a(t,i),a(e,s),a(e,o),a(o,r),a(r,c),a(r,u),a(u,m),a(o,_),a(o,b),a(b,z),a(b,k),a(k,F),a(o,M),a(o,L),a(L,A),a(L,O),a(O,S),a(e,N),a(e,g),a(g,P),a(g,q),a(g,R),a(g,te),a(g,U),a(g,X),a(g,K),a(e,le),W&&W.m(e,null),a(e,$),j&&j.m(e,null),ne||(J=[D(P,"click",l[53]),D(R,"click",l[54]),D(K,"click",l[55])],ne=!0)},p(C,V){V[0]&32&&n!==(n=C[5].title+"")&&B(i,n),V[0]&32&&d!==(d=C[5].type+"")&&B(m,d),V[0]&32&&y!==(y=(C[5].section||"—")+"")&&B(F,y),V[0]&32&&H!==(H=re(C[5].createdAt)+"")&&B(S,H),C[7].length>0?W?W.p(C,V):(W=wt(C),W.c(),W.m(e,$)):W&&(W.d(1),W=null),C[10].length>0?j?j.p(C,V):(j=Mt(C),j.c(),j.m(e,null)):j&&(j.d(1),j=null)},i:T,o:T,d(C){C&&h(e),W&&W.d(),j&&j.d(),ne=!1,se(J)}}}function Nn(l){let e,t=Z(l[10]),n=[];for(let i=0;iЗаписей работы пока нет',f(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:T,d(t){t&&h(e)}}}function vt(l){let e,t,n=l[83].summary+"",i,s,o,r=l[83].minutes+"",c,u,d=re(l[83].createdAt)+"",m,_;return{c(){e=p("div"),t=p("div"),i=I(n),s=x(),o=p("div"),c=I(r),u=I(" мин · "),m=I(d),_=x(),f(t,"class","svelte-1dzzaxf"),f(o,"class","wl-meta svelte-1dzzaxf"),f(e,"class","worklog-entry svelte-1dzzaxf")},m(b,z){v(b,e,z),a(e,t),a(t,i),a(e,s),a(e,o),a(o,c),a(o,u),a(o,m),a(e,_)},p(b,z){z[0]&1024&&n!==(n=b[83].summary+"")&&B(i,n),z[0]&1024&&r!==(r=b[83].minutes+"")&&B(c,r),z[0]&1024&&d!==(d=re(b[83].createdAt)+"")&&B(m,d)},d(b){b&&h(e)}}}function En(l){let e,t=Z(l[9]),n=[];for(let i=0;iДействий пока нет',f(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:T,d(t){t&&h(e)}}}function bt(l){let e,t,n=l[94].title+"",i,s,o=l[94].type+"",r,c,u,d,m,_;function b(){return l[65](l[94])}return{c(){e=p("div"),t=p("span"),i=I(n),s=p("span"),r=I(o),c=x(),u=p("button"),u.textContent="Запустить",d=x(),f(t,"class","svelte-1dzzaxf"),f(s,"class","action-type svelte-1dzzaxf"),f(u,"class","btn btn-sm svelte-1dzzaxf"),f(e,"class","action-card svelte-1dzzaxf")},m(z,k){v(z,e,k),a(e,t),a(t,i),a(e,s),a(s,r),a(e,c),a(e,u),a(e,d),m||(_=D(u,"click",b),m=!0)},p(z,k){l=z,k[0]&512&&n!==(n=l[94].title+"")&&B(i,n),k[0]&512&&o!==(o=l[94].type+"")&&B(r,o)},d(z){z&&h(e),m=!1,_()}}}function An(l){let e,t=[],n=new Map,i,s=Z(l[22]);const o=r=>r[91].id;for(let r=0;r ',n=x(),i=p("p"),i.textContent="В этом проекте пока нет файлов",s=x(),o=p("p"),o.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",r=x(),c=p("div"),u=p("button"),u.textContent="Добавить файл",d=x(),m=p("button"),m.textContent="Добавить папку",f(t,"class","empty-icon svelte-1dzzaxf"),f(i,"class","svelte-1dzzaxf"),f(o,"class","hint svelte-1dzzaxf"),f(u,"class","btn btn-primary svelte-1dzzaxf"),f(m,"class","btn svelte-1dzzaxf"),f(c,"class","empty-actions svelte-1dzzaxf"),f(e,"class","empty-state svelte-1dzzaxf")},m(z,k){v(z,e,k),a(e,t),a(e,n),a(e,i),a(e,s),a(e,o),a(e,r),a(e,c),a(c,u),a(c,d),a(c,m),_||(b=[D(u,"click",l[41]),D(m,"click",l[42])],_=!0)},p:T,i:T,o:T,d(z){z&&h(e),_=!1,se(b)}}}function jn(l){let e;return{c(){e=p("div"),e.innerHTML='Загрузка...
',f(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:T,i:T,o:T,d(t){t&&h(e)}}}function zt(l,e){let t,n,i,s,o;function r(d){e[60](d)}function c(d){e[61](d)}let u={item:e[91]};return e[23]!==void 0&&(u.expanded=e[23]),e[24]!==void 0&&(u.childrenMap=e[24]),n=new Tt({props:u}),we.push(()=>Ge(n,"expanded",r)),we.push(()=>Ge(n,"childrenMap",c)),n.$on("delete",e[62]),n.$on("open",e[63]),n.$on("openFolder",e[64]),{key:l,first:null,c(){t=ue(),Me(n.$$.fragment),this.first=t},m(d,m){v(d,t,m),ke(n,d,m),o=!0},p(d,m){e=d;const _={};m[0]&4194304&&(_.item=e[91]),!i&&m[0]&8388608&&(i=!0,_.expanded=e[23],Re(()=>i=!1)),!s&&m[0]&16777216&&(s=!0,_.childrenMap=e[24],Re(()=>s=!1)),n.$set(_)},i(d){o||(Q(n.$$.fragment,d),o=!0)},o(d){ee(n.$$.fragment,d),o=!1},d(d){d&&h(t),ge(n,d)}}}function kt(l){let e;return{c(){e=p("div"),e.innerHTML='Сканирование...
',f(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},d(t){t&&h(e)}}}function gt(l){let e,t,n,i,s,o,r,c,u;return{c(){e=p("div"),t=p("input"),n=x(),i=p("div"),s=p("button"),s.textContent="Создать",o=x(),r=p("button"),r.textContent="Отмена",f(t,"type","text"),f(t,"placeholder","Название заметки"),f(t,"class","svelte-1dzzaxf"),f(s,"class","btn btn-primary svelte-1dzzaxf"),f(r,"class","btn svelte-1dzzaxf"),f(i,"class","form-actions svelte-1dzzaxf"),f(e,"class","create-form svelte-1dzzaxf")},m(d,m){v(d,e,m),a(e,t),oe(t,l[17]),a(e,n),a(e,i),a(i,s),a(i,o),a(i,r),c||(u=[D(t,"input",l[57]),D(t,"keydown",l[58]),D(s,"click",l[35]),D(r,"click",l[34])],c=!0)},p(d,m){m[0]&131072&&t.value!==d[17]&&oe(t,d[17])},d(d){d&&h(e),c=!1,se(u)}}}function Pn(l){let e,t=Z(l[7]),n=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',f(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:T,d(t){t&&h(e)}}}function yt(l){let e,t,n=l[86].title+"",i,s,o,r=re(l[86].createdAt)+"",c,u,d,m;function _(){return l[59](l[86])}return{c(){e=p("div"),t=p("div"),i=I(n),s=x(),o=p("div"),c=I(r),u=x(),f(t,"class","note-card-title svelte-1dzzaxf"),f(o,"class","note-card-date svelte-1dzzaxf"),f(e,"class","note-card svelte-1dzzaxf")},m(b,z){v(b,e,z),a(e,t),a(t,i),a(e,s),a(e,o),a(o,c),a(e,u),d||(m=D(e,"click",_),d=!0)},p(b,z){l=b,z[0]&128&&n!==(n=l[86].title+"")&&B(i,n),z[0]&128&&r!==(r=re(l[86].createdAt)+"")&&B(c,r)},d(b){b&&h(e),d=!1,m()}}}function wt(l){let e,t,n,i=Z(l[7].slice(0,5)),s=[];for(let o=0;ol[70].call(b)),f(d,"class","form-group svelte-1dzzaxf"),f(y,"class","btn btn-primary svelte-1dzzaxf"),f(M,"class","btn svelte-1dzzaxf"),f(k,"class","modal-actions svelte-1dzzaxf"),f(t,"class","modal svelte-1dzzaxf"),f(e,"class","modal-overlay svelte-1dzzaxf")},m(S,N){v(S,e,N),a(e,t),a(t,n),a(t,i),a(t,s),a(s,o),a(s,r),a(s,c),oe(c,l[14]),a(t,u),a(t,d),a(d,m),a(d,_),a(d,b);for(let g=0;g⚒ Верстак ',i=x(),s=p("nav"),o=p("div"),r=p("div"),r.textContent="Разделы",c=x();for(let C=0;C{$[ce]=null}),ve(),O=$[A],O?O.p(C,V):(O=$[A]=le[A](C),O.c()),Q(O,1),O.m(k,H)),!C[8]&&!C[5]?J?J.p(C,V):(J=Ft(C),J.c(),J.m(k,S)):J&&(J.d(1),J=null),C[13]?W?W.p(C,V):(W=Nt(C),W.c(),W.m(k,N)):W&&(W.d(1),W=null),C[21]&&C[20]?j?j.p(C,V):(j=Et(C),j.c(),j.m(k,null)):j&&(j.d(1),j=null)},i(C){g||(Q(O),g=!0)},o(C){ee(O),g=!1},d(C){C&&h(e),fe(q,C),R&&R.d(),X.d(),K&&K.d(),$[A].d(),J&&J.d(),W&&W.d(),j&&j.d()}}}function Y(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function re(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}const At=l=>l.id!=="today"&&l.id!=="inbox";function Bn(l,e,t){let n=[],i=[],s="",o="",r="",c=null,u="overview",d=[],m=null,_=[],b=[],z=[],k="",y="",F=!1,M="",L="clients",A=!1,O="",H=!0,S=!1,N=null,g=!1,P="",q=[],R={},te={},U=!1;const X=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let K=null;xl(async()=>{try{t(2,s=await Y("VerstakVersion")||"verstak-gui/v2"),t(0,n=await Y("ListSections")||[])}catch(w){t(3,o=String(w)),t(0,n=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Jt),K=()=>window.runtime.EventsOff("files-dropped")),t(18,H=!1)}),Sl(()=>{K&&K()});async function le(w){t(4,r=w),t(5,c=null),t(6,u="overview"),t(7,d=[]),_=[],t(9,b=[]),t(10,z=[]),t(13,F=!1),t(3,o="");try{t(1,i=await Y("ListNodesBySection",w)||[])}catch(G){t(3,o=String(G)),t(1,i=[])}}async function $(w){t(5,c=w),t(6,u="overview"),t(7,d=[]),_=[],t(9,b=[]),t(10,z=[]),t(22,q=[]),t(23,R={}),t(24,te={}),t(8,m=null),t(13,F=!1),t(16,A=!1),t(3,o=""),await ne(w.id)}async function ne(w){try{t(7,d=await Y("ListNotes",w)||[])}catch{}try{_=await Y("ListFiles",w)||[]}catch{}try{t(9,b=await Y("ListActions",w)||[])}catch{}try{t(10,z=await Y("ListWorklog",w)||[])}catch{}}async function J(w){t(25,U=!0);try{t(22,q=await Y("ListItems",w)||[])}catch{t(22,q=[])}t(25,U=!1)}function W(){t(13,F=!0),t(14,M=""),t(15,L=r||"clients")}function j(){t(13,F=!1),t(14,M="")}async function C(){if(M.trim())try{const w=await Y("CreateNode","","case",M.trim(),L);t(13,F=!1),t(14,M=""),await le(L)}catch(w){t(3,o=String(w))}}function V(){t(16,A=!0),t(17,O="")}function ce(){t(16,A=!1),t(17,O="")}async function ie(){if(!(!O.trim()||!c))try{const w=await Y("CreateNote",c.id,O.trim());t(7,d=[...d,w&&w.id?w:{id:Date.now().toString(),title:O.trim(),createdAt:new Date().toISOString()}]),t(16,A=!1),t(17,O="")}catch{const G={id:Date.now().toString(),title:O.trim(),createdAt:new Date().toISOString()};t(7,d=[...d,G]),t(16,A=!1),t(17,O="")}}async function de(w){if(!(m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const G=await Y("ReadNote",w.id);t(8,m={id:w.id,title:w.title,content:G||"",dirty:!1})}catch{t(8,m={id:w.id,title:w.title,content:"# "+w.title+`
-
-`,dirty:!1})}}function Vt(){m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,m=null)}function Wt(w){m&&(t(8,m.content=w.target.value,m),t(8,m.dirty=!0,m))}async function qt(){if(m)try{await Y("SaveNote",m.id,m.content),t(8,m.dirty=!1,m)}catch{t(8,m.dirty=!1,m)}}async function Rt(){const w=parseInt(k,10);if(!(!y.trim()||isNaN(w)||w<=0||!c)){try{const G=await Y("CreateWorklog",c.id,y.trim(),w);t(10,z=[...z,G&&G.id?G:{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:w,createdAt:new Date().toISOString()}])}catch{t(10,z=[...z,{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:w,createdAt:new Date().toISOString()}])}t(12,y=""),t(11,k="")}}async function He(){const w=await Y("PickFile");w&&await Ne(c.id,w)}async function Gt(){const w=await Y("PickDirectory");w&&await Ne(c.id,w)}async function Ne(w,G){t(19,S=!0);try{const Ee=await Y("PreviewImport",G);t(20,N=Ee),P=G,t(21,g=!0)}catch(Ee){t(3,o=String(Ee))}t(19,S=!1)}async function Ie(w){try{const G=w==="copy"?await Y("AddPathCopy",c.id,P):await Y("AddPathLink",c.id,P);t(21,g=!1),t(20,N=null),t(23,R={}),t(24,te={}),await Promise.all([ne(c.id),J(c.id)])}catch(G){t(3,o=String(G))}}function Kt(){t(21,g=!1),t(20,N=null)}async function Be(w){if(confirm("Удалить файл?"))try{await Y("DeleteFileOrFolder",w),_=_.filter(G=>G.nodeId!==w),t(23,R={}),t(24,te={}),await J(c.id)}catch(G){t(3,o=String(G))}}async function Te(w){try{await Y("OpenFile",w)}catch(G){t(3,o=String(G))}}async function Jt(w){if(!w||w.length===0)return;if(!c){t(3,o="Сначала выберите дело для добавления файлов");return}const G=w[0];await Ne(c.id,G)}function Ut(w){return u===w?"tab active":"tab"}const Zt=w=>le(w.id),Xt=w=>$(w),Yt=()=>t(3,o="");function Qt(){m.content=this.value,t(8,m)}const $t=w=>{t(6,u=w.id),w.id==="files"&&c&&q.length===0&&J(c.id)},el=()=>{t(6,u="notes"),V()},tl=()=>{t(6,u="files"),He()},ll=()=>t(6,u="worklog"),nl=w=>de(w);function il(){O=this.value,t(17,O)}const sl=w=>w.key==="Enter"&&ie(),ol=w=>de(w);function fl(w){R=w,t(23,R)}function cl(w){te=w,t(24,te)}const rl=w=>Be(w.detail),al=w=>Te(w.detail),ul=w=>console.log("open folder",w.detail),dl=w=>Y("RunAction",w.id);function pl(){y=this.value,t(12,y)}function _l(){k=Dt(this.value),t(11,k)}function ml(){M=this.value,t(14,M)}const hl=w=>w.key==="Enter"&&C();function vl(){L=wl(this),t(15,L),t(0,n)}return[n,i,s,o,r,c,u,d,m,b,z,k,y,F,M,L,A,O,H,S,N,g,q,R,te,U,X,le,$,J,W,j,C,V,ce,ie,de,Vt,Wt,qt,Rt,He,Gt,Ie,Kt,Be,Te,Ut,Zt,Xt,Yt,Qt,$t,el,tl,ll,nl,il,sl,ol,fl,cl,rl,al,ul,dl,pl,_l,ml,hl,vl,()=>Ie("copy"),()=>Ie("link")]}class Tn extends Fe{constructor(e){super(),Se(this,e,Bn,Hn,xe,{},null,[-1,-1,-1,-1])}}new Tn({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-Bo58X7Pc.css b/cmd/verstak-gui/frontend-dist/assets/main-Bo58X7Pc.css
deleted file mode 100644
index 1f5ca39..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-Bo58X7Pc.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-row.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none;position:relative}.file-row.svelte-1u905d2.svelte-1u905d2:hover{background:#1e1e30}.file-row--selected.svelte-1u905d2.svelte-1u905d2{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-1u905d2.svelte-1u905d2:hover{background:#252545}.file-row.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-1u905d2.svelte-1u905d2{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-1u905d2.svelte-1u905d2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1u905d2.svelte-1u905d2{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1u905d2.svelte-1u905d2{color:#444}.file-row-actions.svelte-1u905d2.svelte-1u905d2{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-1u905d2:hover .file-row-actions.svelte-1u905d2{opacity:1}.action-btn.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-1u905d2.svelte-1u905d2{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-1u905d2.svelte-1u905d2{position:absolute;right:12px;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:4px;z-index:100;min-width:220px;box-shadow:0 4px 16px #00000080}.menu-item.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#fff}.menu-item-danger.svelte-1u905d2.svelte-1u905d2{color:#ff6b6b}.menu-item-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222}.menu-item.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-sep.svelte-1u905d2.svelte-1u905d2{height:1px;background:#2a2a3c;margin:4px 8px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1cw3u0m{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1cw3u0m{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1cw3u0m{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1cw3u0m{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1cw3u0m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1cw3u0m{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1cw3u0m{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1cw3u0m:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1cw3u0m:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.action-btn-close.svelte-1cw3u0m{color:#ff6b6b}.action-btn-close.svelte-1cw3u0m:hover{background:#3a2222;color:#f44}.preview-body.svelte-1cw3u0m{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1cw3u0m{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1cw3u0m{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1cw3u0m{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1cw3u0m{width:100%;height:100%}.preview-pdf.svelte-1cw3u0m{width:100%;height:100%;border:none}.btn-sm.svelte-1cw3u0m{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1cw3u0m:hover{background:#223}.overlay.svelte-1fv6yyk{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.modal.svelte-1fv6yyk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:360px;max-width:90vw}h3.svelte-1fv6yyk{font-size:18px;margin-bottom:12px;color:#e4e4ef}.message.svelte-1fv6yyk{font-size:14px;color:#aaa;margin-bottom:20px;line-height:1.4}.actions.svelte-1fv6yyk{display:flex;gap:8px;justify-content:flex-end}.btn.svelte-1fv6yyk{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1fv6yyk:hover{background:#223}.btn-primary.svelte-1fv6yyk{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1fv6yyk:hover{background:#4f46e5}.btn-danger.svelte-1fv6yyk{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger.svelte-1fv6yyk:hover{background:#b91c1c}.btn.svelte-1fv6yyk:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.svelte-i359q7.svelte-i359q7,.svelte-i359q7.svelte-i359q7:before,.svelte-i359q7.svelte-i359q7:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-i359q7.svelte-i359q7{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-i359q7.svelte-i359q7{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-i359q7.svelte-i359q7{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-i359q7.svelte-i359q7{font-size:20px;line-height:1}.brand-name.svelte-i359q7.svelte-i359q7{font-size:16px;font-weight:600}.sidebar-nav.svelte-i359q7.svelte-i359q7{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-i359q7.svelte-i359q7{margin-bottom:16px}.nav-label.svelte-i359q7.svelte-i359q7{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-i359q7.svelte-i359q7{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-i359q7.svelte-i359q7:hover{background:#223}.nav-item.selected.svelte-i359q7.svelte-i359q7{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-i359q7.svelte-i359q7{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-i359q7.svelte-i359q7{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-i359q7.svelte-i359q7{font-size:11px;color:#555}.main.svelte-i359q7.svelte-i359q7{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-i359q7.svelte-i359q7{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-i359q7.svelte-i359q7{font-size:14px;font-weight:500}.crumb.placeholder.svelte-i359q7.svelte-i359q7{color:#666}.crumb-type.svelte-i359q7.svelte-i359q7{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-i359q7.svelte-i359q7{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.dismiss-btn.svelte-i359q7.svelte-i359q7{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-i359q7.svelte-i359q7:hover{color:#f44}.tabs.svelte-i359q7.svelte-i359q7{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-i359q7.svelte-i359q7{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-i359q7.svelte-i359q7:hover{color:#ccc}.tab.active.svelte-i359q7.svelte-i359q7{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-i359q7.svelte-i359q7{flex:1;overflow-y:auto}.note-editor.svelte-i359q7.svelte-i359q7{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-i359q7.svelte-i359q7{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-i359q7.svelte-i359q7{font-size:16px;font-weight:500}.dirty-mark.svelte-i359q7.svelte-i359q7{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-i359q7.svelte-i359q7{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-i359q7.svelte-i359q7{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-i359q7.svelte-i359q7{padding:24px}.overview.svelte-i359q7 h2.svelte-i359q7{font-size:24px;margin-bottom:16px}.meta-grid.svelte-i359q7.svelte-i359q7{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-i359q7.svelte-i359q7{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-i359q7.svelte-i359q7{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-i359q7.svelte-i359q7{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-i359q7.svelte-i359q7{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.qa-btn.svelte-i359q7.svelte-i359q7:hover{background:#223}.qa-btn.svelte-i359q7.svelte-i359q7:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-i359q7.svelte-i359q7{margin-bottom:24px}.recent-section.svelte-i359q7 h3.svelte-i359q7{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-i359q7.svelte-i359q7{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-i359q7.svelte-i359q7:hover{background:#1a1a28}.recent-date.svelte-i359q7.svelte-i359q7{font-size:11px;color:#555}.recent-entry.svelte-i359q7.svelte-i359q7{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-i359q7.svelte-i359q7{padding:24px}.tab-toolbar.svelte-i359q7.svelte-i359q7{margin-bottom:16px}.create-form.svelte-i359q7.svelte-i359q7{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-i359q7 input.svelte-i359q7{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-i359q7 input.svelte-i359q7:focus{outline:none;border-color:#6366f1}.form-actions.svelte-i359q7.svelte-i359q7{display:flex;gap:8px}.notes-list.svelte-i359q7.svelte-i359q7{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-i359q7.svelte-i359q7{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-i359q7.svelte-i359q7:hover{border-color:#3a3a5c}.note-card-title.svelte-i359q7.svelte-i359q7{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-i359q7.svelte-i359q7{font-size:11px;color:#555}.worklog-tab.svelte-i359q7.svelte-i359q7{padding:24px}.worklog-form.svelte-i359q7.svelte-i359q7{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-i359q7 input.svelte-i359q7{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-i359q7 input.svelte-i359q7:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-i359q7 input[type=text].svelte-i359q7{flex:1}.worklog-form.svelte-i359q7 input[type=number].svelte-i359q7{width:70px}.worklog-entry.svelte-i359q7.svelte-i359q7{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-i359q7.svelte-i359q7{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-i359q7.svelte-i359q7{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-i359q7.svelte-i359q7{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-i359q7.svelte-i359q7{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-i359q7 p.svelte-i359q7{margin:0;font-size:14px;color:#666}.empty-state.svelte-i359q7 .empty-icon.svelte-i359q7{margin-bottom:12px;color:#444}.empty-state.svelte-i359q7 .hint.svelte-i359q7{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-i359q7 .empty-actions.svelte-i359q7{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-i359q7.svelte-i359q7{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-i359q7.svelte-i359q7{padding:48px 24px;text-align:center}.welcome.svelte-i359q7 h2.svelte-i359q7{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-i359q7 p.svelte-i359q7{color:#666;font-size:14px}.error-text.svelte-i359q7.svelte-i359q7{color:#f88}.fab.svelte-i359q7.svelte-i359q7{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-i359q7.svelte-i359q7:hover{background:#4f46e5}.modal-overlay.svelte-i359q7.svelte-i359q7{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-i359q7.svelte-i359q7{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-i359q7 h3.svelte-i359q7{font-size:18px;margin-bottom:16px}.form-group.svelte-i359q7.svelte-i359q7{margin-bottom:12px}.form-group.svelte-i359q7 label.svelte-i359q7{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-i359q7 input.svelte-i359q7,.form-group.svelte-i359q7 select.svelte-i359q7{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-i359q7 select.svelte-i359q7{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-i359q7 input.svelte-i359q7:focus,.form-group.svelte-i359q7 select.svelte-i359q7:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-i359q7.svelte-i359q7{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-i359q7.svelte-i359q7{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-i359q7.svelte-i359q7:hover{background:#223}.btn-primary.svelte-i359q7.svelte-i359q7{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-i359q7.svelte-i359q7:hover{background:#4f46e5}.btn.svelte-i359q7.svelte-i359q7:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-i359q7.svelte-i359q7{padding:4px 10px;font-size:12px}.btn-danger.svelte-i359q7.svelte-i359q7{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-i359q7.svelte-i359q7:hover{background:#3a2222}.files-tab.svelte-i359q7.svelte-i359q7{padding:20px}.files-tab.svelte-i359q7 .tab-toolbar.svelte-i359q7{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-i359q7.svelte-i359q7{display:flex;flex-direction:column}.back-btn.svelte-i359q7.svelte-i359q7{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-i359q7.svelte-i359q7{margin-bottom:16px}.summary-row.svelte-i359q7.svelte-i359q7{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-i359q7.svelte-i359q7{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}.rename-error.svelte-i359q7.svelte-i359q7{color:#ff6b6b;font-size:12px;margin-top:4px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-CFGnr13n.css b/cmd/verstak-gui/frontend-dist/assets/main-CFGnr13n.css
deleted file mode 100644
index 6437856..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-CFGnr13n.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-row.svelte-18mry1k.svelte-18mry1k{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none}.file-row.svelte-18mry1k.svelte-18mry1k:hover{background:#1e1e30}.file-row--selected.svelte-18mry1k.svelte-18mry1k{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-18mry1k.svelte-18mry1k:hover{background:#252545}.file-row.svelte-18mry1k.svelte-18mry1k:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-18mry1k.svelte-18mry1k{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-18mry1k.svelte-18mry1k{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-18mry1k.svelte-18mry1k{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-18mry1k.svelte-18mry1k{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-18mry1k.svelte-18mry1k{color:#444}.file-row-actions.svelte-18mry1k.svelte-18mry1k{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-18mry1k:hover .file-row-actions.svelte-18mry1k{opacity:1}.action-btn.svelte-18mry1k.svelte-18mry1k{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-18mry1k.svelte-18mry1k:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-18mry1k.svelte-18mry1k:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-18mry1k.svelte-18mry1k:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-18mry1k.svelte-18mry1k{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-18mry1k.svelte-18mry1k{position:absolute;right:12px;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;padding:4px;z-index:100;min-width:140px;box-shadow:0 4px 12px #0006}.menu-item.svelte-18mry1k.svelte-18mry1k{display:block;width:100%;padding:6px 12px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-18mry1k.svelte-18mry1k:hover{background:#2a2a3c}.menu-item.svelte-18mry1k.svelte-18mry1k:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1ybaoro{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1ybaoro{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1ybaoro{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1ybaoro{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1ybaoro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1ybaoro{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1ybaoro{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1ybaoro{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1ybaoro:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1ybaoro:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.preview-body.svelte-1ybaoro{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1ybaoro{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1ybaoro{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1ybaoro{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1ybaoro{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1ybaoro{width:100%;height:100%}.preview-pdf.svelte-1ybaoro{width:100%;height:100%;border:none}.btn-sm.svelte-1ybaoro{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1ybaoro:hover{background:#223}.svelte-1rwjkun.svelte-1rwjkun,.svelte-1rwjkun.svelte-1rwjkun:before,.svelte-1rwjkun.svelte-1rwjkun:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-1rwjkun.svelte-1rwjkun{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-1rwjkun.svelte-1rwjkun{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-1rwjkun.svelte-1rwjkun{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-1rwjkun.svelte-1rwjkun{font-size:20px;line-height:1}.brand-name.svelte-1rwjkun.svelte-1rwjkun{font-size:16px;font-weight:600}.sidebar-nav.svelte-1rwjkun.svelte-1rwjkun{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.nav-label.svelte-1rwjkun.svelte-1rwjkun{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-1rwjkun.svelte-1rwjkun{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.nav-item.selected.svelte-1rwjkun.svelte-1rwjkun{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-1rwjkun.svelte-1rwjkun{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-1rwjkun.svelte-1rwjkun{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.main.svelte-1rwjkun.svelte-1rwjkun{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-1rwjkun.svelte-1rwjkun{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-1rwjkun.svelte-1rwjkun{font-size:14px;font-weight:500}.crumb.placeholder.svelte-1rwjkun.svelte-1rwjkun{color:#666}.crumb-type.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-1rwjkun.svelte-1rwjkun{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between}.dismiss.svelte-1rwjkun.svelte-1rwjkun{opacity:.6}.tabs.svelte-1rwjkun.svelte-1rwjkun{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-1rwjkun.svelte-1rwjkun{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-1rwjkun.svelte-1rwjkun:hover{color:#ccc}.tab.active.svelte-1rwjkun.svelte-1rwjkun{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-1rwjkun.svelte-1rwjkun{flex:1;overflow-y:auto}.note-editor.svelte-1rwjkun.svelte-1rwjkun{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-1rwjkun.svelte-1rwjkun{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-1rwjkun.svelte-1rwjkun{font-size:16px;font-weight:500}.dirty-mark.svelte-1rwjkun.svelte-1rwjkun{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-1rwjkun.svelte-1rwjkun{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-1rwjkun.svelte-1rwjkun{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.overview.svelte-1rwjkun h2.svelte-1rwjkun{font-size:24px;margin-bottom:16px}.meta-grid.svelte-1rwjkun.svelte-1rwjkun{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-1rwjkun.svelte-1rwjkun{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-1rwjkun.svelte-1rwjkun{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}.qa-btn.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.qa-btn.svelte-1rwjkun.svelte-1rwjkun:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:24px}.recent-section.svelte-1rwjkun h3.svelte-1rwjkun{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-1rwjkun.svelte-1rwjkun{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-1rwjkun.svelte-1rwjkun:hover{background:#1a1a28}.recent-date.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.recent-entry.svelte-1rwjkun.svelte-1rwjkun{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.tab-toolbar.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.create-form.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-1rwjkun input.svelte-1rwjkun{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-1rwjkun input.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.form-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px}.notes-list.svelte-1rwjkun.svelte-1rwjkun{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-1rwjkun.svelte-1rwjkun:hover{border-color:#3a3a5c}.note-card-title.svelte-1rwjkun.svelte-1rwjkun{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.worklog-tab.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.worklog-form.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-1rwjkun input.svelte-1rwjkun{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-1rwjkun input.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-1rwjkun input[type=text].svelte-1rwjkun{flex:1}.worklog-form.svelte-1rwjkun input[type=number].svelte-1rwjkun{width:70px}.worklog-entry.svelte-1rwjkun.svelte-1rwjkun{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-1rwjkun.svelte-1rwjkun{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-1rwjkun p.svelte-1rwjkun{margin:0;font-size:14px;color:#666}.empty-state.svelte-1rwjkun .empty-icon.svelte-1rwjkun{margin-bottom:12px;color:#444}.empty-state.svelte-1rwjkun .hint.svelte-1rwjkun{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-1rwjkun .empty-actions.svelte-1rwjkun{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-1rwjkun.svelte-1rwjkun{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-1rwjkun.svelte-1rwjkun{padding:48px 24px;text-align:center}.welcome.svelte-1rwjkun h2.svelte-1rwjkun{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-1rwjkun p.svelte-1rwjkun{color:#666;font-size:14px}.error-text.svelte-1rwjkun.svelte-1rwjkun{color:#f88}.fab.svelte-1rwjkun.svelte-1rwjkun{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-1rwjkun.svelte-1rwjkun:hover{background:#4f46e5}.modal-overlay.svelte-1rwjkun.svelte-1rwjkun{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-1rwjkun h3.svelte-1rwjkun{font-size:18px;margin-bottom:16px}.form-group.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:12px}.form-group.svelte-1rwjkun label.svelte-1rwjkun{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-1rwjkun input.svelte-1rwjkun,.form-group.svelte-1rwjkun select.svelte-1rwjkun{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-1rwjkun select.svelte-1rwjkun{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-1rwjkun input.svelte-1rwjkun:focus,.form-group.svelte-1rwjkun select.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-1rwjkun.svelte-1rwjkun{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.btn-primary.svelte-1rwjkun.svelte-1rwjkun{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1rwjkun.svelte-1rwjkun:hover{background:#4f46e5}.btn.svelte-1rwjkun.svelte-1rwjkun:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-1rwjkun.svelte-1rwjkun{padding:4px 10px;font-size:12px}.btn-danger.svelte-1rwjkun.svelte-1rwjkun{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-1rwjkun.svelte-1rwjkun:hover{background:#3a2222}.files-tab.svelte-1rwjkun.svelte-1rwjkun{padding:20px}.files-tab.svelte-1rwjkun .tab-toolbar.svelte-1rwjkun{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-1rwjkun.svelte-1rwjkun{display:flex;flex-direction:column}.back-btn.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:4px}.import-summary.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.summary-row.svelte-1rwjkun.svelte-1rwjkun{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-1rwjkun.svelte-1rwjkun{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-CHeI8Z54.js b/cmd/verstak-gui/frontend-dist/assets/main-CHeI8Z54.js
deleted file mode 100644
index d093452..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-CHeI8Z54.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var Il=Object.defineProperty;var El=(l,e,t)=>e in l?Il(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var Pe=(l,e,t)=>El(l,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function D(){}const Ll=l=>l;function qt(l){return l()}function Ue(){return Object.create(null)}function te(l){l.forEach(qt)}function Re(l){return typeof l=="function"}function Ie(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}function Al(l){return Object.keys(l).length===0}function Ol(l){return l??""}const Wt=typeof window<"u";let jl=Wt?()=>window.performance.now():()=>Date.now(),qe=Wt?l=>requestAnimationFrame(l):D;const ve=new Set;function Gt(l){ve.forEach(e=>{e.c(l)||(ve.delete(e),e.f())}),ve.size!==0&&qe(Gt)}function Pl(l){let e;return ve.size===0&&qe(Gt),{promise:new Promise(t=>{ve.add(e={c:l,f:t})}),abort(){ve.delete(e)}}}function a(l,e){l.appendChild(e)}function Kt(l){if(!l)return document;const e=l.getRootNode?l.getRootNode():l.ownerDocument;return e&&e.host?e:l.ownerDocument}function Dl(l){const e=_("style");return e.textContent="/* empty */",Hl(Kt(l),e),e.sheet}function Hl(l,e){return a(l.head||l,e),e.sheet}function v(l,e,t){l.insertBefore(e,t||null)}function h(l){l.parentNode&&l.parentNode.removeChild(l)}function re(l,e){for(let t=0;tl.removeEventListener(e,t,n)}function Jt(l){return function(e){e.target===this&&l.call(this,e)}}function r(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function Ut(l){return l===""?null:+l}function Bl(l){return Array.from(l.childNodes)}function T(l,e){e=""+e,l.data!==e&&(l.data=e)}function oe(l,e){l.value=e??""}function Ze(l,e,t,n){t==null?l.style.removeProperty(e):l.style.setProperty(e,t,"")}function Xe(l,e,t){for(let n=0;n>>0}function ql(l,e){const t={stylesheet:Dl(e),rules:{}};return xe.set(l,t),t}function Ye(l,e,t,n,i,s,o,c=0){const f=16.666/n;let u=`{
-`;for(let k=0;k<=1;k+=f){const N=e+(t-e)*s(k);u+=k*100+`%{${o(N,1-N)}}
-`}const d=u+`100% {${o(t,1-t)}}
-}`,m=`__svelte_${Rl(d)}_${c}`,p=Kt(l),{stylesheet:b,rules:z}=xe.get(p)||ql(p,l);z[m]||(z[m]=!0,b.insertRule(`@keyframes ${m} ${d}`,b.cssRules.length));const g=l.style.animation||"";return l.style.animation=`${g?`${g}, `:""}${m} ${n}ms linear ${i}ms 1 both`,Ne+=1,m}function Wl(l,e){const t=(l.style.animation||"").split(", "),n=t.filter(e?s=>s.indexOf(e)<0:s=>s.indexOf("__svelte")===-1),i=t.length-n.length;i&&(l.style.animation=n.join(", "),Ne-=i,Ne||Gl())}function Gl(){qe(()=>{Ne||(xe.forEach(l=>{const{ownerNode:e}=l.stylesheet;e&&h(e)}),xe.clear())})}let ye;function ke(l){ye=l}function We(){if(!ye)throw new Error("Function called outside component initialization");return ye}function Kl(l){We().$$.on_mount.push(l)}function Jl(l){We().$$.on_destroy.push(l)}function Xt(){const l=We();return(e,t,{cancelable:n=!1}={})=>{const i=l.$$.callbacks[e];if(i){const s=Zt(e,t,{cancelable:n});return i.slice().forEach(o=>{o.call(l,s)}),!s.defaultPrevented}return!0}}function De(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const he=[],Se=[];let be=[];const Te=[],Ul=Promise.resolve();let Ve=!1;function Zl(){Ve||(Ve=!0,Ul.then(Yt))}function ze(l){be.push(l)}function Qe(l){Te.push(l)}const He=new Set;let me=0;function Yt(){if(me!==0)return;const l=ye;do{try{for(;mel.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),be=e}let ge;function Ql(){return ge||(ge=Promise.resolve(),ge.then(()=>{ge=null})),ge}function Be(l,e,t){l.dispatchEvent(Zt(`${e?"intro":"outro"}${t}`))}const Me=new Set;let ce;function de(){ce={r:0,c:[],p:ce}}function pe(){ce.r||te(ce.c),ce=ce.p}function Q(l,e){l&&l.i&&(Me.delete(l),l.i(e))}function ee(l,e,t,n){if(l&&l.o){if(Me.has(l))return;Me.add(l),ce.c.push(()=>{Me.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}const $l={duration:0};function $e(l,e,t,n){let s=e(l,t,{direction:"both"}),o=n?0:1,c=null,f=null,u=null,d;function m(){u&&Wl(l,u)}function p(z,g){const k=z.b-o;return g*=Math.abs(k),{a:o,b:z.b,d:k,duration:g,start:z.start,end:z.start+g,group:z.group}}function b(z){const{delay:g=0,duration:k=300,easing:N=Ll,tick:C=D,css:L}=s||$l,O={start:jl()+g,b:z};z||(O.group=ce,ce.r+=1),"inert"in l&&(z?d!==void 0&&(l.inert=d):(d=l.inert,l.inert=!0)),c||f?f=O:(L&&(m(),u=Ye(l,o,z,k,g,N,L)),z&&C(0,1),c=p(O,k),ze(()=>Be(l,z,"start")),Pl(A=>{if(f&&A>f.start&&(c=p(f,k),f=null,Be(l,c.b,"start"),L&&(m(),u=Ye(l,o,c.b,c.duration,0,N,s.css))),c){if(A>=c.end)C(o=c.b,1-o),Be(l,c.b,"end"),f||(c.b?m():--c.group.r||te(c.group.c)),c=null;else if(A>=c.start){const H=A-c.start;o=c.a+c.d*N(H/c.duration),C(o,1-o)}}return!!(c||f)}))}return{run(z){Re(s)?Ql().then(()=>{s=s({direction:z?"in":"out"}),b(z)}):b(z)},end(){m(),c=f=null}}}function Z(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function en(l,e){ee(l,1,1,()=>{e.delete(l.key)})}function tn(l,e,t,n,i,s,o,c,f,u,d,m){let p=l.length,b=s.length,z=p;const g={};for(;z--;)g[l[z].key]=z;const k=[],N=new Map,C=new Map,L=[];for(z=b;z--;){const S=m(i,s,z),F=t(S);let y=o.get(F);y?L.push(()=>y.p(S,e)):(y=u(F,S),y.c()),N.set(F,k[z]=y),F in g&&C.set(F,Math.abs(z-g[F]))}const O=new Set,A=new Set;function H(S){Q(S,1),S.m(c,d),o.set(S.key,S),d=S.first,b--}for(;p&&b;){const S=k[b-1],F=l[p-1],y=S.key,P=F.key;S===F?(d=S.first,p--,b--):N.has(P)?!o.has(y)||O.has(y)?H(S):A.has(P)?p--:C.get(y)>C.get(P)?(A.add(y),H(S)):(O.add(P),p--):(f(F,o),p--)}for(;p--;){const S=l[p];N.has(S.key)||f(S,o)}for(;b;)H(k[b-1]);return te(L),k}function et(l,e,t){const n=l.$$.props[e];n!==void 0&&(l.$$.bound[n]=t,t(l.$$.ctx[n]))}function Fe(l){l&&l.c()}function we(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),ze(()=>{const s=l.$$.on_mount.map(qt).filter(Re);l.$$.on_destroy?l.$$.on_destroy.push(...s):te(s),l.$$.on_mount=[]}),i.forEach(ze)}function Ce(l,e){const t=l.$$;t.fragment!==null&&(Yl(t.after_update),te(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function ln(l,e){l.$$.dirty[0]===-1&&(he.push(l),Zl(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const z=b.length?b[0]:p;return u.ctx&&i(u.ctx[m],u.ctx[m]=z)&&(!u.skip_bound&&u.bound[m]&&u.bound[m](z),d&&ln(l,m)),p}):[],u.update(),d=!0,te(u.before_update),u.fragment=n?n(u.ctx):!1,e.target){if(e.hydrate){const m=Bl(e.target);u.fragment&&u.fragment.l(m),m.forEach(h)}else u.fragment&&u.fragment.c();e.intro&&Q(l.$$.fragment),we(l,e.target,e.anchor),Yt()}ke(f)}class Le{constructor(){Pe(this,"$$");Pe(this,"$$set")}$destroy(){Ce(this,1),this.$destroy=D}$on(e,t){if(!Re(t))return D;const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!Al(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const nn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(nn);function sn(l){let e,t;return{c(){e=E("path"),t=E("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function on(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","16"),r(n,"y1","13"),r(n,"x2","8"),r(n,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17"),r(s,"points","10 9 9 9 8 9")},m(o,c){v(o,e,c),v(o,t,c),v(o,n,c),v(o,i,c),v(o,s,c)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function rn(l){let e,t;return{c(){e=E("polyline"),t=E("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function fn(l){let e,t,n,i;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(n,"x1","3"),r(n,"y1","8"),r(n,"x2","21"),r(n,"y2","8"),r(i,"x","10"),r(i,"y","12"),r(i,"width","4"),r(i,"height","4"),r(i,"rx","1")},m(s,o){v(s,e,o),v(s,t,o),v(s,n,o),v(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function cn(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","9"),r(n,"y1","12"),r(n,"x2","15"),r(n,"y2","12"),r(i,"x1","9"),r(i,"y1","15"),r(i,"x2","13"),r(i,"y2","15"),r(s,"x1","12"),r(s,"y1","15"),r(s,"x2","12"),r(s,"y2","18")},m(o,c){v(o,e,c),v(o,t,c),v(o,n,c),v(o,i,c),v(o,s,c)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function an(l){let e,t,n,i,s,o;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),o=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","8"),r(n,"y1","12"),r(n,"x2","16"),r(n,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14"),r(o,"x1","12"),r(o,"y1","12"),r(o,"x2","12"),r(o,"y2","18")},m(c,f){v(c,e,f),v(c,t,f),v(c,n,f),v(c,i,f),v(c,s,f),v(c,o,f)},d(c){c&&(h(e),h(t),h(n),h(i),h(s),h(o))}}}function un(l){let e,t,n,i;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","16"),r(n,"y1","13"),r(n,"x2","8"),r(n,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17")},m(s,o){v(s,e,o),v(s,t,o),v(s,n,o),v(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function dn(l){let e,t,n,i,s;return{c(){e=E("path"),t=E("polyline"),n=E("line"),i=E("line"),s=E("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(n,"x1","8"),r(n,"y1","12"),r(n,"x2","16"),r(n,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14")},m(o,c){v(o,e,c),v(o,t,c),v(o,n,c),v(o,i,c),v(o,s,c)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function pn(l){let e,t,n;return{c(){e=E("path"),t=E("circle"),n=E("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(n,"cx","18"),r(n,"cy","16"),r(n,"r","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function _n(l){let e,t;return{c(){e=E("rect"),t=E("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function mn(l){let e,t,n;return{c(){e=E("rect"),t=E("circle"),n=E("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(n,"points","21 15 16 10 5 21")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function hn(l){let e;return{c(){e=E("path"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,n){v(t,e,n)},d(t){t&&h(e)}}}function vn(l){let e;function t(s,o){return s[0]==="folder"?hn:s[0]==="image"?mn:s[0]==="video"?_n:s[0]==="audio"?pn:s[0]==="pdf"?dn:s[0]==="document"?un:s[0]==="spreadsheet"?an:s[0]==="presentation"?cn:s[0]==="archive"?fn:s[0]==="code"?rn:s[0]==="text"?on:sn}let n=t(l),i=n(l);return{c(){e=E("svg"),i.c(),r(e,"width",l[1]),r(e,"height",l[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){v(s,e,o),i.m(e,null)},p(s,[o]){n!==(n=t(s))&&(i.d(1),i=n(s),i&&(i.c(),i.m(e,null))),o&2&&r(e,"width",s[1]),o&2&&r(e,"height",s[1])},i:D,o:D,d(s){s&&h(e),i.d()}}}function bn(l,e,t){let{kind:n="generic"}=e,{size:i=20}=e;return l.$$set=s=>{"kind"in s&&t(0,n=s.kind),"size"in s&&t(1,i=s.size)},[n,i]}class zn extends Le{constructor(e){super(),Ee(this,e,bn,vn,Ie,{kind:0,size:1})}}function gn(l){let e,t,n;return{c(){e=E("path"),t=E("polyline"),n=E("line"),r(e,"d","M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"),r(t,"points","15 3 21 3 21 9"),r(n,"x1","10"),r(n,"y1","14"),r(n,"x2","21"),r(n,"y2","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function kn(l){let e,t;return{c(){e=E("path"),t=E("line"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"),r(t,"x1","9"),r(t,"y1","14"),r(t,"x2","15"),r(t,"y2","14")},m(n,i){v(n,e,i),v(n,t,i)},d(n){n&&(h(e),h(t))}}}function yn(l){let e,t,n,i,s,o,c,f,u;function d(b,z){return b[0]?kn:gn}let m=d(l),p=m(l);return{c(){e=_("div"),t=_("button"),n=E("svg"),p.c(),o=x(),c=_("button"),c.innerHTML=' ',r(n,"width","16"),r(n,"height","16"),r(n,"viewBox","0 0 24 24"),r(n,"fill","none"),r(n,"stroke","currentColor"),r(n,"stroke-width","2"),r(n,"stroke-linecap","round"),r(n,"stroke-linejoin","round"),r(t,"class","action-btn svelte-7ixqek"),r(t,"title",i=l[0]?"Open folder":"Open file"),r(t,"aria-label",s=l[0]?"Open folder":"Open file"),r(c,"class","action-btn action-btn-danger svelte-7ixqek"),r(c,"title","Delete"),r(c,"aria-label","Delete"),r(e,"class","file-actions svelte-7ixqek")},m(b,z){v(b,e,z),a(e,t),a(t,n),p.m(n,null),a(e,o),a(e,c),f||(u=[B(t,"click",l[1]),B(c,"click",l[2])],f=!0)},p(b,[z]){m!==(m=d(b))&&(p.d(1),p=m(b),p&&(p.c(),p.m(n,null))),z&1&&i!==(i=b[0]?"Open folder":"Open file")&&r(t,"title",i),z&1&&s!==(s=b[0]?"Open folder":"Open file")&&r(t,"aria-label",s)},i:D,o:D,d(b){b&&h(e),p.d(),f=!1,te(u)}}}function wn(l,e,t){let{isFolder:n=!1}=e,{fileId:i=""}=e,{nodeId:s=""}=e;const o=Xt();function c(){n?o("openFolder",s):o("open",i)}function f(){o("delete",s)}return l.$$set=u=>{"isFolder"in u&&t(0,n=u.isFolder),"fileId"in u&&t(3,i=u.fileId),"nodeId"in u&&t(4,s=u.nodeId)},[n,c,f,i,s]}class Cn extends Le{constructor(e){super(),Ee(this,e,wn,yn,Ie,{isFolder:0,fileId:3,nodeId:4})}}function tt(l){if(l==null||l<0)return"—";if(l===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(l)/Math.log(1024)),e.length-1),n=l/Math.pow(1024,t);return(t===0?n.toFixed(0):n.toFixed(1))+" "+e[t]}const Mn={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function lt(l){return l?Mn[l]||l:"Unknown"}function xn(l){if(l.type==="folder")return"folder";const e=(l.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const n=(l.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(n)?"code":"generic"}function nt(l,e,t){const n=l.slice();return n[15]=e[t],n}function Nn(l){let e;return{c(){e=_("span"),r(e,"class","expand-spacer svelte-1fc98j1")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Sn(l){let e,t,n,i,s,o;const c=[In,Fn],f=[];function u(d,m){return d[4]?0:1}return t=u(l),n=f[t]=c[t](l),{c(){e=_("button"),n.c(),r(e,"class","expand-toggle svelte-1fc98j1"),r(e,"aria-label",i=l[0][l[2].id]?"Collapse":"Expand")},m(d,m){v(d,e,m),f[t].m(e,null),s||(o=B(e,"click",l[6]),s=!0)},p(d,m){let p=t;t=u(d),t===p?f[t].p(d,m):(de(),ee(f[p],1,1,()=>{f[p]=null}),pe(),n=f[t],n?n.p(d,m):(n=f[t]=c[t](d),n.c()),Q(n,1),n.m(e,null)),m&5&&i!==(i=d[0][d[2].id]?"Collapse":"Expand")&&r(e,"aria-label",i)},d(d){d&&h(e),f[t].d(),s=!1,o()}}}function Fn(l){let e,t,n,i;return{c(){e=E("svg"),t=E("path"),r(t,"d","M9 18l6-6-6-6"),r(e,"width","10"),r(e,"height","10"),r(e,"viewBox","0 0 24 24"),r(e,"fill","currentColor")},m(s,o){v(s,e,o),a(e,t),i=!0},p(s,o){l=s},i(s){i||(s&&ze(()=>{i&&(n||(n=$e(e,rotate,l[0][l[2].id]?90:0,!0)),n.run(1))}),i=!0)},o(s){s&&(n||(n=$e(e,rotate,l[0][l[2].id]?90:0,!1)),n.run(0)),i=!1},d(s){s&&h(e),s&&n&&n.end()}}}function In(l){let e,t;return{c(){e=E("svg"),t=E("path"),r(t,"d","M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"),r(e,"width","10"),r(e,"height","10"),r(e,"viewBox","0 0 24 24"),r(e,"fill","currentColor"),r(e,"class","spin svelte-1fc98j1")},m(n,i){v(n,e,i),a(e,t)},p:D,i:D,o:D,d(n){n&&h(e)}}}function En(l){let e,t=tt(l[2].size)+"",n,i,s,o,c,f=lt(l[2].mime)+"",u;return{c(){e=_("span"),n=I(t),i=x(),s=_("span"),s.textContent="·",o=x(),c=_("span"),u=I(f),r(s,"class","meta-sep svelte-1fc98j1")},m(d,m){v(d,e,m),a(e,n),v(d,i,m),v(d,s,m),v(d,o,m),v(d,c,m),a(c,u)},p(d,m){m&4&&t!==(t=tt(d[2].size)+"")&&T(n,t),m&4&&f!==(f=lt(d[2].mime)+"")&&T(u,f)},d(d){d&&(h(e),h(i),h(s),h(o),h(c))}}}function Ln(l){let e,t,n,i=l[1][l[2].id]&&l[1][l[2].id].length>0&&it(l);return{c(){e=_("span"),e.textContent="Folder",t=x(),i&&i.c(),n=ue()},m(s,o){v(s,e,o),v(s,t,o),i&&i.m(s,o),v(s,n,o)},p(s,o){s[1][s[2].id]&&s[1][s[2].id].length>0?i?i.p(s,o):(i=it(s),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},d(s){s&&(h(e),h(t),h(n)),i&&i.d(s)}}}function it(l){let e,t,n,i=l[1][l[2].id].length+"",s,o,c=l[1][l[2].id].length===1?"item":"items",f;return{c(){e=_("span"),e.textContent="·",t=x(),n=_("span"),s=I(i),o=x(),f=I(c),r(e,"class","meta-sep svelte-1fc98j1")},m(u,d){v(u,e,d),v(u,t,d),v(u,n,d),a(n,s),a(n,o),a(n,f)},p(u,d){d&6&&i!==(i=u[1][u[2].id].length+"")&&T(s,i),d&6&&c!==(c=u[1][u[2].id].length===1?"item":"items")&&T(f,c)},d(u){u&&(h(e),h(t),h(n))}}}function st(l){let e,t,n=Z(l[1][l[2].id]),i=[];for(let o=0;oee(i[o],1,1,()=>{i[o]=null});return{c(){for(let o=0;o{F=null}),pe())},i(y){N||(Q(i.$$.fragment,y),Q(z.$$.fragment,y),Q(F),N=!0)},o(y){ee(i.$$.fragment,y),ee(z.$$.fragment,y),ee(F),N=!1},d(y){y&&(h(e),h(g),h(k)),O.d(),Ce(i),S.d(),Ce(z),F&&F.d(y)}}}function On(l,...e){var t,n,i;try{const s=(i=(n=(t=window==null?void 0:window.go)==null?void 0:t.main)==null?void 0:n.App)==null?void 0:i[l];if(typeof s=="function")return s(...e)}catch(s){console.error("Wails call error:",l,s)}}function jn(l,e,t){let{item:n}=e,{expanded:i={}}=e,{childrenMap:s={}}=e,{depth:o=0}=e;const c=Xt();let f=!1;async function u(){const C=n.id;if(i[C]){t(0,i={...i,[C]:!1});return}if(t(4,f=!0),t(0,i={...i,[C]:!0}),!s[C]){try{t(1,s[C]=await On("ListItems",C)||[],s)}catch{t(1,s[C]=[],s)}t(1,s={...s})}t(4,f=!1)}const d=xn(n),m=n.type==="folder",p=C=>c("open",C.detail),b=C=>c("openFolder",C.detail),z=C=>c("delete",C.detail);function g(C){De.call(this,l,C)}function k(C){De.call(this,l,C)}function N(C){De.call(this,l,C)}return l.$$set=C=>{"item"in C&&t(2,n=C.item),"expanded"in C&&t(0,i=C.expanded),"childrenMap"in C&&t(1,s=C.childrenMap),"depth"in C&&t(3,o=C.depth)},[i,s,n,o,f,c,u,d,m,p,b,z,g,k,N]}class Qt extends Le{constructor(e){super(),Ee(this,e,jn,An,Ie,{item:2,expanded:0,childrenMap:1,depth:3})}}function rt(l,e,t){const n=l.slice();return n[80]=e[t],n}function ft(l,e,t){const n=l.slice();return n[83]=e[t],n}function ct(l,e,t){const n=l.slice();return n[94]=e[t],n}function at(l,e,t){const n=l.slice();return n[91]=e[t],n}function ut(l,e,t){const n=l.slice();return n[86]=e[t],n}function dt(l,e,t){const n=l.slice();return n[83]=e[t],n}function pt(l,e,t){const n=l.slice();return n[86]=e[t],n}function _t(l,e,t){const n=l.slice();return n[99]=e[t],n}function mt(l,e,t){const n=l.slice();return n[80]=e[t],n}function ht(l,e,t){const n=l.slice();return n[104]=e[t],n}function vt(l,e,t){const n=l.slice();return n[107]=e[t],n}function bt(l){let e,t=l[107].label+"",n,i,s,o,c;function f(){return l[48](l[107])}return{c(){e=_("button"),n=I(t),i=x(),r(e,"class",s="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-1dzzaxf")},m(u,d){v(u,e,d),a(e,n),a(e,i),o||(c=B(e,"click",f),o=!0)},p(u,d){l=u,d[0]&1&&t!==(t=l[107].label+"")&&T(n,t),d[0]&17&&s!==(s="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-1dzzaxf")&&r(e,"class",s)},d(u){u&&h(e),o=!1,c()}}}function zt(l){let e,t,n,i,s,o=l[1].length>0&>(l),c=Z(l[1]),f=[];for(let d=0;d0?o?o.p(d,m):(o=gt(d),o.c(),o.m(t,null)):o&&(o.d(1),o=null),m[0]&268435490){c=Z(d[1]);let p;for(p=0;p0)return qn;if(c[3])return Rn}let s=i(l),o=s&&s(l);return{c(){e=_("div"),t=_("h2"),t.textContent="Верстак",n=x(),o&&o.c(),r(t,"class","svelte-1dzzaxf"),r(e,"class","welcome svelte-1dzzaxf")},m(c,f){v(c,e,f),a(e,t),a(e,n),o&&o.m(e,null)},p(c,f){s===(s=i(c))&&o?o.p(c,f):(o&&o.d(1),o=s&&s(c),o&&(o.c(),o.m(e,null)))},i:D,o:D,d(c){c&&h(e),o&&o.d()}}}function Tn(l){let e,t,n,i,s,o,c=Z(l[26]),f=[];for(let p=0;p{d[z]=null}),pe()),~i?(s=d[i],s?s.p(p,b):(s=d[i]=u[i](p),s.c()),Q(s,1),s.m(n,null)):s=null)},i(p){o||(Q(s),o=!0)},o(p){ee(s),o=!1},d(p){p&&(h(e),h(t),h(n)),re(f,p),~i&&d[i].d()}}}function Vn(l){let e,t,n,i=l[8].title+"",s,o,c,f,u,d,m,p,b,z,g,k=l[8].dirty&&Pt();return{c(){e=_("div"),t=_("div"),n=_("span"),s=I(i),o=x(),k&&k.c(),c=x(),f=_("div"),u=_("button"),u.textContent="Сохранить",d=x(),m=_("button"),m.textContent="Закрыть",p=x(),b=_("textarea"),r(n,"class","note-title svelte-1dzzaxf"),r(u,"class","btn btn-primary svelte-1dzzaxf"),r(m,"class","btn svelte-1dzzaxf"),r(f,"class","note-editor-actions svelte-1dzzaxf"),r(t,"class","note-editor-header svelte-1dzzaxf"),r(b,"class","note-textarea svelte-1dzzaxf"),r(b,"placeholder","Начните писать..."),r(e,"class","note-editor svelte-1dzzaxf")},m(N,C){v(N,e,C),a(e,t),a(t,n),a(n,s),a(t,o),k&&k.m(t,null),a(t,c),a(t,f),a(f,u),a(f,d),a(f,m),a(e,p),a(e,b),oe(b,l[8].content),z||(g=[B(u,"click",l[39]),B(m,"click",l[37]),B(b,"input",l[51]),B(b,"input",l[38])],z=!0)},p(N,C){C[0]&256&&i!==(i=N[8].title+"")&&T(s,i),N[8].dirty?k||(k=Pt(),k.c(),k.m(t,c)):k&&(k.d(1),k=null),C[0]&256&&oe(b,N[8].content)},i:D,o:D,d(N){N&&h(e),k&&k.d(),z=!1,te(g)}}}function Rn(l){let e,t,n;return{c(){e=_("p"),t=I("Ошибка: "),n=I(l[3]),r(e,"class","error-text svelte-1dzzaxf")},m(i,s){v(i,e,s),a(e,t),a(e,n)},p(i,s){s[0]&8&&T(n,i[3])},d(i){i&&h(e)}}}function qn(l){let e,t,n;return{c(){e=_("p"),e.textContent="Выберите раздел в боковой панели.",t=x(),n=_("p"),n.textContent="Или создайте новое дело кнопкой «+».",r(e,"class","svelte-1dzzaxf"),r(n,"class","hint svelte-1dzzaxf")},m(i,s){v(i,e,s),v(i,t,s),v(i,n,s)},p:D,d(i){i&&(h(e),h(t),h(n))}}}function Wn(l){let e;return{c(){e=_("p"),e.textContent="Загрузка...",r(e,"class","svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Mt(l){let e,t=l[99].label+"",n,i,s;function o(){return l[52](l[99])}return{c(){e=_("button"),n=I(t),r(e,"class",Ol(l[47](l[99].id))+" svelte-1dzzaxf")},m(c,f){v(c,e,f),a(e,n),i||(s=B(e,"click",o),i=!0)},p(c,f){l=c},d(c){c&&h(e),i=!1,s()}}}function Gn(l){let e;return{c(){e=_("div"),e.innerHTML='Активность появится позже
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,i:D,o:D,d(t){t&&h(e)}}}function Kn(l){let e,t,n,i,s,o,c,f,u,d,m,p;function b(k,N){return k[10].length===0?Qn:Yn}let z=b(l),g=z(l);return{c(){e=_("div"),t=_("div"),n=_("input"),i=x(),s=_("input"),o=x(),c=_("button"),f=I("Записать"),d=x(),g.c(),r(n,"type","text"),r(n,"placeholder","Что сделано"),r(n,"class","svelte-1dzzaxf"),r(s,"type","number"),r(s,"placeholder","Мин"),r(s,"min","1"),r(s,"class","svelte-1dzzaxf"),r(c,"class","btn btn-primary svelte-1dzzaxf"),c.disabled=u=!l[12].trim()||!l[11],r(t,"class","worklog-form svelte-1dzzaxf"),r(e,"class","worklog-tab svelte-1dzzaxf")},m(k,N){v(k,e,N),a(e,t),a(t,n),oe(n,l[12]),a(t,i),a(t,s),oe(s,l[11]),a(t,o),a(t,c),a(c,f),a(e,d),g.m(e,null),m||(p=[B(n,"input",l[66]),B(s,"input",l[67]),B(c,"click",l[40])],m=!0)},p(k,N){N[0]&4096&&n.value!==k[12]&&oe(n,k[12]),N[0]&2048&&Ut(s.value)!==k[11]&&oe(s,k[11]),N[0]&6144&&u!==(u=!k[12].trim()||!k[11])&&(c.disabled=u),z===(z=b(k))&&g?g.p(k,N):(g.d(1),g=z(k),g&&(g.c(),g.m(e,null)))},i:D,o:D,d(k){k&&h(e),g.d(),m=!1,te(p)}}}function Jn(l){let e;function t(s,o){return s[9].length===0?ei:$n}let n=t(l),i=n(l);return{c(){i.c(),e=ue()},m(s,o){i.m(s,o),v(s,e,o)},p(s,o){n===(n=t(s))&&i?i.p(s,o):(i.d(1),i=n(s),i&&(i.c(),i.m(e.parentNode,e)))},i:D,o:D,d(s){s&&h(e),i.d(s)}}}function Un(l){let e,t,n,i,s,o,c,f,u,d,m,p,b,z;const g=[ni,li,ti],k=[];function N(L,O){return L[25]?0:L[22].length===0?1:2}u=N(l),d=k[u]=g[u](l);let C=l[19]&&!l[21]&&Ft();return{c(){e=_("div"),t=_("div"),n=_("button"),i=I("+ Добавить файл"),s=x(),o=_("button"),c=I("+ Добавить папку"),f=x(),d.c(),m=x(),C&&C.c(),r(n,"class","btn btn-primary svelte-1dzzaxf"),n.disabled=l[19],r(o,"class","btn svelte-1dzzaxf"),o.disabled=l[19],r(t,"class","tab-toolbar svelte-1dzzaxf"),r(e,"class","files-tab svelte-1dzzaxf")},m(L,O){v(L,e,O),a(e,t),a(t,n),a(n,i),a(t,s),a(t,o),a(o,c),a(e,f),k[u].m(e,null),a(e,m),C&&C.m(e,null),p=!0,b||(z=[B(n,"click",l[41]),B(o,"click",l[42])],b=!0)},p(L,O){(!p||O[0]&524288)&&(n.disabled=L[19]),(!p||O[0]&524288)&&(o.disabled=L[19]);let A=u;u=N(L),u===A?k[u].p(L,O):(de(),ee(k[A],1,1,()=>{k[A]=null}),pe(),d=k[u],d?d.p(L,O):(d=k[u]=g[u](L),d.c()),Q(d,1),d.m(e,m)),L[19]&&!L[21]?C||(C=Ft(),C.c(),C.m(e,null)):C&&(C.d(1),C=null)},i(L){p||(Q(d),p=!0)},o(L){ee(d),p=!1},d(L){L&&h(e),k[u].d(),C&&C.d(),b=!1,te(z)}}}function Zn(l){let e,t,n,i,s,o,c,f=l[16]&&It(l);function u(p,b){return p[7].length===0&&!p[16]?si:ii}let d=u(l),m=d(l);return{c(){e=_("div"),t=_("div"),n=_("button"),n.textContent="+ Добавить заметку",i=x(),f&&f.c(),s=x(),m.c(),r(n,"class","btn btn-primary svelte-1dzzaxf"),r(t,"class","tab-toolbar svelte-1dzzaxf"),r(e,"class","notes-tab svelte-1dzzaxf")},m(p,b){v(p,e,b),a(e,t),a(t,n),a(e,i),f&&f.m(e,null),a(e,s),m.m(e,null),o||(c=B(n,"click",l[33]),o=!0)},p(p,b){p[16]?f?f.p(p,b):(f=It(p),f.c(),f.m(e,s)):f&&(f.d(1),f=null),d===(d=u(p))&&m?m.p(p,b):(m.d(1),m=d(p),m&&(m.c(),m.m(e,null)))},i:D,o:D,d(p){p&&h(e),f&&f.d(),m.d(),o=!1,c()}}}function Xn(l){let e,t,n=l[5].title+"",i,s,o,c,f,u,d=l[5].type+"",m,p,b,z,g,k=(l[5].section||"—")+"",N,C,L,O,A,H=ae(l[5].createdAt)+"",S,F,y,P,q,W,le,U,X,K,ne,$,ie,J,R=l[7].length>0&&Lt(l),j=l[10].length>0&&Ot(l);return{c(){e=_("div"),t=_("h2"),i=I(n),s=x(),o=_("div"),c=_("div"),f=_("span"),f.textContent="Тип",u=_("span"),m=I(d),p=x(),b=_("div"),z=_("span"),z.textContent="Раздел",g=_("span"),N=I(k),C=x(),L=_("div"),O=_("span"),O.textContent="Создано",A=_("span"),S=I(H),F=x(),y=_("div"),P=_("button"),P.textContent="✏️ Новая заметка",q=x(),W=_("button"),W.textContent="📎 Добавить файл",le=x(),U=_("button"),U.textContent="⚡ Добавить действие",X=x(),K=_("button"),K.textContent="🕐 Записать время",ne=x(),R&&R.c(),$=x(),j&&j.c(),r(t,"class","svelte-1dzzaxf"),r(f,"class","meta-label svelte-1dzzaxf"),r(u,"class","svelte-1dzzaxf"),r(c,"class","meta-item svelte-1dzzaxf"),r(z,"class","meta-label svelte-1dzzaxf"),r(g,"class","svelte-1dzzaxf"),r(b,"class","meta-item svelte-1dzzaxf"),r(O,"class","meta-label svelte-1dzzaxf"),r(A,"class","svelte-1dzzaxf"),r(L,"class","meta-item svelte-1dzzaxf"),r(o,"class","meta-grid svelte-1dzzaxf"),r(P,"class","qa-btn svelte-1dzzaxf"),r(W,"class","qa-btn svelte-1dzzaxf"),r(U,"class","qa-btn svelte-1dzzaxf"),U.disabled=!0,r(U,"title","Следующий этап"),r(K,"class","qa-btn svelte-1dzzaxf"),r(y,"class","quick-actions svelte-1dzzaxf"),r(e,"class","overview svelte-1dzzaxf")},m(M,V){v(M,e,V),a(e,t),a(t,i),a(e,s),a(e,o),a(o,c),a(c,f),a(c,u),a(u,m),a(o,p),a(o,b),a(b,z),a(b,g),a(g,N),a(o,C),a(o,L),a(L,O),a(L,A),a(A,S),a(e,F),a(e,y),a(y,P),a(y,q),a(y,W),a(y,le),a(y,U),a(y,X),a(y,K),a(e,ne),R&&R.m(e,null),a(e,$),j&&j.m(e,null),ie||(J=[B(P,"click",l[53]),B(W,"click",l[54]),B(K,"click",l[55])],ie=!0)},p(M,V){V[0]&32&&n!==(n=M[5].title+"")&&T(i,n),V[0]&32&&d!==(d=M[5].type+"")&&T(m,d),V[0]&32&&k!==(k=(M[5].section||"—")+"")&&T(N,k),V[0]&32&&H!==(H=ae(M[5].createdAt)+"")&&T(S,H),M[7].length>0?R?R.p(M,V):(R=Lt(M),R.c(),R.m(e,$)):R&&(R.d(1),R=null),M[10].length>0?j?j.p(M,V):(j=Ot(M),j.c(),j.m(e,null)):j&&(j.d(1),j=null)},i:D,o:D,d(M){M&&h(e),R&&R.d(),j&&j.d(),ie=!1,te(J)}}}function Yn(l){let e,t=Z(l[10]),n=[];for(let i=0;iЗаписей работы пока нет',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function xt(l){let e,t,n=l[83].summary+"",i,s,o,c=l[83].minutes+"",f,u,d=ae(l[83].createdAt)+"",m,p;return{c(){e=_("div"),t=_("div"),i=I(n),s=x(),o=_("div"),f=I(c),u=I(" мин · "),m=I(d),p=x(),r(t,"class","svelte-1dzzaxf"),r(o,"class","wl-meta svelte-1dzzaxf"),r(e,"class","worklog-entry svelte-1dzzaxf")},m(b,z){v(b,e,z),a(e,t),a(t,i),a(e,s),a(e,o),a(o,f),a(o,u),a(o,m),a(e,p)},p(b,z){z[0]&1024&&n!==(n=b[83].summary+"")&&T(i,n),z[0]&1024&&c!==(c=b[83].minutes+"")&&T(f,c),z[0]&1024&&d!==(d=ae(b[83].createdAt)+"")&&T(m,d)},d(b){b&&h(e)}}}function $n(l){let e,t=Z(l[9]),n=[];for(let i=0;iДействий пока нет',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Nt(l){let e,t,n=l[94].title+"",i,s,o=l[94].type+"",c,f,u,d,m,p;function b(){return l[65](l[94])}return{c(){e=_("div"),t=_("span"),i=I(n),s=_("span"),c=I(o),f=x(),u=_("button"),u.textContent="Запустить",d=x(),r(t,"class","svelte-1dzzaxf"),r(s,"class","action-type svelte-1dzzaxf"),r(u,"class","btn btn-sm svelte-1dzzaxf"),r(e,"class","action-card svelte-1dzzaxf")},m(z,g){v(z,e,g),a(e,t),a(t,i),a(e,s),a(s,c),a(e,f),a(e,u),a(e,d),m||(p=B(u,"click",b),m=!0)},p(z,g){l=z,g[0]&512&&n!==(n=l[94].title+"")&&T(i,n),g[0]&512&&o!==(o=l[94].type+"")&&T(c,o)},d(z){z&&h(e),m=!1,p()}}}function ti(l){let e,t=[],n=new Map,i,s=Z(l[22]);const o=c=>c[91].id;for(let c=0;c ',n=x(),i=_("p"),i.textContent="В этом проекте пока нет файлов",s=x(),o=_("p"),o.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",c=x(),f=_("div"),u=_("button"),u.textContent="Добавить файл",d=x(),m=_("button"),m.textContent="Добавить папку",r(t,"class","empty-icon svelte-1dzzaxf"),r(i,"class","svelte-1dzzaxf"),r(o,"class","hint svelte-1dzzaxf"),r(u,"class","btn btn-primary svelte-1dzzaxf"),r(m,"class","btn svelte-1dzzaxf"),r(f,"class","empty-actions svelte-1dzzaxf"),r(e,"class","empty-state svelte-1dzzaxf")},m(z,g){v(z,e,g),a(e,t),a(e,n),a(e,i),a(e,s),a(e,o),a(e,c),a(e,f),a(f,u),a(f,d),a(f,m),p||(b=[B(u,"click",l[41]),B(m,"click",l[42])],p=!0)},p:D,i:D,o:D,d(z){z&&h(e),p=!1,te(b)}}}function ni(l){let e;return{c(){e=_("div"),e.innerHTML='Загрузка...
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,i:D,o:D,d(t){t&&h(e)}}}function St(l,e){let t,n,i,s,o;function c(d){e[60](d)}function f(d){e[61](d)}let u={item:e[91]};return e[23]!==void 0&&(u.expanded=e[23]),e[24]!==void 0&&(u.childrenMap=e[24]),n=new Qt({props:u}),Se.push(()=>et(n,"expanded",c)),Se.push(()=>et(n,"childrenMap",f)),n.$on("delete",e[62]),n.$on("open",e[63]),n.$on("openFolder",e[64]),{key:l,first:null,c(){t=ue(),Fe(n.$$.fragment),this.first=t},m(d,m){v(d,t,m),we(n,d,m),o=!0},p(d,m){e=d;const p={};m[0]&4194304&&(p.item=e[91]),!i&&m[0]&8388608&&(i=!0,p.expanded=e[23],Qe(()=>i=!1)),!s&&m[0]&16777216&&(s=!0,p.childrenMap=e[24],Qe(()=>s=!1)),n.$set(p)},i(d){o||(Q(n.$$.fragment,d),o=!0)},o(d){ee(n.$$.fragment,d),o=!1},d(d){d&&h(t),Ce(n,d)}}}function Ft(l){let e;return{c(){e=_("div"),e.innerHTML='Сканирование...
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},d(t){t&&h(e)}}}function It(l){let e,t,n,i,s,o,c,f,u;return{c(){e=_("div"),t=_("input"),n=x(),i=_("div"),s=_("button"),s.textContent="Создать",o=x(),c=_("button"),c.textContent="Отмена",r(t,"type","text"),r(t,"placeholder","Название заметки"),r(t,"class","svelte-1dzzaxf"),r(s,"class","btn btn-primary svelte-1dzzaxf"),r(c,"class","btn svelte-1dzzaxf"),r(i,"class","form-actions svelte-1dzzaxf"),r(e,"class","create-form svelte-1dzzaxf")},m(d,m){v(d,e,m),a(e,t),oe(t,l[17]),a(e,n),a(e,i),a(i,s),a(i,o),a(i,c),f||(u=[B(t,"input",l[57]),B(t,"keydown",l[58]),B(s,"click",l[35]),B(c,"click",l[34])],f=!0)},p(d,m){m[0]&131072&&t.value!==d[17]&&oe(t,d[17])},d(d){d&&h(e),f=!1,te(u)}}}function ii(l){let e,t=Z(l[7]),n=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',r(e,"class","empty-state svelte-1dzzaxf")},m(t,n){v(t,e,n)},p:D,d(t){t&&h(e)}}}function Et(l){let e,t,n=l[86].title+"",i,s,o,c=ae(l[86].createdAt)+"",f,u,d,m;function p(){return l[59](l[86])}return{c(){e=_("div"),t=_("div"),i=I(n),s=x(),o=_("div"),f=I(c),u=x(),r(t,"class","note-card-title svelte-1dzzaxf"),r(o,"class","note-card-date svelte-1dzzaxf"),r(e,"class","note-card svelte-1dzzaxf")},m(b,z){v(b,e,z),a(e,t),a(t,i),a(e,s),a(e,o),a(o,f),a(e,u),d||(m=B(e,"click",p),d=!0)},p(b,z){l=b,z[0]&128&&n!==(n=l[86].title+"")&&T(i,n),z[0]&128&&c!==(c=ae(l[86].createdAt)+"")&&T(f,c)},d(b){b&&h(e),d=!1,m()}}}function Lt(l){let e,t,n,i=Z(l[7].slice(0,5)),s=[];for(let o=0;ol[70].call(b)),r(d,"class","form-group svelte-1dzzaxf"),r(k,"class","btn btn-primary svelte-1dzzaxf"),r(C,"class","btn svelte-1dzzaxf"),r(g,"class","modal-actions svelte-1dzzaxf"),r(t,"class","modal svelte-1dzzaxf"),r(e,"class","modal-overlay svelte-1dzzaxf")},m(S,F){v(S,e,F),a(e,t),a(t,n),a(t,i),a(t,s),a(s,o),a(s,c),a(s,f),oe(f,l[14]),a(t,u),a(t,d),a(d,m),a(d,p),a(d,b);for(let y=0;y⚒ Верстак ',i=x(),s=_("nav"),o=_("div"),c=_("div"),c.textContent="Разделы",f=x();for(let M=0;M{$[fe]=null}),pe(),A=$[O],A?A.p(M,V):(A=$[O]=ne[O](M),A.c()),Q(A,1),A.m(g,H)),!M[8]&&!M[5]?J?J.p(M,V):(J=Dt(M),J.c(),J.m(g,S)):J&&(J.d(1),J=null),M[13]?R?R.p(M,V):(R=Ht(M),R.c(),R.m(g,F)):R&&(R.d(1),R=null),M[21]&&M[20]?j?j.p(M,V):(j=Tt(M),j.c(),j.m(g,null)):j&&(j.d(1),j=null)},i(M){y||(Q(A),y=!0)},o(M){ee(A),y=!1},d(M){M&&h(e),re(q,M),W&&W.d(),X.d(),K&&K.d(),$[O].d(),J&&J.d(),R&&R.d(),j&&j.d()}}}function Y(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function ae(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}const Rt=l=>l.id!=="today"&&l.id!=="inbox";function ri(l,e,t){let n=[],i=[],s="",o="",c="",f=null,u="overview",d=[],m=null,p=[],b=[],z=[],g="",k="",N=!1,C="",L="clients",O=!1,A="",H=!0,S=!1,F=null,y=!1,P="",q=[],W={},le={},U=!1;const X=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let K=null;Kl(async()=>{try{t(2,s=await Y("VerstakVersion")||"verstak-gui/v2"),t(0,n=await Y("ListSections")||[])}catch(w){t(3,o=String(w)),t(0,n=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",sl),K=()=>window.runtime.EventsOff("files-dropped")),t(18,H=!1)}),Jl(()=>{K&&K()});async function ne(w){t(4,c=w),t(5,f=null),t(6,u="overview"),t(7,d=[]),p=[],t(9,b=[]),t(10,z=[]),t(13,N=!1),t(3,o="");try{t(1,i=await Y("ListNodesBySection",w)||[])}catch(G){t(3,o=String(G)),t(1,i=[])}}async function $(w){t(5,f=w),t(6,u="overview"),t(7,d=[]),p=[],t(9,b=[]),t(10,z=[]),t(22,q=[]),t(23,W={}),t(24,le={}),t(8,m=null),t(13,N=!1),t(16,O=!1),t(3,o=""),await ie(w.id)}async function ie(w){try{t(7,d=await Y("ListNotes",w)||[])}catch{}try{p=await Y("ListFiles",w)||[]}catch{}try{t(9,b=await Y("ListActions",w)||[])}catch{}try{t(10,z=await Y("ListWorklog",w)||[])}catch{}}async function J(w){t(25,U=!0);try{t(22,q=await Y("ListItems",w)||[])}catch{t(22,q=[])}t(25,U=!1)}function R(){t(13,N=!0),t(14,C=""),t(15,L=c||"clients")}function j(){t(13,N=!1),t(14,C="")}async function M(){if(C.trim())try{const w=await Y("CreateNode","","case",C.trim(),L);t(13,N=!1),t(14,C=""),await ne(L)}catch(w){t(3,o=String(w))}}function V(){t(16,O=!0),t(17,A="")}function fe(){t(16,O=!1),t(17,A="")}async function se(){if(!(!A.trim()||!f))try{const w=await Y("CreateNote",f.id,A.trim());t(7,d=[...d,w&&w.id?w:{id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()}]),t(16,O=!1),t(17,A="")}catch{const G={id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()};t(7,d=[...d,G]),t(16,O=!1),t(17,A="")}}async function _e(w){if(!(m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const G=await Y("ReadNote",w.id);t(8,m={id:w.id,title:w.title,content:G||"",dirty:!1})}catch{t(8,m={id:w.id,title:w.title,content:"# "+w.title+`
-
-`,dirty:!1})}}function $t(){m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,m=null)}function el(w){m&&(t(8,m.content=w.target.value,m),t(8,m.dirty=!0,m))}async function tl(){if(m)try{await Y("SaveNote",m.id,m.content),t(8,m.dirty=!1,m)}catch{t(8,m.dirty=!1,m)}}async function ll(){const w=parseInt(g,10);if(!(!k.trim()||isNaN(w)||w<=0||!f)){try{const G=await Y("CreateWorklog",f.id,k.trim(),w);t(10,z=[...z,G&&G.id?G:{id:Date.now().toString(),nodeId:f.id,summary:k.trim(),minutes:w,createdAt:new Date().toISOString()}])}catch{t(10,z=[...z,{id:Date.now().toString(),nodeId:f.id,summary:k.trim(),minutes:w,createdAt:new Date().toISOString()}])}t(12,k=""),t(11,g="")}}async function Ge(){const w=await Y("PickFile");w&&await Ae(f.id,w)}async function nl(){const w=await Y("PickDirectory");w&&await Ae(f.id,w)}async function Ae(w,G){t(19,S=!0);try{const je=await Y("PreviewImport",G);t(20,F=je),P=G,t(21,y=!0)}catch(je){t(3,o=String(je))}t(19,S=!1)}async function Oe(w){try{const G=w==="copy"?await Y("AddPathCopy",f.id,P):await Y("AddPathLink",f.id,P);t(21,y=!1),t(20,F=null),t(23,W={}),t(24,le={}),await Promise.all([ie(f.id),J(f.id)])}catch(G){t(3,o=String(G))}}function il(){t(21,y=!1),t(20,F=null)}async function Ke(w){if(confirm("Удалить файл?"))try{await Y("DeleteFileOrFolder",w),p=p.filter(G=>G.nodeId!==w),t(23,W={}),t(24,le={}),await J(f.id)}catch(G){t(3,o=String(G))}}async function Je(w){try{await Y("OpenFile",w)}catch(G){t(3,o=String(G))}}async function sl(w){if(!w||w.length===0)return;if(!f){t(3,o="Сначала выберите дело для добавления файлов");return}const G=w[0];await Ae(f.id,G)}function ol(w){return u===w?"tab active":"tab"}const rl=w=>ne(w.id),fl=w=>$(w),cl=()=>t(3,o="");function al(){m.content=this.value,t(8,m)}const ul=w=>{t(6,u=w.id),w.id==="files"&&f&&q.length===0&&J(f.id)},dl=()=>{t(6,u="notes"),V()},pl=()=>{t(6,u="files"),Ge()},_l=()=>t(6,u="worklog"),ml=w=>_e(w);function hl(){A=this.value,t(17,A)}const vl=w=>w.key==="Enter"&&se(),bl=w=>_e(w);function zl(w){W=w,t(23,W)}function gl(w){le=w,t(24,le)}const kl=w=>Ke(w.detail),yl=w=>Je(w.detail),wl=w=>console.log("open folder",w.detail),Cl=w=>Y("RunAction",w.id);function Ml(){k=this.value,t(12,k)}function xl(){g=Ut(this.value),t(11,g)}function Nl(){C=this.value,t(14,C)}const Sl=w=>w.key==="Enter"&&M();function Fl(){L=Tl(this),t(15,L),t(0,n)}return[n,i,s,o,c,f,u,d,m,b,z,g,k,N,C,L,O,A,H,S,F,y,q,W,le,U,X,ne,$,J,R,j,M,V,fe,se,_e,$t,el,tl,ll,Ge,nl,Oe,il,Ke,Je,ol,rl,fl,cl,al,ul,dl,pl,_l,ml,hl,vl,bl,zl,gl,kl,yl,wl,Cl,Ml,xl,Nl,Sl,Fl,()=>Oe("copy"),()=>Oe("link")]}class fi extends Le{constructor(e){super(),Ee(this,e,ri,oi,Ie,{},null,[-1,-1,-1,-1])}}new fi({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-CRcfl7JD.css b/cmd/verstak-gui/frontend-dist/assets/main-CRcfl7JD.css
deleted file mode 100644
index e986233..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-CRcfl7JD.css
+++ /dev/null
@@ -1 +0,0 @@
-.svelte-awis0l.svelte-awis0l,.svelte-awis0l.svelte-awis0l:before,.svelte-awis0l.svelte-awis0l:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-awis0l.svelte-awis0l{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-awis0l.svelte-awis0l{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-awis0l.svelte-awis0l{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-awis0l.svelte-awis0l{font-size:20px;line-height:1}.brand-name.svelte-awis0l.svelte-awis0l{font-size:16px;font-weight:600}.sidebar-nav.svelte-awis0l.svelte-awis0l{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-awis0l.svelte-awis0l{margin-bottom:16px}.nav-label.svelte-awis0l.svelte-awis0l{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-awis0l.svelte-awis0l{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-awis0l.svelte-awis0l:hover{background:#223}.nav-item.selected.svelte-awis0l.svelte-awis0l{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-awis0l.svelte-awis0l{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-awis0l.svelte-awis0l{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555}.main.svelte-awis0l.svelte-awis0l{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-awis0l.svelte-awis0l{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-awis0l.svelte-awis0l{font-size:14px;font-weight:500}.crumb.placeholder.svelte-awis0l.svelte-awis0l{color:#666}.crumb-type.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-awis0l.svelte-awis0l{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between}.dismiss.svelte-awis0l.svelte-awis0l{opacity:.6}.tabs.svelte-awis0l.svelte-awis0l{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-awis0l.svelte-awis0l{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-awis0l.svelte-awis0l:hover{color:#ccc}.tab.active.svelte-awis0l.svelte-awis0l{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-awis0l.svelte-awis0l{flex:1;overflow-y:auto}.note-editor.svelte-awis0l.svelte-awis0l{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-awis0l.svelte-awis0l{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-awis0l.svelte-awis0l{font-size:16px;font-weight:500}.dirty-mark.svelte-awis0l.svelte-awis0l{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-awis0l.svelte-awis0l{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-awis0l.svelte-awis0l{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-awis0l.svelte-awis0l{padding:24px}.overview.svelte-awis0l h2.svelte-awis0l{font-size:24px;margin-bottom:16px}.meta-grid.svelte-awis0l.svelte-awis0l{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-awis0l.svelte-awis0l{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-awis0l.svelte-awis0l{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-awis0l.svelte-awis0l{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-awis0l.svelte-awis0l{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}.qa-btn.svelte-awis0l.svelte-awis0l:hover{background:#223}.qa-btn.svelte-awis0l.svelte-awis0l:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-awis0l.svelte-awis0l{margin-bottom:24px}.recent-section.svelte-awis0l h3.svelte-awis0l{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-awis0l.svelte-awis0l{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-awis0l.svelte-awis0l:hover{background:#1a1a28}.recent-date.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555}.recent-entry.svelte-awis0l.svelte-awis0l{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-awis0l.svelte-awis0l{padding:24px}.tab-toolbar.svelte-awis0l.svelte-awis0l{margin-bottom:16px}.create-form.svelte-awis0l.svelte-awis0l{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-awis0l input.svelte-awis0l{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-awis0l input.svelte-awis0l:focus{outline:none;border-color:#6366f1}.form-actions.svelte-awis0l.svelte-awis0l{display:flex;gap:8px}.notes-list.svelte-awis0l.svelte-awis0l{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-awis0l.svelte-awis0l{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-awis0l.svelte-awis0l:hover{border-color:#3a3a5c}.note-card-title.svelte-awis0l.svelte-awis0l{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555}.worklog-tab.svelte-awis0l.svelte-awis0l{padding:24px}.worklog-form.svelte-awis0l.svelte-awis0l{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-awis0l input.svelte-awis0l{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-awis0l input.svelte-awis0l:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-awis0l input[type=text].svelte-awis0l{flex:1}.worklog-form.svelte-awis0l input[type=number].svelte-awis0l{width:70px}.worklog-entry.svelte-awis0l.svelte-awis0l{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-awis0l.svelte-awis0l{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-awis0l.svelte-awis0l{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-awis0l.svelte-awis0l{padding:48px 24px;text-align:center}.empty-state.svelte-awis0l p.svelte-awis0l{color:#666;margin-bottom:8px}.hint.svelte-awis0l.svelte-awis0l{font-size:13px;color:#555}.empty-actions.svelte-awis0l.svelte-awis0l{display:flex;gap:8px;justify-content:center;margin:16px 0}.empty-note.svelte-awis0l.svelte-awis0l{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-awis0l.svelte-awis0l{padding:48px 24px;text-align:center}.welcome.svelte-awis0l h2.svelte-awis0l{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-awis0l p.svelte-awis0l{color:#666;font-size:14px}.error-text.svelte-awis0l.svelte-awis0l{color:#f88}.fab.svelte-awis0l.svelte-awis0l{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-awis0l.svelte-awis0l:hover{background:#4f46e5}.modal-overlay.svelte-awis0l.svelte-awis0l{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-awis0l.svelte-awis0l{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-awis0l h3.svelte-awis0l{font-size:18px;margin-bottom:16px}.form-group.svelte-awis0l.svelte-awis0l{margin-bottom:12px}.form-group.svelte-awis0l label.svelte-awis0l{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-awis0l input.svelte-awis0l,.form-group.svelte-awis0l select.svelte-awis0l{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-awis0l select.svelte-awis0l{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-awis0l input.svelte-awis0l:focus,.form-group.svelte-awis0l select.svelte-awis0l:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-awis0l.svelte-awis0l{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-awis0l.svelte-awis0l{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-awis0l.svelte-awis0l:hover{background:#223}.btn-primary.svelte-awis0l.svelte-awis0l{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-awis0l.svelte-awis0l:hover{background:#4f46e5}.btn.svelte-awis0l.svelte-awis0l:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-awis0l.svelte-awis0l{padding:4px 10px;font-size:12px}.btn-danger.svelte-awis0l.svelte-awis0l{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-awis0l.svelte-awis0l:hover{background:#3a2222}.files-tab.svelte-awis0l.svelte-awis0l{padding:24px}.file-list.svelte-awis0l.svelte-awis0l{display:flex;flex-direction:column;gap:4px}.file-row.svelte-awis0l.svelte-awis0l{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:6px;background:#1a1a28}.file-row.svelte-awis0l.svelte-awis0l:hover{background:#223}.file-icon.svelte-awis0l.svelte-awis0l{font-size:16px;width:24px;text-align:center}.file-name.svelte-awis0l.svelte-awis0l{flex:1;font-size:13px}.file-size.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555;width:70px;text-align:right}.file-mime.svelte-awis0l.svelte-awis0l{font-size:11px;color:#555;width:120px;overflow:hidden;text-overflow:ellipsis}.file-actions.svelte-awis0l.svelte-awis0l{display:flex;gap:4px}.file-tree.svelte-awis0l.svelte-awis0l{display:flex;flex-direction:column}.tree-item.svelte-awis0l.svelte-awis0l{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px}.tree-item.svelte-awis0l.svelte-awis0l:hover{background:#223}.tree-toggle.svelte-awis0l.svelte-awis0l{cursor:pointer;font-size:10px;width:16px;text-align:center;-webkit-user-select:none;user-select:none}.tree-toggle-placeholder.svelte-awis0l.svelte-awis0l{width:16px}.tree-icon.svelte-awis0l.svelte-awis0l{font-size:14px;width:20px;text-align:center}.tree-name.svelte-awis0l.svelte-awis0l{flex:1;font-size:13px;cursor:default}.import-summary.svelte-awis0l.svelte-awis0l{margin-bottom:16px}.summary-row.svelte-awis0l.svelte-awis0l{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-awis0l.svelte-awis0l{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-CXzqY-OQ.js b/cmd/verstak-gui/frontend-dist/assets/main-CXzqY-OQ.js
deleted file mode 100644
index 17c6de8..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-CXzqY-OQ.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var _n=Object.defineProperty;var mn=(n,e,t)=>e in n?_n(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ve=(n,e,t)=>mn(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const s of r.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&l(s)}).observe(document,{childList:!0,subtree:!0});function t(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function l(i){if(i.ep)return;i.ep=!0;const r=t(i);fetch(i.href,r)}})();function J(){}function tl(n){return n()}function ut(){return Object.create(null)}function re(n){n.forEach(tl)}function ll(n){return typeof n=="function"}function Me(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Fe;function Oe(n,e){return n===e?!0:(Fe||(Fe=document.createElement("a")),Fe.href=e,n===Fe.href)}function kn(n){return Object.keys(n).length===0}function vn(n){return n??""}function a(n,e){n.appendChild(e)}function b(n,e,t){n.insertBefore(e,t||null)}function k(n){n.parentNode&&n.parentNode.removeChild(n)}function fe(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function me(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function qe(n){return function(e){e.target===this&&n.call(this,e)}}function o(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function nl(n){return n===""?null:+n}function bn(n){return Array.from(n.childNodes)}function U(n,e){e=""+e,n.data!==e&&(n.data=e)}function ue(n,e){n.value=e??""}function at(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const r=wn(e,t,{cancelable:l});return i.slice().forEach(s=>{s.call(n,r)}),!r.defaultPrevented}return!0}}function gn(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const ge=[],ft=[];let ye=[];const dt=[],yn=Promise.resolve();let Ke=!1;function jn(){Ke||(Ke=!0,yn.then(rl))}function Ie(n){ye.push(n)}const Re=new Set;let we=0;function rl(){if(we!==0)return;const n=De;do{try{for(;wen.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),ye=e}const Le=new Set;let _e;function ke(){_e={r:0,c:[],p:_e}}function ve(){_e.r||re(_e.c),_e=_e.p}function ne(n,e){n&&n.i&&(Le.delete(n),n.i(e))}function ie(n,e,t,l){if(n&&n.o){if(Le.has(n))return;Le.add(n),_e.c.push(()=>{Le.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function te(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function Dn(n,e){ie(n,1,1,()=>{e.delete(n.key)})}function Mn(n,e,t,l,i,r,s,u,c,d,m,h){let _=n.length,v=r.length,w=_;const g={};for(;w--;)g[n[w].key]=w;const y=[],M=new Map,W=new Map,q=[];for(w=v;w--;){const E=h(i,r,w),L=t(E);let C=s.get(L);C?q.push(()=>C.p(E,e)):(C=d(L,E),C.c()),M.set(L,y[w]=C),L in g&&W.set(L,Math.abs(w-g[L]))}const O=new Set,P=new Set;function T(E){ne(E,1),E.m(u,m),s.set(E.key,E),m=E.first,v--}for(;_&&v;){const E=y[v-1],L=n[_-1],C=E.key,N=L.key;E===L?(m=E.first,_--,v--):M.has(N)?!s.has(C)||O.has(C)?T(E):P.has(N)?_--:W.get(C)>W.get(N)?(P.add(C),T(E)):(O.add(N),_--):(c(L,s),_--)}for(;_--;){const E=n[_];M.has(E.key)||c(E,s)}for(;v;)T(y[v-1]);return re(q),y}function je(n){n&&n.c()}function be(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),Ie(()=>{const r=n.$$.on_mount.map(tl).filter(ll);n.$$.on_destroy?n.$$.on_destroy.push(...r):re(r),n.$$.on_mount=[]}),i.forEach(Ie)}function he(n,e){const t=n.$$;t.fragment!==null&&(Sn(t.after_update),re(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Nn(n,e){n.$$.dirty[0]===-1&&(ge.push(n),jn(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const w=v.length?v[0]:_;return d.ctx&&i(d.ctx[h],d.ctx[h]=w)&&(!d.skip_bound&&d.bound[h]&&d.bound[h](w),m&&Nn(n,h)),_}):[],d.update(),m=!0,re(d.before_update),d.fragment=l?l(d.ctx):!1,e.target){if(e.hydrate){const h=bn(e.target);d.fragment&&d.fragment.l(h),h.forEach(k)}else d.fragment&&d.fragment.c();e.intro&&ne(n.$$.fragment),be(n,e.target,e.anchor),rl()}Se(c)}class Ee{constructor(){Ve(this,"$$");Ve(this,"$$set")}$destroy(){he(this,1),this.$destroy=J}$on(e,t){if(!ll(t))return J;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!kn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const En="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(En);function Fn(n){let e,t;return{c(){e=K("path"),t=K("polyline"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(k(e),k(t))}}}function Ln(n){let e,t,l,i,r;return{c(){e=K("path"),t=K("polyline"),l=K("line"),i=K("line"),r=K("polyline"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","16"),o(l,"y1","13"),o(l,"x2","8"),o(l,"y2","13"),o(i,"x1","16"),o(i,"y1","17"),o(i,"x2","8"),o(i,"y2","17"),o(r,"points","10 9 9 9 8 9")},m(s,u){b(s,e,u),b(s,t,u),b(s,l,u),b(s,i,u),b(s,r,u)},d(s){s&&(k(e),k(t),k(l),k(i),k(r))}}}function On(n){let e,t;return{c(){e=K("polyline"),t=K("polyline"),o(e,"points","16 18 22 12 16 6"),o(t,"points","8 6 2 12 8 18")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(k(e),k(t))}}}function In(n){let e,t,l,i;return{c(){e=K("path"),t=K("polyline"),l=K("line"),i=K("rect"),o(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),o(t,"points","7 3 12 8 17 3"),o(l,"x1","3"),o(l,"y1","8"),o(l,"x2","21"),o(l,"y2","8"),o(i,"x","10"),o(i,"y","12"),o(i,"width","4"),o(i,"height","4"),o(i,"rx","1")},m(r,s){b(r,e,s),b(r,t,s),b(r,l,s),b(r,i,s)},d(r){r&&(k(e),k(t),k(l),k(i))}}}function Tn(n){let e,t,l,i,r;return{c(){e=K("path"),t=K("polyline"),l=K("line"),i=K("line"),r=K("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","9"),o(l,"y1","12"),o(l,"x2","15"),o(l,"y2","12"),o(i,"x1","9"),o(i,"y1","15"),o(i,"x2","13"),o(i,"y2","15"),o(r,"x1","12"),o(r,"y1","15"),o(r,"x2","12"),o(r,"y2","18")},m(s,u){b(s,e,u),b(s,t,u),b(s,l,u),b(s,i,u),b(s,r,u)},d(s){s&&(k(e),k(t),k(l),k(i),k(r))}}}function Pn(n){let e,t,l,i,r,s;return{c(){e=K("path"),t=K("polyline"),l=K("line"),i=K("line"),r=K("line"),s=K("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","8"),o(l,"y1","12"),o(l,"x2","16"),o(l,"y2","12"),o(i,"x1","8"),o(i,"y1","16"),o(i,"x2","16"),o(i,"y2","16"),o(r,"x1","8"),o(r,"y1","14"),o(r,"x2","12"),o(r,"y2","14"),o(s,"x1","12"),o(s,"y1","12"),o(s,"x2","12"),o(s,"y2","18")},m(u,c){b(u,e,c),b(u,t,c),b(u,l,c),b(u,i,c),b(u,r,c),b(u,s,c)},d(u){u&&(k(e),k(t),k(l),k(i),k(r),k(s))}}}function An(n){let e,t,l,i;return{c(){e=K("path"),t=K("polyline"),l=K("line"),i=K("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","16"),o(l,"y1","13"),o(l,"x2","8"),o(l,"y2","13"),o(i,"x1","16"),o(i,"y1","17"),o(i,"x2","8"),o(i,"y2","17")},m(r,s){b(r,e,s),b(r,t,s),b(r,l,s),b(r,i,s)},d(r){r&&(k(e),k(t),k(l),k(i))}}}function zn(n){let e,t,l,i,r;return{c(){e=K("path"),t=K("polyline"),l=K("line"),i=K("line"),r=K("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","8"),o(l,"y1","12"),o(l,"x2","16"),o(l,"y2","12"),o(i,"x1","8"),o(i,"y1","16"),o(i,"x2","16"),o(i,"y2","16"),o(r,"x1","8"),o(r,"y1","14"),o(r,"x2","12"),o(r,"y2","14")},m(s,u){b(s,e,u),b(s,t,u),b(s,l,u),b(s,i,u),b(s,r,u)},d(s){s&&(k(e),k(t),k(l),k(i),k(r))}}}function Bn(n){let e,t,l;return{c(){e=K("path"),t=K("circle"),l=K("circle"),o(e,"d","M9 18V5l12-2v13"),o(t,"cx","6"),o(t,"cy","18"),o(t,"r","3"),o(l,"cx","18"),o(l,"cy","16"),o(l,"r","3")},m(i,r){b(i,e,r),b(i,t,r),b(i,l,r)},d(i){i&&(k(e),k(t),k(l))}}}function Hn(n){let e,t;return{c(){e=K("rect"),t=K("polyline"),o(e,"x","2"),o(e,"y","4"),o(e,"width","20"),o(e,"height","16"),o(e,"rx","2"),o(t,"points","10 9 16 12 10 15 10 9")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(k(e),k(t))}}}function Vn(n){let e,t,l;return{c(){e=K("rect"),t=K("circle"),l=K("polyline"),o(e,"x","3"),o(e,"y","3"),o(e,"width","18"),o(e,"height","18"),o(e,"rx","2"),o(e,"ry","2"),o(t,"cx","8.5"),o(t,"cy","8.5"),o(t,"r","1.5"),o(l,"points","21 15 16 10 5 21")},m(i,r){b(i,e,r),b(i,t,r),b(i,l,r)},d(i){i&&(k(e),k(t),k(l))}}}function Wn(n){let e;return{c(){e=K("path"),o(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){b(t,e,l)},d(t){t&&k(e)}}}function Rn(n){let e;function t(r,s){return r[0]==="folder"?Wn:r[0]==="image"?Vn:r[0]==="video"?Hn:r[0]==="audio"?Bn:r[0]==="pdf"?zn:r[0]==="document"?An:r[0]==="spreadsheet"?Pn:r[0]==="presentation"?Tn:r[0]==="archive"?In:r[0]==="code"?On:r[0]==="text"?Ln:Fn}let l=t(n),i=l(n);return{c(){e=K("svg"),i.c(),o(e,"width",n[1]),o(e,"height",n[1]),o(e,"viewBox","0 0 24 24"),o(e,"fill","none"),o(e,"stroke","currentColor"),o(e,"stroke-width","1.5"),o(e,"stroke-linecap","round"),o(e,"stroke-linejoin","round"),o(e,"xmlns","http://www.w3.org/2000/svg")},m(r,s){b(r,e,s),i.m(e,null)},p(r,[s]){l!==(l=t(r))&&(i.d(1),i=l(r),i&&(i.c(),i.m(e,null))),s&2&&o(e,"width",r[1]),s&2&&o(e,"height",r[1])},i:J,o:J,d(r){r&&k(e),i.d()}}}function Kn(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=r=>{"kind"in r&&t(0,l=r.kind),"size"in r&&t(1,i=r.size)},[l,i]}class ol extends Ee{constructor(e){super(),Ne(this,e,Kn,Rn,Me,{kind:0,size:1})}}function Te(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const qn={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function Pe(n){return n?qn[n]||n:"Unknown"}function cl(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const Gn=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Un=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Jn=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Xn=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function ul(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Gn.includes(e)||Xn.includes(l)}function al(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Un.includes(e)||Jn.includes(l)&&l!=="md"&&l!=="markdown"}function fl(n){return(n.mime||"").toLowerCase().includes("pdf")}function dl(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Zn(n){return ul(n)||fl(n)}function Yn(n){return al(n)||dl(n)}function Qn(n){let e,t=Te(n[0].size)+"",l,i,r,s=n[0].mime&&pt(n);return{c(){e=f("span"),l=I(t),i=j(),s&&s.c(),r=de()},m(u,c){b(u,e,c),a(e,l),b(u,i,c),s&&s.m(u,c),b(u,r,c)},p(u,c){c&1&&t!==(t=Te(u[0].size)+"")&&U(l,t),u[0].mime?s?s.p(u,c):(s=pt(u),s.c(),s.m(r.parentNode,r)):s&&(s.d(1),s=null)},d(u){u&&(k(e),k(i),k(r)),s&&s.d(u)}}}function xn(n){let e;return{c(){e=f("span"),e.textContent="Folder"},m(t,l){b(t,e,l)},p:J,d(t){t&&k(e)}}}function pt(n){let e,t,l,i=Pe(n[0].mime)+"",r;return{c(){e=f("span"),e.textContent="·",t=j(),l=f("span"),r=I(i),o(e,"class","meta-sep svelte-18mry1k")},m(s,u){b(s,e,u),b(s,t,u),b(s,l,u),a(l,r)},p(s,u){u&1&&i!==(i=Pe(s[0].mime)+"")&&U(r,i)},d(s){s&&(k(e),k(t),k(l))}}}function $n(n){let e,t,l;return{c(){e=f("button"),e.innerHTML=' ',o(e,"class","action-btn svelte-18mry1k"),o(e,"title","Open folder"),o(e,"aria-label","Open folder")},m(i,r){b(i,e,r),t||(l=F(e,"click",me(n[24])),t=!0)},p:J,d(i){i&&k(e),t=!1,l()}}}function ei(n){let e,t,l,i,r;return{c(){e=f("button"),e.innerHTML=' ',t=j(),l=f("button"),l.innerHTML=' ',o(e,"class","action-btn svelte-18mry1k"),o(e,"title","Preview"),o(e,"aria-label","Preview"),o(l,"class","action-btn svelte-18mry1k"),o(l,"title","Open in external program"),o(l,"aria-label","Open externally")},m(s,u){b(s,e,u),b(s,t,u),b(s,l,u),i||(r=[F(e,"click",me(n[23])),F(l,"click",me(n[8]))],i=!0)},p:J,d(s){s&&(k(e),k(t),k(l)),i=!1,re(r)}}}function _t(n){let e,t,l,i,r,s,u,c,d,m,h,_;return{c(){e=f("div"),t=j(),l=f("div"),i=f("button"),i.textContent="Rename",r=j(),s=f("button"),s.textContent="Duplicate",u=j(),c=f("button"),c.textContent="Cut",d=j(),m=f("button"),m.textContent="Copy",o(e,"class","menu-backdrop svelte-18mry1k"),o(e,"role","presentation"),o(i,"class","menu-item svelte-18mry1k"),o(i,"role","menuitem"),o(s,"class","menu-item svelte-18mry1k"),o(s,"role","menuitem"),o(c,"class","menu-item svelte-18mry1k"),o(c,"role","menuitem"),o(m,"class","menu-item svelte-18mry1k"),o(m,"role","menuitem"),o(l,"class","menu svelte-18mry1k"),o(l,"role","menu")},m(v,w){b(v,e,w),b(v,t,w),b(v,l,w),a(l,i),a(l,r),a(l,s),a(l,u),a(l,c),a(l,d),a(l,m),h||(_=[F(e,"click",me(n[15])),F(i,"click",n[10]),F(s,"click",n[11]),F(c,"click",n[12]),F(m,"click",n[13]),F(l,"click",me(n[22]))],h=!0)},p:J,d(v){v&&(k(e),k(t),k(l)),h=!1,re(_)}}}function ti(n){let e,t,l,i,r,s,u=n[0].name+"",c,d,m,h,_,v,w,g,y,M,W,q,O,P,T,E,L,C,N,R;l=new ol({props:{kind:n[4],size:22}});function V(H,A){return H[5]?xn:Qn}let X=V(n)(n);function Y(H,A){return H[5]?$n:ei}let ee=Y(n)(n),x=n[2]&&_t(n);return{c(){e=f("div"),t=f("div"),je(l.$$.fragment),i=j(),r=f("div"),s=f("div"),c=I(u),m=j(),h=f("div"),X.c(),_=j(),v=f("div"),ee.c(),w=j(),g=f("button"),y=K("svg"),M=K("circle"),W=K("circle"),q=K("circle"),O=j(),P=f("button"),P.innerHTML=' ',E=j(),x&&x.c(),L=de(),o(t,"class","file-row-icon svelte-18mry1k"),o(s,"class","file-row-name svelte-18mry1k"),o(s,"title",d=n[0].name),o(h,"class","file-row-meta svelte-18mry1k"),o(r,"class","file-row-body svelte-18mry1k"),o(M,"cx","12"),o(M,"cy","5"),o(M,"r","2"),o(W,"cx","12"),o(W,"cy","12"),o(W,"r","2"),o(q,"cx","12"),o(q,"cy","19"),o(q,"r","2"),o(y,"width","16"),o(y,"height","16"),o(y,"viewBox","0 0 24 24"),o(y,"fill","currentColor"),o(g,"class","action-btn svelte-18mry1k"),o(g,"title","More actions"),o(g,"aria-label","More actions"),o(g,"aria-expanded",n[2]),o(P,"class","action-btn action-btn-danger svelte-18mry1k"),o(P,"title","Delete"),o(P,"aria-label","Delete"),o(v,"class","file-row-actions svelte-18mry1k"),o(e,"class","file-row svelte-18mry1k"),o(e,"role","button"),o(e,"tabindex","0"),o(e,"draggable","true"),o(e,"aria-label",T=n[5]?`Folder ${n[0].name}`:`File ${n[0].name}`),We(e,"file-row--selected",n[1]),We(e,"file-row--dragover",!1)},m(H,A){b(H,e,A),a(e,t),be(l,t,null),a(e,i),a(e,r),a(r,s),a(s,c),a(r,m),a(r,h),X.m(h,null),a(e,_),a(e,v),ee.m(v,null),a(v,w),a(v,g),a(g,y),a(y,M),a(y,W),a(y,q),a(v,O),a(v,P),b(H,E,A),x&&x.m(H,A),b(H,L,A),C=!0,N||(R=[F(window,"click",n[15]),F(g,"click",me(n[14])),F(P,"click",me(n[9])),F(e,"click",n[6]),F(e,"keydown",n[7]),F(e,"dragstart",n[16]),F(e,"dragover",n[17]),F(e,"drop",n[18])],N=!0)},p(H,[A]){(!C||A&1)&&u!==(u=H[0].name+"")&&U(c,u),(!C||A&1&&d!==(d=H[0].name))&&o(s,"title",d),X.p(H,A),ee.p(H,A),(!C||A&4)&&o(g,"aria-expanded",H[2]),(!C||A&1&&T!==(T=H[5]?`Folder ${H[0].name}`:`File ${H[0].name}`))&&o(e,"aria-label",T),(!C||A&2)&&We(e,"file-row--selected",H[1]),H[2]?x?x.p(H,A):(x=_t(H),x.c(),x.m(L.parentNode,L)):x&&(x.d(1),x=null)},i(H){C||(ne(l.$$.fragment,H),C=!0)},o(H){ie(l.$$.fragment,H),C=!1},d(H){H&&(k(e),k(E),k(L)),he(l),X.d(),ee.d(),x&&x.d(H),N=!1,re(R)}}}function li(n,e,t){let{item:l}=e,{selected:i=!1}=e,{onDragStart:r}=e,{onDragOver:s}=e,{onDrop:u}=e;const c=Ue(),d=cl(l),m=l.type==="folder";let h=!1,_=null;function v(B){B.ctrlKey||B.metaKey?c("toggleSelect",l.id):B.shiftKey?c("rangeSelect",l.id):_?(clearTimeout(_),_=null,m?c("navigate",l.id):c("preview",l)):_=setTimeout(()=>{_=null,i?m?c("navigate",l.id):c("preview",l):c("selectOne",l.id)},250)}function w(B){B.key==="Enter"&&(m?c("navigate",l.id):c("preview",l))}function g(){c("openExternal",l.fileId)}function y(){c("delete",{id:l.id,type:l.type})}function M(){t(2,h=!1),c("rename",{id:l.id,name:l.name})}function W(){t(2,h=!1),c("duplicate",l.id)}function q(){t(2,h=!1),c("cut",l.id)}function O(){t(2,h=!1),c("copy",l.id)}function P(){t(2,h=!h)}function T(){t(2,h=!1)}function E(B){r&&r(B,l.id)}function L(B){s&&m&&s(B,l.id)}function C(B){u&&m&&u(B,l.id)}function N(B){gn.call(this,n,B)}const R=()=>c("preview",l),V=()=>c("navigate",l.id);return n.$$set=B=>{"item"in B&&t(0,l=B.item),"selected"in B&&t(1,i=B.selected),"onDragStart"in B&&t(19,r=B.onDragStart),"onDragOver"in B&&t(20,s=B.onDragOver),"onDrop"in B&&t(21,u=B.onDrop)},[l,i,h,c,d,m,v,w,g,y,M,W,q,O,P,T,E,L,C,r,s,u,N,R,V]}class ni extends Ee{constructor(e){super(),Ne(this,e,li,ti,Me,{item:0,selected:1,onDragStart:19,onDragOver:20,onDrop:21})}}function mt(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function ii(n){let e;return{c(){e=f("span"),e.textContent="/",o(e,"class","sep svelte-csi2lb")},m(t,l){b(t,e,l)},d(t){t&&k(e)}}}function si(n){let e,t=n[4].name+"",l,i,r;function s(){return n[2](n[6])}return{c(){e=f("button"),l=I(t),o(e,"class","crumb crumb--link svelte-csi2lb")},m(u,c){b(u,e,c),a(e,l),i||(r=F(e,"click",s),i=!0)},p(u,c){n=u,c&1&&t!==(t=n[4].name+"")&&U(l,t)},d(u){u&&k(e),i=!1,r()}}}function ri(n){let e,t=n[4].name+"",l;return{c(){e=f("span"),l=I(t),o(e,"class","crumb crumb--current svelte-csi2lb")},m(i,r){b(i,e,r),a(e,l)},p(i,r){r&1&&t!==(t=i[4].name+"")&&U(l,t)},d(i){i&&k(e)}}}function kt(n){let e,t,l=n[6]>0&&ii();function i(u,c){return u[6]===u[0].length-1?ri:si}let r=i(n),s=r(n);return{c(){l&&l.c(),e=j(),s.c(),t=de()},m(u,c){l&&l.m(u,c),b(u,e,c),s.m(u,c),b(u,t,c)},p(u,c){r===(r=i(u))&&s?s.p(u,c):(s.d(1),s=r(u),s&&(s.c(),s.m(t.parentNode,t)))},d(u){u&&(k(e),k(t)),l&&l.d(u),s.d(u)}}}function oi(n){let e,t=te(n[0]),l=[];for(let i=0;ir(u);return n.$$set=u=>{"crumbs"in u&&t(0,l=u.crumbs)},[l,r,s]}class pl extends Ee{constructor(e){super(),Ne(this,e,ci,oi,Me,{crumbs:0})}}function ui(n){let e,t,l,i,r,s;return{c(){e=f("div"),t=f("p"),t.textContent="Preview is not available for this file type.",l=j(),i=f("button"),i.textContent="Open in external program",o(i,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(u,c){b(u,e,c),a(e,t),a(e,l),a(e,i),r||(s=F(i,"click",n[9]),r=!0)},p:J,d(u){u&&k(e),r=!1,s()}}}function ai(n){let e,t;function l(s,u){return u&2&&(e=null),e==null&&(e=!!(s[1]&&s[1].startsWith("data:"))),e?ki:mi}let i=l(n,-1),r=i(n);return{c(){r.c(),t=de()},m(s,u){r.m(s,u),b(s,t,u)},p(s,u){i===(i=l(s,u))&&r?r.p(s,u):(r.d(1),r=i(s),r&&(r.c(),r.m(t.parentNode,t)))},d(s){s&&k(t),r.d(s)}}}function fi(n){let e,t,l;return{c(){e=f("pre"),t=f("code"),l=I(n[1]),o(e,"class","preview-text svelte-1ybaoro")},m(i,r){b(i,e,r),a(e,t),a(t,l)},p(i,r){r&2&&U(l,i[1])},d(i){i&&k(e)}}}function di(n){let e,t,l,i;return{c(){e=f("div"),t=f("img"),Oe(t.src,l=n[1])||o(t,"src",l),o(t,"alt",i=n[0].name),o(t,"class","preview-image svelte-1ybaoro"),o(e,"class","preview-image-container svelte-1ybaoro")},m(r,s){b(r,e,s),a(e,t)},p(r,s){s&2&&!Oe(t.src,l=r[1])&&o(t,"src",l),s&1&&i!==(i=r[0].name)&&o(t,"alt",i)},d(r){r&&k(e)}}}function pi(n){let e,t,l,i,r,s,u;return{c(){e=f("div"),t=f("p"),l=I(n[3]),i=j(),r=f("button"),r.textContent="Open in external program",o(r,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(c,d){b(c,e,d),a(e,t),a(t,l),a(e,i),a(e,r),s||(u=F(r,"click",n[9]),s=!0)},p(c,d){d&8&&U(l,c[3])},d(c){c&&k(e),s=!1,u()}}}function _i(n){let e;return{c(){e=f("div"),e.innerHTML="Loading preview...
",o(e,"class","preview-status svelte-1ybaoro")},m(t,l){b(t,e,l)},p:J,d(t){t&&k(e)}}}function mi(n){let e,t,l,i,r,s;return{c(){e=f("div"),t=f("p"),t.textContent="PDF preview is not available in this environment.",l=j(),i=f("button"),i.textContent="Open in external program",o(i,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(u,c){b(u,e,c),a(e,t),a(e,l),a(e,i),r||(s=F(i,"click",n[9]),r=!0)},p:J,d(u){u&&k(e),r=!1,s()}}}function ki(n){let e,t,l;return{c(){e=f("div"),t=f("embed"),Oe(t.src,l=n[1])||o(t,"src",l),o(t,"type","application/pdf"),o(t,"class","preview-pdf svelte-1ybaoro"),o(e,"class","preview-pdf-container svelte-1ybaoro")},m(i,r){b(i,e,r),a(e,t)},p(i,r){r&2&&!Oe(t.src,l=i[1])&&o(t,"src",l)},d(i){i&&k(e)}}}function vi(n){let e,t,l,i,r,s,u,c=n[0].name+"",d,m,h,_,v=Te(n[0].size)+"",w,g,y=Pe(n[0].mime)+"",M,W,q,O,P,T,E,L,C,N,R,V;r=new ol({props:{kind:n[8],size:18}});function B(z,ee){return z[2]?_i:z[3]?pi:z[6]&&z[1]?di:z[5]&&z[1]?fi:z[4]?ai:ui}let X=B(n),Y=X(n);return{c(){e=f("div"),t=f("div"),l=f("header"),i=f("div"),je(r.$$.fragment),s=j(),u=f("span"),d=I(c),h=j(),_=f("div"),w=I(v),g=I(" · "),M=I(y),W=j(),q=f("div"),O=f("button"),O.innerHTML=' ',P=j(),T=f("button"),T.innerHTML=' ',E=j(),L=f("div"),Y.c(),o(u,"class","preview-name svelte-1ybaoro"),o(u,"title",m=n[0].name),o(i,"class","preview-title svelte-1ybaoro"),o(_,"class","preview-meta svelte-1ybaoro"),o(O,"class","action-btn svelte-1ybaoro"),o(O,"title","Open in external program"),o(O,"aria-label","Open externally"),o(T,"class","action-btn svelte-1ybaoro"),o(T,"title","Close"),o(T,"aria-label","Close preview"),o(q,"class","preview-actions svelte-1ybaoro"),o(l,"class","preview-header svelte-1ybaoro"),o(L,"class","preview-body svelte-1ybaoro"),o(t,"class","modal svelte-1ybaoro"),o(e,"class","overlay svelte-1ybaoro"),o(e,"role","dialog"),o(e,"aria-modal","true"),o(e,"aria-label",C=`Preview: ${n[0].name}`)},m(z,ee){b(z,e,ee),a(e,t),a(t,l),a(l,i),be(r,i,null),a(i,s),a(i,u),a(u,d),a(l,h),a(l,_),a(_,w),a(_,g),a(_,M),a(l,W),a(l,q),a(q,O),a(q,P),a(q,T),a(t,E),a(t,L),Y.m(L,null),N=!0,R||(V=[F(O,"click",n[9]),F(T,"click",n[10]),F(e,"click",qe(n[11]))],R=!0)},p(z,[ee]){(!N||ee&1)&&c!==(c=z[0].name+"")&&U(d,c),(!N||ee&1&&m!==(m=z[0].name))&&o(u,"title",m),(!N||ee&1)&&v!==(v=Te(z[0].size)+"")&&U(w,v),(!N||ee&1)&&y!==(y=Pe(z[0].mime)+"")&&U(M,y),X===(X=B(z))&&Y?Y.p(z,ee):(Y.d(1),Y=X(z),Y&&(Y.c(),Y.m(L,null))),(!N||ee&1&&C!==(C=`Preview: ${z[0].name}`))&&o(e,"aria-label",C)},i(z){N||(ne(r.$$.fragment,z),N=!0)},o(z){ie(r.$$.fragment,z),N=!1},d(z){z&&k(e),he(r),Y.d(),R=!1,re(V)}}}function bi(n,e,t){let l,i,r,{item:s}=e,{content:u=""}=e,{loading:c=!1}=e,{error:d=""}=e;const m=Ue(),h=cl(s);function _(y){y.key==="Escape"&&m("close")}function v(){m("openExternal",s.fileId)}il(()=>{window.addEventListener("keydown",_)}),sl(()=>{window.removeEventListener("keydown",_)});const w=()=>m("close"),g=()=>m("close");return n.$$set=y=>{"item"in y&&t(0,s=y.item),"content"in y&&t(1,u=y.content),"loading"in y&&t(2,c=y.loading),"error"in y&&t(3,d=y.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=ul(s)&&u&&u.startsWith("data:")),n.$$.dirty&1&&t(5,i=al(s)||dl(s)),n.$$.dirty&1&&t(4,r=fl(s))},[s,u,c,d,r,i,l,m,h,v,w,g]}class hi extends Ee{constructor(e){super(),Ne(this,e,bi,vi,Me,{item:0,content:1,loading:2,error:3})}}function vt(n,e,t){const l=n.slice();return l[121]=e[t],l}function bt(n,e,t){const l=n.slice();return l[124]=e[t],l}function ht(n,e,t){const l=n.slice();return l[135]=e[t],l}function wt(n,e,t){const l=n.slice();return l[132]=e[t],l}function gt(n,e,t){const l=n.slice();return l[127]=e[t],l}function yt(n,e,t){const l=n.slice();return l[124]=e[t],l}function jt(n,e,t){const l=n.slice();return l[127]=e[t],l}function Ct(n,e,t){const l=n.slice();return l[140]=e[t],l}function St(n,e,t){const l=n.slice();return l[121]=e[t],l}function Dt(n,e,t){const l=n.slice();return l[145]=e[t],l}function Mt(n,e,t){const l=n.slice();return l[148]=e[t],l}function Nt(n){let e,t=n[148].label+"",l,i,r,s,u;function c(){return n[69](n[148])}return{c(){e=f("button"),l=I(t),i=j(),o(e,"class",r="nav-item "+(n[4]===n[148].id?"selected":"")+" svelte-1rwjkun")},m(d,m){b(d,e,m),a(e,l),a(e,i),s||(u=F(e,"click",c),s=!0)},p(d,m){n=d,m[0]&1&&t!==(t=n[148].label+"")&&U(l,t),m[0]&17&&r!==(r="nav-item "+(n[4]===n[148].id?"selected":"")+" svelte-1rwjkun")&&o(e,"class",r)},d(d){d&&k(e),s=!1,u()}}}function Et(n){let e,t,l,i,r,s=n[1].length>0&&Ft(n),u=te(n[1]),c=[];for(let m=0;m0?s?s.p(m,h):(s=Ft(m),s.c(),s.m(t,null)):s&&(s.d(1),s=null),h[0]&34|h[1]&8){u=te(m[1]);let _;for(_=0;_0)return Mi;if(u[3])return Di}let r=i(n),s=r&&r(n);return{c(){e=f("div"),t=f("h2"),t.textContent="Верстак",l=j(),s&&s.c(),o(t,"class","svelte-1rwjkun"),o(e,"class","welcome svelte-1rwjkun")},m(u,c){b(u,e,c),a(e,t),a(e,l),s&&s.m(e,null)},p(u,c){r===(r=i(u))&&s?s.p(u,c):(s&&s.d(1),s=r&&r(u),s&&(s.c(),s.m(e,null)))},i:J,o:J,d(u){u&&k(e),s&&s.d()}}}function Ci(n){let e,t,l,i,r,s,u=te(n[32]),c=[];for(let _=0;_{m[w]=null}),ve()),~i?(r=m[i],r?r.p(_,v):(r=m[i]=d[i](_),r.c()),ne(r,1),r.m(l,null)):r=null)},i(_){s||(ne(r),s=!0)},o(_){ie(r),s=!1},d(_){_&&(k(e),k(t),k(l)),fe(c,_),~i&&m[i].d()}}}function Si(n){let e,t,l,i=n[8].title+"",r,s,u,c,d,m,h,_,v,w,g,y=n[8].dirty&&Xt();return{c(){e=f("div"),t=f("div"),l=f("span"),r=I(i),s=j(),y&&y.c(),u=j(),c=f("div"),d=f("button"),d.textContent="Сохранить",m=j(),h=f("button"),h.textContent="Закрыть",_=j(),v=f("textarea"),o(l,"class","note-title svelte-1rwjkun"),o(d,"class","btn btn-primary svelte-1rwjkun"),o(h,"class","btn svelte-1rwjkun"),o(c,"class","note-editor-actions svelte-1rwjkun"),o(t,"class","note-editor-header svelte-1rwjkun"),o(v,"class","note-textarea svelte-1rwjkun"),o(v,"placeholder","Начните писать..."),o(e,"class","note-editor svelte-1rwjkun")},m(M,W){b(M,e,W),a(e,t),a(t,l),a(l,r),a(t,s),y&&y.m(t,null),a(t,u),a(t,c),a(c,d),a(c,m),a(c,h),a(e,_),a(e,v),ue(v,n[8].content),w||(g=[F(d,"click",n[61]),F(h,"click",n[59]),F(v,"input",n[72]),F(v,"input",n[60])],w=!0)},p(M,W){W[0]&256&&i!==(i=M[8].title+"")&&U(r,i),M[8].dirty?y||(y=Xt(),y.c(),y.m(t,u)):y&&(y.d(1),y=null),W[0]&256&&ue(v,M[8].content)},i:J,o:J,d(M){M&&k(e),y&&y.d(),w=!1,re(g)}}}function Di(n){let e,t,l;return{c(){e=f("p"),t=I("Ошибка: "),l=I(n[3]),o(e,"class","error-text svelte-1rwjkun")},m(i,r){b(i,e,r),a(e,t),a(e,l)},p(i,r){r[0]&8&&U(l,i[3])},d(i){i&&k(e)}}}function Mi(n){let e,t,l;return{c(){e=f("p"),e.textContent="Выберите раздел в боковой панели.",t=j(),l=f("p"),l.textContent="Или создайте новое дело кнопкой «+».",o(e,"class","svelte-1rwjkun"),o(l,"class","hint svelte-1rwjkun")},m(i,r){b(i,e,r),b(i,t,r),b(i,l,r)},p:J,d(i){i&&(k(e),k(t),k(l))}}}function Ni(n){let e;return{c(){e=f("p"),e.textContent="Загрузка...",o(e,"class","svelte-1rwjkun")},m(t,l){b(t,e,l)},p:J,d(t){t&&k(e)}}}function Pt(n){let e,t=n[140].label+"",l,i,r;function s(){return n[73](n[140])}return{c(){e=f("button"),l=I(t),o(e,"class",vn(n[68](n[140].id))+" svelte-1rwjkun")},m(u,c){b(u,e,c),a(e,l),i||(r=F(e,"click",s),i=!0)},p(u,c){n=u},d(u){u&&k(e),i=!1,r()}}}function Ei(n){let e;return{c(){e=f("div"),e.innerHTML='Активность появится позже
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){b(t,e,l)},p:J,i:J,o:J,d(t){t&&k(e)}}}function Fi(n){let e,t,l,i,r,s,u,c,d,m,h,_;function v(y,M){return y[10].length===0?Ai:Pi}let w=v(n),g=w(n);return{c(){e=f("div"),t=f("div"),l=f("input"),i=j(),r=f("input"),s=j(),u=f("button"),c=I("Записать"),m=j(),g.c(),o(l,"type","text"),o(l,"placeholder","Что сделано"),o(l,"class","svelte-1rwjkun"),o(r,"type","number"),o(r,"placeholder","Мин"),o(r,"min","1"),o(r,"class","svelte-1rwjkun"),o(u,"class","btn btn-primary svelte-1rwjkun"),u.disabled=d=!n[12].trim()||!n[11],o(t,"class","worklog-form svelte-1rwjkun"),o(e,"class","worklog-tab svelte-1rwjkun")},m(y,M){b(y,e,M),a(e,t),a(t,l),ue(l,n[12]),a(t,i),a(t,r),ue(r,n[11]),a(t,s),a(t,u),a(u,c),a(e,m),g.m(e,null),h||(_=[F(l,"input",n[94]),F(r,"input",n[95]),F(u,"click",n[62])],h=!0)},p(y,M){M[0]&4096&&l.value!==y[12]&&ue(l,y[12]),M[0]&2048&&nl(r.value)!==y[11]&&ue(r,y[11]),M[0]&6144&&d!==(d=!y[12].trim()||!y[11])&&(u.disabled=d),w===(w=v(y))&&g?g.p(y,M):(g.d(1),g=w(y),g&&(g.c(),g.m(e,null)))},i:J,o:J,d(y){y&&k(e),g.d(),h=!1,re(_)}}}function Li(n){let e;function t(r,s){return r[9].length===0?Bi:zi}let l=t(n),i=l(n);return{c(){i.c(),e=de()},m(r,s){i.m(r,s),b(r,e,s)},p(r,s){l===(l=t(r))&&i?i.p(r,s):(i.d(1),i=l(r),i&&(i.c(),i.m(e.parentNode,e)))},i:J,o:J,d(r){r&&k(e),i.d(r)}}}function Oi(n){let e,t,l,i,r,s,u,c,d,m,h,_,v,w,g,y,M,W,q,O=n[30].items.length>0&&Bt(n);const P=[Vi,Hi],T=[];function E(N,R){return N[22]?0:1}_=E(n),v=T[_]=P[_](n);let L=n[19]&&!n[21]&&Vt(),C=n[26]&&Wt(n);return{c(){e=f("div"),t=f("div"),l=f("button"),i=I("+ Добавить файл"),r=j(),s=f("button"),u=I("+ Добавить папку"),c=j(),d=f("button"),d.textContent="+ Новый файл",m=j(),O&&O.c(),h=j(),v.c(),w=j(),L&&L.c(),g=j(),C&&C.c(),y=de(),o(l,"class","btn btn-primary svelte-1rwjkun"),l.disabled=n[19],o(s,"class","btn svelte-1rwjkun"),s.disabled=n[19],o(d,"class","btn svelte-1rwjkun"),o(t,"class","tab-toolbar svelte-1rwjkun"),o(e,"class","files-tab svelte-1rwjkun")},m(N,R){b(N,e,R),a(e,t),a(t,l),a(l,i),a(t,r),a(t,s),a(s,u),a(t,c),a(t,d),a(t,m),O&&O.m(t,null),a(e,h),T[_].m(e,null),a(e,w),L&&L.m(e,null),b(N,g,R),C&&C.m(N,R),b(N,y,R),M=!0,W||(q=[F(l,"click",n[63]),F(s,"click",n[64]),F(d,"click",n[41])],W=!0)},p(N,R){(!M||R[0]&524288)&&(l.disabled=N[19]),(!M||R[0]&524288)&&(s.disabled=N[19]),N[30].items.length>0?O?O.p(N,R):(O=Bt(N),O.c(),O.m(t,null)):O&&(O.d(1),O=null);let V=_;_=E(N),_===V?T[_].p(N,R):(ke(),ie(T[V],1,1,()=>{T[V]=null}),ve(),v=T[_],v?v.p(N,R):(v=T[_]=P[_](N),v.c()),ne(v,1),v.m(e,w)),N[19]&&!N[21]?L||(L=Vt(),L.c(),L.m(e,null)):L&&(L.d(1),L=null),N[26]?C?(C.p(N,R),R[0]&67108864&&ne(C,1)):(C=Wt(N),C.c(),ne(C,1),C.m(y.parentNode,y)):C&&(ke(),ie(C,1,1,()=>{C=null}),ve())},i(N){M||(ne(v),ne(C),M=!0)},o(N){ie(v),ie(C),M=!1},d(N){N&&(k(e),k(g),k(y)),O&&O.d(),T[_].d(),L&&L.d(),C&&C.d(N),W=!1,re(q)}}}function Ii(n){let e,t,l,i,r,s,u,c=n[16]&&Rt(n);function d(_,v){return _[7].length===0&&!_[16]?Ui:Gi}let m=d(n),h=m(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent="+ Добавить заметку",i=j(),c&&c.c(),r=j(),h.c(),o(l,"class","btn btn-primary svelte-1rwjkun"),o(t,"class","tab-toolbar svelte-1rwjkun"),o(e,"class","notes-tab svelte-1rwjkun")},m(_,v){b(_,e,v),a(e,t),a(t,l),a(e,i),c&&c.m(e,null),a(e,r),h.m(e,null),s||(u=F(l,"click",n[55]),s=!0)},p(_,v){_[16]?c?c.p(_,v):(c=Rt(_),c.c(),c.m(e,r)):c&&(c.d(1),c=null),m===(m=d(_))&&h?h.p(_,v):(h.d(1),h=m(_),h&&(h.c(),h.m(e,null)))},i:J,o:J,d(_){_&&k(e),c&&c.d(),h.d(),s=!1,u()}}}function Ti(n){let e,t,l=n[5].title+"",i,r,s,u,c,d,m=n[5].type+"",h,_,v,w,g,y=(n[5].section||"—")+"",M,W,q,O,P,T=pe(n[5].createdAt)+"",E,L,C,N,R,V,B,X,Y,z,ee,x,H,A,Z=n[7].length>0&&qt(n),G=n[10].length>0&&Ut(n);return{c(){e=f("div"),t=f("h2"),i=I(l),r=j(),s=f("div"),u=f("div"),c=f("span"),c.textContent="Тип",d=f("span"),h=I(m),_=j(),v=f("div"),w=f("span"),w.textContent="Раздел",g=f("span"),M=I(y),W=j(),q=f("div"),O=f("span"),O.textContent="Создано",P=f("span"),E=I(T),L=j(),C=f("div"),N=f("button"),N.textContent="✏️ Новая заметка",R=j(),V=f("button"),V.textContent="📎 Добавить файл",B=j(),X=f("button"),X.textContent="⚡ Добавить действие",Y=j(),z=f("button"),z.textContent="🕐 Записать время",ee=j(),Z&&Z.c(),x=j(),G&&G.c(),o(t,"class","svelte-1rwjkun"),o(c,"class","meta-label svelte-1rwjkun"),o(d,"class","svelte-1rwjkun"),o(u,"class","meta-item svelte-1rwjkun"),o(w,"class","meta-label svelte-1rwjkun"),o(g,"class","svelte-1rwjkun"),o(v,"class","meta-item svelte-1rwjkun"),o(O,"class","meta-label svelte-1rwjkun"),o(P,"class","svelte-1rwjkun"),o(q,"class","meta-item svelte-1rwjkun"),o(s,"class","meta-grid svelte-1rwjkun"),o(N,"class","qa-btn svelte-1rwjkun"),o(V,"class","qa-btn svelte-1rwjkun"),o(X,"class","qa-btn svelte-1rwjkun"),X.disabled=!0,o(X,"title","Следующий этап"),o(z,"class","qa-btn svelte-1rwjkun"),o(C,"class","quick-actions svelte-1rwjkun"),o(e,"class","overview svelte-1rwjkun")},m(S,Q){b(S,e,Q),a(e,t),a(t,i),a(e,r),a(e,s),a(s,u),a(u,c),a(u,d),a(d,h),a(s,_),a(s,v),a(v,w),a(v,g),a(g,M),a(s,W),a(s,q),a(q,O),a(q,P),a(P,E),a(e,L),a(e,C),a(C,N),a(C,R),a(C,V),a(C,B),a(C,X),a(C,Y),a(C,z),a(e,ee),Z&&Z.m(e,null),a(e,x),G&&G.m(e,null),H||(A=[F(N,"click",n[74]),F(V,"click",n[75]),F(z,"click",n[76])],H=!0)},p(S,Q){Q[0]&32&&l!==(l=S[5].title+"")&&U(i,l),Q[0]&32&&m!==(m=S[5].type+"")&&U(h,m),Q[0]&32&&y!==(y=(S[5].section||"—")+"")&&U(M,y),Q[0]&32&&T!==(T=pe(S[5].createdAt)+"")&&U(E,T),S[7].length>0?Z?Z.p(S,Q):(Z=qt(S),Z.c(),Z.m(e,x)):Z&&(Z.d(1),Z=null),S[10].length>0?G?G.p(S,Q):(G=Ut(S),G.c(),G.m(e,null)):G&&(G.d(1),G=null)},i:J,o:J,d(S){S&&k(e),Z&&Z.d(),G&&G.d(),H=!1,re(A)}}}function Pi(n){let e,t=te(n[10]),l=[];for(let i=0;iЗаписей работы пока нет',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){b(t,e,l)},p:J,d(t){t&&k(e)}}}function At(n){let e,t,l=n[124].summary+"",i,r,s,u=n[124].minutes+"",c,d,m=pe(n[124].createdAt)+"",h,_;return{c(){e=f("div"),t=f("div"),i=I(l),r=j(),s=f("div"),c=I(u),d=I(" мин · "),h=I(m),_=j(),o(t,"class","svelte-1rwjkun"),o(s,"class","wl-meta svelte-1rwjkun"),o(e,"class","worklog-entry svelte-1rwjkun")},m(v,w){b(v,e,w),a(e,t),a(t,i),a(e,r),a(e,s),a(s,c),a(s,d),a(s,h),a(e,_)},p(v,w){w[0]&1024&&l!==(l=v[124].summary+"")&&U(i,l),w[0]&1024&&u!==(u=v[124].minutes+"")&&U(c,u),w[0]&1024&&m!==(m=pe(v[124].createdAt)+"")&&U(h,m)},d(v){v&&k(e)}}}function zi(n){let e,t=te(n[9]),l=[];for(let i=0;iДействий пока нет',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){b(t,e,l)},p:J,d(t){t&&k(e)}}}function zt(n){let e,t,l=n[135].title+"",i,r,s=n[135].type+"",u,c,d,m,h,_;function v(){return n[93](n[135])}return{c(){e=f("div"),t=f("span"),i=I(l),r=f("span"),u=I(s),c=j(),d=f("button"),d.textContent="Запустить",m=j(),o(t,"class","svelte-1rwjkun"),o(r,"class","action-type svelte-1rwjkun"),o(d,"class","btn btn-sm svelte-1rwjkun"),o(e,"class","action-card svelte-1rwjkun")},m(w,g){b(w,e,g),a(e,t),a(t,i),a(e,r),a(r,u),a(e,c),a(e,d),a(e,m),h||(_=F(d,"click",v),h=!0)},p(w,g){n=w,g[0]&512&&l!==(l=n[135].title+"")&&U(i,l),g[0]&512&&s!==(s=n[135].type+"")&&U(u,s)},d(w){w&&k(e),h=!1,_()}}}function Bt(n){let e,t,l=n[30].items.length+"",i,r,s;return{c(){e=f("button"),t=I("Вставить "),i=I(l),o(e,"class","btn svelte-1rwjkun")},m(u,c){b(u,e,c),a(e,t),a(e,i),r||(s=F(e,"click",n[46]),r=!0)},p(u,c){c[0]&1073741824&&l!==(l=u[30].items.length+"")&&U(i,l)},d(u){u&&k(e),r=!1,s()}}}function Hi(n){let e,t,l,i,r,s,u;const c=[Ri,Wi],d=[];function m(w,g){return w[24].length>0?0:1}e=m(n),t=d[e]=c[e](n);const h=[qi,Ki],_=[];function v(w,g){return w[25].length===0?0:1}return i=v(n),r=_[i]=h[i](n),{c(){t.c(),l=j(),r.c(),s=de()},m(w,g){d[e].m(w,g),b(w,l,g),_[i].m(w,g),b(w,s,g),u=!0},p(w,g){let y=e;e=m(w),e===y?d[e].p(w,g):(ke(),ie(d[y],1,1,()=>{d[y]=null}),ve(),t=d[e],t?t.p(w,g):(t=d[e]=c[e](w),t.c()),ne(t,1),t.m(l.parentNode,l));let M=i;i=v(w),i===M?_[i].p(w,g):(ke(),ie(_[M],1,1,()=>{_[M]=null}),ve(),r=_[i],r?r.p(w,g):(r=_[i]=h[i](w),r.c()),ne(r,1),r.m(s.parentNode,s))},i(w){u||(ne(t),ne(r),u=!0)},o(w){ie(t),ie(r),u=!1},d(w){w&&(k(l),k(s)),d[e].d(w),_[i].d(w)}}}function Vi(n){let e;return{c(){e=f("div"),e.innerHTML='Загрузка...
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){b(t,e,l)},p:J,i:J,o:J,d(t){t&&k(e)}}}function Wi(n){let e,t;return e=new pl({props:{crumbs:[{name:"Files"}]}}),{c(){je(e.$$.fragment)},m(l,i){be(e,l,i),t=!0},p:J,i(l){t||(ne(e.$$.fragment,l),t=!0)},o(l){ie(e.$$.fragment,l),t=!1},d(l){he(e,l)}}}function Ri(n){let e,t,l,i,r,s;return e=new pl({props:{crumbs:[{name:"Files"},...n[24]]}}),e.$on("navigate",n[81]),{c(){je(e.$$.fragment),t=j(),l=f("button"),l.textContent="← Back",o(l,"class","btn btn-sm back-btn svelte-1rwjkun")},m(u,c){be(e,u,c),b(u,t,c),b(u,l,c),i=!0,r||(s=F(l,"click",n[37]),r=!0)},p(u,c){const d={};c[0]&16777216&&(d.crumbs=[{name:"Files"},...u[24]]),e.$set(d)},i(u){i||(ne(e.$$.fragment,u),i=!0)},o(u){ie(e.$$.fragment,u),i=!1},d(u){u&&(k(t),k(l)),he(e,u),r=!1,s()}}}function Ki(n){let e,t=[],l=new Map,i,r=te(n[25]);const s=u=>u[132].id;for(let u=0;u0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",s,u,c,d,m,h,_,v,w,g;return{c(){e=f("div"),t=f("div"),t.innerHTML=' ',l=j(),i=f("p"),s=I(r),u=j(),c=f("p"),c.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",d=j(),m=f("div"),h=f("button"),h.textContent="Добавить файл",_=j(),v=f("button"),v.textContent="Добавить папку",o(t,"class","empty-icon svelte-1rwjkun"),o(i,"class","svelte-1rwjkun"),o(c,"class","hint svelte-1rwjkun"),o(h,"class","btn btn-primary svelte-1rwjkun"),o(v,"class","btn svelte-1rwjkun"),o(m,"class","empty-actions svelte-1rwjkun"),o(e,"class","empty-state svelte-1rwjkun")},m(y,M){b(y,e,M),a(e,t),a(e,l),a(e,i),a(i,s),a(e,u),a(e,c),a(e,d),a(e,m),a(m,h),a(m,_),a(m,v),w||(g=[F(h,"click",n[63]),F(v,"click",n[64])],w=!0)},p(y,M){M[0]&16777216&&r!==(r=y[24].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&U(s,r)},i:J,o:J,d(y){y&&k(e),w=!1,re(g)}}}function Ht(n,e){let t,l,i;return l=new ni({props:{item:e[132],selected:e[31].includes(e[132].id),onDragStart:e[49],onDragOver:e[50],onDrop:e[51]}}),l.$on("navigate",e[82]),l.$on("preview",e[83]),l.$on("openExternal",e[84]),l.$on("delete",e[85]),l.$on("rename",e[86]),l.$on("duplicate",e[87]),l.$on("cut",e[88]),l.$on("copy",e[89]),l.$on("selectOne",e[90]),l.$on("toggleSelect",e[91]),{key:n,first:null,c(){t=de(),je(l.$$.fragment),this.first=t},m(r,s){b(r,t,s),be(l,r,s),i=!0},p(r,s){e=r;const u={};s[0]&33554432&&(u.item=e[132]),s[0]&33554432|s[1]&1&&(u.selected=e[31].includes(e[132].id)),l.$set(u)},i(r){i||(ne(l.$$.fragment,r),i=!0)},o(r){ie(l.$$.fragment,r),i=!1},d(r){r&&k(t),he(l,r)}}}function Vt(n){let e;return{c(){e=f("div"),e.innerHTML='Сканирование...
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){b(t,e,l)},d(t){t&&k(e)}}}function Wt(n){let e,t;return e=new hi({props:{item:n[26],content:n[27],loading:n[28],error:n[29]}}),e.$on("close",n[40]),e.$on("openExternal",n[92]),{c(){je(e.$$.fragment)},m(l,i){be(e,l,i),t=!0},p(l,i){const r={};i[0]&67108864&&(r.item=l[26]),i[0]&134217728&&(r.content=l[27]),i[0]&268435456&&(r.loading=l[28]),i[0]&536870912&&(r.error=l[29]),e.$set(r)},i(l){t||(ne(e.$$.fragment,l),t=!0)},o(l){ie(e.$$.fragment,l),t=!1},d(l){he(e,l)}}}function Rt(n){let e,t,l,i,r,s,u,c,d;return{c(){e=f("div"),t=f("input"),l=j(),i=f("div"),r=f("button"),r.textContent="Создать",s=j(),u=f("button"),u.textContent="Отмена",o(t,"type","text"),o(t,"placeholder","Название заметки"),o(t,"class","svelte-1rwjkun"),o(r,"class","btn btn-primary svelte-1rwjkun"),o(u,"class","btn svelte-1rwjkun"),o(i,"class","form-actions svelte-1rwjkun"),o(e,"class","create-form svelte-1rwjkun")},m(m,h){b(m,e,h),a(e,t),ue(t,n[17]),a(e,l),a(e,i),a(i,r),a(i,s),a(i,u),c||(d=[F(t,"input",n[78]),F(t,"keydown",n[79]),F(r,"click",n[57]),F(u,"click",n[56])],c=!0)},p(m,h){h[0]&131072&&t.value!==m[17]&&ue(t,m[17])},d(m){m&&k(e),c=!1,re(d)}}}function Gi(n){let e,t=te(n[7]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){b(t,e,l)},p:J,d(t){t&&k(e)}}}function Kt(n){let e,t,l=n[127].title+"",i,r,s,u=pe(n[127].createdAt)+"",c,d,m,h;function _(){return n[80](n[127])}return{c(){e=f("div"),t=f("div"),i=I(l),r=j(),s=f("div"),c=I(u),d=j(),o(t,"class","note-card-title svelte-1rwjkun"),o(s,"class","note-card-date svelte-1rwjkun"),o(e,"class","note-card svelte-1rwjkun")},m(v,w){b(v,e,w),a(e,t),a(t,i),a(e,r),a(e,s),a(s,c),a(e,d),m||(h=F(e,"click",_),m=!0)},p(v,w){n=v,w[0]&128&&l!==(l=n[127].title+"")&&U(i,l),w[0]&128&&u!==(u=pe(n[127].createdAt)+"")&&U(c,u)},d(v){v&&k(e),m=!1,h()}}}function qt(n){let e,t,l,i=te(n[7].slice(0,5)),r=[];for(let s=0;sn[98].call(v)),o(m,"class","form-group svelte-1rwjkun"),o(y,"class","btn btn-primary svelte-1rwjkun"),o(W,"class","btn svelte-1rwjkun"),o(g,"class","modal-actions svelte-1rwjkun"),o(t,"class","modal svelte-1rwjkun"),o(e,"class","modal-overlay svelte-1rwjkun")},m(E,L){b(E,e,L),a(e,t),a(t,l),a(t,i),a(t,r),a(r,s),a(r,u),a(r,c),ue(c,n[14]),a(t,d),a(t,m),a(m,h),a(m,_),a(m,v);for(let C=0;C⚒ Верстак ',i=j(),r=f("nav"),s=f("div"),u=f("div"),u.textContent="Разделы",c=j();for(let S=0;S{x[ae]=null}),ve(),P=x[O],P?P.p(S,Q):(P=x[O]=ee[O](S),P.c()),ne(P,1),P.m(g,T)),!S[8]&&!S[5]?A?A.p(S,Q):(A=Zt(S),A.c(),A.m(g,E)):A&&(A.d(1),A=null),S[13]?Z?Z.p(S,Q):(Z=Yt(S),Z.c(),Z.m(g,L)):Z&&(Z.d(1),Z=null),S[21]&&S[20]?G?G.p(S,Q):(G=xt(S),G.c(),G.m(g,null)):G&&(G.d(1),G=null)},i(S){C||(ne(P),C=!0)},o(S){ie(P),C=!1},d(S){S&&k(e),fe(R,S),V&&V.d(),Y.d(),z&&z.d(),x[O].d(),A&&A.d(),Z&&Z.d(),G&&G.d()}}}function $(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function pe(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}const el=n=>n.id!=="today"&&n.id!=="inbox";function Xi(n,e,t){let l=[],i=[],r="",s="",u="",c=null,d="overview",m=[],h=null,_=[],v=[],w=[],g="",y="",M=!1,W="",q="clients",O=!1,P="",T=!0,E=!1,L=null,C=!1,N="",R=!1,V=null,B=[],X=[],Y=null,z="",ee=!1,x="",H={items:[],mode:"copy"},A=[],Z=[];const G=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let S=null;il(async()=>{try{t(2,r=await $("VerstakVersion")||"verstak-gui/v2"),t(0,l=await $("ListSections")||[])}catch(p){t(3,s=String(p)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Tl),S=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",nt),t(18,T=!1)}),sl(()=>{S&&S(),window.removeEventListener("keydown",nt)});async function Q(p){t(4,u=p),t(5,c=null),t(6,d="overview"),t(7,m=[]),_=[],t(9,v=[]),t(10,w=[]),t(13,M=!1),t(3,s="");try{t(1,i=await $("ListNodesBySection",p)||[])}catch(D){t(3,s=String(D)),t(1,i=[])}}async function ae(p){t(5,c=p),t(6,d="overview"),t(7,m=[]),_=[],t(9,v=[]),t(10,w=[]),t(25,X=[]),t(24,B=[]),t(23,V=null),t(26,Y=null),t(27,z=""),t(31,A=[]),Z=[],t(8,h=null),t(13,M=!1),t(16,O=!1),t(3,s=""),await oe(p.id)}async function oe(p){try{t(7,m=await $("ListNotes",p)||[])}catch{}try{_=await $("ListFiles",p)||[]}catch{}try{t(9,v=await $("ListActions",p)||[])}catch{}try{t(10,w=await $("ListWorklog",p)||[])}catch{}}async function se(p){t(22,R=!0);try{let D=await $("ListItems",p)||[];D.sort((le,ce)=>le.type!==ce.type?le.type==="folder"?-1:1:(le.name||"").localeCompare(ce.name||"")),t(25,X=D)}catch{t(25,X=[])}t(22,R=!1)}async function Je(p){if(c){try{const D=await $("GetNodeDetail",p);D&&t(24,B=[...B,{id:p,name:D.title}])}catch{t(24,B=[...B,{id:p,name:"..."}])}t(23,V=p),await se(p)}}function _l(){if(B.length<2)t(24,B=[]),t(23,V=null),se(c.id);else{const p=B[B.length-2];t(24,B=B.slice(0,-1)),t(23,V=p.id),se(p.id)}}function Xe(p){const D=B[p];t(24,B=B.slice(0,p+1)),t(23,V=D.id),se(D.id)}async function Ze(p){t(26,Y=p),t(27,z=""),t(29,x=""),t(28,ee=!0);try{Zn(p)?t(27,z=await $("GetFileBase64",p.fileId)||""):Yn(p)&&t(27,z=await $("ReadFileText",p.fileId)||"")}catch(D){t(29,x=String(D))}t(28,ee=!1)}function ml(){t(26,Y=null),t(27,z=""),t(29,x="")}async function kl(){const p=prompt("Введите имя файла:");if(!(!p||!p.trim()))try{const D=V||c.id;await $("CreateEmptyFile",D,p.trim()),await se(D)}catch(D){t(3,s=String(D))}}async function Ye(p){try{await $("DuplicateNode",p);const D=V||c.id;await se(D)}catch(D){t(3,s=String(D))}}function Qe(p){const D=prompt("Новое имя:");!D||!D.trim()||vl(p,D.trim())}async function vl(p,D){try{await $("RenameNode",p,D);const le=V||c.id;await se(le)}catch(le){t(3,s=String(le))}}function xe(p){t(30,H={items:[p],mode:"cut"})}function $e(p){t(30,H={items:[p],mode:"copy"})}async function et(){if(H.items.length===0)return;const p=V||c.id;try{if(H.mode==="copy")for(const D of H.items)await $("DuplicateNode",D);else for(const D of H.items)await $("MoveNode",D,p);t(30,H={items:[],mode:"copy"}),await se(p)}catch(D){t(3,s=String(D))}}function tt(p){A.includes(p)?t(31,A=A.filter(D=>D!==p)):t(31,A=[...A,p])}function lt(p){t(31,A=[p])}function bl(){t(31,A=X.map(p=>p.id))}function Ae(p){return p.length>0?p:X.map(D=>D.id)}async function hl(){var ce;const p=Ae(A),D=p.length===1&&((ce=X.find(Ce=>Ce.id===p[0]))==null?void 0:ce.type)==="folder"?"папку":`файлов (${p.length})`;if(!confirm(`Удалить ${D}?`))return;for(const Ce of p)try{await $("DeleteFileOrFolder",Ce)}catch(pn){t(3,s=String(pn))}t(31,A=[]);const le=V||c.id;await se(le)}function wl(){const p=Ae(A);t(30,H={items:p,mode:"cut"}),t(31,A=[])}function gl(){const p=Ae(A);t(30,H={items:p,mode:"copy"}),t(31,A=[])}function yl(p,D){const le=A.includes(D)?A:[D];Z=le,p.dataTransfer.effectAllowed="move",p.dataTransfer.setData("text/plain",le.join(","))}function jl(p,D){const le=X.find(ce=>ce.id===D);le&&le.type==="folder"&&(p.preventDefault(),p.dataTransfer.dropEffect="move")}async function Cl(p,D){if(p.preventDefault(),Z.length!==0){for(const le of Z)try{await $("MoveNode",le,D)}catch(ce){t(3,s=String(ce))}Z=[],t(31,A=[]),await se(V||c.id)}}function nt(p){d==="files"&&(p.target.tagName==="INPUT"||p.target.tagName==="TEXTAREA"||(p.ctrlKey||p.metaKey?p.key==="c"?(p.preventDefault(),gl()):p.key==="x"?(p.preventDefault(),wl()):p.key==="v"?(p.preventDefault(),et()):p.key==="a"&&(p.preventDefault(),bl()):(p.key==="Delete"||p.key==="Backspace")&&A.length>0&&(p.preventDefault(),hl())))}function Sl(){t(13,M=!0),t(14,W=""),t(15,q=u||"clients")}function Dl(){t(13,M=!1),t(14,W="")}async function it(){if(W.trim())try{const p=await $("CreateNode","","case",W.trim(),q);t(13,M=!1),t(14,W=""),await Q(q)}catch(p){t(3,s=String(p))}}function st(){t(16,O=!0),t(17,P="")}function Ml(){t(16,O=!1),t(17,P="")}async function rt(){if(!(!P.trim()||!c))try{const p=await $("CreateNote",c.id,P.trim());t(7,m=[...m,p&&p.id?p:{id:Date.now().toString(),title:P.trim(),createdAt:new Date().toISOString()}]),t(16,O=!1),t(17,P="")}catch{const D={id:Date.now().toString(),title:P.trim(),createdAt:new Date().toISOString()};t(7,m=[...m,D]),t(16,O=!1),t(17,P="")}}async function ze(p){if(!(h&&h.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const D=await $("ReadNote",p.id);t(8,h={id:p.id,title:p.title,content:D||"",dirty:!1})}catch{t(8,h={id:p.id,title:p.title,content:"# "+p.title+`
-
-`,dirty:!1})}}function Nl(){h&&h.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,h=null)}function El(p){h&&(t(8,h.content=p.target.value,h),t(8,h.dirty=!0,h))}async function Fl(){if(h)try{await $("SaveNote",h.id,h.content),t(8,h.dirty=!1,h)}catch{t(8,h.dirty=!1,h)}}async function Ll(){const p=parseInt(g,10);if(!(!y.trim()||isNaN(p)||p<=0||!c)){try{const D=await $("CreateWorklog",c.id,y.trim(),p);t(10,w=[...w,D&&D.id?D:{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:p,createdAt:new Date().toISOString()}])}catch{t(10,w=[...w,{id:Date.now().toString(),nodeId:c.id,summary:y.trim(),minutes:p,createdAt:new Date().toISOString()}])}t(12,y=""),t(11,g="")}}async function ot(){const p=await $("PickFile");p&&await Be(c.id,p)}async function Ol(){const p=await $("PickDirectory");p&&await Be(c.id,p)}async function Be(p,D){t(19,E=!0);try{const le=await $("PreviewImport",D);t(20,L=le),N=D,t(21,C=!0)}catch(le){t(3,s=String(le))}t(19,E=!1)}async function He(p){try{const D=p==="copy"?await $("AddPathCopy",c.id,N):await $("AddPathLink",c.id,N);t(21,C=!1),t(20,L=null),t(24,B=[]),t(23,V=null),await Promise.all([oe(c.id),se(c.id)])}catch(D){t(3,s=String(D))}}function Il(){t(21,C=!1),t(20,L=null)}async function ct({id:p,type:D}){if(confirm(`Удалить ${D==="folder"?"папку":"файл"}?`))try{await $("DeleteFileOrFolder",p),_=_.filter(Ce=>Ce.nodeId!==p);const ce=V||c.id;await se(ce)}catch(ce){t(3,s=String(ce))}}async function Tl(p){if(!p||p.length===0)return;if(!c){t(3,s="Сначала выберите дело для добавления файлов");return}const D=p[0];await Be(c.id,D)}function Pl(p){return d===p?"tab active":"tab"}const Al=p=>Q(p.id),zl=p=>ae(p),Bl=()=>t(3,s="");function Hl(){h.content=this.value,t(8,h)}const Vl=p=>{t(6,d=p.id),p.id==="files"&&c&&X.length===0&&!V&&se(c.id)},Wl=()=>{t(6,d="notes"),st()},Rl=()=>{t(6,d="files"),ot()},Kl=()=>t(6,d="worklog"),ql=p=>ze(p);function Gl(){P=this.value,t(17,P)}const Ul=p=>p.key==="Enter"&&rt(),Jl=p=>ze(p),Xl=p=>{const D=p.detail;D===0?(t(24,B=[]),t(23,V=null),se(c.id)):Xe(D-1)},Zl=p=>Je(p.detail),Yl=p=>Ze(p.detail),Ql=p=>$("OpenFile",p.detail),xl=p=>ct(p.detail),$l=p=>Qe(p.detail.id),en=p=>Ye(p.detail),tn=p=>xe(p.detail),ln=p=>$e(p.detail),nn=p=>lt(p.detail),sn=p=>tt(p.detail),rn=p=>$("OpenFile",p.detail),on=p=>$("RunAction",p.id);function cn(){y=this.value,t(12,y)}function un(){g=nl(this.value),t(11,g)}function an(){W=this.value,t(14,W)}const fn=p=>p.key==="Enter"&&it();function dn(){q=hn(this),t(15,q),t(0,l)}return[l,i,r,s,u,c,d,m,h,v,w,g,y,M,W,q,O,P,T,E,L,C,R,V,B,X,Y,z,ee,x,H,A,G,Q,ae,se,Je,_l,Xe,Ze,ml,kl,Ye,Qe,xe,$e,et,tt,lt,yl,jl,Cl,Sl,Dl,it,st,Ml,rt,ze,Nl,El,Fl,Ll,ot,Ol,He,Il,ct,Pl,Al,zl,Bl,Hl,Vl,Wl,Rl,Kl,ql,Gl,Ul,Jl,Xl,Zl,Yl,Ql,xl,$l,en,tn,ln,nn,sn,rn,on,cn,un,an,fn,dn,()=>He("copy"),()=>He("link")]}class Zi extends Ee{constructor(e){super(),Ne(this,e,Xi,Ji,Me,{},null,[-1,-1,-1,-1,-1])}}new Zi({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-CmkweTP0.js b/cmd/verstak-gui/frontend-dist/assets/main-CmkweTP0.js
deleted file mode 100644
index 3f88270..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-CmkweTP0.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var _l=Object.defineProperty;var pl=(l,e,t)=>e in l?_l(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var Se=(l,e,t)=>pl(l,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function t(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(s){if(s.ep)return;s.ep=!0;const o=t(s);fetch(s.href,o)}})();function j(){}function Mt(l){return l()}function Be(){return Object.create(null)}function ne(l){l.forEach(Mt)}function At(l){return typeof l=="function"}function Lt(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}function ml(l){return Object.keys(l).length===0}function hl(l){return l??""}function a(l,e){l.appendChild(e)}function C(l,e,t){l.insertBefore(e,t||null)}function y(l){l.parentNode&&l.parentNode.removeChild(l)}function oe(l,e){for(let t=0;tl.removeEventListener(e,t,n)}function Et(l){return function(e){e.target===this&&l.call(this,e)}}function u(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function Ft(l){return l===""?null:+l}function vl(l){return Array.from(l.childNodes)}function H(l,e){e=""+e,l.data!==e&&(l.data=e)}function se(l,e){l.value=e??""}function He(l,e,t,n){t==null?l.style.removeProperty(e):l.style.setProperty(e,t,"")}function qe(l,e,t){for(let n=0;n{const s=l.$$.callbacks[e];if(s){const o=wl(e,t,{cancelable:n});return s.slice().forEach(i=>{i.call(l,o)}),!o.defaultPrevented}return!0}}function Me(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const de=[],ge=[];let _e=[];const Le=[],Cl=Promise.resolve();let Ee=!1;function Nl(){Ee||(Ee=!0,Cl.then(Ot))}function ke(l){_e.push(l)}function Re(l){Le.push(l)}const Ae=new Set;let ue=0;function Ot(){if(ue!==0)return;const l=be;do{try{for(;uel.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),_e=e}const we=new Set;let ae;function me(){ae={r:0,c:[],p:ae}}function he(){ae.r||ne(ae.c),ae=ae.p}function $(l,e){l&&l.i&&(we.delete(l),l.i(e))}function ie(l,e,t,n){if(l&&l.o){if(we.has(l))return;we.add(l),ae.c.push(()=>{we.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}function Q(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function Al(l,e){ie(l,1,1,()=>{e.delete(l.key)})}function Ll(l,e,t,n,s,o,i,r,c,f,d,m){let p=l.length,h=o.length,w=p;const b={};for(;w--;)b[l[w].key]=w;const v=[],M=new Map,A=new Map,O=[];for(w=h;w--;){const N=m(s,o,w),F=t(N);let L=i.get(F);L?O.push(()=>L.p(N,e)):(L=f(F,N),L.c()),M.set(F,v[w]=L),F in b&&A.set(F,Math.abs(w-b[F]))}const I=new Set,D=new Set;function T(N){$(N,1),N.m(r,d),i.set(N.key,N),d=N.first,h--}for(;p&&h;){const N=v[h-1],F=l[p-1],L=N.key,K=F.key;N===F?(d=N.first,p--,h--):M.has(K)?!i.has(L)||I.has(L)?T(N):D.has(K)?p--:A.get(L)>A.get(K)?(D.add(L),T(N)):(I.add(K),p--):(c(F,i),p--)}for(;p--;){const N=l[p];M.has(N.key)||c(N,i)}for(;h;)T(v[h-1]);return ne(O),v}function je(l,e,t){const n=l.$$.props[e];n!==void 0&&(l.$$.bound[n]=t,t(l.$$.ctx[n]))}function It(l){l&&l.c()}function Oe(l,e,t){const{fragment:n,after_update:s}=l.$$;n&&n.m(e,t),ke(()=>{const o=l.$$.on_mount.map(Mt).filter(At);l.$$.on_destroy?l.$$.on_destroy.push(...o):ne(o),l.$$.on_mount=[]}),s.forEach(ke)}function Ie(l,e){const t=l.$$;t.fragment!==null&&(Ml(t.after_update),ne(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function El(l,e){l.$$.dirty[0]===-1&&(de.push(l),Nl(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const w=h.length?h[0]:p;return f.ctx&&s(f.ctx[m],f.ctx[m]=w)&&(!f.skip_bound&&f.bound[m]&&f.bound[m](w),d&&El(l,m)),p}):[],f.update(),d=!0,ne(f.before_update),f.fragment=n?n(f.ctx):!1,e.target){if(e.hydrate){const m=vl(e.target);f.fragment&&f.fragment.l(m),m.forEach(y)}else f.fragment&&f.fragment.c();e.intro&&$(l.$$.fragment),Oe(l,e.target,e.anchor),Ot()}ve(c)}class Pt{constructor(){Se(this,"$$");Se(this,"$$set")}$destroy(){Ie(this,1),this.$destroy=j}$on(e,t){if(!At(t))return j;const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const s=n.indexOf(t);s!==-1&&n.splice(s,1)}}$set(e){this.$$set&&!ml(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Fl="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Fl);function ze(l,e,t){const n=l.slice();return n[13]=e[t],n}function Ol(l){let e,t,n,s,o,i=l[2].name+"",r,c,f,d=l[2].size>0?(l[2].size/1024).toFixed(1)+" KB":"—",m,p,h,w=(l[2].mime||"")+"",b,v,M,A,O,I,D,T;return{c(){e=_("span"),t=S(),n=_("span"),n.textContent="📄",s=S(),o=_("span"),r=E(i),c=S(),f=_("span"),m=E(d),p=S(),h=_("span"),b=E(w),v=S(),M=_("div"),A=_("button"),A.textContent="▶",O=S(),I=_("button"),I.textContent="✕",u(e,"class","tree-toggle-placeholder"),u(n,"class","tree-icon"),u(o,"class","tree-name"),u(f,"class","file-size"),u(h,"class","file-mime"),u(A,"class","btn btn-sm"),u(A,"title","Открыть"),u(I,"class","btn btn-sm btn-danger"),u(I,"title","Удалить"),u(M,"class","file-actions")},m(N,F){C(N,e,F),C(N,t,F),C(N,n,F),C(N,s,F),C(N,o,F),a(o,r),C(N,c,F),C(N,f,F),a(f,m),C(N,p,F),C(N,h,F),a(h,b),C(N,v,F),C(N,M,F),a(M,A),a(M,O),a(M,I),D||(T=[B(A,"click",l[7]),B(I,"click",l[6])],D=!0)},p(N,F){F&4&&i!==(i=N[2].name+"")&&H(r,i),F&4&&d!==(d=N[2].size>0?(N[2].size/1024).toFixed(1)+" KB":"—")&&H(m,d),F&4&&w!==(w=(N[2].mime||"")+"")&&H(b,w)},d(N){N&&(y(e),y(t),y(n),y(s),y(o),y(c),y(f),y(p),y(h),y(v),y(M)),D=!1,ne(T)}}}function Il(l){let e,t=l[4]?"⏳":l[0][l[2].id]?"▼":"▶",n,s,o,i,r,c=l[2].name+"",f,d,m,p,h,w,b,v;return{c(){e=_("button"),n=E(t),s=S(),o=_("span"),o.textContent="📁",i=S(),r=_("span"),f=E(c),d=S(),m=_("div"),p=_("button"),p.textContent="📂",h=S(),w=_("button"),w.textContent="✕",u(e,"class","tree-toggle-btn"),u(o,"class","tree-icon"),u(r,"class","tree-name"),u(p,"class","btn btn-sm"),u(p,"title","Открыть папку"),u(w,"class","btn btn-sm btn-danger"),u(w,"title","Удалить"),u(m,"class","file-actions")},m(M,A){C(M,e,A),a(e,n),C(M,s,A),C(M,o,A),C(M,i,A),C(M,r,A),a(r,f),C(M,d,A),C(M,m,A),a(m,p),a(m,h),a(m,w),b||(v=[B(e,"click",l[5]),B(p,"click",l[8]),B(w,"click",l[6])],b=!0)},p(M,A){A&21&&t!==(t=M[4]?"⏳":M[0][M[2].id]?"▼":"▶")&&H(n,t),A&4&&c!==(c=M[2].name+"")&&H(f,c)},d(M){M&&(y(e),y(s),y(o),y(i),y(r),y(d),y(m)),b=!1,ne(v)}}}function We(l){let e,t,n=Q(l[1][l[2].id]),s=[];for(let i=0;iie(s[i],1,1,()=>{s[i]=null});return{c(){for(let i=0;i{c=null}),he())},i(f){s||($(c),s=!0)},o(f){ie(c),s=!1},d(f){f&&(y(e),y(t),y(n)),r.d(),c&&c.d(f)}}}function Pl(l,...e){var t,n,s;try{const o=(s=(n=(t=window==null?void 0:window.go)==null?void 0:t.main)==null?void 0:n.App)==null?void 0:s[l];if(typeof o=="function")return o(...e)}catch(o){console.error("Wails call error:",l,o)}}function Tl(l,e,t){let{item:n}=e,{expanded:s={}}=e,{childrenMap:o={}}=e,{depth:i=0}=e;const r=yl();let c=!1;async function f(){const v=n.id;if(s[v]){t(0,s={...s,[v]:!1});return}if(t(4,c=!0),t(0,s={...s,[v]:!0}),!o[v]){try{t(1,o[v]=await Pl("ListItems",v)||[],o)}catch{t(1,o[v]=[],o)}t(1,o={...o})}t(4,c=!1)}function d(){r("delete",n.id)}function m(){r("open",n.fileId)}function p(){r("openFolder",n.id)}function h(v){Me.call(this,l,v)}function w(v){Me.call(this,l,v)}function b(v){Me.call(this,l,v)}return l.$$set=v=>{"item"in v&&t(2,n=v.item),"expanded"in v&&t(0,s=v.expanded),"childrenMap"in v&&t(1,o=v.childrenMap),"depth"in v&&t(3,i=v.depth)},[s,o,n,i,c,f,d,m,p,h,w,b]}class Tt extends Pt{constructor(e){super(),Dt(this,e,Tl,Dl,Lt,{item:2,expanded:0,childrenMap:1,depth:3})}}function Ve(l,e,t){const n=l.slice();return n[80]=e[t],n}function Ue(l,e,t){const n=l.slice();return n[83]=e[t],n}function Ge(l,e,t){const n=l.slice();return n[94]=e[t],n}function Je(l,e,t){const n=l.slice();return n[91]=e[t],n}function Qe(l,e,t){const n=l.slice();return n[86]=e[t],n}function Xe(l,e,t){const n=l.slice();return n[83]=e[t],n}function Ye(l,e,t){const n=l.slice();return n[86]=e[t],n}function Ze(l,e,t){const n=l.slice();return n[99]=e[t],n}function $e(l,e,t){const n=l.slice();return n[80]=e[t],n}function xe(l,e,t){const n=l.slice();return n[104]=e[t],n}function et(l,e,t){const n=l.slice();return n[107]=e[t],n}function tt(l){let e,t=l[107].label+"",n,s,o,i,r;function c(){return l[48](l[107])}return{c(){e=_("button"),n=E(t),s=S(),u(e,"class",o="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-awis0l")},m(f,d){C(f,e,d),a(e,n),a(e,s),i||(r=B(e,"click",c),i=!0)},p(f,d){l=f,d[0]&1&&t!==(t=l[107].label+"")&&H(n,t),d[0]&17&&o!==(o="nav-item "+(l[4]===l[107].id?"selected":"")+" svelte-awis0l")&&u(e,"class",o)},d(f){f&&y(e),i=!1,r()}}}function lt(l){let e,t,n,s,o,i=l[1].length>0&&nt(l),r=Q(l[1]),c=[];for(let d=0;d0?i?i.p(d,m):(i=nt(d),i.c(),i.m(t,null)):i&&(i.d(1),i=null),m[0]&268435490){r=Q(d[1]);let p;for(p=0;p0)return Kl;if(r[3])return Wl}let o=s(l),i=o&&o(l);return{c(){e=_("div"),t=_("h2"),t.textContent="Верстак",n=S(),i&&i.c(),u(t,"class","svelte-awis0l"),u(e,"class","welcome svelte-awis0l")},m(r,c){C(r,e,c),a(e,t),a(e,n),i&&i.m(e,null)},p(r,c){o===(o=s(r))&&i?i.p(r,c):(i&&i.d(1),i=o&&o(r),i&&(i.c(),i.m(e,null)))},i:j,o:j,d(r){r&&y(e),i&&i.d()}}}function jl(l){let e,t,n,s,o,i,r=Q(l[26]),c=[];for(let p=0;p{d[w]=null}),he()),~s?(o=d[s],o?o.p(p,h):(o=d[s]=f[s](p),o.c()),$(o,1),o.m(n,null)):o=null)},i(p){i||($(o),i=!0)},o(p){ie(o),i=!1},d(p){p&&(y(e),y(t),y(n)),oe(c,p),~s&&d[s].d()}}}function zl(l){let e,t,n,s=l[8].title+"",o,i,r,c,f,d,m,p,h,w,b,v=l[8].dirty&&wt();return{c(){e=_("div"),t=_("div"),n=_("span"),o=E(s),i=S(),v&&v.c(),r=S(),c=_("div"),f=_("button"),f.textContent="Сохранить",d=S(),m=_("button"),m.textContent="Закрыть",p=S(),h=_("textarea"),u(n,"class","note-title svelte-awis0l"),u(f,"class","btn btn-primary svelte-awis0l"),u(m,"class","btn svelte-awis0l"),u(c,"class","note-editor-actions svelte-awis0l"),u(t,"class","note-editor-header svelte-awis0l"),u(h,"class","note-textarea svelte-awis0l"),u(h,"placeholder","Начните писать..."),u(e,"class","note-editor svelte-awis0l")},m(M,A){C(M,e,A),a(e,t),a(t,n),a(n,o),a(t,i),v&&v.m(t,null),a(t,r),a(t,c),a(c,f),a(c,d),a(c,m),a(e,p),a(e,h),se(h,l[8].content),w||(b=[B(f,"click",l[39]),B(m,"click",l[37]),B(h,"input",l[51]),B(h,"input",l[38])],w=!0)},p(M,A){A[0]&256&&s!==(s=M[8].title+"")&&H(o,s),M[8].dirty?v||(v=wt(),v.c(),v.m(t,r)):v&&(v.d(1),v=null),A[0]&256&&se(h,M[8].content)},i:j,o:j,d(M){M&&y(e),v&&v.d(),w=!1,ne(b)}}}function Wl(l){let e,t,n;return{c(){e=_("p"),t=E("Ошибка: "),n=E(l[3]),u(e,"class","error-text svelte-awis0l")},m(s,o){C(s,e,o),a(e,t),a(e,n)},p(s,o){o[0]&8&&H(n,s[3])},d(s){s&&y(e)}}}function Kl(l){let e,t,n;return{c(){e=_("p"),e.textContent="Выберите раздел в боковой панели.",t=S(),n=_("p"),n.textContent="Или создайте новое дело кнопкой «+».",u(e,"class","svelte-awis0l"),u(n,"class","hint svelte-awis0l")},m(s,o){C(s,e,o),C(s,t,o),C(s,n,o)},p:j,d(s){s&&(y(e),y(t),y(n))}}}function Vl(l){let e;return{c(){e=_("p"),e.textContent="Загрузка...",u(e,"class","svelte-awis0l")},m(t,n){C(t,e,n)},p:j,d(t){t&&y(e)}}}function rt(l){let e,t=l[99].label+"",n,s,o;function i(){return l[52](l[99])}return{c(){e=_("button"),n=E(t),u(e,"class",hl(l[47](l[99].id))+" svelte-awis0l")},m(r,c){C(r,e,c),a(e,n),s||(o=B(e,"click",i),s=!0)},p(r,c){l=r},d(r){r&&y(e),s=!1,o()}}}function Ul(l){let e;return{c(){e=_("div"),e.innerHTML='Активность появится позже
',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},p:j,i:j,o:j,d(t){t&&y(e)}}}function Gl(l){let e,t,n,s,o,i,r,c,f,d,m,p;function h(v,M){return v[10].length===0?$l:Zl}let w=h(l),b=w(l);return{c(){e=_("div"),t=_("div"),n=_("input"),s=S(),o=_("input"),i=S(),r=_("button"),c=E("Записать"),d=S(),b.c(),u(n,"type","text"),u(n,"placeholder","Что сделано"),u(n,"class","svelte-awis0l"),u(o,"type","number"),u(o,"placeholder","Мин"),u(o,"min","1"),u(o,"class","svelte-awis0l"),u(r,"class","btn btn-primary svelte-awis0l"),r.disabled=f=!l[12].trim()||!l[11],u(t,"class","worklog-form svelte-awis0l"),u(e,"class","worklog-tab svelte-awis0l")},m(v,M){C(v,e,M),a(e,t),a(t,n),se(n,l[12]),a(t,s),a(t,o),se(o,l[11]),a(t,i),a(t,r),a(r,c),a(e,d),b.m(e,null),m||(p=[B(n,"input",l[66]),B(o,"input",l[67]),B(r,"click",l[40])],m=!0)},p(v,M){M[0]&4096&&n.value!==v[12]&&se(n,v[12]),M[0]&2048&&Ft(o.value)!==v[11]&&se(o,v[11]),M[0]&6144&&f!==(f=!v[12].trim()||!v[11])&&(r.disabled=f),w===(w=h(v))&&b?b.p(v,M):(b.d(1),b=w(v),b&&(b.c(),b.m(e,null)))},i:j,o:j,d(v){v&&y(e),b.d(),m=!1,ne(p)}}}function Jl(l){let e;function t(o,i){return o[9].length===0?en:xl}let n=t(l),s=n(l);return{c(){s.c(),e=pe()},m(o,i){s.m(o,i),C(o,e,i)},p(o,i){n===(n=t(o))&&s?s.p(o,i):(s.d(1),s=n(o),s&&(s.c(),s.m(e.parentNode,e)))},i:j,o:j,d(o){o&&y(e),s.d(o)}}}function Ql(l){let e,t,n,s,o,i,r,c,f,d,m,p,h,w;const b=[nn,ln,tn],v=[];function M(O,I){return O[25]?0:O[22].length===0?1:2}f=M(l),d=v[f]=b[f](l);let A=l[19]&&!l[21]&&dt();return{c(){e=_("div"),t=_("div"),n=_("button"),s=E("+ Добавить файл"),o=S(),i=_("button"),r=E("+ Добавить папку"),c=S(),d.c(),m=S(),A&&A.c(),u(n,"class","btn btn-primary svelte-awis0l"),n.disabled=l[19],u(i,"class","btn svelte-awis0l"),i.disabled=l[19],u(t,"class","tab-toolbar svelte-awis0l"),u(e,"class","files-tab svelte-awis0l")},m(O,I){C(O,e,I),a(e,t),a(t,n),a(n,s),a(t,o),a(t,i),a(i,r),a(e,c),v[f].m(e,null),a(e,m),A&&A.m(e,null),p=!0,h||(w=[B(n,"click",l[41]),B(i,"click",l[42])],h=!0)},p(O,I){(!p||I[0]&524288)&&(n.disabled=O[19]),(!p||I[0]&524288)&&(i.disabled=O[19]);let D=f;f=M(O),f===D?v[f].p(O,I):(me(),ie(v[D],1,1,()=>{v[D]=null}),he(),d=v[f],d?d.p(O,I):(d=v[f]=b[f](O),d.c()),$(d,1),d.m(e,m)),O[19]&&!O[21]?A||(A=dt(),A.c(),A.m(e,null)):A&&(A.d(1),A=null)},i(O){p||($(d),p=!0)},o(O){ie(d),p=!1},d(O){O&&y(e),v[f].d(),A&&A.d(),h=!1,ne(w)}}}function Xl(l){let e,t,n,s,o,i,r,c=l[16]&&_t(l);function f(p,h){return p[7].length===0&&!p[16]?on:sn}let d=f(l),m=d(l);return{c(){e=_("div"),t=_("div"),n=_("button"),n.textContent="+ Добавить заметку",s=S(),c&&c.c(),o=S(),m.c(),u(n,"class","btn btn-primary svelte-awis0l"),u(t,"class","tab-toolbar svelte-awis0l"),u(e,"class","notes-tab svelte-awis0l")},m(p,h){C(p,e,h),a(e,t),a(t,n),a(e,s),c&&c.m(e,null),a(e,o),m.m(e,null),i||(r=B(n,"click",l[33]),i=!0)},p(p,h){p[16]?c?c.p(p,h):(c=_t(p),c.c(),c.m(e,o)):c&&(c.d(1),c=null),d===(d=f(p))&&m?m.p(p,h):(m.d(1),m=d(p),m&&(m.c(),m.m(e,null)))},i:j,o:j,d(p){p&&y(e),c&&c.d(),m.d(),i=!1,r()}}}function Yl(l){let e,t,n=l[5].title+"",s,o,i,r,c,f,d=l[5].type+"",m,p,h,w,b,v=(l[5].section||"—")+"",M,A,O,I,D,T=re(l[5].createdAt)+"",N,F,L,K,V,z,x,J,X,U,ee,Z,te,G,R=l[7].length>0&&mt(l),P=l[10].length>0&&vt(l);return{c(){e=_("div"),t=_("h2"),s=E(n),o=S(),i=_("div"),r=_("div"),c=_("span"),c.textContent="Тип",f=_("span"),m=E(d),p=S(),h=_("div"),w=_("span"),w.textContent="Раздел",b=_("span"),M=E(v),A=S(),O=_("div"),I=_("span"),I.textContent="Создано",D=_("span"),N=E(T),F=S(),L=_("div"),K=_("button"),K.textContent="✏️ Новая заметка",V=S(),z=_("button"),z.textContent="📎 Добавить файл",x=S(),J=_("button"),J.textContent="⚡ Добавить действие",X=S(),U=_("button"),U.textContent="🕐 Записать время",ee=S(),R&&R.c(),Z=S(),P&&P.c(),u(t,"class","svelte-awis0l"),u(c,"class","meta-label svelte-awis0l"),u(f,"class","svelte-awis0l"),u(r,"class","meta-item svelte-awis0l"),u(w,"class","meta-label svelte-awis0l"),u(b,"class","svelte-awis0l"),u(h,"class","meta-item svelte-awis0l"),u(I,"class","meta-label svelte-awis0l"),u(D,"class","svelte-awis0l"),u(O,"class","meta-item svelte-awis0l"),u(i,"class","meta-grid svelte-awis0l"),u(K,"class","qa-btn svelte-awis0l"),u(z,"class","qa-btn svelte-awis0l"),u(J,"class","qa-btn svelte-awis0l"),J.disabled=!0,u(J,"title","Следующий этап"),u(U,"class","qa-btn svelte-awis0l"),u(L,"class","quick-actions svelte-awis0l"),u(e,"class","overview svelte-awis0l")},m(k,q){C(k,e,q),a(e,t),a(t,s),a(e,o),a(e,i),a(i,r),a(r,c),a(r,f),a(f,m),a(i,p),a(i,h),a(h,w),a(h,b),a(b,M),a(i,A),a(i,O),a(O,I),a(O,D),a(D,N),a(e,F),a(e,L),a(L,K),a(L,V),a(L,z),a(L,x),a(L,J),a(L,X),a(L,U),a(e,ee),R&&R.m(e,null),a(e,Z),P&&P.m(e,null),te||(G=[B(K,"click",l[53]),B(z,"click",l[54]),B(U,"click",l[55])],te=!0)},p(k,q){q[0]&32&&n!==(n=k[5].title+"")&&H(s,n),q[0]&32&&d!==(d=k[5].type+"")&&H(m,d),q[0]&32&&v!==(v=(k[5].section||"—")+"")&&H(M,v),q[0]&32&&T!==(T=re(k[5].createdAt)+"")&&H(N,T),k[7].length>0?R?R.p(k,q):(R=mt(k),R.c(),R.m(e,Z)):R&&(R.d(1),R=null),k[10].length>0?P?P.p(k,q):(P=vt(k),P.c(),P.m(e,null)):P&&(P.d(1),P=null)},i:j,o:j,d(k){k&&y(e),R&&R.d(),P&&P.d(),te=!1,ne(G)}}}function Zl(l){let e,t=Q(l[10]),n=[];for(let s=0;sЗаписей работы пока нет',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},p:j,d(t){t&&y(e)}}}function at(l){let e,t,n=l[83].summary+"",s,o,i,r=l[83].minutes+"",c,f,d=re(l[83].createdAt)+"",m,p;return{c(){e=_("div"),t=_("div"),s=E(n),o=S(),i=_("div"),c=E(r),f=E(" мин · "),m=E(d),p=S(),u(t,"class","svelte-awis0l"),u(i,"class","wl-meta svelte-awis0l"),u(e,"class","worklog-entry svelte-awis0l")},m(h,w){C(h,e,w),a(e,t),a(t,s),a(e,o),a(e,i),a(i,c),a(i,f),a(i,m),a(e,p)},p(h,w){w[0]&1024&&n!==(n=h[83].summary+"")&&H(s,n),w[0]&1024&&r!==(r=h[83].minutes+"")&&H(c,r),w[0]&1024&&d!==(d=re(h[83].createdAt)+"")&&H(m,d)},d(h){h&&y(e)}}}function xl(l){let e,t=Q(l[9]),n=[];for(let s=0;sДействий пока нет',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},p:j,d(t){t&&y(e)}}}function ft(l){let e,t,n=l[94].title+"",s,o,i=l[94].type+"",r,c,f,d,m,p;function h(){return l[65](l[94])}return{c(){e=_("div"),t=_("span"),s=E(n),o=_("span"),r=E(i),c=S(),f=_("button"),f.textContent="Запустить",d=S(),u(t,"class","svelte-awis0l"),u(o,"class","action-type svelte-awis0l"),u(f,"class","btn btn-sm svelte-awis0l"),u(e,"class","action-card svelte-awis0l")},m(w,b){C(w,e,b),a(e,t),a(t,s),a(e,o),a(o,r),a(e,c),a(e,f),a(e,d),m||(p=B(f,"click",h),m=!0)},p(w,b){l=w,b[0]&512&&n!==(n=l[94].title+"")&&H(s,n),b[0]&512&&i!==(i=l[94].type+"")&&H(r,i)},d(w){w&&y(e),m=!1,p()}}}function tn(l){let e,t=[],n=new Map,s,o=Q(l[22]);const i=r=>r[91].id;for(let r=0;rНет файловДобавьте документы, скриншоты или папку с материалами.
',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},p:j,i:j,o:j,d(t){t&&y(e)}}}function nn(l){let e;return{c(){e=_("div"),e.innerHTML='Загрузка...
',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},p:j,i:j,o:j,d(t){t&&y(e)}}}function ut(l,e){let t,n,s,o,i;function r(d){e[60](d)}function c(d){e[61](d)}let f={item:e[91]};return e[23]!==void 0&&(f.expanded=e[23]),e[24]!==void 0&&(f.childrenMap=e[24]),n=new Tt({props:f}),ge.push(()=>je(n,"expanded",r)),ge.push(()=>je(n,"childrenMap",c)),n.$on("delete",e[62]),n.$on("open",e[63]),n.$on("openFolder",e[64]),{key:l,first:null,c(){t=pe(),It(n.$$.fragment),this.first=t},m(d,m){C(d,t,m),Oe(n,d,m),i=!0},p(d,m){e=d;const p={};m[0]&4194304&&(p.item=e[91]),!s&&m[0]&8388608&&(s=!0,p.expanded=e[23],Re(()=>s=!1)),!o&&m[0]&16777216&&(o=!0,p.childrenMap=e[24],Re(()=>o=!1)),n.$set(p)},i(d){i||($(n.$$.fragment,d),i=!0)},o(d){ie(n.$$.fragment,d),i=!1},d(d){d&&y(t),Ie(n,d)}}}function dt(l){let e;return{c(){e=_("div"),e.innerHTML='Сканирование...
',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},d(t){t&&y(e)}}}function _t(l){let e,t,n,s,o,i,r,c,f;return{c(){e=_("div"),t=_("input"),n=S(),s=_("div"),o=_("button"),o.textContent="Создать",i=S(),r=_("button"),r.textContent="Отмена",u(t,"type","text"),u(t,"placeholder","Название заметки"),u(t,"class","svelte-awis0l"),u(o,"class","btn btn-primary svelte-awis0l"),u(r,"class","btn svelte-awis0l"),u(s,"class","form-actions svelte-awis0l"),u(e,"class","create-form svelte-awis0l")},m(d,m){C(d,e,m),a(e,t),se(t,l[17]),a(e,n),a(e,s),a(s,o),a(s,i),a(s,r),c||(f=[B(t,"input",l[57]),B(t,"keydown",l[58]),B(o,"click",l[35]),B(r,"click",l[34])],c=!0)},p(d,m){m[0]&131072&&t.value!==d[17]&&se(t,d[17])},d(d){d&&y(e),c=!1,ne(f)}}}function sn(l){let e,t=Q(l[7]),n=[];for(let s=0;sНет заметокСоздайте первую заметку для этого дела.
',u(e,"class","empty-state svelte-awis0l")},m(t,n){C(t,e,n)},p:j,d(t){t&&y(e)}}}function pt(l){let e,t,n=l[86].title+"",s,o,i,r=re(l[86].createdAt)+"",c,f,d,m;function p(){return l[59](l[86])}return{c(){e=_("div"),t=_("div"),s=E(n),o=S(),i=_("div"),c=E(r),f=S(),u(t,"class","note-card-title svelte-awis0l"),u(i,"class","note-card-date svelte-awis0l"),u(e,"class","note-card svelte-awis0l")},m(h,w){C(h,e,w),a(e,t),a(t,s),a(e,o),a(e,i),a(i,c),a(e,f),d||(m=B(e,"click",p),d=!0)},p(h,w){l=h,w[0]&128&&n!==(n=l[86].title+"")&&H(s,n),w[0]&128&&r!==(r=re(l[86].createdAt)+"")&&H(c,r)},d(h){h&&y(e),d=!1,m()}}}function mt(l){let e,t,n,s=Q(l[7].slice(0,5)),o=[];for(let i=0;il[70].call(h)),u(d,"class","form-group svelte-awis0l"),u(v,"class","btn btn-primary svelte-awis0l"),u(A,"class","btn svelte-awis0l"),u(b,"class","modal-actions svelte-awis0l"),u(t,"class","modal svelte-awis0l"),u(e,"class","modal-overlay svelte-awis0l")},m(N,F){C(N,e,F),a(e,t),a(t,n),a(t,s),a(t,o),a(o,i),a(o,r),a(o,c),se(c,l[14]),a(t,f),a(t,d),a(d,m),a(d,p),a(d,h);for(let L=0;L⚒ Верстак ',s=S(),o=_("nav"),i=_("div"),r=_("div"),r.textContent="Разделы",c=S();for(let k=0;k{Z[ce]=null}),he(),D=Z[I],D?D.p(k,q):(D=Z[I]=ee[I](k),D.c()),$(D,1),D.m(b,T)),!k[8]&&!k[5]?G?G.p(k,q):(G=gt(k),G.c(),G.m(b,N)):G&&(G.d(1),G=null),k[13]?R?R.p(k,q):(R=kt(k),R.c(),R.m(b,F)):R&&(R.d(1),R=null),k[21]&&k[20]?P?P.p(k,q):(P=Ct(k),P.c(),P.m(b,null)):P&&(P.d(1),P=null)},i(k){L||($(D),L=!0)},o(k){ie(D),L=!1},d(k){k&&y(e),oe(V,k),z&&z.d(),X.d(),U&&U.d(),Z[I].d(),G&&G.d(),R&&R.d(),P&&P.d()}}}function Y(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function re(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}const St=l=>l.id!=="today"&&l.id!=="inbox";function rn(l,e,t){let n=[],s=[],o="",i="",r="",c=null,f="overview",d=[],m=null,p=[],h=[],w=[],b="",v="",M=!1,A="",O="clients",I=!1,D="",T=!0,N=!1,F=null,L=!1,K="",V=[],z={},x={},J=!1;const X=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let U=null;gl(async()=>{try{t(2,o=await Y("VerstakVersion")||"verstak-gui/v2"),t(0,n=await Y("ListSections")||[])}catch(g){t(3,i=String(g)),t(0,n=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Wt),U=()=>window.runtime.EventsOff("files-dropped")),t(18,T=!1)}),kl(()=>{U&&U()});async function ee(g){t(4,r=g),t(5,c=null),t(6,f="overview"),t(7,d=[]),p=[],t(9,h=[]),t(10,w=[]),t(13,M=!1),t(3,i="");try{t(1,s=await Y("ListNodesBySection",g)||[])}catch(W){t(3,i=String(W)),t(1,s=[])}}async function Z(g){t(5,c=g),t(6,f="overview"),t(7,d=[]),p=[],t(9,h=[]),t(10,w=[]),t(22,V=[]),t(23,z={}),t(24,x={}),t(8,m=null),t(13,M=!1),t(16,I=!1),t(3,i=""),await te(g.id)}async function te(g){try{t(7,d=await Y("ListNotes",g)||[])}catch{}try{p=await Y("ListFiles",g)||[]}catch{}try{t(9,h=await Y("ListActions",g)||[])}catch{}try{t(10,w=await Y("ListWorklog",g)||[])}catch{}}async function G(g){t(25,J=!0);try{t(22,V=await Y("ListItems",g)||[])}catch{t(22,V=[])}t(25,J=!1)}function R(){t(13,M=!0),t(14,A=""),t(15,O=r||"clients")}function P(){t(13,M=!1),t(14,A="")}async function k(){if(A.trim())try{const g=await Y("CreateNode","","case",A.trim(),O);t(13,M=!1),t(14,A=""),await ee(O)}catch(g){t(3,i=String(g))}}function q(){t(16,I=!0),t(17,D="")}function ce(){t(16,I=!1),t(17,D="")}async function le(){if(!(!D.trim()||!c))try{const g=await Y("CreateNote",c.id,D.trim());t(7,d=[...d,g&&g.id?g:{id:Date.now().toString(),title:D.trim(),createdAt:new Date().toISOString()}]),t(16,I=!1),t(17,D="")}catch{const W={id:Date.now().toString(),title:D.trim(),createdAt:new Date().toISOString()};t(7,d=[...d,W]),t(16,I=!1),t(17,D="")}}async function fe(g){if(!(m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const W=await Y("ReadNote",g.id);t(8,m={id:g.id,title:g.title,content:W||"",dirty:!1})}catch{t(8,m={id:g.id,title:g.title,content:"# "+g.title+`
-
-`,dirty:!1})}}function Bt(){m&&m.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,m=null)}function Ht(g){m&&(t(8,m.content=g.target.value,m),t(8,m.dirty=!0,m))}async function qt(){if(m)try{await Y("SaveNote",m.id,m.content),t(8,m.dirty=!1,m)}catch{t(8,m.dirty=!1,m)}}async function Rt(){const g=parseInt(b,10);if(!(!v.trim()||isNaN(g)||g<=0||!c)){try{const W=await Y("CreateWorklog",c.id,v.trim(),g);t(10,w=[...w,W&&W.id?W:{id:Date.now().toString(),nodeId:c.id,summary:v.trim(),minutes:g,createdAt:new Date().toISOString()}])}catch{t(10,w=[...w,{id:Date.now().toString(),nodeId:c.id,summary:v.trim(),minutes:g,createdAt:new Date().toISOString()}])}t(12,v=""),t(11,b="")}}async function De(){const g=await Y("PickFile");g&&await ye(c.id,g)}async function jt(){const g=await Y("PickDirectory");g&&await ye(c.id,g)}async function ye(g,W){t(19,N=!0);try{const Ne=await Y("PreviewImport",W);t(20,F=Ne),K=W,t(21,L=!0)}catch(Ne){t(3,i=String(Ne))}t(19,N=!1)}async function Ce(g){try{const W=g==="copy"?await Y("AddPathCopy",c.id,K):await Y("AddPathLink",c.id,K);t(21,L=!1),t(20,F=null),t(23,z={}),t(24,x={}),await Promise.all([te(c.id),G(c.id)])}catch(W){t(3,i=String(W))}}function zt(){t(21,L=!1),t(20,F=null)}async function Pe(g){if(confirm("Удалить файл?"))try{await Y("DeleteFileOrFolder",g),p=p.filter(W=>W.nodeId!==g),t(23,z={}),t(24,x={}),await G(c.id)}catch(W){t(3,i=String(W))}}async function Te(g){try{await Y("OpenFile",g)}catch(W){t(3,i=String(W))}}async function Wt(g){if(!g||g.length===0)return;if(!c){t(3,i="Сначала выберите дело для добавления файлов");return}const W=g[0];await ye(c.id,W)}function Kt(g){return f===g?"tab active":"tab"}const Vt=g=>ee(g.id),Ut=g=>Z(g),Gt=()=>t(3,i="");function Jt(){m.content=this.value,t(8,m)}const Qt=g=>{t(6,f=g.id),g.id==="files"&&c&&V.length===0&&G(c.id)},Xt=()=>{t(6,f="notes"),q()},Yt=()=>{t(6,f="files"),De()},Zt=()=>t(6,f="worklog"),$t=g=>fe(g);function xt(){D=this.value,t(17,D)}const el=g=>g.key==="Enter"&&le(),tl=g=>fe(g);function ll(g){z=g,t(23,z)}function nl(g){x=g,t(24,x)}const il=g=>Pe(g.detail),sl=g=>Te(g.detail),ol=g=>console.log("open folder",g.detail),cl=g=>Y("RunAction",g.id);function rl(){v=this.value,t(12,v)}function al(){b=Ft(this.value),t(11,b)}function fl(){A=this.value,t(14,A)}const ul=g=>g.key==="Enter"&&k();function dl(){O=bl(this),t(15,O),t(0,n)}return[n,s,o,i,r,c,f,d,m,h,w,b,v,M,A,O,I,D,T,N,F,L,V,z,x,J,X,ee,Z,G,R,P,k,q,ce,le,fe,Bt,Ht,qt,Rt,De,jt,Ce,zt,Pe,Te,Kt,Vt,Ut,Gt,Jt,Qt,Xt,Yt,Zt,$t,xt,el,tl,ll,nl,il,sl,ol,cl,rl,al,fl,ul,dl,()=>Ce("copy"),()=>Ce("link")]}class an extends Pt{constructor(e){super(),Dt(this,e,rn,cn,Lt,{},null,[-1,-1,-1,-1])}}new an({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-D2H3H_wv.css b/cmd/verstak-gui/frontend-dist/assets/main-D2H3H_wv.css
new file mode 100644
index 0000000..15a5604
--- /dev/null
+++ b/cmd/verstak-gui/frontend-dist/assets/main-D2H3H_wv.css
@@ -0,0 +1 @@
+.file-row.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none;position:relative}.file-row.svelte-1u905d2.svelte-1u905d2:hover{background:#1e1e30}.file-row--selected.svelte-1u905d2.svelte-1u905d2{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-1u905d2.svelte-1u905d2:hover{background:#252545}.file-row.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-1u905d2.svelte-1u905d2{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-1u905d2.svelte-1u905d2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1u905d2.svelte-1u905d2{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1u905d2.svelte-1u905d2{color:#444}.file-row-actions.svelte-1u905d2.svelte-1u905d2{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-1u905d2:hover .file-row-actions.svelte-1u905d2{opacity:1}.action-btn.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-1u905d2.svelte-1u905d2{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-1u905d2.svelte-1u905d2{position:absolute;right:12px;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:4px;z-index:100;min-width:220px;box-shadow:0 4px 16px #00000080}.menu-item.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#fff}.menu-item-danger.svelte-1u905d2.svelte-1u905d2{color:#ff6b6b}.menu-item-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222}.menu-item.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-sep.svelte-1u905d2.svelte-1u905d2{height:1px;background:#2a2a3c;margin:4px 8px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1cw3u0m{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1cw3u0m{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1cw3u0m{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1cw3u0m{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1cw3u0m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1cw3u0m{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1cw3u0m{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1cw3u0m:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1cw3u0m:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.action-btn-close.svelte-1cw3u0m{color:#ff6b6b}.action-btn-close.svelte-1cw3u0m:hover{background:#3a2222;color:#f44}.preview-body.svelte-1cw3u0m{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1cw3u0m{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1cw3u0m{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1cw3u0m{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1cw3u0m{width:100%;height:100%}.preview-pdf.svelte-1cw3u0m{width:100%;height:100%;border:none}.btn-sm.svelte-1cw3u0m{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1cw3u0m:hover{background:#223}.overlay.svelte-1fv6yyk{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.modal.svelte-1fv6yyk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:360px;max-width:90vw}h3.svelte-1fv6yyk{font-size:18px;margin-bottom:12px;color:#e4e4ef}.message.svelte-1fv6yyk{font-size:14px;color:#aaa;margin-bottom:20px;line-height:1.4}.actions.svelte-1fv6yyk{display:flex;gap:8px;justify-content:flex-end}.btn.svelte-1fv6yyk{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1fv6yyk:hover{background:#223}.btn-primary.svelte-1fv6yyk{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1fv6yyk:hover{background:#4f46e5}.btn-danger.svelte-1fv6yyk{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger.svelte-1fv6yyk:hover{background:#b91c1c}.btn.svelte-1fv6yyk:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.svelte-1ltnnkq.svelte-1ltnnkq,.svelte-1ltnnkq.svelte-1ltnnkq:before,.svelte-1ltnnkq.svelte-1ltnnkq:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-1ltnnkq.svelte-1ltnnkq{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-1ltnnkq.svelte-1ltnnkq{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-1ltnnkq.svelte-1ltnnkq{font-size:20px;line-height:1}.brand-name.svelte-1ltnnkq.svelte-1ltnnkq{font-size:16px;font-weight:600}.sidebar-nav.svelte-1ltnnkq.svelte-1ltnnkq{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-1ltnnkq.svelte-1ltnnkq{margin-bottom:16px}.nav-label.svelte-1ltnnkq.svelte-1ltnnkq{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-1ltnnkq.svelte-1ltnnkq{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#223}.nav-item.selected.svelte-1ltnnkq.svelte-1ltnnkq{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-1ltnnkq.svelte-1ltnnkq{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-1ltnnkq.svelte-1ltnnkq{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555}.main.svelte-1ltnnkq.svelte-1ltnnkq{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-1ltnnkq.svelte-1ltnnkq{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-1ltnnkq.svelte-1ltnnkq{font-size:14px;font-weight:500}.crumb.placeholder.svelte-1ltnnkq.svelte-1ltnnkq{color:#666}.crumb-type.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-1ltnnkq.svelte-1ltnnkq{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.dismiss-btn.svelte-1ltnnkq.svelte-1ltnnkq{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-1ltnnkq.svelte-1ltnnkq:hover{color:#f44}.tabs.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-1ltnnkq.svelte-1ltnnkq{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-1ltnnkq.svelte-1ltnnkq:hover{color:#ccc}.tab.active.svelte-1ltnnkq.svelte-1ltnnkq{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-1ltnnkq.svelte-1ltnnkq{flex:1;overflow-y:auto}.note-editor.svelte-1ltnnkq.svelte-1ltnnkq{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-1ltnnkq.svelte-1ltnnkq{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-1ltnnkq.svelte-1ltnnkq{font-size:16px;font-weight:500}.dirty-mark.svelte-1ltnnkq.svelte-1ltnnkq{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-1ltnnkq.svelte-1ltnnkq{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-1ltnnkq.svelte-1ltnnkq{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-1ltnnkq.svelte-1ltnnkq{padding:24px}.overview.svelte-1ltnnkq h2.svelte-1ltnnkq{font-size:24px;margin-bottom:16px}.meta-grid.svelte-1ltnnkq.svelte-1ltnnkq{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-1ltnnkq.svelte-1ltnnkq{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-1ltnnkq.svelte-1ltnnkq{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-1ltnnkq.svelte-1ltnnkq{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.qa-btn.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#223}.qa-btn.svelte-1ltnnkq.svelte-1ltnnkq:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-1ltnnkq.svelte-1ltnnkq{margin-bottom:24px}.recent-section.svelte-1ltnnkq h3.svelte-1ltnnkq{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-1ltnnkq.svelte-1ltnnkq{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#1a1a28}.recent-date.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555}.recent-entry.svelte-1ltnnkq.svelte-1ltnnkq{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-1ltnnkq.svelte-1ltnnkq{padding:24px}.tab-toolbar.svelte-1ltnnkq.svelte-1ltnnkq{margin-bottom:16px}.create-form.svelte-1ltnnkq.svelte-1ltnnkq{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-1ltnnkq input.svelte-1ltnnkq{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-1ltnnkq input.svelte-1ltnnkq:focus{outline:none;border-color:#6366f1}.form-actions.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;gap:8px}.notes-list.svelte-1ltnnkq.svelte-1ltnnkq{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-1ltnnkq.svelte-1ltnnkq{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-1ltnnkq.svelte-1ltnnkq:hover{border-color:#3a3a5c}.note-card-title.svelte-1ltnnkq.svelte-1ltnnkq{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555}.worklog-tab.svelte-1ltnnkq.svelte-1ltnnkq{padding:24px}.worklog-form.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-1ltnnkq input.svelte-1ltnnkq{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-1ltnnkq input.svelte-1ltnnkq:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-1ltnnkq input[type=text].svelte-1ltnnkq{flex:1}.worklog-form.svelte-1ltnnkq input[type=number].svelte-1ltnnkq{width:70px}.worklog-entry.svelte-1ltnnkq.svelte-1ltnnkq{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-1ltnnkq.svelte-1ltnnkq{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-1ltnnkq p.svelte-1ltnnkq{margin:0;font-size:14px;color:#666}.empty-state.svelte-1ltnnkq .empty-icon.svelte-1ltnnkq{margin-bottom:12px;color:#444}.empty-state.svelte-1ltnnkq .hint.svelte-1ltnnkq{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-1ltnnkq .empty-actions.svelte-1ltnnkq{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-1ltnnkq.svelte-1ltnnkq{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-1ltnnkq.svelte-1ltnnkq{padding:48px 24px;text-align:center}.welcome.svelte-1ltnnkq h2.svelte-1ltnnkq{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-1ltnnkq p.svelte-1ltnnkq{color:#666;font-size:14px}.error-text.svelte-1ltnnkq.svelte-1ltnnkq{color:#f88}.fab.svelte-1ltnnkq.svelte-1ltnnkq{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#4f46e5}.modal-overlay.svelte-1ltnnkq.svelte-1ltnnkq{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-1ltnnkq.svelte-1ltnnkq{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-1ltnnkq h3.svelte-1ltnnkq{font-size:18px;margin-bottom:16px}.form-group.svelte-1ltnnkq.svelte-1ltnnkq{margin-bottom:12px}.form-group.svelte-1ltnnkq label.svelte-1ltnnkq{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-1ltnnkq input.svelte-1ltnnkq,.form-group.svelte-1ltnnkq select.svelte-1ltnnkq{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-1ltnnkq select.svelte-1ltnnkq{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-1ltnnkq input.svelte-1ltnnkq:focus,.form-group.svelte-1ltnnkq select.svelte-1ltnnkq:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-1ltnnkq.svelte-1ltnnkq{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#223}.btn-primary.svelte-1ltnnkq.svelte-1ltnnkq{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#4f46e5}.btn.svelte-1ltnnkq.svelte-1ltnnkq:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-1ltnnkq.svelte-1ltnnkq{padding:4px 10px;font-size:12px}.btn-danger.svelte-1ltnnkq.svelte-1ltnnkq{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#3a2222}.files-tab.svelte-1ltnnkq.svelte-1ltnnkq{padding:20px}.files-tab.svelte-1ltnnkq .tab-toolbar.svelte-1ltnnkq{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;flex-direction:column}.back-btn.svelte-1ltnnkq.svelte-1ltnnkq{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-1ltnnkq.svelte-1ltnnkq{margin-bottom:16px}.summary-row.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-1ltnnkq.svelte-1ltnnkq{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}.rename-error.svelte-1ltnnkq.svelte-1ltnnkq{color:#ff6b6b;font-size:12px;margin-top:4px}.today-dashboard.svelte-1ltnnkq.svelte-1ltnnkq{padding:24px;overflow-y:auto;flex:1}.today-header.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}.today-header.svelte-1ltnnkq h2.svelte-1ltnnkq{font-size:24px}.today-date.svelte-1ltnnkq.svelte-1ltnnkq{font-size:13px;color:#666}.today-summary.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.summary-chip.svelte-1ltnnkq.svelte-1ltnnkq{font-size:12px;color:#b0b0c0;background:#1a1a28;border:1px solid #2a2a3c;padding:4px 12px;border-radius:16px}.today-case.svelte-1ltnnkq.svelte-1ltnnkq{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;margin-bottom:12px;overflow:hidden}.today-case-header.svelte-1ltnnkq.svelte-1ltnnkq{padding:12px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #2a2a3c;cursor:pointer}.today-case-header.svelte-1ltnnkq.svelte-1ltnnkq:hover{background:#1e1e30}.today-case-title.svelte-1ltnnkq.svelte-1ltnnkq{font-weight:500}.today-case-type.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.today-case-time.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555;margin-left:auto}.today-events.svelte-1ltnnkq.svelte-1ltnnkq{padding:8px 16px}.today-event.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;color:#b0b0c0}.today-event-icon.svelte-1ltnnkq.svelte-1ltnnkq{width:18px;text-align:center;color:#6366f1;font-size:13px}.today-event-title.svelte-1ltnnkq.svelte-1ltnnkq{flex:1}.today-event-type.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#666}.today-event-time.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555;margin-left:auto}.today-events-empty.svelte-1ltnnkq.svelte-1ltnnkq{padding:8px 16px;font-size:13px;color:#666;font-style:italic}.today-empty.svelte-1ltnnkq.svelte-1ltnnkq{padding:48px 24px;text-align:center}.today-empty.svelte-1ltnnkq p.svelte-1ltnnkq{color:#666;font-size:14px;margin:0}.today-empty.svelte-1ltnnkq .hint.svelte-1ltnnkq{font-size:12px;color:#555;margin-top:8px}.today-timeline.svelte-1ltnnkq.svelte-1ltnnkq{margin-top:24px}.today-timeline.svelte-1ltnnkq h3.svelte-1ltnnkq{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:12px}.timeline-event.svelte-1ltnnkq.svelte-1ltnnkq{display:flex;align-items:center;gap:10px;font-size:13px;color:#b0b0c0;border-left:2px solid #2a2a3c;padding:6px 0 6px 16px;margin-left:4px}.timeline-dot.svelte-1ltnnkq.svelte-1ltnnkq{width:6px;height:6px;border-radius:50%;background:#6366f1;margin-left:-19px;flex-shrink:0}.timeline-title.svelte-1ltnnkq.svelte-1ltnnkq{flex:1}.timeline-type.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#666}.timeline-time.svelte-1ltnnkq.svelte-1ltnnkq{font-size:11px;color:#555}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-DMZ01wSM.js b/cmd/verstak-gui/frontend-dist/assets/main-DMZ01wSM.js
deleted file mode 100644
index 05f3633..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-DMZ01wSM.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var Yl=Object.defineProperty;var Ql=(n,e,t)=>e in n?Yl(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var De=(n,e,t)=>Ql(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const r of s.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&l(r)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function K(){}function Ut(n){return n()}function tt(){return Object.create(null)}function se(n){n.forEach(Ut)}function Zt(n){return typeof n=="function"}function Me(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Le;function Ie(n,e){return n===e?!0:(Le||(Le=document.createElement("a")),Le.href=e,n===Le.href)}function xl(n){return Object.keys(n).length===0}function $l(n){return n??""}function a(n,e){n.appendChild(e)}function k(n,e,t){n.insertBefore(e,t||null)}function m(n){n.parentNode&&n.parentNode.removeChild(n)}function ue(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function pe(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function We(n){return function(e){e.target===this&&n.call(this,e)}}function o(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Xt(n){return n===""?null:+n}function en(n){return Array.from(n.childNodes)}function G(n,e){e=""+e,n.data!==e&&(n.data=e)}function ce(n,e){n.value=e??""}function lt(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const s=ln(e,t,{cancelable:l});return i.slice().forEach(r=>{r.call(n,s)}),!s.defaultPrevented}return!0}}function nn(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const we=[],nt=[];let ge=[];const it=[],sn=Promise.resolve();let Ve=!1;function rn(){Ve||(Ve=!0,sn.then(xt))}function Pe(n){ge.push(n)}const He=new Set;let he=0;function xt(){if(he!==0)return;const n=Ce;do{try{for(;hen.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),ge=e}const Fe=new Set;let de;function _e(){de={r:0,c:[],p:de}}function me(){de.r||se(de.c),de=de.p}function ne(n,e){n&&n.i&&(Fe.delete(n),n.i(e))}function ie(n,e,t,l){if(n&&n.o){if(Fe.has(n))return;Fe.add(n),de.c.push(()=>{Fe.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function te(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function un(n,e){ie(n,1,1,()=>{e.delete(n.key)})}function an(n,e,t,l,i,s,r,c,u,d,_,b){let p=n.length,v=s.length,w=p;const g={};for(;w--;)g[n[w].key]=w;const y=[],N=new Map,B=new Map,R=[];for(w=v;w--;){const L=b(i,s,w),P=t(L);let C=r.get(P);C?R.push(()=>C.p(L,e)):(C=d(P,L),C.c()),N.set(P,y[w]=C),P in g&&B.set(P,Math.abs(w-g[P]))}const S=new Set,A=new Set;function T(L){ne(L,1),L.m(c,_),r.set(L.key,L),_=L.first,v--}for(;p&&v;){const L=y[v-1],P=n[p-1],C=L.key,E=P.key;L===P?(_=L.first,p--,v--):N.has(E)?!r.has(C)||S.has(C)?T(L):A.has(E)?p--:B.get(C)>B.get(E)?(A.add(C),T(L)):(S.add(E),p--):(u(P,r),p--)}for(;p--;){const L=n[p];N.has(L.key)||u(L,r)}for(;v;)T(y[v-1]);return se(R),y}function ye(n){n&&n.c()}function ve(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),Pe(()=>{const s=n.$$.on_mount.map(Ut).filter(Zt);n.$$.on_destroy?n.$$.on_destroy.push(...s):se(s),n.$$.on_mount=[]}),i.forEach(Pe)}function ke(n,e){const t=n.$$;t.fragment!==null&&(cn(t.after_update),se(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function fn(n,e){n.$$.dirty[0]===-1&&(we.push(n),rn(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const w=v.length?v[0]:p;return d.ctx&&i(d.ctx[b],d.ctx[b]=w)&&(!d.skip_bound&&d.bound[b]&&d.bound[b](w),_&&fn(n,b)),p}):[],d.update(),_=!0,se(d.before_update),d.fragment=l?l(d.ctx):!1,e.target){if(e.hydrate){const b=en(e.target);d.fragment&&d.fragment.l(b),b.forEach(m)}else d.fragment&&d.fragment.c();e.intro&&ne(n.$$.fragment),ve(n,e.target,e.anchor),xt()}je(u)}class Se{constructor(){De(this,"$$");De(this,"$$set")}$destroy(){ke(this,1),this.$destroy=K}$on(e,t){if(!Zt(t))return K;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!xl(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const dn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(dn);function pn(n){let e,t;return{c(){e=W("path"),t=W("polyline"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(m(e),m(t))}}}function _n(n){let e,t,l,i,s;return{c(){e=W("path"),t=W("polyline"),l=W("line"),i=W("line"),s=W("polyline"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","16"),o(l,"y1","13"),o(l,"x2","8"),o(l,"y2","13"),o(i,"x1","16"),o(i,"y1","17"),o(i,"x2","8"),o(i,"y2","17"),o(s,"points","10 9 9 9 8 9")},m(r,c){k(r,e,c),k(r,t,c),k(r,l,c),k(r,i,c),k(r,s,c)},d(r){r&&(m(e),m(t),m(l),m(i),m(s))}}}function mn(n){let e,t;return{c(){e=W("polyline"),t=W("polyline"),o(e,"points","16 18 22 12 16 6"),o(t,"points","8 6 2 12 8 18")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(m(e),m(t))}}}function vn(n){let e,t,l,i;return{c(){e=W("path"),t=W("polyline"),l=W("line"),i=W("rect"),o(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),o(t,"points","7 3 12 8 17 3"),o(l,"x1","3"),o(l,"y1","8"),o(l,"x2","21"),o(l,"y2","8"),o(i,"x","10"),o(i,"y","12"),o(i,"width","4"),o(i,"height","4"),o(i,"rx","1")},m(s,r){k(s,e,r),k(s,t,r),k(s,l,r),k(s,i,r)},d(s){s&&(m(e),m(t),m(l),m(i))}}}function kn(n){let e,t,l,i,s;return{c(){e=W("path"),t=W("polyline"),l=W("line"),i=W("line"),s=W("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","9"),o(l,"y1","12"),o(l,"x2","15"),o(l,"y2","12"),o(i,"x1","9"),o(i,"y1","15"),o(i,"x2","13"),o(i,"y2","15"),o(s,"x1","12"),o(s,"y1","15"),o(s,"x2","12"),o(s,"y2","18")},m(r,c){k(r,e,c),k(r,t,c),k(r,l,c),k(r,i,c),k(r,s,c)},d(r){r&&(m(e),m(t),m(l),m(i),m(s))}}}function bn(n){let e,t,l,i,s,r;return{c(){e=W("path"),t=W("polyline"),l=W("line"),i=W("line"),s=W("line"),r=W("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","8"),o(l,"y1","12"),o(l,"x2","16"),o(l,"y2","12"),o(i,"x1","8"),o(i,"y1","16"),o(i,"x2","16"),o(i,"y2","16"),o(s,"x1","8"),o(s,"y1","14"),o(s,"x2","12"),o(s,"y2","14"),o(r,"x1","12"),o(r,"y1","12"),o(r,"x2","12"),o(r,"y2","18")},m(c,u){k(c,e,u),k(c,t,u),k(c,l,u),k(c,i,u),k(c,s,u),k(c,r,u)},d(c){c&&(m(e),m(t),m(l),m(i),m(s),m(r))}}}function hn(n){let e,t,l,i;return{c(){e=W("path"),t=W("polyline"),l=W("line"),i=W("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","16"),o(l,"y1","13"),o(l,"x2","8"),o(l,"y2","13"),o(i,"x1","16"),o(i,"y1","17"),o(i,"x2","8"),o(i,"y2","17")},m(s,r){k(s,e,r),k(s,t,r),k(s,l,r),k(s,i,r)},d(s){s&&(m(e),m(t),m(l),m(i))}}}function wn(n){let e,t,l,i,s;return{c(){e=W("path"),t=W("polyline"),l=W("line"),i=W("line"),s=W("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","8"),o(l,"y1","12"),o(l,"x2","16"),o(l,"y2","12"),o(i,"x1","8"),o(i,"y1","16"),o(i,"x2","16"),o(i,"y2","16"),o(s,"x1","8"),o(s,"y1","14"),o(s,"x2","12"),o(s,"y2","14")},m(r,c){k(r,e,c),k(r,t,c),k(r,l,c),k(r,i,c),k(r,s,c)},d(r){r&&(m(e),m(t),m(l),m(i),m(s))}}}function gn(n){let e,t,l;return{c(){e=W("path"),t=W("circle"),l=W("circle"),o(e,"d","M9 18V5l12-2v13"),o(t,"cx","6"),o(t,"cy","18"),o(t,"r","3"),o(l,"cx","18"),o(l,"cy","16"),o(l,"r","3")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},d(i){i&&(m(e),m(t),m(l))}}}function yn(n){let e,t;return{c(){e=W("rect"),t=W("polyline"),o(e,"x","2"),o(e,"y","4"),o(e,"width","20"),o(e,"height","16"),o(e,"rx","2"),o(t,"points","10 9 16 12 10 15 10 9")},m(l,i){k(l,e,i),k(l,t,i)},d(l){l&&(m(e),m(t))}}}function jn(n){let e,t,l;return{c(){e=W("rect"),t=W("circle"),l=W("polyline"),o(e,"x","3"),o(e,"y","3"),o(e,"width","18"),o(e,"height","18"),o(e,"rx","2"),o(e,"ry","2"),o(t,"cx","8.5"),o(t,"cy","8.5"),o(t,"r","1.5"),o(l,"points","21 15 16 10 5 21")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},d(i){i&&(m(e),m(t),m(l))}}}function Cn(n){let e;return{c(){e=W("path"),o(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){k(t,e,l)},d(t){t&&m(e)}}}function Mn(n){let e;function t(s,r){return s[0]==="folder"?Cn:s[0]==="image"?jn:s[0]==="video"?yn:s[0]==="audio"?gn:s[0]==="pdf"?wn:s[0]==="document"?hn:s[0]==="spreadsheet"?bn:s[0]==="presentation"?kn:s[0]==="archive"?vn:s[0]==="code"?mn:s[0]==="text"?_n:pn}let l=t(n),i=l(n);return{c(){e=W("svg"),i.c(),o(e,"width",n[1]),o(e,"height",n[1]),o(e,"viewBox","0 0 24 24"),o(e,"fill","none"),o(e,"stroke","currentColor"),o(e,"stroke-width","1.5"),o(e,"stroke-linecap","round"),o(e,"stroke-linejoin","round"),o(e,"xmlns","http://www.w3.org/2000/svg")},m(s,r){k(s,e,r),i.m(e,null)},p(s,[r]){l!==(l=t(s))&&(i.d(1),i=l(s),i&&(i.c(),i.m(e,null))),r&2&&o(e,"width",s[1]),r&2&&o(e,"height",s[1])},i:K,o:K,d(s){s&&m(e),i.d()}}}function Nn(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=s=>{"kind"in s&&t(0,l=s.kind),"size"in s&&t(1,i=s.size)},[l,i]}class $t extends Se{constructor(e){super(),Ne(this,e,Nn,Mn,Me,{kind:0,size:1})}}function Oe(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const Sn={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function Te(n){return n?Sn[n]||n:"Unknown"}function el(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const En=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Ln=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Fn=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],In=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function tl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return En.includes(e)||In.includes(l)}function ll(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Ln.includes(e)||Fn.includes(l)&&l!=="md"&&l!=="markdown"}function nl(n){return(n.mime||"").toLowerCase().includes("pdf")}function il(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Pn(n){return tl(n)||nl(n)}function On(n){return ll(n)||il(n)}function Tn(n){let e,t=Oe(n[0].size)+"",l,i,s,r=n[0].mime&&st(n);return{c(){e=f("span"),l=I(t),i=j(),r&&r.c(),s=ae()},m(c,u){k(c,e,u),a(e,l),k(c,i,u),r&&r.m(c,u),k(c,s,u)},p(c,u){u&1&&t!==(t=Oe(c[0].size)+"")&&G(l,t),c[0].mime?r?r.p(c,u):(r=st(c),r.c(),r.m(s.parentNode,s)):r&&(r.d(1),r=null)},d(c){c&&(m(e),m(i),m(s)),r&&r.d(c)}}}function zn(n){let e;return{c(){e=f("span"),e.textContent="Folder"},m(t,l){k(t,e,l)},p:K,d(t){t&&m(e)}}}function st(n){let e,t,l,i=Te(n[0].mime)+"",s;return{c(){e=f("span"),e.textContent="·",t=j(),l=f("span"),s=I(i),o(e,"class","meta-sep svelte-vi5rh0")},m(r,c){k(r,e,c),k(r,t,c),k(r,l,c),a(l,s)},p(r,c){c&1&&i!==(i=Te(r[0].mime)+"")&&G(s,i)},d(r){r&&(m(e),m(t),m(l))}}}function An(n){let e,t,l;return{c(){e=f("button"),e.innerHTML=' ',o(e,"class","action-btn svelte-vi5rh0"),o(e,"title","Open folder"),o(e,"aria-label","Open folder")},m(i,s){k(i,e,s),t||(l=O(e,"click",pe(n[4])),t=!0)},p:K,d(i){i&&m(e),t=!1,l()}}}function Bn(n){let e,t,l,i,s;return{c(){e=f("button"),e.innerHTML=' ',t=j(),l=f("button"),l.innerHTML=' ',o(e,"class","action-btn svelte-vi5rh0"),o(e,"title","Preview"),o(e,"aria-label","Preview"),o(l,"class","action-btn svelte-vi5rh0"),o(l,"title","Open in external program"),o(l,"aria-label","Open externally")},m(r,c){k(r,e,c),k(r,t,c),k(r,l,c),i||(s=[O(e,"click",pe(n[4])),O(l,"click",pe(n[6]))],i=!0)},p:K,d(r){r&&(m(e),m(t),m(l)),i=!1,se(s)}}}function rt(n){let e,t,l,i,s,r,c,u,d,_,b,p;return{c(){e=f("div"),t=j(),l=f("div"),i=f("button"),i.textContent="Rename",s=j(),r=f("button"),r.textContent="Duplicate",c=j(),u=f("button"),u.textContent="Cut",d=j(),_=f("button"),_.textContent="Copy",o(e,"class","menu-backdrop svelte-vi5rh0"),o(e,"role","presentation"),o(i,"class","menu-item svelte-vi5rh0"),o(i,"role","menuitem"),o(r,"class","menu-item svelte-vi5rh0"),o(r,"role","menuitem"),o(u,"class","menu-item svelte-vi5rh0"),o(u,"role","menuitem"),o(_,"class","menu-item svelte-vi5rh0"),o(_,"role","menuitem"),o(l,"class","menu svelte-vi5rh0"),o(l,"role","menu")},m(v,w){k(v,e,w),k(v,t,w),k(v,l,w),a(l,i),a(l,s),a(l,r),a(l,c),a(l,u),a(l,d),a(l,_),b||(p=[O(e,"click",pe(n[13])),O(i,"click",n[8]),O(r,"click",n[9]),O(u,"click",n[10]),O(_,"click",n[11]),O(l,"click",pe(n[15]))],b=!0)},p:K,d(v){v&&(m(e),m(t),m(l)),b=!1,se(p)}}}function Dn(n){let e,t,l,i,s,r,c=n[0].name+"",u,d,_,b,p,v,w,g,y,N,B,R,S,A,T,L,P,C,E,q;l=new $t({props:{kind:n[2],size:22}});function V(D,J){return D[3]?zn:Tn}let Z=V(n)(n);function U(D,J){return D[3]?An:Bn}let $=U(n)(n),Q=n[1]&&rt(n);return{c(){e=f("div"),t=f("div"),ye(l.$$.fragment),i=j(),s=f("div"),r=f("div"),u=I(c),_=j(),b=f("div"),Z.c(),p=j(),v=f("div"),$.c(),w=j(),g=f("button"),y=W("svg"),N=W("circle"),B=W("circle"),R=W("circle"),S=j(),A=f("button"),A.innerHTML=' ',L=j(),Q&&Q.c(),P=ae(),o(t,"class","file-row-icon svelte-vi5rh0"),o(r,"class","file-row-name svelte-vi5rh0"),o(r,"title",d=n[0].name),o(b,"class","file-row-meta svelte-vi5rh0"),o(s,"class","file-row-body svelte-vi5rh0"),o(N,"cx","12"),o(N,"cy","5"),o(N,"r","2"),o(B,"cx","12"),o(B,"cy","12"),o(B,"r","2"),o(R,"cx","12"),o(R,"cy","19"),o(R,"r","2"),o(y,"width","16"),o(y,"height","16"),o(y,"viewBox","0 0 24 24"),o(y,"fill","currentColor"),o(g,"class","action-btn svelte-vi5rh0"),o(g,"title","More actions"),o(g,"aria-label","More actions"),o(g,"aria-expanded",n[1]),o(A,"class","action-btn action-btn-danger svelte-vi5rh0"),o(A,"title","Delete"),o(A,"aria-label","Delete"),o(v,"class","file-row-actions svelte-vi5rh0"),o(e,"class","file-row svelte-vi5rh0"),o(e,"role","button"),o(e,"tabindex","0"),o(e,"aria-label",T=n[3]?`Open folder ${n[0].name}`:`Preview ${n[0].name}`)},m(D,J){k(D,e,J),a(e,t),ve(l,t,null),a(e,i),a(e,s),a(s,r),a(r,u),a(s,_),a(s,b),Z.m(b,null),a(e,p),a(e,v),$.m(v,null),a(v,w),a(v,g),a(g,y),a(y,N),a(y,B),a(y,R),a(v,S),a(v,A),k(D,L,J),Q&&Q.m(D,J),k(D,P,J),C=!0,E||(q=[O(window,"click",n[13]),O(g,"click",pe(n[12])),O(A,"click",pe(n[7])),O(e,"click",n[4]),O(e,"keydown",n[5])],E=!0)},p(D,[J]){(!C||J&1)&&c!==(c=D[0].name+"")&&G(u,c),(!C||J&1&&d!==(d=D[0].name))&&o(r,"title",d),Z.p(D,J),$.p(D,J),(!C||J&2)&&o(g,"aria-expanded",D[1]),(!C||J&1&&T!==(T=D[3]?`Open folder ${D[0].name}`:`Preview ${D[0].name}`))&&o(e,"aria-label",T),D[1]?Q?Q.p(D,J):(Q=rt(D),Q.c(),Q.m(P.parentNode,P)):Q&&(Q.d(1),Q=null)},i(D){C||(ne(l.$$.fragment,D),C=!0)},o(D){ie(l.$$.fragment,D),C=!1},d(D){D&&(m(e),m(L),m(P)),ke(l),Z.d(),$.d(),Q&&Q.d(D),E=!1,se(q)}}}function Hn(n,e,t){let{item:l}=e,{clipboardItems:i=[]}=e;const s=qe(),r=el(l),c=l.type==="folder";let u=!1;function d(){c?s("navigate",l.id):s("preview",l)}function _(S){S.key==="Enter"&&d()}function b(){s("openExternal",l.fileId)}function p(){s("delete",{id:l.id,type:l.type})}function v(){t(1,u=!1),s("rename",{id:l.id,name:l.name})}function w(){t(1,u=!1),s("duplicate",l.id)}function g(){t(1,u=!1),s("cut",l.id)}function y(){t(1,u=!1),s("copy",l.id)}function N(){t(1,u=!u)}function B(){t(1,u=!1)}function R(S){nn.call(this,n,S)}return n.$$set=S=>{"item"in S&&t(0,l=S.item),"clipboardItems"in S&&t(14,i=S.clipboardItems)},[l,u,r,c,d,_,b,p,v,w,g,y,N,B,i,R]}class Vn extends Se{constructor(e){super(),Ne(this,e,Hn,Dn,Me,{item:0,clipboardItems:14})}}function ot(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function Wn(n){let e;return{c(){e=f("span"),e.textContent="/",o(e,"class","sep svelte-csi2lb")},m(t,l){k(t,e,l)},d(t){t&&m(e)}}}function Rn(n){let e,t=n[4].name+"",l,i,s;function r(){return n[2](n[6])}return{c(){e=f("button"),l=I(t),o(e,"class","crumb crumb--link svelte-csi2lb")},m(c,u){k(c,e,u),a(e,l),i||(s=O(e,"click",r),i=!0)},p(c,u){n=c,u&1&&t!==(t=n[4].name+"")&&G(l,t)},d(c){c&&m(e),i=!1,s()}}}function qn(n){let e,t=n[4].name+"",l;return{c(){e=f("span"),l=I(t),o(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){k(i,e,s),a(e,l)},p(i,s){s&1&&t!==(t=i[4].name+"")&&G(l,t)},d(i){i&&m(e)}}}function ct(n){let e,t,l=n[6]>0&&Wn();function i(c,u){return c[6]===c[0].length-1?qn:Rn}let s=i(n),r=s(n);return{c(){l&&l.c(),e=j(),r.c(),t=ae()},m(c,u){l&&l.m(c,u),k(c,e,u),r.m(c,u),k(c,t,u)},p(c,u){s===(s=i(c))&&r?r.p(c,u):(r.d(1),r=s(c),r&&(r.c(),r.m(t.parentNode,t)))},d(c){c&&(m(e),m(t)),l&&l.d(c),r.d(c)}}}function Gn(n){let e,t=te(n[0]),l=[];for(let i=0;is(c);return n.$$set=c=>{"crumbs"in c&&t(0,l=c.crumbs)},[l,s,r]}class sl extends Se{constructor(e){super(),Ne(this,e,Kn,Gn,Me,{crumbs:0})}}function Jn(n){let e,t,l,i,s,r;return{c(){e=f("div"),t=f("p"),t.textContent="Preview is not available for this file type.",l=j(),i=f("button"),i.textContent="Open in external program",o(i,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(c,u){k(c,e,u),a(e,t),a(e,l),a(e,i),s||(r=O(i,"click",n[9]),s=!0)},p:K,d(c){c&&m(e),s=!1,r()}}}function Un(n){let e,t;function l(r,c){return c&2&&(e=null),e==null&&(e=!!(r[1]&&r[1].startsWith("data:"))),e?$n:xn}let i=l(n,-1),s=i(n);return{c(){s.c(),t=ae()},m(r,c){s.m(r,c),k(r,t,c)},p(r,c){i===(i=l(r,c))&&s?s.p(r,c):(s.d(1),s=i(r),s&&(s.c(),s.m(t.parentNode,t)))},d(r){r&&m(t),s.d(r)}}}function Zn(n){let e,t,l;return{c(){e=f("pre"),t=f("code"),l=I(n[1]),o(e,"class","preview-text svelte-1ybaoro")},m(i,s){k(i,e,s),a(e,t),a(t,l)},p(i,s){s&2&&G(l,i[1])},d(i){i&&m(e)}}}function Xn(n){let e,t,l,i;return{c(){e=f("div"),t=f("img"),Ie(t.src,l=n[1])||o(t,"src",l),o(t,"alt",i=n[0].name),o(t,"class","preview-image svelte-1ybaoro"),o(e,"class","preview-image-container svelte-1ybaoro")},m(s,r){k(s,e,r),a(e,t)},p(s,r){r&2&&!Ie(t.src,l=s[1])&&o(t,"src",l),r&1&&i!==(i=s[0].name)&&o(t,"alt",i)},d(s){s&&m(e)}}}function Yn(n){let e,t,l,i,s,r,c;return{c(){e=f("div"),t=f("p"),l=I(n[3]),i=j(),s=f("button"),s.textContent="Open in external program",o(s,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(u,d){k(u,e,d),a(e,t),a(t,l),a(e,i),a(e,s),r||(c=O(s,"click",n[9]),r=!0)},p(u,d){d&8&&G(l,u[3])},d(u){u&&m(e),r=!1,c()}}}function Qn(n){let e;return{c(){e=f("div"),e.innerHTML="Loading preview...
",o(e,"class","preview-status svelte-1ybaoro")},m(t,l){k(t,e,l)},p:K,d(t){t&&m(e)}}}function xn(n){let e,t,l,i,s,r;return{c(){e=f("div"),t=f("p"),t.textContent="PDF preview is not available in this environment.",l=j(),i=f("button"),i.textContent="Open in external program",o(i,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(c,u){k(c,e,u),a(e,t),a(e,l),a(e,i),s||(r=O(i,"click",n[9]),s=!0)},p:K,d(c){c&&m(e),s=!1,r()}}}function $n(n){let e,t,l;return{c(){e=f("div"),t=f("embed"),Ie(t.src,l=n[1])||o(t,"src",l),o(t,"type","application/pdf"),o(t,"class","preview-pdf svelte-1ybaoro"),o(e,"class","preview-pdf-container svelte-1ybaoro")},m(i,s){k(i,e,s),a(e,t)},p(i,s){s&2&&!Ie(t.src,l=i[1])&&o(t,"src",l)},d(i){i&&m(e)}}}function ei(n){let e,t,l,i,s,r,c,u=n[0].name+"",d,_,b,p,v=Oe(n[0].size)+"",w,g,y=Te(n[0].mime)+"",N,B,R,S,A,T,L,P,C,E,q,V;s=new $t({props:{kind:n[8],size:18}});function x(z,$){return z[2]?Qn:z[3]?Yn:z[6]&&z[1]?Xn:z[5]&&z[1]?Zn:z[4]?Un:Jn}let Z=x(n),U=Z(n);return{c(){e=f("div"),t=f("div"),l=f("header"),i=f("div"),ye(s.$$.fragment),r=j(),c=f("span"),d=I(u),b=j(),p=f("div"),w=I(v),g=I(" · "),N=I(y),B=j(),R=f("div"),S=f("button"),S.innerHTML=' ',A=j(),T=f("button"),T.innerHTML=' ',L=j(),P=f("div"),U.c(),o(c,"class","preview-name svelte-1ybaoro"),o(c,"title",_=n[0].name),o(i,"class","preview-title svelte-1ybaoro"),o(p,"class","preview-meta svelte-1ybaoro"),o(S,"class","action-btn svelte-1ybaoro"),o(S,"title","Open in external program"),o(S,"aria-label","Open externally"),o(T,"class","action-btn svelte-1ybaoro"),o(T,"title","Close"),o(T,"aria-label","Close preview"),o(R,"class","preview-actions svelte-1ybaoro"),o(l,"class","preview-header svelte-1ybaoro"),o(P,"class","preview-body svelte-1ybaoro"),o(t,"class","modal svelte-1ybaoro"),o(e,"class","overlay svelte-1ybaoro"),o(e,"role","dialog"),o(e,"aria-modal","true"),o(e,"aria-label",C=`Preview: ${n[0].name}`)},m(z,$){k(z,e,$),a(e,t),a(t,l),a(l,i),ve(s,i,null),a(i,r),a(i,c),a(c,d),a(l,b),a(l,p),a(p,w),a(p,g),a(p,N),a(l,B),a(l,R),a(R,S),a(R,A),a(R,T),a(t,L),a(t,P),U.m(P,null),E=!0,q||(V=[O(S,"click",n[9]),O(T,"click",n[10]),O(e,"click",We(n[11]))],q=!0)},p(z,[$]){(!E||$&1)&&u!==(u=z[0].name+"")&&G(d,u),(!E||$&1&&_!==(_=z[0].name))&&o(c,"title",_),(!E||$&1)&&v!==(v=Oe(z[0].size)+"")&&G(w,v),(!E||$&1)&&y!==(y=Te(z[0].mime)+"")&&G(N,y),Z===(Z=x(z))&&U?U.p(z,$):(U.d(1),U=Z(z),U&&(U.c(),U.m(P,null))),(!E||$&1&&C!==(C=`Preview: ${z[0].name}`))&&o(e,"aria-label",C)},i(z){E||(ne(s.$$.fragment,z),E=!0)},o(z){ie(s.$$.fragment,z),E=!1},d(z){z&&m(e),ke(s),U.d(),q=!1,se(V)}}}function ti(n,e,t){let l,i,s,{item:r}=e,{content:c=""}=e,{loading:u=!1}=e,{error:d=""}=e;const _=qe(),b=el(r);function p(y){y.key==="Escape"&&_("close")}function v(){_("openExternal",r.fileId)}Yt(()=>{window.addEventListener("keydown",p)}),Qt(()=>{window.removeEventListener("keydown",p)});const w=()=>_("close"),g=()=>_("close");return n.$$set=y=>{"item"in y&&t(0,r=y.item),"content"in y&&t(1,c=y.content),"loading"in y&&t(2,u=y.loading),"error"in y&&t(3,d=y.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=tl(r)&&c&&c.startsWith("data:")),n.$$.dirty&1&&t(5,i=ll(r)||il(r)),n.$$.dirty&1&&t(4,s=nl(r))},[r,c,u,d,s,i,l,_,b,v,w,g]}class li extends Se{constructor(e){super(),Ne(this,e,ti,ei,Me,{item:0,content:1,loading:2,error:3})}}function ut(n,e,t){const l=n.slice();return l[105]=e[t],l}function at(n,e,t){const l=n.slice();return l[108]=e[t],l}function ft(n,e,t){const l=n.slice();return l[119]=e[t],l}function dt(n,e,t){const l=n.slice();return l[116]=e[t],l}function pt(n,e,t){const l=n.slice();return l[111]=e[t],l}function _t(n,e,t){const l=n.slice();return l[108]=e[t],l}function mt(n,e,t){const l=n.slice();return l[111]=e[t],l}function vt(n,e,t){const l=n.slice();return l[124]=e[t],l}function kt(n,e,t){const l=n.slice();return l[105]=e[t],l}function bt(n,e,t){const l=n.slice();return l[129]=e[t],l}function ht(n,e,t){const l=n.slice();return l[132]=e[t],l}function wt(n){let e,t=n[132].label+"",l,i,s,r,c;function u(){return n[63](n[132])}return{c(){e=f("button"),l=I(t),i=j(),o(e,"class",s="nav-item "+(n[4]===n[132].id?"selected":"")+" svelte-1rwjkun")},m(d,_){k(d,e,_),a(e,l),a(e,i),r||(c=O(e,"click",u),r=!0)},p(d,_){n=d,_[0]&1&&t!==(t=n[132].label+"")&&G(l,t),_[0]&17&&s!==(s="nav-item "+(n[4]===n[132].id?"selected":"")+" svelte-1rwjkun")&&o(e,"class",s)},d(d){d&&m(e),r=!1,c()}}}function gt(n){let e,t,l,i,s,r=n[1].length>0&&yt(n),c=te(n[1]),u=[];for(let _=0;_0?r?r.p(_,b):(r=yt(_),r.c(),r.m(t,null)):r&&(r.d(1),r=null),b[0]&34|b[1]&4){c=te(_[1]);let p;for(p=0;p0)return ai;if(c[3])return ui}let s=i(n),r=s&&s(n);return{c(){e=f("div"),t=f("h2"),t.textContent="Верстак",l=j(),r&&r.c(),o(t,"class","svelte-1rwjkun"),o(e,"class","welcome svelte-1rwjkun")},m(c,u){k(c,e,u),a(e,t),a(e,l),r&&r.m(e,null)},p(c,u){s===(s=i(c))&&r?r.p(c,u):(r&&r.d(1),r=s&&s(c),r&&(r.c(),r.m(e,null)))},i:K,o:K,d(c){c&&m(e),r&&r.d()}}}function oi(n){let e,t,l,i,s,r,c=te(n[31]),u=[];for(let p=0;p{_[w]=null}),me()),~i?(s=_[i],s?s.p(p,v):(s=_[i]=d[i](p),s.c()),ne(s,1),s.m(l,null)):s=null)},i(p){r||(ne(s),r=!0)},o(p){ie(s),r=!1},d(p){p&&(m(e),m(t),m(l)),ue(u,p),~i&&_[i].d()}}}function ci(n){let e,t,l,i=n[8].title+"",s,r,c,u,d,_,b,p,v,w,g,y=n[8].dirty&&Vt();return{c(){e=f("div"),t=f("div"),l=f("span"),s=I(i),r=j(),y&&y.c(),c=j(),u=f("div"),d=f("button"),d.textContent="Сохранить",_=j(),b=f("button"),b.textContent="Закрыть",p=j(),v=f("textarea"),o(l,"class","note-title svelte-1rwjkun"),o(d,"class","btn btn-primary svelte-1rwjkun"),o(b,"class","btn svelte-1rwjkun"),o(u,"class","note-editor-actions svelte-1rwjkun"),o(t,"class","note-editor-header svelte-1rwjkun"),o(v,"class","note-textarea svelte-1rwjkun"),o(v,"placeholder","Начните писать..."),o(e,"class","note-editor svelte-1rwjkun")},m(N,B){k(N,e,B),a(e,t),a(t,l),a(l,s),a(t,r),y&&y.m(t,null),a(t,c),a(t,u),a(u,d),a(u,_),a(u,b),a(e,p),a(e,v),ce(v,n[8].content),w||(g=[O(d,"click",n[55]),O(b,"click",n[53]),O(v,"input",n[66]),O(v,"input",n[54])],w=!0)},p(N,B){B[0]&256&&i!==(i=N[8].title+"")&&G(s,i),N[8].dirty?y||(y=Vt(),y.c(),y.m(t,c)):y&&(y.d(1),y=null),B[0]&256&&ce(v,N[8].content)},i:K,o:K,d(N){N&&m(e),y&&y.d(),w=!1,se(g)}}}function ui(n){let e,t,l;return{c(){e=f("p"),t=I("Ошибка: "),l=I(n[3]),o(e,"class","error-text svelte-1rwjkun")},m(i,s){k(i,e,s),a(e,t),a(e,l)},p(i,s){s[0]&8&&G(l,i[3])},d(i){i&&m(e)}}}function ai(n){let e,t,l;return{c(){e=f("p"),e.textContent="Выберите раздел в боковой панели.",t=j(),l=f("p"),l.textContent="Или создайте новое дело кнопкой «+».",o(e,"class","svelte-1rwjkun"),o(l,"class","hint svelte-1rwjkun")},m(i,s){k(i,e,s),k(i,t,s),k(i,l,s)},p:K,d(i){i&&(m(e),m(t),m(l))}}}function fi(n){let e;return{c(){e=f("p"),e.textContent="Загрузка...",o(e,"class","svelte-1rwjkun")},m(t,l){k(t,e,l)},p:K,d(t){t&&m(e)}}}function St(n){let e,t=n[124].label+"",l,i,s;function r(){return n[67](n[124])}return{c(){e=f("button"),l=I(t),o(e,"class",$l(n[62](n[124].id))+" svelte-1rwjkun")},m(c,u){k(c,e,u),a(e,l),i||(s=O(e,"click",r),i=!0)},p(c,u){n=c},d(c){c&&m(e),i=!1,s()}}}function di(n){let e;return{c(){e=f("div"),e.innerHTML='Активность появится позже
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){k(t,e,l)},p:K,i:K,o:K,d(t){t&&m(e)}}}function pi(n){let e,t,l,i,s,r,c,u,d,_,b,p;function v(y,N){return y[10].length===0?hi:bi}let w=v(n),g=w(n);return{c(){e=f("div"),t=f("div"),l=f("input"),i=j(),s=f("input"),r=j(),c=f("button"),u=I("Записать"),_=j(),g.c(),o(l,"type","text"),o(l,"placeholder","Что сделано"),o(l,"class","svelte-1rwjkun"),o(s,"type","number"),o(s,"placeholder","Мин"),o(s,"min","1"),o(s,"class","svelte-1rwjkun"),o(c,"class","btn btn-primary svelte-1rwjkun"),c.disabled=d=!n[12].trim()||!n[11],o(t,"class","worklog-form svelte-1rwjkun"),o(e,"class","worklog-tab svelte-1rwjkun")},m(y,N){k(y,e,N),a(e,t),a(t,l),ce(l,n[12]),a(t,i),a(t,s),ce(s,n[11]),a(t,r),a(t,c),a(c,u),a(e,_),g.m(e,null),b||(p=[O(l,"input",n[86]),O(s,"input",n[87]),O(c,"click",n[56])],b=!0)},p(y,N){N[0]&4096&&l.value!==y[12]&&ce(l,y[12]),N[0]&2048&&Xt(s.value)!==y[11]&&ce(s,y[11]),N[0]&6144&&d!==(d=!y[12].trim()||!y[11])&&(c.disabled=d),w===(w=v(y))&&g?g.p(y,N):(g.d(1),g=w(y),g&&(g.c(),g.m(e,null)))},i:K,o:K,d(y){y&&m(e),g.d(),b=!1,se(p)}}}function _i(n){let e;function t(s,r){return s[9].length===0?gi:wi}let l=t(n),i=l(n);return{c(){i.c(),e=ae()},m(s,r){i.m(s,r),k(s,e,r)},p(s,r){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},i:K,o:K,d(s){s&&m(e),i.d(s)}}}function mi(n){let e,t,l,i,s,r,c,u,d,_,b,p,v,w,g,y,N,B,R,S=n[30].items.length>0&&Ft(n);const A=[ji,yi],T=[];function L(E,q){return E[22]?0:1}p=L(n),v=T[p]=A[p](n);let P=n[19]&&!n[21]&&Pt(),C=n[26]&&Ot(n);return{c(){e=f("div"),t=f("div"),l=f("button"),i=I("+ Добавить файл"),s=j(),r=f("button"),c=I("+ Добавить папку"),u=j(),d=f("button"),d.textContent="+ Новый файл",_=j(),S&&S.c(),b=j(),v.c(),w=j(),P&&P.c(),g=j(),C&&C.c(),y=ae(),o(l,"class","btn btn-primary svelte-1rwjkun"),l.disabled=n[19],o(r,"class","btn svelte-1rwjkun"),r.disabled=n[19],o(d,"class","btn svelte-1rwjkun"),o(t,"class","tab-toolbar svelte-1rwjkun"),o(e,"class","files-tab svelte-1rwjkun")},m(E,q){k(E,e,q),a(e,t),a(t,l),a(l,i),a(t,s),a(t,r),a(r,c),a(t,u),a(t,d),a(t,_),S&&S.m(t,null),a(e,b),T[p].m(e,null),a(e,w),P&&P.m(e,null),k(E,g,q),C&&C.m(E,q),k(E,y,q),N=!0,B||(R=[O(l,"click",n[57]),O(r,"click",n[58]),O(d,"click",n[40])],B=!0)},p(E,q){(!N||q[0]&524288)&&(l.disabled=E[19]),(!N||q[0]&524288)&&(r.disabled=E[19]),E[30].items.length>0?S?S.p(E,q):(S=Ft(E),S.c(),S.m(t,null)):S&&(S.d(1),S=null);let V=p;p=L(E),p===V?T[p].p(E,q):(_e(),ie(T[V],1,1,()=>{T[V]=null}),me(),v=T[p],v?v.p(E,q):(v=T[p]=A[p](E),v.c()),ne(v,1),v.m(e,w)),E[19]&&!E[21]?P||(P=Pt(),P.c(),P.m(e,null)):P&&(P.d(1),P=null),E[26]?C?(C.p(E,q),q[0]&67108864&&ne(C,1)):(C=Ot(E),C.c(),ne(C,1),C.m(y.parentNode,y)):C&&(_e(),ie(C,1,1,()=>{C=null}),me())},i(E){N||(ne(v),ne(C),N=!0)},o(E){ie(v),ie(C),N=!1},d(E){E&&(m(e),m(g),m(y)),S&&S.d(),T[p].d(),P&&P.d(),C&&C.d(E),B=!1,se(R)}}}function vi(n){let e,t,l,i,s,r,c,u=n[16]&&Tt(n);function d(p,v){return p[7].length===0&&!p[16]?Li:Ei}let _=d(n),b=_(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent="+ Добавить заметку",i=j(),u&&u.c(),s=j(),b.c(),o(l,"class","btn btn-primary svelte-1rwjkun"),o(t,"class","tab-toolbar svelte-1rwjkun"),o(e,"class","notes-tab svelte-1rwjkun")},m(p,v){k(p,e,v),a(e,t),a(t,l),a(e,i),u&&u.m(e,null),a(e,s),b.m(e,null),r||(c=O(l,"click",n[49]),r=!0)},p(p,v){p[16]?u?u.p(p,v):(u=Tt(p),u.c(),u.m(e,s)):u&&(u.d(1),u=null),_===(_=d(p))&&b?b.p(p,v):(b.d(1),b=_(p),b&&(b.c(),b.m(e,null)))},i:K,o:K,d(p){p&&m(e),u&&u.d(),b.d(),r=!1,c()}}}function ki(n){let e,t,l=n[5].title+"",i,s,r,c,u,d,_=n[5].type+"",b,p,v,w,g,y=(n[5].section||"—")+"",N,B,R,S,A,T=fe(n[5].createdAt)+"",L,P,C,E,q,V,x,Z,U,z,$,Q,D,J,X=n[7].length>0&&At(n),H=n[10].length>0&&Dt(n);return{c(){e=f("div"),t=f("h2"),i=I(l),s=j(),r=f("div"),c=f("div"),u=f("span"),u.textContent="Тип",d=f("span"),b=I(_),p=j(),v=f("div"),w=f("span"),w.textContent="Раздел",g=f("span"),N=I(y),B=j(),R=f("div"),S=f("span"),S.textContent="Создано",A=f("span"),L=I(T),P=j(),C=f("div"),E=f("button"),E.textContent="✏️ Новая заметка",q=j(),V=f("button"),V.textContent="📎 Добавить файл",x=j(),Z=f("button"),Z.textContent="⚡ Добавить действие",U=j(),z=f("button"),z.textContent="🕐 Записать время",$=j(),X&&X.c(),Q=j(),H&&H.c(),o(t,"class","svelte-1rwjkun"),o(u,"class","meta-label svelte-1rwjkun"),o(d,"class","svelte-1rwjkun"),o(c,"class","meta-item svelte-1rwjkun"),o(w,"class","meta-label svelte-1rwjkun"),o(g,"class","svelte-1rwjkun"),o(v,"class","meta-item svelte-1rwjkun"),o(S,"class","meta-label svelte-1rwjkun"),o(A,"class","svelte-1rwjkun"),o(R,"class","meta-item svelte-1rwjkun"),o(r,"class","meta-grid svelte-1rwjkun"),o(E,"class","qa-btn svelte-1rwjkun"),o(V,"class","qa-btn svelte-1rwjkun"),o(Z,"class","qa-btn svelte-1rwjkun"),Z.disabled=!0,o(Z,"title","Следующий этап"),o(z,"class","qa-btn svelte-1rwjkun"),o(C,"class","quick-actions svelte-1rwjkun"),o(e,"class","overview svelte-1rwjkun")},m(M,Y){k(M,e,Y),a(e,t),a(t,i),a(e,s),a(e,r),a(r,c),a(c,u),a(c,d),a(d,b),a(r,p),a(r,v),a(v,w),a(v,g),a(g,N),a(r,B),a(r,R),a(R,S),a(R,A),a(A,L),a(e,P),a(e,C),a(C,E),a(C,q),a(C,V),a(C,x),a(C,Z),a(C,U),a(C,z),a(e,$),X&&X.m(e,null),a(e,Q),H&&H.m(e,null),D||(J=[O(E,"click",n[68]),O(V,"click",n[69]),O(z,"click",n[70])],D=!0)},p(M,Y){Y[0]&32&&l!==(l=M[5].title+"")&&G(i,l),Y[0]&32&&_!==(_=M[5].type+"")&&G(b,_),Y[0]&32&&y!==(y=(M[5].section||"—")+"")&&G(N,y),Y[0]&32&&T!==(T=fe(M[5].createdAt)+"")&&G(L,T),M[7].length>0?X?X.p(M,Y):(X=At(M),X.c(),X.m(e,Q)):X&&(X.d(1),X=null),M[10].length>0?H?H.p(M,Y):(H=Dt(M),H.c(),H.m(e,null)):H&&(H.d(1),H=null)},i:K,o:K,d(M){M&&m(e),X&&X.d(),H&&H.d(),D=!1,se(J)}}}function bi(n){let e,t=te(n[10]),l=[];for(let i=0;iЗаписей работы пока нет',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){k(t,e,l)},p:K,d(t){t&&m(e)}}}function Et(n){let e,t,l=n[108].summary+"",i,s,r,c=n[108].minutes+"",u,d,_=fe(n[108].createdAt)+"",b,p;return{c(){e=f("div"),t=f("div"),i=I(l),s=j(),r=f("div"),u=I(c),d=I(" мин · "),b=I(_),p=j(),o(t,"class","svelte-1rwjkun"),o(r,"class","wl-meta svelte-1rwjkun"),o(e,"class","worklog-entry svelte-1rwjkun")},m(v,w){k(v,e,w),a(e,t),a(t,i),a(e,s),a(e,r),a(r,u),a(r,d),a(r,b),a(e,p)},p(v,w){w[0]&1024&&l!==(l=v[108].summary+"")&&G(i,l),w[0]&1024&&c!==(c=v[108].minutes+"")&&G(u,c),w[0]&1024&&_!==(_=fe(v[108].createdAt)+"")&&G(b,_)},d(v){v&&m(e)}}}function wi(n){let e,t=te(n[9]),l=[];for(let i=0;iДействий пока нет',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){k(t,e,l)},p:K,d(t){t&&m(e)}}}function Lt(n){let e,t,l=n[119].title+"",i,s,r=n[119].type+"",c,u,d,_,b,p;function v(){return n[85](n[119])}return{c(){e=f("div"),t=f("span"),i=I(l),s=f("span"),c=I(r),u=j(),d=f("button"),d.textContent="Запустить",_=j(),o(t,"class","svelte-1rwjkun"),o(s,"class","action-type svelte-1rwjkun"),o(d,"class","btn btn-sm svelte-1rwjkun"),o(e,"class","action-card svelte-1rwjkun")},m(w,g){k(w,e,g),a(e,t),a(t,i),a(e,s),a(s,c),a(e,u),a(e,d),a(e,_),b||(p=O(d,"click",v),b=!0)},p(w,g){n=w,g[0]&512&&l!==(l=n[119].title+"")&&G(i,l),g[0]&512&&r!==(r=n[119].type+"")&&G(c,r)},d(w){w&&m(e),b=!1,p()}}}function Ft(n){let e,t,l=n[30].items.length+"",i,s,r;return{c(){e=f("button"),t=I("Вставить "),i=I(l),o(e,"class","btn svelte-1rwjkun")},m(c,u){k(c,e,u),a(e,t),a(e,i),s||(r=O(e,"click",n[45]),s=!0)},p(c,u){u[0]&1073741824&&l!==(l=c[30].items.length+"")&&G(i,l)},d(c){c&&m(e),s=!1,r()}}}function yi(n){let e,t,l,i,s,r,c;const u=[Mi,Ci],d=[];function _(w,g){return w[24].length>0?0:1}e=_(n),t=d[e]=u[e](n);const b=[Si,Ni],p=[];function v(w,g){return w[25].length===0?0:1}return i=v(n),s=p[i]=b[i](n),{c(){t.c(),l=j(),s.c(),r=ae()},m(w,g){d[e].m(w,g),k(w,l,g),p[i].m(w,g),k(w,r,g),c=!0},p(w,g){let y=e;e=_(w),e===y?d[e].p(w,g):(_e(),ie(d[y],1,1,()=>{d[y]=null}),me(),t=d[e],t?t.p(w,g):(t=d[e]=u[e](w),t.c()),ne(t,1),t.m(l.parentNode,l));let N=i;i=v(w),i===N?p[i].p(w,g):(_e(),ie(p[N],1,1,()=>{p[N]=null}),me(),s=p[i],s?s.p(w,g):(s=p[i]=b[i](w),s.c()),ne(s,1),s.m(r.parentNode,r))},i(w){c||(ne(t),ne(s),c=!0)},o(w){ie(t),ie(s),c=!1},d(w){w&&(m(l),m(r)),d[e].d(w),p[i].d(w)}}}function ji(n){let e;return{c(){e=f("div"),e.innerHTML='Загрузка...
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){k(t,e,l)},p:K,i:K,o:K,d(t){t&&m(e)}}}function Ci(n){let e,t;return e=new sl({props:{crumbs:[{name:"Files"}]}}),{c(){ye(e.$$.fragment)},m(l,i){ve(e,l,i),t=!0},p:K,i(l){t||(ne(e.$$.fragment,l),t=!0)},o(l){ie(e.$$.fragment,l),t=!1},d(l){ke(e,l)}}}function Mi(n){let e,t,l,i,s,r;return e=new sl({props:{crumbs:[{name:"Files"},...n[24]]}}),e.$on("navigate",n[75]),{c(){ye(e.$$.fragment),t=j(),l=f("button"),l.textContent="← Back",o(l,"class","btn btn-sm back-btn svelte-1rwjkun")},m(c,u){ve(e,c,u),k(c,t,u),k(c,l,u),i=!0,s||(r=O(l,"click",n[36]),s=!0)},p(c,u){const d={};u[0]&16777216&&(d.crumbs=[{name:"Files"},...c[24]]),e.$set(d)},i(c){i||(ne(e.$$.fragment,c),i=!0)},o(c){ie(e.$$.fragment,c),i=!1},d(c){c&&(m(t),m(l)),ke(e,c),s=!1,r()}}}function Ni(n){let e,t=[],l=new Map,i,s=te(n[25]);const r=c=>c[116].id;for(let c=0;c0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",r,c,u,d,_,b,p,v,w,g;return{c(){e=f("div"),t=f("div"),t.innerHTML=' ',l=j(),i=f("p"),r=I(s),c=j(),u=f("p"),u.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",d=j(),_=f("div"),b=f("button"),b.textContent="Добавить файл",p=j(),v=f("button"),v.textContent="Добавить папку",o(t,"class","empty-icon svelte-1rwjkun"),o(i,"class","svelte-1rwjkun"),o(u,"class","hint svelte-1rwjkun"),o(b,"class","btn btn-primary svelte-1rwjkun"),o(v,"class","btn svelte-1rwjkun"),o(_,"class","empty-actions svelte-1rwjkun"),o(e,"class","empty-state svelte-1rwjkun")},m(y,N){k(y,e,N),a(e,t),a(e,l),a(e,i),a(i,r),a(e,c),a(e,u),a(e,d),a(e,_),a(_,b),a(_,p),a(_,v),w||(g=[O(b,"click",n[57]),O(v,"click",n[58])],w=!0)},p(y,N){N[0]&16777216&&s!==(s=y[24].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&G(r,s)},i:K,o:K,d(y){y&&m(e),w=!1,se(g)}}}function It(n,e){let t,l,i;return l=new Vn({props:{item:e[116]}}),l.$on("navigate",e[76]),l.$on("preview",e[77]),l.$on("openExternal",e[78]),l.$on("delete",e[79]),l.$on("rename",e[80]),l.$on("duplicate",e[81]),l.$on("cut",e[82]),l.$on("copy",e[83]),{key:n,first:null,c(){t=ae(),ye(l.$$.fragment),this.first=t},m(s,r){k(s,t,r),ve(l,s,r),i=!0},p(s,r){e=s;const c={};r[0]&33554432&&(c.item=e[116]),l.$set(c)},i(s){i||(ne(l.$$.fragment,s),i=!0)},o(s){ie(l.$$.fragment,s),i=!1},d(s){s&&m(t),ke(l,s)}}}function Pt(n){let e;return{c(){e=f("div"),e.innerHTML='Сканирование...
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){k(t,e,l)},d(t){t&&m(e)}}}function Ot(n){let e,t;return e=new li({props:{item:n[26],content:n[27],loading:n[28],error:n[29]}}),e.$on("close",n[39]),e.$on("openExternal",n[84]),{c(){ye(e.$$.fragment)},m(l,i){ve(e,l,i),t=!0},p(l,i){const s={};i[0]&67108864&&(s.item=l[26]),i[0]&134217728&&(s.content=l[27]),i[0]&268435456&&(s.loading=l[28]),i[0]&536870912&&(s.error=l[29]),e.$set(s)},i(l){t||(ne(e.$$.fragment,l),t=!0)},o(l){ie(e.$$.fragment,l),t=!1},d(l){ke(e,l)}}}function Tt(n){let e,t,l,i,s,r,c,u,d;return{c(){e=f("div"),t=f("input"),l=j(),i=f("div"),s=f("button"),s.textContent="Создать",r=j(),c=f("button"),c.textContent="Отмена",o(t,"type","text"),o(t,"placeholder","Название заметки"),o(t,"class","svelte-1rwjkun"),o(s,"class","btn btn-primary svelte-1rwjkun"),o(c,"class","btn svelte-1rwjkun"),o(i,"class","form-actions svelte-1rwjkun"),o(e,"class","create-form svelte-1rwjkun")},m(_,b){k(_,e,b),a(e,t),ce(t,n[17]),a(e,l),a(e,i),a(i,s),a(i,r),a(i,c),u||(d=[O(t,"input",n[72]),O(t,"keydown",n[73]),O(s,"click",n[51]),O(c,"click",n[50])],u=!0)},p(_,b){b[0]&131072&&t.value!==_[17]&&ce(t,_[17])},d(_){_&&m(e),u=!1,se(d)}}}function Ei(n){let e,t=te(n[7]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){k(t,e,l)},p:K,d(t){t&&m(e)}}}function zt(n){let e,t,l=n[111].title+"",i,s,r,c=fe(n[111].createdAt)+"",u,d,_,b;function p(){return n[74](n[111])}return{c(){e=f("div"),t=f("div"),i=I(l),s=j(),r=f("div"),u=I(c),d=j(),o(t,"class","note-card-title svelte-1rwjkun"),o(r,"class","note-card-date svelte-1rwjkun"),o(e,"class","note-card svelte-1rwjkun")},m(v,w){k(v,e,w),a(e,t),a(t,i),a(e,s),a(e,r),a(r,u),a(e,d),_||(b=O(e,"click",p),_=!0)},p(v,w){n=v,w[0]&128&&l!==(l=n[111].title+"")&&G(i,l),w[0]&128&&c!==(c=fe(n[111].createdAt)+"")&&G(u,c)},d(v){v&&m(e),_=!1,b()}}}function At(n){let e,t,l,i=te(n[7].slice(0,5)),s=[];for(let r=0;rn[90].call(v)),o(_,"class","form-group svelte-1rwjkun"),o(y,"class","btn btn-primary svelte-1rwjkun"),o(B,"class","btn svelte-1rwjkun"),o(g,"class","modal-actions svelte-1rwjkun"),o(t,"class","modal svelte-1rwjkun"),o(e,"class","modal-overlay svelte-1rwjkun")},m(L,P){k(L,e,P),a(e,t),a(t,l),a(t,i),a(t,s),a(s,r),a(s,c),a(s,u),ce(u,n[14]),a(t,d),a(t,_),a(_,b),a(_,p),a(_,v);for(let C=0;C⚒ Верстак ',i=j(),s=f("nav"),r=f("div"),c=f("div"),c.textContent="Разделы",u=j();for(let M=0;M{Q[le]=null}),me(),A=Q[S],A?A.p(M,Y):(A=Q[S]=$[S](M),A.c()),ne(A,1),A.m(g,T)),!M[8]&&!M[5]?J?J.p(M,Y):(J=Wt(M),J.c(),J.m(g,L)):J&&(J.d(1),J=null),M[13]?X?X.p(M,Y):(X=Rt(M),X.c(),X.m(g,P)):X&&(X.d(1),X=null),M[21]&&M[20]?H?H.p(M,Y):(H=Gt(M),H.c(),H.m(g,null)):H&&(H.d(1),H=null)},i(M){C||(ne(A),C=!0)},o(M){ie(A),C=!1},d(M){M&&m(e),ue(q,M),V&&V.d(),U.d(),z&&z.d(),Q[S].d(),J&&J.d(),X&&X.d(),H&&H.d()}}}function ee(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function fe(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}const Jt=n=>n.id!=="today"&&n.id!=="inbox";function Ii(n,e,t){let l=[],i=[],s="",r="",c="",u=null,d="overview",_=[],b=null,p=[],v=[],w=[],g="",y="",N=!1,B="",R="clients",S=!1,A="",T=!0,L=!1,P=null,C=!1,E="",q=!1,V=null,x=[],Z=[],U=null,z="",$=!1,Q="",D={items:[],mode:"copy"};const J=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let X=null;Yt(async()=>{try{t(2,s=await ee("VerstakVersion")||"verstak-gui/v2"),t(0,l=await ee("ListSections")||[])}catch(h){t(3,r=String(h)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",hl),X=()=>window.runtime.EventsOff("files-dropped")),t(18,T=!1)}),Qt(()=>{X&&X()});async function H(h){t(4,c=h),t(5,u=null),t(6,d="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,w=[]),t(13,N=!1),t(3,r="");try{t(1,i=await ee("ListNodesBySection",h)||[])}catch(F){t(3,r=String(F)),t(1,i=[])}}async function M(h){t(5,u=h),t(6,d="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,w=[]),t(25,Z=[]),t(24,x=[]),t(23,V=null),t(26,U=null),t(27,z=""),t(8,b=null),t(13,N=!1),t(16,S=!1),t(3,r=""),await Y(h.id)}async function Y(h){try{t(7,_=await ee("ListNotes",h)||[])}catch{}try{p=await ee("ListFiles",h)||[]}catch{}try{t(9,v=await ee("ListActions",h)||[])}catch{}try{t(10,w=await ee("ListWorklog",h)||[])}catch{}}async function le(h){t(22,q=!0);try{let F=await ee("ListItems",h)||[];F.sort((oe,be)=>oe.type!==be.type?oe.type==="folder"?-1:1:(oe.name||"").localeCompare(be.name||"")),t(25,Z=F)}catch{t(25,Z=[])}t(22,q=!1)}async function re(h){if(u){try{const F=await ee("GetNodeDetail",h);F&&t(24,x=[...x,{id:h,name:F.title}])}catch{t(24,x=[...x,{id:h,name:"..."}])}t(23,V=h),await le(h)}}function Ee(){if(x.length<2)t(24,x=[]),t(23,V=null),le(u.id);else{const h=x[x.length-2];t(24,x=x.slice(0,-1)),t(23,V=h.id),le(h.id)}}function Ge(h){const F=x[h];t(24,x=x.slice(0,h+1)),t(23,V=F.id),le(F.id)}async function Ke(h){t(26,U=h),t(27,z=""),t(29,Q=""),t(28,$=!0);try{Pn(h)?t(27,z=await ee("GetFileBase64",h.fileId)||""):On(h)&&t(27,z=await ee("ReadFileText",h.fileId)||"")}catch(F){t(29,Q=String(F))}t(28,$=!1)}function rl(){t(26,U=null),t(27,z=""),t(29,Q="")}async function ol(){const h=prompt("Введите имя файла:");if(!(!h||!h.trim()))try{const F=V||u.id;await ee("CreateEmptyFile",F,h.trim()),await le(F)}catch(F){t(3,r=String(F))}}async function Je(h){try{await ee("DuplicateNode",h);const F=V||u.id;await le(F)}catch(F){t(3,r=String(F))}}function Ue(h){const F=prompt("Новое имя:");!F||!F.trim()||cl(h,F.trim())}async function cl(h,F){try{await ee("RenameNode",h,F);const oe=V||u.id;await le(oe)}catch(oe){t(3,r=String(oe))}}function Ze(h){t(30,D={items:[h],mode:"cut"})}function Xe(h){t(30,D={items:[h],mode:"copy"})}async function ul(){if(D.items.length===0)return;const h=V||u.id;try{if(D.mode==="copy")for(const F of D.items)await ee("DuplicateNode",F);else for(const F of D.items)await ee("MoveNode",F,h);t(30,D={items:[],mode:"copy"}),await le(h)}catch(F){t(3,r=String(F))}}function al(){t(13,N=!0),t(14,B=""),t(15,R=c||"clients")}function fl(){t(13,N=!1),t(14,B="")}async function Ye(){if(B.trim())try{const h=await ee("CreateNode","","case",B.trim(),R);t(13,N=!1),t(14,B=""),await H(R)}catch(h){t(3,r=String(h))}}function Qe(){t(16,S=!0),t(17,A="")}function dl(){t(16,S=!1),t(17,A="")}async function xe(){if(!(!A.trim()||!u))try{const h=await ee("CreateNote",u.id,A.trim());t(7,_=[..._,h&&h.id?h:{id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()}]),t(16,S=!1),t(17,A="")}catch{const F={id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()};t(7,_=[..._,F]),t(16,S=!1),t(17,A="")}}async function ze(h){if(!(b&&b.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const F=await ee("ReadNote",h.id);t(8,b={id:h.id,title:h.title,content:F||"",dirty:!1})}catch{t(8,b={id:h.id,title:h.title,content:"# "+h.title+`
-
-`,dirty:!1})}}function pl(){b&&b.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,b=null)}function _l(h){b&&(t(8,b.content=h.target.value,b),t(8,b.dirty=!0,b))}async function ml(){if(b)try{await ee("SaveNote",b.id,b.content),t(8,b.dirty=!1,b)}catch{t(8,b.dirty=!1,b)}}async function vl(){const h=parseInt(g,10);if(!(!y.trim()||isNaN(h)||h<=0||!u)){try{const F=await ee("CreateWorklog",u.id,y.trim(),h);t(10,w=[...w,F&&F.id?F:{id:Date.now().toString(),nodeId:u.id,summary:y.trim(),minutes:h,createdAt:new Date().toISOString()}])}catch{t(10,w=[...w,{id:Date.now().toString(),nodeId:u.id,summary:y.trim(),minutes:h,createdAt:new Date().toISOString()}])}t(12,y=""),t(11,g="")}}async function $e(){const h=await ee("PickFile");h&&await Ae(u.id,h)}async function kl(){const h=await ee("PickDirectory");h&&await Ae(u.id,h)}async function Ae(h,F){t(19,L=!0);try{const oe=await ee("PreviewImport",F);t(20,P=oe),E=F,t(21,C=!0)}catch(oe){t(3,r=String(oe))}t(19,L=!1)}async function Be(h){try{const F=h==="copy"?await ee("AddPathCopy",u.id,E):await ee("AddPathLink",u.id,E);t(21,C=!1),t(20,P=null),t(24,x=[]),t(23,V=null),await Promise.all([Y(u.id),le(u.id)])}catch(F){t(3,r=String(F))}}function bl(){t(21,C=!1),t(20,P=null)}async function et({id:h,type:F}){if(confirm(`Удалить ${F==="folder"?"папку":"файл"}?`))try{await ee("DeleteFileOrFolder",h),p=p.filter(Xl=>Xl.nodeId!==h);const be=V||u.id;await le(be)}catch(be){t(3,r=String(be))}}async function hl(h){if(!h||h.length===0)return;if(!u){t(3,r="Сначала выберите дело для добавления файлов");return}const F=h[0];await Ae(u.id,F)}function wl(h){return d===h?"tab active":"tab"}const gl=h=>H(h.id),yl=h=>M(h),jl=()=>t(3,r="");function Cl(){b.content=this.value,t(8,b)}const Ml=h=>{t(6,d=h.id),h.id==="files"&&u&&Z.length===0&&!V&&le(u.id)},Nl=()=>{t(6,d="notes"),Qe()},Sl=()=>{t(6,d="files"),$e()},El=()=>t(6,d="worklog"),Ll=h=>ze(h);function Fl(){A=this.value,t(17,A)}const Il=h=>h.key==="Enter"&&xe(),Pl=h=>ze(h),Ol=h=>{const F=h.detail;F===0?(t(24,x=[]),t(23,V=null),le(u.id)):Ge(F-1)},Tl=h=>re(h.detail),zl=h=>Ke(h.detail),Al=h=>ee("OpenFile",h.detail),Bl=h=>et(h.detail),Dl=h=>Ue(h.detail.id),Hl=h=>Je(h.detail),Vl=h=>Ze(h.detail),Wl=h=>Xe(h.detail),Rl=h=>ee("OpenFile",h.detail),ql=h=>ee("RunAction",h.id);function Gl(){y=this.value,t(12,y)}function Kl(){g=Xt(this.value),t(11,g)}function Jl(){B=this.value,t(14,B)}const Ul=h=>h.key==="Enter"&&Ye();function Zl(){R=tn(this),t(15,R),t(0,l)}return[l,i,s,r,c,u,d,_,b,v,w,g,y,N,B,R,S,A,T,L,P,C,q,V,x,Z,U,z,$,Q,D,J,H,M,le,re,Ee,Ge,Ke,rl,ol,Je,Ue,Ze,Xe,ul,al,fl,Ye,Qe,dl,xe,ze,pl,_l,ml,vl,$e,kl,Be,bl,et,wl,gl,yl,jl,Cl,Ml,Nl,Sl,El,Ll,Fl,Il,Pl,Ol,Tl,zl,Al,Bl,Dl,Hl,Vl,Wl,Rl,ql,Gl,Kl,Jl,Ul,Zl,()=>Be("copy"),()=>Be("link")]}class Pi extends Se{constructor(e){super(),Ne(this,e,Ii,Fi,Me,{},null,[-1,-1,-1,-1,-1])}}new Pi({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-DTAZ0AQ4.css b/cmd/verstak-gui/frontend-dist/assets/main-DTAZ0AQ4.css
deleted file mode 100644
index f19a8e4..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-DTAZ0AQ4.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-actions.svelte-7ixqek{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease}.file-row:hover .file-actions.svelte-7ixqek{opacity:1}.action-btn.svelte-7ixqek{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-7ixqek:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-7ixqek:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-7ixqek:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.file-row.svelte-1fc98j1{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:48px}.file-row.svelte-1fc98j1:hover{background:#1e1e30}.file-row--folder.svelte-1fc98j1{cursor:pointer}.file-row-left.svelte-1fc98j1{display:flex;align-items:center;gap:6px;flex-shrink:0;color:#888}.expand-toggle.svelte-1fc98j1{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:transparent;color:#777;cursor:pointer;border-radius:3px;transition:color .12s,background .12s}.expand-toggle.svelte-1fc98j1:hover{color:#ccc;background:#2a2a3c}.expand-toggle.svelte-1fc98j1:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.expand-spacer.svelte-1fc98j1{width:16px;flex-shrink:0}.file-row-body.svelte-1fc98j1{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1fc98j1{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1fc98j1{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1fc98j1{color:#444}@keyframes svelte-1fc98j1-spin{to{transform:rotate(360deg)}}.spin.svelte-1fc98j1{animation:svelte-1fc98j1-spin 1s linear infinite}.svelte-1dzzaxf.svelte-1dzzaxf,.svelte-1dzzaxf.svelte-1dzzaxf:before,.svelte-1dzzaxf.svelte-1dzzaxf:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-1dzzaxf.svelte-1dzzaxf{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-1dzzaxf.svelte-1dzzaxf{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-1dzzaxf.svelte-1dzzaxf{font-size:20px;line-height:1}.brand-name.svelte-1dzzaxf.svelte-1dzzaxf{font-size:16px;font-weight:600}.sidebar-nav.svelte-1dzzaxf.svelte-1dzzaxf{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-1dzzaxf.svelte-1dzzaxf{margin-bottom:16px}.nav-label.svelte-1dzzaxf.svelte-1dzzaxf{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-1dzzaxf.svelte-1dzzaxf{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#223}.nav-item.selected.svelte-1dzzaxf.svelte-1dzzaxf{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-1dzzaxf.svelte-1dzzaxf{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-1dzzaxf.svelte-1dzzaxf{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-1dzzaxf.svelte-1dzzaxf{font-size:11px;color:#555}.main.svelte-1dzzaxf.svelte-1dzzaxf{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-1dzzaxf.svelte-1dzzaxf{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-1dzzaxf.svelte-1dzzaxf{font-size:14px;font-weight:500}.crumb.placeholder.svelte-1dzzaxf.svelte-1dzzaxf{color:#666}.crumb-type.svelte-1dzzaxf.svelte-1dzzaxf{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-1dzzaxf.svelte-1dzzaxf{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between}.dismiss.svelte-1dzzaxf.svelte-1dzzaxf{opacity:.6}.tabs.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-1dzzaxf.svelte-1dzzaxf{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-1dzzaxf.svelte-1dzzaxf:hover{color:#ccc}.tab.active.svelte-1dzzaxf.svelte-1dzzaxf{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-1dzzaxf.svelte-1dzzaxf{flex:1;overflow-y:auto}.note-editor.svelte-1dzzaxf.svelte-1dzzaxf{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-1dzzaxf.svelte-1dzzaxf{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-1dzzaxf.svelte-1dzzaxf{font-size:16px;font-weight:500}.dirty-mark.svelte-1dzzaxf.svelte-1dzzaxf{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-1dzzaxf.svelte-1dzzaxf{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-1dzzaxf.svelte-1dzzaxf{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-1dzzaxf.svelte-1dzzaxf{padding:24px}.overview.svelte-1dzzaxf h2.svelte-1dzzaxf{font-size:24px;margin-bottom:16px}.meta-grid.svelte-1dzzaxf.svelte-1dzzaxf{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-1dzzaxf.svelte-1dzzaxf{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-1dzzaxf.svelte-1dzzaxf{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-1dzzaxf.svelte-1dzzaxf{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}.qa-btn.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#223}.qa-btn.svelte-1dzzaxf.svelte-1dzzaxf:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-1dzzaxf.svelte-1dzzaxf{margin-bottom:24px}.recent-section.svelte-1dzzaxf h3.svelte-1dzzaxf{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-1dzzaxf.svelte-1dzzaxf{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#1a1a28}.recent-date.svelte-1dzzaxf.svelte-1dzzaxf{font-size:11px;color:#555}.recent-entry.svelte-1dzzaxf.svelte-1dzzaxf{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-1dzzaxf.svelte-1dzzaxf{padding:24px}.tab-toolbar.svelte-1dzzaxf.svelte-1dzzaxf{margin-bottom:16px}.create-form.svelte-1dzzaxf.svelte-1dzzaxf{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-1dzzaxf input.svelte-1dzzaxf{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-1dzzaxf input.svelte-1dzzaxf:focus{outline:none;border-color:#6366f1}.form-actions.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;gap:8px}.notes-list.svelte-1dzzaxf.svelte-1dzzaxf{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-1dzzaxf.svelte-1dzzaxf{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-1dzzaxf.svelte-1dzzaxf:hover{border-color:#3a3a5c}.note-card-title.svelte-1dzzaxf.svelte-1dzzaxf{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-1dzzaxf.svelte-1dzzaxf{font-size:11px;color:#555}.worklog-tab.svelte-1dzzaxf.svelte-1dzzaxf{padding:24px}.worklog-form.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-1dzzaxf input.svelte-1dzzaxf{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-1dzzaxf input.svelte-1dzzaxf:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-1dzzaxf input[type=text].svelte-1dzzaxf{flex:1}.worklog-form.svelte-1dzzaxf input[type=number].svelte-1dzzaxf{width:70px}.worklog-entry.svelte-1dzzaxf.svelte-1dzzaxf{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-1dzzaxf.svelte-1dzzaxf{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-1dzzaxf.svelte-1dzzaxf{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-1dzzaxf.svelte-1dzzaxf{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-1dzzaxf.svelte-1dzzaxf{padding:48px 24px;text-align:center}.empty-state.svelte-1dzzaxf p.svelte-1dzzaxf{color:#666;margin-bottom:8px}.hint.svelte-1dzzaxf.svelte-1dzzaxf{font-size:13px;color:#555}.empty-actions.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;gap:8px;justify-content:center;margin:16px 0}.empty-note.svelte-1dzzaxf.svelte-1dzzaxf{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-1dzzaxf.svelte-1dzzaxf{padding:48px 24px;text-align:center}.welcome.svelte-1dzzaxf h2.svelte-1dzzaxf{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-1dzzaxf p.svelte-1dzzaxf{color:#666;font-size:14px}.error-text.svelte-1dzzaxf.svelte-1dzzaxf{color:#f88}.fab.svelte-1dzzaxf.svelte-1dzzaxf{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#4f46e5}.modal-overlay.svelte-1dzzaxf.svelte-1dzzaxf{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-1dzzaxf.svelte-1dzzaxf{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-1dzzaxf h3.svelte-1dzzaxf{font-size:18px;margin-bottom:16px}.form-group.svelte-1dzzaxf.svelte-1dzzaxf{margin-bottom:12px}.form-group.svelte-1dzzaxf label.svelte-1dzzaxf{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-1dzzaxf input.svelte-1dzzaxf,.form-group.svelte-1dzzaxf select.svelte-1dzzaxf{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-1dzzaxf select.svelte-1dzzaxf{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-1dzzaxf input.svelte-1dzzaxf:focus,.form-group.svelte-1dzzaxf select.svelte-1dzzaxf:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-1dzzaxf.svelte-1dzzaxf{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#223}.btn-primary.svelte-1dzzaxf.svelte-1dzzaxf{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#4f46e5}.btn.svelte-1dzzaxf.svelte-1dzzaxf:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-1dzzaxf.svelte-1dzzaxf{padding:4px 10px;font-size:12px}.btn-danger.svelte-1dzzaxf.svelte-1dzzaxf{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-1dzzaxf.svelte-1dzzaxf:hover{background:#3a2222}.files-tab.svelte-1dzzaxf.svelte-1dzzaxf{padding:20px}.files-tab.svelte-1dzzaxf .tab-toolbar.svelte-1dzzaxf{display:flex;gap:8px;align-items:center;margin-bottom:16px}.empty-state.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-1dzzaxf p.svelte-1dzzaxf{margin:0;font-size:14px;color:#666}.empty-state.svelte-1dzzaxf .empty-icon.svelte-1dzzaxf{margin-bottom:12px;color:#444}.empty-state.svelte-1dzzaxf .hint.svelte-1dzzaxf{margin-top:6px;font-size:12px;color:#555}.empty-state.svelte-1dzzaxf .empty-actions.svelte-1dzzaxf{display:flex;gap:8px;margin-top:16px}.import-summary.svelte-1dzzaxf.svelte-1dzzaxf{margin-bottom:16px}.summary-row.svelte-1dzzaxf.svelte-1dzzaxf{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-1dzzaxf.svelte-1dzzaxf{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-DcPiQSbo.css b/cmd/verstak-gui/frontend-dist/assets/main-DcPiQSbo.css
deleted file mode 100644
index 981888b..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-DcPiQSbo.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-row.svelte-vi5rh0.svelte-vi5rh0{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none}.file-row.svelte-vi5rh0.svelte-vi5rh0:hover{background:#1e1e30}.file-row.svelte-vi5rh0.svelte-vi5rh0:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-vi5rh0.svelte-vi5rh0{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-vi5rh0.svelte-vi5rh0{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-vi5rh0.svelte-vi5rh0{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-vi5rh0.svelte-vi5rh0{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-vi5rh0.svelte-vi5rh0{color:#444}.file-row-actions.svelte-vi5rh0.svelte-vi5rh0{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-vi5rh0:hover .file-row-actions.svelte-vi5rh0{opacity:1}.action-btn.svelte-vi5rh0.svelte-vi5rh0{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-vi5rh0.svelte-vi5rh0:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-vi5rh0.svelte-vi5rh0:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-vi5rh0.svelte-vi5rh0:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-vi5rh0.svelte-vi5rh0{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-vi5rh0.svelte-vi5rh0{position:absolute;right:12px;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;padding:4px;z-index:100;min-width:140px;box-shadow:0 4px 12px #0006}.menu-item.svelte-vi5rh0.svelte-vi5rh0{display:block;width:100%;padding:6px 12px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-vi5rh0.svelte-vi5rh0:hover{background:#2a2a3c}.menu-item.svelte-vi5rh0.svelte-vi5rh0:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1ybaoro{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1ybaoro{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1ybaoro{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1ybaoro{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1ybaoro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1ybaoro{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1ybaoro{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1ybaoro{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1ybaoro:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1ybaoro:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.preview-body.svelte-1ybaoro{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1ybaoro{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1ybaoro{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1ybaoro{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1ybaoro{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1ybaoro{width:100%;height:100%}.preview-pdf.svelte-1ybaoro{width:100%;height:100%;border:none}.btn-sm.svelte-1ybaoro{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1ybaoro:hover{background:#223}.svelte-1rwjkun.svelte-1rwjkun,.svelte-1rwjkun.svelte-1rwjkun:before,.svelte-1rwjkun.svelte-1rwjkun:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-1rwjkun.svelte-1rwjkun{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sidebar.svelte-1rwjkun.svelte-1rwjkun{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-1rwjkun.svelte-1rwjkun{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-1rwjkun.svelte-1rwjkun{font-size:20px;line-height:1}.brand-name.svelte-1rwjkun.svelte-1rwjkun{font-size:16px;font-weight:600}.sidebar-nav.svelte-1rwjkun.svelte-1rwjkun{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.nav-label.svelte-1rwjkun.svelte-1rwjkun{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-1rwjkun.svelte-1rwjkun{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.nav-item.selected.svelte-1rwjkun.svelte-1rwjkun{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-1rwjkun.svelte-1rwjkun{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-1rwjkun.svelte-1rwjkun{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.main.svelte-1rwjkun.svelte-1rwjkun{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-1rwjkun.svelte-1rwjkun{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-1rwjkun.svelte-1rwjkun{font-size:14px;font-weight:500}.crumb.placeholder.svelte-1rwjkun.svelte-1rwjkun{color:#666}.crumb-type.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-1rwjkun.svelte-1rwjkun{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between}.dismiss.svelte-1rwjkun.svelte-1rwjkun{opacity:.6}.tabs.svelte-1rwjkun.svelte-1rwjkun{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-1rwjkun.svelte-1rwjkun{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-1rwjkun.svelte-1rwjkun:hover{color:#ccc}.tab.active.svelte-1rwjkun.svelte-1rwjkun{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-1rwjkun.svelte-1rwjkun{flex:1;overflow-y:auto}.note-editor.svelte-1rwjkun.svelte-1rwjkun{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-1rwjkun.svelte-1rwjkun{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-1rwjkun.svelte-1rwjkun{font-size:16px;font-weight:500}.dirty-mark.svelte-1rwjkun.svelte-1rwjkun{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-1rwjkun.svelte-1rwjkun{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-1rwjkun.svelte-1rwjkun{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.overview.svelte-1rwjkun h2.svelte-1rwjkun{font-size:24px;margin-bottom:16px}.meta-grid.svelte-1rwjkun.svelte-1rwjkun{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-1rwjkun.svelte-1rwjkun{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-1rwjkun.svelte-1rwjkun{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}.qa-btn.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.qa-btn.svelte-1rwjkun.svelte-1rwjkun:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:24px}.recent-section.svelte-1rwjkun h3.svelte-1rwjkun{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-1rwjkun.svelte-1rwjkun{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-1rwjkun.svelte-1rwjkun:hover{background:#1a1a28}.recent-date.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.recent-entry.svelte-1rwjkun.svelte-1rwjkun{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.tab-toolbar.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.create-form.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-1rwjkun input.svelte-1rwjkun{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-1rwjkun input.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.form-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px}.notes-list.svelte-1rwjkun.svelte-1rwjkun{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-1rwjkun.svelte-1rwjkun:hover{border-color:#3a3a5c}.note-card-title.svelte-1rwjkun.svelte-1rwjkun{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555}.worklog-tab.svelte-1rwjkun.svelte-1rwjkun{padding:24px}.worklog-form.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-1rwjkun input.svelte-1rwjkun{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-1rwjkun input.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-1rwjkun input[type=text].svelte-1rwjkun{flex:1}.worklog-form.svelte-1rwjkun input[type=number].svelte-1rwjkun{width:70px}.worklog-entry.svelte-1rwjkun.svelte-1rwjkun{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-1rwjkun.svelte-1rwjkun{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-1rwjkun.svelte-1rwjkun{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-1rwjkun p.svelte-1rwjkun{margin:0;font-size:14px;color:#666}.empty-state.svelte-1rwjkun .empty-icon.svelte-1rwjkun{margin-bottom:12px;color:#444}.empty-state.svelte-1rwjkun .hint.svelte-1rwjkun{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-1rwjkun .empty-actions.svelte-1rwjkun{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-1rwjkun.svelte-1rwjkun{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-1rwjkun.svelte-1rwjkun{padding:48px 24px;text-align:center}.welcome.svelte-1rwjkun h2.svelte-1rwjkun{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-1rwjkun p.svelte-1rwjkun{color:#666;font-size:14px}.error-text.svelte-1rwjkun.svelte-1rwjkun{color:#f88}.fab.svelte-1rwjkun.svelte-1rwjkun{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-1rwjkun.svelte-1rwjkun:hover{background:#4f46e5}.modal-overlay.svelte-1rwjkun.svelte-1rwjkun{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-1rwjkun.svelte-1rwjkun{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-1rwjkun h3.svelte-1rwjkun{font-size:18px;margin-bottom:16px}.form-group.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:12px}.form-group.svelte-1rwjkun label.svelte-1rwjkun{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-1rwjkun input.svelte-1rwjkun,.form-group.svelte-1rwjkun select.svelte-1rwjkun{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-1rwjkun select.svelte-1rwjkun{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-1rwjkun input.svelte-1rwjkun:focus,.form-group.svelte-1rwjkun select.svelte-1rwjkun:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-1rwjkun.svelte-1rwjkun{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-1rwjkun.svelte-1rwjkun{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1rwjkun.svelte-1rwjkun:hover{background:#223}.btn-primary.svelte-1rwjkun.svelte-1rwjkun{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1rwjkun.svelte-1rwjkun:hover{background:#4f46e5}.btn.svelte-1rwjkun.svelte-1rwjkun:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-1rwjkun.svelte-1rwjkun{padding:4px 10px;font-size:12px}.btn-danger.svelte-1rwjkun.svelte-1rwjkun{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-1rwjkun.svelte-1rwjkun:hover{background:#3a2222}.files-tab.svelte-1rwjkun.svelte-1rwjkun{padding:20px}.files-tab.svelte-1rwjkun .tab-toolbar.svelte-1rwjkun{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-1rwjkun.svelte-1rwjkun{display:flex;flex-direction:column}.back-btn.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:4px}.import-summary.svelte-1rwjkun.svelte-1rwjkun{margin-bottom:16px}.summary-row.svelte-1rwjkun.svelte-1rwjkun{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-1rwjkun.svelte-1rwjkun{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-Dt-7hdPr.js b/cmd/verstak-gui/frontend-dist/assets/main-Dt-7hdPr.js
new file mode 100644
index 0000000..af1a6da
--- /dev/null
+++ b/cmd/verstak-gui/frontend-dist/assets/main-Dt-7hdPr.js
@@ -0,0 +1,16 @@
+var _i=Object.defineProperty;var vi=(n,e,t)=>e in n?_i(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var ot=(n,e,t)=>vi(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&l(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function K(){}function Kl(n){return n()}function jt(){return Object.create(null)}function ce(n){n.forEach(Kl)}function Gl(n){return typeof n=="function"}function He(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Re;function Ke(n,e){return n===e?!0:(Re||(Re=document.createElement("a")),Re.href=e,n===Re.href)}function ki(n){return Object.keys(n).length===0}function hi(n){return n??""}function f(n,e){n.appendChild(e)}function b(n,e,t){n.insertBefore(e,t||null)}function h(n){n.parentNode&&n.parentNode.removeChild(n)}function pe(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function ke(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function ze(n){return function(e){e.target===this&&n.call(this,e)}}function r(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Ul(n){return n===""?null:+n}function bi(n){return Array.from(n.childNodes)}function z(n,e){e=""+e,n.data!==e&&(n.data=e)}function me(n,e){n.value=e??""}function Bt(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const s=yi(e,t,{cancelable:l});return i.slice().forEach(o=>{o.call(n,s)}),!s.defaultPrevented}return!0}}function wi(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const Ne=[],Ot=[];let Ie=[];const Pt=[],qi=Promise.resolve();let ct=!1;function Ci(){ct||(ct=!0,qi.then(Zl))}function Ge(n){Ie.push(n)}const rt=new Set;let De=0;function Zl(){if(De!==0)return;const n=Pe;do{try{for(;Den.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),Ie=e}const We=new Set;let Me;function he(){Me={r:0,c:[],p:Me}}function be(){Me.r||ce(Me.c),Me=Me.p}function ne(n,e){n&&n.i&&(We.delete(n),n.i(e))}function oe(n,e,t,l){if(n&&n.o){if(We.has(n))return;We.add(n),Me.c.push(()=>{We.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function le(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function Li(n,e){oe(n,1,1,()=>{e.delete(n.key)})}function Si(n,e,t,l,i,s,o,c,a,d,_,y){let p=n.length,v=s.length,g=p;const k={};for(;g--;)k[n[g].key]=g;const q=[],C=new Map,L=new Map,H=[];for(g=v;g--;){const F=y(i,s,g),B=t(F);let T=o.get(B);T?H.push(()=>T.p(F,e)):(T=d(B,F),T.c()),C.set(B,q[g]=T),B in k&&L.set(B,Math.abs(g-k[B]))}const N=new Set,A=new Set;function D(F){ne(F,1),F.m(c,_),o.set(F.key,F),_=F.first,v--}for(;p&&v;){const F=q[v-1],B=n[p-1],T=F.key,E=B.key;F===B?(_=F.first,p--,v--):C.has(E)?!o.has(T)||N.has(T)?D(F):A.has(E)?p--:L.get(T)>L.get(E)?(A.add(T),D(F)):(N.add(E),p--):(a(B,o),p--)}for(;p--;){const F=n[p];C.has(F.key)||a(F,o)}for(;v;)D(q[v-1]);return ce(H),q}function Te(n){n&&n.c()}function ye(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),Ge(()=>{const s=n.$$.on_mount.map(Kl).filter(Gl);n.$$.on_destroy?n.$$.on_destroy.push(...s):ce(s),n.$$.on_mount=[]}),i.forEach(Ge)}function we(n,e){const t=n.$$;t.fragment!==null&&(Ti(t.after_update),ce(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Di(n,e){n.$$.dirty[0]===-1&&(Ne.push(n),Ci(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const g=v.length?v[0]:p;return d.ctx&&i(d.ctx[y],d.ctx[y]=g)&&(!d.skip_bound&&d.bound[y]&&d.bound[y](g),_&&Di(n,y)),p}):[],d.update(),_=!0,ce(d.before_update),d.fragment=l?l(d.ctx):!1,e.target){if(e.hydrate){const y=bi(e.target);d.fragment&&d.fragment.l(y),y.forEach(h)}else d.fragment&&d.fragment.c();e.intro&&ne(n.$$.fragment),ye(n,e.target,e.anchor),Zl()}Oe(a)}class Be{constructor(){ot(this,"$$");ot(this,"$$set")}$destroy(){we(this,1),this.$destroy=K}$on(e,t){if(!Gl(t))return K;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!ki(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Ni="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Ni);function Ii(n){let e,t;return{c(){e=R("path"),t=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(h(e),h(t))}}}function Ei(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17"),r(s,"points","10 9 9 9 8 9")},m(o,c){b(o,e,c),b(o,t,c),b(o,l,c),b(o,i,c),b(o,s,c)},d(o){o&&(h(e),h(t),h(l),h(i),h(s))}}}function Fi(n){let e,t;return{c(){e=R("polyline"),t=R("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(h(e),h(t))}}}function Hi(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(l,"x1","3"),r(l,"y1","8"),r(l,"x2","21"),r(l,"y2","8"),r(i,"x","10"),r(i,"y","12"),r(i,"width","4"),r(i,"height","4"),r(i,"rx","1")},m(s,o){b(s,e,o),b(s,t,o),b(s,l,o),b(s,i,o)},d(s){s&&(h(e),h(t),h(l),h(i))}}}function ji(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","9"),r(l,"y1","12"),r(l,"x2","15"),r(l,"y2","12"),r(i,"x1","9"),r(i,"y1","15"),r(i,"x2","13"),r(i,"y2","15"),r(s,"x1","12"),r(s,"y1","15"),r(s,"x2","12"),r(s,"y2","18")},m(o,c){b(o,e,c),b(o,t,c),b(o,l,c),b(o,i,c),b(o,s,c)},d(o){o&&(h(e),h(t),h(l),h(i),h(s))}}}function Bi(n){let e,t,l,i,s,o;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),o=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14"),r(o,"x1","12"),r(o,"y1","12"),r(o,"x2","12"),r(o,"y2","18")},m(c,a){b(c,e,a),b(c,t,a),b(c,l,a),b(c,i,a),b(c,s,a),b(c,o,a)},d(c){c&&(h(e),h(t),h(l),h(i),h(s),h(o))}}}function Ai(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17")},m(s,o){b(s,e,o),b(s,t,o),b(s,l,o),b(s,i,o)},d(s){s&&(h(e),h(t),h(l),h(i))}}}function Oi(n){let e,t,l,i,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(s,"x1","8"),r(s,"y1","14"),r(s,"x2","12"),r(s,"y2","14")},m(o,c){b(o,e,c),b(o,t,c),b(o,l,c),b(o,i,c),b(o,s,c)},d(o){o&&(h(e),h(t),h(l),h(i),h(s))}}}function Pi(n){let e,t,l;return{c(){e=R("path"),t=R("circle"),l=R("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(l,"cx","18"),r(l,"cy","16"),r(l,"r","3")},m(i,s){b(i,e,s),b(i,t,s),b(i,l,s)},d(i){i&&(h(e),h(t),h(l))}}}function zi(n){let e,t;return{c(){e=R("rect"),t=R("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(h(e),h(t))}}}function Vi(n){let e,t,l;return{c(){e=R("rect"),t=R("circle"),l=R("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(l,"points","21 15 16 10 5 21")},m(i,s){b(i,e,s),b(i,t,s),b(i,l,s)},d(i){i&&(h(e),h(t),h(l))}}}function Ri(n){let e;return{c(){e=R("path"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){b(t,e,l)},d(t){t&&h(e)}}}function Wi(n){let e;function t(s,o){return s[0]==="folder"?Ri:s[0]==="image"?Vi:s[0]==="video"?zi:s[0]==="audio"?Pi:s[0]==="pdf"?Oi:s[0]==="document"?Ai:s[0]==="spreadsheet"?Bi:s[0]==="presentation"?ji:s[0]==="archive"?Hi:s[0]==="code"?Fi:s[0]==="text"?Ei:Ii}let l=t(n),i=l(n);return{c(){e=R("svg"),i.c(),r(e,"width",n[1]),r(e,"height",n[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){b(s,e,o),i.m(e,null)},p(s,[o]){l!==(l=t(s))&&(i.d(1),i=l(s),i&&(i.c(),i.m(e,null))),o&2&&r(e,"width",s[1]),o&2&&r(e,"height",s[1])},i:K,o:K,d(s){s&&h(e),i.d()}}}function Ki(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=s=>{"kind"in s&&t(0,l=s.kind),"size"in s&&t(1,i=s.size)},[l,i]}class Yl extends Be{constructor(e){super(),je(this,e,Ki,Wi,He,{kind:0,size:1})}}function Ue(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const at={"image/jpeg":"Изображение JPEG","image/png":"Изображение PNG","image/gif":"Изображение GIF","image/webp":"Изображение WebP","image/svg+xml":"Изображение SVG","image/bmp":"Изображение BMP","image/tiff":"Изображение TIFF","image/avif":"Изображение AVIF","application/pdf":"PDF документ","application/msword":"Документ Word","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Документ Word","application/vnd.ms-excel":"Таблица Excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Таблица Excel","application/vnd.ms-powerpoint":"Презентация PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Презентация PowerPoint","application/zip":"ZIP архив","application/gzip":"GZIP архив","application/x-tar":"TAR архив","application/x-7z-compressed":"7z архив","application/x-rar-compressed":"RAR архив","text/plain":"Текстовый файл","text/html":"HTML файл","text/css":"CSS файл","text/javascript":"JavaScript файл","application/json":"JSON файл","application/xml":"XML файл","application/x-yaml":"YAML файл","application/octet-stream":"Бинарный файл","application/x-msdos-program":"Исполняемый файл","inode/directory":"Папка"};function zt(n){return n?at[n]||n:"Неизвестно"}function Gi(n){if(n.type==="folder")return"Папка";const e=(n.mime||"").toLowerCase();if(at[e])return at[e];const l=(n.name||"").toLowerCase().split(".").pop();return l?l.toUpperCase():"Файл"}function Ql(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const Ui=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Ji=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Xi=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Zi=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function xl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Ui.includes(e)||Zi.includes(l)}function $l(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return Ji.includes(e)||Xi.includes(l)&&l!=="md"&&l!=="markdown"}function en(n){return(n.mime||"").toLowerCase().includes("pdf")}function tn(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Yi(n){return xl(n)||en(n)}function Qi(n){return $l(n)||tn(n)}function xi(n){let e,t,l,i=Ue(n[0].size)+"",s;return{c(){e=u("span"),e.textContent="·",t=w(),l=u("span"),s=S(i),r(e,"class","meta-sep svelte-1u905d2")},m(o,c){b(o,e,c),b(o,t,c),b(o,l,c),f(l,s)},p(o,c){c&1&&i!==(i=Ue(o[0].size)+"")&&z(s,i)},d(o){o&&(h(e),h(t),h(l))}}}function $i(n){let e,t,l;return{c(){e=u("button"),e.innerHTML=' ',r(e,"class","action-btn svelte-1u905d2"),r(e,"title","Открыть папку"),r(e,"aria-label","Открыть папку")},m(i,s){b(i,e,s),t||(l=I(e,"click",ke(n[27])),t=!0)},p:K,d(i){i&&h(e),t=!1,l()}}}function es(n){let e,t,l,i,s;return{c(){e=u("button"),e.innerHTML=' ',t=w(),l=u("button"),l.innerHTML=' ',r(e,"class","action-btn svelte-1u905d2"),r(e,"title","Предпросмотр"),r(e,"aria-label","Предпросмотр"),r(l,"class","action-btn svelte-1u905d2"),r(l,"title","Открыть во внешней программе"),r(l,"aria-label","Открыть внешне")},m(o,c){b(o,e,c),b(o,t,c),b(o,l,c),i||(s=[I(e,"click",ke(n[26])),I(l,"click",ke(n[8]))],i=!0)},p:K,d(o){o&&(h(e),h(t),h(l)),i=!1,ce(s)}}}function Vt(n){let e,t,l,i,s,o,c,a,d,_,y,p,v,g,k,q,C,L,H,N,A,D,F,B=n[5]&&ts(n);return{c(){e=u("div"),t=w(),l=u("div"),i=u("button"),i.innerHTML=`
+ Открыть`,s=w(),o=u("button"),o.innerHTML=`
+ Открыть во внешней программе`,c=w(),B&&B.c(),a=w(),d=u("div"),_=w(),y=u("button"),y.innerHTML=`
+ Переименовать`,p=w(),v=u("button"),v.innerHTML=`
+ Дублировать`,g=w(),k=u("button"),k.innerHTML=`
+ Вырезать`,q=w(),C=u("button"),C.innerHTML=`
+ Копировать`,L=w(),H=u("div"),N=w(),A=u("button"),A.innerHTML=`
+ Удалить`,r(e,"class","menu-backdrop svelte-1u905d2"),r(e,"role","presentation"),r(i,"class","menu-item svelte-1u905d2"),r(i,"role","menuitem"),r(o,"class","menu-item svelte-1u905d2"),r(o,"role","menuitem"),r(d,"class","menu-sep svelte-1u905d2"),r(y,"class","menu-item svelte-1u905d2"),r(y,"role","menuitem"),r(v,"class","menu-item svelte-1u905d2"),r(v,"role","menuitem"),r(k,"class","menu-item svelte-1u905d2"),r(k,"role","menuitem"),r(C,"class","menu-item svelte-1u905d2"),r(C,"role","menuitem"),r(H,"class","menu-sep svelte-1u905d2"),r(A,"class","menu-item menu-item-danger svelte-1u905d2"),r(A,"role","menuitem"),r(l,"class","menu svelte-1u905d2"),r(l,"role","menu")},m(T,E){b(T,e,E),b(T,t,E),b(T,l,E),f(l,i),f(l,s),f(l,o),f(l,c),B&&B.m(l,null),f(l,a),f(l,d),f(l,_),f(l,y),f(l,p),f(l,v),f(l,g),f(l,k),f(l,q),f(l,C),f(l,L),f(l,H),f(l,N),f(l,A),D||(F=[I(e,"click",ke(n[17])),I(i,"click",n[15]),I(o,"click",n[8]),I(y,"click",n[11]),I(v,"click",n[12]),I(k,"click",n[13]),I(C,"click",n[14]),I(A,"click",n[10]),I(l,"click",ke(n[25]))],D=!0)},p(T,E){T[5]&&B.p(T,E)},d(T){T&&(h(e),h(t),h(l)),B&&B.d(),D=!1,ce(F)}}}function ts(n){let e,t,l;return{c(){e=u("button"),e.innerHTML=`
+ Показать в проводнике`,r(e,"class","menu-item svelte-1u905d2"),r(e,"role","menuitem")},m(i,s){b(i,e,s),t||(l=I(e,"click",n[9]),t=!0)},p:K,d(i){i&&h(e),t=!1,l()}}}function ls(n){let e,t,l,i,s,o,c=n[0].name+"",a,d,_,y,p,v,g,k,q,C,L,H,N,A,D,F,B,T,E,J,te,G;l=new Yl({props:{kind:n[4],size:22}});let O=!n[5]&&xi(n);function X(Z,Q){return Z[5]?$i:es}let Y=X(n)(n),x=n[2]&&Vt(n);return{c(){e=u("div"),t=u("div"),Te(l.$$.fragment),i=w(),s=u("div"),o=u("div"),a=S(c),_=w(),y=u("div"),p=u("span"),p.textContent=`${n[6]}`,v=w(),O&&O.c(),g=w(),k=u("div"),Y.c(),q=w(),C=u("button"),L=R("svg"),H=R("circle"),N=R("circle"),A=R("circle"),D=w(),F=u("button"),F.innerHTML=' ',T=w(),x&&x.c(),E=ve(),r(t,"class","file-row-icon svelte-1u905d2"),r(o,"class","file-row-name svelte-1u905d2"),r(o,"title",d=n[0].name),r(y,"class","file-row-meta svelte-1u905d2"),r(s,"class","file-row-body svelte-1u905d2"),r(H,"cx","12"),r(H,"cy","5"),r(H,"r","2"),r(N,"cx","12"),r(N,"cy","12"),r(N,"r","2"),r(A,"cx","12"),r(A,"cy","19"),r(A,"r","2"),r(L,"width","16"),r(L,"height","16"),r(L,"viewBox","0 0 24 24"),r(L,"fill","currentColor"),r(C,"class","action-btn svelte-1u905d2"),r(C,"title","Ещё"),r(C,"aria-label","Ещё"),r(C,"aria-expanded",n[2]),r(F,"class","action-btn action-btn-danger svelte-1u905d2"),r(F,"title","Удалить"),r(F,"aria-label","Удалить"),r(k,"class","file-row-actions svelte-1u905d2"),r(e,"class","file-row svelte-1u905d2"),r(e,"role","button"),r(e,"tabindex","0"),r(e,"draggable","true"),r(e,"aria-label",B=n[5]?`Папка ${n[0].name}`:`Файл ${n[0].name}`),At(e,"file-row--selected",n[1])},m(Z,Q){b(Z,e,Q),f(e,t),ye(l,t,null),f(e,i),f(e,s),f(s,o),f(o,a),f(s,_),f(s,y),f(y,p),f(y,v),O&&O.m(y,null),f(e,g),f(e,k),Y.m(k,null),f(k,q),f(k,C),f(C,L),f(L,H),f(L,N),f(L,A),f(k,D),f(k,F),b(Z,T,Q),x&&x.m(Z,Q),b(Z,E,Q),J=!0,te||(G=[I(window,"click",n[17]),I(C,"click",ke(n[16])),I(F,"click",ke(n[10])),I(e,"click",n[7]),I(e,"contextmenu",n[21]),I(e,"dragstart",n[18]),I(e,"dragover",n[19]),I(e,"drop",n[20])],te=!0)},p(Z,[Q]){(!J||Q&1)&&c!==(c=Z[0].name+"")&&z(a,c),(!J||Q&1&&d!==(d=Z[0].name))&&r(o,"title",d),Z[5]||O.p(Z,Q),Y.p(Z,Q),(!J||Q&4)&&r(C,"aria-expanded",Z[2]),(!J||Q&1&&B!==(B=Z[5]?`Папка ${Z[0].name}`:`Файл ${Z[0].name}`))&&r(e,"aria-label",B),(!J||Q&2)&&At(e,"file-row--selected",Z[1]),Z[2]?x?x.p(Z,Q):(x=Vt(Z),x.c(),x.m(E.parentNode,E)):x&&(x.d(1),x=null)},i(Z){J||(ne(l.$$.fragment,Z),J=!0)},o(Z){oe(l.$$.fragment,Z),J=!1},d(Z){Z&&(h(e),h(T),h(E)),we(l),O&&O.d(),Y.d(),x&&x.d(Z),te=!1,ce(G)}}}function ns(n,e,t){let{item:l}=e,{selected:i=!1}=e,{onDragStart:s}=e,{onDragOver:o}=e,{onDrop:c}=e;const a=Xe(),d=Ql(l),_=l.type==="folder",y=Gi(l);let p=!1,v=null;function g(j){j.ctrlKey||j.metaKey?a("toggleSelect",l.id):j.shiftKey?a("rangeSelect",l.id):v?(clearTimeout(v),v=null,_?a("navigate",l.id):a("preview",l)):v=setTimeout(()=>{v=null,a("selectOne",l.id)},250)}function k(){a("openExternal",l.fileId)}function q(){a("showInFolder",l.id)}function C(){t(2,p=!1),a("delete",{id:l.id,type:l.type})}function L(){t(2,p=!1),a("rename",{id:l.id,name:l.name})}function H(){t(2,p=!1),a("duplicate",l.id)}function N(){t(2,p=!1),a("cut",l.id)}function A(){t(2,p=!1),a("copy",l.id)}function D(){t(2,p=!1),_?a("navigate",l.id):a("preview",l)}function F(){t(2,p=!p)}function B(){t(2,p=!1)}function T(j){s&&s(j,l.id)}function E(j){o&&_&&o(j,l.id)}function J(j){c&&_&&c(j,l.id)}function te(j){j.preventDefault(),t(2,p=!0)}function G(j){wi.call(this,n,j)}const O=()=>a("preview",l),X=()=>a("navigate",l.id);return n.$$set=j=>{"item"in j&&t(0,l=j.item),"selected"in j&&t(1,i=j.selected),"onDragStart"in j&&t(22,s=j.onDragStart),"onDragOver"in j&&t(23,o=j.onDragOver),"onDrop"in j&&t(24,c=j.onDrop)},[l,i,p,a,d,_,y,g,k,q,C,L,H,N,A,D,F,B,T,E,J,te,s,o,c,G,O,X]}class is extends Be{constructor(e){super(),je(this,e,ns,ls,He,{item:0,selected:1,onDragStart:22,onDragOver:23,onDrop:24})}}function Rt(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function ss(n){let e;return{c(){e=u("span"),e.textContent="/",r(e,"class","sep svelte-csi2lb")},m(t,l){b(t,e,l)},d(t){t&&h(e)}}}function os(n){let e,t=n[4].name+"",l,i,s;function o(){return n[2](n[6])}return{c(){e=u("button"),l=S(t),r(e,"class","crumb crumb--link svelte-csi2lb")},m(c,a){b(c,e,a),f(e,l),i||(s=I(e,"click",o),i=!0)},p(c,a){n=c,a&1&&t!==(t=n[4].name+"")&&z(l,t)},d(c){c&&h(e),i=!1,s()}}}function rs(n){let e,t=n[4].name+"",l;return{c(){e=u("span"),l=S(t),r(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){b(i,e,s),f(e,l)},p(i,s){s&1&&t!==(t=i[4].name+"")&&z(l,t)},d(i){i&&h(e)}}}function Wt(n){let e,t,l=n[6]>0&&ss();function i(c,a){return c[6]===c[0].length-1?rs:os}let s=i(n),o=s(n);return{c(){l&&l.c(),e=w(),o.c(),t=ve()},m(c,a){l&&l.m(c,a),b(c,e,a),o.m(c,a),b(c,t,a)},p(c,a){s===(s=i(c))&&o?o.p(c,a):(o.d(1),o=s(c),o&&(o.c(),o.m(t.parentNode,t)))},d(c){c&&(h(e),h(t)),l&&l.d(c),o.d(c)}}}function cs(n){let e,t=le(n[0]),l=[];for(let i=0;is(c);return n.$$set=c=>{"crumbs"in c&&t(0,l=c.crumbs)},[l,s,o]}class ln extends Be{constructor(e){super(),je(this,e,as,cs,He,{crumbs:0})}}function fs(n){let e,t,l,i,s,o;return{c(){e=u("div"),t=u("p"),t.textContent="Предпросмотр недоступен для этого типа файлов.",l=w(),i=u("button"),i.textContent="Открыть во внешней программе",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,a){b(c,e,a),f(e,t),f(e,l),f(e,i),s||(o=I(i,"click",n[9]),s=!0)},p:K,d(c){c&&h(e),s=!1,o()}}}function us(n){let e,t;function l(o,c){return c&2&&(e=null),e==null&&(e=!!(o[1]&&o[1].startsWith("data:"))),e?ks:vs}let i=l(n,-1),s=i(n);return{c(){s.c(),t=ve()},m(o,c){s.m(o,c),b(o,t,c)},p(o,c){i===(i=l(o,c))&&s?s.p(o,c):(s.d(1),s=i(o),s&&(s.c(),s.m(t.parentNode,t)))},d(o){o&&h(t),s.d(o)}}}function ds(n){let e,t,l;return{c(){e=u("pre"),t=u("code"),l=S(n[1]),r(e,"class","preview-text svelte-1cw3u0m")},m(i,s){b(i,e,s),f(e,t),f(t,l)},p(i,s){s&2&&z(l,i[1])},d(i){i&&h(e)}}}function ms(n){let e,t,l,i;return{c(){e=u("div"),t=u("img"),Ke(t.src,l=n[1])||r(t,"src",l),r(t,"alt",i=n[0].name),r(t,"class","preview-image svelte-1cw3u0m"),r(e,"class","preview-image-container svelte-1cw3u0m")},m(s,o){b(s,e,o),f(e,t)},p(s,o){o&2&&!Ke(t.src,l=s[1])&&r(t,"src",l),o&1&&i!==(i=s[0].name)&&r(t,"alt",i)},d(s){s&&h(e)}}}function ps(n){let e,t,l,i,s,o,c;return{c(){e=u("div"),t=u("p"),l=S(n[3]),i=w(),s=u("button"),s.textContent="Открыть во внешней программе",r(s,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,d){b(a,e,d),f(e,t),f(t,l),f(e,i),f(e,s),o||(c=I(s,"click",n[9]),o=!0)},p(a,d){d&8&&z(l,a[3])},d(a){a&&h(e),o=!1,c()}}}function _s(n){let e;return{c(){e=u("div"),e.innerHTML="Загрузка...
",r(e,"class","preview-status svelte-1cw3u0m")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function vs(n){let e,t,l,i,s,o;return{c(){e=u("div"),t=u("p"),t.textContent="Предпросмотр PDF недоступен.",l=w(),i=u("button"),i.textContent="Открыть во внешней программе",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,a){b(c,e,a),f(e,t),f(e,l),f(e,i),s||(o=I(i,"click",n[9]),s=!0)},p:K,d(c){c&&h(e),s=!1,o()}}}function ks(n){let e,t,l;return{c(){e=u("div"),t=u("embed"),Ke(t.src,l=n[1])||r(t,"src",l),r(t,"type","application/pdf"),r(t,"class","preview-pdf svelte-1cw3u0m"),r(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,s){b(i,e,s),f(e,t)},p(i,s){s&2&&!Ke(t.src,l=i[1])&&r(t,"src",l)},d(i){i&&h(e)}}}function hs(n){let e,t,l,i,s,o,c,a=n[0].name+"",d,_,y,p,v=Ue(n[0].size)+"",g,k,q=zt(n[0].mime)+"",C,L,H,N,A,D,F,B,T,E,J,te;s=new Yl({props:{kind:n[8],size:18}});function G(j,Y){return j[2]?_s:j[3]?ps:j[6]&&j[1]?ms:j[5]&&j[1]?ds:j[4]?us:fs}let O=G(n),X=O(n);return{c(){e=u("div"),t=u("div"),l=u("header"),i=u("div"),Te(s.$$.fragment),o=w(),c=u("span"),d=S(a),y=w(),p=u("div"),g=S(v),k=S(" · "),C=S(q),L=w(),H=u("div"),N=u("button"),N.innerHTML=' ',A=w(),D=u("button"),D.innerHTML=' ',F=w(),B=u("div"),X.c(),r(c,"class","preview-name svelte-1cw3u0m"),r(c,"title",_=n[0].name),r(i,"class","preview-title svelte-1cw3u0m"),r(p,"class","preview-meta svelte-1cw3u0m"),r(N,"class","action-btn svelte-1cw3u0m"),r(N,"title","Открыть во внешней программе"),r(N,"aria-label","Открыть внешне"),r(D,"class","action-btn action-btn-close svelte-1cw3u0m"),r(D,"title","Close"),r(D,"aria-label","Close preview"),r(H,"class","preview-actions svelte-1cw3u0m"),r(l,"class","preview-header svelte-1cw3u0m"),r(B,"class","preview-body svelte-1cw3u0m"),r(t,"class","modal svelte-1cw3u0m"),r(e,"class","overlay svelte-1cw3u0m"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",T=`Preview: ${n[0].name}`)},m(j,Y){b(j,e,Y),f(e,t),f(t,l),f(l,i),ye(s,i,null),f(i,o),f(i,c),f(c,d),f(l,y),f(l,p),f(p,g),f(p,k),f(p,C),f(l,L),f(l,H),f(H,N),f(H,A),f(H,D),f(t,F),f(t,B),X.m(B,null),E=!0,J||(te=[I(N,"click",n[9]),I(D,"click",n[10]),I(e,"click",ze(n[11]))],J=!0)},p(j,[Y]){(!E||Y&1)&&a!==(a=j[0].name+"")&&z(d,a),(!E||Y&1&&_!==(_=j[0].name))&&r(c,"title",_),(!E||Y&1)&&v!==(v=Ue(j[0].size)+"")&&z(g,v),(!E||Y&1)&&q!==(q=zt(j[0].mime)+"")&&z(C,q),O===(O=G(j))&&X?X.p(j,Y):(X.d(1),X=O(j),X&&(X.c(),X.m(B,null))),(!E||Y&1&&T!==(T=`Preview: ${j[0].name}`))&&r(e,"aria-label",T)},i(j){E||(ne(s.$$.fragment,j),E=!0)},o(j){oe(s.$$.fragment,j),E=!1},d(j){j&&h(e),we(s),X.d(),J=!1,ce(te)}}}function bs(n,e,t){let l,i,s,{item:o}=e,{content:c=""}=e,{loading:a=!1}=e,{error:d=""}=e;const _=Xe(),y=Ql(o);function p(q){q.key==="Escape"&&_("close")}function v(){_("openExternal",o.fileId)}Jl(()=>{window.addEventListener("keydown",p)}),Xl(()=>{window.removeEventListener("keydown",p)});const g=()=>_("close"),k=()=>_("close");return n.$$set=q=>{"item"in q&&t(0,o=q.item),"content"in q&&t(1,c=q.content),"loading"in q&&t(2,a=q.loading),"error"in q&&t(3,d=q.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=xl(o)&&c&&c.startsWith("data:")),n.$$.dirty&1&&t(5,i=$l(o)||tn(o)),n.$$.dirty&1&&t(4,s=en(o))},[o,c,a,d,s,i,l,_,y,v,g,k]}class gs extends Be{constructor(e){super(),je(this,e,bs,hs,He,{item:0,content:1,loading:2,error:3})}}function ys(n){let e,t,l,i,s,o,c,a,d,_,y,p,v,g,k,q,C;return{c(){e=u("div"),t=u("div"),l=u("h3"),i=S(n[0]),s=w(),o=u("p"),c=S(n[1]),a=w(),d=u("div"),_=u("button"),y=S(n[2]),v=w(),g=u("button"),k=S(n[3]),r(l,"class","svelte-1fv6yyk"),r(o,"class","message svelte-1fv6yyk"),r(_,"class",p="btn "+(n[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),r(g,"class","btn svelte-1fv6yyk"),r(d,"class","actions svelte-1fv6yyk"),r(t,"class","modal svelte-1fv6yyk"),r(e,"class","overlay svelte-1fv6yyk"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",n[0])},m(L,H){b(L,e,H),f(e,t),f(t,l),f(l,i),f(t,s),f(t,o),f(o,c),f(t,a),f(t,d),f(d,_),f(_,y),f(d,v),f(d,g),f(g,k),q||(C=[I(_,"click",n[6]),I(g,"click",n[7]),I(e,"click",ze(n[8]))],q=!0)},p(L,[H]){H&1&&z(i,L[0]),H&2&&z(c,L[1]),H&4&&z(y,L[2]),H&16&&p!==(p="btn "+(L[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&r(_,"class",p),H&8&&z(k,L[3]),H&1&&r(e,"aria-label",L[0])},i:K,o:K,d(L){L&&h(e),q=!1,ce(C)}}}function ws(n,e,t){let{title:l="Подтверждение"}=e,{message:i=""}=e,{confirmText:s="Удалить"}=e,{cancelText:o="Отмена"}=e,{danger:c=!1}=e;const a=Xe(),d=()=>a("confirm"),_=()=>a("cancel"),y=()=>a("cancel");return n.$$set=p=>{"title"in p&&t(0,l=p.title),"message"in p&&t(1,i=p.message),"confirmText"in p&&t(2,s=p.confirmText),"cancelText"in p&&t(3,o=p.cancelText),"danger"in p&&t(4,c=p.danger)},[l,i,s,o,c,a,d,_,y]}class qs extends Be{constructor(e){super(),je(this,e,ws,ys,He,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function Kt(n,e,t){const l=n.slice();return l[151]=e[t],l}function Gt(n,e,t){const l=n.slice();return l[173]=e[t],l}function Ut(n,e,t){const l=n.slice();return l[176]=e[t],l}function Jt(n,e,t){const l=n.slice();return l[173]=e[t],l}function Xt(n,e,t){const l=n.slice();return l[154]=e[t],l}function Zt(n,e,t){const l=n.slice();return l[165]=e[t],l}function Yt(n,e,t){const l=n.slice();return l[162]=e[t],l}function Qt(n,e,t){const l=n.slice();return l[157]=e[t],l}function xt(n,e,t){const l=n.slice();return l[154]=e[t],l}function $t(n,e,t){const l=n.slice();return l[157]=e[t],l}function el(n,e,t){const l=n.slice();return l[170]=e[t],l}function tl(n,e,t){const l=n.slice();return l[151]=e[t],l}function ll(n,e,t){const l=n.slice();return l[183]=e[t],l}function nl(n,e,t){const l=n.slice();return l[186]=e[t],l}function il(n){let e,t=n[186].label+"",l,i,s,o,c;function a(){return n[85](n[186])}return{c(){e=u("button"),l=S(t),i=w(),r(e,"class",s="nav-item "+(n[5]===n[186].id?"selected":"")+" svelte-1ltnnkq")},m(d,_){b(d,e,_),f(e,l),f(e,i),o||(c=I(e,"click",a),o=!0)},p(d,_){n=d,_[0]&1&&t!==(t=n[186].label+"")&&z(l,t),_[0]&33&&s!==(s="nav-item "+(n[5]===n[186].id?"selected":"")+" svelte-1ltnnkq")&&r(e,"class",s)},d(d){d&&h(e),o=!1,c()}}}function sl(n){let e,t,l,i,s,o=n[1].length>0&&ol(n),c=le(n[1]),a=[];for(let _=0;_0?o?o.p(_,y):(o=ol(_),o.c(),o.m(t,null)):o&&(o.d(1),o=null),y[0]&66|y[1]&4096){c=le(_[1]);let p;for(p=0;p ',r(i,"class","dismiss-btn svelte-1ltnnkq"),r(i,"aria-label","Dismiss"),r(e,"class","error-banner svelte-1ltnnkq")},m(c,a){b(c,e,a),f(e,t),f(e,l),f(e,i),s||(o=[I(i,"click",ke(n[87])),I(e,"click",n[88])],s=!0)},p(c,a){a[0]&16&&z(t,c[4])},d(c){c&&h(e),s=!1,ce(o)}}}function Ls(n){let e,t,l;function i(c,a){if(c[19])return Fs;if(c[0].length>0)return Es;if(c[4])return Is}let s=i(n),o=s&&s(n);return{c(){e=u("div"),t=u("h2"),t.textContent="Верстак",l=w(),o&&o.c(),r(t,"class","svelte-1ltnnkq"),r(e,"class","welcome svelte-1ltnnkq")},m(c,a){b(c,e,a),f(e,t),f(e,l),o&&o.m(e,null)},p(c,a){s===(s=i(c))&&o?o.p(c,a):(o&&o.d(1),o=s&&s(c),o&&(o.c(),o.m(e,null)))},i:K,o:K,d(c){c&&h(e),o&&o.d()}}}function Ss(n){let e,t,l,i,s,o=n[2].date+"",c,a,d,_=n[2].summary&&ul(n);function y(g,k){return g[2].groups&&g[2].groups.length>0?js:Hs}let p=y(n),v=p(n);return{c(){e=u("div"),t=u("div"),l=u("h2"),l.textContent="Сегодня",i=w(),s=u("span"),c=S(o),a=w(),_&&_.c(),d=w(),v.c(),r(l,"class","svelte-1ltnnkq"),r(s,"class","today-date svelte-1ltnnkq"),r(t,"class","today-header svelte-1ltnnkq"),r(e,"class","today-dashboard svelte-1ltnnkq")},m(g,k){b(g,e,k),f(e,t),f(t,l),f(t,i),f(t,s),f(s,c),f(e,a),_&&_.m(e,null),f(e,d),v.m(e,null)},p(g,k){k[0]&4&&o!==(o=g[2].date+"")&&z(c,o),g[2].summary?_?_.p(g,k):(_=ul(g),_.c(),_.m(e,d)):_&&(_.d(1),_=null),p===(p=y(g))&&v?v.p(g,k):(v.d(1),v=p(g),v&&(v.c(),v.m(e,null)))},i:K,o:K,d(g){g&&h(e),_&&_.d(),v.d()}}}function Ds(n){let e,t,l,i,s,o,c=le(n[41]),a=[];for(let p=0;p{_[g]=null}),be()),~i?(s=_[i],s?s.p(p,v):(s=_[i]=d[i](p),s.c()),ne(s,1),s.m(l,null)):s=null)},i(p){o||(ne(s),o=!0)},o(p){oe(s),o=!1},d(p){p&&(h(e),h(t),h(l)),pe(a,p),~i&&_[i].d()}}}function Ns(n){let e,t,l,i=n[9].title+"",s,o,c,a,d,_,y,p,v,g,k,q=n[9].dirty&&El();return{c(){e=u("div"),t=u("div"),l=u("span"),s=S(i),o=w(),q&&q.c(),c=w(),a=u("div"),d=u("button"),d.textContent="Сохранить",_=w(),y=u("button"),y.textContent="Закрыть",p=w(),v=u("textarea"),r(l,"class","note-title svelte-1ltnnkq"),r(d,"class","btn btn-primary svelte-1ltnnkq"),r(y,"class","btn svelte-1ltnnkq"),r(a,"class","note-editor-actions svelte-1ltnnkq"),r(t,"class","note-editor-header svelte-1ltnnkq"),r(v,"class","note-textarea svelte-1ltnnkq"),r(v,"placeholder","Начните писать..."),r(e,"class","note-editor svelte-1ltnnkq")},m(C,L){b(C,e,L),f(e,t),f(t,l),f(l,s),f(t,o),q&&q.m(t,null),f(t,c),f(t,a),f(a,d),f(a,_),f(a,y),f(e,p),f(e,v),me(v,n[9].content),g||(k=[I(d,"click",n[76]),I(y,"click",n[74]),I(v,"input",n[89]),I(v,"input",n[75])],g=!0)},p(C,L){L[0]&512&&i!==(i=C[9].title+"")&&z(s,i),C[9].dirty?q||(q=El(),q.c(),q.m(t,c)):q&&(q.d(1),q=null),L[0]&512&&me(v,C[9].content)},i:K,o:K,d(C){C&&h(e),q&&q.d(),g=!1,ce(k)}}}function Is(n){let e,t,l;return{c(){e=u("p"),t=S("Ошибка: "),l=S(n[4]),r(e,"class","error-text svelte-1ltnnkq")},m(i,s){b(i,e,s),f(e,t),f(e,l)},p(i,s){s[0]&16&&z(l,i[4])},d(i){i&&h(e)}}}function Es(n){let e,t,l;return{c(){e=u("p"),e.textContent="Выберите раздел в боковой панели.",t=w(),l=u("p"),l.textContent="Или создайте новое дело кнопкой «+».",r(e,"class","svelte-1ltnnkq"),r(l,"class","hint svelte-1ltnnkq")},m(i,s){b(i,e,s),b(i,t,s),b(i,l,s)},p:K,d(i){i&&(h(e),h(t),h(l))}}}function Fs(n){let e;return{c(){e=u("p"),e.textContent="Загрузка...",r(e,"class","svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function ul(n){let e,t,l,i=n[2].summary.changedCases>0&&dl(n),s=n[2].summary.notes>0&&ml(n),o=n[2].summary.files>0&&pl(n);return{c(){e=u("div"),i&&i.c(),t=w(),s&&s.c(),l=w(),o&&o.c(),r(e,"class","today-summary svelte-1ltnnkq")},m(c,a){b(c,e,a),i&&i.m(e,null),f(e,t),s&&s.m(e,null),f(e,l),o&&o.m(e,null)},p(c,a){c[2].summary.changedCases>0?i?i.p(c,a):(i=dl(c),i.c(),i.m(e,t)):i&&(i.d(1),i=null),c[2].summary.notes>0?s?s.p(c,a):(s=ml(c),s.c(),s.m(e,l)):s&&(s.d(1),s=null),c[2].summary.files>0?o?o.p(c,a):(o=pl(c),o.c(),o.m(e,null)):o&&(o.d(1),o=null)},d(c){c&&h(e),i&&i.d(),s&&s.d(),o&&o.d()}}}function dl(n){let e,t=n[2].summary.changedCases+"",l,i,s=Fe(n[2].summary.changedCases,"дело","дела","дел")+"",o;return{c(){e=u("span"),l=S(t),i=w(),o=S(s),r(e,"class","summary-chip svelte-1ltnnkq")},m(c,a){b(c,e,a),f(e,l),f(e,i),f(e,o)},p(c,a){a[0]&4&&t!==(t=c[2].summary.changedCases+"")&&z(l,t),a[0]&4&&s!==(s=Fe(c[2].summary.changedCases,"дело","дела","дел")+"")&&z(o,s)},d(c){c&&h(e)}}}function ml(n){let e,t=n[2].summary.notes+"",l,i,s=Fe(n[2].summary.notes,"заметка","заметки","заметок")+"",o;return{c(){e=u("span"),l=S(t),i=w(),o=S(s),r(e,"class","summary-chip svelte-1ltnnkq")},m(c,a){b(c,e,a),f(e,l),f(e,i),f(e,o)},p(c,a){a[0]&4&&t!==(t=c[2].summary.notes+"")&&z(l,t),a[0]&4&&s!==(s=Fe(c[2].summary.notes,"заметка","заметки","заметок")+"")&&z(o,s)},d(c){c&&h(e)}}}function pl(n){let e,t=n[2].summary.files+"",l,i,s=Fe(n[2].summary.files,"файл","файла","файлов")+"",o;return{c(){e=u("span"),l=S(t),i=w(),o=S(s),r(e,"class","summary-chip svelte-1ltnnkq")},m(c,a){b(c,e,a),f(e,l),f(e,i),f(e,o)},p(c,a){a[0]&4&&t!==(t=c[2].summary.files+"")&&z(l,t),a[0]&4&&s!==(s=Fe(c[2].summary.files,"файл","файла","файлов")+"")&&z(o,s)},d(c){c&&h(e)}}}function Hs(n){let e;return{c(){e=u("div"),e.innerHTML='Сегодня пока тихо
Здесь появятся дела, заметки, файлы и действия, с которыми вы работали сегодня.
',r(e,"class","today-empty svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function js(n){let e,t,l=le(n[2].groups),i=[];for(let o=0;o0&&kl(n);return{c(){for(let o=0;o0?s?s.p(o,c):(s=kl(o),s.c(),s.m(t.parentNode,t)):s&&(s.d(1),s=null)},d(o){o&&(h(e),h(t)),pe(i,o),s&&s.d(o)}}}function Bs(n){let e;return{c(){e=u("div"),e.textContent="Изменён сегодня, подробная история пока недоступна",r(e,"class","today-events-empty svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function As(n){let e,t=le(n[176].events),l=[];for(let i=0;i0?As:Bs}let H=L(n),N=H(n);return{c(){e=u("div"),t=u("div"),l=u("span"),s=S(i),o=w(),c=u("span"),d=S(a),_=w(),y=u("span"),v=S(p),g=w(),N.c(),r(l,"class","today-case-title svelte-1ltnnkq"),r(c,"class","today-case-type svelte-1ltnnkq"),r(y,"class","today-case-time svelte-1ltnnkq"),r(t,"class","today-case-header svelte-1ltnnkq"),r(e,"class","today-case svelte-1ltnnkq")},m(A,D){b(A,e,D),f(e,t),f(t,l),f(l,s),f(t,o),f(t,c),f(c,d),f(t,_),f(t,y),f(y,v),f(e,g),N.m(e,null),k||(q=I(t,"click",C),k=!0)},p(A,D){n=A,D[0]&4&&i!==(i=n[176].nodeTitle+"")&&z(s,i),D[0]&4&&a!==(a=Rl(n[176].nodeKind)+"")&&z(d,a),D[0]&4&&p!==(p=Ee(n[176].lastActivityAt)+"")&&z(v,p),H===(H=L(n))&&N?N.p(n,D):(N.d(1),N=H(n),N&&(N.c(),N.m(e,null)))},d(A){A&&h(e),N.d(),k=!1,q()}}}function kl(n){let e,t,l,i=le(n[2].events),s=[];for(let o=0;oАктивность появится позже',r(e,"class","empty-state svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,i:K,o:K,d(t){t&&h(e)}}}function Ps(n){let e,t,l,i,s,o,c,a,d,_,y,p;function v(q,C){return q[11].length===0?Gs:Ks}let g=v(n),k=g(n);return{c(){e=u("div"),t=u("div"),l=u("input"),i=w(),s=u("input"),o=w(),c=u("button"),a=S("Записать"),_=w(),k.c(),r(l,"type","text"),r(l,"placeholder","Что сделано"),r(l,"class","svelte-1ltnnkq"),r(s,"type","number"),r(s,"placeholder","Мин"),r(s,"min","1"),r(s,"class","svelte-1ltnnkq"),r(c,"class","btn btn-primary svelte-1ltnnkq"),c.disabled=d=!n[13].trim()||!n[12],r(t,"class","worklog-form svelte-1ltnnkq"),r(e,"class","worklog-tab svelte-1ltnnkq")},m(q,C){b(q,e,C),f(e,t),f(t,l),me(l,n[13]),f(t,i),f(t,s),me(s,n[12]),f(t,o),f(t,c),f(c,a),f(e,_),k.m(e,null),y||(p=[I(l,"input",n[113]),I(s,"input",n[114]),I(c,"click",n[77])],y=!0)},p(q,C){C[0]&8192&&l.value!==q[13]&&me(l,q[13]),C[0]&4096&&Ul(s.value)!==q[12]&&me(s,q[12]),C[0]&12288&&d!==(d=!q[13].trim()||!q[12])&&(c.disabled=d),g===(g=v(q))&&k?k.p(q,C):(k.d(1),k=g(q),k&&(k.c(),k.m(e,null)))},i:K,o:K,d(q){q&&h(e),k.d(),y=!1,ce(p)}}}function zs(n){let e;function t(s,o){return s[10].length===0?Js:Us}let l=t(n),i=l(n);return{c(){i.c(),e=ve()},m(s,o){i.m(s,o),b(s,e,o)},p(s,o){l===(l=t(s))&&i?i.p(s,o):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},i:K,o:K,d(s){s&&h(e),i.d(s)}}}function Vs(n){let e,t,l,i,s,o,c,a,d,_,y,p,v,g,k,q,C,L,H,N=n[31].items.length>0&&wl(n);const A=[Zs,Xs],D=[];function F(E,J){return E[23]?0:1}p=F(n),v=D[p]=A[p](n);let B=n[20]&&!n[22]&&Cl(),T=n[27]&&Ml(n);return{c(){e=u("div"),t=u("div"),l=u("button"),i=S("+ Добавить файл"),s=w(),o=u("button"),c=S("+ Добавить папку"),a=w(),d=u("button"),d.textContent="+ Новый файл",_=w(),N&&N.c(),y=w(),v.c(),g=w(),B&&B.c(),k=w(),T&&T.c(),q=ve(),r(l,"class","btn btn-primary svelte-1ltnnkq"),l.disabled=n[20],r(o,"class","btn svelte-1ltnnkq"),o.disabled=n[20],r(d,"class","btn svelte-1ltnnkq"),r(t,"class","tab-toolbar svelte-1ltnnkq"),r(e,"class","files-tab svelte-1ltnnkq")},m(E,J){b(E,e,J),f(e,t),f(t,l),f(l,i),f(t,s),f(t,o),f(o,c),f(t,a),f(t,d),f(t,_),N&&N.m(t,null),f(e,y),D[p].m(e,null),f(e,g),B&&B.m(e,null),b(E,k,J),T&&T.m(E,J),b(E,q,J),C=!0,L||(H=[I(l,"click",n[78]),I(o,"click",n[79]),I(d,"click",n[50])],L=!0)},p(E,J){(!C||J[0]&1048576)&&(l.disabled=E[20]),(!C||J[0]&1048576)&&(o.disabled=E[20]),E[31].items.length>0?N?N.p(E,J):(N=wl(E),N.c(),N.m(t,null)):N&&(N.d(1),N=null);let te=p;p=F(E),p===te?D[p].p(E,J):(he(),oe(D[te],1,1,()=>{D[te]=null}),be(),v=D[p],v?v.p(E,J):(v=D[p]=A[p](E),v.c()),ne(v,1),v.m(e,g)),E[20]&&!E[22]?B||(B=Cl(),B.c(),B.m(e,null)):B&&(B.d(1),B=null),E[27]?T?(T.p(E,J),J[0]&134217728&&ne(T,1)):(T=Ml(E),T.c(),ne(T,1),T.m(q.parentNode,q)):T&&(he(),oe(T,1,1,()=>{T=null}),be())},i(E){C||(ne(v),ne(T),C=!0)},o(E){oe(v),oe(T),C=!1},d(E){E&&(h(e),h(k),h(q)),N&&N.d(),D[p].d(),B&&B.d(),T&&T.d(E),L=!1,ce(H)}}}function Rs(n){let e,t,l,i,s,o,c,a=n[17]&&Tl(n);function d(p,v){return p[8].length===0&&!p[17]?to:eo}let _=d(n),y=_(n);return{c(){e=u("div"),t=u("div"),l=u("button"),l.textContent="+ Добавить заметку",i=w(),a&&a.c(),s=w(),y.c(),r(l,"class","btn btn-primary svelte-1ltnnkq"),r(t,"class","tab-toolbar svelte-1ltnnkq"),r(e,"class","notes-tab svelte-1ltnnkq")},m(p,v){b(p,e,v),f(e,t),f(t,l),f(e,i),a&&a.m(e,null),f(e,s),y.m(e,null),o||(c=I(l,"click",n[70]),o=!0)},p(p,v){p[17]?a?a.p(p,v):(a=Tl(p),a.c(),a.m(e,s)):a&&(a.d(1),a=null),_===(_=d(p))&&y?y.p(p,v):(y.d(1),y=_(p),y&&(y.c(),y.m(e,null)))},i:K,o:K,d(p){p&&h(e),a&&a.d(),y.d(),o=!1,c()}}}function Ws(n){let e,t,l=n[6].title+"",i,s,o,c,a,d,_=n[6].type+"",y,p,v,g,k,q=(n[6].section||"—")+"",C,L,H,N,A,D=ge(n[6].createdAt)+"",F,B,T,E,J,te,G,O,X,j,Y,x,Z,Q,V=n[8].length>0&&Sl(n),W=n[11].length>0&&Nl(n);return{c(){e=u("div"),t=u("h2"),i=S(l),s=w(),o=u("div"),c=u("div"),a=u("span"),a.textContent="Тип",d=u("span"),y=S(_),p=w(),v=u("div"),g=u("span"),g.textContent="Раздел",k=u("span"),C=S(q),L=w(),H=u("div"),N=u("span"),N.textContent="Создано",A=u("span"),F=S(D),B=w(),T=u("div"),E=u("button"),E.innerHTML=`
+ Новая заметка`,J=w(),te=u("button"),te.innerHTML=`
+ Добавить файл`,G=w(),O=u("button"),O.innerHTML=`
+ Добавить действие`,X=w(),j=u("button"),j.innerHTML=`
+ Записать время`,Y=w(),V&&V.c(),x=w(),W&&W.c(),r(t,"class","svelte-1ltnnkq"),r(a,"class","meta-label svelte-1ltnnkq"),r(d,"class","svelte-1ltnnkq"),r(c,"class","meta-item svelte-1ltnnkq"),r(g,"class","meta-label svelte-1ltnnkq"),r(k,"class","svelte-1ltnnkq"),r(v,"class","meta-item svelte-1ltnnkq"),r(N,"class","meta-label svelte-1ltnnkq"),r(A,"class","svelte-1ltnnkq"),r(H,"class","meta-item svelte-1ltnnkq"),r(o,"class","meta-grid svelte-1ltnnkq"),r(E,"class","qa-btn svelte-1ltnnkq"),r(te,"class","qa-btn svelte-1ltnnkq"),r(O,"class","qa-btn svelte-1ltnnkq"),O.disabled=!0,r(O,"title","Следующий этап"),r(j,"class","qa-btn svelte-1ltnnkq"),r(T,"class","quick-actions svelte-1ltnnkq"),r(e,"class","overview svelte-1ltnnkq")},m(U,ee){b(U,e,ee),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(c,a),f(c,d),f(d,y),f(o,p),f(o,v),f(v,g),f(v,k),f(k,C),f(o,L),f(o,H),f(H,N),f(H,A),f(A,F),f(e,B),f(e,T),f(T,E),f(T,J),f(T,te),f(T,G),f(T,O),f(T,X),f(T,j),f(e,Y),V&&V.m(e,null),f(e,x),W&&W.m(e,null),Z||(Q=[I(E,"click",n[91]),I(te,"click",n[92]),I(j,"click",n[93])],Z=!0)},p(U,ee){ee[0]&64&&l!==(l=U[6].title+"")&&z(i,l),ee[0]&64&&_!==(_=U[6].type+"")&&z(y,_),ee[0]&64&&q!==(q=(U[6].section||"—")+"")&&z(C,q),ee[0]&64&&D!==(D=ge(U[6].createdAt)+"")&&z(F,D),U[8].length>0?V?V.p(U,ee):(V=Sl(U),V.c(),V.m(e,x)):V&&(V.d(1),V=null),U[11].length>0?W?W.p(U,ee):(W=Nl(U),W.c(),W.m(e,null)):W&&(W.d(1),W=null)},i:K,o:K,d(U){U&&h(e),V&&V.d(),W&&W.d(),Z=!1,ce(Q)}}}function Ks(n){let e,t=le(n[11]),l=[];for(let i=0;iЗаписей работы пока нет',r(e,"class","empty-state svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function gl(n){let e,t,l=n[154].summary+"",i,s,o,c=n[154].minutes+"",a,d,_=ge(n[154].createdAt)+"",y,p;return{c(){e=u("div"),t=u("div"),i=S(l),s=w(),o=u("div"),a=S(c),d=S(" мин · "),y=S(_),p=w(),r(t,"class","svelte-1ltnnkq"),r(o,"class","wl-meta svelte-1ltnnkq"),r(e,"class","worklog-entry svelte-1ltnnkq")},m(v,g){b(v,e,g),f(e,t),f(t,i),f(e,s),f(e,o),f(o,a),f(o,d),f(o,y),f(e,p)},p(v,g){g[0]&2048&&l!==(l=v[154].summary+"")&&z(i,l),g[0]&2048&&c!==(c=v[154].minutes+"")&&z(a,c),g[0]&2048&&_!==(_=ge(v[154].createdAt)+"")&&z(y,_)},d(v){v&&h(e)}}}function Us(n){let e,t=le(n[10]),l=[];for(let i=0;iДействий пока нет',r(e,"class","empty-state svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function yl(n){let e,t,l=n[165].title+"",i,s,o=n[165].type+"",c,a,d,_,y,p;function v(){return n[112](n[165])}return{c(){e=u("div"),t=u("span"),i=S(l),s=u("span"),c=S(o),a=w(),d=u("button"),d.textContent="Запустить",_=w(),r(t,"class","svelte-1ltnnkq"),r(s,"class","action-type svelte-1ltnnkq"),r(d,"class","btn btn-sm svelte-1ltnnkq"),r(e,"class","action-card svelte-1ltnnkq")},m(g,k){b(g,e,k),f(e,t),f(t,i),f(e,s),f(s,c),f(e,a),f(e,d),f(e,_),y||(p=I(d,"click",v),y=!0)},p(g,k){n=g,k[0]&1024&&l!==(l=n[165].title+"")&&z(i,l),k[0]&1024&&o!==(o=n[165].type+"")&&z(c,o)},d(g){g&&h(e),y=!1,p()}}}function wl(n){let e,t,l=n[31].items.length+"",i,s,o;return{c(){e=u("button"),t=S("Вставить "),i=S(l),r(e,"class","btn svelte-1ltnnkq")},m(c,a){b(c,e,a),f(e,t),f(e,i),s||(o=I(e,"click",n[55]),s=!0)},p(c,a){a[1]&1&&l!==(l=c[31].items.length+"")&&z(i,l)},d(c){c&&h(e),s=!1,o()}}}function Xs(n){let e,t,l,i,s,o,c;const a=[Qs,Ys],d=[];function _(g,k){return g[25].length>0?0:1}e=_(n),t=d[e]=a[e](n);const y=[$s,xs],p=[];function v(g,k){return g[26].length===0?0:1}return i=v(n),s=p[i]=y[i](n),{c(){t.c(),l=w(),s.c(),o=ve()},m(g,k){d[e].m(g,k),b(g,l,k),p[i].m(g,k),b(g,o,k),c=!0},p(g,k){let q=e;e=_(g),e===q?d[e].p(g,k):(he(),oe(d[q],1,1,()=>{d[q]=null}),be(),t=d[e],t?t.p(g,k):(t=d[e]=a[e](g),t.c()),ne(t,1),t.m(l.parentNode,l));let C=i;i=v(g),i===C?p[i].p(g,k):(he(),oe(p[C],1,1,()=>{p[C]=null}),be(),s=p[i],s?s.p(g,k):(s=p[i]=y[i](g),s.c()),ne(s,1),s.m(o.parentNode,o))},i(g){c||(ne(t),ne(s),c=!0)},o(g){oe(t),oe(s),c=!1},d(g){g&&(h(l),h(o)),d[e].d(g),p[i].d(g)}}}function Zs(n){let e;return{c(){e=u("div"),e.innerHTML='Загрузка...
',r(e,"class","empty-state svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,i:K,o:K,d(t){t&&h(e)}}}function Ys(n){let e,t;return e=new ln({props:{crumbs:[{name:"Файлы"}]}}),{c(){Te(e.$$.fragment)},m(l,i){ye(e,l,i),t=!0},p:K,i(l){t||(ne(e.$$.fragment,l),t=!0)},o(l){oe(e.$$.fragment,l),t=!1},d(l){we(e,l)}}}function Qs(n){let e,t,l,i,s,o;return e=new ln({props:{crumbs:[{name:"Файлы"},...n[25]]}}),e.$on("navigate",n[98]),{c(){Te(e.$$.fragment),t=w(),l=u("button"),l.innerHTML=`
+ Back`,r(l,"class","btn btn-sm back-btn svelte-1ltnnkq")},m(c,a){ye(e,c,a),b(c,t,a),b(c,l,a),i=!0,s||(o=I(l,"click",n[46]),s=!0)},p(c,a){const d={};a[0]&33554432&&(d.crumbs=[{name:"Файлы"},...c[25]]),e.$set(d)},i(c){i||(ne(e.$$.fragment,c),i=!0)},o(c){oe(e.$$.fragment,c),i=!1},d(c){c&&(h(t),h(l)),we(e,c),s=!1,o()}}}function xs(n){let e,t=[],l=new Map,i,s=le(n[26]);const o=c=>c[162].id;for(let c=0;c0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",o,c,a,d,_,y,p,v,g,k;return{c(){e=u("div"),t=u("div"),t.innerHTML=' ',l=w(),i=u("p"),o=S(s),c=w(),a=u("p"),a.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",d=w(),_=u("div"),y=u("button"),y.textContent="Добавить файл",p=w(),v=u("button"),v.textContent="Добавить папку",r(t,"class","empty-icon svelte-1ltnnkq"),r(i,"class","svelte-1ltnnkq"),r(a,"class","hint svelte-1ltnnkq"),r(y,"class","btn btn-primary svelte-1ltnnkq"),r(v,"class","btn svelte-1ltnnkq"),r(_,"class","empty-actions svelte-1ltnnkq"),r(e,"class","empty-state svelte-1ltnnkq")},m(q,C){b(q,e,C),f(e,t),f(e,l),f(e,i),f(i,o),f(e,c),f(e,a),f(e,d),f(e,_),f(_,y),f(_,p),f(_,v),g||(k=[I(y,"click",n[78]),I(v,"click",n[79])],g=!0)},p(q,C){C[0]&33554432&&s!==(s=q[25].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&z(o,s)},i:K,o:K,d(q){q&&h(e),g=!1,ce(k)}}}function ql(n,e){let t,l,i;return l=new is({props:{item:e[162],selected:e[32].includes(e[162].id),onDragStart:e[59],onDragOver:e[60],onDrop:e[61]}}),l.$on("navigate",e[99]),l.$on("preview",e[100]),l.$on("openExternal",e[101]),l.$on("showInFolder",e[102]),l.$on("delete",e[103]),l.$on("rename",e[104]),l.$on("duplicate",e[105]),l.$on("cut",e[106]),l.$on("copy",e[107]),l.$on("selectOne",e[108]),l.$on("toggleSelect",e[109]),l.$on("rangeSelect",e[110]),{key:n,first:null,c(){t=ve(),Te(l.$$.fragment),this.first=t},m(s,o){b(s,t,o),ye(l,s,o),i=!0},p(s,o){e=s;const c={};o[0]&67108864&&(c.item=e[162]),o[0]&67108864|o[1]&2&&(c.selected=e[32].includes(e[162].id)),l.$set(c)},i(s){i||(ne(l.$$.fragment,s),i=!0)},o(s){oe(l.$$.fragment,s),i=!1},d(s){s&&h(t),we(l,s)}}}function Cl(n){let e;return{c(){e=u("div"),e.innerHTML='Сканирование...
',r(e,"class","empty-state svelte-1ltnnkq")},m(t,l){b(t,e,l)},d(t){t&&h(e)}}}function Ml(n){let e,t;return e=new gs({props:{item:n[27],content:n[28],loading:n[29],error:n[30]}}),e.$on("close",n[49]),e.$on("openExternal",n[111]),{c(){Te(e.$$.fragment)},m(l,i){ye(e,l,i),t=!0},p(l,i){const s={};i[0]&134217728&&(s.item=l[27]),i[0]&268435456&&(s.content=l[28]),i[0]&536870912&&(s.loading=l[29]),i[0]&1073741824&&(s.error=l[30]),e.$set(s)},i(l){t||(ne(e.$$.fragment,l),t=!0)},o(l){oe(e.$$.fragment,l),t=!1},d(l){we(e,l)}}}function Tl(n){let e,t,l,i,s,o,c,a,d;return{c(){e=u("div"),t=u("input"),l=w(),i=u("div"),s=u("button"),s.textContent="Создать",o=w(),c=u("button"),c.textContent="Отмена",r(t,"type","text"),r(t,"placeholder","Название заметки"),r(t,"class","svelte-1ltnnkq"),r(s,"class","btn btn-primary svelte-1ltnnkq"),r(c,"class","btn svelte-1ltnnkq"),r(i,"class","form-actions svelte-1ltnnkq"),r(e,"class","create-form svelte-1ltnnkq")},m(_,y){b(_,e,y),f(e,t),me(t,n[18]),f(e,l),f(e,i),f(i,s),f(i,o),f(i,c),a||(d=[I(t,"input",n[95]),I(t,"keydown",n[96]),I(s,"click",n[72]),I(c,"click",n[71])],a=!0)},p(_,y){y[0]&262144&&t.value!==_[18]&&me(t,_[18])},d(_){_&&h(e),a=!1,ce(d)}}}function eo(n){let e,t=le(n[8]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',r(e,"class","empty-state svelte-1ltnnkq")},m(t,l){b(t,e,l)},p:K,d(t){t&&h(e)}}}function Ll(n){let e,t,l=n[157].title+"",i,s,o,c=ge(n[157].createdAt)+"",a,d,_,y;function p(){return n[97](n[157])}return{c(){e=u("div"),t=u("div"),i=S(l),s=w(),o=u("div"),a=S(c),d=w(),r(t,"class","note-card-title svelte-1ltnnkq"),r(o,"class","note-card-date svelte-1ltnnkq"),r(e,"class","note-card svelte-1ltnnkq")},m(v,g){b(v,e,g),f(e,t),f(t,i),f(e,s),f(e,o),f(o,a),f(e,d),_||(y=I(e,"click",p),_=!0)},p(v,g){n=v,g[0]&256&&l!==(l=n[157].title+"")&&z(i,l),g[0]&256&&c!==(c=ge(n[157].createdAt)+"")&&z(a,c)},d(v){v&&h(e),_=!1,y()}}}function Sl(n){let e,t,l,i=le(n[8].slice(0,5)),s=[];for(let o=0;on[118].call(v)),r(_,"class","form-group svelte-1ltnnkq"),r(q,"class","btn btn-primary svelte-1ltnnkq"),r(L,"class","btn svelte-1ltnnkq"),r(k,"class","modal-actions svelte-1ltnnkq"),r(t,"class","modal svelte-1ltnnkq"),r(e,"class","modal-overlay svelte-1ltnnkq")},m(F,B){b(F,e,B),f(e,t),f(t,l),f(t,i),f(t,s),f(s,o),f(s,c),f(s,a),me(a,n[15]),f(t,d),f(t,_),f(_,y),f(_,p),f(_,v);for(let T=0;T⚒ Верстак ',i=w(),s=u("nav"),o=u("div"),c=u("div"),c.textContent="Разделы",a=w();for(let P=0;P{Q[_e]=null}),be(),A=Q[N],A?A.p(P,se):(A=Q[N]=Z[N](P),A.c()),ne(A,1),A.m(k,D)),!P[9]&&!P[6]&&P[5]!=="today"&&P[5]!=="inbox"?W?W.p(P,se):(W=Fl(P),W.c(),W.m(k,F)):W&&(W.d(1),W=null),P[14]?U?U.p(P,se):(U=Hl(P),U.c(),U.m(k,B)):U&&(U.d(1),U=null),P[22]&&P[21]?ee?ee.p(P,se):(ee=Bl(P),ee.c(),ee.m(k,T)):ee&&(ee.d(1),ee=null),P[38]?fe?fe.p(P,se):(fe=Ol(P),fe.c(),fe.m(k,E)):fe&&(fe.d(1),fe=null),P[33]?re?(re.p(P,se),se[1]&4&&ne(re,1)):(re=zl(P),re.c(),ne(re,1),re.m(k,null)):re&&(he(),oe(re,1,1,()=>{re=null}),be())},i(P){J||(ne(A),ne(re),J=!0)},o(P){oe(A),oe(re),J=!1},d(P){P&&h(e),pe(G,P),O&&O.d(),Y.d(),x&&x.d(),Q[N].d(),W&&W.d(),U&&U.d(),ee&&ee.d(),fe&&fe.d(),re&&re.d()}}}function $(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function Je(n){return{note_created:"Заметка создана",note_updated:"Заметка изменена",file_added:"Файл добавлен",file_deleted:"Файл удалён",file_renamed:"Файл переименован",file_copied:"Файл скопирован",file_moved:"Файл перемещён",folder_added:"Папка добавлена",folder_deleted:"Папка удалена",folder_renamed:"Папка переименована",node_created:"Дело создано",node_updated:"Дело изменено"}[n]||n}function Vl(n){return n==="note_created"||n==="file_added"||n==="folder_added"||n==="node_created"?"+":n==="file_deleted"||n==="folder_deleted"?"×":n==="file_renamed"||n==="folder_renamed"||n==="note_updated"||n==="node_updated"?"~":n==="file_copied"?"⧉":n==="file_moved"?"→":"•"}function Ee(n){if(!n)return"";try{return new Date(n).toLocaleTimeString("ru-RU",{hour:"2-digit",minute:"2-digit"})}catch{return""}}function ge(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}function Rl(n){return{project:"Проект",client:"Клиент",document:"Документ",recipe:"Рецепт",archive:"Архив",case:"Дело"}[n]||n||"Дело"}function Fe(n,e,t,l){return n=Math.abs(n)%100,n>=5&&n<=20?l:(n%=10,n===1?e:n>=2&&n<=4?t:l)}const Wl=n=>n.id!=="today"&&n.id!=="inbox";function no(n,e,t){let l=[],i=[],s=null,o="",c="",a="",d=null,_="overview",y=[],p=null,v=[],g=[],k=[],q="",C="",L=!1,H="",N="clients",A=!1,D="",F=!0,B=!1,T=null,E=!1,J="",te=!1,G=null,O=[],X=[],j=null,Y="",x=!1,Z="",Q={items:[],mode:"copy"},V=[],W=[],U=!1,ee="",fe="",re=!1,P="Удалить",se=null,_e=null,ue=!1,qe="",Le="",Se="";const nn=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let Ze=null;Jl(async()=>{try{t(3,o=await $("VerstakVersion")||"verstak-gui/v2"),t(0,l=await $("ListSections")||[])}catch(m){t(4,c=String(m)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Dn),Ze=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",wt),t(19,F=!1)}),Xl(()=>{Ze&&Ze(),window.removeEventListener("keydown",wt)});async function Ye(m){t(5,a=m),t(6,d=null),t(7,_="overview"),t(8,y=[]),v=[],t(10,g=[]),t(11,k=[]),t(14,L=!1),t(4,c=""),t(2,s=null),t(1,i=[]);try{m==="today"?t(2,s=await $("ListTodayView")||{cases:[]}):t(1,i=await $("ListNodesBySection",m)||[])}catch(M){t(4,c=String(M)),t(1,i=[]),t(2,s={cases:[]})}}async function Qe(m){t(6,d=m),t(7,_="overview"),t(8,y=[]),v=[],t(10,g=[]),t(11,k=[]),t(26,X=[]),t(25,O=[]),t(24,G=null),t(27,j=null),t(28,Y=""),t(32,V=[]),W=[],t(9,p=null),t(14,L=!1),t(17,A=!1),t(4,c=""),await ut(m.id)}async function ut(m){try{t(8,y=await $("ListNotes",m)||[])}catch{}try{v=await $("ListFiles",m)||[]}catch{}try{t(10,g=await $("ListActions",m)||[])}catch{}try{t(11,k=await $("ListWorklog",m)||[])}catch{}}async function de(m){t(23,te=!0);try{let M=await $("ListItems",m)||[];M.sort((ie,ae)=>ie.type!==ae.type?ie.type==="folder"?-1:1:(ie.name||"").localeCompare(ae.name||"")),t(26,X=M)}catch{t(26,X=[])}t(23,te=!1)}async function xe(m){if(d){try{const M=await $("GetNodeDetail",m);M&&t(25,O=[...O,{id:m,name:M.title}])}catch{t(25,O=[...O,{id:m,name:"..."}])}t(24,G=m),await de(m)}}function dt(){if(O.length<2)t(25,O=[]),t(24,G=null),de(d.id);else{const m=O[O.length-2];t(25,O=O.slice(0,-1)),t(24,G=m.id),de(m.id)}}function mt(m){const M=O[m];t(25,O=O.slice(0,m+1)),t(24,G=M.id),de(M.id)}async function $e(m){t(27,j=m),t(28,Y=""),t(30,Z=""),t(29,x=!0);try{Yi(m)?t(28,Y=await $("GetFileBase64",m.fileId)||""):Qi(m)&&t(28,Y=await $("ReadFileText",m.fileId)||"")}catch(M){t(30,Z=String(M))}t(29,x=!1)}function et(){t(27,j=null),t(28,Y=""),t(30,Z="")}async function sn(){const m=prompt("Введите имя файла:");if(!(!m||!m.trim()))try{const M=G||d.id;await $("CreateEmptyFile",M,m.trim()),await de(M)}catch(M){t(4,c=String(M))}}async function pt(m){try{await $("DuplicateNode",m);const M=G||d.id;await de(M)}catch(M){t(4,c=String(M))}}function _t(m){const M=X.find(ie=>ie.id===m);M&&Ct(M.id,M.name)}function vt(m){t(31,Q={items:[m],mode:"cut"})}function kt(m){t(31,Q={items:[m],mode:"copy"})}async function ht(){if(Q.items.length===0)return;const m=G||d.id;try{if(Q.mode==="copy")for(const M of Q.items)await $("DuplicateNode",M);else for(const M of Q.items)await $("MoveNode",M,m);t(31,Q={items:[],mode:"copy"}),await de(m)}catch(M){t(4,c=String(M))}}function bt(m){V.includes(m)?t(32,V=V.filter(M=>M!==m)):t(32,V=[...V,m])}function gt(m){t(32,V=[m])}function on(){t(32,V=X.map(m=>m.id))}function yt(m){if(X.length===0)return;const M=V.length>0?V[V.length-1]:X[0].id,ie=X.findIndex(Ce=>Ce.id===M),ae=X.findIndex(Ce=>Ce.id===m);if(ie===-1||ae===-1)return;const Ae=Math.min(ie,ae),st=Math.max(ie,ae),pi=X.slice(Ae,st+1).map(Ce=>Ce.id),Ht=new Set(V);pi.forEach(Ce=>Ht.add(Ce)),t(32,V=[...Ht])}function rn(){t(32,V=[])}function tt(m){return m.length>0?m:X.map(M=>M.id)}async function cn(){var ie;const m=tt(V),M=m.length===1&&((ie=X.find(ae=>ae.id===m[0]))==null?void 0:ie.type)==="folder"?"папку":`файлов (${m.length})`;Ve({title:"Удаление",message:`Удалить ${M}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{for(const Ae of m)try{await $("DeleteFileOrFolder",Ae)}catch(st){t(4,c=String(st))}t(32,V=[]);const ae=G||d.id;await de(ae)}})}function an(){const m=tt(V);t(31,Q={items:m,mode:"cut"}),t(32,V=[])}function fn(){const m=tt(V);t(31,Q={items:m,mode:"copy"}),t(32,V=[])}function un(m,M){const ie=V.includes(M)?V:[M];W=ie,m.dataTransfer.effectAllowed="move",m.dataTransfer.setData("text/plain",ie.join(","))}function dn(m,M){const ie=X.find(ae=>ae.id===M);ie&&ie.type==="folder"&&(m.preventDefault(),m.dataTransfer.dropEffect="move")}async function mn(m,M){if(m.preventDefault(),W.length!==0){for(const ie of W)try{await $("MoveNode",ie,M)}catch(ae){t(4,c=String(ae))}W=[],t(32,V=[]),await de(G||d.id)}}function wt(m){if(_==="files"&&!(m.target.tagName==="INPUT"||m.target.tagName==="TEXTAREA"))if(m.ctrlKey||m.metaKey)m.key==="c"||m.key==="C"?(m.preventDefault(),fn()):m.key==="x"||m.key==="X"?(m.preventDefault(),an()):m.key==="v"||m.key==="V"?(m.preventDefault(),ht()):m.key==="a"||m.key==="A"?(m.preventDefault(),on()):m.key==="o"||m.key==="O"?(m.preventDefault(),pn()):m.key==="Enter"&&(m.preventDefault(),qt());else if(m.key==="Enter")m.preventDefault(),qt();else if(m.key==="Delete"||m.key==="Backspace"){if(j){m.preventDefault(),et();return}if(V.length>0){m.preventDefault(),cn();return}if(m.key==="Backspace"&&O.length>0){m.preventDefault(),dt();return}}else if(m.key==="Escape"){if(j){et();return}if(V.length>0){rn();return}}else m.key==="F2"&&(m.preventDefault(),_n())}function qt(){if(V.length===1){const m=X.find(M=>M.id===V[0]);m&&(m.type==="folder"?xe(m.id):$e(m))}}function pn(){if(V.length===1){const m=X.find(M=>M.id===V[0]);m&&m.fileId&&$("OpenFile",m.fileId)}}function Ct(m,M){qe=m,t(39,Le=M),t(40,Se=""),t(38,ue=!0)}function _n(){if(V.length===1){const m=X.find(M=>M.id===V[0]);m&&Ct(m.id,m.name)}}async function Mt(){const m=Le.trim();if(!m){t(40,Se="Имя не может быть пустым");return}try{await $("ValidateName",m)}catch{t(40,Se="Недопустимое имя");return}t(38,ue=!1),qe="";try{await $("RenameNode",qe,m);const M=G||d.id;await de(M)}catch(M){t(4,c=String(M))}}function vn(){t(38,ue=!1),qe="",t(39,Le=""),t(40,Se="")}function kn(m){m.key==="Enter"?Mt():t(40,Se="")}function Ve(m){t(34,ee=m.title||"Подтверждение"),t(35,fe=m.message||""),t(36,re=m.danger!==void 0?m.danger:!0),t(37,P=m.confirmText||"Удалить"),se=m.onConfirm||null,_e=m.onCancel||null,t(33,U=!0)}function Tt(){t(33,U=!1),se=null,_e=null}function hn(){se&&se(),Tt()}function bn(){_e&&_e(),Tt()}function gn(){t(14,L=!0),t(15,H=""),t(16,N=a||"clients")}function yn(){t(14,L=!1),t(15,H="")}async function Lt(){if(H.trim())try{const m=await $("CreateNode","","case",H.trim(),N);t(14,L=!1),t(15,H=""),await Ye(N)}catch(m){t(4,c=String(m))}}function St(){t(17,A=!0),t(18,D="")}function wn(){t(17,A=!1),t(18,D="")}async function Dt(){if(!(!D.trim()||!d))try{const m=await $("CreateNote",d.id,D.trim());t(8,y=[...y,m&&m.id?m:{id:Date.now().toString(),title:D.trim(),createdAt:new Date().toISOString()}]),t(17,A=!1),t(18,D="")}catch{const M={id:Date.now().toString(),title:D.trim(),createdAt:new Date().toISOString()};t(8,y=[...y,M]),t(17,A=!1),t(18,D="")}}async function lt(m){if(p&&p.dirty){Ve({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:async()=>{await Nt(m)}});return}await Nt(m)}async function Nt(m){try{const M=await $("ReadNote",m.id);t(9,p={id:m.id,title:m.title,content:M||"",dirty:!1})}catch{t(9,p={id:m.id,title:m.title,content:"# "+m.title+`
+
+`,dirty:!1})}}function qn(){if(p&&p.dirty){Ve({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:()=>{t(9,p=null)}});return}t(9,p=null)}function Cn(m){p&&(t(9,p.content=m.target.value,p),t(9,p.dirty=!0,p))}async function Mn(){if(p)try{await $("SaveNote",p.id,p.content),t(9,p.dirty=!1,p)}catch{t(9,p.dirty=!1,p)}}async function Tn(){const m=parseInt(q,10);if(!(!C.trim()||isNaN(m)||m<=0||!d)){try{const M=await $("CreateWorklog",d.id,C.trim(),m);t(11,k=[...k,M&&M.id?M:{id:Date.now().toString(),nodeId:d.id,summary:C.trim(),minutes:m,createdAt:new Date().toISOString()}])}catch{t(11,k=[...k,{id:Date.now().toString(),nodeId:d.id,summary:C.trim(),minutes:m,createdAt:new Date().toISOString()}])}t(13,C=""),t(12,q="")}}async function It(){const m=await $("PickFile");m&&await nt(d.id,m)}async function Ln(){const m=await $("PickDirectory");m&&await nt(d.id,m)}async function nt(m,M){t(20,B=!0);try{const ie=await $("PreviewImport",M);t(21,T=ie),J=M,t(22,E=!0)}catch(ie){t(4,c=String(ie))}t(20,B=!1)}async function it(m){try{const M=m==="copy"?await $("AddPathCopy",d.id,J):await $("AddPathLink",d.id,J);t(22,E=!1),t(21,T=null),t(25,O=[]),t(24,G=null),await Promise.all([ut(d.id),de(d.id)])}catch(M){t(4,c=String(M))}}function Sn(){t(22,E=!1),t(21,T=null)}async function Et({id:m,type:M}){Ve({title:"Удаление",message:`Удалить ${M==="folder"?"папку":"файл"}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{try{await $("DeleteFileOrFolder",m),v=v.filter(Ae=>Ae.nodeId!==m);const ae=G||d.id;await de(ae)}catch(ae){t(4,c=String(ae))}}})}async function Dn(m){if(!m||m.length===0)return;if(!d){t(4,c="Сначала выберите дело для добавления файлов");return}const M=m[0];await nt(d.id,M)}function Nn(m){return _===m?"tab active":"tab"}async function Ft(m){try{const M=await $("GetNodeDetail",m);M&&Qe(M)}catch(M){t(4,c=String(M))}}const In=m=>Ye(m.id),En=m=>Qe(m),Fn=()=>t(4,c=""),Hn=()=>t(4,c="");function jn(){p.content=this.value,t(9,p)}const Bn=m=>{t(7,_=m.id),m.id==="files"&&d&&X.length===0&&!G&&de(d.id)},An=()=>{t(7,_="notes"),St()},On=()=>{t(7,_="files"),It()},Pn=()=>t(7,_="worklog"),zn=m=>lt(m);function Vn(){D=this.value,t(18,D)}const Rn=m=>m.key==="Enter"&&Dt(),Wn=m=>lt(m),Kn=m=>{const M=m.detail;M===0?(t(25,O=[]),t(24,G=null),de(d.id)):mt(M-1)},Gn=m=>xe(m.detail),Un=m=>$e(m.detail),Jn=m=>$("OpenFile",m.detail),Xn=m=>$("OpenFolder",m.detail),Zn=m=>Et(m.detail),Yn=m=>_t(m.detail.id),Qn=m=>pt(m.detail),xn=m=>vt(m.detail),$n=m=>kt(m.detail),ei=m=>gt(m.detail),ti=m=>bt(m.detail),li=m=>yt(m.detail),ni=m=>$("OpenFile",m.detail),ii=m=>$("RunAction",m.id);function si(){C=this.value,t(13,C)}function oi(){q=Ul(this.value),t(12,q)}const ri=m=>Ft(m.nodeId);function ci(){H=this.value,t(15,H)}const ai=m=>m.key==="Enter"&&Lt();function fi(){N=gi(this),t(16,N),t(0,l)}const ui=()=>it("copy"),di=()=>it("link");function mi(){Le=this.value,t(39,Le)}return[l,i,s,o,c,a,d,_,y,p,g,k,q,C,L,H,N,A,D,F,B,T,E,te,G,O,X,j,Y,x,Z,Q,V,U,ee,fe,re,P,ue,Le,Se,nn,Ye,Qe,de,xe,dt,mt,$e,et,sn,pt,_t,vt,kt,ht,bt,gt,yt,un,dn,mn,Mt,vn,kn,hn,bn,gn,yn,Lt,St,wn,Dt,lt,qn,Cn,Mn,Tn,It,Ln,it,Sn,Et,Nn,Ft,In,En,Fn,Hn,jn,Bn,An,On,Pn,zn,Vn,Rn,Wn,Kn,Gn,Un,Jn,Xn,Zn,Yn,Qn,xn,$n,ei,ti,li,ni,ii,si,oi,ri,ci,ai,fi,ui,di,mi]}class io extends Be{constructor(e){super(),je(this,e,no,lo,He,{},null,[-1,-1,-1,-1,-1,-1,-1])}}new io({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-a-M2pafQ.js b/cmd/verstak-gui/frontend-dist/assets/main-a-M2pafQ.js
deleted file mode 100644
index f0e089c..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-a-M2pafQ.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Ln=Object.defineProperty;var Nn=(n,e,t)=>e in n?Ln(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Xe=(n,e,t)=>Nn(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&l(s)}).observe(document,{childList:!0,subtree:!0});function t(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function l(i){if(i.ep)return;i.ep=!0;const o=t(i);fetch(i.href,o)}})();function J(){}function dl(n){return n()}function bt(){return Object.create(null)}function re(n){n.forEach(dl)}function ml(n){return typeof n=="function"}function Te(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Ie;function je(n,e){return n===e?!0:(Ie||(Ie=document.createElement("a")),Ie.href=e,n===Ie.href)}function En(n){return Object.keys(n).length===0}function Fn(n){return n??""}function f(n,e){n.appendChild(e)}function b(n,e,t){n.insertBefore(e,t||null)}function y(n){n.parentNode&&n.parentNode.removeChild(n)}function me(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function _e(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function ze(n){return function(e){e.target===this&&n.call(this,e)}}function r(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function pl(n){return n===""?null:+n}function On(n){return Array.from(n.childNodes)}function q(n,e){e=""+e,n.data!==e&&(n.data=e)}function de(n,e){n.value=e??""}function kt(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const o=Pn(e,t,{cancelable:l});return i.slice().forEach(s=>{s.call(n,o)}),!o.defaultPrevented}return!0}}function jn(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const Me=[],gt=[];let Se=[];const wt=[],Bn=Promise.resolve();let Qe=!1;function An(){Qe||(Qe=!0,Bn.then(vl))}function Be(n){Se.push(n)}const Ye=new Set;let Ce=0;function vl(){if(Ce!==0)return;const n=Ee;do{try{for(;Cen.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),Se=e}const Pe=new Set;let ge;function he(){ge={r:0,c:[],p:ge}}function ve(){ge.r||re(ge.c),ge=ge.p}function le(n,e){n&&n.i&&(Pe.delete(n),n.i(e))}function se(n,e,t,l){if(n&&n.o){if(Pe.has(n))return;Pe.add(n),ge.c.push(()=>{Pe.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function ne(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function Vn(n,e){se(n,1,1,()=>{e.delete(n.key)})}function Wn(n,e,t,l,i,o,s,a,c,d,_,h){let p=n.length,v=o.length,k=p;const g={};for(;k--;)g[n[k].key]=k;const w=[],T=new Map,j=new Map,H=[];for(k=v;k--;){const N=h(i,o,k),O=t(N);let M=s.get(O);M?H.push(()=>M.p(N,e)):(M=d(O,N),M.c()),T.set(O,w[k]=M),O in g&&j.set(O,Math.abs(k-g[O]))}const I=new Set,A=new Set;function P(N){le(N,1),N.m(a,_),s.set(N.key,N),_=N.first,v--}for(;p&&v;){const N=w[v-1],O=n[p-1],M=N.key,D=O.key;N===O?(_=N.first,p--,v--):T.has(D)?!s.has(M)||I.has(M)?P(N):A.has(D)?p--:j.get(M)>j.get(D)?(A.add(M),P(N)):(I.add(D),p--):(c(O,s),p--)}for(;p--;){const N=n[p];T.has(N.key)||c(N,s)}for(;v;)P(w[v-1]);return re(H),w}function we(n){n&&n.c()}function be(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),Be(()=>{const o=n.$$.on_mount.map(dl).filter(ml);n.$$.on_destroy?n.$$.on_destroy.push(...o):re(o),n.$$.on_mount=[]}),i.forEach(Be)}function ke(n,e){const t=n.$$;t.fragment!==null&&(zn(t.after_update),re(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Rn(n,e){n.$$.dirty[0]===-1&&(Me.push(n),An(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const k=v.length?v[0]:p;return d.ctx&&i(d.ctx[h],d.ctx[h]=k)&&(!d.skip_bound&&d.bound[h]&&d.bound[h](k),_&&Rn(n,h)),p}):[],d.update(),_=!0,re(d.before_update),d.fragment=l?l(d.ctx):!1,e.target){if(e.hydrate){const h=On(e.target);d.fragment&&d.fragment.l(h),h.forEach(y)}else d.fragment&&d.fragment.c();e.intro&&le(n.$$.fragment),be(n,e.target,e.anchor),vl()}Ne(c)}class Le{constructor(){Xe(this,"$$");Xe(this,"$$set")}$destroy(){ke(this,1),this.$destroy=J}$on(e,t){if(!ml(t))return J;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!En(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Kn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Kn);function qn(n){let e,t;return{c(){e=R("path"),t=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(y(e),y(t))}}}function Gn(n){let e,t,l,i,o;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),o=R("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17"),r(o,"points","10 9 9 9 8 9")},m(s,a){b(s,e,a),b(s,t,a),b(s,l,a),b(s,i,a),b(s,o,a)},d(s){s&&(y(e),y(t),y(l),y(i),y(o))}}}function Un(n){let e,t;return{c(){e=R("polyline"),t=R("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(y(e),y(t))}}}function Jn(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(l,"x1","3"),r(l,"y1","8"),r(l,"x2","21"),r(l,"y2","8"),r(i,"x","10"),r(i,"y","12"),r(i,"width","4"),r(i,"height","4"),r(i,"rx","1")},m(o,s){b(o,e,s),b(o,t,s),b(o,l,s),b(o,i,s)},d(o){o&&(y(e),y(t),y(l),y(i))}}}function Xn(n){let e,t,l,i,o;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),o=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","9"),r(l,"y1","12"),r(l,"x2","15"),r(l,"y2","12"),r(i,"x1","9"),r(i,"y1","15"),r(i,"x2","13"),r(i,"y2","15"),r(o,"x1","12"),r(o,"y1","15"),r(o,"x2","12"),r(o,"y2","18")},m(s,a){b(s,e,a),b(s,t,a),b(s,l,a),b(s,i,a),b(s,o,a)},d(s){s&&(y(e),y(t),y(l),y(i),y(o))}}}function Zn(n){let e,t,l,i,o,s;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),o=R("line"),s=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(o,"x1","8"),r(o,"y1","14"),r(o,"x2","12"),r(o,"y2","14"),r(s,"x1","12"),r(s,"y1","12"),r(s,"x2","12"),r(s,"y2","18")},m(a,c){b(a,e,c),b(a,t,c),b(a,l,c),b(a,i,c),b(a,o,c),b(a,s,c)},d(a){a&&(y(e),y(t),y(l),y(i),y(o),y(s))}}}function Yn(n){let e,t,l,i;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(i,"x1","16"),r(i,"y1","17"),r(i,"x2","8"),r(i,"y2","17")},m(o,s){b(o,e,s),b(o,t,s),b(o,l,s),b(o,i,s)},d(o){o&&(y(e),y(t),y(l),y(i))}}}function Qn(n){let e,t,l,i,o;return{c(){e=R("path"),t=R("polyline"),l=R("line"),i=R("line"),o=R("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(i,"x1","8"),r(i,"y1","16"),r(i,"x2","16"),r(i,"y2","16"),r(o,"x1","8"),r(o,"y1","14"),r(o,"x2","12"),r(o,"y2","14")},m(s,a){b(s,e,a),b(s,t,a),b(s,l,a),b(s,i,a),b(s,o,a)},d(s){s&&(y(e),y(t),y(l),y(i),y(o))}}}function xn(n){let e,t,l;return{c(){e=R("path"),t=R("circle"),l=R("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(l,"cx","18"),r(l,"cy","16"),r(l,"r","3")},m(i,o){b(i,e,o),b(i,t,o),b(i,l,o)},d(i){i&&(y(e),y(t),y(l))}}}function $n(n){let e,t;return{c(){e=R("rect"),t=R("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(l,i){b(l,e,i),b(l,t,i)},d(l){l&&(y(e),y(t))}}}function ei(n){let e,t,l;return{c(){e=R("rect"),t=R("circle"),l=R("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(l,"points","21 15 16 10 5 21")},m(i,o){b(i,e,o),b(i,t,o),b(i,l,o)},d(i){i&&(y(e),y(t),y(l))}}}function ti(n){let e;return{c(){e=R("path"),r(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){b(t,e,l)},d(t){t&&y(e)}}}function li(n){let e;function t(o,s){return o[0]==="folder"?ti:o[0]==="image"?ei:o[0]==="video"?$n:o[0]==="audio"?xn:o[0]==="pdf"?Qn:o[0]==="document"?Yn:o[0]==="spreadsheet"?Zn:o[0]==="presentation"?Xn:o[0]==="archive"?Jn:o[0]==="code"?Un:o[0]==="text"?Gn:qn}let l=t(n),i=l(n);return{c(){e=R("svg"),i.c(),r(e,"width",n[1]),r(e,"height",n[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(o,s){b(o,e,s),i.m(e,null)},p(o,[s]){l!==(l=t(o))&&(i.d(1),i=l(o),i&&(i.c(),i.m(e,null))),s&2&&r(e,"width",o[1]),s&2&&r(e,"height",o[1])},i:J,o:J,d(o){o&&y(e),i.d()}}}function ni(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=o=>{"kind"in o&&t(0,l=o.kind),"size"in o&&t(1,i=o.size)},[l,i]}class yl extends Le{constructor(e){super(),De(this,e,ni,li,Te,{kind:0,size:1})}}function Ae(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const ii={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function He(n){return n?ii[n]||n:"Unknown"}function bl(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const si=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],oi=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],ri=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],ci=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function kl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return si.includes(e)||ci.includes(l)}function gl(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return oi.includes(e)||ri.includes(l)&&l!=="md"&&l!=="markdown"}function wl(n){return(n.mime||"").toLowerCase().includes("pdf")}function Cl(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function ai(n){return kl(n)||wl(n)}function fi(n){return gl(n)||Cl(n)}function ui(n){let e,t=Ae(n[0].size)+"",l,i,o,s=n[0].mime&&Ct(n);return{c(){e=u("span"),l=F(t),i=C(),s&&s.c(),o=pe()},m(a,c){b(a,e,c),f(e,l),b(a,i,c),s&&s.m(a,c),b(a,o,c)},p(a,c){c&1&&t!==(t=Ae(a[0].size)+"")&&q(l,t),a[0].mime?s?s.p(a,c):(s=Ct(a),s.c(),s.m(o.parentNode,o)):s&&(s.d(1),s=null)},d(a){a&&(y(e),y(i),y(o)),s&&s.d(a)}}}function di(n){let e;return{c(){e=u("span"),e.textContent="Folder"},m(t,l){b(t,e,l)},p:J,d(t){t&&y(e)}}}function Ct(n){let e,t,l,i=He(n[0].mime)+"",o;return{c(){e=u("span"),e.textContent="·",t=C(),l=u("span"),o=F(i),r(e,"class","meta-sep svelte-18mry1k")},m(s,a){b(s,e,a),b(s,t,a),b(s,l,a),f(l,o)},p(s,a){a&1&&i!==(i=He(s[0].mime)+"")&&q(o,i)},d(s){s&&(y(e),y(t),y(l))}}}function mi(n){let e,t,l;return{c(){e=u("button"),e.innerHTML=' ',r(e,"class","action-btn svelte-18mry1k"),r(e,"title","Open folder"),r(e,"aria-label","Open folder")},m(i,o){b(i,e,o),t||(l=L(e,"click",_e(n[24])),t=!0)},p:J,d(i){i&&y(e),t=!1,l()}}}function pi(n){let e,t,l,i,o;return{c(){e=u("button"),e.innerHTML=' ',t=C(),l=u("button"),l.innerHTML=' ',r(e,"class","action-btn svelte-18mry1k"),r(e,"title","Preview"),r(e,"aria-label","Preview"),r(l,"class","action-btn svelte-18mry1k"),r(l,"title","Open in external program"),r(l,"aria-label","Open externally")},m(s,a){b(s,e,a),b(s,t,a),b(s,l,a),i||(o=[L(e,"click",_e(n[23])),L(l,"click",_e(n[8]))],i=!0)},p:J,d(s){s&&(y(e),y(t),y(l)),i=!1,re(o)}}}function Mt(n){let e,t,l,i,o,s,a,c,d,_,h,p;return{c(){e=u("div"),t=C(),l=u("div"),i=u("button"),i.textContent="Rename",o=C(),s=u("button"),s.textContent="Duplicate",a=C(),c=u("button"),c.textContent="Cut",d=C(),_=u("button"),_.textContent="Copy",r(e,"class","menu-backdrop svelte-18mry1k"),r(e,"role","presentation"),r(i,"class","menu-item svelte-18mry1k"),r(i,"role","menuitem"),r(s,"class","menu-item svelte-18mry1k"),r(s,"role","menuitem"),r(c,"class","menu-item svelte-18mry1k"),r(c,"role","menuitem"),r(_,"class","menu-item svelte-18mry1k"),r(_,"role","menuitem"),r(l,"class","menu svelte-18mry1k"),r(l,"role","menu")},m(v,k){b(v,e,k),b(v,t,k),b(v,l,k),f(l,i),f(l,o),f(l,s),f(l,a),f(l,c),f(l,d),f(l,_),h||(p=[L(e,"click",_e(n[15])),L(i,"click",n[10]),L(s,"click",n[11]),L(c,"click",n[12]),L(_,"click",n[13]),L(l,"click",_e(n[22]))],h=!0)},p:J,d(v){v&&(y(e),y(t),y(l)),h=!1,re(p)}}}function _i(n){let e,t,l,i,o,s,a=n[0].name+"",c,d,_,h,p,v,k,g,w,T,j,H,I,A,P,N,O,M,D,Z;l=new yl({props:{kind:n[4],size:22}});function V(B,G){return B[5]?di:ui}let Y=V(n)(n);function ee(B,G){return B[5]?mi:pi}let X=ee(n)(n),te=n[2]&&Mt(n);return{c(){e=u("div"),t=u("div"),we(l.$$.fragment),i=C(),o=u("div"),s=u("div"),c=F(a),_=C(),h=u("div"),Y.c(),p=C(),v=u("div"),X.c(),k=C(),g=u("button"),w=R("svg"),T=R("circle"),j=R("circle"),H=R("circle"),I=C(),A=u("button"),A.innerHTML=' ',N=C(),te&&te.c(),O=pe(),r(t,"class","file-row-icon svelte-18mry1k"),r(s,"class","file-row-name svelte-18mry1k"),r(s,"title",d=n[0].name),r(h,"class","file-row-meta svelte-18mry1k"),r(o,"class","file-row-body svelte-18mry1k"),r(T,"cx","12"),r(T,"cy","5"),r(T,"r","2"),r(j,"cx","12"),r(j,"cy","12"),r(j,"r","2"),r(H,"cx","12"),r(H,"cy","19"),r(H,"r","2"),r(w,"width","16"),r(w,"height","16"),r(w,"viewBox","0 0 24 24"),r(w,"fill","currentColor"),r(g,"class","action-btn svelte-18mry1k"),r(g,"title","More actions"),r(g,"aria-label","More actions"),r(g,"aria-expanded",n[2]),r(A,"class","action-btn action-btn-danger svelte-18mry1k"),r(A,"title","Delete"),r(A,"aria-label","Delete"),r(v,"class","file-row-actions svelte-18mry1k"),r(e,"class","file-row svelte-18mry1k"),r(e,"role","button"),r(e,"tabindex","0"),r(e,"draggable","true"),r(e,"aria-label",P=n[5]?`Folder ${n[0].name}`:`File ${n[0].name}`),Ze(e,"file-row--selected",n[1]),Ze(e,"file-row--dragover",!1)},m(B,G){b(B,e,G),f(e,t),be(l,t,null),f(e,i),f(e,o),f(o,s),f(s,c),f(o,_),f(o,h),Y.m(h,null),f(e,p),f(e,v),X.m(v,null),f(v,k),f(v,g),f(g,w),f(w,T),f(w,j),f(w,H),f(v,I),f(v,A),b(B,N,G),te&&te.m(B,G),b(B,O,G),M=!0,D||(Z=[L(window,"click",n[15]),L(g,"click",_e(n[14])),L(A,"click",_e(n[9])),L(e,"click",n[6]),L(e,"keydown",n[7]),L(e,"dragstart",n[16]),L(e,"dragover",n[17]),L(e,"drop",n[18])],D=!0)},p(B,[G]){(!M||G&1)&&a!==(a=B[0].name+"")&&q(c,a),(!M||G&1&&d!==(d=B[0].name))&&r(s,"title",d),Y.p(B,G),X.p(B,G),(!M||G&4)&&r(g,"aria-expanded",B[2]),(!M||G&1&&P!==(P=B[5]?`Folder ${B[0].name}`:`File ${B[0].name}`))&&r(e,"aria-label",P),(!M||G&2)&&Ze(e,"file-row--selected",B[1]),B[2]?te?te.p(B,G):(te=Mt(B),te.c(),te.m(O.parentNode,O)):te&&(te.d(1),te=null)},i(B){M||(le(l.$$.fragment,B),M=!0)},o(B){se(l.$$.fragment,B),M=!1},d(B){B&&(y(e),y(N),y(O)),ke(l),Y.d(),X.d(),te&&te.d(B),D=!1,re(Z)}}}function hi(n,e,t){let{item:l}=e,{selected:i=!1}=e,{onDragStart:o}=e,{onDragOver:s}=e,{onDrop:a}=e;const c=Ve(),d=bl(l),_=l.type==="folder";let h=!1,p=null;function v(E){E.ctrlKey||E.metaKey?c("toggleSelect",l.id):E.shiftKey?c("rangeSelect",l.id):p?(clearTimeout(p),p=null,_?c("navigate",l.id):c("preview",l)):p=setTimeout(()=>{p=null,i?_?c("navigate",l.id):c("preview",l):c("selectOne",l.id)},250)}function k(E){E.key==="Enter"&&(_?c("navigate",l.id):c("preview",l))}function g(){c("openExternal",l.fileId)}function w(){c("delete",{id:l.id,type:l.type})}function T(){t(2,h=!1),c("rename",{id:l.id,name:l.name})}function j(){t(2,h=!1),c("duplicate",l.id)}function H(){t(2,h=!1),c("cut",l.id)}function I(){t(2,h=!1),c("copy",l.id)}function A(){t(2,h=!h)}function P(){t(2,h=!1)}function N(E){o&&o(E,l.id)}function O(E){s&&_&&s(E,l.id)}function M(E){a&&_&&a(E,l.id)}function D(E){jn.call(this,n,E)}const Z=()=>c("preview",l),V=()=>c("navigate",l.id);return n.$$set=E=>{"item"in E&&t(0,l=E.item),"selected"in E&&t(1,i=E.selected),"onDragStart"in E&&t(19,o=E.onDragStart),"onDragOver"in E&&t(20,s=E.onDragOver),"onDrop"in E&&t(21,a=E.onDrop)},[l,i,h,c,d,_,v,k,g,w,T,j,H,I,A,P,N,O,M,o,s,a,D,Z,V]}class vi extends Le{constructor(e){super(),De(this,e,hi,_i,Te,{item:0,selected:1,onDragStart:19,onDragOver:20,onDrop:21})}}function St(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function yi(n){let e;return{c(){e=u("span"),e.textContent="/",r(e,"class","sep svelte-csi2lb")},m(t,l){b(t,e,l)},d(t){t&&y(e)}}}function bi(n){let e,t=n[4].name+"",l,i,o;function s(){return n[2](n[6])}return{c(){e=u("button"),l=F(t),r(e,"class","crumb crumb--link svelte-csi2lb")},m(a,c){b(a,e,c),f(e,l),i||(o=L(e,"click",s),i=!0)},p(a,c){n=a,c&1&&t!==(t=n[4].name+"")&&q(l,t)},d(a){a&&y(e),i=!1,o()}}}function ki(n){let e,t=n[4].name+"",l;return{c(){e=u("span"),l=F(t),r(e,"class","crumb crumb--current svelte-csi2lb")},m(i,o){b(i,e,o),f(e,l)},p(i,o){o&1&&t!==(t=i[4].name+"")&&q(l,t)},d(i){i&&y(e)}}}function Tt(n){let e,t,l=n[6]>0&&yi();function i(a,c){return a[6]===a[0].length-1?ki:bi}let o=i(n),s=o(n);return{c(){l&&l.c(),e=C(),s.c(),t=pe()},m(a,c){l&&l.m(a,c),b(a,e,c),s.m(a,c),b(a,t,c)},p(a,c){o===(o=i(a))&&s?s.p(a,c):(s.d(1),s=o(a),s&&(s.c(),s.m(t.parentNode,t)))},d(a){a&&(y(e),y(t)),l&&l.d(a),s.d(a)}}}function gi(n){let e,t=ne(n[0]),l=[];for(let i=0;io(a);return n.$$set=a=>{"crumbs"in a&&t(0,l=a.crumbs)},[l,o,s]}class Ml extends Le{constructor(e){super(),De(this,e,wi,gi,Te,{crumbs:0})}}function Ci(n){let e,t,l,i,o,s;return{c(){e=u("div"),t=u("p"),t.textContent="Preview is not available for this file type.",l=C(),i=u("button"),i.textContent="Open in external program",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,c){b(a,e,c),f(e,t),f(e,l),f(e,i),o||(s=L(i,"click",n[9]),o=!0)},p:J,d(a){a&&y(e),o=!1,s()}}}function Mi(n){let e,t;function l(s,a){return a&2&&(e=null),e==null&&(e=!!(s[1]&&s[1].startsWith("data:"))),e?Ei:Ni}let i=l(n,-1),o=i(n);return{c(){o.c(),t=pe()},m(s,a){o.m(s,a),b(s,t,a)},p(s,a){i===(i=l(s,a))&&o?o.p(s,a):(o.d(1),o=i(s),o&&(o.c(),o.m(t.parentNode,t)))},d(s){s&&y(t),o.d(s)}}}function Si(n){let e,t,l;return{c(){e=u("pre"),t=u("code"),l=F(n[1]),r(e,"class","preview-text svelte-1cw3u0m")},m(i,o){b(i,e,o),f(e,t),f(t,l)},p(i,o){o&2&&q(l,i[1])},d(i){i&&y(e)}}}function Ti(n){let e,t,l,i;return{c(){e=u("div"),t=u("img"),je(t.src,l=n[1])||r(t,"src",l),r(t,"alt",i=n[0].name),r(t,"class","preview-image svelte-1cw3u0m"),r(e,"class","preview-image-container svelte-1cw3u0m")},m(o,s){b(o,e,s),f(e,t)},p(o,s){s&2&&!je(t.src,l=o[1])&&r(t,"src",l),s&1&&i!==(i=o[0].name)&&r(t,"alt",i)},d(o){o&&y(e)}}}function Di(n){let e,t,l,i,o,s,a;return{c(){e=u("div"),t=u("p"),l=F(n[3]),i=C(),o=u("button"),o.textContent="Open in external program",r(o,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,d){b(c,e,d),f(e,t),f(t,l),f(e,i),f(e,o),s||(a=L(o,"click",n[9]),s=!0)},p(c,d){d&8&&q(l,c[3])},d(c){c&&y(e),s=!1,a()}}}function Li(n){let e;return{c(){e=u("div"),e.innerHTML="Loading preview...
",r(e,"class","preview-status svelte-1cw3u0m")},m(t,l){b(t,e,l)},p:J,d(t){t&&y(e)}}}function Ni(n){let e,t,l,i,o,s;return{c(){e=u("div"),t=u("p"),t.textContent="PDF preview is not available in this environment.",l=C(),i=u("button"),i.textContent="Open in external program",r(i,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(a,c){b(a,e,c),f(e,t),f(e,l),f(e,i),o||(s=L(i,"click",n[9]),o=!0)},p:J,d(a){a&&y(e),o=!1,s()}}}function Ei(n){let e,t,l;return{c(){e=u("div"),t=u("embed"),je(t.src,l=n[1])||r(t,"src",l),r(t,"type","application/pdf"),r(t,"class","preview-pdf svelte-1cw3u0m"),r(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,o){b(i,e,o),f(e,t)},p(i,o){o&2&&!je(t.src,l=i[1])&&r(t,"src",l)},d(i){i&&y(e)}}}function Fi(n){let e,t,l,i,o,s,a,c=n[0].name+"",d,_,h,p,v=Ae(n[0].size)+"",k,g,w=He(n[0].mime)+"",T,j,H,I,A,P,N,O,M,D,Z,V;o=new yl({props:{kind:n[8],size:18}});function E(W,X){return W[2]?Li:W[3]?Di:W[6]&&W[1]?Ti:W[5]&&W[1]?Si:W[4]?Mi:Ci}let Y=E(n),ee=Y(n);return{c(){e=u("div"),t=u("div"),l=u("header"),i=u("div"),we(o.$$.fragment),s=C(),a=u("span"),d=F(c),h=C(),p=u("div"),k=F(v),g=F(" · "),T=F(w),j=C(),H=u("div"),I=u("button"),I.innerHTML=' ',A=C(),P=u("button"),P.innerHTML=' ',N=C(),O=u("div"),ee.c(),r(a,"class","preview-name svelte-1cw3u0m"),r(a,"title",_=n[0].name),r(i,"class","preview-title svelte-1cw3u0m"),r(p,"class","preview-meta svelte-1cw3u0m"),r(I,"class","action-btn svelte-1cw3u0m"),r(I,"title","Open in external program"),r(I,"aria-label","Open externally"),r(P,"class","action-btn action-btn-close svelte-1cw3u0m"),r(P,"title","Close"),r(P,"aria-label","Close preview"),r(H,"class","preview-actions svelte-1cw3u0m"),r(l,"class","preview-header svelte-1cw3u0m"),r(O,"class","preview-body svelte-1cw3u0m"),r(t,"class","modal svelte-1cw3u0m"),r(e,"class","overlay svelte-1cw3u0m"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",M=`Preview: ${n[0].name}`)},m(W,X){b(W,e,X),f(e,t),f(t,l),f(l,i),be(o,i,null),f(i,s),f(i,a),f(a,d),f(l,h),f(l,p),f(p,k),f(p,g),f(p,T),f(l,j),f(l,H),f(H,I),f(H,A),f(H,P),f(t,N),f(t,O),ee.m(O,null),D=!0,Z||(V=[L(I,"click",n[9]),L(P,"click",n[10]),L(e,"click",ze(n[11]))],Z=!0)},p(W,[X]){(!D||X&1)&&c!==(c=W[0].name+"")&&q(d,c),(!D||X&1&&_!==(_=W[0].name))&&r(a,"title",_),(!D||X&1)&&v!==(v=Ae(W[0].size)+"")&&q(k,v),(!D||X&1)&&w!==(w=He(W[0].mime)+"")&&q(T,w),Y===(Y=E(W))&&ee?ee.p(W,X):(ee.d(1),ee=Y(W),ee&&(ee.c(),ee.m(O,null))),(!D||X&1&&M!==(M=`Preview: ${W[0].name}`))&&r(e,"aria-label",M)},i(W){D||(le(o.$$.fragment,W),D=!0)},o(W){se(o.$$.fragment,W),D=!1},d(W){W&&y(e),ke(o),ee.d(),Z=!1,re(V)}}}function Oi(n,e,t){let l,i,o,{item:s}=e,{content:a=""}=e,{loading:c=!1}=e,{error:d=""}=e;const _=Ve(),h=bl(s);function p(w){w.key==="Escape"&&_("close")}function v(){_("openExternal",s.fileId)}_l(()=>{window.addEventListener("keydown",p)}),hl(()=>{window.removeEventListener("keydown",p)});const k=()=>_("close"),g=()=>_("close");return n.$$set=w=>{"item"in w&&t(0,s=w.item),"content"in w&&t(1,a=w.content),"loading"in w&&t(2,c=w.loading),"error"in w&&t(3,d=w.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=kl(s)&&a&&a.startsWith("data:")),n.$$.dirty&1&&t(5,i=gl(s)||Cl(s)),n.$$.dirty&1&&t(4,o=wl(s))},[s,a,c,d,o,i,l,_,h,v,k,g]}class Ii extends Le{constructor(e){super(),De(this,e,Oi,Fi,Te,{item:0,content:1,loading:2,error:3})}}function Pi(n){let e,t,l,i,o,s,a,c,d,_,h,p,v,k,g,w,T;return{c(){e=u("div"),t=u("div"),l=u("h3"),i=F(n[0]),o=C(),s=u("p"),a=F(n[1]),c=C(),d=u("div"),_=u("button"),h=F(n[2]),v=C(),k=u("button"),g=F(n[3]),r(l,"class","svelte-1fv6yyk"),r(s,"class","message svelte-1fv6yyk"),r(_,"class",p="btn "+(n[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),r(k,"class","btn svelte-1fv6yyk"),r(d,"class","actions svelte-1fv6yyk"),r(t,"class","modal svelte-1fv6yyk"),r(e,"class","overlay svelte-1fv6yyk"),r(e,"role","dialog"),r(e,"aria-modal","true"),r(e,"aria-label",n[0])},m(j,H){b(j,e,H),f(e,t),f(t,l),f(l,i),f(t,o),f(t,s),f(s,a),f(t,c),f(t,d),f(d,_),f(_,h),f(d,v),f(d,k),f(k,g),w||(T=[L(_,"click",n[6]),L(k,"click",n[7]),L(e,"click",ze(n[8]))],w=!0)},p(j,[H]){H&1&&q(i,j[0]),H&2&&q(a,j[1]),H&4&&q(h,j[2]),H&16&&p!==(p="btn "+(j[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&r(_,"class",p),H&8&&q(g,j[3]),H&1&&r(e,"aria-label",j[0])},i:J,o:J,d(j){j&&y(e),w=!1,re(T)}}}function ji(n,e,t){let{title:l="Подтверждение"}=e,{message:i=""}=e,{confirmText:o="Удалить"}=e,{cancelText:s="Отмена"}=e,{danger:a=!1}=e;const c=Ve(),d=()=>c("confirm"),_=()=>c("cancel"),h=()=>c("cancel");return n.$$set=p=>{"title"in p&&t(0,l=p.title),"message"in p&&t(1,i=p.message),"confirmText"in p&&t(2,o=p.confirmText),"cancelText"in p&&t(3,s=p.cancelText),"danger"in p&&t(4,a=p.danger)},[l,i,o,s,a,c,d,_,h]}class Bi extends Le{constructor(e){super(),De(this,e,ji,Pi,Te,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function Dt(n,e,t){const l=n.slice();return l[134]=e[t],l}function Lt(n,e,t){const l=n.slice();return l[137]=e[t],l}function Nt(n,e,t){const l=n.slice();return l[148]=e[t],l}function Et(n,e,t){const l=n.slice();return l[145]=e[t],l}function Ft(n,e,t){const l=n.slice();return l[140]=e[t],l}function Ot(n,e,t){const l=n.slice();return l[137]=e[t],l}function It(n,e,t){const l=n.slice();return l[140]=e[t],l}function Pt(n,e,t){const l=n.slice();return l[153]=e[t],l}function jt(n,e,t){const l=n.slice();return l[134]=e[t],l}function Bt(n,e,t){const l=n.slice();return l[158]=e[t],l}function At(n,e,t){const l=n.slice();return l[161]=e[t],l}function Ht(n){let e,t=n[161].label+"",l,i,o,s,a;function c(){return n[76](n[161])}return{c(){e=u("button"),l=F(t),i=C(),r(e,"class",o="nav-item "+(n[4]===n[161].id?"selected":"")+" svelte-9y78h7")},m(d,_){b(d,e,_),f(e,l),f(e,i),s||(a=L(e,"click",c),s=!0)},p(d,_){n=d,_[0]&1&&t!==(t=n[161].label+"")&&q(l,t),_[0]&17&&o!==(o="nav-item "+(n[4]===n[161].id?"selected":"")+" svelte-9y78h7")&&r(e,"class",o)},d(d){d&&y(e),s=!1,a()}}}function zt(n){let e,t,l,i,o,s=n[1].length>0&&Vt(n),a=ne(n[1]),c=[];for(let _=0;_0?s?s.p(_,h):(s=Vt(_),s.c(),s.m(t,null)):s&&(s.d(1),s=null),h[0]&34|h[1]&256){a=ne(_[1]);let p;for(p=0;p ',r(i,"class","dismiss-btn svelte-9y78h7"),r(i,"aria-label","Dismiss"),r(e,"class","error-banner svelte-9y78h7")},m(a,c){b(a,e,c),f(e,t),f(e,l),f(e,i),o||(s=[L(i,"click",_e(n[78])),L(e,"click",n[79])],o=!0)},p(a,c){c[0]&8&&q(t,a[3])},d(a){a&&y(e),o=!1,re(s)}}}function Vi(n){let e,t,l;function i(a,c){if(a[18])return Gi;if(a[0].length>0)return qi;if(a[3])return Ki}let o=i(n),s=o&&o(n);return{c(){e=u("div"),t=u("h2"),t.textContent="Верстак",l=C(),s&&s.c(),r(t,"class","svelte-9y78h7"),r(e,"class","welcome svelte-9y78h7")},m(a,c){b(a,e,c),f(e,t),f(e,l),s&&s.m(e,null)},p(a,c){o===(o=i(a))&&s?s.p(a,c):(s&&s.d(1),s=o&&o(a),s&&(s.c(),s.m(e,null)))},i:J,o:J,d(a){a&&y(e),s&&s.d()}}}function Wi(n){let e,t,l,i,o,s,a=ne(n[37]),c=[];for(let p=0;p{_[k]=null}),ve()),~i?(o=_[i],o?o.p(p,v):(o=_[i]=d[i](p),o.c()),le(o,1),o.m(l,null)):o=null)},i(p){s||(le(o),s=!0)},o(p){se(o),s=!1},d(p){p&&(y(e),y(t),y(l)),me(c,p),~i&&_[i].d()}}}function Ri(n){let e,t,l,i=n[8].title+"",o,s,a,c,d,_,h,p,v,k,g,w=n[8].dirty&&il();return{c(){e=u("div"),t=u("div"),l=u("span"),o=F(i),s=C(),w&&w.c(),a=C(),c=u("div"),d=u("button"),d.textContent="Сохранить",_=C(),h=u("button"),h.textContent="Закрыть",p=C(),v=u("textarea"),r(l,"class","note-title svelte-9y78h7"),r(d,"class","btn btn-primary svelte-9y78h7"),r(h,"class","btn svelte-9y78h7"),r(c,"class","note-editor-actions svelte-9y78h7"),r(t,"class","note-editor-header svelte-9y78h7"),r(v,"class","note-textarea svelte-9y78h7"),r(v,"placeholder","Начните писать..."),r(e,"class","note-editor svelte-9y78h7")},m(T,j){b(T,e,j),f(e,t),f(t,l),f(l,o),f(t,s),w&&w.m(t,null),f(t,a),f(t,c),f(c,d),f(c,_),f(c,h),f(e,p),f(e,v),de(v,n[8].content),k||(g=[L(d,"click",n[68]),L(h,"click",n[66]),L(v,"input",n[80]),L(v,"input",n[67])],k=!0)},p(T,j){j[0]&256&&i!==(i=T[8].title+"")&&q(o,i),T[8].dirty?w||(w=il(),w.c(),w.m(t,a)):w&&(w.d(1),w=null),j[0]&256&&de(v,T[8].content)},i:J,o:J,d(T){T&&y(e),w&&w.d(),k=!1,re(g)}}}function Ki(n){let e,t,l;return{c(){e=u("p"),t=F("Ошибка: "),l=F(n[3]),r(e,"class","error-text svelte-9y78h7")},m(i,o){b(i,e,o),f(e,t),f(e,l)},p(i,o){o[0]&8&&q(l,i[3])},d(i){i&&y(e)}}}function qi(n){let e,t,l;return{c(){e=u("p"),e.textContent="Выберите раздел в боковой панели.",t=C(),l=u("p"),l.textContent="Или создайте новое дело кнопкой «+».",r(e,"class","svelte-9y78h7"),r(l,"class","hint svelte-9y78h7")},m(i,o){b(i,e,o),b(i,t,o),b(i,l,o)},p:J,d(i){i&&(y(e),y(t),y(l))}}}function Gi(n){let e;return{c(){e=u("p"),e.textContent="Загрузка...",r(e,"class","svelte-9y78h7")},m(t,l){b(t,e,l)},p:J,d(t){t&&y(e)}}}function Gt(n){let e,t=n[153].label+"",l,i,o;function s(){return n[81](n[153])}return{c(){e=u("button"),l=F(t),r(e,"class",Fn(n[75](n[153].id))+" svelte-9y78h7")},m(a,c){b(a,e,c),f(e,l),i||(o=L(e,"click",s),i=!0)},p(a,c){n=a},d(a){a&&y(e),i=!1,o()}}}function Ui(n){let e;return{c(){e=u("div"),e.innerHTML='Активность появится позже
',r(e,"class","empty-state svelte-9y78h7")},m(t,l){b(t,e,l)},p:J,i:J,o:J,d(t){t&&y(e)}}}function Ji(n){let e,t,l,i,o,s,a,c,d,_,h,p;function v(w,T){return w[10].length===0?$i:xi}let k=v(n),g=k(n);return{c(){e=u("div"),t=u("div"),l=u("input"),i=C(),o=u("input"),s=C(),a=u("button"),c=F("Записать"),_=C(),g.c(),r(l,"type","text"),r(l,"placeholder","Что сделано"),r(l,"class","svelte-9y78h7"),r(o,"type","number"),r(o,"placeholder","Мин"),r(o,"min","1"),r(o,"class","svelte-9y78h7"),r(a,"class","btn btn-primary svelte-9y78h7"),a.disabled=d=!n[12].trim()||!n[11],r(t,"class","worklog-form svelte-9y78h7"),r(e,"class","worklog-tab svelte-9y78h7")},m(w,T){b(w,e,T),f(e,t),f(t,l),de(l,n[12]),f(t,i),f(t,o),de(o,n[11]),f(t,s),f(t,a),f(a,c),f(e,_),g.m(e,null),h||(p=[L(l,"input",n[102]),L(o,"input",n[103]),L(a,"click",n[69])],h=!0)},p(w,T){T[0]&4096&&l.value!==w[12]&&de(l,w[12]),T[0]&2048&&pl(o.value)!==w[11]&&de(o,w[11]),T[0]&6144&&d!==(d=!w[12].trim()||!w[11])&&(a.disabled=d),k===(k=v(w))&&g?g.p(w,T):(g.d(1),g=k(w),g&&(g.c(),g.m(e,null)))},i:J,o:J,d(w){w&&y(e),g.d(),h=!1,re(p)}}}function Xi(n){let e;function t(o,s){return o[9].length===0?ts:es}let l=t(n),i=l(n);return{c(){i.c(),e=pe()},m(o,s){i.m(o,s),b(o,e,s)},p(o,s){l===(l=t(o))&&i?i.p(o,s):(i.d(1),i=l(o),i&&(i.c(),i.m(e.parentNode,e)))},i:J,o:J,d(o){o&&y(e),i.d(o)}}}function Zi(n){let e,t,l,i,o,s,a,c,d,_,h,p,v,k,g,w,T,j,H,I=n[30].items.length>0&&Xt(n);const A=[ns,ls],P=[];function N(D,Z){return D[22]?0:1}p=N(n),v=P[p]=A[p](n);let O=n[19]&&!n[21]&&Yt(),M=n[26]&&Qt(n);return{c(){e=u("div"),t=u("div"),l=u("button"),i=F("+ Добавить файл"),o=C(),s=u("button"),a=F("+ Добавить папку"),c=C(),d=u("button"),d.textContent="+ Новый файл",_=C(),I&&I.c(),h=C(),v.c(),k=C(),O&&O.c(),g=C(),M&&M.c(),w=pe(),r(l,"class","btn btn-primary svelte-9y78h7"),l.disabled=n[19],r(s,"class","btn svelte-9y78h7"),s.disabled=n[19],r(d,"class","btn svelte-9y78h7"),r(t,"class","tab-toolbar svelte-9y78h7"),r(e,"class","files-tab svelte-9y78h7")},m(D,Z){b(D,e,Z),f(e,t),f(t,l),f(l,i),f(t,o),f(t,s),f(s,a),f(t,c),f(t,d),f(t,_),I&&I.m(t,null),f(e,h),P[p].m(e,null),f(e,k),O&&O.m(e,null),b(D,g,Z),M&&M.m(D,Z),b(D,w,Z),T=!0,j||(H=[L(l,"click",n[70]),L(s,"click",n[71]),L(d,"click",n[46])],j=!0)},p(D,Z){(!T||Z[0]&524288)&&(l.disabled=D[19]),(!T||Z[0]&524288)&&(s.disabled=D[19]),D[30].items.length>0?I?I.p(D,Z):(I=Xt(D),I.c(),I.m(t,null)):I&&(I.d(1),I=null);let V=p;p=N(D),p===V?P[p].p(D,Z):(he(),se(P[V],1,1,()=>{P[V]=null}),ve(),v=P[p],v?v.p(D,Z):(v=P[p]=A[p](D),v.c()),le(v,1),v.m(e,k)),D[19]&&!D[21]?O||(O=Yt(),O.c(),O.m(e,null)):O&&(O.d(1),O=null),D[26]?M?(M.p(D,Z),Z[0]&67108864&&le(M,1)):(M=Qt(D),M.c(),le(M,1),M.m(w.parentNode,w)):M&&(he(),se(M,1,1,()=>{M=null}),ve())},i(D){T||(le(v),le(M),T=!0)},o(D){se(v),se(M),T=!1},d(D){D&&(y(e),y(g),y(w)),I&&I.d(),P[p].d(),O&&O.d(),M&&M.d(D),j=!1,re(H)}}}function Yi(n){let e,t,l,i,o,s,a,c=n[16]&&xt(n);function d(p,v){return p[7].length===0&&!p[16]?as:cs}let _=d(n),h=_(n);return{c(){e=u("div"),t=u("div"),l=u("button"),l.textContent="+ Добавить заметку",i=C(),c&&c.c(),o=C(),h.c(),r(l,"class","btn btn-primary svelte-9y78h7"),r(t,"class","tab-toolbar svelte-9y78h7"),r(e,"class","notes-tab svelte-9y78h7")},m(p,v){b(p,e,v),f(e,t),f(t,l),f(e,i),c&&c.m(e,null),f(e,o),h.m(e,null),s||(a=L(l,"click",n[62]),s=!0)},p(p,v){p[16]?c?c.p(p,v):(c=xt(p),c.c(),c.m(e,o)):c&&(c.d(1),c=null),_===(_=d(p))&&h?h.p(p,v):(h.d(1),h=_(p),h&&(h.c(),h.m(e,null)))},i:J,o:J,d(p){p&&y(e),c&&c.d(),h.d(),s=!1,a()}}}function Qi(n){let e,t,l=n[5].title+"",i,o,s,a,c,d,_=n[5].type+"",h,p,v,k,g,w=(n[5].section||"—")+"",T,j,H,I,A,P=ye(n[5].createdAt)+"",N,O,M,D,Z,V,E,Y,ee,W,X,te,B,G,Q=n[7].length>0&&el(n),K=n[10].length>0&&ll(n);return{c(){e=u("div"),t=u("h2"),i=F(l),o=C(),s=u("div"),a=u("div"),c=u("span"),c.textContent="Тип",d=u("span"),h=F(_),p=C(),v=u("div"),k=u("span"),k.textContent="Раздел",g=u("span"),T=F(w),j=C(),H=u("div"),I=u("span"),I.textContent="Создано",A=u("span"),N=F(P),O=C(),M=u("div"),D=u("button"),D.innerHTML=`
- Новая заметка`,Z=C(),V=u("button"),V.innerHTML=`
- Добавить файл`,E=C(),Y=u("button"),Y.innerHTML=`
- Добавить действие`,ee=C(),W=u("button"),W.innerHTML=`
- Записать время`,X=C(),Q&&Q.c(),te=C(),K&&K.c(),r(t,"class","svelte-9y78h7"),r(c,"class","meta-label svelte-9y78h7"),r(d,"class","svelte-9y78h7"),r(a,"class","meta-item svelte-9y78h7"),r(k,"class","meta-label svelte-9y78h7"),r(g,"class","svelte-9y78h7"),r(v,"class","meta-item svelte-9y78h7"),r(I,"class","meta-label svelte-9y78h7"),r(A,"class","svelte-9y78h7"),r(H,"class","meta-item svelte-9y78h7"),r(s,"class","meta-grid svelte-9y78h7"),r(D,"class","qa-btn svelte-9y78h7"),r(V,"class","qa-btn svelte-9y78h7"),r(Y,"class","qa-btn svelte-9y78h7"),Y.disabled=!0,r(Y,"title","Следующий этап"),r(W,"class","qa-btn svelte-9y78h7"),r(M,"class","quick-actions svelte-9y78h7"),r(e,"class","overview svelte-9y78h7")},m(U,x){b(U,e,x),f(e,t),f(t,i),f(e,o),f(e,s),f(s,a),f(a,c),f(a,d),f(d,h),f(s,p),f(s,v),f(v,k),f(v,g),f(g,T),f(s,j),f(s,H),f(H,I),f(H,A),f(A,N),f(e,O),f(e,M),f(M,D),f(M,Z),f(M,V),f(M,E),f(M,Y),f(M,ee),f(M,W),f(e,X),Q&&Q.m(e,null),f(e,te),K&&K.m(e,null),B||(G=[L(D,"click",n[82]),L(V,"click",n[83]),L(W,"click",n[84])],B=!0)},p(U,x){x[0]&32&&l!==(l=U[5].title+"")&&q(i,l),x[0]&32&&_!==(_=U[5].type+"")&&q(h,_),x[0]&32&&w!==(w=(U[5].section||"—")+"")&&q(T,w),x[0]&32&&P!==(P=ye(U[5].createdAt)+"")&&q(N,P),U[7].length>0?Q?Q.p(U,x):(Q=el(U),Q.c(),Q.m(e,te)):Q&&(Q.d(1),Q=null),U[10].length>0?K?K.p(U,x):(K=ll(U),K.c(),K.m(e,null)):K&&(K.d(1),K=null)},i:J,o:J,d(U){U&&y(e),Q&&Q.d(),K&&K.d(),B=!1,re(G)}}}function xi(n){let e,t=ne(n[10]),l=[];for(let i=0;iЗаписей работы пока нет',r(e,"class","empty-state svelte-9y78h7")},m(t,l){b(t,e,l)},p:J,d(t){t&&y(e)}}}function Ut(n){let e,t,l=n[137].summary+"",i,o,s,a=n[137].minutes+"",c,d,_=ye(n[137].createdAt)+"",h,p;return{c(){e=u("div"),t=u("div"),i=F(l),o=C(),s=u("div"),c=F(a),d=F(" мин · "),h=F(_),p=C(),r(t,"class","svelte-9y78h7"),r(s,"class","wl-meta svelte-9y78h7"),r(e,"class","worklog-entry svelte-9y78h7")},m(v,k){b(v,e,k),f(e,t),f(t,i),f(e,o),f(e,s),f(s,c),f(s,d),f(s,h),f(e,p)},p(v,k){k[0]&1024&&l!==(l=v[137].summary+"")&&q(i,l),k[0]&1024&&a!==(a=v[137].minutes+"")&&q(c,a),k[0]&1024&&_!==(_=ye(v[137].createdAt)+"")&&q(h,_)},d(v){v&&y(e)}}}function es(n){let e,t=ne(n[9]),l=[];for(let i=0;iДействий пока нет',r(e,"class","empty-state svelte-9y78h7")},m(t,l){b(t,e,l)},p:J,d(t){t&&y(e)}}}function Jt(n){let e,t,l=n[148].title+"",i,o,s=n[148].type+"",a,c,d,_,h,p;function v(){return n[101](n[148])}return{c(){e=u("div"),t=u("span"),i=F(l),o=u("span"),a=F(s),c=C(),d=u("button"),d.textContent="Запустить",_=C(),r(t,"class","svelte-9y78h7"),r(o,"class","action-type svelte-9y78h7"),r(d,"class","btn btn-sm svelte-9y78h7"),r(e,"class","action-card svelte-9y78h7")},m(k,g){b(k,e,g),f(e,t),f(t,i),f(e,o),f(o,a),f(e,c),f(e,d),f(e,_),h||(p=L(d,"click",v),h=!0)},p(k,g){n=k,g[0]&512&&l!==(l=n[148].title+"")&&q(i,l),g[0]&512&&s!==(s=n[148].type+"")&&q(a,s)},d(k){k&&y(e),h=!1,p()}}}function Xt(n){let e,t,l=n[30].items.length+"",i,o,s;return{c(){e=u("button"),t=F("Вставить "),i=F(l),r(e,"class","btn svelte-9y78h7")},m(a,c){b(a,e,c),f(e,t),f(e,i),o||(s=L(e,"click",n[51]),o=!0)},p(a,c){c[0]&1073741824&&l!==(l=a[30].items.length+"")&&q(i,l)},d(a){a&&y(e),o=!1,s()}}}function ls(n){let e,t,l,i,o,s,a;const c=[ss,is],d=[];function _(k,g){return k[24].length>0?0:1}e=_(n),t=d[e]=c[e](n);const h=[rs,os],p=[];function v(k,g){return k[25].length===0?0:1}return i=v(n),o=p[i]=h[i](n),{c(){t.c(),l=C(),o.c(),s=pe()},m(k,g){d[e].m(k,g),b(k,l,g),p[i].m(k,g),b(k,s,g),a=!0},p(k,g){let w=e;e=_(k),e===w?d[e].p(k,g):(he(),se(d[w],1,1,()=>{d[w]=null}),ve(),t=d[e],t?t.p(k,g):(t=d[e]=c[e](k),t.c()),le(t,1),t.m(l.parentNode,l));let T=i;i=v(k),i===T?p[i].p(k,g):(he(),se(p[T],1,1,()=>{p[T]=null}),ve(),o=p[i],o?o.p(k,g):(o=p[i]=h[i](k),o.c()),le(o,1),o.m(s.parentNode,s))},i(k){a||(le(t),le(o),a=!0)},o(k){se(t),se(o),a=!1},d(k){k&&(y(l),y(s)),d[e].d(k),p[i].d(k)}}}function ns(n){let e;return{c(){e=u("div"),e.innerHTML='Загрузка...
',r(e,"class","empty-state svelte-9y78h7")},m(t,l){b(t,e,l)},p:J,i:J,o:J,d(t){t&&y(e)}}}function is(n){let e,t;return e=new Ml({props:{crumbs:[{name:"Files"}]}}),{c(){we(e.$$.fragment)},m(l,i){be(e,l,i),t=!0},p:J,i(l){t||(le(e.$$.fragment,l),t=!0)},o(l){se(e.$$.fragment,l),t=!1},d(l){ke(e,l)}}}function ss(n){let e,t,l,i,o,s;return e=new Ml({props:{crumbs:[{name:"Files"},...n[24]]}}),e.$on("navigate",n[89]),{c(){we(e.$$.fragment),t=C(),l=u("button"),l.innerHTML=`
- Back`,r(l,"class","btn btn-sm back-btn svelte-9y78h7")},m(a,c){be(e,a,c),b(a,t,c),b(a,l,c),i=!0,o||(s=L(l,"click",n[42]),o=!0)},p(a,c){const d={};c[0]&16777216&&(d.crumbs=[{name:"Files"},...a[24]]),e.$set(d)},i(a){i||(le(e.$$.fragment,a),i=!0)},o(a){se(e.$$.fragment,a),i=!1},d(a){a&&(y(t),y(l)),ke(e,a),o=!1,s()}}}function os(n){let e,t=[],l=new Map,i,o=ne(n[25]);const s=a=>a[145].id;for(let a=0;a0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",s,a,c,d,_,h,p,v,k,g;return{c(){e=u("div"),t=u("div"),t.innerHTML=' ',l=C(),i=u("p"),s=F(o),a=C(),c=u("p"),c.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",d=C(),_=u("div"),h=u("button"),h.textContent="Добавить файл",p=C(),v=u("button"),v.textContent="Добавить папку",r(t,"class","empty-icon svelte-9y78h7"),r(i,"class","svelte-9y78h7"),r(c,"class","hint svelte-9y78h7"),r(h,"class","btn btn-primary svelte-9y78h7"),r(v,"class","btn svelte-9y78h7"),r(_,"class","empty-actions svelte-9y78h7"),r(e,"class","empty-state svelte-9y78h7")},m(w,T){b(w,e,T),f(e,t),f(e,l),f(e,i),f(i,s),f(e,a),f(e,c),f(e,d),f(e,_),f(_,h),f(_,p),f(_,v),k||(g=[L(h,"click",n[70]),L(v,"click",n[71])],k=!0)},p(w,T){T[0]&16777216&&o!==(o=w[24].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&q(s,o)},i:J,o:J,d(w){w&&y(e),k=!1,re(g)}}}function Zt(n,e){let t,l,i;return l=new vi({props:{item:e[145],selected:e[31].includes(e[145].id),onDragStart:e[54],onDragOver:e[55],onDrop:e[56]}}),l.$on("navigate",e[90]),l.$on("preview",e[91]),l.$on("openExternal",e[92]),l.$on("delete",e[93]),l.$on("rename",e[94]),l.$on("duplicate",e[95]),l.$on("cut",e[96]),l.$on("copy",e[97]),l.$on("selectOne",e[98]),l.$on("toggleSelect",e[99]),{key:n,first:null,c(){t=pe(),we(l.$$.fragment),this.first=t},m(o,s){b(o,t,s),be(l,o,s),i=!0},p(o,s){e=o;const a={};s[0]&33554432&&(a.item=e[145]),s[0]&33554432|s[1]&1&&(a.selected=e[31].includes(e[145].id)),l.$set(a)},i(o){i||(le(l.$$.fragment,o),i=!0)},o(o){se(l.$$.fragment,o),i=!1},d(o){o&&y(t),ke(l,o)}}}function Yt(n){let e;return{c(){e=u("div"),e.innerHTML='Сканирование...
',r(e,"class","empty-state svelte-9y78h7")},m(t,l){b(t,e,l)},d(t){t&&y(e)}}}function Qt(n){let e,t;return e=new Ii({props:{item:n[26],content:n[27],loading:n[28],error:n[29]}}),e.$on("close",n[45]),e.$on("openExternal",n[100]),{c(){we(e.$$.fragment)},m(l,i){be(e,l,i),t=!0},p(l,i){const o={};i[0]&67108864&&(o.item=l[26]),i[0]&134217728&&(o.content=l[27]),i[0]&268435456&&(o.loading=l[28]),i[0]&536870912&&(o.error=l[29]),e.$set(o)},i(l){t||(le(e.$$.fragment,l),t=!0)},o(l){se(e.$$.fragment,l),t=!1},d(l){ke(e,l)}}}function xt(n){let e,t,l,i,o,s,a,c,d;return{c(){e=u("div"),t=u("input"),l=C(),i=u("div"),o=u("button"),o.textContent="Создать",s=C(),a=u("button"),a.textContent="Отмена",r(t,"type","text"),r(t,"placeholder","Название заметки"),r(t,"class","svelte-9y78h7"),r(o,"class","btn btn-primary svelte-9y78h7"),r(a,"class","btn svelte-9y78h7"),r(i,"class","form-actions svelte-9y78h7"),r(e,"class","create-form svelte-9y78h7")},m(_,h){b(_,e,h),f(e,t),de(t,n[17]),f(e,l),f(e,i),f(i,o),f(i,s),f(i,a),c||(d=[L(t,"input",n[86]),L(t,"keydown",n[87]),L(o,"click",n[64]),L(a,"click",n[63])],c=!0)},p(_,h){h[0]&131072&&t.value!==_[17]&&de(t,_[17])},d(_){_&&y(e),c=!1,re(d)}}}function cs(n){let e,t=ne(n[7]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',r(e,"class","empty-state svelte-9y78h7")},m(t,l){b(t,e,l)},p:J,d(t){t&&y(e)}}}function $t(n){let e,t,l=n[140].title+"",i,o,s,a=ye(n[140].createdAt)+"",c,d,_,h;function p(){return n[88](n[140])}return{c(){e=u("div"),t=u("div"),i=F(l),o=C(),s=u("div"),c=F(a),d=C(),r(t,"class","note-card-title svelte-9y78h7"),r(s,"class","note-card-date svelte-9y78h7"),r(e,"class","note-card svelte-9y78h7")},m(v,k){b(v,e,k),f(e,t),f(t,i),f(e,o),f(e,s),f(s,c),f(e,d),_||(h=L(e,"click",p),_=!0)},p(v,k){n=v,k[0]&128&&l!==(l=n[140].title+"")&&q(i,l),k[0]&128&&a!==(a=ye(n[140].createdAt)+"")&&q(c,a)},d(v){v&&y(e),_=!1,h()}}}function el(n){let e,t,l,i=ne(n[7].slice(0,5)),o=[];for(let s=0;sn[106].call(v)),r(_,"class","form-group svelte-9y78h7"),r(w,"class","btn btn-primary svelte-9y78h7"),r(j,"class","btn svelte-9y78h7"),r(g,"class","modal-actions svelte-9y78h7"),r(t,"class","modal svelte-9y78h7"),r(e,"class","modal-overlay svelte-9y78h7")},m(N,O){b(N,e,O),f(e,t),f(t,l),f(t,i),f(t,o),f(o,s),f(o,a),f(o,c),de(c,n[14]),f(t,d),f(t,_),f(_,h),f(_,p),f(_,v);for(let M=0;M⚒ Верстак ',i=C(),o=u("nav"),s=u("div"),a=u("div"),a.textContent="Разделы",c=C();for(let z=0;z{B[ue]=null}),ve(),A=B[I],A?A.p(z,oe):(A=B[I]=te[I](z),A.c()),le(A,1),A.m(g,P)),!z[8]&&!z[5]?Q?Q.p(z,oe):(Q=sl(z),Q.c(),Q.m(g,N)):Q&&(Q.d(1),Q=null),z[13]?K?K.p(z,oe):(K=ol(z),K.c(),K.m(g,O)):K&&(K.d(1),K=null),z[21]&&z[20]?U?U.p(z,oe):(U=cl(z),U.c(),U.m(g,M)):U&&(U.d(1),U=null),z[32]?x?(x.p(z,oe),oe[1]&2&&le(x,1)):(x=fl(z),x.c(),le(x,1),x.m(g,null)):x&&(he(),se(x,1,1,()=>{x=null}),ve())},i(z){D||(le(A),le(x),D=!0)},o(z){se(A),se(x),D=!1},d(z){z&&y(e),me(V,z),E&&E.d(),W.d(),X&&X.d(),B[I].d(),Q&&Q.d(),K&&K.d(),U&&U.d(),x&&x.d()}}}function $(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function ye(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}const ul=n=>n.id!=="today"&&n.id!=="inbox";function us(n,e,t){let l=[],i=[],o="",s="",a="",c=null,d="overview",_=[],h=null,p=[],v=[],k=[],g="",w="",T=!1,j="",H="clients",I=!1,A="",P=!0,N=!1,O=null,M=!1,D="",Z=!1,V=null,E=[],Y=[],ee=null,W="",X=!1,te="",B={items:[],mode:"copy"},G=[],Q=[],K=!1,U="",x="",z=!1,oe="Удалить",ue=null,ce=null;const Fe=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let We=null;_l(async()=>{try{t(2,o=await $("VerstakVersion")||"verstak-gui/v2"),t(0,l=await $("ListSections")||[])}catch(m){t(3,s=String(m)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Jl),We=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",ut),t(18,P=!1)}),hl(()=>{We&&We(),window.removeEventListener("keydown",ut)});async function Re(m){t(4,a=m),t(5,c=null),t(6,d="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,k=[]),t(13,T=!1),t(3,s="");try{t(1,i=await $("ListNodesBySection",m)||[])}catch(S){t(3,s=String(S)),t(1,i=[])}}async function $e(m){t(5,c=m),t(6,d="overview"),t(7,_=[]),p=[],t(9,v=[]),t(10,k=[]),t(25,Y=[]),t(24,E=[]),t(23,V=null),t(26,ee=null),t(27,W=""),t(31,G=[]),Q=[],t(8,h=null),t(13,T=!1),t(16,I=!1),t(3,s=""),await et(m.id)}async function et(m){try{t(7,_=await $("ListNotes",m)||[])}catch{}try{p=await $("ListFiles",m)||[]}catch{}try{t(9,v=await $("ListActions",m)||[])}catch{}try{t(10,k=await $("ListWorklog",m)||[])}catch{}}async function ae(m){t(22,Z=!0);try{let S=await $("ListItems",m)||[];S.sort((ie,fe)=>ie.type!==fe.type?ie.type==="folder"?-1:1:(ie.name||"").localeCompare(fe.name||"")),t(25,Y=S)}catch{t(25,Y=[])}t(22,Z=!1)}async function tt(m){if(c){try{const S=await $("GetNodeDetail",m);S&&t(24,E=[...E,{id:m,name:S.title}])}catch{t(24,E=[...E,{id:m,name:"..."}])}t(23,V=m),await ae(m)}}function Sl(){if(E.length<2)t(24,E=[]),t(23,V=null),ae(c.id);else{const m=E[E.length-2];t(24,E=E.slice(0,-1)),t(23,V=m.id),ae(m.id)}}function lt(m){const S=E[m];t(24,E=E.slice(0,m+1)),t(23,V=S.id),ae(S.id)}async function nt(m){t(26,ee=m),t(27,W=""),t(29,te=""),t(28,X=!0);try{ai(m)?t(27,W=await $("GetFileBase64",m.fileId)||""):fi(m)&&t(27,W=await $("ReadFileText",m.fileId)||"")}catch(S){t(29,te=String(S))}t(28,X=!1)}function Tl(){t(26,ee=null),t(27,W=""),t(29,te="")}async function Dl(){const m=prompt("Введите имя файла:");if(!(!m||!m.trim()))try{const S=V||c.id;await $("CreateEmptyFile",S,m.trim()),await ae(S)}catch(S){t(3,s=String(S))}}async function it(m){try{await $("DuplicateNode",m);const S=V||c.id;await ae(S)}catch(S){t(3,s=String(S))}}function st(m){const S=prompt("Новое имя:");!S||!S.trim()||Ll(m,S.trim())}async function Ll(m,S){try{await $("RenameNode",m,S);const ie=V||c.id;await ae(ie)}catch(ie){t(3,s=String(ie))}}function ot(m){t(30,B={items:[m],mode:"cut"})}function rt(m){t(30,B={items:[m],mode:"copy"})}async function ct(){if(B.items.length===0)return;const m=V||c.id;try{if(B.mode==="copy")for(const S of B.items)await $("DuplicateNode",S);else for(const S of B.items)await $("MoveNode",S,m);t(30,B={items:[],mode:"copy"}),await ae(m)}catch(S){t(3,s=String(S))}}function at(m){G.includes(m)?t(31,G=G.filter(S=>S!==m)):t(31,G=[...G,m])}function ft(m){t(31,G=[m])}function Nl(){t(31,G=Y.map(m=>m.id))}function Ke(m){return m.length>0?m:Y.map(S=>S.id)}async function El(){var ie;const m=Ke(G),S=m.length===1&&((ie=Y.find(fe=>fe.id===m[0]))==null?void 0:ie.type)==="folder"?"папку":`файлов (${m.length})`;Oe({title:"Удаление",message:`Удалить ${S}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{for(const Je of m)try{await $("DeleteFileOrFolder",Je)}catch(Dn){t(3,s=String(Dn))}t(31,G=[]);const fe=V||c.id;await ae(fe)}})}function Fl(){const m=Ke(G);t(30,B={items:m,mode:"cut"}),t(31,G=[])}function Ol(){const m=Ke(G);t(30,B={items:m,mode:"copy"}),t(31,G=[])}function Il(m,S){const ie=G.includes(S)?G:[S];Q=ie,m.dataTransfer.effectAllowed="move",m.dataTransfer.setData("text/plain",ie.join(","))}function Pl(m,S){const ie=Y.find(fe=>fe.id===S);ie&&ie.type==="folder"&&(m.preventDefault(),m.dataTransfer.dropEffect="move")}async function jl(m,S){if(m.preventDefault(),Q.length!==0){for(const ie of Q)try{await $("MoveNode",ie,S)}catch(fe){t(3,s=String(fe))}Q=[],t(31,G=[]),await ae(V||c.id)}}function ut(m){d==="files"&&(m.target.tagName==="INPUT"||m.target.tagName==="TEXTAREA"||(m.ctrlKey||m.metaKey?m.key==="c"?(m.preventDefault(),Ol()):m.key==="x"?(m.preventDefault(),Fl()):m.key==="v"?(m.preventDefault(),ct()):m.key==="a"&&(m.preventDefault(),Nl()):(m.key==="Delete"||m.key==="Backspace")&&G.length>0&&(m.preventDefault(),El())))}function Oe(m){t(33,U=m.title||"Подтверждение"),t(34,x=m.message||""),t(35,z=m.danger!==void 0?m.danger:!0),t(36,oe=m.confirmText||"Удалить"),ue=m.onConfirm||null,ce=m.onCancel||null,t(32,K=!0)}function dt(){t(32,K=!1),ue=null,ce=null}function Bl(){ue&&ue(),dt()}function Al(){ce&&ce(),dt()}function Hl(){t(13,T=!0),t(14,j=""),t(15,H=a||"clients")}function zl(){t(13,T=!1),t(14,j="")}async function mt(){if(j.trim())try{const m=await $("CreateNode","","case",j.trim(),H);t(13,T=!1),t(14,j=""),await Re(H)}catch(m){t(3,s=String(m))}}function pt(){t(16,I=!0),t(17,A="")}function Vl(){t(16,I=!1),t(17,A="")}async function _t(){if(!(!A.trim()||!c))try{const m=await $("CreateNote",c.id,A.trim());t(7,_=[..._,m&&m.id?m:{id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()}]),t(16,I=!1),t(17,A="")}catch{const S={id:Date.now().toString(),title:A.trim(),createdAt:new Date().toISOString()};t(7,_=[..._,S]),t(16,I=!1),t(17,A="")}}async function qe(m){if(h&&h.dirty){Oe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:async()=>{await ht(m)}});return}await ht(m)}async function ht(m){try{const S=await $("ReadNote",m.id);t(8,h={id:m.id,title:m.title,content:S||"",dirty:!1})}catch{t(8,h={id:m.id,title:m.title,content:"# "+m.title+`
-
-`,dirty:!1})}}function Wl(){if(h&&h.dirty){Oe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:()=>{t(8,h=null)}});return}t(8,h=null)}function Rl(m){h&&(t(8,h.content=m.target.value,h),t(8,h.dirty=!0,h))}async function Kl(){if(h)try{await $("SaveNote",h.id,h.content),t(8,h.dirty=!1,h)}catch{t(8,h.dirty=!1,h)}}async function ql(){const m=parseInt(g,10);if(!(!w.trim()||isNaN(m)||m<=0||!c)){try{const S=await $("CreateWorklog",c.id,w.trim(),m);t(10,k=[...k,S&&S.id?S:{id:Date.now().toString(),nodeId:c.id,summary:w.trim(),minutes:m,createdAt:new Date().toISOString()}])}catch{t(10,k=[...k,{id:Date.now().toString(),nodeId:c.id,summary:w.trim(),minutes:m,createdAt:new Date().toISOString()}])}t(12,w=""),t(11,g="")}}async function vt(){const m=await $("PickFile");m&&await Ge(c.id,m)}async function Gl(){const m=await $("PickDirectory");m&&await Ge(c.id,m)}async function Ge(m,S){t(19,N=!0);try{const ie=await $("PreviewImport",S);t(20,O=ie),D=S,t(21,M=!0)}catch(ie){t(3,s=String(ie))}t(19,N=!1)}async function Ue(m){try{const S=m==="copy"?await $("AddPathCopy",c.id,D):await $("AddPathLink",c.id,D);t(21,M=!1),t(20,O=null),t(24,E=[]),t(23,V=null),await Promise.all([et(c.id),ae(c.id)])}catch(S){t(3,s=String(S))}}function Ul(){t(21,M=!1),t(20,O=null)}async function yt({id:m,type:S}){Oe({title:"Удаление",message:`Удалить ${S==="folder"?"папку":"файл"}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{try{await $("DeleteFileOrFolder",m),p=p.filter(Je=>Je.nodeId!==m);const fe=V||c.id;await ae(fe)}catch(fe){t(3,s=String(fe))}}})}async function Jl(m){if(!m||m.length===0)return;if(!c){t(3,s="Сначала выберите дело для добавления файлов");return}const S=m[0];await Ge(c.id,S)}function Xl(m){return d===m?"tab active":"tab"}const Zl=m=>Re(m.id),Yl=m=>$e(m),Ql=()=>t(3,s=""),xl=()=>t(3,s="");function $l(){h.content=this.value,t(8,h)}const en=m=>{t(6,d=m.id),m.id==="files"&&c&&Y.length===0&&!V&&ae(c.id)},tn=()=>{t(6,d="notes"),pt()},ln=()=>{t(6,d="files"),vt()},nn=()=>t(6,d="worklog"),sn=m=>qe(m);function on(){A=this.value,t(17,A)}const rn=m=>m.key==="Enter"&&_t(),cn=m=>qe(m),an=m=>{const S=m.detail;S===0?(t(24,E=[]),t(23,V=null),ae(c.id)):lt(S-1)},fn=m=>tt(m.detail),un=m=>nt(m.detail),dn=m=>$("OpenFile",m.detail),mn=m=>yt(m.detail),pn=m=>st(m.detail.id),_n=m=>it(m.detail),hn=m=>ot(m.detail),vn=m=>rt(m.detail),yn=m=>ft(m.detail),bn=m=>at(m.detail),kn=m=>$("OpenFile",m.detail),gn=m=>$("RunAction",m.id);function wn(){w=this.value,t(12,w)}function Cn(){g=pl(this.value),t(11,g)}function Mn(){j=this.value,t(14,j)}const Sn=m=>m.key==="Enter"&&mt();function Tn(){H=In(this),t(15,H),t(0,l)}return[l,i,o,s,a,c,d,_,h,v,k,g,w,T,j,H,I,A,P,N,O,M,Z,V,E,Y,ee,W,X,te,B,G,K,U,x,z,oe,Fe,Re,$e,ae,tt,Sl,lt,nt,Tl,Dl,it,st,ot,rt,ct,at,ft,Il,Pl,jl,Bl,Al,Hl,zl,mt,pt,Vl,_t,qe,Wl,Rl,Kl,ql,vt,Gl,Ue,Ul,yt,Xl,Zl,Yl,Ql,xl,$l,en,tn,ln,nn,sn,on,rn,cn,an,fn,un,dn,mn,pn,_n,hn,vn,yn,bn,kn,gn,wn,Cn,Mn,Sn,Tn,()=>Ue("copy"),()=>Ue("link")]}class ds extends Le{constructor(e){super(),De(this,e,us,fs,Te,{},null,[-1,-1,-1,-1,-1,-1])}}new ds({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-rybDIgHs.js b/cmd/verstak-gui/frontend-dist/assets/main-rybDIgHs.js
deleted file mode 100644
index 3549be9..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-rybDIgHs.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var Tl=Object.defineProperty;var Al=(n,e,t)=>e in n?Tl(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ie=(n,e,t)=>Al(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const r of s.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&l(r)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function l(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function q(){}function Dt(n){return n()}function Xe(){return Object.create(null)}function ne(n){n.forEach(Dt)}function Vt(n){return typeof n=="function"}function Ce(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Ne;function Se(n,e){return n===e?!0:(Ne||(Ne=document.createElement("a")),Ne.href=e,n===Ne.href)}function Hl(n){return Object.keys(n).length===0}function Il(n){return n??""}function a(n,e){n.appendChild(e)}function v(n,e,t){n.insertBefore(e,t||null)}function m(n){n.parentNode&&n.parentNode.removeChild(n)}function ce(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function Fe(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function Ve(n){return function(e){e.target===this&&n.call(this,e)}}function o(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Wt(n){return n===""?null:+n}function Bl(n){return Array.from(n.childNodes)}function V(n,e){e=""+e,n.data!==e&&(n.data=e)}function re(n,e){n.value=e??""}function Ye(n,e,t){for(let l=0;l{const i=n.$$.callbacks[e];if(i){const s=Vl(e,t,{cancelable:l});return i.slice().forEach(r=>{r.call(n,s)}),!s.defaultPrevented}return!0}}const ke=[],Qe=[];let be=[];const xe=[],Wl=Promise.resolve();let De=!1;function ql(){De||(De=!0,Wl.then(Gt))}function ze(n){be.push(n)}const Be=new Set;let ve=0;function Gt(){if(ve!==0)return;const n=je;do{try{for(;ven.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),be=e}const Ee=new Set;let fe;function de(){fe={r:0,c:[],p:fe}}function pe(){fe.r||ne(fe.c),fe=fe.p}function ee(n,e){n&&n.i&&(Ee.delete(n),n.i(e))}function le(n,e,t,l){if(n&&n.o){if(Ee.has(n))return;Ee.add(n),fe.c.push(()=>{Ee.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function $(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function Kl(n,e){le(n,1,1,()=>{e.delete(n.key)})}function Jl(n,e,t,l,i,s,r,c,u,d,_,k){let p=n.length,b=s.length,h=p;const w={};for(;h--;)w[n[h].key]=h;const y=[],N=new Map,A=new Map,W=[];for(h=b;h--;){const L=k(i,s,h),I=t(L);let E=r.get(I);E?W.push(()=>E.p(L,e)):(E=d(I,L),E.c()),N.set(I,y[h]=E),I in w&&A.set(I,Math.abs(h-w[I]))}const z=new Set,S=new Set;function M(L){ee(L,1),L.m(c,_),r.set(L.key,L),_=L.first,b--}for(;p&&b;){const L=y[b-1],I=n[p-1],E=L.key,P=I.key;L===I?(_=L.first,p--,b--):N.has(P)?!r.has(E)||z.has(E)?M(L):S.has(P)?p--:A.get(E)>A.get(P)?(S.add(E),M(L)):(z.add(P),p--):(u(I,r),p--)}for(;p--;){const L=n[p];N.has(L.key)||u(L,r)}for(;b;)M(y[b-1]);return ne(W),y}function he(n){n&&n.c()}function _e(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),ze(()=>{const s=n.$$.on_mount.map(Dt).filter(Vt);n.$$.on_destroy?n.$$.on_destroy.push(...s):ne(s),n.$$.on_mount=[]}),i.forEach(ze)}function me(n,e){const t=n.$$;t.fragment!==null&&(Gl(t.after_update),ne(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Ul(n,e){n.$$.dirty[0]===-1&&(ke.push(n),ql(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const h=b.length?b[0]:p;return d.ctx&&i(d.ctx[k],d.ctx[k]=h)&&(!d.skip_bound&&d.bound[k]&&d.bound[k](h),_&&Ul(n,k)),p}):[],d.update(),_=!0,ne(d.before_update),d.fragment=l?l(d.ctx):!1,e.target){if(e.hydrate){const k=Bl(e.target);d.fragment&&d.fragment.l(k),k.forEach(m)}else d.fragment&&d.fragment.c();e.intro&&ee(n.$$.fragment),_e(n,e.target,e.anchor),Gt()}ye(u)}class Le{constructor(){Ie(this,"$$");Ie(this,"$$set")}$destroy(){me(this,1),this.$destroy=q}$on(e,t){if(!Vt(t))return q;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!Hl(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Zl="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Zl);function Xl(n){let e,t;return{c(){e=D("path"),t=D("polyline"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8")},m(l,i){v(l,e,i),v(l,t,i)},d(l){l&&(m(e),m(t))}}}function Yl(n){let e,t,l,i,s;return{c(){e=D("path"),t=D("polyline"),l=D("line"),i=D("line"),s=D("polyline"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","16"),o(l,"y1","13"),o(l,"x2","8"),o(l,"y2","13"),o(i,"x1","16"),o(i,"y1","17"),o(i,"x2","8"),o(i,"y2","17"),o(s,"points","10 9 9 9 8 9")},m(r,c){v(r,e,c),v(r,t,c),v(r,l,c),v(r,i,c),v(r,s,c)},d(r){r&&(m(e),m(t),m(l),m(i),m(s))}}}function Ql(n){let e,t;return{c(){e=D("polyline"),t=D("polyline"),o(e,"points","16 18 22 12 16 6"),o(t,"points","8 6 2 12 8 18")},m(l,i){v(l,e,i),v(l,t,i)},d(l){l&&(m(e),m(t))}}}function xl(n){let e,t,l,i;return{c(){e=D("path"),t=D("polyline"),l=D("line"),i=D("rect"),o(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),o(t,"points","7 3 12 8 17 3"),o(l,"x1","3"),o(l,"y1","8"),o(l,"x2","21"),o(l,"y2","8"),o(i,"x","10"),o(i,"y","12"),o(i,"width","4"),o(i,"height","4"),o(i,"rx","1")},m(s,r){v(s,e,r),v(s,t,r),v(s,l,r),v(s,i,r)},d(s){s&&(m(e),m(t),m(l),m(i))}}}function $l(n){let e,t,l,i,s;return{c(){e=D("path"),t=D("polyline"),l=D("line"),i=D("line"),s=D("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","9"),o(l,"y1","12"),o(l,"x2","15"),o(l,"y2","12"),o(i,"x1","9"),o(i,"y1","15"),o(i,"x2","13"),o(i,"y2","15"),o(s,"x1","12"),o(s,"y1","15"),o(s,"x2","12"),o(s,"y2","18")},m(r,c){v(r,e,c),v(r,t,c),v(r,l,c),v(r,i,c),v(r,s,c)},d(r){r&&(m(e),m(t),m(l),m(i),m(s))}}}function en(n){let e,t,l,i,s,r;return{c(){e=D("path"),t=D("polyline"),l=D("line"),i=D("line"),s=D("line"),r=D("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","8"),o(l,"y1","12"),o(l,"x2","16"),o(l,"y2","12"),o(i,"x1","8"),o(i,"y1","16"),o(i,"x2","16"),o(i,"y2","16"),o(s,"x1","8"),o(s,"y1","14"),o(s,"x2","12"),o(s,"y2","14"),o(r,"x1","12"),o(r,"y1","12"),o(r,"x2","12"),o(r,"y2","18")},m(c,u){v(c,e,u),v(c,t,u),v(c,l,u),v(c,i,u),v(c,s,u),v(c,r,u)},d(c){c&&(m(e),m(t),m(l),m(i),m(s),m(r))}}}function tn(n){let e,t,l,i;return{c(){e=D("path"),t=D("polyline"),l=D("line"),i=D("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","16"),o(l,"y1","13"),o(l,"x2","8"),o(l,"y2","13"),o(i,"x1","16"),o(i,"y1","17"),o(i,"x2","8"),o(i,"y2","17")},m(s,r){v(s,e,r),v(s,t,r),v(s,l,r),v(s,i,r)},d(s){s&&(m(e),m(t),m(l),m(i))}}}function ln(n){let e,t,l,i,s;return{c(){e=D("path"),t=D("polyline"),l=D("line"),i=D("line"),s=D("line"),o(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),o(t,"points","14 2 14 8 20 8"),o(l,"x1","8"),o(l,"y1","12"),o(l,"x2","16"),o(l,"y2","12"),o(i,"x1","8"),o(i,"y1","16"),o(i,"x2","16"),o(i,"y2","16"),o(s,"x1","8"),o(s,"y1","14"),o(s,"x2","12"),o(s,"y2","14")},m(r,c){v(r,e,c),v(r,t,c),v(r,l,c),v(r,i,c),v(r,s,c)},d(r){r&&(m(e),m(t),m(l),m(i),m(s))}}}function nn(n){let e,t,l;return{c(){e=D("path"),t=D("circle"),l=D("circle"),o(e,"d","M9 18V5l12-2v13"),o(t,"cx","6"),o(t,"cy","18"),o(t,"r","3"),o(l,"cx","18"),o(l,"cy","16"),o(l,"r","3")},m(i,s){v(i,e,s),v(i,t,s),v(i,l,s)},d(i){i&&(m(e),m(t),m(l))}}}function sn(n){let e,t;return{c(){e=D("rect"),t=D("polyline"),o(e,"x","2"),o(e,"y","4"),o(e,"width","20"),o(e,"height","16"),o(e,"rx","2"),o(t,"points","10 9 16 12 10 15 10 9")},m(l,i){v(l,e,i),v(l,t,i)},d(l){l&&(m(e),m(t))}}}function rn(n){let e,t,l;return{c(){e=D("rect"),t=D("circle"),l=D("polyline"),o(e,"x","3"),o(e,"y","3"),o(e,"width","18"),o(e,"height","18"),o(e,"rx","2"),o(e,"ry","2"),o(t,"cx","8.5"),o(t,"cy","8.5"),o(t,"r","1.5"),o(l,"points","21 15 16 10 5 21")},m(i,s){v(i,e,s),v(i,t,s),v(i,l,s)},d(i){i&&(m(e),m(t),m(l))}}}function on(n){let e;return{c(){e=D("path"),o(e,"d","M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z")},m(t,l){v(t,e,l)},d(t){t&&m(e)}}}function cn(n){let e;function t(s,r){return s[0]==="folder"?on:s[0]==="image"?rn:s[0]==="video"?sn:s[0]==="audio"?nn:s[0]==="pdf"?ln:s[0]==="document"?tn:s[0]==="spreadsheet"?en:s[0]==="presentation"?$l:s[0]==="archive"?xl:s[0]==="code"?Ql:s[0]==="text"?Yl:Xl}let l=t(n),i=l(n);return{c(){e=D("svg"),i.c(),o(e,"width",n[1]),o(e,"height",n[1]),o(e,"viewBox","0 0 24 24"),o(e,"fill","none"),o(e,"stroke","currentColor"),o(e,"stroke-width","1.5"),o(e,"stroke-linecap","round"),o(e,"stroke-linejoin","round"),o(e,"xmlns","http://www.w3.org/2000/svg")},m(s,r){v(s,e,r),i.m(e,null)},p(s,[r]){l!==(l=t(s))&&(i.d(1),i=l(s),i&&(i.c(),i.m(e,null))),r&2&&o(e,"width",s[1]),r&2&&o(e,"height",s[1])},i:q,o:q,d(s){s&&m(e),i.d()}}}function un(n,e,t){let{kind:l="generic"}=e,{size:i=20}=e;return n.$$set=s=>{"kind"in s&&t(0,l=s.kind),"size"in s&&t(1,i=s.size)},[l,i]}class Kt extends Le{constructor(e){super(),Me(this,e,un,cn,Ce,{kind:0,size:1})}}function Pe(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const an={"image/jpeg":"JPEG image","image/png":"PNG image","image/gif":"GIF image","image/webp":"WebP image","image/svg+xml":"SVG image","image/bmp":"BMP image","image/tiff":"TIFF image","image/avif":"AVIF image","application/pdf":"PDF document","application/msword":"Word document","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word document","application/vnd.ms-excel":"Excel spreadsheet","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Excel spreadsheet","application/vnd.ms-powerpoint":"PowerPoint presentation","application/vnd.openxmlformats-officedocument.presentationml.presentation":"PowerPoint presentation","application/zip":"ZIP archive","application/gzip":"GZIP archive","application/x-tar":"TAR archive","application/x-7z-compressed":"7z archive","application/x-rar-compressed":"RAR archive","text/plain":"Text file","text/html":"HTML file","text/css":"CSS file","text/javascript":"JavaScript file","application/json":"JSON file","application/xml":"XML file","application/x-yaml":"YAML file","application/octet-stream":"Binary file","application/x-msdos-program":"Executable","inode/directory":"Folder"};function Oe(n){return n?an[n]||n:"Unknown"}function Jt(n){if(n.type==="folder")return"folder";const e=(n.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const l=(n.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(l)?"code":"generic"}const fn=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],dn=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],pn=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],_n=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function Ut(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return fn.includes(e)||_n.includes(l)}function Zt(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return dn.includes(e)||pn.includes(l)&&l!=="md"&&l!=="markdown"}function Xt(n){return(n.mime||"").toLowerCase().includes("pdf")}function Yt(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function mn(n){return Ut(n)||Xt(n)}function vn(n){return Zt(n)||Yt(n)}function kn(n){let e,t=Pe(n[0].size)+"",l,i,s,r=n[0].mime&&$e(n);return{c(){e=f("span"),l=F(t),i=j(),r&&r.c(),s=ue()},m(c,u){v(c,e,u),a(e,l),v(c,i,u),r&&r.m(c,u),v(c,s,u)},p(c,u){u&1&&t!==(t=Pe(c[0].size)+"")&&V(l,t),c[0].mime?r?r.p(c,u):(r=$e(c),r.c(),r.m(s.parentNode,s)):r&&(r.d(1),r=null)},d(c){c&&(m(e),m(i),m(s)),r&&r.d(c)}}}function bn(n){let e;return{c(){e=f("span"),e.textContent="Folder"},m(t,l){v(t,e,l)},p:q,d(t){t&&m(e)}}}function $e(n){let e,t,l,i=Oe(n[0].mime)+"",s;return{c(){e=f("span"),e.textContent="·",t=j(),l=f("span"),s=F(i),o(e,"class","meta-sep svelte-15klzc3")},m(r,c){v(r,e,c),v(r,t,c),v(r,l,c),a(l,s)},p(r,c){c&1&&i!==(i=Oe(r[0].mime)+"")&&V(s,i)},d(r){r&&(m(e),m(t),m(l))}}}function hn(n){let e,t,l;return{c(){e=f("button"),e.innerHTML=' ',o(e,"class","action-btn svelte-15klzc3"),o(e,"title","Open folder"),o(e,"aria-label","Open folder")},m(i,s){v(i,e,s),t||(l=T(e,"click",Fe(n[3])),t=!0)},p:q,d(i){i&&m(e),t=!1,l()}}}function wn(n){let e,t,l,i,s;return{c(){e=f("button"),e.innerHTML=' ',t=j(),l=f("button"),l.innerHTML=' ',o(e,"class","action-btn svelte-15klzc3"),o(e,"title","Preview"),o(e,"aria-label","Preview"),o(l,"class","action-btn svelte-15klzc3"),o(l,"title","Open in external program"),o(l,"aria-label","Open externally")},m(r,c){v(r,e,c),v(r,t,c),v(r,l,c),i||(s=[T(e,"click",Fe(n[3])),T(l,"click",Fe(n[5]))],i=!0)},p:q,d(r){r&&(m(e),m(t),m(l)),i=!1,ne(s)}}}function gn(n){let e,t,l,i,s,r,c=n[0].name+"",u,d,_,k,p,b,h,w,y,N,A,W;l=new Kt({props:{kind:n[1],size:22}});function z(P,G){return P[2]?bn:kn}let M=z(n)(n);function L(P,G){return P[2]?hn:wn}let E=L(n)(n);return{c(){e=f("div"),t=f("div"),he(l.$$.fragment),i=j(),s=f("div"),r=f("div"),u=F(c),_=j(),k=f("div"),M.c(),p=j(),b=f("div"),E.c(),h=j(),w=f("button"),w.innerHTML=' ',o(t,"class","file-row-icon svelte-15klzc3"),o(r,"class","file-row-name svelte-15klzc3"),o(r,"title",d=n[0].name),o(k,"class","file-row-meta svelte-15klzc3"),o(s,"class","file-row-body svelte-15klzc3"),o(w,"class","action-btn action-btn-danger svelte-15klzc3"),o(w,"title","Delete"),o(w,"aria-label","Delete"),o(b,"class","file-row-actions svelte-15klzc3"),o(e,"class","file-row svelte-15klzc3"),o(e,"role","button"),o(e,"tabindex","0"),o(e,"aria-label",y=n[2]?`Open folder ${n[0].name}`:`Preview ${n[0].name}`)},m(P,G){v(P,e,G),a(e,t),_e(l,t,null),a(e,i),a(e,s),a(s,r),a(r,u),a(s,_),a(s,k),M.m(k,null),a(e,p),a(e,b),E.m(b,null),a(b,h),a(b,w),N=!0,A||(W=[T(w,"click",Fe(n[6])),T(e,"click",n[3]),T(e,"keydown",n[4])],A=!0)},p(P,[G]){(!N||G&1)&&c!==(c=P[0].name+"")&&V(u,c),(!N||G&1&&d!==(d=P[0].name))&&o(r,"title",d),M.p(P,G),E.p(P,G),(!N||G&1&&y!==(y=P[2]?`Open folder ${P[0].name}`:`Preview ${P[0].name}`))&&o(e,"aria-label",y)},i(P){N||(ee(l.$$.fragment,P),N=!0)},o(P){le(l.$$.fragment,P),N=!1},d(P){P&&m(e),me(l),M.d(),E.d(),A=!1,ne(W)}}}function yn(n,e,t){let{item:l}=e;const i=qe(),s=Jt(l),r=l.type==="folder";function c(){r?i("navigate",l.id):i("preview",l)}function u(k){k.key==="Enter"&&c()}function d(){i("openExternal",l.fileId)}function _(){i("delete",l.id)}return n.$$set=k=>{"item"in k&&t(0,l=k.item)},[l,s,r,c,u,d,_]}class jn extends Le{constructor(e){super(),Me(this,e,yn,gn,Ce,{item:0})}}function et(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function Cn(n){let e;return{c(){e=f("span"),e.textContent="/",o(e,"class","sep svelte-csi2lb")},m(t,l){v(t,e,l)},d(t){t&&m(e)}}}function Mn(n){let e,t=n[4].name+"",l,i,s;function r(){return n[2](n[6])}return{c(){e=f("button"),l=F(t),o(e,"class","crumb crumb--link svelte-csi2lb")},m(c,u){v(c,e,u),a(e,l),i||(s=T(e,"click",r),i=!0)},p(c,u){n=c,u&1&&t!==(t=n[4].name+"")&&V(l,t)},d(c){c&&m(e),i=!1,s()}}}function Ln(n){let e,t=n[4].name+"",l;return{c(){e=f("span"),l=F(t),o(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){v(i,e,s),a(e,l)},p(i,s){s&1&&t!==(t=i[4].name+"")&&V(l,t)},d(i){i&&m(e)}}}function tt(n){let e,t,l=n[6]>0&&Cn();function i(c,u){return c[6]===c[0].length-1?Ln:Mn}let s=i(n),r=s(n);return{c(){l&&l.c(),e=j(),r.c(),t=ue()},m(c,u){l&&l.m(c,u),v(c,e,u),r.m(c,u),v(c,t,u)},p(c,u){s===(s=i(c))&&r?r.p(c,u):(r.d(1),r=s(c),r&&(r.c(),r.m(t.parentNode,t)))},d(c){c&&(m(e),m(t)),l&&l.d(c),r.d(c)}}}function Nn(n){let e,t=$(n[0]),l=[];for(let i=0;is(c);return n.$$set=c=>{"crumbs"in c&&t(0,l=c.crumbs)},[l,s,r]}class Qt extends Le{constructor(e){super(),Me(this,e,En,Nn,Ce,{crumbs:0})}}function Sn(n){let e,t,l,i,s,r;return{c(){e=f("div"),t=f("p"),t.textContent="Preview is not available for this file type.",l=j(),i=f("button"),i.textContent="Open in external program",o(i,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(c,u){v(c,e,u),a(e,t),a(e,l),a(e,i),s||(r=T(i,"click",n[9]),s=!0)},p:q,d(c){c&&m(e),s=!1,r()}}}function Fn(n){let e,t;function l(r,c){return c&2&&(e=null),e==null&&(e=!!(r[1]&&r[1].startsWith("data:"))),e?Hn:An}let i=l(n,-1),s=i(n);return{c(){s.c(),t=ue()},m(r,c){s.m(r,c),v(r,t,c)},p(r,c){i===(i=l(r,c))&&s?s.p(r,c):(s.d(1),s=i(r),s&&(s.c(),s.m(t.parentNode,t)))},d(r){r&&m(t),s.d(r)}}}function zn(n){let e,t,l;return{c(){e=f("pre"),t=f("code"),l=F(n[1]),o(e,"class","preview-text svelte-1ybaoro")},m(i,s){v(i,e,s),a(e,t),a(t,l)},p(i,s){s&2&&V(l,i[1])},d(i){i&&m(e)}}}function Pn(n){let e,t,l,i;return{c(){e=f("div"),t=f("img"),Se(t.src,l=n[1])||o(t,"src",l),o(t,"alt",i=n[0].name),o(t,"class","preview-image svelte-1ybaoro"),o(e,"class","preview-image-container svelte-1ybaoro")},m(s,r){v(s,e,r),a(e,t)},p(s,r){r&2&&!Se(t.src,l=s[1])&&o(t,"src",l),r&1&&i!==(i=s[0].name)&&o(t,"alt",i)},d(s){s&&m(e)}}}function On(n){let e,t,l,i,s,r,c;return{c(){e=f("div"),t=f("p"),l=F(n[3]),i=j(),s=f("button"),s.textContent="Open in external program",o(s,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(u,d){v(u,e,d),a(e,t),a(t,l),a(e,i),a(e,s),r||(c=T(s,"click",n[9]),r=!0)},p(u,d){d&8&&V(l,u[3])},d(u){u&&m(e),r=!1,c()}}}function Tn(n){let e;return{c(){e=f("div"),e.innerHTML="Loading preview...
",o(e,"class","preview-status svelte-1ybaoro")},m(t,l){v(t,e,l)},p:q,d(t){t&&m(e)}}}function An(n){let e,t,l,i,s,r;return{c(){e=f("div"),t=f("p"),t.textContent="PDF preview is not available in this environment.",l=j(),i=f("button"),i.textContent="Open in external program",o(i,"class","btn btn-sm svelte-1ybaoro"),o(e,"class","preview-status svelte-1ybaoro")},m(c,u){v(c,e,u),a(e,t),a(e,l),a(e,i),s||(r=T(i,"click",n[9]),s=!0)},p:q,d(c){c&&m(e),s=!1,r()}}}function Hn(n){let e,t,l;return{c(){e=f("div"),t=f("embed"),Se(t.src,l=n[1])||o(t,"src",l),o(t,"type","application/pdf"),o(t,"class","preview-pdf svelte-1ybaoro"),o(e,"class","preview-pdf-container svelte-1ybaoro")},m(i,s){v(i,e,s),a(e,t)},p(i,s){s&2&&!Se(t.src,l=i[1])&&o(t,"src",l)},d(i){i&&m(e)}}}function In(n){let e,t,l,i,s,r,c,u=n[0].name+"",d,_,k,p,b=Pe(n[0].size)+"",h,w,y=Oe(n[0].mime)+"",N,A,W,z,S,M,L,I,E,P,G,K;s=new Kt({props:{kind:n[5],size:18}});function X(O,Y){return O[2]?Tn:O[3]?On:O[6]&&O[1]?Pn:O[7]&&O[1]?zn:O[8]?Fn:Sn}let Z=X(n),U=Z(n);return{c(){e=f("div"),t=f("div"),l=f("header"),i=f("div"),he(s.$$.fragment),r=j(),c=f("span"),d=F(u),k=j(),p=f("div"),h=F(b),w=F(" · "),N=F(y),A=j(),W=f("div"),z=f("button"),z.innerHTML=' ',S=j(),M=f("button"),M.innerHTML=' ',L=j(),I=f("div"),U.c(),o(c,"class","preview-name svelte-1ybaoro"),o(c,"title",_=n[0].name),o(i,"class","preview-title svelte-1ybaoro"),o(p,"class","preview-meta svelte-1ybaoro"),o(z,"class","action-btn svelte-1ybaoro"),o(z,"title","Open in external program"),o(z,"aria-label","Open externally"),o(M,"class","action-btn svelte-1ybaoro"),o(M,"title","Close"),o(M,"aria-label","Close preview"),o(W,"class","preview-actions svelte-1ybaoro"),o(l,"class","preview-header svelte-1ybaoro"),o(I,"class","preview-body svelte-1ybaoro"),o(t,"class","modal svelte-1ybaoro"),o(e,"class","overlay svelte-1ybaoro"),o(e,"role","dialog"),o(e,"aria-modal","true"),o(e,"aria-label",E=`Preview: ${n[0].name}`)},m(O,Y){v(O,e,Y),a(e,t),a(t,l),a(l,i),_e(s,i,null),a(i,r),a(i,c),a(c,d),a(l,k),a(l,p),a(p,h),a(p,w),a(p,N),a(l,A),a(l,W),a(W,z),a(W,S),a(W,M),a(t,L),a(t,I),U.m(I,null),P=!0,G||(K=[T(z,"click",n[9]),T(M,"click",n[10]),T(e,"click",Ve(n[11]))],G=!0)},p(O,[Y]){(!P||Y&1)&&u!==(u=O[0].name+"")&&V(d,u),(!P||Y&1&&_!==(_=O[0].name))&&o(c,"title",_),(!P||Y&1)&&b!==(b=Pe(O[0].size)+"")&&V(h,b),(!P||Y&1)&&y!==(y=Oe(O[0].mime)+"")&&V(N,y),Z===(Z=X(O))&&U?U.p(O,Y):(U.d(1),U=Z(O),U&&(U.c(),U.m(I,null))),(!P||Y&1&&E!==(E=`Preview: ${O[0].name}`))&&o(e,"aria-label",E)},i(O){P||(ee(s.$$.fragment,O),P=!0)},o(O){le(s.$$.fragment,O),P=!1},d(O){O&&m(e),me(s),U.d(),G=!1,ne(K)}}}function Bn(n,e,t){let{item:l}=e,{content:i=""}=e,{loading:s=!1}=e,{error:r=""}=e;const c=qe(),u=Jt(l),d=Ut(l)&&i&&i.startsWith("data:"),_=Zt(l)||Yt(l),k=Xt(l);function p(y){y.key==="Escape"&&c("close")}function b(){c("openExternal",l.fileId)}qt(()=>{window.addEventListener("keydown",p)}),Rt(()=>{window.removeEventListener("keydown",p)});const h=()=>c("close"),w=()=>c("close");return n.$$set=y=>{"item"in y&&t(0,l=y.item),"content"in y&&t(1,i=y.content),"loading"in y&&t(2,s=y.loading),"error"in y&&t(3,r=y.error)},[l,i,s,r,c,u,d,_,k,b,h,w]}class Dn extends Le{constructor(e){super(),Me(this,e,Bn,In,Ce,{item:0,content:1,loading:2,error:3})}}function lt(n,e,t){const l=n.slice();return l[93]=e[t],l}function nt(n,e,t){const l=n.slice();return l[96]=e[t],l}function it(n,e,t){const l=n.slice();return l[107]=e[t],l}function st(n,e,t){const l=n.slice();return l[104]=e[t],l}function rt(n,e,t){const l=n.slice();return l[99]=e[t],l}function ot(n,e,t){const l=n.slice();return l[96]=e[t],l}function ct(n,e,t){const l=n.slice();return l[99]=e[t],l}function ut(n,e,t){const l=n.slice();return l[112]=e[t],l}function at(n,e,t){const l=n.slice();return l[93]=e[t],l}function ft(n,e,t){const l=n.slice();return l[117]=e[t],l}function dt(n,e,t){const l=n.slice();return l[120]=e[t],l}function pt(n){let e,t=n[120].label+"",l,i,s,r,c;function u(){return n[56](n[120])}return{c(){e=f("button"),l=F(t),i=j(),o(e,"class",s="nav-item "+(n[4]===n[120].id?"selected":"")+" svelte-1rwjkun")},m(d,_){v(d,e,_),a(e,l),a(e,i),r||(c=T(e,"click",u),r=!0)},p(d,_){n=d,_[0]&1&&t!==(t=n[120].label+"")&&V(l,t),_[0]&17&&s!==(s="nav-item "+(n[4]===n[120].id?"selected":"")+" svelte-1rwjkun")&&o(e,"class",s)},d(d){d&&m(e),r=!1,c()}}}function _t(n){let e,t,l,i,s,r=n[1].length>0&&mt(n),c=$(n[1]),u=[];for(let _=0;_0?r?r.p(_,k):(r=mt(_),r.c(),r.m(t,null)):r&&(r.d(1),r=null),k[0]&34|k[1]&2){c=$(_[1]);let p;for(p=0;p0)return Un;if(c[3])return Jn}let s=i(n),r=s&&s(n);return{c(){e=f("div"),t=f("h2"),t.textContent="Верстак",l=j(),r&&r.c(),o(t,"class","svelte-1rwjkun"),o(e,"class","welcome svelte-1rwjkun")},m(c,u){v(c,e,u),a(e,t),a(e,l),r&&r.m(e,null)},p(c,u){s===(s=i(c))&&r?r.p(c,u):(r&&r.d(1),r=s&&s(c),r&&(r.c(),r.m(e,null)))},i:q,o:q,d(c){c&&m(e),r&&r.d()}}}function Gn(n){let e,t,l,i,s,r,c=$(n[30]),u=[];for(let p=0;p{_[h]=null}),pe()),~i?(s=_[i],s?s.p(p,b):(s=_[i]=d[i](p),s.c()),ee(s,1),s.m(l,null)):s=null)},i(p){r||(ee(s),r=!0)},o(p){le(s),r=!1},d(p){p&&(m(e),m(t),m(l)),ce(u,p),~i&&_[i].d()}}}function Kn(n){let e,t,l,i=n[8].title+"",s,r,c,u,d,_,k,p,b,h,w,y=n[8].dirty&&Pt();return{c(){e=f("div"),t=f("div"),l=f("span"),s=F(i),r=j(),y&&y.c(),c=j(),u=f("div"),d=f("button"),d.textContent="Сохранить",_=j(),k=f("button"),k.textContent="Закрыть",p=j(),b=f("textarea"),o(l,"class","note-title svelte-1rwjkun"),o(d,"class","btn btn-primary svelte-1rwjkun"),o(k,"class","btn svelte-1rwjkun"),o(u,"class","note-editor-actions svelte-1rwjkun"),o(t,"class","note-editor-header svelte-1rwjkun"),o(b,"class","note-textarea svelte-1rwjkun"),o(b,"placeholder","Начните писать..."),o(e,"class","note-editor svelte-1rwjkun")},m(N,A){v(N,e,A),a(e,t),a(t,l),a(l,s),a(t,r),y&&y.m(t,null),a(t,c),a(t,u),a(u,d),a(u,_),a(u,k),a(e,p),a(e,b),re(b,n[8].content),h||(w=[T(d,"click",n[48]),T(k,"click",n[46]),T(b,"input",n[59]),T(b,"input",n[47])],h=!0)},p(N,A){A[0]&256&&i!==(i=N[8].title+"")&&V(s,i),N[8].dirty?y||(y=Pt(),y.c(),y.m(t,c)):y&&(y.d(1),y=null),A[0]&256&&re(b,N[8].content)},i:q,o:q,d(N){N&&m(e),y&&y.d(),h=!1,ne(w)}}}function Jn(n){let e,t,l;return{c(){e=f("p"),t=F("Ошибка: "),l=F(n[3]),o(e,"class","error-text svelte-1rwjkun")},m(i,s){v(i,e,s),a(e,t),a(e,l)},p(i,s){s[0]&8&&V(l,i[3])},d(i){i&&m(e)}}}function Un(n){let e,t,l;return{c(){e=f("p"),e.textContent="Выберите раздел в боковой панели.",t=j(),l=f("p"),l.textContent="Или создайте новое дело кнопкой «+».",o(e,"class","svelte-1rwjkun"),o(l,"class","hint svelte-1rwjkun")},m(i,s){v(i,e,s),v(i,t,s),v(i,l,s)},p:q,d(i){i&&(m(e),m(t),m(l))}}}function Zn(n){let e;return{c(){e=f("p"),e.textContent="Загрузка...",o(e,"class","svelte-1rwjkun")},m(t,l){v(t,e,l)},p:q,d(t){t&&m(e)}}}function wt(n){let e,t=n[112].label+"",l,i,s;function r(){return n[60](n[112])}return{c(){e=f("button"),l=F(t),o(e,"class",Il(n[55](n[112].id))+" svelte-1rwjkun")},m(c,u){v(c,e,u),a(e,l),i||(s=T(e,"click",r),i=!0)},p(c,u){n=c},d(c){c&&m(e),i=!1,s()}}}function Xn(n){let e;return{c(){e=f("div"),e.innerHTML='Активность появится позже
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){v(t,e,l)},p:q,i:q,o:q,d(t){t&&m(e)}}}function Yn(n){let e,t,l,i,s,r,c,u,d,_,k,p;function b(y,N){return y[10].length===0?li:ti}let h=b(n),w=h(n);return{c(){e=f("div"),t=f("div"),l=f("input"),i=j(),s=f("input"),r=j(),c=f("button"),u=F("Записать"),_=j(),w.c(),o(l,"type","text"),o(l,"placeholder","Что сделано"),o(l,"class","svelte-1rwjkun"),o(s,"type","number"),o(s,"placeholder","Мин"),o(s,"min","1"),o(s,"class","svelte-1rwjkun"),o(c,"class","btn btn-primary svelte-1rwjkun"),c.disabled=d=!n[12].trim()||!n[11],o(t,"class","worklog-form svelte-1rwjkun"),o(e,"class","worklog-tab svelte-1rwjkun")},m(y,N){v(y,e,N),a(e,t),a(t,l),re(l,n[12]),a(t,i),a(t,s),re(s,n[11]),a(t,r),a(t,c),a(c,u),a(e,_),w.m(e,null),k||(p=[T(l,"input",n[75]),T(s,"input",n[76]),T(c,"click",n[49])],k=!0)},p(y,N){N[0]&4096&&l.value!==y[12]&&re(l,y[12]),N[0]&2048&&Wt(s.value)!==y[11]&&re(s,y[11]),N[0]&6144&&d!==(d=!y[12].trim()||!y[11])&&(c.disabled=d),h===(h=b(y))&&w?w.p(y,N):(w.d(1),w=h(y),w&&(w.c(),w.m(e,null)))},i:q,o:q,d(y){y&&m(e),w.d(),k=!1,ne(p)}}}function Qn(n){let e;function t(s,r){return s[9].length===0?ii:ni}let l=t(n),i=l(n);return{c(){i.c(),e=ue()},m(s,r){i.m(s,r),v(s,e,r)},p(s,r){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},i:q,o:q,d(s){s&&m(e),i.d(s)}}}function xn(n){let e,t,l,i,s,r,c,u,d,_,k,p,b,h,w,y;const N=[ri,si],A=[];function W(M,L){return M[22]?0:1}d=W(n),_=A[d]=N[d](n);let z=n[19]&&!n[21]&&Ct(),S=n[26]&&Mt(n);return{c(){e=f("div"),t=f("div"),l=f("button"),i=F("+ Добавить файл"),s=j(),r=f("button"),c=F("+ Добавить папку"),u=j(),_.c(),k=j(),z&&z.c(),p=j(),S&&S.c(),b=ue(),o(l,"class","btn btn-primary svelte-1rwjkun"),l.disabled=n[19],o(r,"class","btn svelte-1rwjkun"),r.disabled=n[19],o(t,"class","tab-toolbar svelte-1rwjkun"),o(e,"class","files-tab svelte-1rwjkun")},m(M,L){v(M,e,L),a(e,t),a(t,l),a(l,i),a(t,s),a(t,r),a(r,c),a(e,u),A[d].m(e,null),a(e,k),z&&z.m(e,null),v(M,p,L),S&&S.m(M,L),v(M,b,L),h=!0,w||(y=[T(l,"click",n[50]),T(r,"click",n[51])],w=!0)},p(M,L){(!h||L[0]&524288)&&(l.disabled=M[19]),(!h||L[0]&524288)&&(r.disabled=M[19]);let I=d;d=W(M),d===I?A[d].p(M,L):(de(),le(A[I],1,1,()=>{A[I]=null}),pe(),_=A[d],_?_.p(M,L):(_=A[d]=N[d](M),_.c()),ee(_,1),_.m(e,k)),M[19]&&!M[21]?z||(z=Ct(),z.c(),z.m(e,null)):z&&(z.d(1),z=null),M[26]?S?(S.p(M,L),L[0]&67108864&&ee(S,1)):(S=Mt(M),S.c(),ee(S,1),S.m(b.parentNode,b)):S&&(de(),le(S,1,1,()=>{S=null}),pe())},i(M){h||(ee(_),ee(S),h=!0)},o(M){le(_),le(S),h=!1},d(M){M&&(m(e),m(p),m(b)),A[d].d(),z&&z.d(),S&&S.d(M),w=!1,ne(y)}}}function $n(n){let e,t,l,i,s,r,c,u=n[16]&&Lt(n);function d(p,b){return p[7].length===0&&!p[16]?di:fi}let _=d(n),k=_(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent="+ Добавить заметку",i=j(),u&&u.c(),s=j(),k.c(),o(l,"class","btn btn-primary svelte-1rwjkun"),o(t,"class","tab-toolbar svelte-1rwjkun"),o(e,"class","notes-tab svelte-1rwjkun")},m(p,b){v(p,e,b),a(e,t),a(t,l),a(e,i),u&&u.m(e,null),a(e,s),k.m(e,null),r||(c=T(l,"click",n[42]),r=!0)},p(p,b){p[16]?u?u.p(p,b):(u=Lt(p),u.c(),u.m(e,s)):u&&(u.d(1),u=null),_===(_=d(p))&&k?k.p(p,b):(k.d(1),k=_(p),k&&(k.c(),k.m(e,null)))},i:q,o:q,d(p){p&&m(e),u&&u.d(),k.d(),r=!1,c()}}}function ei(n){let e,t,l=n[5].title+"",i,s,r,c,u,d,_=n[5].type+"",k,p,b,h,w,y=(n[5].section||"—")+"",N,A,W,z,S,M=ae(n[5].createdAt)+"",L,I,E,P,G,K,X,Z,U,O,Y,te,ie,Q,J=n[7].length>0&&Et(n),H=n[10].length>0&&Ft(n);return{c(){e=f("div"),t=f("h2"),i=F(l),s=j(),r=f("div"),c=f("div"),u=f("span"),u.textContent="Тип",d=f("span"),k=F(_),p=j(),b=f("div"),h=f("span"),h.textContent="Раздел",w=f("span"),N=F(y),A=j(),W=f("div"),z=f("span"),z.textContent="Создано",S=f("span"),L=F(M),I=j(),E=f("div"),P=f("button"),P.textContent="✏️ Новая заметка",G=j(),K=f("button"),K.textContent="📎 Добавить файл",X=j(),Z=f("button"),Z.textContent="⚡ Добавить действие",U=j(),O=f("button"),O.textContent="🕐 Записать время",Y=j(),J&&J.c(),te=j(),H&&H.c(),o(t,"class","svelte-1rwjkun"),o(u,"class","meta-label svelte-1rwjkun"),o(d,"class","svelte-1rwjkun"),o(c,"class","meta-item svelte-1rwjkun"),o(h,"class","meta-label svelte-1rwjkun"),o(w,"class","svelte-1rwjkun"),o(b,"class","meta-item svelte-1rwjkun"),o(z,"class","meta-label svelte-1rwjkun"),o(S,"class","svelte-1rwjkun"),o(W,"class","meta-item svelte-1rwjkun"),o(r,"class","meta-grid svelte-1rwjkun"),o(P,"class","qa-btn svelte-1rwjkun"),o(K,"class","qa-btn svelte-1rwjkun"),o(Z,"class","qa-btn svelte-1rwjkun"),Z.disabled=!0,o(Z,"title","Следующий этап"),o(O,"class","qa-btn svelte-1rwjkun"),o(E,"class","quick-actions svelte-1rwjkun"),o(e,"class","overview svelte-1rwjkun")},m(C,B){v(C,e,B),a(e,t),a(t,i),a(e,s),a(e,r),a(r,c),a(c,u),a(c,d),a(d,k),a(r,p),a(r,b),a(b,h),a(b,w),a(w,N),a(r,A),a(r,W),a(W,z),a(W,S),a(S,L),a(e,I),a(e,E),a(E,P),a(E,G),a(E,K),a(E,X),a(E,Z),a(E,U),a(E,O),a(e,Y),J&&J.m(e,null),a(e,te),H&&H.m(e,null),ie||(Q=[T(P,"click",n[61]),T(K,"click",n[62]),T(O,"click",n[63])],ie=!0)},p(C,B){B[0]&32&&l!==(l=C[5].title+"")&&V(i,l),B[0]&32&&_!==(_=C[5].type+"")&&V(k,_),B[0]&32&&y!==(y=(C[5].section||"—")+"")&&V(N,y),B[0]&32&&M!==(M=ae(C[5].createdAt)+"")&&V(L,M),C[7].length>0?J?J.p(C,B):(J=Et(C),J.c(),J.m(e,te)):J&&(J.d(1),J=null),C[10].length>0?H?H.p(C,B):(H=Ft(C),H.c(),H.m(e,null)):H&&(H.d(1),H=null)},i:q,o:q,d(C){C&&m(e),J&&J.d(),H&&H.d(),ie=!1,ne(Q)}}}function ti(n){let e,t=$(n[10]),l=[];for(let i=0;iЗаписей работы пока нет',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){v(t,e,l)},p:q,d(t){t&&m(e)}}}function gt(n){let e,t,l=n[96].summary+"",i,s,r,c=n[96].minutes+"",u,d,_=ae(n[96].createdAt)+"",k,p;return{c(){e=f("div"),t=f("div"),i=F(l),s=j(),r=f("div"),u=F(c),d=F(" мин · "),k=F(_),p=j(),o(t,"class","svelte-1rwjkun"),o(r,"class","wl-meta svelte-1rwjkun"),o(e,"class","worklog-entry svelte-1rwjkun")},m(b,h){v(b,e,h),a(e,t),a(t,i),a(e,s),a(e,r),a(r,u),a(r,d),a(r,k),a(e,p)},p(b,h){h[0]&1024&&l!==(l=b[96].summary+"")&&V(i,l),h[0]&1024&&c!==(c=b[96].minutes+"")&&V(u,c),h[0]&1024&&_!==(_=ae(b[96].createdAt)+"")&&V(k,_)},d(b){b&&m(e)}}}function ni(n){let e,t=$(n[9]),l=[];for(let i=0;iДействий пока нет',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){v(t,e,l)},p:q,d(t){t&&m(e)}}}function yt(n){let e,t,l=n[107].title+"",i,s,r=n[107].type+"",c,u,d,_,k,p;function b(){return n[74](n[107])}return{c(){e=f("div"),t=f("span"),i=F(l),s=f("span"),c=F(r),u=j(),d=f("button"),d.textContent="Запустить",_=j(),o(t,"class","svelte-1rwjkun"),o(s,"class","action-type svelte-1rwjkun"),o(d,"class","btn btn-sm svelte-1rwjkun"),o(e,"class","action-card svelte-1rwjkun")},m(h,w){v(h,e,w),a(e,t),a(t,i),a(e,s),a(s,c),a(e,u),a(e,d),a(e,_),k||(p=T(d,"click",b),k=!0)},p(h,w){n=h,w[0]&512&&l!==(l=n[107].title+"")&&V(i,l),w[0]&512&&r!==(r=n[107].type+"")&&V(c,r)},d(h){h&&m(e),k=!1,p()}}}function si(n){let e,t,l,i,s,r,c;const u=[ci,oi],d=[];function _(h,w){return h[24].length>0?0:1}e=_(n),t=d[e]=u[e](n);const k=[ai,ui],p=[];function b(h,w){return h[25].length===0?0:1}return i=b(n),s=p[i]=k[i](n),{c(){t.c(),l=j(),s.c(),r=ue()},m(h,w){d[e].m(h,w),v(h,l,w),p[i].m(h,w),v(h,r,w),c=!0},p(h,w){let y=e;e=_(h),e===y?d[e].p(h,w):(de(),le(d[y],1,1,()=>{d[y]=null}),pe(),t=d[e],t?t.p(h,w):(t=d[e]=u[e](h),t.c()),ee(t,1),t.m(l.parentNode,l));let N=i;i=b(h),i===N?p[i].p(h,w):(de(),le(p[N],1,1,()=>{p[N]=null}),pe(),s=p[i],s?s.p(h,w):(s=p[i]=k[i](h),s.c()),ee(s,1),s.m(r.parentNode,r))},i(h){c||(ee(t),ee(s),c=!0)},o(h){le(t),le(s),c=!1},d(h){h&&(m(l),m(r)),d[e].d(h),p[i].d(h)}}}function ri(n){let e;return{c(){e=f("div"),e.innerHTML='Загрузка...
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){v(t,e,l)},p:q,i:q,o:q,d(t){t&&m(e)}}}function oi(n){let e,t;return e=new Qt({props:{crumbs:[{name:"Files"}]}}),{c(){he(e.$$.fragment)},m(l,i){_e(e,l,i),t=!0},p:q,i(l){t||(ee(e.$$.fragment,l),t=!0)},o(l){le(e.$$.fragment,l),t=!1},d(l){me(e,l)}}}function ci(n){let e,t,l,i,s,r;return e=new Qt({props:{crumbs:[{name:"Files"},...n[24]]}}),e.$on("navigate",n[68]),{c(){he(e.$$.fragment),t=j(),l=f("button"),l.textContent="← Back",o(l,"class","btn btn-sm back-btn svelte-1rwjkun")},m(c,u){_e(e,c,u),v(c,t,u),v(c,l,u),i=!0,s||(r=T(l,"click",n[35]),s=!0)},p(c,u){const d={};u[0]&16777216&&(d.crumbs=[{name:"Files"},...c[24]]),e.$set(d)},i(c){i||(ee(e.$$.fragment,c),i=!0)},o(c){le(e.$$.fragment,c),i=!1},d(c){c&&(m(t),m(l)),me(e,c),s=!1,r()}}}function ui(n){let e,t=[],l=new Map,i,s=$(n[25]);const r=c=>c[104].id;for(let c=0;c0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",r,c,u,d,_,k,p,b,h,w;return{c(){e=f("div"),t=f("div"),t.innerHTML=' ',l=j(),i=f("p"),r=F(s),c=j(),u=f("p"),u.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",d=j(),_=f("div"),k=f("button"),k.textContent="Добавить файл",p=j(),b=f("button"),b.textContent="Добавить папку",o(t,"class","empty-icon svelte-1rwjkun"),o(i,"class","svelte-1rwjkun"),o(u,"class","hint svelte-1rwjkun"),o(k,"class","btn btn-primary svelte-1rwjkun"),o(b,"class","btn svelte-1rwjkun"),o(_,"class","empty-actions svelte-1rwjkun"),o(e,"class","empty-state svelte-1rwjkun")},m(y,N){v(y,e,N),a(e,t),a(e,l),a(e,i),a(i,r),a(e,c),a(e,u),a(e,d),a(e,_),a(_,k),a(_,p),a(_,b),h||(w=[T(k,"click",n[50]),T(b,"click",n[51])],h=!0)},p(y,N){N[0]&16777216&&s!==(s=y[24].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&V(r,s)},i:q,o:q,d(y){y&&m(e),h=!1,ne(w)}}}function jt(n,e){let t,l,i;return l=new jn({props:{item:e[104]}}),l.$on("navigate",e[69]),l.$on("preview",e[70]),l.$on("openExternal",e[71]),l.$on("delete",e[72]),{key:n,first:null,c(){t=ue(),he(l.$$.fragment),this.first=t},m(s,r){v(s,t,r),_e(l,s,r),i=!0},p(s,r){e=s;const c={};r[0]&33554432&&(c.item=e[104]),l.$set(c)},i(s){i||(ee(l.$$.fragment,s),i=!0)},o(s){le(l.$$.fragment,s),i=!1},d(s){s&&m(t),me(l,s)}}}function Ct(n){let e;return{c(){e=f("div"),e.innerHTML='Сканирование...
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){v(t,e,l)},d(t){t&&m(e)}}}function Mt(n){let e,t;return e=new Dn({props:{item:n[26],content:n[27],loading:n[28],error:n[29]}}),e.$on("close",n[38]),e.$on("openExternal",n[73]),{c(){he(e.$$.fragment)},m(l,i){_e(e,l,i),t=!0},p(l,i){const s={};i[0]&67108864&&(s.item=l[26]),i[0]&134217728&&(s.content=l[27]),i[0]&268435456&&(s.loading=l[28]),i[0]&536870912&&(s.error=l[29]),e.$set(s)},i(l){t||(ee(e.$$.fragment,l),t=!0)},o(l){le(e.$$.fragment,l),t=!1},d(l){me(e,l)}}}function Lt(n){let e,t,l,i,s,r,c,u,d;return{c(){e=f("div"),t=f("input"),l=j(),i=f("div"),s=f("button"),s.textContent="Создать",r=j(),c=f("button"),c.textContent="Отмена",o(t,"type","text"),o(t,"placeholder","Название заметки"),o(t,"class","svelte-1rwjkun"),o(s,"class","btn btn-primary svelte-1rwjkun"),o(c,"class","btn svelte-1rwjkun"),o(i,"class","form-actions svelte-1rwjkun"),o(e,"class","create-form svelte-1rwjkun")},m(_,k){v(_,e,k),a(e,t),re(t,n[17]),a(e,l),a(e,i),a(i,s),a(i,r),a(i,c),u||(d=[T(t,"input",n[65]),T(t,"keydown",n[66]),T(s,"click",n[44]),T(c,"click",n[43])],u=!0)},p(_,k){k[0]&131072&&t.value!==_[17]&&re(t,_[17])},d(_){_&&m(e),u=!1,ne(d)}}}function fi(n){let e,t=$(n[7]),l=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',o(e,"class","empty-state svelte-1rwjkun")},m(t,l){v(t,e,l)},p:q,d(t){t&&m(e)}}}function Nt(n){let e,t,l=n[99].title+"",i,s,r,c=ae(n[99].createdAt)+"",u,d,_,k;function p(){return n[67](n[99])}return{c(){e=f("div"),t=f("div"),i=F(l),s=j(),r=f("div"),u=F(c),d=j(),o(t,"class","note-card-title svelte-1rwjkun"),o(r,"class","note-card-date svelte-1rwjkun"),o(e,"class","note-card svelte-1rwjkun")},m(b,h){v(b,e,h),a(e,t),a(t,i),a(e,s),a(e,r),a(r,u),a(e,d),_||(k=T(e,"click",p),_=!0)},p(b,h){n=b,h[0]&128&&l!==(l=n[99].title+"")&&V(i,l),h[0]&128&&c!==(c=ae(n[99].createdAt)+"")&&V(u,c)},d(b){b&&m(e),_=!1,k()}}}function Et(n){let e,t,l,i=$(n[7].slice(0,5)),s=[];for(let r=0;rn[79].call(b)),o(_,"class","form-group svelte-1rwjkun"),o(y,"class","btn btn-primary svelte-1rwjkun"),o(A,"class","btn svelte-1rwjkun"),o(w,"class","modal-actions svelte-1rwjkun"),o(t,"class","modal svelte-1rwjkun"),o(e,"class","modal-overlay svelte-1rwjkun")},m(L,I){v(L,e,I),a(e,t),a(t,l),a(t,i),a(t,s),a(s,r),a(s,c),a(s,u),re(u,n[14]),a(t,d),a(t,_),a(_,k),a(_,p),a(_,b);for(let E=0;E⚒ Верстак ',i=j(),s=f("nav"),r=f("div"),c=f("div"),c.textContent="Разделы",u=j();for(let C=0;C{te[oe]=null}),pe(),S=te[z],S?S.p(C,B):(S=te[z]=Y[z](C),S.c()),ee(S,1),S.m(w,M)),!C[8]&&!C[5]?Q?Q.p(C,B):(Q=Ot(C),Q.c(),Q.m(w,L)):Q&&(Q.d(1),Q=null),C[13]?J?J.p(C,B):(J=Tt(C),J.c(),J.m(w,I)):J&&(J.d(1),J=null),C[21]&&C[20]?H?H.p(C,B):(H=Ht(C),H.c(),H.m(w,null)):H&&(H.d(1),H=null)},i(C){E||(ee(S),E=!0)},o(C){le(S),E=!1},d(C){C&&m(e),ce(G,C),K&&K.d(),U.d(),O&&O.d(),te[z].d(),Q&&Q.d(),J&&J.d(),H&&H.d()}}}function x(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function ae(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}const Bt=n=>n.id!=="today"&&n.id!=="inbox";function _i(n,e,t){let l=[],i=[],s="",r="",c="",u=null,d="overview",_=[],k=null,p=[],b=[],h=[],w="",y="",N=!1,A="",W="clients",z=!1,S="",M=!0,L=!1,I=null,E=!1,P="",G=!1,K=null,X=[],Z=[],U=null,O="",Y=!1,te="";const ie=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let Q=null;qt(async()=>{try{t(2,s=await x("VerstakVersion")||"verstak-gui/v2"),t(0,l=await x("ListSections")||[])}catch(g){t(3,r=String(g)),t(0,l=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",cl),Q=()=>window.runtime.EventsOff("files-dropped")),t(18,M=!1)}),Rt(()=>{Q&&Q()});async function J(g){t(4,c=g),t(5,u=null),t(6,d="overview"),t(7,_=[]),p=[],t(9,b=[]),t(10,h=[]),t(13,N=!1),t(3,r="");try{t(1,i=await x("ListNodesBySection",g)||[])}catch(R){t(3,r=String(R)),t(1,i=[])}}async function H(g){t(5,u=g),t(6,d="overview"),t(7,_=[]),p=[],t(9,b=[]),t(10,h=[]),t(25,Z=[]),t(24,X=[]),t(23,K=null),t(26,U=null),t(27,O=""),t(8,k=null),t(13,N=!1),t(16,z=!1),t(3,r=""),await C(g.id)}async function C(g){try{t(7,_=await x("ListNotes",g)||[])}catch{}try{p=await x("ListFiles",g)||[]}catch{}try{t(9,b=await x("ListActions",g)||[])}catch{}try{t(10,h=await x("ListWorklog",g)||[])}catch{}}async function B(g){t(22,G=!0);try{t(25,Z=await x("ListItems",g)||[])}catch{t(25,Z=[])}t(22,G=!1)}async function oe(g){if(u){try{const R=await x("GetNodeDetail",g);R&&t(24,X=[...X,{id:g,name:R.title}])}catch{t(24,X=[...X,{id:g,name:"..."}])}t(23,K=g),await B(g)}}function se(){if(X.length<2)t(24,X=[]),t(23,K=null),B(u.id);else{const g=X[X.length-2];t(24,X=X.slice(0,-1)),t(23,K=g.id),B(g.id)}}function we(g){const R=X[g];t(24,X=X.slice(0,g+1)),t(23,K=R.id),B(R.id)}async function Re(g){t(26,U=g),t(27,O=""),t(29,te=""),t(28,Y=!0);try{mn(g)?t(27,O=await x("GetFileBase64",g.fileId)||""):vn(g)&&t(27,O=await x("ReadFileText",g.fileId)||"")}catch(R){t(29,te=String(R))}t(28,Y=!1)}function xt(){t(26,U=null),t(27,O=""),t(29,te="")}function $t(){t(13,N=!0),t(14,A=""),t(15,W=c||"clients")}function el(){t(13,N=!1),t(14,A="")}async function Ge(){if(A.trim())try{const g=await x("CreateNode","","case",A.trim(),W);t(13,N=!1),t(14,A=""),await J(W)}catch(g){t(3,r=String(g))}}function Ke(){t(16,z=!0),t(17,S="")}function tl(){t(16,z=!1),t(17,S="")}async function Je(){if(!(!S.trim()||!u))try{const g=await x("CreateNote",u.id,S.trim());t(7,_=[..._,g&&g.id?g:{id:Date.now().toString(),title:S.trim(),createdAt:new Date().toISOString()}]),t(16,z=!1),t(17,S="")}catch{const R={id:Date.now().toString(),title:S.trim(),createdAt:new Date().toISOString()};t(7,_=[..._,R]),t(16,z=!1),t(17,S="")}}async function Te(g){if(!(k&&k.dirty&&!confirm("Несохранённые изменения. Закрыть?")))try{const R=await x("ReadNote",g.id);t(8,k={id:g.id,title:g.title,content:R||"",dirty:!1})}catch{t(8,k={id:g.id,title:g.title,content:"# "+g.title+`
-
-`,dirty:!1})}}function ll(){k&&k.dirty&&!confirm("Несохранённые изменения. Закрыть?")||t(8,k=null)}function nl(g){k&&(t(8,k.content=g.target.value,k),t(8,k.dirty=!0,k))}async function il(){if(k)try{await x("SaveNote",k.id,k.content),t(8,k.dirty=!1,k)}catch{t(8,k.dirty=!1,k)}}async function sl(){const g=parseInt(w,10);if(!(!y.trim()||isNaN(g)||g<=0||!u)){try{const R=await x("CreateWorklog",u.id,y.trim(),g);t(10,h=[...h,R&&R.id?R:{id:Date.now().toString(),nodeId:u.id,summary:y.trim(),minutes:g,createdAt:new Date().toISOString()}])}catch{t(10,h=[...h,{id:Date.now().toString(),nodeId:u.id,summary:y.trim(),minutes:g,createdAt:new Date().toISOString()}])}t(12,y=""),t(11,w="")}}async function Ue(){const g=await x("PickFile");g&&await Ae(u.id,g)}async function rl(){const g=await x("PickDirectory");g&&await Ae(u.id,g)}async function Ae(g,R){t(19,L=!0);try{const ge=await x("PreviewImport",R);t(20,I=ge),P=R,t(21,E=!0)}catch(ge){t(3,r=String(ge))}t(19,L=!1)}async function He(g){try{const R=g==="copy"?await x("AddPathCopy",u.id,P):await x("AddPathLink",u.id,P);t(21,E=!1),t(20,I=null),t(24,X=[]),t(23,K=null),await Promise.all([C(u.id),B(u.id)])}catch(R){t(3,r=String(R))}}function ol(){t(21,E=!1),t(20,I=null)}async function Ze(g){if(confirm("Удалить файл?"))try{await x("DeleteFileOrFolder",g),p=p.filter(ge=>ge.nodeId!==g);const R=K||u.id;await B(R)}catch(R){t(3,r=String(R))}}async function cl(g){if(!g||g.length===0)return;if(!u){t(3,r="Сначала выберите дело для добавления файлов");return}const R=g[0];await Ae(u.id,R)}function ul(g){return d===g?"tab active":"tab"}const al=g=>J(g.id),fl=g=>H(g),dl=()=>t(3,r="");function pl(){k.content=this.value,t(8,k)}const _l=g=>{t(6,d=g.id),g.id==="files"&&u&&Z.length===0&&!K&&B(u.id)},ml=()=>{t(6,d="notes"),Ke()},vl=()=>{t(6,d="files"),Ue()},kl=()=>t(6,d="worklog"),bl=g=>Te(g);function hl(){S=this.value,t(17,S)}const wl=g=>g.key==="Enter"&&Je(),gl=g=>Te(g),yl=g=>{const R=g.detail;R===0?(t(24,X=[]),t(23,K=null),B(u.id)):we(R-1)},jl=g=>oe(g.detail),Cl=g=>Re(g.detail),Ml=g=>x("OpenFile",g.detail),Ll=g=>Ze(g.detail),Nl=g=>x("OpenFile",g.detail),El=g=>x("RunAction",g.id);function Sl(){y=this.value,t(12,y)}function Fl(){w=Wt(this.value),t(11,w)}function zl(){A=this.value,t(14,A)}const Pl=g=>g.key==="Enter"&&Ge();function Ol(){W=Dl(this),t(15,W),t(0,l)}return[l,i,s,r,c,u,d,_,k,b,h,w,y,N,A,W,z,S,M,L,I,E,G,K,X,Z,U,O,Y,te,ie,J,H,B,oe,se,we,Re,xt,$t,el,Ge,Ke,tl,Je,Te,ll,nl,il,sl,Ue,rl,He,ol,Ze,ul,al,fl,dl,pl,_l,ml,vl,kl,bl,hl,wl,gl,yl,jl,Cl,Ml,Ll,Nl,El,Sl,Fl,zl,Pl,Ol,()=>He("copy"),()=>He("link")]}class mi extends Le{constructor(e){super(),Me(this,e,_i,pi,Ce,{},null,[-1,-1,-1,-1])}}new mi({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/index.html b/cmd/verstak-gui/frontend-dist/index.html
index 8a372f6..d533fca 100644
--- a/cmd/verstak-gui/frontend-dist/index.html
+++ b/cmd/verstak-gui/frontend-dist/index.html
@@ -16,8 +16,8 @@
background: #13131f;
}
-
-
+
+
diff --git a/cmd/verstak-gui/main.go b/cmd/verstak-gui/main.go
index a30a374..69838f1 100644
--- a/cmd/verstak-gui/main.go
+++ b/cmd/verstak-gui/main.go
@@ -7,6 +7,7 @@ import (
"path/filepath"
"verstak/internal/core/actions"
+ "verstak/internal/core/activity"
"verstak/internal/core/files"
"verstak/internal/core/notes"
"verstak/internal/core/nodes"
@@ -46,19 +47,21 @@ func main() {
fileSvc := files.NewService(db, abs, nodeRepo)
noteSvc := notes.NewService(db, abs, nodeRepo, fileSvc)
actionSvc := actions.NewService(db)
+ activitySvc := activity.NewService(db)
worklogSvc := worklog.NewService(db)
searchSvc := search.NewService(db)
plugins.NewManager(abs).Discover()
app := &App{
- db: db,
- nodes: nodeRepo,
- files: fileSvc,
- notes: noteSvc,
- actions: actionSvc,
- worklog: worklogSvc,
- search: searchSvc,
- vault: abs,
+ db: db,
+ nodes: nodeRepo,
+ files: fileSvc,
+ notes: noteSvc,
+ activity: activitySvc,
+ actions: actionSvc,
+ worklog: worklogSvc,
+ search: searchSvc,
+ vault: abs,
}
err = wails.Run(&options.App{
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 9cb0c5b..070d800 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -26,6 +26,7 @@
// ===== State =====
let sections = []
let nodes = []
+ let todayDashboard = null
let version = ''
let error = ''
let selectedSection = ''
@@ -134,15 +135,18 @@
worklog = []
showCreateNode = false
error = ''
+ todayDashboard = null
+ nodes = []
try {
if (id === 'today') {
- nodes = await wailsCall('ListTodayView') || []
+ todayDashboard = await wailsCall('ListTodayView') || { cases: [] }
} else {
nodes = await wailsCall('ListNodesBySection', id) || []
}
} catch (e) {
error = String(e)
nodes = []
+ todayDashboard = { cases: [] }
}
}
@@ -755,10 +759,59 @@
// ===== Helpers =====
function tabClass(id) { return activeTab === id ? 'tab active' : 'tab' }
+ function eventLabel(type) {
+ const labels = {
+ 'note_created': 'Заметка создана',
+ 'note_updated': 'Заметка изменена',
+ 'file_added': 'Файл добавлен',
+ 'file_deleted': 'Файл удалён',
+ 'file_renamed': 'Файл переименован',
+ 'file_copied': 'Файл скопирован',
+ 'file_moved': 'Файл перемещён',
+ 'folder_added': 'Папка добавлена',
+ 'folder_deleted': 'Папка удалена',
+ 'folder_renamed': 'Папка переименована',
+ 'node_created': 'Дело создано',
+ 'node_updated': 'Дело изменено',
+ }
+ return labels[type] || type
+ }
+ function eventIcon(type) {
+ if (type === 'note_created' || type === 'file_added' || type === 'folder_added' || type === 'node_created') return '+'
+ if (type === 'file_deleted' || type === 'folder_deleted') return '×'
+ if (type === 'file_renamed' || type === 'folder_renamed' || type === 'note_updated' || type === 'node_updated') return '~'
+ if (type === 'file_copied') return '⧉'
+ if (type === 'file_moved') return '→'
+ return '•'
+ }
+ function formatTime(str) {
+ if (!str) return ''
+ try { return new Date(str).toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' }) } catch (e) { return '' }
+ }
function formatDate(str) {
if (!str) return ''
try { return new Date(str).toLocaleDateString('ru-RU', { day: 'numeric', month: 'short' }) } catch (e) { return str }
}
+ function nodeKindLabel(kind) {
+ const labels = { 'project': 'Проект', 'client': 'Клиент', 'document': 'Документ', 'recipe': 'Рецепт', 'archive': 'Архив', 'case': 'Дело' }
+ return labels[kind] || kind || 'Дело'
+ }
+ function pluralize(n, one, few, many) {
+ n = Math.abs(n) % 100
+ if (n >= 5 && n <= 20) return many
+ n %= 10
+ if (n === 1) return one
+ if (n >= 2 && n <= 4) return few
+ return many
+ }
+ async function openNodeById(id) {
+ try {
+ const node = await wailsCall('GetNodeDetail', id)
+ if (node) selectNode(node)
+ } catch (e) {
+ error = String(e)
+ }
+ }
@@ -778,7 +831,7 @@
{/each}
- {#if selectedSection}
+ {#if selectedSection && selectedSection !== 'today' && selectedSection !== 'inbox'}
Дела {#if nodes.length > 0}({nodes.length}){/if}
{#each nodes as node}
@@ -1048,6 +1101,66 @@
{/if}
+ {:else if selectedSection === 'today' && todayDashboard}
+
+
+ {#if todayDashboard.summary}
+
+ {#if todayDashboard.summary.changedCases > 0}{todayDashboard.summary.changedCases} {pluralize(todayDashboard.summary.changedCases, 'дело', 'дела', 'дел')} {/if}
+ {#if todayDashboard.summary.notes > 0}{todayDashboard.summary.notes} {pluralize(todayDashboard.summary.notes, 'заметка', 'заметки', 'заметок')} {/if}
+ {#if todayDashboard.summary.files > 0}{todayDashboard.summary.files} {pluralize(todayDashboard.summary.files, 'файл', 'файла', 'файлов')} {/if}
+
+ {/if}
+
+ {#if todayDashboard.groups && todayDashboard.groups.length > 0}
+ {#each todayDashboard.groups as group}
+
+
+ {#if group.events && group.events.length > 0}
+
+ {#each group.events as ev}
+
+ {eventIcon(ev.eventType)}
+ {ev.title}
+ {eventLabel(ev.eventType)}
+ {formatTime(ev.createdAt)}
+
+ {/each}
+
+ {:else}
+
Изменён сегодня, подробная история пока недоступна
+ {/if}
+
+ {/each}
+
+ {#if todayDashboard.events && todayDashboard.events.length > 0}
+
+
Лента за сегодня
+ {#each todayDashboard.events as ev}
+
+
+ {ev.title}
+ {eventLabel(ev.eventType)}
+ {formatTime(ev.createdAt)}
+
+ {/each}
+
+ {/if}
+ {:else}
+
+
Сегодня пока тихо
+
Здесь появятся дела, заметки, файлы и действия, с которыми вы работали сегодня.
+
+ {/if}
+
+
{:else}
Верстак
@@ -1286,4 +1399,35 @@
.summary-warn { margin-top: 8px; padding: 8px 12px; background: #3a2a22; border-radius: 6px; color: #ffaa66; font-size: 13px; }
.rename-error { color: #ff6b6b; font-size: 12px; margin-top: 4px; }
+
+/* Today Dashboard */
+.today-dashboard { padding: 24px; overflow-y: auto; flex: 1; }
+.today-header { display: flex; align-items: baseline; gap: 12px; margin-bottom: 16px; }
+.today-header h2 { font-size: 24px; }
+.today-date { font-size: 13px; color: #666; }
+.today-summary { display: flex; gap: 8px; margin-bottom: 20px; flex-wrap: wrap; }
+.summary-chip { font-size: 12px; color: #b0b0c0; background: #1a1a28; border: 1px solid #2a2a3c; padding: 4px 12px; border-radius: 16px; }
+.today-case { background: #1a1a28; border: 1px solid #2a2a3c; border-radius: 8px; margin-bottom: 12px; overflow: hidden; }
+.today-case-header { padding: 12px 16px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid #2a2a3c; cursor: pointer; }
+.today-case-header:hover { background: #1e1e30; }
+.today-case-title { font-weight: 500; }
+.today-case-type { font-size: 11px; color: #888; background: #222233; padding: 2px 8px; border-radius: 10px; }
+.today-case-time { font-size: 11px; color: #555; margin-left: auto; }
+.today-events { padding: 8px 16px; }
+.today-event { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 13px; color: #b0b0c0; }
+.today-event-icon { width: 18px; text-align: center; color: #6366f1; font-size: 13px; }
+.today-event-title { flex: 1; }
+.today-event-type { font-size: 11px; color: #666; }
+.today-event-time { font-size: 11px; color: #555; margin-left: auto; }
+.today-events-empty { padding: 8px 16px; font-size: 13px; color: #666; font-style: italic; }
+.today-empty { padding: 48px 24px; text-align: center; }
+.today-empty p { color: #666; font-size: 14px; margin: 0; }
+.today-empty .hint { font-size: 12px; color: #555; margin-top: 8px; }
+.today-timeline { margin-top: 24px; }
+.today-timeline h3 { font-size: 13px; color: #666; text-transform: uppercase; margin-bottom: 12px; }
+.timeline-event { display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: 13px; color: #b0b0c0; border-left: 2px solid #2a2a3c; padding-left: 16px; margin-left: 4px; }
+.timeline-dot { width: 6px; height: 6px; border-radius: 50%; background: #6366f1; margin-left: -19px; flex-shrink: 0; }
+.timeline-title { flex: 1; }
+.timeline-type { font-size: 11px; color: #666; }
+.timeline-time { font-size: 11px; color: #555; }
diff --git a/internal/core/activity/activity.go b/internal/core/activity/activity.go
new file mode 100644
index 0000000..6e4f35b
--- /dev/null
+++ b/internal/core/activity/activity.go
@@ -0,0 +1,116 @@
+package activity
+
+import (
+ "time"
+
+ "verstak/internal/core/storage"
+ "verstak/internal/core/util"
+)
+
+// Event types.
+const (
+ TypeNoteCreated = "note_created"
+ TypeNoteUpdated = "note_updated"
+ TypeFileAdded = "file_added"
+ TypeFileDeleted = "file_deleted"
+ TypeFileRenamed = "file_renamed"
+ TypeFileCopied = "file_copied"
+ TypeFileMoved = "file_moved"
+ TypeFolderAdded = "folder_added"
+ TypeFolderDeleted = "folder_deleted"
+ TypeFolderRenamed = "folder_renamed"
+ TypeNodeCreated = "node_created"
+ TypeNodeUpdated = "node_updated"
+)
+
+// Event represents an activity event.
+type Event struct {
+ ID string `json:"id"`
+ NodeID string `json:"node_id"`
+ ParentID string `json:"parent_id,omitempty"`
+ EventType string `json:"event_type"`
+ Title string `json:"title"`
+ Metadata string `json:"metadata"`
+ CreatedAt string `json:"created_at"`
+}
+
+// Service records and queries activity events.
+type Service struct {
+ db *storage.DB
+}
+
+func NewService(db *storage.DB) *Service {
+ return &Service{db: db}
+}
+
+// Record inserts a new activity event.
+func (s *Service) Record(nodeID, parentID, eventType, title, metadata string) error {
+ id := util.UUID7()
+ now := time.Now().UTC().Format(time.RFC3339)
+ if metadata == "" {
+ metadata = "{}"
+ }
+ if parentID != "" {
+ _, err := s.db.Exec(
+ `INSERT INTO activity_events(id,node_id,parent_id,event_type,title,metadata,created_at)
+ VALUES(?,?,?,?,?,?,?)`,
+ id, nodeID, parentID, eventType, title, metadata, now)
+ return err
+ }
+ _, err := s.db.Exec(
+ `INSERT INTO activity_events(id,node_id,event_type,title,metadata,created_at)
+ VALUES(?,?,?,?,?,?)`,
+ id, nodeID, eventType, title, metadata, now)
+ return err
+}
+
+// todayBoundaries returns the current local day in UTC.
+// TodayBoundaries returns the current local day in UTC as RFC3339 strings.
+func TodayBoundaries() (string, string) {
+ now := time.Now()
+ y, m, d := now.Date()
+ start := time.Date(y, m, d, 0, 0, 0, 0, now.Location())
+ end := start.Add(24 * time.Hour)
+ return start.UTC().Format(time.RFC3339), end.UTC().Format(time.RFC3339)
+}
+
+// ListTodayEvents returns all activity events from today.
+func (s *Service) ListTodayEvents() ([]Event, error) {
+ start, end := TodayBoundaries()
+ rows, err := s.db.Query(
+ `SELECT id,node_id,COALESCE(parent_id,''),event_type,title,metadata,created_at
+ FROM activity_events
+ WHERE created_at >= ? AND created_at < ?
+ ORDER BY created_at DESC`, start, end)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var events []Event
+ for rows.Next() {
+ var e Event
+ if err := rows.Scan(&e.ID, &e.NodeID, &e.ParentID, &e.EventType, &e.Title, &e.Metadata, &e.CreatedAt); err != nil {
+ return nil, err
+ }
+ events = append(events, e)
+ }
+ return events, rows.Err()
+}
+
+// ListTodayEventsByParent returns activity events grouped by parent node.
+func (s *Service) ListTodayEventsByParent() (map[string][]Event, error) {
+ events, err := s.ListTodayEvents()
+ if err != nil {
+ return nil, err
+ }
+ grouped := make(map[string][]Event, 8)
+ for _, e := range events {
+ pid := e.ParentID
+ if pid == "" {
+ pid = e.NodeID
+ }
+ grouped[pid] = append(grouped[pid], e)
+ }
+ return grouped, nil
+}
+
diff --git a/internal/core/nodes/repository.go b/internal/core/nodes/repository.go
index e324be1..abaf1b4 100644
--- a/internal/core/nodes/repository.go
+++ b/internal/core/nodes/repository.go
@@ -84,9 +84,22 @@ func (r *Repository) Create(parentID, typ, title, section string) (*Node, error)
if err != nil {
return nil, err
}
+ // Bump parent's updated_at so it appears in today view.
+ if parentID != "" {
+ _ = r.touch(parentID)
+ }
return n, nil
}
+// touch updates a node's updated_at without changing other fields.
+func (r *Repository) touch(id string) error {
+ t := now()
+ _, err := r.db.Exec(
+ `UPDATE nodes SET updated_at=?, revision=revision+1
+ WHERE id=? AND deleted_at IS NULL`, t, id)
+ return err
+}
+
func (r *Repository) insertNode(n *Node) error {
var parent interface{}
if n.ParentID != nil {
@@ -180,24 +193,26 @@ func (r *Repository) ListRoots(includeDeleted bool, section string) ([]Node, err
}
// todayBoundaries returns RFC3339 start and end strings for the current day
-// in the local timezone (the server's timezone, which should match the user's).
-// TODO: accept a user timezone offset when multi-user support is added.
+// in UTC, so string comparison against UTC-stored DB timestamps is correct.
func todayBoundaries() (string, string) {
now := time.Now()
y, m, d := now.Date()
start := time.Date(y, m, d, 0, 0, 0, 0, now.Location())
end := start.Add(24 * time.Hour)
- return start.Format(time.RFC3339), end.Format(time.RFC3339)
+ return start.UTC().Format(time.RFC3339), end.UTC().Format(time.RFC3339)
}
// ListTodayNodes returns active root-level nodes created or updated today.
// This is a dynamic view, not a section — it shows the day's activity.
+// Child nodes (notes, files, folders) are not listed directly; instead,
+// their parent is bumped via touch() on creation.
func (r *Repository) ListTodayNodes() ([]Node, error) {
start, end := todayBoundaries()
q := `SELECT id,parent_id,type,title,slug,path,section,sort_order,
created_at,updated_at,deleted_at,revision,device_id
FROM nodes
WHERE deleted_at IS NULL
+ AND parent_id IS NULL
AND (
(created_at >= ? AND created_at < ?)
OR
diff --git a/internal/core/storage/migrations_008.sql.go b/internal/core/storage/migrations_008.sql.go
new file mode 100644
index 0000000..44cfeaa
--- /dev/null
+++ b/internal/core/storage/migrations_008.sql.go
@@ -0,0 +1,17 @@
+package storage
+
+// migration008 — activity_events table for the Сегодня (Today) dashboard.
+const migration008 = `
+CREATE TABLE IF NOT EXISTS activity_events (
+ id TEXT PRIMARY KEY,
+ node_id TEXT NOT NULL,
+ parent_id TEXT,
+ event_type TEXT NOT NULL,
+ title TEXT NOT NULL DEFAULT '',
+ metadata TEXT NOT NULL DEFAULT '{}',
+ created_at TEXT NOT NULL
+);
+
+CREATE INDEX IF NOT EXISTS idx_ae_created ON activity_events(created_at);
+CREATE INDEX IF NOT EXISTS idx_ae_parent ON activity_events(parent_id);
+`
diff --git a/internal/core/storage/storage.go b/internal/core/storage/storage.go
index 01de685..d095504 100644
--- a/internal/core/storage/storage.go
+++ b/internal/core/storage/storage.go
@@ -64,7 +64,7 @@ var migrationFiles = map[int]string{
5: migration005,
6: migration006,
// 7: migration007 (FTS5) — created lazily by search.Rebuild()
- // 8: migration008, etc.
+ 8: migration008,
}
func (db *DB) runInitialSchema() error {