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