-
Notifications
You must be signed in to change notification settings - Fork 1
/
to-do.text
191 lines (189 loc) Β· 12.2 KB
/
to-do.text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Update to-do's from linear-text.text.
logo should not have such a thick border. it should have a penciled look. this isn't pixel graphics
Bugs
when cursor position is changed by mouse, pressing enter to divide a line does divide the line but doesn't delete the text from the original note. eg, "foobar", click between foo and bar and press enter. doesn't have a 100% repro. maybe some interaction with shift-tab
the staggered text area is hard to work with. when i click past a word it just ignores the click
When I cancel a save, even if no changes, it causes doc to be unsaved
When I open a second file, LT reopens the first sometimes?
Opening as a web app doesn't allow the icon to be updated.
The tutorial page has the wrong favicon.
The favicon has a null type. data:null for favicon is wrong.
An empty line has no cursor.
Prompt for changelog edits in publish script and maybe move publish script to ~/bin so I can version it.
Editing a file externally or in the text pane clears the expand state. No idea how preserving expand state will work in the current design without intelligent editor-TextTree diffing.
The only way to delete an empty group is the text editor.
Mobile scrolling is completely broken.
Test save in Firefox. Shouldn't show it if can't be supported.
Re-explore columnar scrolling. I think I like this better but it does add a ton of visual noise. Maybe use hover scrollbars.
Don't include Linear Text in the page title? This repeats for installed web app.
When I type, the note should stay on screen and not allow the cursor to scroll offscreen as I type.
There's no way to insert a card at the top of a column easily.
When I press enter on selected text, delete the selection and split--need unit tests for all this craziness.
Autosave doesn't support multiple windows. Maybe try to distinguish by filename and error if already present?
Dragging a line from scrolled location loses the scroll on drop.
When I reopen Linear Text and attempt to save the last opened file, it doesn't suggest the prior filename.
When I reopen Linear Text, the local storage contents can be stale even if the last editor was Linear Text because the file handle isn't re-read into local storage.
Enter at the start of a line does nothing.
When I highlight text and alt-tab to another window, my highlight is lost.
When I delete a child's text, and shift-tab to focus the parent, I lose the focus.
unsaved favicon doesn't align perfectly to saved because SVG is used. Just use old png.
I want a way to delete or add cards by clicking, including deleting groups and sub-lines.
Publish single file build script and publish script util. Update publish for NPM. Publish should prompt for changelog too. I don't want to have to have docs for the process. I have a nice example of exec() in oidoid.com. maybe call build html-pack or something like that. needs a good dev experience.
Scale up the UI.
Design
Fix large pixelated favicons.
Take another pass at (small) realistic notes?
Expand/collapse button should support a toggle state visually.
Fix colors to be a consistent scheme. Everything is black and white except what you have created. Fix manifest.json themes too.
Experiment with white noise background.
I think for deleting, resurrecting the recycle bin would be nice.
Text editor slideout could be a lot nicer with a friendly knob.
Reconsider columnar scrolling. The grid scrolling has me in deep space.
Toolbar buttons should look a bit nicer. Not distracting like FigJam but maybe square.
Fix button title hover styles.
Try to tighten things up so the app feels special.
Ask me questions about the design.
Explore custom hand grip cursor like miro https://css-tricks.com/using-css-cursors/#aa-using-a-custom-cursor-to-enhance-an-element
https://ux.stackexchange.com/questions/52503/who-created-the-mac-mickey-pointer-cursor
https://ux.stackexchange.com/questions/52336/why-is-the-mouse-cursor-slightly-tilted-and-not-straight#52338
Add screenshots to manifest.
What to do about loading prior file but not actually reading it from disk? User could replace the latest with some old copy by mistake.
Dragging
Clean up drag-line and add interfaces for card interactions.
Study how drag parenting works in VS Code. I think you have to have a parent and the root is just "insert below me".
Allow child to reparent siblings (drag b to a)?
a
b
c
Missing this feature really sucks for single-child parents.
Very lightly transition column widths so they don't appear to jitter.
Support group dragging.
When I press escape during a drag, it cancels the drag.
Prompt to save unsaved work on new file, load file, or page departure.
Improve note editing input.
Join on backspace? What to do about children? I guess they reparent like in file.
New group on enter in an empty line.
back/space: un/indent. Tab is used for focus and spaces indent in a real file.
Space at the start of a line indents, backspace at the start of a line unindents.
alt-down to toggle expand / collapse.
Enter in an empty line creates a new group.
Add ?tutorial query param mode.
How can I unit test the UI effectively? I think the line-input especially needs to be tested for correct effect dispatching.
Plan text editor.
It feels like this should be a first-class part of Linear Text, not a developer mode.
Do I want a more featureful editor like CodeMirror? I think so.
See if they offer a multi-file example.
What would implementing a minimal editor look like?
I could explore contenteditable with text nodes on the newline.
I could change a single line instead of the replacing the entire contents.
I could reuse my tree structure.
I could focus the active line in both the editor and the board.
Consider wrapping. When arrowing left, the cursor is nearly cut off.
alt-up/down to move lines.
Shortcuts
ctrl-c: copy focused but deselected line.
crtl-x: cut focused but deselected line.
alt-up/down: move focused line.
shift-/tab: un/indent selection / line.
Highlight focused line.
Show whitespace.
Any edits you make anywhere can be undone from the editor.
Bugs
Pressing enter changes scroll position.
Weird whitespace injection. Also, pressing backspace seems to unindent.
Undo doesn't work after deleting a line.
Can undo-redo be implemented on the editor using document actions like exec and I just wire a button to that?
Support multiple files.
Workflow wanted: plan.text and schedule.text are open. I copy and paste the day's group into plan.text.
Think about how the editor works with multiple files.
Keyboard shortcuts
Keys currently use alt-style access keys for buttons. They also steal focus. This is confusing.
Shortcuts should be OS-localized.
Toggle editor.
Double-clicking an empty group also creates a newline.
Alt-shift-left to move a group.
ctrl-tab / ctrl-shift-tab jumps by group.
Autosave on throttled input.
Session backup.
I think this will require a separate dialog where you can view the past sessions, delete them, open them in recovery read-only mode (doesn't itself modify session data).
The format needs to be text in case something is broken. You should be able to click a button to copy the entire session too.
How should groups and nested lines support deletes through UI?
The current approach to delete a line is to clear all the text.
Improve performance.
Docs
Add bug report link.
Embed a playground on docs page to fool around with. This wouldn't replace the one at https://lineartext.com.
Verify line / card terminolgy is used consistently and not confusing in tutorial.text.
Document non-/technical decisions.
Custom drag-and-drop over native.
native is like 30 lines and does a lot well: ~/work/web/linear-text-protos/linear-text-proto-ui-drag-2023-11-13/index.js
native drag needed weird drag "wings" in one of my protos with nested scrolling to work
Ability to customize the drag image is limited to an actual image. I had weird issues with the edges being a couple pixels too small, horribly clipped when part of the card was off the screen, and I think sometimes issues with transluency.
Native implementation is tiny, supports auto-scrolling, supports off-screen movements.
EBNF for line parsing, lines
Review ~/work/notes/linear-text.
Support linear Markdown. Anything that has a good single-line representation.
Headings, italics, bold, code, bullets, ...?
Docs
Beside what's covered by previews, linear markdown is supported. For example, _italics_, `code`, *bold*, [links](https://oidoid.com), and bullets.
You can add a one-line JavaScript program by starting a line with `js```.
js`alert('hello world!')`
Any markdown that renders as something beside plaintext is editable on hover only (or in the advanced text editor).
Linear Text encourages a lighter (and more limited) text format than Markdown. Indenting creates a list so you don't need to use bullets for lists unless you like to.
Support images.
Template strings like CSS: polaroid`file://blah.png`.
Support file://, http://, and https:// protocol at least.
Support context menu.
Copy or cut group, card, or card + all children.
Paste as children or new group. I want to right click on the grid and be able to paste an entire text file in somewhere.
Support URL previews.
URLs show as previews. For example, https://oidoid.com.
URLs to images are shown as instant film. Loading lines of URLs is a nice way to show a gallery.
Images can also be shown as data URIs like data:
Previews can be explicitly selected like film`https://oidoid.com/logo.png`. The text before and after a preview decorate the header and footer.
file: protocol is understood as well. Absolute paths are understood and paths relative a loaded file are understood for loaded files only.
Link URLs.
Support ctrl-click.
Note sure how to implement this in plaintext contenteditable.
Add 'noopener,noreferrer'.
Heuristics for URLs ending in .jpeg, .gif, .png, .webp, .mp4, etc.
Support linking to other files.
It'd be neat to link to other docs, like a table-of-contents, or open a folder.
Reconsider plain web components
A template parser like https://github.com/dchester/yhtml/blob/main/example.html.
~/work/web/linear-text-protos/linear-text-proto-lit-html-web-components-2023-12-08/src/index.ts
I don't even make use of the shadow DOM. It just adds complexity.
Explore competitors and technical docs.
Trello
Kinopio
When I click an image, the source becomes editable.
FigJam
Nullboard
Review the tutorial text too.
Dragula
https://github.com/atlassian/pragmatic-drag-and-drop
tldraw
https://www.sketch.com/apps
Review Lit docs.
Built-in search that auto-expands cards.
Support shareable URLs (load by query fragment)?
Toggle expand/collapse-all button.
Explore more card types.
/home/user/work/web/linear-text-prototypes/perfect-notes-last-proto/docs/oid-ideas.csv
ctrl / shift-click select cards for dragging / delete.
Idea: add @2020-01-02-snooze/reveal to hide a card until a date. Might be some other date-based actions like @2020-01-02-highlight. Or maybe `// hide me` makes more sense for plain text. Not sure how this doesn't get super out of sync though when dragging around.
I love the idea of timer cards like @2024-01-02 or @12p that ding and light up. The UI has a ton of flex to represent these differently but essentially you get pomodoro cards.
When I copy-and-paste multiple lines, these should appear across multiple cards instead of concatenating on one.
When I divide a card with children, the new card should get the children (just insert above) unless it's collapsed.
Need a lot more unit tests for line parsing, particularly on indentation parenting and moving / reparenting.
Persist file handle and permissions.
https://developer.chrome.com/blog/persistent-permissions-for-the-file-system-access-api
https://web.dev/articles/origin-private-file-system
i don't do a lot between columns in linear at least for planning. should thye be wider?
Customize the PWA title bar.
https://blogs.windows.com/msedgedev/2022/09/27/closing-pixel-gap-native-web-window-controls-overlay/
https://devtoolstips.org/tips/en/simulate-pwa-wco/
Move children to parent button.
Scroll to line on focus.
Consider a new font.
https://news.ycombinator.com/item?id=39465891