The Omni Group ships OmniWeb 4.0 "release candidate 1"
William Jon Shipley
wjs at omnigroup.com
Mon Apr 30 18:42:01 PDT 2001
OmniWeb 4.0 release candidate 1 is finally ready! Since our last public
release (a month ago) we've added ColorSync support, improved our Flash
support and JavaScript compatibility, and made the application more
stable and fast. We've also added documentation and improved our
bookmarks (it's now easy to import your IE bookmarks, and editing is
more intuitive).
ColorSync support is something we're especially proud of -- we worked
with Apple to ensure that we use ColorSync correctly all the way through
the imaging pipe, so (unlike every other browser, according to Apple) we
actually display final images completely accurately.
You can read more about OmniWeb at
http://www.omnigroup.com/products/omniweb/
Notes for this release (duplicated below) are at
http://www.omnigroup.com/products/omniweb/releasenotes/
Or, download OmniWeb directly from
http://www.omnigroup.com/ftp/pub/software/MacOSX/OmniWeb.dmg.gz
We plan to release OmniWeb 4.0 final later this week.
Wil & Ken
Exhaustive release notes for 4.0 release candidate 1:
4.0 release candidate 1
Mac OS X Released on April 30, 2001. Changes include:
* New Features
+ ColorSync! We now correctly read and process
ColorSync information for JPEG images, and we've done
away with the image gamma preference because it
messes up ColorSync (it is now hardcoded to the W3
standard of 2.2, also sRGB). Despite some other
browsers having a "ColorSync" preference you can turn
on, we are in fact the only browser that displays
images correctly under OS X -- compare images in
OmniWeb to the same images in Preview (which also
does ColorSync correctly), and then compare other
browsers.
+ Launch Time! We've finally figured out how to do
prebinding with our custom frameworks inside the
application package, so launch speeds SHOULD be up to
3x as fast. Let us know if it doesn't get any better
for you.
+ Documentation! The application package now includes
brand-new, complete bundled documentation. (Also
available from
[1]http://www.omnigroup.com/Documentation/OmniWeb/)
+ We now store all bookmarks, cookies, and history in
~/Library/Application Support/OmniWeb/, instead of
~/Library/OmniWeb. We automatically copy data from
the old location when you first run the new version
(but we never delete anything from the old location,
so you might want to do this is you are fastidious).
+ We now look for AdditionalRegistrations in
.../Library/Application
Support/OmniWeb/Defaults.plist rather than
.../Library/OmniWeb.defaults
+ HTML Display
o Add minimum and maximum font sizes to the Font &
Color preferences. This makes MacNN a billion
times easier to look at. (Wil's note -- looked
fine on my Cinema Display before, but apparently
CRTs look much worse.)
o Fixed bug where we'd switch to a random italic
font when the page requested italics, instead of
giving something sane.
o Fixed bug where we'd sometimes use LucidaGrande
and sometimes Lucida Grande, which are in fact
two different fonts with visibly different
metrics on OS X.
o Clicking on a link draws it in the 'active' link
color for a couple seconds, providing instant
feedback. We also re-enabled drawing an outline
around the currently selected link (use
command-up and command-down to go through them).
o CSS background attribute is parsed much smarter
now.
o Added background-repeat support to our CSS
handler. This makes these sites look 1000%
better, and in fact much better than IE because
of bugs in that browser:
http://www.macromedia.com/macromedia/proom/pr/20
01/fh10.html (in IE this site's background color
has a different gamma than the table cells do)
http://www.hp.com/cposupport/printers/support_do
c/bpm35001.html (in IE all the content is three
pages down, and so you just see a giant white
page)
+ Browser Window
o Browser windows now cascade in what we think is
the best cascade of any app under OS X Yes,
truly, this is why I got into software.
o People didn't realize you could remove the
address box from the toolbar. Instead of dimming
the show/hide location bar menu item when it's
in the toolbar, make it remove the address box
from the toolbar.
o Moved the other toolbar stuff to the Browser
menu to appease Apple.
o Made shift-zoom maximize the window.
o People keep asking us why there's no command key
for Reload. So, we put a Reload (Cmd-R) item in
the Browser menu, whch just happens to have the
same action as Revert to Saved in the File menu.
o The chasing-arrows widget is now a button (like
in Mail) that brings up the Network Activity
panel.
o Interpret the Delete key as a request to go back
in history, as most other Mac browsers seem to
do.
o Filter the persistent history to show only
matches (iTunes style) instead of highlighting
the matches.
o There's now visual feedback when you click on a
'favorite'.
o Browsers created from AppleScript will use your
preference for whether or not to open a new
window or not. (Which means if you haven't
changed your preference you'll use an existing
window, which is the behavior of other Mac OS
browsers.)
o Had a bug where you couldn't drag unloaded
images that were also links. Fixed.
o Added NSDragOperationGeneric to the non-local
drags, which lets us drag URLs into Terminal
again.
+ Bookmarks
o You can now edit a bookmark's label by simpling
clicking on a selected bookmark, just like the
Finder.
o Added "Import Bookmarks..." under
Bookmarks->Edit Bookmarks.
o Added "Edit Label" and "Delete" to "Edit
Bookmarks" menu.
o Removed 'Add Empty Bookmark' and made it so that
a bookmark with no link is displayed as a folder
even if it has no children. Now the remaining
'Add Bookmark Folder' menu item is more
appropriate and stuff.
o Added "Edit Label" and "Delete" to "Edit
Bookmarks" menu.
o When creating a new bookmarks file, offer to
save it in ~/Documents by default (rather than
/).
o Bookmark window's titlebar zaps are now
draggable.
* Bug Fixes
+ Flash works much better now. It's still based on
Macromedia's 4.0 source code (bug them to release a
new version, we can't do anything), so 5.0 pages
still won't work, but we discovered and worked around
a bug in QuickTime setup, so Flash movies with MP3
streams (that'd be most of them) actually play now,
instead of, say, crashing.
+ HTML Display
o Fixed bug where sometimes a page would its text
twice on top of itself, resulting in letters
being extra-dark for a while.
o Font sizes (in CSS or using FONT SIZE=x) now
mimic IE 5.1 for OS X much more closely.
o Minimum font size now defaults to 9, just like
IE's undocumented feature.
o Changed names of font families in the list that
we use to do "restore to defaults" so that
button works again.
o Colors
# We now skip any number of leading #'s when
parsing a hex color string, since
http://music.discotext.com/ArtistIndex.cgi
sets their background color to ##C0FFFF,
which was turning out black.
# We now treat an empty string the same way
we have been treating a nil string (by
returning nil). Previously, we ended up
trying to parse the empty string as a hex
color, and returned black. This fixes
www.everything2.com, which uses <tr
bgcolor=> in some places.
# Now we handle odd number of digits (not 3,
6, or 9) in colors like #xxxxxx, because
www.adobe.com has a color of the form
#cc00000 (count the zeroes, folks!).
o Changed the way we create layers and handle
display:none, because CSS-2 has some stupid rule
where you can hide a layer by using EITHER
visibility:hidden or display:none, but if you
say display:none and you AREN'T a layer you hide
the stuff inside as if you were, except you
can't ever unhide it. Sigh. Anyways, this fixes
an assertion/bug with too many textBuilders on
www.adobe.com (because we were starting one when
we started a layer, and then another when we
discovered it was display:none), and makes more
CSS pages work, and is generally better.
o We now ignore control-characters in HTML source,
which we've seen a lot of recently, strangely.
o LIs now don't allow linebreaks before the next
word.
o If you request a width of zero and a height of
non-zero on an image, you get a width of one,
just like IE. Who knows why?
o Limit cell percent widths and heights to be 100%
max so that we don't have infinitely growing
tables on sites that have, say, "width=105%"
attributes. (True story!) This fixes bug #857.
o Replace occurences of [value hasSuffix:@"%"]
with [value isPercentage]. This fixes our
display of the bad HTML at azcentral.com.
o Fix the display bug on games4mac.de... Turns out
the main problem was that tables there have
fixed heights but not fixed widths and our basic
cell functionality would scale the table width
so that the height would fit and keept the table
proportional! Obviously that isn't what we want
to do, so we need to override
-shouldScaleContentSizeBasedOnNaturalSize to
return NO. The other change is to immediately
recalculate when the layout bounds change, which
fixes the race condition that somehow made this
page display correctly every once in a while
even with the above bug.
+ Browser Window
o When a frame receives content that is meant for
some other frame, remove the history context
object from the pipeline when we redirect the
pipeline to a different frame. This fixes the
history in the frame that the content eventually
ends up in. This was actually a long-standing
bug, but became much much more common when I
changed the target handling recently.
o Fixed bug #1140: Toolbar doesn't hide right
until you use the address field.
o We now update the enabled/disabled state of our
left arrow, right arrow, and start page toolbar
items immediately when they change, rather than
waiting for the user to move their mouse.
o The Stop button now turns off right when a page
finishes loading, rather than waiting for the
user to wave the mouse.
o To get rid of an extraneous check where
favorites wouldn't work if you had caps-lock
down.
o Cycling through windows using command-1 will no
longer select bookmark drawers as if they were
windows.
+ Source View
o Fixed tiny little bug where we'd leak the entire
contents of the source view every time the user
hit a key. Oopsie! That made editing pretty slow
for long documents.
o Fix a couple bugs in keeping the tag stack up to
date, one in inserting whitespace during a
reformat, and one in deleting characters up to
the beginning of the source (a wrongly handled
edge case). Together these caused bug #1144
"Source view indentation really wack".
o Made the "Do you want to save?" panel work when
quitting.
o -draggingSourceOperationMaskForLocal: now
returns NSDragOperationGeneric |
NSDragOperationCopy | NSDragOperationLink for
local drags, which lets us drag addresses into
source views again.
+ Bookmarks
o Fixed the bug where sometimes bookmarks wouldn't
show up in the Bookmarks menu, and also made it
so they never show up more than once.
o Uncomment some code for treating header tags as
folders in bookmarks. This fixes IE favorites
import.
o When importing foreign bookmarks, we now ignore
<h1> tags, so that importing IE's bookmarks
doesn't put all the bookmarks under a single
"Favorites" bookmark. We explicitly ignore <dt>
tags now, so they won't get marked as data we
don't understand.
o We no longer vertically center our text when we
draw bookmark labels, which means our bookmarks
are no longer drawn on half-pixels, which means
the bottoms of the bookmarks are now crisp and
clean instead of all fuzzy and funny.
o Add a couple more pixels left margin. This gives
some space between the disclosure triangles and
folder/link icons in OmniWeb bookmarks which is
one of the complaints the Apple HI guys had.
+ Downloads panel
o Work around IB/AppKit bug in restoring the save
frame of the window by calling it
programmatically after the NIB loads -- fixes
bug where sometimes views show up not resized
correctly in window.
o You can now drag file refs out of downloads
panel, using the file well.
o Reload button works again, and in fact works
better than ever, as we no longer cache partial
downloads and then save them over and over!
o If a download is stopped, we show how many bytes
were actually downloaded instead of the size of
the (would-be) complete file.
o If we don't know how much work there is to be
done, just report how much work we've actually
done so far rather than trying to compute a
percentage by dividing by zero (which makes for
some pretty wacky percentages).
o When you select a download, also scroll it to
visible.
o Prompt with a default filename, rather than
always having it default to being blank.
o The save panel now starts out in the same folder
as you left it in last time you used it.
+ JavaScript
o We now handle assignments to the options array
of a form element, so constructs like
'select.options[3] = new Option("foo", "bar")'
now work. This fixes #1166 (and another several
hundred pages that do dynamic popup buttons
based on other selections, I'm sure...)
o Make 'location.reload()' work from JavaScript.
This finishes fixing bug #1210 to select movie
preference at CNN.
o Moved setting the pipeline script proxy's HTML
document from when we see a <script> block to
being something that we do during init. This
lets Javascript work on pages that don't contain
any <script> tags at all. (Having a popup with
onChange="document.forms[0].submit()" with no
other JS on the page is quite common, for
instance.) Fixes bug #1142.
o If you try to focus on a form element, and it
hasn't been placed in a window yet, set a 'wants
focus' flag, and do it after it has been placed
in a window. This fixes a timing-dependent
problem when you write JavaScript to focus on a
form field in your onLoad() event. Fix for bug
#1109 on Google.
o Some pages recognize us as Netscape (because, in
this case at least, it is checking to see if
document.layers exists, which it doesn't in
IE?!?). Anyway, the JavaScript then tries to
find layers based on their 'name' attribute
instead of their 'id'. So now if we get 'name'
but not 'id', we set our 'id' to the 'name' we
got so the layer will be found.
o Changed JSForm to use a grouping proxy array for
its elements so when you ask for an element by
name and there is more than one (should only
happen with radio buttons), you'll get an array
of 'em instead of the first one found (our old
wrong behavior). Fixes most problems on
FrontBase archives search and also the set
edition page on CNN.
o Add the "document" property to layers. (Fixes
#1222, www.drmartens.com)
o We were getting different results for
"document.location" in a string context (it
would call our conversion function and correctly
return the URL as a string) and
"document.location.toString()", which would see
that we didn't implement a toString() method and
return the default, which is "[object
Location]". So I implemented toString() on
JSNativeObject. This fixes #1168, the
screenshots on 3dgameforce.com
o Use the name accessor for the nameAccessor
instead of the processorClassName. This is what
I originally intended when switching to
OWProcessorClassDescription but I either didn't
finish or screwed up. This means that we can now
do navigator.plugins['Shockwave Flash'] and get
back the Flash plugin. This is obviously the
wrong way to do this -- you should really do
navigator.mimeTypes['application/x-shockwave-fla
sh'].enabledPlugin. Luckily, the net is fickle
and we get to support both ways. Joy.
o Fix a bug in Netscape's Javascript date class.
The toGMTString() function was passing a local
date with daylight savings already applied to a
function converting to GMT which expected the
date to be the 'base' time local time zone
(without DST applied). This meant that you'd end
up having DST applied twice if you are currently
in a DST time zone, and the GMT time would be an
hour earlier than it should have been. This
fixes iTools signup, which creates a cookie with
an expiration 5 min in the future and then
checks to see if it exists to see if your
browser has cookies turned on. We'd see an
expiration of 55 minutes in the past, not return
the newly created cookie, and iTools would tell
us to turn on cookies. This was very likely a
common problem elsewhere.
+ Misc
o Fixed bug #1343: mailto urls as
bugreport.apple.com don't work. The problem was
that they didn't correctly encode their URLs,
and we passed the URL along without fixing them
up. Now we actually generate the URL from our
parameter dictionary, which means we not only
quote special characters properly, we now also
support posting forms to mailto URLs again.
o Show Info is now Command-I.
o Got rid of the obsolete GURL event handling
code, now that we actually handle AppleScript
the right way.
o Fixed the double-click-result-in-Sherlock bug,
where OmniWeb often wouldn't load the result if
it was already running. After many struggles
with Sherlock, finally figured out it was using
the IE-specific "OpenURL" AppleScript verb
instead of the supposedly Mac standard "GetURL"
AppleScript verb. We now implement both and
Sherlock works for us. (Had to reboot to get
Sherlock to ever return any results - that's the
answer if it ever stops working for ya...)
o Find works in the Error Log again.
o Save Linked Documents works again.
o Put slashes around our AddressesToFilter values
so that "ads.*.com" doesn't match
"downloads.*.com".
o Set our default anonymous ftp password to
include an @, which makes old school anonymous
ftp servers (which require an e-mail address)
happy.
o -timeSinceTreeActivationInterval now returns 0.0
when a task is inactive, rather than an interval
based on the last activation of a task. (This
fixes the completely bogus time estimates in our
top level content info, where it was looping
through the header tasks--some of which had
never been activated--and asking each for its
last activation date.)
o We now redirect Mac OS 9-style file URLs for
local paths (i.e., file:///DiskName/path) to Mac
OS X-style URLs (CFURL/NSURL always use a POSIX
path), so OmniWeb can open URLs generated by
applications like BBEdit and Internet Explorer.
(We don't use it all the time, though, because
Finder uses the new POSIX-style paths.) Sadly,
this doesn't work when the Mac OS 9 path has an
NFS path, like file:////whatever, because I
don't yet know how to resolve those.
+ Crashers (keep those reports coming!)
o Fixed most common crasher for CF3 -- pressing
command key while the app is starting up causes
immediate crash. This was the cause of most
people's "crash immediately after startup" bugs,
since it's pretty common to start typing at an
app while it's starting up.
o Rather than immediately releasing our old
document view when we switch documents, we
schedule a release in the default run loop mode,
ensuring that we won't release it out from
underneath some sort of menu or form element
interaction.
o In -keyDown:, retain ourselves to make sure we
don't crash when navigating through history.
Also check to see if we actually have a window
after processing a keystroke, and if not then
return immediately rather than trying to
coalesce key events.
o In -windowWillClose:, we now set our window's
delegate to nil, so that if our window sticks
around (for whatever reason) after we go away it
doesn't have a dangling backpointer to a zombie.
This fixes the Command-Option-B,
Command-Option-W, Command-Option-B crasher.
o Worked around AppKit bug where editing the
toolbar after you've looked at your persistent
history popup would crash. (Also fixed in next
AppKit release.)
o Forms nullify their HTML document after we
release it.
o Call -[NSWorkspace noteFileSystemChanged:] from
the main thread only (otherwise it potentially
crashes).
o Fixed Carbon event hang when opening Window
menu. Calling
-nextEventMatchingMask:untilDate:inMode:dequeue:
from -[OAAppkitQueueProcessor
shouldProcessQueueEnd apparently triggers a bug
in the Carbon event system, causing a hang.
o Worked around strange ATS crasher on
http://www.johntynes.com/rl_film_hornedman.html
o Don't add nil to an array, instead add @"". This
fixes the crasher at www.dpreview.com, which has
the wonderful statement: TD.miniempty {
background-image: url(); background-color:
#333333; } Yah, rock, baby.
o Made OWStream's parameterized content type a
private variable, and added a lock so access to
it is thread-safe.
o We now limit the JavaScript interpreter to 100
levels of recursion so that infinitely recursing
JavaScript won't overflow our stack and crash
the app. (Usually this sort of infinite
recursion happens because our DOM is incomplete,
but that'll probably be true for a while and we
wouldn't want to crash on bad JavaScript
anyway.) This fixes bug #1275 (Crasher),
www.sandisk.com has infinite JavaScript
recursion.
More information about the OmniNews
mailing list