-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathChangeLog.txt
More file actions
415 lines (314 loc) · 23.2 KB
/
ChangeLog.txt
File metadata and controls
415 lines (314 loc) · 23.2 KB
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
Friday, May 18, 2012
Many miscellaneous tiny changes - bug fixes, refactorings, minor performance improvements, color/layout tweaks, and a handful of small new features.
Enhancements to non-UI stuff:
- Tiny:
- Added a way to exclude particular arguments from being accepted by a command.
- Small bug fix - running an individual test case was broken.
- Workaround for a performance problem that I don't know the right fix for yet; see shouldBreakCreatorSlotsInOrderToImprovePerformance.
- Refactorings:
- Factored some basic asynchronous-request stuff into objects.
- Added a comment here and there.
- Added canGet and canSet methods to the accessor objects.
- Added an isEmpty method to stringBuffer.
- Gave the collection objects their own subdirectory.
- Less tiny:
- Improved the Unowned Slot Finder. I wouldn't trust it just yet, but if I add an attribute to the window object and then get changed modules, I see the new attribute show up as unowned.
- Made it possible to run the basic core stuff (not the UI) under Node JS.
- Added JSONP functionality.
- Added basic WebDAV functionality.
Enhancements to UI stuff:
- Tiny:
- Added a couple of shortcuts for common world-navigation operations - "show centered" and "navigate to."
- Commented out some annoying keyboard shortcuts.
- Modified the success/failure colours of tests, because pure red and pure green aren't good for colour-blind people. (Should really show the info in another way too, not just with colour. But this is an easy hack for now.)
- Made wheel menus more visible when the background is white.
- Fiddling with the pose layout code, trying to fix the shrinking-boxes bug.
- Disabled Mac OS 10.7 rubber-band scrolling.
- Fixed that bug where message notifier morphs wouldn't do the whooshing-away thing if you zoomed in while they were on the screen.
- Bug fixes to the pick-up-and-drop code, to make it play nicer with the zooming UI.
- Made command-arg morphs whoosh back to wherever they came from, after the command is executed.
- Made the carrying hand disappear properly when it's empty after executing a command.
- Made menus work when you right-click the contents panel of a tree node morph - should just use the owner's menu.
- Refresh the world on each zooming step (even when doing an automated pan-and-zoom), not just on mouse-wheel clicks.
- Some cleanup of the animation code.
- Made a MorphChooser - tell it what type of object you want, and then you can move it around and it'll highlight acceptable objects and let you choose one by dropping it on the object.
- Long-string input fields should be wrapped in a ScrollPane.
- Refactored TreeNodeMorph so that I can split it into a NamedMorph and a contents morph.
- Renamed "zooming away" to "whooshing away" - the word "zooming" is meant for zooming in and out, it's confusing to keep on using it for this whooshing-around behaviour.
- Update the fonts whenever we zoom in or out. (The fonts still look "fidgety", but at least they don't look wrong.)
- Made a StringBuffer morph - just a big text box that gets updated whenever the buffer is appended to.
- Made the SelectionMorph look right when zoomed in or out.
- Got rid of that annoying little focus halo that always appeared (and looked very weird) when starting to drag a SelectionMorph.
- I'm not sure this is the right thing to do, but I made okToBeGrabbedBy take the owner's openForDragAndDrop into account.
- The zooming UI performs a bit better now.
- Created a way for the programmer to say, "We're going to do a bunch of layout-affecting operations in a row; don't bother updating the layout until the end."
- Fixed the world-navigation animation so that it's a bit smarter about whether it needs to zoom out before zooming back in, etc.
- Fixed a bug that was causing message notifiers to show up in the wrong place in the world when zoomed in or out.
- Some enhancements to the layout algorithms.
- Refactored SlotMorph so that it could be used with other kinds of slots, not just JS-reflective-level slots.
- Less tiny:
- Experimental panning feature. Hold down Cmd+Shift and move the mouse around.
- Experiment grab-and-pull feature.
- Experimenting with being able to give a ValueHolder an optional type. It's used in the UI to show a better way of entering the value (e.g. a checkbox for a boolean, a text box for a string, etc.).
- Implemented a rudimentary kind of command feedback - when you mouse over a menu item, you'll see which arguments are required and which will be auto-supplied.
- First attempt at a line-graph.
- Made a morph to display a table of similar objects.
- Switched to using placeholders as arrow-toggling buttons. (The idea is that when you have a reference to another morph, you can either single-click it to see an arrow pointing to it, or double-click it to have the morph whoosh into place.)
- Basic HTML morphs, for embedding chunks of HTML inside an Avocado world.
- Factored the system into LK-specific and non-LK-specific stuff, to allow non-LK Avocado UIs to be created.
- Improved the test-suite UI, and made a UI for displaying test-result histories.
Friday, April 29, 2011
- Made a test-suite morph that uses the zooming UI - zoom in on it to see the individual test cases.
Thursday, April 28, 2011
- Some performance and cosmetic enhancements to the zooming UI.
Friday, April 8, 2011
- More work on the zooming UI. Still not usable, but getting closer.
Monday, February 21, 2011
- Some little workarounds and fixes to get Avocado working in Firefox.
Thursday, February 17, 2011
- Teaching the project-saving code to talk to a server.
Monday, February 14, 2011
- Enhancing the module-dependency system so that we can save a whole "project" at a time. (We want modules to depend on specific versions of other modules, so when we save a new version of a module, we need to save a new version of every module that depends on it.)
Saturday, January 15, 2011
- First steps towards a UI for doing simple things with CouchDB. Can get a DB morph, and drop a mirror on it to add the object to the database (or update the object, if it's already in the database).
Monday, January 3, 2011
- First attempt at having Pick Up put the morph in a CarryingHandMorph that's off to the side, rather than keeping it right at the mouse cursor. It's not really right yet.
Sunday, January 2, 2011
- Made the morph menu be a wheel menu too. Use Ctrl to access it (though this breaks using Ctrl keys for text editing). Not quite sure that I like that, plus we should probably do something different Windows, but having easily-accessible "pick up" and "drop" commands might be important. Anyway, it's easily turned off if we change our minds.
Wednesday, December 29, 2010
- Working on a zoomable UI! Not usable yet, but it's kinda fun.
Saturday, December 25, 2010
- First crack at wheel menus. http://www.c2.com/cgi/wiki?WheelMenu
Friday, December 24, 2010
- Working on making "vocabulary morphs" (need a better name - the idea is that they show you all the messages that an object understands).
Wednesday, December 22, 2010
- A few small refactorings: getting objects out of the global namespace, using enumerator objects more consistently, etc.
Friday, December 17, 2010
- Some performance optimizations to reduce memory usage.
Thursday, December 9, 2010
- First crack at remote reflection. Not working yet with the real remote server, but can make a mirror that uses a local mock server instead of a reflectee() method.
Monday, December 6, 2010
- Created a simple stack-viewer. It's not a real debugger - it can't view a live stack, only a dead one, so there's no single-stepping or proceeding or anything like that. And it can't even show local variables, just arguments. But still, it's kinda neat.
- Did some performance optimizations. Opening up categories with lots of slots should be about two or three times faster now, I think.
Saturday, December 4, 2010
- Separated more non-UI-specific code out from the morph code.
- Made menus look prettier.
Wednesday, December 1, 2010
- Factored some of the category-morph code out into a more-general tree-node morph.
Monday, November 29, 2010
- Generalized some of the drag-and-drop code. Should make it easier to port to new UI systems, and to enable drag-and-drop commands for other kinds of objects.
Wednesday, November 24, 2010
- Separated some non-UI-specific code out from the category-morph code.
Tuesday, November 16, 2010
- Added a transporter.shouldLog flag, for debugging problems with loading Avocado.
- Added some shortcut methods useful for building objects reflectively.
- Made a "command" object to represent a UI command.
Friday, November 12, 2010
- Generalized RowOrColumnMorph into TableMorph, so we can have proper tables with everything lined up nicely.
- Added snap-to-grid functionality to edit mode, so people can line things up themselves.
- Fixed a minor bug with world navigation - clicking in the middle of the world would cause an error message.
Tuesday, November 9, 2010
- Workaround for a bug that was causing Style Editors to break when the WorldMorph had the keyboard focus.
Friday, November 5, 2010
- When you activate the arrow to something, bring the thing to the front.
Wednesday, November 3, 2010
- Lots more cleanup work.
- Improved world-scaling, though it's not perfect yet.
Tuesday, October 19, 2010
- Moved some objects into the "avocado" namespace, so that they don't clutter up the global namespace.
- More improvements to the transporter's error-reporting.
- Put in a mechanism so that we can file out the bootstrap module, rather than needing to use a text editor.
- Fixed the Safari clipboard hack so that it doesn't paste twice.
Friday, October 8, 2010
- Improvements to the transporter. Should be easier to set creator paths now, and easier to deal with errors.
Tuesday, September 21, 2010
- Can rename categories now.
- Renamed "Global" to "window".
Friday, August 20, 2010
- Added some more tests, fixed some bugs.
Monday, August 16, 2010
- Added a rudimentary combo-box widget.
Wednesday, June 30, 2010
- Put in a hack to make it faster to grab complex morphs. (You won't get a fancy deep-copy drop shadow anymore, just a single morph with the same shape as the morph you're grabbing. Though in some cases that actually looks better than the old fancy behaviour.)
Wednesday, June 16, 2010
- Made the animations work better on machines with little CPU power available.
- Made menu-item highlighting work on touch devices even when the finger just stabs down on the menu item without moving side to side.
Tuesday, June 15, 2010
- Convert touch events to mouse events, so that all the existing code (which expects mouse events) will work.
- On touch devices, double-tap the world to bring up the world menu.
Monday, June 14, 2010
- Fixed a bug with the LK fill-mixing code.
- Committed a first crack at iPad gestures (using Moousture).
Tuesday, May 25, 2010
- Added a "turn on edit mode" item to the morph menu.
Monday, May 24, 2010
- Added a ButtonMorph to the morph factory.
- Added a Core Sampler for drilling.
Sunday, May 23, 2010
- Made a simple morph factory. (Isn't editable yet - it's procedurally generated.)
Friday, May 21, 2010
- Fixed a UI bug with creating new objects.
- Took a first crack at making it possible to leave out the development environment and just deploy the app itself.
Thursday, May 13, 2010
- Generalized the drag-and-drop highlighting stuff. Now a morph will highlight itself if something droppable is dragged over it.
Tuesday, May 11, 2010
- Put in a workaround for that Chrome "prototype"-not-enumerable bug.
- Fixed Alt-Enter not working in evaluators in Chrome.
Wednesday, April 28, 2010
- Working on the tic-tac-toe demo. The creation process is still a bit more complex than I'd like.
- Added "interpose new parent", because it's something that I do a lot.
Tuesday, April 27, 2010
- Added a couple of Emacs key bindings (Ctrl-A, Ctrl-E) because my fingers keep using them of their own accord.
- Morphs that are zooming towards the hand will now follow the hand if the hand moves.
- Replaced \r with \n in fileouts.
Monday, April 26, 2010
- Can file out a morph with submorphs now.
- When doing a "set module", show the most likely modules at the top of the list.
Thursday, April 15, 2010
- Organized the module-choosing menu into directories, so that it's not huge and unwieldy and intimidating.
- Turned off the "guess creator slots before saving" thing - it might be more confusing than it's worth.
- Can rename modules, though their dependers aren't fixed up yet.
Sunday, April 11, 2010
- Make it load fast (even with a bad connection) by statically concatenating the .js files.
Stuff that happened before we started keeping track of which day they happened on:
- Core functionality:
- Create an object.
- See what slots point to.
- See the name of the object.
- Slots can point to different kinds of things - numbers, booleans, strings, arrays, functions, null, undefined.
- Add a slot to an object.
- Change the slot's contents.
- Change the slot's name.
- Move a slot.
- Drop a removed slot on the world, have it turn into a real object (so I can dismiss it).
- Evaluators.
- Show the __proto__ slot.
- "Create child."
- Get rid of that stupid drop shadow bug.
- Be able to edit a method right in the outliner box, rather than having to set the arrow to point to a different function.
- Error messages (little red boxes that fly away after a few seconds?) when something goes wrong in an evaluator.
- Should have a separate panel for the evaluators, so they don't die when you collapse the outliner.
- Make the arrows stop fidgeting.
- I still want SlotMorphs to not have so much wasted space. Why are they so tall?
- Implementors, Well-Known References, Well-Known Children.
- Comments on objects/slots.
- Slice outliners, so that search results look nicer.
- Categories.
- The giant-slotMorph bug.
- Can I make it "this" instead of "self" (in an evaluator)? Just a little thing that I don't want to have to explain to people.
- Better names for class instances. ("an Object" rather than "an Object.prototype")
- Grabbing - be right on the hand, and in the middle of the morph rather than the corner.
- Should the lobby be called the lobby, if it's actually the window object? Why not just call it window? Or maybe globals? Actually, LK calls it Global, huh?
- In Firefox, why is Object.prototype not called Object.prototype?
- Why does the "constructor" slot of some morph prototype (say, EvaluatorMorph.prototype) end up in category "C"?
- Whoops, the functionBody slot for - and any other slot pointing to - a well-known function just shows the well-known name. Should change it to not do that if I'm looking at the actual creator slot.
- Show methods as methods (inlined into the holder's box), rather than separate objects.
- Hey, why is the "Module: " line in a slot annotation not being left-justified properly (at least if there's something in it)?
- The module summary string should ignore copied-down slots.
- Oh, and the module summary string should just say "5 modules" or something once there's a whole bunch.
- Put copied-down slots in the right categories.
- Fixed bug: a category that doesn't have any slots of its own, only subcategories, doesn't show up.
- Categorized a bunch of our methods.
- "Clean up."
- I think "initialize" slots still think they're data slots (because they're wrapped or something). Or maybe it's slots that use $super?
- The infinite-recursion bug re: expression strings for circular structures.
- Some sort of mechanism for setting the world's context menu - application objects or something.
- Run everything (I mean, all of *my* code, not LK or Prototype) through JSLint.
- Menu item: "create subclass".
- A ^ button like in Self.
- Copy/move a category.
- Slice Redo. (Gotta unmark after doing the search.)
- Run JSLint whenever saving the contents of a slot.
- Be able to have a canvas at a location other than 0,0.
- UI stuff:
- Make slots expand to fit the outliner. (The outliner should be no wider than the child with the max minimum width, but the other slots should all expand to be that wide.)
- Why does the outliner keep getting wider?
- Fix that arrow bug where they attach to the world at 0,0.
- Make the slot contents / show source buttons look different from each other.
- Fix that slot-renaming bug.
- Generalize the layout stuff.
- Make an easy way to type in the initial contents of the slot, rather than having to open an evaluator and create it there and then get the arrow and then drag the arrow.
- Bug: get an arrow pointing to an outliner, dismiss the outliner, then click the D button again. (It'll toggle off first. You have to click it again to toggle it back on.)
- Bah, the giant-lobby problem is really annoying.
- I think I need outliners to periodically update themselves.
- Hmm, doing a refreshText (as part of updateAppearance) doesn't seem like a good idea if I'm in the middle of editing the text box - I'll lose what I've typed.
- Adding+renaming a slot seems to have the 100000-width bug every *other* time.
- Categories should be indented.
- Fiddle with the padding in a slotMorph - right now it doesn't look quite right.
- Should be really simple to put in a moduleSummary label for each outliner.
- Seriously, just fix "D" and "M". Blecch.
- Drag and drop into a category is still broken.
- Category needs a toString method.
- Source morph shouldn't stay red after accepting, which is what happens right now if the expressionEvaluatingToMe isn't exactly identical to what was typed.
- Maybe the source morph should close after you type something into it, at least if it's data rather than a method?
- Why, after I add one slot, does the next slot I add not start with its source open?
- Why isn't the source highlighting properly? (It *is* selected, but doesn't *appear* selected.)
- Hey, can I make the object name bold?
- Maybe a fixed-width font for the source? Otherwise my lining-up looks weird.
- Evaluator is word-wrapping? (What about source morph?)
- Do a carpet-morph command thing - if all the morphs on the carpet understand a particular command, put it on the carpet morph's menu. (Useful to file out all modules, run all tests, etc.) Maybe do it by type, so that if you accidentally get a few outliners on the carpet, you can still say "file out all modules."
- "Grab arrow" for slot contents buttons.
- Make the slots be lazy about creating stuff that isn't visible at first.
- Module morphs should have an update process.
- Be able to drag the outliner by clicking on one of its categories, or slots.
- Do dynamic loading on all the LK code, so that LK doesn't need to be loaded until someone hits the bookmarklet.
- Hey, can I tack this thing onto existing apps, like Google Docs? Maybe through a bookmarklet? How does Jash do it? I just tried running Jash with Lively Outliners, and it seems like Jash really does have access to stuff like OutlinerMorph. So maybe I could make a bookmarklet that you could hit to bring up a Lively world where you could play with your objects.
- LK integration:
- I'm doing the wrong menu. I've been overriding the morphMenu, when really that's meant to be the blue-button menu. I should be creating some other thing, I guess.
- Make "clean up" play nicely with other morphs, not just outliners.
- Can I make "inspect" give me an outliner instead of an Inspector?
- Play more nicely with styles.
- Cartoon animation:
- Anticipatory contrary motion.
- Slow in and slow out.
- Move along arcs rather than straight lines.
- Follow through at the end of a motion - wiggle or something.
- An outliner should wiggle if the result of an evaluator is the object itself.
- When a morph is coming to your hand, maybe it should zoom there?
- Make all LK "dismiss" buttons do the zooming thing.
- It's too slow when it only has to move a short distance. Maybe a minimum speed? Or maybe the top speed should always be the same, so it just takes longer if it has further to go?
- Motion blur.
- Menus grow smoothly from nothing.
- When creating a new object, maybe it shouldn't zoom in from the side, maybe it should grow from nothing, or bud off from the parent object, or something? :)
- Poses!
- For extensional ones:
- Just remember the whole world.
- UI state for outliners: expander, annotation toggler, comment toggler, plus all the state for the slots and categories
- UI state for slots: three togglers, arrow
- For intensional ones:
- Object inheritance hierarchy
- Before recalling a pose, remember the current layout (as an extensional pose) on an undo stack.
- Transporter:
- Create a slot called 'stack' on the lobby. Make it point to a new object.
- Give it a couple of slots - 'array' and 'top', or something.
- Right-clock the 'stack' slot, tell it to "be creator".
- Set the stack slot's module to be the (newly created) stack module.
- Get a list of all the modules. Get a list of objects containing slots in the stack module.
- File out the stack module.
- File in the stack module.
- Make sure the module includes the module object itself.
- Make sure the module includes annotation info.
- Copy-down parents, with slotsToOmit.
- Initialize-to expressions.
- Gotta deal with $super when filing in.
- Make those stupid {} stop showing up in the fileouts when they're unnecessary.
- Let me choose a directory (well, URL) where each module should live, so I can set everything up so that it files out directly over top of the real files. (Trust Git to handle bugs in the fileouts.)
- All Modules pose.
- Changed Modules pose.
- Make sure that modules are getting marked as changed when we setModule, setContents, rename, remove, etc.
- "File out" button on the module morph.
- Various menu items on the module morph; check Self.
- Fix slot ordering w.r.t. inheritance - gotta make sure the parent already exists before creating the child. Also copy-down inheritance. And references. And creator slots.
- Maybe a way to file out "ordinary" .js files? Ones that don't support all the live stuff, but still work, and look exactly like what you'd produce if you had written them by hand. Useful for people who want to eject. And maybe for deployment too.
- Be able to save morphs.
- Run the creatorSlotMarker before filing out stuff, so that objects with only one possible creator slot won't need to be set explicitly.
- Teach the transporter how to have __proto__ be a creator slot.
- Test framework:
- Make TestCase and TestResult morphs.
- Dog-fooding:
- Transporter.
- Mirrors.
- Core.
- Outliners.
- Documentation:
- Some writeups of the philosophy. Just a single page: a few sections, each one with a little blurb about the rationale, and a link to the relevant Self paper.