···11# Peek
2233-A web user agent for using the web where, when, and how you want.
33+Peek is a web user agent application designed for using the web where, when and how you want.
4455-Peek is not a browser. It's a workbench for experimenting with task-aligned interfaces for the web - making it easy to create new UI shapes for the web that fit your needs in the moment.
55+Today's browsers are one-size-fits-all applications, cramming the vast universe of user needs across an unimaginably large web into in an unmodifiable tabbed-window design.
6677-**Status:** Concept preview. Not safe for daily use. No security audit.
77+Peek is a web user agent that is a workbench for experimenting with task alignment - making it easy to create new user interface shapes for the web which fit our need in the moment.
88+99+We often use the web with a specific goal in mind - that goal should drive the design of the interface of the web user agent.
810911<img width="969" alt="settings screenshot" src="settings-screenshot.png">
10121313+## Important notes
1414+1515+___PEEK IS NOT A WEB BROWSER___
1616+1717+Peek is not a web browser, and will never be a browser in the way you are probably familiar with: There are no tabs, and no windows in the tabbed-browser-like sense of them. Peek likely does not have many other of many details we are used to in web browsers, but do not notice until they are missing. Peek may be most useful to you if you view it as an entirely different type of application than a traditional web browser.
1818+1919+___PEEK IS A CONCEPT PREVIEW___
2020+2121+Peek is not safe for daily use yet! It is a proof of concept. Do not use it for anything critical. Peek does not have the same security approach as traditional web browsers, and its security model and security user interface have not yet been determined. Peek has not had a security audit.
2222+1123## Features
12241313-- **Peeks** - Keyboard-activated modal web pages (`Opt+0-9`)
1414-- **Slides** - Gesture-activated pages that slide in from screen edges (`Opt+arrows`)
1515-- **Scripts** - Background page monitors that extract and track data
1616-- **Commands** - Command palette for opening pages and executing actions
1717-- **Groups** - Tag-based page organization (like Firefox Panorama)
1818-- **Sync** - Cross-device sync between desktop, mobile, and server
2525+You can use Peek in a few ways, with more coming:
2626+2727+- Peeks - Keyboard-activated modal chromeless web pages for quickly glancing at or interacting with pages
2828+- Slides - Keyboard- or gesture-activated modal chromeless web pages which slide in from any screen edges
2929+- Scripts - Scripts periodically executed against a web page in the background which extract data for you to route to other pages or applications, or to aggregate, store and process later
3030+3131+In progress, or thinking about:
3232+3333+- Commands - a graphical command entry palette (GCLI) for opening pages or executing commands against them
3434+- Groups - a way to categorize, recall and interact with groups of pages
3535+- "native" web apps - using Peek as a way to "install" web pages on the local device, as separate applications instead of just separate processes
3636+- "Peeklets" HUD - select parts of pages to add to collection which are rendered as an overlay, toggled by shortcut
3737+3838+### Usage
3939+4040+- Settings
4141+ * In app, `Cmd/Ctrl+r,` or launch app to open settings, or click tray icon
4242+ * Configure Peeks/Slides/Scripts in settings
4343+- Peeks
4444+ * `Opt+0-9` to open Peeks
4545+- Slides
4646+ * `Opt+←→↑↓` to open Slides
4747+4848+### Peeks
4949+5050+Peeks are keyboard activated modal chromeless web pages mapped to `Opt+0-9` and closed on blur, the `Escape` key or `cmd/ctrl+w`.
5151+5252+### Slides
5353+5454+Slides are gesture activated modal chromeless web pages which slide in from left/right/bottom/top, and closed on blur, the `Escape` key or `cmd/ctrl+w`.
5555+5656+### Scripts
5757+5858+Scripts periodically load a web page in the background and extract data matching a CSS selector, stores it, and notify the user when the resulting data changes.
5959+6060+Ok, so not really "scripts" yet. But safe and effective enough for now.
6161+6262+## Design
6363+6464+Many user tasks on the web are either transient, chained or persistent, data oriented, or some mix of those. Neither the document-oriented nor application-centric web meets those needs. Traditional browser makers can't meet those needs well, for many reasons.
6565+6666+Characteristics of how we use the web, that are not addressed in contemporary web browsers:
6767+6868+- transient
6969+- chained
7070+- persistent
7171+- data-centric
7272+- archival / evidential
7373+7474+Some thoughts driving the design of Peek:
7575+7676+- Web user agents should be bounded by the user, not browser vendor business models
7777+- Windows and tabs should have died a long time ago, a mixed metaphor constraining the ability of the web to grow/thrive/change and meet user needs
7878+- Security user interface must be a clear articulation of risks and trade-offs, and users should own the decisions
7979+8080+### Escape IZUI
8181+8282+TODO: articulate the escape-to-leave aspect, eg you can peek from *other* applications and ESC to go back to exactly where you were without breaking the task flow.
19832020-## Quick Start
8484+Escape is an inverted zooming user interface (IZUI) design for a flexible window manager that makes possible a web user agent application than can have multiple entry points and a heterogeneous windowing ecosystem.
21852222-```bash
2323-# Requirements: Node.js 24+
2424-nvm use 24
8686+IZUI vs ZUI
25872626-# Install and run
2727-yarn install
2828-yarn debug # Development mode with devtools
2929-yarn start # Normal mode
3030-```
8888+* ZUIs navigate by starting from a known root and user navigates by zooming ever further in, and then back out
8989+* Escape can enter a window stack at any point, and via a variety of methods, often from outside the application
9090+* Instead of navigating by zooming in, all interfaces can zoom out to go back, using the Escape key
9191+* This design allows unbounded and diverse entry points, but with predictable behavior
9292+* Regardless of the entry point, the user always has a consistent path to familiar ground
31933232-See [DEVELOPMENT.md](DEVELOPMENT.md) for full development guide.
9494+Escape navigation model
9595+* navigation base can start at any level in stack
9696+* forward navigations are added on top of stack
9797+* backwards navigations walk the stack in reverse up the tree to the root
33983434-## Architecture
9999+## Architecture / Implementation
351003636-Peek supports multiple backends sharing the same renderer code:
101101+About this space:
102102+103103+- Web pages can themselves be navigators of the web
104104+- Embrace the app-ness of the web platform, as a way to efficiently access the document-ness
105105+- Decouple html+js+css from http+dns+ssl - not entirely, but that trust+security model is not a required starting point
106106+- Javascript is ok here
107107+108108+Peek is designed to be modular and configurable around the idea that parts of it
109109+can run in different environments.
110110+111111+For example:
112112+- Planning on a mobile app which syncs and runs your peeks/slides/scripts
113113+- I'd like to have a decentralized compute option for running your scripts outside of your clients and syncing the data
114114+- Want cloud storage for all config and data, esp infinite history, so can do fun things with it
115115+116116+### Feature extensibility
117117+118118+An extensibility model for achieving "personal web workbench" requires a few things:
119119+- UI extensibility requires OS-level window features beyond what the web allows today (also a baby step towards a minimal OS user interface)
120120+- Data harvest/transform/process/publish requires a method of moving data between features (web apps) *locally*, cf Web Actions/Intents/Applets, MCP, pubsub, MQTT etc
121121+- Portable ways of accessing network, storage and compute, which address
122122+123123+The current implementation has only a few sketches of that world implemented, and has gone through a few iterations:
124124+- first proof of concept was all Electron - so, privileged JS
125125+- second experiment moved each feature to a separate web app running in own window scope, with access to smallest possible custom API, with one main web app loading and orchestrating the others, using pubsub for cross-app communication
126126+- third and current implementation bundles all features into one web app, with access to smallest possible custom API for platform-level capabilities
127127+128128+The web app is loaded into custom scheme of `peek`, which provides access to a few special apis noted in the next section, allows cross-origin network access and other things.
129129+130130+This is not ideal, as the extensibility vector is contributions to core, which too tightly bounds experimentation and innovation.
131131+132132+However it's pretty portable given the small custom API surface area.
133133+134134+It would be nice, but not required, to have some alignment with the WebExtension spec - blur your eyes and they're in a similar direction.
135135+136136+### Peek API
137137+138138+Initially the prototype was all Electron. But that's not interesting, and doesn't
139139+really tell us anything about constraints of the web itself.
140140+141141+So instead I asked this question: What's the minimum capability set that a web app would
142142+need to build the features I need?
143143+144144+The answer, so far, is giving `peek` apps the following APIs:
145145+146146+- window open/close
147147+- global hotkey registration
148148+- pubsub messaging
149149+150150+Custom window api might be able to away entirely, by passing window.open features, working on that.
151151+152152+### Desktop App
153153+154154+Proof of concept is Electron. By far the best option today for cross-platform desktop apps which need a web rendering engine. There's really nothing else remotely suited (yet).
155155+156156+User interface:
157157+- the built-in features are all modal chromeless web pages at this point
158158+- settings UI uses custom sidebar navigation with dark mode support
159159+160160+TODO
161161+- Need to look at whether could library-ize some of what Agregore implemented for non-HTTP protocol support.
162162+- Min browser might be interesting as a forkable base to work from and contribute to, if they're open to it. At least, should look more at the architecture.
163163+164164+## Contribution
165165+166166+- in proto stage
167167+- all dragons, no promises
168168+169169+## Development
3717038171```
3939-peek/
4040-├── app/ # Renderer (backend-agnostic)
4141-├── extensions/ # Built-in extensions
4242-├── backend/
4343-│ ├── electron/ # Desktop (primary)
4444-│ ├── tauri/ # Desktop (Rust alternative)
4545-│ ├── tauri-mobile/ # iOS/Android
4646-│ └── server/ # Sync server (Node.js/Hono)
4747-└── docs/ # Documentation
172172+yarn install
173173+yarn debug
48174```
491755050-## Documentation
176176+### Mobile
511775252-| Doc | Description |
5353-|-----|-------------|
5454-| [DEVELOPMENT.md](DEVELOPMENT.md) | Development setup, commands, architecture |
5555-| [docs/api.md](docs/api.md) | Peek API reference (`window.app`) |
5656-| [docs/extensions.md](docs/extensions.md) | Extension development |
5757-| [docs/datastore.md](docs/datastore.md) | Data storage and schema |
5858-| [docs/sync.md](docs/sync.md) | Cross-device sync |
5959-| [docs/MOBILE.md](docs/MOBILE.md) | Mobile development |
178178+- Quick access to Script output and manual runs, as widgets (or output from cloud runners?)
179179+- Peeks still totes useful here - on mobile is more like "quick dial" features
601806161-## Design Philosophy
181181+### Cloud
621826363-- Web pages can be navigators of the web
6464-- User tasks on the web are transient, chained, persistent, or data-oriented - none well-served by tabbed browsers
6565-- The "Escape IZUI" pattern: enter at any point, ESC always returns to familiar ground
6666-- Minimum viable API surface for web apps to access platform capabilities
183183+- Going full crypto payments for distributed compute on this one.
671846868-See [notes/extensibility.md](notes/extensibility.md) for detailed design notes.
185185+## Papercut / use-case log
691867070-## Contributing
187187+Core high level actions
188188+- open a web page on top/bottom/left/right
189189+- keep web pages persistent in the background
190190+- quickly open a web page modally, and close it
711917272-Concept stage - contributions welcome but expect dragons.
192192+Misc specific
193193+- open bandcamp in a window, move over to 2nd display, accidently close it while moving around between other windows
194194+- recent books or recipes from newsletters i subscribe to (but probably didn't read)
195195+- extract a table from a page periodically, send it somewhere as csv or whatever (chained actions)
196196+- collect microformats, metadata, events
197197+- web page w/ some locations as an input to a map (creates overlay) "map this page"
198198+- be able to see where a book/etc recommendation came from
199199+- save a tweet, with URL / image / relevant text, but not whole page webrecorder style
200200+- "watch local event listings, rate against my music listening patterns and send me shows i might be interested in going to"
201201+202202+Content scripts
203203+- extract+log shazams
204204+- extract+log spotify playlist
205205+206206+Calculators (variant of script + cmd?)
207207+- page -> table
208208+- page -> summary
209209+- page -> microsummaries
210210+- page -> dates
211211+- page -> events
212212+213213+Workflow deconstructing a "why" task flavour of bookmarking
214214+- save https://www.criterionchannel.com/hong-kong-in-new-york
215215+- extract the movies
216216+- get reference metadata for each (?!)
217217+- add to "to watch list", with pointer back to source url
218218+219219+## Groups
220220+221221+- panorama/tabcandy-ish
222222+- all browser history
223223+- smart groups vs curated groups
224224+- autoclustering on topic/date
225225+- escape from a new page enters default group?
226226+227227+Groups + Cmds
228228+- top/bottom inputs for filtering/grouping/etc
229229+- implemented is a cmd input?
230230+- cmds for opening/searching/finding/viewing/filtering/piping
231231+- cmds for moving pages into groups
232232+- groups -> {x} (eg export/pipe) could depend on the chaining/piping bit (see below)
233233+234234+Architecture
235235+- internally is tags?
236236+- static vs dynamic groups tho?
237237+238238+Publishing
239239+- publishing groups as internal/public feeds?
240240+- to pinboard?
241241+242242+## History view/search
243243+244244+A lot of groups work depends on history being in place, and being accessable and annotate-able.
245245+246246+ideally use chromium history
732477474-## License
248248+storage+access
249249+- check out Agregore history viewing approach
250250+- check out state of electron+webext
251251+- other way of accessing underlying chromium history?
252252+253253+features
254254+- awesomebar algo scoring
255255+- adaptive matching
256256+257257+## Chaining / piping
258258+259259+investigate: vague thought re chaining:
260260+- dynamic interstitial representations
261261+- mime type detection?
262262+- eg image previews
263263+- or a table of data
264264+- previews of cmds?
265265+266266+interfaces
267267+- horizontal vs vertical chains
268268+- back/forward navigation?
269269+- each step is a cmd+preview?
270270+- dynamic cmd+previews?
271271+272272+import/export/undo/redo
273273+- record/replay?
274274+- save a chain as a compound action (cmd)?
275275+276276+architecture
277277+- look at web actions/intents/applets
278278+- xml pipeline language
279279+280280+## Mobile
281281+282282+- some of the features don't make sense as-is on mobile
283283+- but maybe quick access on mobile to slides/peeks would be nice
284284+- and seeing output of content scripts, or ability to re-run locally on demand
285285+- needs some sync facility (inevitable anyway)
752867676-MIT
287287+## Use-cases
288288+289289+Peeks
290290+- translate
291291+- calendar
292292+- ai chat
293293+- currency conversion
294294+- everytimezone
295295+- tldraw
296296+297297+Slides
298298+- music: Soundcloud, Hypem
299299+- stock prices
300300+- notepad
301301+- todo list
302302+303303+Scripts
304304+- weather change, eg upcoming weather
305305+- crypto prices
306306+307307+Cmd - web
308308+- open url
309309+- web search
310310+- image search
311311+- conversions?
312312+- ddg !actions
313313+314314+Cmd - system
315315+- search browser history
316316+- set peeks/slides
317317+- open settings
318318+- restart app
319319+- llm prompts
320320+321321+Future
322322+- address something to switch between
323323+- pipe from/to?
324324+325325+Publishing high level
326326+- author web content
327327+- pull in bits from the web
328328+- share preview for feedback
329329+- publish (or at least get output)
330330+331331+Publishing examples
332332+- writing an event recap
333333+334334+Publishing: event recap post
335335+- make a new markdown doc
336336+- sections titled for each video title
337337+- each video's embed code in each section
338338+- navigate around the document for review and updates
339339+- need to easily preview rendered content
340340+- share preview link
341341+- publish (somewhere?)
342342+343343+Music
344344+- commands
345345+- views
346346+- last.fm of my own, to POSSE out
347347+348348+## Unfiled
349349+350350+markdown hot reload previewer w/ toc
351351+- markdown support, with sidebar nav
352352+- reader mode
353353+- hot reload for file:// (other?)
354354+- add side-by-side view
355355+- once md and side-by-side, add side-by-side so the md is the nav, content is the preview
356356+- what's the cmd chain for this?
357357+358358+content types + chaining
359359+- cmd: view as… table, feed, markdown, data points, named entities
360360+- chain: static archive, publish, save, share (os), mailto
361361+- cmd params, eg {url}, which can themselves autocomplete (eg history)
362362+363363+multiprotocol
364364+- at
365365+- ipfs/ipns
366366+- pragmatic addressing+rendering for data (r/d/masl + mime handlers)
367367+368368+broader patterns (chatting w/ luke)
369369+- why do we have to copy/paste?
370370+- devtools and ide are divorced
371371+372372+chainframe/framechain
373373+- (web intents/applets/actions) + (webxdc/miniapps/tiles/farcasterframes)
374374+375375+Small examples of agency
376376+377377+- users can move, resize, change things to their requirements
378378+ - eg, browsers restrict min-height of a window, but i should be able make as short as i like
379379+380380+## History
381381+382382+In working on Firefox and related things at Mozilla from 2006 - 2019, there were a few specific initiatives which best aligned with my needs as a user on the web:
383383+384384+- The Awesomebar: infinite history + personalized local search index
385385+- Ubiquity: Natural language commands + chaining
386386+- Jetpack: The Mozilla Labs version - web-platfrom-centric extensibility
387387+- Panorama: née TabCandy, web pages as groups instead of tabs in windows
388388+389389+A few others which were in the right direction but didn't achieve their optimal form:
390390+391391+- Greasemonkey
392392+- Microsummaries
393393+- Contacts extension
394394+395395+The first version of the Peek application has some bits of each of these, and the original Peek browser extension.
396396+397397+### Peek browser extension
398398+399399+Peek was a browser extension that let you quickly peek at your favorite web pages without breaking your flow - loading pages mapped to keyboard shortcuts into a modal window with no controls, closable via the `Escape` key.
400400+401401+However, as browser extension APIs became increasingly limited, it was not possible to create a decent user experience and I abandoned it. You can access the extension in this repo [in the extension directory](/autonome/peek/extension/).
402402+403403+The only way to create the ideal user experience for a web user agent that *Does What I Want* is to make it a browser-ish application, and that's what Peek is now.
404404+405405+406406+
+343
notes/research/design-vision.md
···11+# Peek Design Vision
22+33+Design thinking, use cases, and research notes extracted from early README.
44+55+## Core Design Philosophy
66+77+Many user tasks on the web are either transient, chained or persistent, data oriented, or some mix of those. Neither the document-oriented nor application-centric web meets those needs. Traditional browser makers can't meet those needs well, for many reasons.
88+99+Characteristics of how we use the web, that are not addressed in contemporary web browsers:
1010+1111+- transient
1212+- chained
1313+- persistent
1414+- data-centric
1515+- archival / evidential
1616+1717+Some thoughts driving the design of Peek:
1818+1919+- Web user agents should be bounded by the user, not browser vendor business models
2020+- Windows and tabs should have died a long time ago, a mixed metaphor constraining the ability of the web to grow/thrive/change and meet user needs
2121+- Security user interface must be a clear articulation of risks and trade-offs, and users should own the decisions
2222+2323+## Escape IZUI
2424+2525+TODO: articulate the escape-to-leave aspect, eg you can peek from *other* applications and ESC to go back to exactly where you were without breaking the task flow.
2626+2727+Escape is an inverted zooming user interface (IZUI) design for a flexible window manager that makes possible a web user agent application than can have multiple entry points and a heterogeneous windowing ecosystem.
2828+2929+### IZUI vs ZUI
3030+3131+* ZUIs navigate by starting from a known root and user navigates by zooming ever further in, and then back out
3232+* Escape can enter a window stack at any point, and via a variety of methods, often from outside the application
3333+* Instead of navigating by zooming in, all interfaces can zoom out to go back, using the Escape key
3434+* This design allows unbounded and diverse entry points, but with predictable behavior
3535+* Regardless of the entry point, the user always has a consistent path to familiar ground
3636+3737+### Escape navigation model
3838+* navigation base can start at any level in stack
3939+* forward navigations are added on top of stack
4040+* backwards navigations walk the stack in reverse up the tree to the root
4141+4242+## Architecture Principles
4343+4444+About this space:
4545+4646+- Web pages can themselves be navigators of the web
4747+- Embrace the app-ness of the web platform, as a way to efficiently access the document-ness
4848+- Decouple html+js+css from http+dns+ssl - not entirely, but that trust+security model is not a required starting point
4949+- Javascript is ok here
5050+5151+Peek is designed to be modular and configurable around the idea that parts of it can run in different environments.
5252+5353+For example:
5454+- Planning on a mobile app which syncs and runs your peeks/slides/scripts
5555+- I'd like to have a decentralized compute option for running your scripts outside of your clients and syncing the data
5656+- Want cloud storage for all config and data, esp infinite history, so can do fun things with it
5757+5858+## Feature Extensibility
5959+6060+An extensibility model for achieving "personal web workbench" requires a few things:
6161+- UI extensibility requires OS-level window features beyond what the web allows today (also a baby step towards a minimal OS user interface)
6262+- Data harvest/transform/process/publish requires a method of moving data between features (web apps) *locally*, cf Web Actions/Intents/Applets, MCP, pubsub, MQTT etc
6363+- Portable ways of accessing network, storage and compute, which address
6464+6565+The current implementation has only a few sketches of that world implemented, and has gone through a few iterations:
6666+- first proof of concept was all Electron - so, privileged JS
6767+- second experiment moved each feature to a separate web app running in own window scope, with access to smallest possible custom API, with one main web app loading and orchestrating the others, using pubsub for cross-app communication
6868+- third and current implementation bundles all features into one web app, with access to smallest possible custom API for platform-level capabilities
6969+7070+The web app is loaded into custom scheme of `peek`, which provides access to a few special apis noted in the next section, allows cross-origin network access and other things.
7171+7272+This is not ideal, as the extensibility vector is contributions to core, which too tightly bounds experimentation and innovation.
7373+7474+However it's pretty portable given the small custom API surface area.
7575+7676+It would be nice, but not required, to have some alignment with the WebExtension spec - blur your eyes and they're in a similar direction.
7777+7878+## Peek API Design
7979+8080+Initially the prototype was all Electron. But that's not interesting, and doesn't really tell us anything about constraints of the web itself.
8181+8282+So instead I asked this question: What's the minimum capability set that a web app would need to build the features I need?
8383+8484+The answer, so far, is giving `peek` apps the following APIs:
8585+8686+- window open/close
8787+- global hotkey registration
8888+- pubsub messaging
8989+9090+Custom window api might be able to away entirely, by passing window.open features, working on that.
9191+9292+## Desktop App Notes
9393+9494+Proof of concept is Electron. By far the best option today for cross-platform desktop apps which need a web rendering engine. There's really nothing else remotely suited (yet).
9595+9696+User interface:
9797+- the built-in features are all modal chromeless web pages at this point
9898+- settings UI uses custom sidebar navigation with dark mode support
9999+100100+TODO:
101101+- Need to look at whether could library-ize some of what Agregore implemented for non-HTTP protocol support.
102102+- Min browser might be interesting as a forkable base to work from and contribute to, if they're open to it. At least, should look more at the architecture.
103103+104104+## Mobile Vision
105105+106106+- Quick access to Script output and manual runs, as widgets (or output from cloud runners?)
107107+- Peeks still totes useful here - on mobile is more like "quick dial" features
108108+- some of the features don't make sense as-is on mobile
109109+- but maybe quick access on mobile to slides/peeks would be nice
110110+- and seeing output of content scripts, or ability to re-run locally on demand
111111+- needs some sync facility (inevitable anyway)
112112+113113+## Cloud Vision
114114+115115+- Going full crypto payments for distributed compute on this one.
116116+117117+---
118118+119119+## Use Cases & Papercuts
120120+121121+### Core High Level Actions
122122+- open a web page on top/bottom/left/right
123123+- keep web pages persistent in the background
124124+- quickly open a web page modally, and close it
125125+126126+### Specific Use Cases
127127+128128+- open bandcamp in a window, move over to 2nd display, accidently close it while moving around between other windows
129129+- recent books or recipes from newsletters i subscribe to (but probably didn't read)
130130+- extract a table from a page periodically, send it somewhere as csv or whatever (chained actions)
131131+- collect microformats, metadata, events
132132+- web page w/ some locations as an input to a map (creates overlay) "map this page"
133133+- be able to see where a book/etc recommendation came from
134134+- save a tweet, with URL / image / relevant text, but not whole page webrecorder style
135135+- "watch local event listings, rate against my music listening patterns and send me shows i might be interested in going to"
136136+137137+### Content Scripts
138138+- extract+log shazams
139139+- extract+log spotify playlist
140140+141141+### Calculators (variant of script + cmd?)
142142+- page -> table
143143+- page -> summary
144144+- page -> microsummaries
145145+- page -> dates
146146+- page -> events
147147+148148+### Workflow: Deconstructing a "why" Task Flavor of Bookmarking
149149+- save https://www.criterionchannel.com/hong-kong-in-new-york
150150+- extract the movies
151151+- get reference metadata for each (?!)
152152+- add to "to watch list", with pointer back to source url
153153+154154+---
155155+156156+## Groups Design
157157+158158+- panorama/tabcandy-ish
159159+- all browser history
160160+- smart groups vs curated groups
161161+- autoclustering on topic/date
162162+- escape from a new page enters default group?
163163+164164+### Groups + Cmds
165165+- top/bottom inputs for filtering/grouping/etc
166166+- implemented is a cmd input?
167167+- cmds for opening/searching/finding/viewing/filtering/piping
168168+- cmds for moving pages into groups
169169+- groups -> {x} (eg export/pipe) could depend on the chaining/piping bit (see below)
170170+171171+### Architecture
172172+- internally is tags?
173173+- static vs dynamic groups tho?
174174+175175+### Publishing
176176+- publishing groups as internal/public feeds?
177177+- to pinboard?
178178+179179+---
180180+181181+## History View/Search
182182+183183+A lot of groups work depends on history being in place, and being accessable and annotate-able.
184184+185185+ideally use chromium history
186186+187187+### Storage+Access
188188+- check out Agregore history viewing approach
189189+- check out state of electron+webext
190190+- other way of accessing underlying chromium history?
191191+192192+### Features
193193+- awesomebar algo scoring
194194+- adaptive matching
195195+196196+---
197197+198198+## Chaining / Piping
199199+200200+investigate: vague thought re chaining:
201201+- dynamic interstitial representations
202202+- mime type detection?
203203+- eg image previews
204204+- or a table of data
205205+- previews of cmds?
206206+207207+### Interfaces
208208+- horizontal vs vertical chains
209209+- back/forward navigation?
210210+- each step is a cmd+preview?
211211+- dynamic cmd+previews?
212212+213213+### Import/Export/Undo/Redo
214214+- record/replay?
215215+- save a chain as a compound action (cmd)?
216216+217217+### Architecture
218218+- look at web actions/intents/applets
219219+- xml pipeline language
220220+221221+---
222222+223223+## Feature Use Cases
224224+225225+### Peeks
226226+- translate
227227+- calendar
228228+- ai chat
229229+- currency conversion
230230+- everytimezone
231231+- tldraw
232232+233233+### Slides
234234+- music: Soundcloud, Hypem
235235+- stock prices
236236+- notepad
237237+- todo list
238238+239239+### Scripts
240240+- weather change, eg upcoming weather
241241+- crypto prices
242242+243243+### Cmd - Web
244244+- open url
245245+- web search
246246+- image search
247247+- conversions?
248248+- ddg !actions
249249+250250+### Cmd - System
251251+- search browser history
252252+- set peeks/slides
253253+- open settings
254254+- restart app
255255+- llm prompts
256256+257257+### Future
258258+- address something to switch between
259259+- pipe from/to?
260260+261261+---
262262+263263+## Publishing
264264+265265+### High Level
266266+- author web content
267267+- pull in bits from the web
268268+- share preview for feedback
269269+- publish (or at least get output)
270270+271271+### Example: Event Recap Post
272272+- make a new markdown doc
273273+- sections titled for each video title
274274+- each video's embed code in each section
275275+- navigate around the document for review and updates
276276+- need to easily preview rendered content
277277+- share preview link
278278+- publish (somewhere?)
279279+280280+### Music
281281+- commands
282282+- views
283283+- last.fm of my own, to POSSE out
284284+285285+---
286286+287287+## Unfiled Ideas
288288+289289+### Markdown Hot Reload Previewer w/ TOC
290290+- markdown support, with sidebar nav
291291+- reader mode
292292+- hot reload for file:// (other?)
293293+- add side-by-side view
294294+- once md and side-by-side, add side-by-side so the md is the nav, content is the preview
295295+- what's the cmd chain for this?
296296+297297+### Content Types + Chaining
298298+- cmd: view as… table, feed, markdown, data points, named entities
299299+- chain: static archive, publish, save, share (os), mailto
300300+- cmd params, eg {url}, which can themselves autocomplete (eg history)
301301+302302+### Multiprotocol
303303+- at
304304+- ipfs/ipns
305305+- pragmatic addressing+rendering for data (r/d/masl + mime handlers)
306306+307307+### Broader Patterns (chatting w/ luke)
308308+- why do we have to copy/paste?
309309+- devtools and ide are divorced
310310+311311+### Chainframe/Framechain
312312+- (web intents/applets/actions) + (webxdc/miniapps/tiles/farcasterframes)
313313+314314+### Small Examples of Agency
315315+- users can move, resize, change things to their requirements
316316+ - eg, browsers restrict min-height of a window, but i should be able make as short as i like
317317+318318+---
319319+320320+## Project History
321321+322322+In working on Firefox and related things at Mozilla from 2006 - 2019, there were a few specific initiatives which best aligned with my needs as a user on the web:
323323+324324+- **The Awesomebar**: infinite history + personalized local search index
325325+- **Ubiquity**: Natural language commands + chaining
326326+- **Jetpack**: The Mozilla Labs version - web-platfrom-centric extensibility
327327+- **Panorama**: née TabCandy, web pages as groups instead of tabs in windows
328328+329329+A few others which were in the right direction but didn't achieve their optimal form:
330330+331331+- Greasemonkey
332332+- Microsummaries
333333+- Contacts extension
334334+335335+The first version of the Peek application has some bits of each of these, and the original Peek browser extension.
336336+337337+### Peek Browser Extension
338338+339339+Peek was a browser extension that let you quickly peek at your favorite web pages without breaking your flow - loading pages mapped to keyboard shortcuts into a modal window with no controls, closable via the `Escape` key.
340340+341341+However, as browser extension APIs became increasingly limited, it was not possible to create a decent user experience and I abandoned it. You can access the extension in this repo [in the extension directory](/autonome/peek/extension/).
342342+343343+The only way to create the ideal user experience for a web user agent that *Does What I Want* is to make it a browser-ish application, and that's what Peek is now.