experiments in a post-browser web
10
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(editor): add :w and :wq vim ex-commands for save and save+close

+42 -7
+5 -5
app/page/index.html
··· 51 51 @keyframes loading-glow { 52 52 0%, 100% { 53 53 box-shadow: 54 - inset 0 0 0 1px rgba(255, 255, 255, 0.06), 55 - 0 0 8px rgba(120, 160, 255, 0.05); 54 + inset 0 0 0 1px rgba(140, 170, 255, 0.15), 55 + 0 0 12px rgba(120, 160, 255, 0.08); 56 56 } 57 57 50% { 58 58 box-shadow: 59 - inset 0 0 0 1px rgba(255, 255, 255, 0.12), 60 - 0 0 15px rgba(120, 160, 255, 0.12); 59 + inset 0 0 0 1.5px rgba(140, 170, 255, 0.3), 60 + 0 0 20px rgba(120, 160, 255, 0.2); 61 61 } 62 62 } 63 63 64 64 webview.loading { 65 65 opacity: 1; 66 - background: rgba(255, 255, 255, 0.02); 66 + background: rgba(255, 255, 255, 0.03); 67 67 animation: loading-glow 2s ease-in-out infinite; 68 68 } 69 69
+35
extensions/editor/home.js
··· 260 260 editorLayout.setSaveStatusVisible(true); 261 261 } 262 262 263 + // Register vim ex-commands for :w and :wq 264 + Vim.defineEx('write', 'w', () => { 265 + if (!currentItemId) { 266 + debug && console.log('[editor:vim] :w — no item to save'); 267 + return; 268 + } 269 + const content = editorLayout.getContent(); 270 + // Cancel any pending autosave — we're saving now 271 + if (saveTimer) { 272 + clearTimeout(saveTimer); 273 + saveTimer = null; 274 + } 275 + performAutosave(content); 276 + debug && console.log('[editor:vim] :w — saved'); 277 + }); 278 + 279 + Vim.defineEx('wq', 'wq', async () => { 280 + if (currentItemId) { 281 + const content = editorLayout.getContent(); 282 + if (saveTimer) { 283 + clearTimeout(saveTimer); 284 + saveTimer = null; 285 + } 286 + await performAutosave(content); 287 + debug && console.log('[editor:vim] :wq — saved'); 288 + } 289 + // Close the editor window 290 + if (api?.window?.close) { 291 + api.window.close(); 292 + } else { 293 + window.close(); 294 + } 295 + debug && console.log('[editor:vim] :wq — closing window'); 296 + }); 297 + 263 298 // Set up escape handler 264 299 // 265 300 // Vim mode ESC cascade:
+2 -2
extensions/tentacles/manifest.json
··· 1 1 { 2 2 "id": "tentacles", 3 3 "shortname": "tentacles", 4 - "name": "Tentacles", 5 - "description": "Animated tentacles that occasionally creep in from screen edges and flee from the cursor", 4 + "name": "Help docs", 5 + "description": "Helpful documentation and assistance features", 6 6 "version": "1.0.0", 7 7 "background": "background.html", 8 8 "builtin": true