diff --git a/ANNOUNCE b/ANNOUNCE
index 4dd8358..e19f762 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,18 +1,17 @@
-The Wine team is proud to announce that the stable release Wine 1.2 is
-now available.
+The Wine development release 1.3.0 is now available.
 
-This release represents two years of development effort and over
-23,000 changes. The main highlights are the support for 64-bit
-applications, and the new graphics based on the Tango standard.
-
-It also contains a lot of improvements across the board, and over
-3,000 bug fixes. See the release notes below for a summary of the
-major changes.
+What's new in this release (see below for details):
+  - Beginnings of a user interface for the builtin Internet Explorer.
+  - Support for cross-process OLE drag & drop.
+  - New builtin wscript.exe (Windows Script Host) program.
+  - Open/save dialogs remember the last used directory.
+  - Translation updates.
+  - Various bug fixes.
 
 The source is available from the following locations:
 
-  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.2.tar.bz2
-  http://prdownloads.sourceforge.net/wine/wine-1.2.tar.bz2
+  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.0.tar.bz2
+  http://prdownloads.sourceforge.net/wine/wine-1.3.0.tar.bz2
 
 Binary packages for various distributions will be available from:
 
@@ -28,474 +27,911 @@
 
 ----------------------------------------------------------------
 
-What's new in Wine 1.2
-======================
+Bugs fixed in 1.3.0:
 
-*** Core functionality
+   8742  Bridge Base On Line
+  10280  Oblivion: Horse Armor Crash
+  10284  No$gba doesn't load previous directory in rom select
+  10466  Radmin viewer 3.1: "Scanning for Active Servers" action does not work properly in main viewer window
+  10711  unhandled page fault when installing EccoPro 4.01 16 & 32-bit versions
+  10903  Fail to run Visere
+  10961  application made using a compiler/embedder fails to start
+  11060  z-order problem with Gecko prompt window starting Heredis 9 for first time
+  11310  PowerCad Pro 7
+  11325  wpkg doesn't seem to work
+  11802  Homeworld: sound broken usually
+  11805  WMP stops playback after few seconds
+  11986  Homeworld crashes at startup.
+  12161  Adobe Photoshop CS2: progress bar appearing on active viewport with "on top"
+  12559  UltimateBet does not start
+  12620  Minimize to tray broken - NoteTab
+  12870  Guild Wars doesn't start - Error Message: Graphic driver error
+  12996  Orienteering Organizer stucks when opening file from remote directory (cifs or sshfs)
+  13089  Adobe Acrobat Pro 7 / Acrobat Reader 7 -- How To window does not work
+  13310  Magic DVD Copier has jagged border around window - bad transparancy mask?
+  13344  DPP 3.4.1.1 - Images with "Fit to window" corrupted
+  13378  Xplorer2 lite crashes in SHChangeNotify when deleting directory
+  13531  dxi plugins don't run in wine
+  13652  Trillian: Dragging a chat container outside of the screen looses the container
+  13654  Diablo 2 in fullscreen mode, the bottom 6th of the screen is cut off (widescreen display)
+  13744  FlashVideo MX gives an error when launched and terminates
+  14210  Frostwire - right clicking tray icon doesn't work, closes immediately (dogfood)
+  14272  Maximized and restored state not reported properly by GetWindowPlacement
+  14328  Artificial Girl 3: Crashes when trying to start any executable
+  14375  Mouse cursor flickers in Myst IV - Revelation
+  14583  Free Music Zilla incurs unhandled page fault on exit
+  14649  Blades of Exile/OpenBOE crashes when playing certain sounds if ALSA driver is used
+  14727  Gadu-Gadu 7.7: buddy list not visible (gray), some menu options have wrong size (status options)
+  14782  drakensang demo crashes on startup
+  14799  RnQ: no tray/statusbar icons.
+  14924  Fantasy Grounds 2: display flashes to black frequently
+  14951  Heroes of Might and Magic V - Cursor error
+  15154  Code::Blocks IDE 8.02 crash at codecompletion
+  15198  improve speed while rendering text in Fine Reader 8
+  15223  ryzom client fails to create window
+  15495  Lineage 2: Gracia - Part1: DirectX 9.0 error
+  15499  IFC Trade Terminal hangs after select add existing account
+  15517  Crash while playing heroes V
+  15518  Garena won't start Warcraft3
+  15856  Internet Explorer embedded crash
+  15911  Fallout 3 configuration detection is wrong
+  16047  Garena client crashes in WSASendTo
+  16276  Vixen + mono20 shows zero-height dialog
+  16487  SOE Station Launcher does not display windows
+  16501  Some moving objects in Myst IV - Revelation turn black on most camera angles
+  16643  GetSocial fails to start
+  16896  Flashing of the screen
+  17057  Dragon NaturallySpeaking 8 installs but does not run.
+  17060  Eve Online graphical glitch
+  17149  HOMM 5: Invalid pointer error makes game crash
+  17633  Zoner Photo Studio has broken computer tree
+  17853  EQ2 Particle errors
+  17955  Eve online hanhs during random action
+  18360  Implement ntoskrnl.exe.MmMapIoSpace
+  18785  tsMuxeR GUI does not show any text
+  19212  secur32.SECUR32_initNegotiateSP() is unused
+  19307  Font distorted in Safari 3.2 for Windows
+  19308  Window border does not appear initially on Safari 3.2.3
+  19319  Word Viewer 2003 - installs wrong files (appinstall)
+  19500  Dungeon Keeper II: installer crashes near completion
+  19547  The wineserver sometimes crashes after The Movies demo installer fails
+  19860  Music won't play on Phantasy Star Universe A.I.
+  20047  Champions Online crashes due to d3d failure
+  20376  Albumplayer craches with dotnet20 function
+  20408  EVE Online freezes with DSOUND overflow after login
+  20885  Adobe Acrobat 9 Pro Extended scanning not integrated for OCR Scanning with HP Officejet 5610v
+  20894  Unimplemented function d3dx9_36.dll.D3DXCreateEffectPool
+  21133  FreeSerifSoftware PhotoPlus SE installer fails with "this action is not supported, please use setup.exe to begin installation"
+  21435  MessageBoxEx() fails with wLanguageId=0x019. Can't find dialog resource for that lang
+  21546  Microsoft Flight Simulator 9 "remove debugger"
+  21604  Office 2003: can no longer insert picture from file without manually setting override for gdiplus
+  21732  HTML-Kit can't display embedded web pages
+  21832  PSDK example doesn't render correctly
+  21920  Houaiss Portuguese Dictionary won't install
+  22021  Switching pages in ElsterFormular 2009/2010 needs much time
+  22202  Dragon Age: Origins - gameplay is very glitchy (mostly black screen)
+  22664  EVE Online Unhandled page fault during load screen
+  22774  DirectX installer very slow on wine
+  22972  new Firefox Setups wont run
+  22992  SVN-Monitor needs gdiplus.dll.GdipGetRenderingOrigin
+  23085  Printing in notepad displays "Page &p" instead of actual page number.
+  23095  The win_skip()s in msvcrt/tests/printf.c are broken on Win95/98 and NT4
+  23115  IStorage Created with StgOpenStorageOnILockBytes doesn't use 'Stat' method of the IlockBytes Object
+  23181  Absolute Poker won't start anymore
+  23214  WM Desktop Alert crashes immediately after being run, without native gdiplus
+  23280  The Starcraft 2 Editor crashes when you add a Model to the Previewer.
+  23340  Winscard : test program : unimplemented function winscard.dll.SCardIsValidContext and winscard.dll.SCardReleaseContext
+  23348  Need for Speed: Shift Demo has white fog during gameplay
+  23372  AOE III: Crash at Ensemble Studios video
+  23392  Magic the Gathering: Duel of the Planeswalker crashes on startup
+  23528  Eclipse crashes immediately after startup
+  23535  Fallout 3: no sound in childbirth scene if alsa driver is used
+  23538  incredimail doesn't install
+  23556  Starcraft 2 beta displays a black screen right after starting
+  23578  Team Fortress 2: Significant lag disrupts gameplay...
+  23581  Wine's README does not mention Win64
+  23613  Learning Software "lino" crashes at installation
+  23617  Drakan: Order of the flame crashes on start
+  23678  Crystal Cubes: fonts not drawn correctly
+  23704  winhelp failed to load any help file
+  23737  Modelsim XE III 6.4b/6.5c startup crashes
+  23744  double click does not work in cell like window
+  23762  wineboot aborts if "Terminate Process" is clicked
+  23772  The bug in NtQueryInformationProcess with ProcessInformationClass = ProcessDebugObjectHandle
+  23788  Samsung Kies installer stops early
+  23808  Marmot Project doesn't start
+  23810  16-bit setup program can't find its files
+  23814  Enterprise Architect crashes on start in RegisterDragDrop()
 
-- Loading and running 64-bit Windows applications is now supported on
-  x86-64 processors (only on Linux at this point).
+----------------------------------------------------------------
 
-- There are now two flavors of Wine prefixes, 32-bit and
-  64-bit. 32-bit prefixes only support 32-bit applications, while
-  64-bit prefixes support both 32-bit and 64-bit applications. The
-  prefix flavor is set at prefix creation time and cannot be changed
-  afterwards, since all the files and registry entries are in
-  different locations. Backwards compatibility is ensured by
-  considering all prefixes created with older Wine versions to be
-  32-bit.
+Changes since 1.2:
 
-- WoW64 file system redirection is supported now. When running a
-  32-bit application in a 64-bit prefix, accesses to the
-  window/system32 directory are automatically redirected to
-  windows/syswow64.
+Alexander Nicolaysen Sørnes (12):
+      shdocvw: Fix a buffer overflow in InternetShortcut's IPersistFile::Load.
+      shdocvw: Add menu bar to Internet Explorer.
+      shdocvw: Allow printing from the menubar in IE.
+      shdocvw: Add About dialog to IE.
+      shdocvw: Add Open URL dialog to IE.
+      shdocvw: Make the Open URL dialog open URLs.
+      shdocvw: Add an address bar to IE.
+      shdocvw: Make the addressbar in IE do something useful.
+      shdocvw: Add DocHostContainer interface to interact with WB2/IE.
+      shdocvw: Update the address bar when URL changes.
+      shdocvw: Add a statusbar to IE.
+      shdocvw: Add support for setting the statusbar text in IE.
 
-- WoW64 registry redirection is now supported in 64-bit prefixes. This
-  allows both 32-bit and 64-bit applications to set platform-specific
-  registry keys without stepping on each other.
+Alexandre Goujon (2):
+      oleaut32/typelib: Fix ITypeInfo_Invoke with restricted keyword.
+      advapi32: Fix cred domain according to tests.
 
-- All the 16-bit support code has been moved to a set of independent
-  16-bit modules. No 16-bit code is loaded or initialized when running
-  a standard Win32 application, unless it starts making 16-bit calls.
+Alexandre Julliard (53):
+      gdi32/tests: Fixed coordinates matching to use a relative error.
+      tests: Try to avoid message boxes popping up in non-interactive testing.
+      tests: Print information about the last executed test before crashing.
+      tests: Run all tests with the default FPU control word.
+      gdi32: Reject invalid DIB depths in CreateDIBSection.
+      comctl32: Fix positioning of toolbars that have the WS_BORDER style.
+      winebuild: Add more checks to protect against corrupted resource files.
+      server: Try to use /proc/pid/mem to read process memory since it should be faster.
+      d3d9/tests: Avoid sizeof in a trace.
+      sane.ds: Remove unused variables.
+      gphoto2.ds: Remove unused variables.
+      msvcrt/tests: Fix printf format warnings with ptrdiff_t.
+      rundll32: Fix a pointer conversion warning on 64-bit.
+      winebuild: Add a -m16 option to specify a 16-bit build.
+      winegcc: Add support for a -m16 option to specify a 16-bit build.
+      winegcc: Don't pass -nodefaultlibs to the Unix compiler so that it can be used by Wine.
+      makefiles: Specify -nodefaultlibs when building low-level dlls.
+      winegcc: Import kernel32 and ntdll by default also when building Wine.
+      dlls: Remove explicit imports of kernel32 and ntdll.
+      programs: Remove explicit imports of kernel32 and ntdll.
+      rpcrt4: Don't align the buffer after reading the conformance, we need to read the variance first.
+      wrc: Display a warning in pedantic mode when using memory options in 32-bit resources.
+      msvcrt: Use the appropriate mangled names for operator new/delete on 64-bit.
+      include: Make sure wine/port.h and msvcrt headers are not used together.
+      user32: DCX_NORESETATTRS should be applied at DC release time.
+      gdi32/tests: Fix a typo in a macro name.
+      gdi32: Update the DC mappings when the layout is changed.
+      include: Don't install tlb files, they are platform-dependent.
+      user32: Don't make constants static to avoid compile error without optimization.
+      configure: Disable the unused result warnings when Fortify is enabled.
+      winegcc: Don't import winecrt0 by default when building with -nodefaultlibs.
+      makefiles: Always build the static cross libraries if crosstest is supported.
+      makefiles: Always build the cross import libraries if crosstest is supported.
+      gdi.exe: Disable the remaining 16-bit visible region functions, they can't work.
+      gdi32: Replace the SelectVisRgn Wine-specific export by a private entry point.
+      gdi32: Store the total visible rectangle in the DC.
+      gdi32: Get rid of the GetDCOrgEx driver entry point, GDI can implement this itself now.
+      configure: Only output the disabled crosstest rule once.
+      configure: Build the import libraries without recursing when possible.
+      configure: Send the flex error output to config.log.
+      urlmon/tests: Don't bother testing unimplemented functions to reduce test output.
+      server: Use tgkill to send signals on x86_64 too.
+      gdi32: Make the top right corner the DC origin for RTL layouts.
+      gdi32/tests: Make function pointers global in the mapping test.
+      gdi32/tests: Add some tests for the DC origin in RTL layouts.
+      winex11: Fix handling of the lpDx array in ExtTextOut for the non-Xrender case.
+      gdi32: Make sure the text dimensions are always positive in the ExtTextOut normal case.
+      gdi32: Mirror the clip region when the DC is mirrored, with tests.
+      gdi32: Fix text positioning in mirrored DCs.
+      gdi32: Fix offset for mirrored devices that have a non-zero viewport offset.
+      winex11: Fix the positioning of some graphics primitives on mirrored contexts.
+      gdi32: Refresh the DC transforms when the visible rectangle is changed.
+      gdi32: Replicate a Windows bug in StretchDIBits for top-down bitmaps in the non-stretching case.
 
-- The mount manager now reports the actual UUID for disk devices that
-  support it instead of a hard-coded one.
+Alistair Leslie-Hughes (1):
+      dwmapi: Add stub DwmEnableBlurBehindWindow.
 
-- Symbolic links are now supported in the registry.
+Anders Jonsson (1):
+      shdocvw: Add Swedish translation.
 
-- The C runtime libraries msvcr80, msvcr90 and msvcr100 used by recent
-  Visual C++ versions are now partially implemented.
+Andrew Eikum (9):
+      oleaut32: Don't fail if member is missing in ITypeComp::Bind.
+      shlwapi: Be less strict on which type of IShellFolder can be enumerated.
+      shlwapi: Implement SHGetIniStringW.
+      shlwapi: Implement SHSetIniStringW.
+      shell32: IShellFolder::ParseDisplayName should work for missing files if given valid IBindCtx.
+      comdlg32/tests: Untie ok_testcases from test_ok().
+      comdlg32: Store and use save/open dialogs' most-recently-used data.
+      notepad: Don't specify initial dir for save and open dialogs.
+      comdlg32/tests: Use GetOpenFileNameA instead of GetOpenFileNameW.
 
-- Some functions now use a Microsoft-compatible function prologue when
-  building with a recent enough gcc. This allows Steam overlays to
-  work.
+Andrew Nguyen (29):
+      krnl386.exe: Use the correct format specifier for size traces.
+      krnl386.exe: Fix a potential leak and NULL dereference in DPMI_xrealloc.
+      ddraw: Return a failure code in IDirectDrawSurfaceImpl::QueryInterface if IDirect3D7::CreateDevice fails.
+      ddraw: Don't permit the enumeration of the Direct3D reference device in IDirect3D1::FindDevice.
+      ddraw/tests: Test IDirect3D::FindDevice HAL enumeration.
+      shlwapi/tests: Fix Win98 SE test failures for StrFormatKBSizeA/W.
+      shlwapi/tests: Add tests for StrStrA.
+      shlwapi: Fix handling of an empty search string in StrStrW.
+      shlwapi/tests: Add tests for StrStrIA.
+      shlwapi/tests: Add tests for StrStrIW.
+      shlwapi: Implement StrStrNW.
+      shlwapi: Implement StrStrNIW.
+      shlwapi/tests: Rename a string variable for clarity.
+      shlwapi/tests: Skip SHAnsiToAnsi tests on Win98.
+      shlwapi/tests: Skip SHUnicodeToUnicode tests on Win98.
+      shlwapi/tests: Skip StrRStrI tests on older Win9x platforms.
+      shlwapi/tests: Skip a StrCpyNW test that crashes on older Win9x.
+      shlwapi/tests: Correct the prototype of the StrRetToBSTR function pointer.
+      propsys: Implement PSStringFromPropertyKey.
+      propsys/tests: Add tests for PSStringFromPropertyKey.
+      propsys: Implement PSPropertyKeyFromString.
+      propsys/tests: Add tests for PSPropertyKeyFromString.
+      propsys: Fix comma processing in PSPropertyKeyFromString.
+      ntdll: Fix the status code for ProcessDebugObjectHandle class in NtQueryInformationProcess when the debugger is absent.
+      krnl386.exe: Fix last error check for DOS compatibility hack.
+      comdlg32: Avoid a NULL dereference when changing the file type selection of a Unicode Win3.1-style dialog.
+      oleaut32: Partially implement RegisterTypeLibForUser.
+      oleaut32: Partially implement UnRegisterTypeLibForUser.
+      oleaut32/tests: Test typelib registration in the user registry.
 
+Andrew Talbot (2):
+      advapi32: Constify some variables.
+      advapi32: Constify some variables.
 
-*** User interface
+Andrey Turkin (6):
+      oleaut32: Reuse existing function to encode custom data.
+      oleaut32: Add support for const variables.
+      oleaut32: Better handle secondary type when generating type descriptors.
+      kernel32: Enhance EndUpdateResource.
+      imagehlp: Add tests for ImageGetDigestStream.
+      imagehlp: Implement ImageGetDigestStream.
 
-- There are new icons for all the built-in applications, as well as
-  for the standard toolbars and images. The icons are based on the
-  Tango set for a nicer integration with the native Unix desktop look.
+André Hentschel (10):
+      winecfg: Improve German view.
+      shlwapi/tests: Fix GLE for SHFormatDateTimeA.
+      ntdll: Add LDT error codes.
+      shell32: Add stub for SHGetPropertyStoreFromParsingName.
+      ws2_32: Fix test message.
+      krnl386.exe16: Add an error code.
+      shdocvw: Add German translation.
+      kernel32: Spelling fix in a comment.
+      jscript: Fix typo in registry information.
+      msi: Prevent cryptic error.
 
-- Animated cursors can now be loaded, though only the first frame of
-  the animation is used as a static cursor.
+Aric Stewart (7):
+      libwine: Update wctype table to represent windows 7 values.
+      libwine: Add C1_DEFINED to our C1 types and set it properly.
+      libwine: Remove some previous c1 cntrl exceptions that are no longer valid.
+      libwine: There are a number of characters of non punctuation type in the latin I block that Windows considers to be punctuation.
+      libwine: There are a few supercript characters (No, Lm types) that Windows marks as being either digit or as a letter.
+      kernel32/tests: Add test for CT_TYPE1 of GetStringTypeW.
+      usp10: Start implementing Chaining Context Substitution Format 3: Coverage-based Chaining Context Glyph Substitution.
 
-- The mouse cursor is now updated correctly in applications that
-  create windows from different threads, like Internet Explorer.
+Aurimas Fišeras (1):
+      shdocvw: Add Lithuanian translation.
 
-- The standard print and page setup dialogs are working much better
-  now.
+Austin English (8):
+      winscard: Add stubs for SCardIsValidContext/SCardReleaseContext.
+      ntoskrnl.exe: Add stubs for MmMapIoSpace/MmUnmapIoSpace.
+      Remove references to wineprefixcreate.
+      rpcrt4/tests: Improve failure messages.
+      ws2_32: Remove unused variable.
+      setupapi/tests: Remove unused variable.
+      dmusic: use a previously unused variable.
+      kernel32/tests: Add a test for CreateFileA.
 
-- There is now an application wizard control panel to manage installed
-  applications.
+Damjan Jovanovic (8):
+      notepad: Substitute the page number in the footer.
+      winemenubuilder: Always initialize COM.
+      ntdll: Convert even Unix paths outside Wine's drive mappings to DOS paths.
+      kernel32: Deal with unix paths in wine_get_dos_file_name.
+      winemenubuilder: Use windowscodecs for some ICO to PNG conversion.
+      winemenubuilder: Use windowscodecs for all ICO to PNG conversion.
+      winemenubuilder: Remove legacy PNG and XPM conversion code.
+      winemenubuilder: Add an option for thumbnailing .lnk files.
 
-- Rendering of bi-directional text is now supported reasonably
-  well. There is also some support for Arabic text shaping.
+David Hedberg (33):
+      include: Fix ExplorerBrowser interface declaration.
+      shell32: Fix some return values from the shellview contextmenu.
+      include: Add some new TreeView messages and extended style defines.
+      comctl32: Add support for expanded state image in treeview.
+      comctl32: Warn when using unsupported extended styles.
+      include: Add some missing function declarations in shlwapi.h.
+      include: Add SIGDN enumeration.
+      shell32: Shell_MergeMenus should be declared in shlobj.h and exported by name.
+      shell32: Shell_GetImageLists should be declared in shlobj.h and exported by name.
+      include: Add IEnumShellItems interface declaration.
+      include: Add IShellItemArray and IShellItemFilter interface declarations.
+      shell32/tests: Try harder to subclass the listview.
+      shell32: Implement IPersistFolder2 for the desktop folder.
+      include: Add INameSpaceTreeControl, INameSpaceTreeControl2 and INameSpaceTreeControlEvents interface declarations.
+      include: Add INameSpaceTreeControlCustomDraw interface declaration.
+      include: Add INameSpaceTreeControlDropHandler interface declaration.
+      include: Add a few IFileDialog related interface declarations.
+      include: Add IFileDialogCustomize interface declaration.
+      include: Add IFileDialogControlEvents interface declaration.
+      shell32: Change a fixme to a trace in shfldr_unixfs.c.
+      shell32: Implement Set/GetCurrentViewMode in the default shellview.
+      shell32: Implement SHGetNameFromIDList and IShellItem::GetDisplayName.
+      shell32: Implement SHCreateItemFromParsingName.
+      shell32: Implement SHCreateItemFromIDList.
+      shell32: Implement SHGetItemFromDataObject.
+      shell32: Implement SHGetIDListFromObject.
+      include: Add CLSID_NamespaceTreeControl, CLSID_FileOpenDialog and CLSID_FileSaveDialog.
+      shell32: Implement SHGetItemFromObject.
+      shell32: Implement IShellItem::Compare.
+      shell32: Initial implementation of IShellItemArray with SHCreateShellItemArray.
+      shell32: Implement SHCreateShellItemArrayFromShellItem.
+      shell32: Implement SHCreateShellItemArrayFromDataObject.
+      shell32: Fixup IShellItemArray_Constructor helper.
 
-- Many features of the RichEdit control are improved, particularly
-  support for tables, URL detection, cursor positioning, scrollbar
-  management, and support for windowless controls.
+Davide Pizzetti (3):
+      winecfg: Italian translation update.
+      winedbg: Italian translation update.
+      xcopy: Italian translation update.
 
-- Many common controls work better now, particularly the listview,
-  calendar and tab controls.
+Detlef Riekenberg (2):
+      winhelp.exe16: Add missing separator after command name.
+      rundll.exe16: Add program as 16bit wrapper for rundll32.exe.
 
-- There is now a partial implementation of the Microsoft Text Services
-  framework, which provides better input method support in modern
-  applications.
+Dmitry Timoshkov (3):
+      comctl32: Make sure that the focus is set to an existing property sheet button.
+      winex11: Remember last window that had the XIC focus and use it in ToUnicode() to make dead keys work more reliably.
+      gdi32: Make sure that all the glyph metrics are transformed before caching them.
 
-- There is now a proper user interface for importing, exporting and
-  managing cryptographic keys and certificates.
+Dylan Smith (28):
+      richedit: Don't break when streaming out a table, just continue.
+      richedit: Fix streaming rtf with table at the start of the text.
+      user32: RegisterClassEx should check for invalid cbSize field.
+      wordpad: Fix behaviour of find/replace dialog.
+      wordpad: Find dialogs intialize find field with selection.
+      wordpad: Search finished message box should be modal.
+      wordpad: Reduce unnecessary flicker from extra background erasing.
+      wordpad: Remove sized print preview page buffer.
+      wordpad: Avoid filling overlapping rectangles in print preview.
+      wordpad: Save and load word wrap registry options.
+      comdlg32: Check for valid replace parameters on ReplaceTextW.
+      comdlg32: Zero length replace buffer is valid for ReplaceText.
+      comdlg32: Test and fix Find/ReplaceText parameter checking code.
+      user32: DefMDIChildProc sends WM_MDINEXT with active child handle.
+      user32/tests: Minimized windows shouldn't be resizable.
+      user32: Prevent resize of minimized windows from SetWindowPos.
+      wordpad: Allow objects & images to be added with native riched20.
+      richedit: EN_UPDATE notification is sent on WM_PAINT.
+      richedit: Remove redundant commit and repaint in ME_StreamInText.
+      richedit: Invalidate without calling UpdateWindow in many cases.
+      richedit: Removed redundant variable ptLastSplittableRun.
+      richedit: Removed unused run flags values.
+      richedit: Return correct values when EM_SETTEXTMODE fails.
+      richedit: Don't change text mode with undo or redo stack.
+      richedit: Check for bits instead of equality in EM_SETCHARFORMAT.
+      richedit: Remove checks for converting internal CHARFORMAT structs.
+      richedit: Use ME_Cursor as parameter to ME_SplitRunSimple.
+      richedit: Avoid redundant calls to ME_CalcRunExtent.
 
-- Wine is now fully translated to French, German, Dutch, Italian,
-  Portuguese, Romanian, Polish, Lithuanian, Norwegian, and Korean. It
-  has partial translations for another twenty languages.
+Eric Pouech (1):
+      wineoss.drv: Be consistent for aux devices about what we actually support.
 
+Florian Köberle (3):
+      comctl32: Call TREEVIEW_SendExpanded after expanding.
+      comctl32: Simplify the code.
+      wined3d: Let GetRasterStatus return D3DERR_INVALIDCALL.
 
-*** Desktop integration
+Francois Gouget (1):
+      wine.inf: Let winebrowser handle the ftp URLs.
 
-- The XDG standard for application startup notification is now
-  implemented.
+Frédéric Delanoy (2):
+      shdocvw: Add French translation.
+      shdocvw: Fix French translation.
 
-- The NET_WORKAREA property is now supported to let applications take
-  into account the size of the Unix desktop task bars.
+Greg Geldorp (2):
+      winetest: Take manifests into account when hunting for DLLs.
+      msvcrt/tests: ecvt on Win9x and NT4 will corrupt memory if nrdigits < 0.
 
-- File associations created by a Windows applications are now
-  registered with the Unix desktop.
+Hans Leidekker (35):
+      advapi32: Stub out the Safer* functions a bit more.
+      shlwapi: Don't trace the contents of output buffers.
+      msi: Add a test for MsiSetFeatureState.
+      msi: Store the patch state in the registry.
+      msi: Unpublish the product after running all the actions.
+      msi: Keep track of the patch filename in apply_registered_patch.
+      msi: Publish patches regardless of any features being installed locally.
+      msi: Set feature states to the installed state if the Preselected property is not set.
+      msi: Move the component enabled check into the standard actions.
+      msi: Reverse the transform storage list order.
+      msi: Improve traces in db_get_raw_stream.
+      msi: Remove a fixme that no longer applies.
+      msi/tests: Double null-terminate a REG_MULTI_SZ string.
+      msi: Properly advance the patch pointer in msi_check_product_patches.
+      winhttp: Add a partial implementation of WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT.
+      winhttp: Handle errors from SSL_read.
+      msi: Make sure properties are updated after applying a patch.
+      msi: Downgrade a warning.
+      msi/tests: Fix test failures on wow64.
+      msi/tests: Return an error code from helper_createpackage and package_from_db.
+      msi/tests: Skip tests when the current user has insufficient rights.
+      msi/tests: Avoid a long timeout in the test for DeleteServices.
+      msi/tests: Fix some more wow64 test failures.
+      msi: Fix a memory leak.
+      msi/tests: Initialize a string buffer and fix some leaks.
+      msi/tests: Properly contruct the icon path for win9x.
+      msi: Never defer standard actions.
+      msi: Set/unset the SourceDir property at the right stage in the execution sequence.
+      msi: Add some tests for MsiGetSourcePath.
+      msi: Warn if a transform file cannot be opened.
+      msi: Register dlls directly in the SelfRegModules and SelfUnregModules actions.
+      msi: Synchronize the spec file with version 5.0.
+      msi/tests: Skip a test if the current user has insufficient rights.
+      include: Add the TOKEN_ELEVATION_TYPE enumeration.
+      msi/tests: Skip tests if UAC is enabled and the process is not running elevated.
 
-- Application icons are now set with the NET_WM_ICON hint, which
-  enables alpha channel transparency under window managers that
-  support it.
+Harald Hoyer (1):
+      preloader: Fix moving of auxiliary values.
 
-- Maximizing a window from the Unix window manager is now detected and
-  the state is correctly reflected on the Windows application side.
+Harry Jeffery (1):
+      Fixed various spelling mistakes.
 
-- The XDG desktop screen saver is now launched when a Windows
-  application makes a request to start the screen saver.
+Henri Verbeet (40):
+      ddraw: Avoid some forward declarations.
+      ddraw: Get rid of the useless "ddraw_owner" fields.
+      ddraw: Get rid of some dead code.
+      ddraw: The surface isn't allowed to be NULL in EnumSurfacesCallbackThunk() and EnumCallback().
+      ddraw: Merge the ddraw thunks into ddraw.c.
+      ddraw: Merge the surface thunks into surface.c.
+      wined3d: Consolidate surface related prototypes in wined3d_private.h.
+      wined3d: Remove restoring the read buffer from read_from_framebuffer_texture().
+      wined3d: Add some missing flags to debug_d3dusage().
+      wined3d: Remove an unused prototype.
+      wined3d: Just implement BindTexture() for GDI surfaces in surface_gdi.c.
+      wined3d: Use a more consistent name for the normalized texrect "extension".
+      wined3d: Remove ModifyLocation() from the public wined3d surface interface.
+      wined3d: Remove LoadLocation() from the public wined3d surface interface.
+      wined3d: Preload resources before FBO setup.
+      wined3d: Framebuffer blits are affected by the color mask.
+      d3d9/tests: Introduce a vertex shader to the MRT test.
+      wined3d: Clear all render targets in an MRT setup.
+      d3d9/tests: Add a test for clearing render targets in an MRT.
+      wined3d: Avoid loading the destination surface in stretch_rect_fbo() if it will be completely overwritten.
+      wined3d: Do RGB <=> sRGB transfers using FBO blits.
+      wined3d: Merge strect_rect_fbo() and surface_load_srgb_fbo().
+      wined3d: Add a missing return statement to surface_prepare_texture().
+      wined3d: Cleanup Get/SetRenderState traces a bit.
+      wined3d: Check for unread registers in a more logical way in handle_ps3_input().
+      wined3d: Properly take both input and output masks into account in handle_ps3_input().
+      wined3d: Invalid NP2 fixup info is an internal error.
+      wined3d: Setting render target 0 to NULL in an application error.
+      wined3d: Unify vertex shader output handling between shader models.
+      wined3d: Clamp vertex shader outputs.
+      d3d9/tests: Add a test for handling floating point specials in shaders.
+      d3d9/tests: Fix an ok() message in pointsize_test().
+      ddraw: Use a less offensive handle table implementation for materials.
+      ddraw: Use a less offensive handle table implementation for matrices.
+      ddraw: Use a less offensive handle table implementation for stateblocks.
+      ddraw: Use a less offensive handle table implementation for surfaces.
+      wined3d: The stateblock doesn't have a parent.
+      wined3d: Move the draw buffer array to the context.
+      wined3d: Add support for ARB_texture_compression_rgtc.
+      d3d9/tests: Read from the appropriate pixels in test_constant_clamp_vs().
 
-- Start Menu entries are now properly removed when an application is
-  uninstalled.
+Howell Tam (1):
+      ws2_32: Wrapped WSASendTo/WSARecvFrom with a different function name.
 
-- Copying and pasting images between Windows and Unix applications
-  works more reliably now, and more image formats are supported.
+Huw Davies (4):
+      ole32/tests: Relax the reference counting tests a bit. We only care whether references are held or not.
+      ole32: Implement cross-process drag and drop.
+      ole32: Pass a real IUnknown ptr to CoMarshalInterface.
+      oleaut32: Don't invoke a function that has the restricted attribute or is part of an interface that's marked as restricted.
 
-- Launching an external Unix Web browser from a Windows application
-  now works correctly.
+Hwang YunSong (2):
+      shdocvw: New Korean resource.
+      start: Update Korean resource.
 
-- MSI files are now associated with Wine to enable launching them
-  directly from the desktop.
+Igor Paliychuk (29):
+      shell32: Update Ukrainian translation.
+      taskmgr: Add Ukrainian translation.
+      regedit: Add Ukrainian translation.
+      oleview: Add Ukrainian translation.
+      winecfg: Add Ukrainian translation.
+      notepad: Add Ukrainian translation.
+      appwiz.cpl: Add Ukrainian translation.
+      cryptui: Add Ukrainian translation.
+      net: Add Ukrainian translation.
+      progman: Add Ukrainian translation.
+      wineboot: Add Ukrainian translation.
+      winedbg: Add Ukrainian translation.
+      progman: Ukrainian translation fix.
+      notepad: Ukrainian translation fix.
+      browseui: Add Ukrainian translation.
+      jscript: Add Ukrainian translation.
+      gphoto2.ds: Add Ukrainian translation.
+      sane.ds: Add Ukrainian translation.
+      winspool.drv: Add Ukrainian translation.
+      wineconsole: Add Ukrainian translation.
+      cmdlgtst: Add Ukrainian translation.
+      start: Add Ukrainian translation.
+      shdocvw: Add Ukrainian translation.
+      cmd: Add Ukrainian translation.
+      taskmgr: Fixed Ukrainian translation.
+      comdlg32: Ukrainian translation update.
+      crypt32: Ukrainian translation update.
+      comdlg32: Fixed Russian standard dialog sizes.
+      comdlg32: Fixed Ukrainian standard dialog sizes.
 
-- The virtual desktop window now switches to full-screen mode when its
-  size matches that of the screen.
+Ilya Basin (2):
+      shell32: Fix CommandLineToArgvW("") truncating returned exe path.
+      shell32/tests: CommandLineToArgvW("") shouldn't truncate returned exe path.
 
-- The strange window management behavior used by Delphi-generated
-  applications is better supported now.
+Jacek Caban (24):
+      jscript: Fixed sort_cmp for non-string arguments.
+      mshtml: Added IHTMLElement2::getBoundingClientRect implementation.
+      mshtml: Added IHTMLRect::get_top implementation.
+      mshtml: Added implementation of remaining IHTMLRect getters.
+      mshtml: Added IHTMLDocument3::detachEvent implementation.
+      shdocvw: Don't fail on invalid headers argument in navigate_url.
+      mshtml: Removed frozen status comments from nsiface.idl.
+      jscript: Added support for Function.arguments property.
+      jscript: Use generic object constants for Math constants.
+      shdocvw: Moved IHlinkFrame implementation to separated object.
+      shdocvw: Moved ITargetFrame2 implementation to HlinkFrame object.
+      shdocvw: Inherit HlinkFrame in InternetExplorer object.
+      wscript.exe: Added stub implementation.
+      jscript: Return S_OK in SetScriptState for SCRIPTSTATE_INITIALIZED.
+      jscript: Register .js file type.
+      wscript.exe: Added engine lookup implementation.
+      wscript.exe: Added script engine host implementation.
+      wscript.exe: Added parsing script file implmentation.
+      wscript.exe: Added IHost typelib.
+      wscript.exe: Added IHost stub implementation.
+      wscript.exe: Added missing vararg attribute.
+      wscript.exe: Added IHost's IDispatch functions implementation.
+      wscript.exe: Added support for IHost type info.
+      mshtml: Pass processed URI to NewURI.
 
+Johan Gill (1):
+      ddraw: Added a todo_wine test for SetCooperativeLevel.
 
-*** Graphics
+Jörg Höhle (2):
+      msvfw32/tests: Add ICDecompressQuery format tests.
+      msvidc: ICDecompressQuery returns ICERR_BADFORMAT on error.
 
-- Subpixel font rendering is now supported, which greatly improves
-  text appearance on LCD screens. The subpixel configuration is
-  derived from the system fontconfig and Xft settings.
+Louis Lenders (3):
+      d3d9/tests: Test GetAdapterDisplayModeEx with D3DDISPLAYROTATION null-pointer.
+      wine.inf: Add key HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\1033.
+      wine.inf: Add key HKCU,%CurrentVersion%\Run.
 
-- Icons with alpha channels are now properly blended in, for a much
-  nicer appearance.
-
-- Image lists now properly store the alpha channel of images and use
-  it when displaying them.
-
-- The windowscodecs dll has been added, with codecs for the JPEG, GIF,
-  PNG, BMP, ICO, and TIFF image formats.
-
-- Many functions are now implemented in GDIPlus. The gdiplus dll is
-  now considered good enough to load the built-in version by default.
-
-- Overlays are now supported in DirectDraw.
-
-- Many more capabilities are now supported in the SANE scanner
-  backend. This improves scanning support in Acrobat.
-
-
-*** Audio
-
-- The openal32 dll is now implemented, as a wrapper around the Unix
-  OpenAL library.
-
-- There is now an initial implementation of the mmdevapi dll (part of
-  the new Vista sound architecture), using OpenAL for sound I/O.
-
-- The msgsm32.acm GSM codec is now supported.
-
-- The ALSA sound driver now works better with PulseAudio's ALSA
-  emulation.
-
-- Digital playback of audio CDs is now supported.
-
-
-*** Internet and networking
-
-- The HTTP protocol implementation has seen many improvements, in
-  particular better handling of proxies and redirects, better cookie
-  management, support for gzip encoding, fixes for chunked transfer
-  mode, support for IPv6 addresses, and better certificate validation
-  on secure connections.
-
-- The Gecko HTML engine has been updated to a more recent upstream
-  version. Many more HTML objects are now implemented.
-
-- The RPC layer now properly supports server-side authentication and
-  impersonation. The COM marshalling/unmarshalling is also more
-  compatible. RPC is now supported over the HTTP protocol too.
-
-- There is now an essentially complete implementation of the
-  JavaScript language.
-
-- The IRDA network protocol is now supported by the socket layer.
-
-- The inetmib1 dll is now implemented, with support for the standard
-  SNMP MIB tables.
-
-- The inetcomm dll now implements the POP3 and SMTP protocols, as well
-  as better MIME support.
-
-- Extended mail providers are now better supported, particularly the
-  native Outlook provider. Mail attachments are also supported now.
-
-- Many undocumented functions in the shlwapi dll have been implemented
-  for improved Internet Explorer support.
-
-
-*** Direct3D
-
-- FBOs are now used by default for off-screen rendering in Direct3D.
-
-- Backbuffers larger/smaller than their associated window are now
-  correctly stretched.
-
-- A large portion of the d3dx9 dlls is now implemented, most notably
-  the shader assembler, .x file support, functions for fonts, general
-  3D math, mesh handling, and sprites. A start has been made with the
-  texture and effect functions.
-
-- Fog handling has improved a lot.
-
-- Various YUV texture formats are now supported.
-
-- wined3d contexts are now managed per-thread, and play nice both with
-  other wined3d instances and opengl32 GL contexts. Contexts are
-  checked for validity before being used (e.g. if the associated
-  window is destroyed.)
-
-- Point sprite handling has improved a lot.
-
-- The shader source is now dumped on GLSL compile/link failures. This
-  is mostly to help driver developers, like Mesa, with investigating
-  GLSL bugs triggered by Wine.
-
-- The graphics card detection code is improved, and many more graphics
-  cards are now recognized.
-
-- User clip planes are now supported in shaders. This allows proper
-  water reflections in Half-Life 2.
-
-- There is now an initial implementation of Direct3D 10, including the
-  dxgi, d3d10core and d3d10 dlls.  Most of the work so far has gone
-  into parsing d3d10 effects and SM4 shaders.
-
-- Shadow samplers are now properly supported. This fixes shadows in
-  StarCraft 2.
-
-- There is now a shader based implementation of D3D fixed function
-  fragment processing. This avoids some limitations of the previous
-  OpenGL fixed function based approach.
-
-- Partial updates of surfaces with compressed formats are now properly
-  supported.
-
-- Many new OpenGL extensions are now supported. These include:
-
-   - EXT_provoking_vertex/ARB_provoking_vertex. This allows the
-     correct vertex color to be used when flat shading is enabled, and
-     helps Civilization IV in particular.
-
-   - EXT_vertex_array_bgra/ARB_vertex_array_bgra. This allows for more
-     efficient handling of BGRA (D3DCOLOR) data in the fixed function
-     pipeline.
-
-   - EXT_draw_buffers2. This enables independent color write masks
-     when multiple (simultaneous) render targets are in use.
-
-   - Various nVidia extensions to ARB vertex/fragment programs. These
-     allow SM3 support with the ARB vertex/fragment program shader
-     backend.
-
-   - EXT_texture_compression_rgtc. This adds support for the ATI2N
-     (also known as 3Dc) compressed texture format.
-
-   - ARB_texture_rg. This allows for more efficient support of the
-     R16F, G16R16F, R32F and G32R32F texture formats.
-
-   - ARB_framebuffer_object. This is mostly the same as the existing
-     support for EXT_framebuffer_object, but improves rendering with a
-     depth/stencil buffer larger than the color buffer(s). It helps
-     (among others) Splinter Cell,
-
-   - ARB_sync. This adds support for multi-threaded / cross GL context
-     event queries used by Dragon Age: Origins.
-
-   - ARB_half_float_vertex. This adds support for 16-bit floating
-     point vertex formats on cards that don't already support
-     NV_half_float. It helps Supreme Commander.
-
-- There is now a general framework for supporting variations/quirks in
-  GL drivers.
-
-
-*** Built-in applications
-
-- The Wine debugger now displays a crash dialog to let the user know
-  that a crash happened before dumping the backtrace information.
-
-- The Wine debugger now uses the Dwarf exception unwinding data for
-  more reliable backtraces.
-
-- The file dialogs in built-in applications are now resizable.
-
-- Regedit can now import from and export to files in Unicode format.
-
-- Wineboot now displays a dialog while creating or updating the prefix
-  directory to let the user know that something is happening, since
-  the update can take some time, particularly with 64-bit prefixes.
-
-- Text replacement is now implemented in Notepad.
-
-- The print preview feature in Wordpad now works much better.
-
-- Navigation in help files now works better in Winhelp. Many graphical
-  glitches have also been fixed.
-
-- The Winecfg dialogs have been tweaked so that the application is
-  usable in a 640x480 desktop. The About panel has been redesigned
-  with better graphics.
-
-- The command-line parser in cmd.exe is more compatible now, which
-  should enable more Windows batch files to execute correctly. There
-  is also a regression test suite for it.
-
-- Rpcss now implements a proper RPC endpoint mapper.
-
-
-*** Build environment
-
-- The Wine IDL compiler can now generate correct code for all the
-  standard IDL files, including proper exception handling. A large
-  number of COM proxies and servers are now automatically generated
-  from their IDL definitions.
-
-- The fake dll placeholders are now built at compile time, instead of
-  being generated every time a Wine prefix is created. This makes it
-  possible to install a placeholder for every supported dll, which
-  should avoid many failures in installers that check dll versions.
-
-- configure now supports the --disable-tests option to prevent
-  building the test suite. This allows for faster compile times,
-  particularly when bisecting a regression.
-
-- The cross-compiled tests are now built against the Wine import
-  libraries instead of the Mingw ones. The latter are not compatible
-  enough for our needs.
-
-- winegcc now handles resource files just like normal object files and
-  links them into the final binary without requiring special build
-  rules.
-
-- winebuild and winegcc now fully support Solaris.
-
-- Wine now builds properly on Cygwin, though some of the resulting
-  binaries do not work correctly.
-
-- Makefiles are now created as needed during the build process,
-  instead of being all created together at configure time. This makes
-  it unnecessary to run 'make depend' in most cases.
-
-- winemaker now has better support for Visual C++ project files.
-
-
-*** Miscellaneous
-
-- The OLE storage implementation now supports transacted storage, with
-  proper commits and rollbacks. This enables support for Microsoft
-  Office documents containing macros.
-
-- The MSI installer now supports patches, which enables the
-  installation of service packs for many applications. Many more MSI
-  standard actions are also supported now.
-
-- The rsaenh dll now supports the SHA-256, SHA-384, and SHA-512
-  encryption algorithms, as well as CALG_SSL3_SHAMD5 hashing.
-
-- OLE database objects are now implemented, which fixes the clipart
-  functionality in Microsoft Office 2007.
-
-- Copying and pasting OLE objects across applications works better now.
-
-- Support for cryptographic signatures and certificates is improved,
-  including support for certificate trust lists.
-
-- The Task Scheduler service is now implemented.
-
-
-*** Performance
-
-- Bitmap stretching and alpha blending is now done through Xrender
-  when possible, which avoids a time-consuming round-trip of the
-  bitmap bits from the X server.
-
-- Startup time for MSI installers that contain a large amount of
-  strings is much improved.
-
-- Setting the processor affinity for threads or processes is now
-  supported, which improves multi-core performance for applications
-  that take advantage of it.
-
-- Loading large symbol tables in the Wine debugger is much faster
-  now.
+Luke Bratch (1):
+      wined3d: Add Nvidia 8800GTX detection.
 
-- FBO handling has improved significantly. Recently used FBO
-  configurations are now cached, which is a major performance
-  improvement.
+Maarten Lankhorst (14):
+      wineserver: Use syscall instead of int $0x80.
+      ntdll: Use syscall instead of int $0x80.
+      mmdevapi: Blacklist portaudio.
+      quartz: Fix flushing in dsound renderer.
+      quartz: Accept tiny discontinuities in video renderer without printing out an error.
+      quartz: Make it possible to just override IMediaSeeking::GetCurrentPosition.
+      quartz: Implement MediaSeekingPassThru.
+      quartz: Add support for renderer methods to MediaSeekingPassThru.
+      mciqtz32: Remove individual queryinterfaces.
+      mciqtz32: Add support for mciWindow.
+      mciqtz32: Add support for MCI_STATUS_MODE.
+      mciqtz32: Simplify mciWhere.
+      mciqtz32: Fix mciOpen.
+      mciqtz32: Fix mciPlay.
 
-- Loading shader constants is more efficient now. This improves
-  performance for (among others) Half-Life 2, Counter Strike: Source,
-  and Source Engine games in general.
+Marcus Meissner (2):
+      gdi32: Rebuild font hash after changing the matrix.
+      ddraw: Tighten up checks in DuplicateSurface (Coverity).
 
-- The performance of sRGB samples is improved, this particularly helps
-  Source Engine games.
+Mariusz Pluciński (4):
+      gameux: Add gameux.dll library stub.
+      gameux: Add stub of IGameExplorer implementation.
+      gameux: Add IClassFactory implementation.
+      gameux: Add interface registration routines.
 
+Marko Nikolic (3):
+      advapi32/tests: Removed sign comparison warning in service.c.
+      libwine: Removed sign comparison warning.
+      advapi32: Removed sign comparison warning.
 
-*** Platform-specific changes
+Matt 'Murph' Finnicum (1):
+      imm32: Set size of OSVERSIONINFOA before calling GetVersionExA.
 
-- Joysticks POV switch and axis remapping are now better supported on
-  Linux. Joysticks are now supported on Mac OS X too.
+Matteo Bruni (16):
+      d3dx9: Remove unused parameter from get_regname().
+      d3dx9: Improve a FIXME.
+      d3dx9: Error out on dcl output instruction where not supported.
+      d3dx9: Check dcl input instruction syntax against shader version.
+      d3dx9: Add ps_1_x source register modifiers to the shader assembler.
+      d3dx9: Add shift modifiers parsing to the shader assembler.
+      d3dx9: Add ps_1_4 instructions parsing to the shader assembler.
+      d3dx9: Shader assembler ps_1_4 support.
+      d3dx9: Fix dst register handling in ps_1_4.
+      d3dx9: Add <= ps_1_3 instruction parsing to the shader assembler.
+      d3dx9: Shader assembler <= ps_1_3 support.
+      windowscodecs: Reset the stream pointer when initializing JPEG decoder.
+      wined3d: Setup target if offscreen rendering setting changed.
+      include: Add the ID3D10Blob interface.
+      d3dx9: Handle parent_data parameter of D3DXInclude.Open() function.
+      d3dx9: Implement D3DXAssembleShaderFromFile.
 
-- The various DVD I/O controls are now implemented on Mac OS X.
+Max TenEyck Woodbury (1):
+      ntdll: Setting FileAllInformation is not allowed.
 
-- The network routing and statistics functions in iphlpapi are now
-  implemented on Solaris and FreeBSD.
+Michael Mc Donnell (1):
+      shell32/tests: Test that clicking "Make New Folder" makes a new folder.
 
-- Mach-O debugging symbols (the format used by Mac OS X) are now
-  supported in the debugger.
+Michael Stefaniuc (70):
+      cmd: Remove stray ';' from the resource files.
+      winhlp32: Move from a per resource to a global LANGUAGE setting.
+      winmm: Move from a per resource to a global LANGUAGE setting.
+      clock: Move from a per resource to a global LANGUAGE setting.
+      start: Remove the redundant per resource LANGUAGE settings.
+      notepad: Move from a per resource to a global LANGUAGE setting.
+      avifil32: Remove the ignored common resource attributes.
+      comctl32: Remove the ignored common resource attributes.
+      comdlg32: Remove the ignored common resource attributes.
+      crypt32: Remove the ignored common resource attributes.
+      cryptui: Remove the ignored common resource attributes.
+      devenum: Remove the ignored common resource attributes.
+      gphoto2.ds: Remove the ignored common resource attributes.
+      iccvid: Remove the ignored common resource attributes.
+      jscript: Remove the ignored common resource attributes.
+      localui: Remove the ignored common resource attributes.
+      mshtml: Remove the ignored common resource attributes.
+      mshtml.tlb: Remove the ignored common resource attributes.
+      msrle32: Remove the ignored common resource attributes.
+      msvfw32: Remove the ignored common resource attributes.
+      oleacc: Remove the ignored common resource attributes.
+      pstorec: Remove the ignored common resource attributes.
+      setupapi: Remove the ignored common resource attributes.
+      shdocvw: Remove the ignored common resource attributes.
+      shell32: Remove the ignored common resource attributes.
+      user32: Remove the ignored common resource attributes.
+      wininet: Remove the ignored common resource attributes.
+      cmdlgtst: Remove the ignored common resource attributes.
+      notepad: Remove the ignored common resource attributes.
+      progman: Remove the ignored common resource attributes.
+      taskmgr: Remove the ignored common resource attributes.
+      winecfg: Remove the ignored common resource attributes.
+      winemine: Remove the ignored common resource attributes.
+      wordpad: Remove the ignored common resource attributes.
+      msxml3: Remove the ignored common resource attributes.
+      msvidc32: Remove the ignored common resource attributes.
+      winspool.drv: Remove the ignored common resource attributes.
+      oleview: Remove the ignored common resource attributes.
+      stdole2.tlb: Remove the ignored common resource attributes.
+      wldap32: Remove the ignored common resource attributes.
+      wineboot: Remove the ignored common resource attributes.
+      msacm32: Remove the ignored common resource attributes.
+      oledlg: Remove the ignored common resource attributes.
+      localspl: Remove the ignored common resource attributes.
+      winhlp32: Remove the ignored common resource attributes.
+      wineps.drv: Remove the ignored common resource attributes.
+      wineconsole: Remove the ignored common resource attributes.
+      stdole32.tlb: Remove the ignored common resource attributes.
+      uninstaller: Remove the ignored common resource attributes.
+      cryptdlg: Remove the ignored common resource attributes.
+      clock: Remove the ignored common resource attributes.
+      regedit: Remove the ignored common resource attributes.
+      start: Remove the ignored common resource attributes.
+      oleaut32: Remove the ignored common resource attributes.
+      mpr: Remove the ignored common resource attributes.
+      shlwapi: Remove the ignored common resource attributes.
+      winefile: Remove the ignored common resource attributes.
+      msiexec: Remove the ignored common resource attributes.
+      shdoclc: Remove the ignored common resource attributes.
+      view: Remove the ignored common resource attributes.
+      msi: Remove the ignored common resource attributes.
+      serialui: Remove the ignored common resource attributes.
+      credui: Remove the ignored common resource attributes.
+      sane.ds: Remove the ignored common resource attributes.
+      ole32: Use IsEqualIID instead of memcmp to compare REFIIDs.
+      oleaut32/tests: Use IsEqualIID instead of memcmp to compare REFIIDs.
+      oleaut32: Use IsEqualGUID instead of memcmp to compare GUIDs.
+      shdocvw: Add the Romanian translation.
+      ntdll: Use IsEqualGUID instead of memcmp to compare GUIDs.
+      server: Simplify tkill() and remove unreachable code (Smatch).
 
-- Event ports are now used on Solaris for improved wineserver
-  performance.
+Mike Kaplinskiy (7):
+      server: Move signaling FD_* events to a separate function.
+      server: Propagate error from recv.
+      server: In case of hangup/error, wake up all asyncs that can no longer be completed.
+      server: Forward the correct error to asyncs.
+      server: Consume events triggered.
+      server: Don't delay events, we simply shouldn't send them in the first place.
+      server: Fix some comments.
 
+Misha Koshelev (1):
+      d3dx9: Add stub and basic test for D3DXCreateSphere.
 
-*** New library dependencies
+Nikolay Sivov (19):
+      comctl32/monthcal: Separate single calendar data.
+      comctl32/monthcal: Prepare drawing helpers for multiple calendars.
+      comctl32/monthcal: Modify hittesting helper to work with multiple calendars.
+      comctl32/monthcal: Get rid of goto jumps in hit test helper.
+      comctl32/monthcal: Prepare MCM_GETMONTHRANGE with GMR_VISIBLE for multiple calendars.
+      msxml3: Speed up a IPersistStreamInit::Save() by querying for BSTR length.
+      comctl32/monthcal: Use memcpy to copy day state arrays.
+      ole32: Remove redundant variables.
+      ole32: Fix assumption about HRESULT failure code value.
+      ole32: No need to test for interface pointer being null.
+      ole32: Use IsEqualIID() instead of memcmp().
+      comctl32/treeview: Properly initialize expanded image index.
+      comctl32/treeview: Fix TVS_SINGLEEXPAND notifications order.
+      comctl32/tests: Merge one test function to existing tests, use explicit message numbers.
+      comctl32/treeview: Fix possible crash in TVS_SINGELEXPAND helper (Coverity).
+      shlwapi/tests: Fix some test failures on Win2000.
+      shlwapi: Partially implement SHGetShellKey.
+      shlwapi: Implement SKGetValueW over SHGetShellKey.
+      shlwapi/tests: Fix some test failures on RTL enabled boxes.
 
-- The libgnutls library is now used for encryption and certificate
-  validation in secur32.
+Octavian Voicu (1):
+      mmdevapi/tests: Prevent crash when GetMixFormat fails.
 
-- The libgsm library is now used for the GSM codec support.
+Owen Rudge (7):
+      fusion: Install assemblies into correct directory for architecture.
+      fusion: Implement IAssemblyNameImpl_GetDisplayName more completely.
+      d3dx9/tests: Add beginning of general tests for texture functions.
+      d3dx9: Implement D3DXCheckTextureRequirements.
+      d3dx9/tests: Implement additional texture requirement tests.
+      d3dx9: Implement D3DXCreateTexture plus tests.
+      d3dx9: Add basic implementation of D3DXFilterTexture, plus tests.
 
-- The libmpg123 library is now used for mp3 decoding (except on Mac OS
-  X where CoreAudio functions are used instead).
+Paul Chitescu (4):
+      t2embed: Forward several stdcall-decorated names to existing undecorated stubs.
+      kernel32: Declare structures related to logical processor information (core, cache, node, group).
+      kernel32: Declare and add stubs for GetLogicalProcessorInformation(Ex).
+      d3dx9_36: Provide an empty error message in the stub D3DXCompileShader.
 
-- The libopenal library is now used for the openal32 dll
-  implementation, as well as for the mmdevapi dll (Vista sound
-  support).
+Paul Vriens (19):
+      comctl32: Add the Serbian (Latin) translation.
+      msi: Add the Serbian (Latin) translation.
+      atl/tests: Skip tests if function is not implemented.
+      msi: Add the Serbian (Cyrillic) translation.
+      comctl32: Add the Serbian (Cyrillic) translation.
+      appwiz.cpl: Add the Serbian (Latin) translation.
+      comctl32: Use the Cyrillic 'O' in the Serbian translation.
+      appwiz.cpl: Add the Serbian (Cyrillic) translation.
+      comdlg32: Add the Serbian (Latin) translation.
+      shlwapi/tests: Load shell32 explicitly.
+      shell32: Add the Serbian (Latin) translation.
+      user32: Add the Serbian (Latin) translation.
+      winhlp32: Add the Serbian (Latin) translation.
+      shell32: Fix the Serbian (Latin) translation.
+      shell32: Add the Serbian (Cyrillic) translation.
+      user32: Add the Serbian (Cyrillic) translation.
+      winecfg: Add the Serbian (Latin) translation.
+      msxml3: Ignore a property.
+      setupapi: Add a stub for SetupDiLoadClassIcon.
 
-- The libtiff library is now used for TIFF image decoding in the
-  windowscodecs dll.
+Peter Urbanec (1):
+      wintab32: Avoid NULL pointer dereferences.
 
-- The libv4l1 library is now used for video capture in DirectShow.
+Piotr Caban (23):
+      msxml3: Correctly allocate namespaces stack in saxreader.
+      msxml3: Improve QName_from_xmlChar implementation.
+      msxml3: Improve bstr_from_xmlCharN implementation.
+      wininet: Fix reporting errors in callbacks.
+      wininet: Delete authorization data on unsucessful login.
+      wininet: Cache non basic authorization data.
+      wininet: Don't report error in read_gzip_data when to much data was cached.
+      wininet: Allow HTTPREQ_ReadFileEx read more then one data chunk.
+      msvcp90: Added stub dll.
+      msvcp90: Added char_traits<char> implementation.
+      msvcp90: Added char_traits<wchar_t> implementation.
+      msvcp90: Added char_traits<unsigned short> implementation.
+      msvcp90/tests: Added char_traits assign tests.
+      msvcp90/tests: Added char_traits equal tests.
+      msvcp90/tests: Added char_traits<char>::_Copy_s tests.
+      shlwapi: Improved UrlCanonicalizeW implementation.
+      msvcrt: Fixed strtod_l/wcstod_l implementation.
+      msvcp90: Added allocator<char> implementation.
+      atl: Improved AtlInternalQueryInterface implementation.
+      wininet: Fixed CreateUrlCacheEntryA implementation.
+      wininet: Commit URL cache entry when cache file is closed.
+      msvcp90: Correctly declare pointers to delete/new functions.
+      msvcp90: Added 64-bit exports.
 
+Reece Dunn (1):
+      ntdll/tests: check io.Status in the file tests.
 
-*** Backwards compatibility
+Rico Schüller (8):
+      wined3d: Add GL_NV_point_sprite extension.
+      d3d10: Move some helper funcs to utils.
+      d3d10: Add data and size check to parse_dxbc().
+      d3d10: Add the ID3D10ShaderReflectionType interface.
+      d3d10: Add the ID3D10ShaderReflectionVariable interface.
+      d3d10: Add the ID3D10ShaderReflectionConstantBuffer interface.
+      d3d10: Add the ID3D10ShaderReflection interface.
+      d3d10: Add a stub ID3D10ReflectShader implementation.
 
-- The wineshelllink helper script has been removed. All the menu and
-  desktop integration is now handled by winemenubuilder.
+Seth Shelnutt (1):
+      wined3d: Nvidia Geforce 8400 and 8500 are now reported as 8400GS instead of 8300GS.
 
-- The deprecated wineprefixcreate script has been removed. Wine prefix
-  directories are created automatically as needed.
+Stefan Dösinger (16):
+      d3d9: Remove the fog vs sRGB test.
+      d3d9: Win7+Nvidia returns c2 in COISSUE'd CND.
+      d3d9: Use a vertex shader for the nested loop test.
+      d3d9: Use a vertex shader in the vFace test.
+      d3d9: Use a vertex shader in the vpos test.
+      wined3d: Only perform sRGB write correction on formats that advertise it.
+      wined3d: Check the writemask before activating the oC0 optimization.
+      d3d9: Remove the shader version varying tests.
+      wined3d: Use powf instead of pow.
+      wined3d: Use a int for the mantissa in float_24_to_32.
+      wined3d: Fix an msvc anachronism warning.
+      wined3d: Add casts for int to float conversions.
+      wined3d: The ARB loop unroller's iteration is unsigned.
+      wined3d: The flag parameter in shader_hw_sample is a WORD.
+      wined3d: Make glClearColor parameters floats.
+      wined3d: Use the correct type in device_unit_free_for_vs.
 
-- Old LinuxThreads setups are no longer supported. Wine now requires
-  the modern NPTL threading that has been standard on Linux for many
-  years now.
+Sven Baars (3):
+      kernel32: Update the Dutch translation.
+      user32: Fix the Dutch translation.
+      shdocvw: Add the Dutch translation.
 
-- The PBuffer option for off-screen rendering has been removed from
-  Direct3D. This code was unmaintained, and offered little advantage
-  over the "fbo" or "backbuffer" modes.
+Thomas Mullaly (33):
+      urlmon: Implemented functionality for retrieving the RAW_URI property of a IUri.
+      include: Updated the URL_SCHEME enum.
+      urlmon: Added a scheme name parser for the IUri interface.
+      urlmon: Added a parser function to determine the scheme type of a URI.
+      urlmon: Added a canonicalization function for the scheme of a URI.
+      urlmon: Implemented functionality for retrieving the scheme name of a IUri.
+      urlmon: Implemented functionality for retrieving the scheme type of a IUri.
+      urlmon/tests: Added more test data for scheme parsing and canonicalization.
+      urlmon: Fixed the scheme name parser to handle wildcard schemes.
+      urlmon: Added a stub implementation for parsing the hier-part of a URI.
+      urlmon: Implemented parser for the userinfo of a URI.
+      urlmon: Implemented the canonicalization routine for the userinfo of a URI.
+      urlmon/tests: Added more test URI's.
+      urlmon: Implemented IUri_GetUserInfo.
+      urlmon: Implemented IUri_GetUserName.
+      urlmon: Implemented IUri_GetPassword.
+      urlmon: Implemented a parser for IPv4 addresses.
+      urlmon: Implemented canonicalization functions for IPv4 addresses.
+      urlmon/tests: Added more test URIs.
+      urlmon: Partially implemented IUri_GetHost.
+      urlmon: Added parser for IPv6 addresses.
+      urlmon: Added parser for IPvFuture addresses.
+      urlmon: Added parser for registered host names.
+      urlmon/tests: Added more URI test cases.
+      urlmon: Implemented canonicalization for IPv6 addresses.
+      urlmon/tests: Added more test URIs for IPv6 canonicalization.
+      urlmon: Implemented canonicalization for reg-names.
+      urlmon: Fixed a bug that would cause tests to randomly fail.
+      urlmon: Implemented a port parse for URIs.
+      urlmon/tests: Restructured invalid URI tests plus added more test data.
+      urlmon: Implemented canonicalization for ports in URIs.
+      urlmon: Implemented IUri_GetPort.
+      urlmon/tests: Added some more test URIs.
 
+Tim Cadogan-Cowper (1):
+      winmm: Wrap TRACE strings with debugstr_a/debugstr_an.
 
-*** Known issues with recent 1.2 changes
+Travis Athougies (1):
+      wpp: Fixed bug in preventing add_text_to_macro from handling macros over 1 kb large.
 
-- The subpixel font rendering doesn't yet look quite as nice as that
-  used by the rest of the Unix desktop.
+Vincent Povirk (17):
+      windowscodecs: Ignore the length field of RLE compressed bitmaps.
+      oleaut32: Add test for dibs vs. ddbs in IPicture.
+      user32: Don't dump structures of some ambiguous listview messages.
+      shell32: Don't access szFullPath when SHGFI_PIDL is set in SHGetFileInfo.
+      ole32: Update storage header saving code based on the latest MS spec.
+      ole32: Don't map storage files in memory.
+      ole32: Remove the BigBlockFile abstraction and always use an ILockBytes.
+      ole32: Use ILockBytes_Stat to get the filename of a storage.
+      ole32: Remove an unused variable.
+      ole32: Flush the ILockBytes object of a storage on commit and final release.
+      gdiplus: Stub GdipGetMetafileHeaderFromFile.
+      gdiplus: Stub GdipGetMetafileHeaderFromStream.
+      gdiplus: Return copies of fonts from GdipGetFontCollectionFamilyList.
+      gdiplus: Stub GdipGetPenCompoundCount.
+      gdiplus: Stub GdipMultiplyPenTransform.
+      wineboot: Query windows from all desktops when --end-session --kill is used.
+      wineboot: Don't abort shutdown if we have to terminate a process.
 
-- The OLE storage performance can degrade pretty badly on files with a
-  particular layout.
+Wade Gobel (2):
+      gdiplus: Fixed GdipFillClosedCurve2 and GdipFillClosedCurve2I in the cases that count <= 1.
+      gdiplus: Implemented GdipFillClosedCurve and GdipFillClosedCurveI.
 
-- There is no 64-bit version of the Gecko engine yet, so 64-bit
-  applications that use a browser control won't work correctly.
+Yaron Shahrabani (2):
+      wine.desktop: Add Hebrew translation.
+      notepad: Add Persian translation.
 
 --
 Alexandre Julliard
diff --git a/VERSION b/VERSION
index 6a6d754..6c7639d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Wine version 1.2
+Wine version 1.3.0
diff --git a/configure b/configure
index 925df23..d8a14fb 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for Wine 1.2.
+# Generated by GNU Autoconf 2.65 for Wine 1.3.0.
 #
 # Report bugs to <wine-devel@winehq.org>.
 #
@@ -552,8 +552,8 @@
 # Identity of this package.
 PACKAGE_NAME='Wine'
 PACKAGE_TARNAME='wine'
-PACKAGE_VERSION='1.2'
-PACKAGE_STRING='Wine 1.2'
+PACKAGE_VERSION='1.3.0'
+PACKAGE_STRING='Wine 1.3.0'
 PACKAGE_BUGREPORT='wine-devel@winehq.org'
 PACKAGE_URL='http://www.winehq.org'
 
@@ -1364,7 +1364,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Wine 1.2 to adapt to many kinds of systems.
+\`configure' configures Wine 1.3.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1433,7 +1433,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Wine 1.2:";;
+     short | recursive ) echo "Configuration of Wine 1.3.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1576,7 +1576,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Wine configure 1.2
+Wine configure 1.3.0
 generated by GNU Autoconf 2.65
 
 Copyright (C) 2009 Free Software Foundation, Inc.
@@ -2096,7 +2096,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Wine $as_me 1.2, which was
+It was created by Wine $as_me 1.3.0, which was
 generated by GNU Autoconf 2.65.  Invocation command line was
 
   $ $0 $@
@@ -15451,7 +15451,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Wine $as_me 1.2, which was
+This file was extended by Wine $as_me 1.3.0, which was
 generated by GNU Autoconf 2.65.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15522,7 +15522,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Wine config.status 1.2
+Wine config.status 1.3.0
 configured by $0, generated by GNU Autoconf 2.65,
   with options \\"\$ac_cs_config\\"
 
