diff --git a/app/templates/local_workspace.html b/app/templates/local_workspace.html
index ed5211a..925189e 100644
--- a/app/templates/local_workspace.html
+++ b/app/templates/local_workspace.html
@@ -70,6 +70,12 @@
.btn-icon{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:16px;color:var(--text-secondary);transition:all 150ms;}
.btn-icon:hover{background:var(--bg-hover);color:var(--text);border-color:var(--border-strong);}
+.btn-icon:disabled{opacity:0.3;cursor:default;}
+.btn-icon:disabled:hover{background:var(--bg-tertiary);color:var(--text-secondary);}
+
+/* Recently modified dot */
+.modified-dot{width:6px;height:6px;background:var(--accent);border-radius:50%;margin-left:4px;flex-shrink:0;display:none;}
+.modified-dot.show{display:block;}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:999;backdrop-filter:blur(4px);}
.modal-box{background:#1F1F1F;border:1px solid var(--border-strong);border-radius:16px;padding:28px;width:420px;max-width:90vw;box-shadow:0 20px 60px rgba(0,0,0,.5);}
@@ -224,6 +230,8 @@
📁
+
+
-
+
+
+ -
+
+
+ 📂
+ ..
+
+
-
0; },
+ get canGoForward() { return this.navIndex < this.navHistory.length - 1; },
+
// Preview popup
previewVisible: false,
previewContent: '',
@@ -467,6 +489,9 @@ document.addEventListener('alpine:init', function() {
this.displayTree = roots;
this.breadcrumb = d.breadcrumb || [];
this.loaded = true;
+ // Initialize nav history
+ this.navHistory = [this.currentFolder || 0];
+ this.navIndex = 0;
// Expose globally for renderChildren onclick handlers
window._wsData = this;
} catch(e) { console.error('Tree load error:', e); this.loaded = true; }
@@ -582,10 +607,38 @@ document.addEventListener('alpine:init', function() {
},
navigateToFolder(id) {
+ // Push to nav history
+ if (this.navIndex < this.navHistory.length - 1) {
+ this.navHistory = this.navHistory.slice(0, this.navIndex + 1);
+ }
+ this.navHistory.push(id);
+ this.navIndex = this.navHistory.length - 1;
this._saveExpandedState();
window.location = '/local-workspace?folder=' + id;
},
+ goBack() {
+ if (this.navIndex <= 0) return;
+ this.navIndex--;
+ var id = this.navHistory[this.navIndex];
+ this._saveExpandedState();
+ window.location = id ? '/local-workspace?folder=' + id : '/local-workspace';
+ },
+ goForward() {
+ if (this.navIndex >= this.navHistory.length - 1) return;
+ this.navIndex++;
+ var id = this.navHistory[this.navIndex];
+ this._saveExpandedState();
+ window.location = id ? '/local-workspace?folder=' + id : '/local-workspace';
+ },
+ goToParent() {
+ var bc = this.breadcrumb;
+ if (bc.length <= 1) { window.location = '/local-workspace'; return; }
+ var parentId = bc[bc.length - 2].id;
+ this._saveExpandedState();
+ window.location = '/local-workspace?folder=' + parentId;
+ },
+
_saveExpandedState() {
try { localStorage.setItem('fd_ws_expanded', JSON.stringify(this.expanded)); }
catch(e) {}