experiments in a post-browser web
10
fork

Configure Feed

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

docs: sync TODO.md from peek-todo.md

+591 -9
+28 -9
TODO.md
··· 1 1 # Peek TODO 2 2 3 3 ## How we work 4 + 4 5 - We track pending items in this file 5 6 - In-progress work and current focus goes in WIP.md 6 7 - Completed items go in CHANGELOG.md, grouped by week ··· 201 202 ## Metadata, QS and reflection 202 203 203 204 - [ ] tabstats for peek 204 - - [ ] a page of widgets 205 + - [ ] view: a page of different widgets showing this info, or a hud/dashboard 205 206 206 207 ## Files-ness 207 208 ··· 250 251 251 252 ## Notes & Editor 252 253 253 - Editor 254 - - [ ] include by default from ~/misc/peek-editor 255 - - [ ] support for paste operations 256 - - [ ] settings option for url to external editor (expects peek connector support), defaults to built-in address 254 + Description and core requirements 255 + - editor that can be used standalone or embedded 256 + - markdown by default 257 + - vim mode as global configuration option 258 + - custom folding approach 259 + - supports peek connectors (mime in -> edit -> mime out) 260 + 261 + Used for 262 + - editing notes 263 + - editing in command chaining interstitials (edit cmd can apply to anything text-ish) 264 + - OS level handler for editing files on filesystem 265 + 266 + Implementation 267 + - [ ] import from ~/misc/peek-editor, put in ./extensions/editor for now 268 + - [ ] evaluate using raw codemirror which is like “toolkit for an editor" 269 + - [ ] evaluate using https://github.com/MarkEdit-app/MarkEdit or its approach 270 + 271 + Features 272 + - [ ] add support for paste operations 273 + - [ ] settings option for url to external editor (expects peek connector support), defaults to built-in editor 257 274 - [ ] tags in content detected, added/removed from tag system 258 275 259 276 Notes app ··· 277 294 ## Groups & Tags UX 278 295 279 296 - [ ] Define relationship between page groups and tags (are they the same? different views?) 297 + - [ ] new page while in group mode adds to that group 280 298 281 299 Groups 282 300 - [ ] Visually communicate group-active (a "mode"? see Mode/scope section) ··· 425 443 - [ ] OpenSearch 426 444 427 445 Web extensions 428 - - [ ] WebExtension integration for priority only, on some platforms 429 - - [ ] ubo 430 - - [ ] proton pass 431 - - [ ] bpc 446 + - [ ] WebExtension integration for priority only, on some platforms, some back-ends 447 + - [ ] Electron first, using https://github.com/samuelmaddock/electron-browser-shell/tree/master/packages/electron-chrome-extensions 448 + - [ ] uBlock Origin 449 + - [ ] Proton Pass 450 + - [ ] Bypass Paywalls Clean 432 451 433 452 ## Feeds, time-series, scripts 434 453
+563
peek-todo.md
··· 1 + # Peek TODO 2 + 3 + ## How we work 4 + 5 + - We track pending items in this file 6 + - In-progress work and current focus goes in WIP.md 7 + - Completed items go in CHANGELOG.md, grouped by week 8 + - This file is not for notes or description - link to documents in ./notes for that 9 + - Checkbox states: `- [ ]` pending, `- [~]` in-progress (move to WIP.md), `- [x]` done (move to CHANGELOG.md) 10 + 11 + ## Design principles 12 + 13 + core 14 + - feels like home: trust, comfort, control 15 + - continuous instances of magical mind-reading 16 + - sleep at night because no idea or anything you saw is ever lost 17 + - create, save, classify at the speed of thought 18 + 19 + what makes a home 20 + - everything is right where you need it, b/c you control what is where 21 + - when you know what is where, you can make things without frustration 22 + 23 + synthesis 24 + - frecency + adaptive matching gives experience/feeling of magical mind-readingness 25 + - ability to customize/create/generate interfaces gives the comfort of home 26 + 27 + cf 28 + - bulthaup - german kitchen company w/ designs based on carpentry workshops 29 + 30 + the rules 31 + - files > arcane/opaque boxes/formats 32 + - metadata can be weird non-file, as long as consistent 33 + - external systems require consent to touch my stuff (eg http caching rules) 34 + 35 + ## Unfiled 36 + 37 + context 38 + - [ ] implement old context plan eg https://www.reddit.com/r/hackernews/comments/1qddidm/sun_position_calculator/ 39 + 40 + server 41 + - [ ] edgeworkernode/server vs what we got now? both? lite-version, or this it? 42 + 43 + peeks on links 44 + - [ ] click modifier to one-off peek a link 45 + - [ ] anchored to cursor w/in window bounds 46 + - [ ] as an extension? hotkey + page viewer 47 + 48 + once we have cardinal ui 49 + - [ ] option to flash keyboard shortcuts on screen 50 + - [ ] pop up a board of built-in shortcuts/actions 51 + - [ ] pop up a board of common shortcuts/actions you use 52 + 53 + ## Addessibility / Core history / feeds 54 + 55 + For record/replay, daily ribbon, state feedback loops and observability, etc we need a complete chained history. 56 + All of those require addressibility of all primary actions, and connections to prev/next actions. 57 + Includes any peek:// invocation and parameters passed. 58 + May require the connector/parameter context for each invocation, tbd. 59 + Requires explicit chaining. 60 + 61 + Review against impl 62 + - [ ] step counter: app level interaction tracing/counting. when is reset? when does action end and new one start? 63 + - [ ] peeks/slides as tagged addresses with metadata properties? or urls? 64 + 65 + ## UI Componentry 66 + 67 + Right now we're replicating/forking html and js across extensions. 68 + 69 + problems 70 + - messy, error prone, poor DRY practice 71 + - also means we can't generatively and rapidly build out UIs without whole new piles of html/js/css to manage 72 + 73 + What it is 74 + - flexible / reusable system at the ./app layer 75 + - extensions use for creating/generating interfaces 76 + - can override/overlay/inject styling 77 + - easy to make system-consistent ux and themed visual design 78 + - loosely coupled system with deterministic management 79 + - like a set of prebuilt controls 80 + - designed for single-component, or sets 81 + - binds to data source, is reactive to it (events, event-sources, streams, our feed system) 82 + 83 + what it isn't 84 + - designed for complex document hierarchies 85 + - js components React-style 86 + 87 + usage 88 + - callers instanciate a control 89 + - provide schema/data into a control which has a default template 90 + - template can be replaced by caller 91 + 92 + examples/use-cases 93 + - groups, tag ui and windows viewer are all card grids 94 + - chaining is command components + card popups with lists, editors, previews, etc 95 + - after atproto support, this could be used to bind lexicons + data for generated viewing/CRUD interfaces. 96 + - see the Window templates section of this file 97 + - see the Pagestream section of this file 98 + - see the Chaining section of this file 99 + - see the Notes/Editor section of this file 100 + - see the Web page experience section of this file 101 + - see the Unfiled section of this file 102 + - see the Commands section of this file 103 + 104 + implementation 105 + - use https://open-ui.org/ as much as possible, should cover a lot, eg, buttons, card/grid, cmd, carousels 106 + - see ~/sync/Sites/base for experiments w/ hud etc 107 + 108 + reactive schema+card+data system 109 + - [ ] cards + json schema + data 110 + - [ ] no hierarchy, just single component to start, renders to markup 111 + - [ ] instantiatable with data 112 + - [ ] receive updates to refresh 113 + 114 + integration 115 + - [ ] determine how extensions will import from core 116 + - [ ] determine how consumers will apply styles 117 + - [ ] explore node reuse/recycle approaches 118 + 119 + ui 120 + - [ ] button 121 + - [ ] button set (eg for tag boards/sets) 122 + - [ ] card 123 + - [ ] list 124 + - [ ] grid 125 + - [ ] vertical carousel of cards (like a chat view w/ interactable focus card) 126 + - [ ] horizontal carousel of cards (eg for command chaining, day ribbons) 127 + - [ ] image viewer 128 + - [ ] command input 129 + - [ ] command suggestion 130 + - [ ] command preview pane 131 + - [ ] search/filters on enumerable items (list, grid) 132 + - [ ] editor 133 + - [ ] column/columns 134 + 135 + initial porting 136 + - [ ] groups -> card/cards 137 + - [ ] tags -> card/cards 138 + - [ ] tag sets -> button set 139 + - [ ] cmd -> command input/suggestions 140 + - [ ] cmd chaining -> horizontal carousel, list 141 + 142 + popup carousel system 143 + - [ ] horizontal and vertical carousel components 144 + - [ ] see ~/sync/Sites/base/hud.html/css/js for basic ui system 145 + - [ ] active item focused in popup 146 + - [ ] arrow controls and vim directionals 147 + - [ ] port cmd chaining to horizontal carousel popups 148 + - [ ] port cmd previews to vertical carousel popups 149 + 150 + button sets 151 + - [ ] set of buttons 152 + - [ ] up/depressed states 153 + - [ ] x endcap option 154 + 155 + tags 156 + - [ ] all built on buttons and button sets 157 + - [ ] tag input field 158 + - [ ] combo of selected tags, input w/ filtering search, available tags 159 + 160 + ## Modes/scopes 161 + 162 + notes 163 + - Pages have a specific mode, with specific hotkeys, etc. 164 + - Commands like "theme dark here" operate on the "target window". 165 + - Target window is usually what the user was looking at before opening cmd. 166 + - Currently this works but there's no visual indication. 167 + 168 + examples 169 + - web page viewing has a mode w/ special actions and hotkeys 170 + - when "in" a group, we need special mode optimized for working w/ the group's set of pages 171 + - cmd might operate differently depending on if it's in a mode or not 172 + 173 + - [ ] How to do page "mode" (for example) with conditional context/hotkeys/actions 174 + - [ ] Should commands declare `scope: 'window' | 'page' | 'global'` in registration? 175 + - [ ] How does cmd indicate scope/target? 176 + - [ ] eg "Target: [window title]" header when window-scoped command is selected? 177 + 178 + ## Web page experience (reviewme: partially done) 179 + 180 + Page loading core 181 + - [ ] how to load pages - raw browserwindow (what we do now), webview in a default transparent page that hosts overlay?? 182 + - [ ] overlay infrastructure for showing metadata, security info 183 + - [ ] interaction with cmd actions (page mode again?) 184 + 185 + Basic nav etc 186 + - [ ] hotkey to select url 187 + - [ ] back/forward 188 + - [ ] reload 189 + - [ ] undo last close 190 + - [ ] if url selected in cmd is open in a window already, switch to it (for now) 191 + 192 + Page info/metadata/action widgets (depends on window templates maybe?) 193 + - [ ] defaults, eg sec ui 194 + - [ ] metadata (og, whatnot) 195 + - [ ] media (imgs, rss, etc) 196 + - [ ] actions (new extension cmd type?) 197 + - [ ] scripts (tbd) 198 + 199 + Titlebar 200 + - [ ] show titlebar on hover at top edge of window for all pages 201 + 202 + ## Metadata, QS and reflection 203 + 204 + - [ ] tabstats for peek 205 + - [ ] view: a page of different widgets showing this info, or a hud/dashboard 206 + 207 + ## Files-ness 208 + 209 + - [ ] access to notes folder(s) on filesystem to import+sync 210 + - [ ] syncing peek-only ontes as markdown files in specified dir (or library, boo) 211 + - [ ] import signal note-to-self archive into peek notes 212 + 213 + ## Accounts/profiles/sync safety/fidelity 214 + 215 + api key (accounts) 216 + - [ ] how initiated (manually my operator only for now, just document it) 217 + 218 + syncing history 219 + - [ ] how to sync/merge frencency and adaptive matching? 220 + 221 + ## Extension dev 222 + 223 + - [ ] shared libs, eg utils 224 + - [ ] language: call them feature or apps? other? extensions? mods? 225 + 226 + ## Izui 227 + 228 + - [ ] formalize model 229 + - [ ] make izui stack manager (part of window mgr?) 230 + - [ ] esc stack: from feature settings back to core settings 231 + - [ ] add to izui stack (and ix w/ history?) 232 + - [ ] interactions/sec-policy between peek:// and other 233 + 234 + ## Polish 235 + 236 + - [ ] (already done?) if no api key set, sync settings are disabled, and pull-to-sync on mobile 237 + 238 + ## Window templates 239 + 240 + - [ ] declarative sets of ui components? 241 + - [ ] eg page info hud overlay (~/sync/Sites/base/) 242 + - [ ] explode: windows using groups ui with transparent background and vi directionals, enter opens 243 + - [ ] tile/untile, eg the Explode extension 244 + 245 + ## Pagestream 246 + 247 + - a new peek web navigational system 248 + - vertical up/down chat-style history of pages/actions 249 + - left/right for page-specific stuff 250 + - maybe uses carousels + window template from ui componentry? 251 + 252 + ## Notes & Editor 253 + 254 + Description and core requirements 255 + - editor that can be used standalone or embedded 256 + - markdown by default 257 + - vim mode as global configuration option 258 + - custom folding approach 259 + - supports peek connectors (mime in -> edit -> mime out) 260 + 261 + Used for 262 + - editing notes 263 + - editing in command chaining interstitials (edit cmd can apply to anything text-ish) 264 + - OS level handler for editing files on filesystem 265 + 266 + Implementation 267 + - [ ] import from ~/misc/peek-editor, put in ./extensions/editor for now 268 + - [ ] evaluate using raw codemirror which is like “toolkit for an editor" 269 + - [ ] evaluate using https://github.com/MarkEdit-app/MarkEdit or its approach 270 + 271 + Features 272 + - [ ] add support for paste operations 273 + - [ ] settings option for url to external editor (expects peek connector support), defaults to built-in editor 274 + - [ ] tags in content detected, added/removed from tag system 275 + 276 + Notes app 277 + - [ ] see all notes 278 + - [ ] filtering search on notes 279 + - [ ] click to edit 280 + - [ ] how to address a specific note in the editor? 281 + - [ ] maybe we need path or name-based ways of addressing "docs" in datastore? 282 + 283 + Integrations 284 + - [ ] local dir sync 285 + - [ ] import macos stickies 286 + 287 + Stickies 288 + - [ ] cards layout primitive (requires UI componentry?) 289 + - [ ] "pin" notes to stickies using a tag 290 + 291 + Requires chaining and connectors 292 + - [ ] List editor 293 + 294 + ## Groups & Tags UX 295 + 296 + - [ ] Define relationship between page groups and tags (are they the same? different views?) 297 + - [ ] new page while in group mode adds to that group 298 + 299 + Groups 300 + - [ ] Visually communicate group-active (a "mode"? see Mode/scope section) 301 + - [ ] Determine which new-page routes qualify for staying in group vs not 302 + - [ ] When group-active, qualifying new pages are automatically tagged as in the group 303 + - [ ] Determine how/when to exit group for new pages opened (eg from external app) 304 + 305 + mobile 306 + - [ ] filtering search of tags in tag input box 307 + - [ ] view tag groups 308 + 309 + cmd 310 + - [ ] port tagging ui from mobile, eg: 311 + - [ ] see and be able to remove already added tags 312 + - [ ] input box for typing new tags and filtering unselected tag list 313 + - [ ] unselected tag list, each as clickable button 314 + 315 + tagsets 316 + - [ ] 317 + 318 + general 319 + - [ ] space vs group (language) 320 + 321 + desktop 322 + - [ ] figure out group mode (maybe needs cmd+l) 323 + - [ ] groups header overhaul 324 + 325 + ## Commands 326 + 327 + - [ ] detect URL input without http(s):// prefix, auto-add https:// and open 328 + - [ ] command tags {str} to load tag in group view 329 + - [ ] peek addresses as cmds by title (http too?) 330 + - [ ] cmd/peek history (they don't show up in cmd!) 331 + - [ ] map cmd using OSM 332 + - [ ] open kagi via cmd 333 + - [ ] search history via cmd 334 + - [ ] all commands as a button board 335 + 336 + - [ ] app+browser history swiss army knife for querying and generating url lists via chaining, saving for offline (->txt) etc, maybe using connectors 337 + 338 + 339 + ## Chaining / Connecting 340 + 341 + Now that we have commands, we need to be able to chain them together for more complex "workbench-y" interactions. Chaining reqs inputs/outputs (eg activities/intents/applets), so that API unlocks the rest. 342 + 343 + Example flow: 344 + - open a web page 345 + - cmd: show lists -> shows list of lists detected in the page 346 + - arrow up/down and choose one -> shows preview of the selected list 347 + - cmd: csv -> shows preview of csv 348 + - cmd: save file -> prompts to download 349 + 350 + - [ ] Connector API: Chaining reqs inputs/outputs (eg activities/intents/applets) 351 + - [ ] Determine if this should be a new API or reuses command registration 352 + - [ ] Extension API to register as a connector handler for a set of mime/types 353 + - [ ] Extension API to emit data to handlers for the specified mime type output (or maybe we allow multiple like the web clipboard API does) 354 + - [ ] Cmd support for chaining flow using "connectors" 355 + - [ ] Add Connector Handler support, so data can move one-way from a command to another 356 + - [ ] Filter first on mime type matches 357 + - [ ] Policy for determing best matching command order (using frecency + adaptive matching) 358 + - [ ] Support previewing of the data in between steps 359 + - [ ] Modular system for plugging renderers in for generating previews/editors of mime types 360 + - [ ] Doesn't need to be an extension API yet, but we'll need a way for that later maybe 361 + - [ ] Preview panel is visually connected to the cmd panel, which should stay visible or visually connected somehow 362 + - [ ] Cmd UI updates 363 + - [ ] Cmd panel can show dropdown listing matching commands 364 + - [ ] User can navigate list w/ arrow up/down, j/k and tab/shift-tab 365 + - [ ] If cmd response has a previewAddress property, show a preview pane w/ that address 366 + 367 + examples 368 + - [ ] execute a command which executes a userScript against a loaded page, detects list/table-ish things (with previews), lets you select one, which it exports as a "list" out (CSV? JSON?) 369 + - [ ] links on page -> list -> button cloud -> kb activate (then shorten to "link cloud" cmd) 370 + - [ ] compound cmds (like "link cloud". uses chaining? like a chain package?) 371 + 372 + ## Media: images/videos, favicon/screenshot cache 373 + 374 + Media storage architecture 375 + - [ ] review use-cases for images/videos/favicons/screenshot 376 + - [ ] files or other, hybrid? 377 + - [ ] addressing scheme 378 + - [ ] platform-specific integrations (eg mobile) 379 + 380 + Image saving 381 + - [ ] media storage for images 382 + - [ ][mobile] complete image sharing/tag-editing/viewing support 383 + 384 + - [ ] store screenshots and favicons for any page loaded through window system 385 + - [ ] save on disk in profile 386 + - [ ] investigate how media caches store/address for url-based high performance lookup 387 + - [ ] store location of files as url metadata 388 + - [ ] integrate lookups in groups, url cards, page info, etc 389 + 390 + - [ ] per-profile favicon cache dir 391 + - [ ] take and save favicon of any address loaded through window system 392 + - [ ] store in profile favicon cache, and save location as metadata record on the address 393 + 394 + - [ ] per-profile screenshot cache dir 395 + - [ ] take and save screenshot of loaded windows for any new address 396 + - [ ] store in profile screenshot cache, and save that as metadata record on the address 397 + 398 + ## Extension back-end 399 + 400 + - [ ] tbd 401 + 402 + ## Server Backend 403 + 404 + agent mode 405 + - [ ] agent mode: explore running application logic in a headless node 406 + 407 + diagnostics 408 + - [ ] diagnostic/status API: resource usage, overall disk usage, per-user disk stats, request volume and data types 409 + - [ ] make widget on desktop 410 + 411 + misc 412 + - [ ] Add migration dry-run mode 413 + - [ ] Add automatic backup cleanup after grace period 414 + 415 + ## harvester / hearts and stars 416 + 417 + - [ ] push all services to peek node webhook, eg bsky like, reddit, oauthwonderwall? 418 + 419 + ## Mobile 420 + 421 + - [ ] in url saves/views, show oembed, or at least page title 422 + - [ ] for url saves, save title and any other metadata 423 + - [ ] investigate detecting which app a share came from 424 + 425 + ## Session & State Management 426 + 427 + - [ ] export/import 428 + - [ ] session restore 429 + 430 + ## Browser status quo extensibility 431 + 432 + Status quo 433 + - [ ] Browser extensions (limited, to get a couple of popular ones working) 434 + - [ ] Opensearch plugins 435 + - [ ] Quicksearch 436 + - [ ] Bookmark keywords (equivalent) 437 + - [ ] Bookmarklets (equivalent) 438 + - [ ] Userscripts (cf general approach to content/user scripts) 439 + - [ ] Language packs (cf general approach to i18n/l10n) 440 + 441 + Search 442 + - [ ] Local 443 + - [ ] OpenSearch 444 + 445 + Web extensions 446 + - [ ] WebExtension integration for priority only, on some platforms, some back-ends 447 + - [ ] Electron first, using https://github.com/samuelmaddock/electron-browser-shell/tree/master/packages/electron-chrome-extensions 448 + - [ ] uBlock Origin 449 + - [ ] Proton Pass 450 + - [ ] Bypass Paywalls Clean 451 + 452 + ## Feeds, time-series, scripts 453 + 454 + - [ ] API for logging outputs to datastore (time series data, feeds) 455 + - [ ] Command support for blocking on a content script running 456 + - [ ] Extension api for executing arbitrary scripts against a page 457 + - [ ] Timeouts for page scripts in commands 458 + - [ ] Support for scheduling scripts (or maybe that's just in the extension... harder to manage tho) 459 + - [ ] Page load triggers for background scripts 460 + 461 + - [ ] tag streaks -> atproto streaks (feeds + daytum) 462 + - [ ] hud for system data (number of windows, etc - using timeseries/feeds in datastore + page metadata / daytum / widgets framework) (widget sheets? kinda like window manager views/templates?) 463 + 464 + ## Entity centrism (NER streams) 465 + 466 + - [ ] get people, places, dates/times/events 467 + - [ ] get meaningful numbers, and their label 468 + - [ ] extract a table as csv 469 + - [ ] layer outside of web page, and in between pages (eg event page -> event -> any calendar page) 470 + 471 + 472 + - [ ] Entity catalog definition (eg Wikidata defs, or custom to start?) 473 + - [ ] Datastore support 474 + - [ ] Basic NER testing (regex, etc) 475 + - [ ] Page metadata viz 476 + - [ ] Entity search/browse 477 + - [ ] ML NER 478 + 479 + ## Archiving / expiration 480 + 481 + - [ ] archived notes (lower score, hidden by default) 482 + 483 + ## Sorting/scoring/magic 484 + 485 + Generally default is based on the old Firefox "awesomebar" scoring/search algorithms. 486 + Frecency + adaptive matching. 487 + The app *learns* you, and what you want magically appears w/o AI as requirement. 488 + 489 + ## Desktop Performance 490 + 491 + - [ ] Reduce startup time (currently ~550ms build) 492 + - [ ] Pre-compiled TypeScript: skip tsc during dev if no changes 493 + - [ ] Lazy extension loading: load on first access instead of startup 494 + - [ ] Suspend inactive tabs (reduce memory for background pages) 495 + - [ ] Performant BrowserWindow unloading (fully release resources when not needed) 496 + 497 + ## Identity and privacy 498 + 499 + keys 500 + - [ ] server-less identity system 501 + - [ ] key backup/restore/rotation 502 + 503 + encrypted storage 504 + - [ ] account unlocks its profiles 505 + - [ ] profile switching/opening screen 506 + 507 + point-of-use privacy 508 + - [ ] private items, eg gift ideas, cf archived - visible with magic tag (which itself doesn't show in history) 509 + - [ ] private links - click not tracked, opens page in private mode 510 + - [ ] private profiles 511 + 512 + ## Demos / Tutorials / Comms 513 + 514 + Demo reel 515 + - [ ] Define demo reel 516 + - [ ] Peeks: translate, calendar, ai chat, currency conversion, everytimezone, tldraw 517 + - [ ] Slides: soundcloud, crypto prices, notepad, todo list 518 + - [ ] Scripts: stock price, weather change 519 + 520 + ## History 521 + 522 + - [ ] history views (again using groups ui, maybe plug that into an extension itself?) 523 + 524 + History (depends on ui primitives) 525 + - [ ] history viewer 526 + - [ ] history search 527 + - [ ] Infinite lossless personal encrypted archive of web history 528 + 529 + ## Publishing, Provenance, Remote Extensions 530 + 531 + - [ ] share system 532 + - [ ] poke at remote loading + provenance 533 + - [ ] publish pages/apps? 534 + - [ ] local publishing w/ Helia or something like this 535 + 536 + ## Minimum viable web workbench 537 + 538 + - [ ] Design philosophy write-up w/ driving principles and characteristics 539 + - [ ] Multi-protocol architecture 540 + - [ ] Content publishing 541 + - [ ] Event model 542 + - [ ] Chaining 543 + - [ ] Images 544 + - [ ] Lists/feeds 545 + 546 + ## Devtools 547 + 548 + - [ ] Devtools button in extension settings cards (open devtools for extension window) 549 + - [ ] Devtools command to open devtools for a specific extension or window 550 + - [ ] Fix `api.extensions.devtools()` - currently not working for consolidated extensions 551 + 552 + ## Later 553 + 554 + storage backends 555 + - [ ] try DuckDB as datastore storage backend instead of SQLite 556 + 557 + - [ ] Identities system 558 + - [ ] Contacts integration 559 + - [ ] Collaboration 560 + 561 + desktop 562 + - [ ] Tray work 563 +