Changeset 0.9.3 (#53)
This commit is contained in:
183
src/index.html
183
src/index.html
@@ -158,6 +158,99 @@
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Side Panel (preview + notes) -->
|
||||
<aside class="side-panel" id="sidePanel">
|
||||
<div class="side-panel-header">
|
||||
<div class="side-panel-tabs" id="sidePanelTabs">
|
||||
<button class="side-panel-tab active" data-tab="preview" onclick="switchSidePanelTab('preview')">Preview</button>
|
||||
<button class="side-panel-tab" data-tab="notes" onclick="switchSidePanelTab('notes')">Notes</button>
|
||||
</div>
|
||||
<button class="side-panel-close" onclick="closeSidePanel()" title="Close panel">✕</button>
|
||||
</div>
|
||||
<div class="side-panel-body">
|
||||
<!-- Preview tab -->
|
||||
<div class="side-panel-page" id="sidePanelPreview">
|
||||
<div class="side-panel-empty" id="previewEmpty">
|
||||
<p>Click <strong>Preview</strong> on any HTML code block to render it here.</p>
|
||||
</div>
|
||||
<iframe id="previewFrame" class="preview-frame" sandbox="allow-scripts" style="display:none"></iframe>
|
||||
</div>
|
||||
<!-- Notes tab -->
|
||||
<div class="side-panel-page" id="sidePanelNotes" style="display:none">
|
||||
<div class="notes-toolbar">
|
||||
<div class="notes-search-wrap">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
|
||||
<input type="text" id="notesSearchInput" placeholder="Search notes..." autocomplete="off">
|
||||
</div>
|
||||
<select id="notesFolderFilter" class="notes-filter-select">
|
||||
<option value="">All folders</option>
|
||||
</select>
|
||||
<select id="notesSortSelect" class="notes-filter-select" title="Sort by">
|
||||
<option value="updated_desc">Updated ↓</option>
|
||||
<option value="updated_asc">Updated ↑</option>
|
||||
<option value="created_desc">Created ↓</option>
|
||||
<option value="created_asc">Created ↑</option>
|
||||
<option value="title_asc">Title A–Z</option>
|
||||
<option value="title_desc">Title Z–A</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="notes-actions-bar">
|
||||
<button class="btn-small" id="notesSelectModeBtn">Select</button>
|
||||
<button class="btn-small btn-primary" id="notesNewBtn">+ New Note</button>
|
||||
</div>
|
||||
<div class="notes-selection-bar" id="notesSelectionBar" style="display:none">
|
||||
<label class="notes-select-all"><input type="checkbox" id="notesSelectAll"> <span id="notesSelectedCount">0</span> selected</label>
|
||||
<button class="btn-small btn-danger" id="notesDeleteSelectedBtn">Delete selected</button>
|
||||
<button class="btn-small" id="notesCancelSelectBtn">Cancel</button>
|
||||
</div>
|
||||
<!-- List view (default) -->
|
||||
<div id="notesListView">
|
||||
<div id="notesList" class="notes-list">
|
||||
<div class="notes-empty">No notes yet. Create one or ask the AI to save a note.</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Editor view (hidden by default) -->
|
||||
<div id="notesEditorView" style="display:none">
|
||||
<div class="notes-editor">
|
||||
<div class="notes-editor-toolbar">
|
||||
<button class="notes-back-btn" id="notesBackBtn">← Back to list</button>
|
||||
<div class="notes-mode-toggle">
|
||||
<button class="btn-small" id="noteEditBtn" style="display:none">Edit</button>
|
||||
<button class="btn-small" id="notePreviewBtn" style="display:none">Preview</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Read mode: rendered markdown -->
|
||||
<div id="noteReadMode" style="display:none">
|
||||
<h3 class="note-read-title" id="noteReadTitle"></h3>
|
||||
<div class="note-read-meta" id="noteReadMeta"></div>
|
||||
<div class="note-read-content msg-text" id="noteReadContent"></div>
|
||||
<div class="notes-editor-actions">
|
||||
<button class="btn-small" id="noteCopyBtn" onclick="copyNoteContent()">Copy</button>
|
||||
<button class="btn-small btn-primary" id="noteEditBtn2">Edit</button>
|
||||
<button class="btn-small btn-danger" id="noteDeleteBtn2" style="display:none">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Edit mode: form fields -->
|
||||
<div id="noteEditMode">
|
||||
<div class="form-group"><input type="text" id="noteEditorTitle" placeholder="Note title" class="notes-title-input"></div>
|
||||
<div class="form-row">
|
||||
<div class="form-group"><input type="text" id="noteEditorFolder" placeholder="Folder (e.g. /work/meetings)" class="notes-folder-input"></div>
|
||||
<div class="form-group"><input type="text" id="noteEditorTags" placeholder="Tags (comma-separated)" class="notes-tags-input"></div>
|
||||
</div>
|
||||
<div class="form-group"><textarea id="noteEditorContent" rows="12" placeholder="Note content (Markdown supported)..." class="notes-content-input"></textarea></div>
|
||||
<div class="notes-editor-actions">
|
||||
<button class="btn-small btn-primary" id="noteSaveBtn">Save</button>
|
||||
<button class="btn-small" id="noteCancelEditBtn" style="display:none">Cancel</button>
|
||||
<button class="btn-small btn-danger" id="noteDeleteBtn" style="display:none">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
</div><!-- .app-body -->
|
||||
|
||||
<!-- Environment Banner (bottom) -->
|
||||
@@ -270,7 +363,7 @@
|
||||
</div>
|
||||
<div class="form-group"><label>Temperature</label><input type="number" id="settingsTemp" value="0.7" step="0.1" min="0" max="2"></div>
|
||||
</div>
|
||||
<label class="checkbox-label"><input type="checkbox" id="settingsThinking" checked> Show thinking blocks</label>
|
||||
<label class="checkbox-label"><input type="checkbox" id="settingsThinking" checked> Auto-expand thinking blocks</label>
|
||||
</section>
|
||||
</div>
|
||||
<!-- Appearance Tab -->
|
||||
@@ -534,6 +627,15 @@
|
||||
<label class="checkbox-label"><input type="checkbox" id="adminUserPresetsToggle" checked> Allow users to create personal presets</label>
|
||||
<p class="section-hint">When disabled, users can only use admin-created global presets.</p>
|
||||
</section>
|
||||
<section class="settings-section">
|
||||
<h3>Default Model</h3>
|
||||
<div class="form-group">
|
||||
<select id="adminDefaultModel">
|
||||
<option value="">— None (first visible) —</option>
|
||||
</select>
|
||||
</div>
|
||||
<p class="section-hint">Model selected by default for new users or when a saved model is no longer available.</p>
|
||||
</section>
|
||||
<section class="settings-section">
|
||||
<h3>Environment Banner</h3>
|
||||
<label class="checkbox-label"><input type="checkbox" id="adminBannerEnabled"> Show environment banner</label>
|
||||
@@ -583,85 +685,6 @@
|
||||
</div>
|
||||
|
||||
<!-- ── Notes Modal ────────────────────────── -->
|
||||
<div class="modal-overlay" id="notesModal">
|
||||
<div class="modal modal-wide">
|
||||
<div class="modal-header">
|
||||
<h2>Notes</h2>
|
||||
<div class="notes-header-actions">
|
||||
<button class="btn-small" id="notesSelectModeBtn">Select</button>
|
||||
<button class="btn-small btn-primary" id="notesNewBtn">+ New Note</button>
|
||||
<button class="modal-close" onclick="closeModal('notesModal')">✕</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notes-toolbar">
|
||||
<div class="notes-search-wrap">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
|
||||
<input type="text" id="notesSearchInput" placeholder="Search notes..." autocomplete="off">
|
||||
</div>
|
||||
<select id="notesFolderFilter" class="notes-filter-select">
|
||||
<option value="">All folders</option>
|
||||
</select>
|
||||
<select id="notesSortSelect" class="notes-filter-select" title="Sort by">
|
||||
<option value="updated_desc">Updated ↓</option>
|
||||
<option value="updated_asc">Updated ↑</option>
|
||||
<option value="created_desc">Created ↓</option>
|
||||
<option value="created_asc">Created ↑</option>
|
||||
<option value="title_asc">Title A–Z</option>
|
||||
<option value="title_desc">Title Z–A</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="notes-selection-bar" id="notesSelectionBar" style="display:none">
|
||||
<label class="notes-select-all"><input type="checkbox" id="notesSelectAll"> <span id="notesSelectedCount">0</span> selected</label>
|
||||
<button class="btn-small btn-danger" id="notesDeleteSelectedBtn">Delete selected</button>
|
||||
<button class="btn-small" id="notesCancelSelectBtn">Cancel</button>
|
||||
</div>
|
||||
<div class="modal-body notes-body">
|
||||
<!-- List view (default) -->
|
||||
<div id="notesListView">
|
||||
<div id="notesList" class="notes-list">
|
||||
<div class="notes-empty">No notes yet. Create one or ask the AI to save a note.</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Editor view (hidden by default) -->
|
||||
<div id="notesEditorView" style="display:none">
|
||||
<div class="notes-editor">
|
||||
<div class="notes-editor-toolbar">
|
||||
<button class="notes-back-btn" id="notesBackBtn">← Back to list</button>
|
||||
<div class="notes-mode-toggle">
|
||||
<button class="btn-small" id="noteEditBtn" style="display:none">Edit</button>
|
||||
<button class="btn-small" id="notePreviewBtn" style="display:none">Preview</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Read mode: rendered markdown -->
|
||||
<div id="noteReadMode" style="display:none">
|
||||
<h3 class="note-read-title" id="noteReadTitle"></h3>
|
||||
<div class="note-read-meta" id="noteReadMeta"></div>
|
||||
<div class="note-read-content msg-text" id="noteReadContent"></div>
|
||||
<div class="notes-editor-actions">
|
||||
<button class="btn-small btn-primary" id="noteEditBtn2">Edit</button>
|
||||
<button class="btn-small btn-danger" id="noteDeleteBtn2" style="display:none">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Edit mode: form fields -->
|
||||
<div id="noteEditMode">
|
||||
<div class="form-group"><input type="text" id="noteEditorTitle" placeholder="Note title" class="notes-title-input"></div>
|
||||
<div class="form-row">
|
||||
<div class="form-group"><input type="text" id="noteEditorFolder" placeholder="Folder (e.g. /work/meetings)" class="notes-folder-input"></div>
|
||||
<div class="form-group"><input type="text" id="noteEditorTags" placeholder="Tags (comma-separated)" class="notes-tags-input"></div>
|
||||
</div>
|
||||
<div class="form-group"><textarea id="noteEditorContent" rows="12" placeholder="Note content (Markdown supported)..." class="notes-content-input"></textarea></div>
|
||||
<div class="notes-editor-actions">
|
||||
<button class="btn-small btn-primary" id="noteSaveBtn">Save</button>
|
||||
<button class="btn-small" id="noteCancelEditBtn" style="display:none">Cancel</button>
|
||||
<button class="btn-small btn-danger" id="noteDeleteBtn" style="display:none">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Debug Modal (Ctrl+Shift+L) -->
|
||||
<div class="modal-overlay" id="debugModal">
|
||||
<div class="modal debug-modal">
|
||||
|
||||
Reference in New Issue
Block a user